/*!
 *                     _            _       _           _
 *                    | |___  __   / \   __| |_ __ ___ (_)_ __
 *                    | __\ \/ /  / _ \ / _` | '_ ` _ \| | '_ \
 *                    | |_ >  <  / ___ \ (_| | | | | | | | | | |
 *                     \__/_/\_\/_/   \_\__,_|_| |_| |_|_|_| |_|
 *
 * %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 * Author: André Tabarra (https://github.com/tabarra)
 * Repository: https://github.com/tabarra/txAdmin
 * txAdmin is a free open source software provided under the license below.
 * %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 * MIT License
 *
 * Copyright (c) 2019-2022 André Tabarra <maintainer@txadm.in>
 *
 * 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.
 * %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 */(()=>{var __webpack_modules__={"./main.js":
/*!*****************!*\
  !*** ./main.js ***!
  \*****************/(__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("//NOTE: declaring ANY variable in this file will pollute the global scope,\r\n//      and it will NOT be found in `Object.keys(global)`!\r\n//      This is why I'm doing some creative data juggling in some parts\r\n\r\n//Check if running inside FXServer\r\ntry {\r\n    if (!IsDuplicityVersion()) throw new Error();\r\n} catch (error) {\r\n    console.log('txAdmin must be run inside FXServer in monitor mode!');\r\n    process.exit();\r\n}\r\n\r\n//Checking monitor mode and starting\r\nif (GetConvar('monitorMode', 'false') == 'true') {\r\n    try {\r\n        __webpack_require__(/*! ./src/index.js */ \"./src/index.js\");\r\n    } catch (error) {\r\n        console.log('e'.repeat(80));\r\n        console.log(`Resource load error: ${error.message}`);\r\n        console.dir(error.stack);\r\n        console.log('e'.repeat(80));\r\n    }\r\n} else if (GetConvar('txAdminServerMode', 'false') == 'true') {\r\n    //Nothing, for now\r\n}\r\n\n\n//# sourceURL=webpack://txadmin/./main.js?")},"./node_modules/@citizenfx/discord.js/src/WebSocket.js":
/*!*************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/WebSocket.js ***!
  \*************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nlet erlpack;\nconst { Buffer } = __webpack_require__(/*! node:buffer */ \"node:buffer\");\n\ntry {\n  erlpack = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'erlpack'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\n  if (!erlpack.pack) erlpack = null;\n} catch {} // eslint-disable-line no-empty\n\nexports.WebSocket = __webpack_require__(/*! ws */ \"./node_modules/ws/index.js\");\n\nconst ab = new TextDecoder();\n\nexports.encoding = erlpack ? 'etf' : 'json';\n\nexports.pack = erlpack ? erlpack.pack : JSON.stringify;\n\nexports.unpack = (data, type) => {\n  if (exports.encoding === 'json' || type === 'json') {\n    if (typeof data !== 'string') {\n      data = ab.decode(data);\n    }\n    return JSON.parse(data);\n  }\n  if (!Buffer.isBuffer(data)) data = Buffer.from(new Uint8Array(data));\n  return erlpack.unpack(data);\n};\n\nexports.create = (gateway, query = {}, ...args) => {\n  const [g, q] = gateway.split('?');\n  query.encoding = exports.encoding;\n  query = new URLSearchParams(query);\n  if (q) new URLSearchParams(q).forEach((v, k) => query.set(k, v));\n  const ws = new exports.WebSocket(`${g}?${query}`, ...args);\n  return ws;\n};\n\nfor (const state of ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED']) exports[state] = exports.WebSocket[state];\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/WebSocket.js?")},"./node_modules/@citizenfx/discord.js/src/client/BaseClient.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/BaseClient.js ***!
  \*********************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst EventEmitter = __webpack_require__(/*! node:events */ "node:events");\nconst { clearInterval } = __webpack_require__(/*! node:timers */ "node:timers");\nconst RESTManager = __webpack_require__(/*! ../rest/RESTManager */ "./node_modules/@citizenfx/discord.js/src/rest/RESTManager.js");\nconst Options = __webpack_require__(/*! ../util/Options */ "./node_modules/@citizenfx/discord.js/src/util/Options.js");\nconst Util = __webpack_require__(/*! ../util/Util */ "./node_modules/@citizenfx/discord.js/src/util/Util.js");\n\n/**\n * The base class for all clients.\n * @extends {EventEmitter}\n */\nclass BaseClient extends EventEmitter {\n  constructor(options = {}) {\n    super();\n\n    /**\n     * The options the client was instantiated with\n     * @type {ClientOptions}\n     */\n    this.options = Util.mergeDefault(Options.createDefault(), options);\n\n    /**\n     * The REST manager of the client\n     * @type {RESTManager}\n     * @private\n     */\n    this.rest = new RESTManager(this);\n  }\n\n  /**\n   * API shortcut\n   * @type {Object}\n   * @readonly\n   * @private\n   */\n  get api() {\n    return this.rest.api;\n  }\n\n  /**\n   * Destroys all assets used by the base client.\n   * @returns {void}\n   */\n  destroy() {\n    if (this.rest.sweepInterval) clearInterval(this.rest.sweepInterval);\n  }\n\n  /**\n   * Increments max listeners by one, if they are not zero.\n   * @private\n   */\n  incrementMaxListeners() {\n    const maxListeners = this.getMaxListeners();\n    if (maxListeners !== 0) {\n      this.setMaxListeners(maxListeners + 1);\n    }\n  }\n\n  /**\n   * Decrements max listeners by one, if they are not zero.\n   * @private\n   */\n  decrementMaxListeners() {\n    const maxListeners = this.getMaxListeners();\n    if (maxListeners !== 0) {\n      this.setMaxListeners(maxListeners - 1);\n    }\n  }\n\n  toJSON(...props) {\n    return Util.flatten(this, { domain: false }, ...props);\n  }\n}\n\nmodule.exports = BaseClient;\n\n/**\n * Emitted for general debugging information.\n * @event BaseClient#debug\n * @param {string} info The debug information\n */\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/BaseClient.js?')},"./node_modules/@citizenfx/discord.js/src/client/Client.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/Client.js ***!
  \*****************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst process = __webpack_require__(/*! node:process */ \"node:process\");\nconst { clearInterval, setInterval } = __webpack_require__(/*! node:timers */ \"node:timers\");\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst BaseClient = __webpack_require__(/*! ./BaseClient */ \"./node_modules/@citizenfx/discord.js/src/client/BaseClient.js\");\nconst ActionsManager = __webpack_require__(/*! ./actions/ActionsManager */ \"./node_modules/@citizenfx/discord.js/src/client/actions/ActionsManager.js\");\nconst ClientVoiceManager = __webpack_require__(/*! ./voice/ClientVoiceManager */ \"./node_modules/@citizenfx/discord.js/src/client/voice/ClientVoiceManager.js\");\nconst WebSocketManager = __webpack_require__(/*! ./websocket/WebSocketManager */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/WebSocketManager.js\");\nconst { Error, TypeError, RangeError } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst BaseGuildEmojiManager = __webpack_require__(/*! ../managers/BaseGuildEmojiManager */ \"./node_modules/@citizenfx/discord.js/src/managers/BaseGuildEmojiManager.js\");\nconst ChannelManager = __webpack_require__(/*! ../managers/ChannelManager */ \"./node_modules/@citizenfx/discord.js/src/managers/ChannelManager.js\");\nconst GuildManager = __webpack_require__(/*! ../managers/GuildManager */ \"./node_modules/@citizenfx/discord.js/src/managers/GuildManager.js\");\nconst UserManager = __webpack_require__(/*! ../managers/UserManager */ \"./node_modules/@citizenfx/discord.js/src/managers/UserManager.js\");\nconst ShardClientUtil = __webpack_require__(/*! ../sharding/ShardClientUtil */ \"./node_modules/@citizenfx/discord.js/src/sharding/ShardClientUtil.js\");\nconst ClientPresence = __webpack_require__(/*! ../structures/ClientPresence */ \"./node_modules/@citizenfx/discord.js/src/structures/ClientPresence.js\");\nconst GuildPreview = __webpack_require__(/*! ../structures/GuildPreview */ \"./node_modules/@citizenfx/discord.js/src/structures/GuildPreview.js\");\nconst GuildTemplate = __webpack_require__(/*! ../structures/GuildTemplate */ \"./node_modules/@citizenfx/discord.js/src/structures/GuildTemplate.js\");\nconst Invite = __webpack_require__(/*! ../structures/Invite */ \"./node_modules/@citizenfx/discord.js/src/structures/Invite.js\");\nconst { Sticker } = __webpack_require__(/*! ../structures/Sticker */ \"./node_modules/@citizenfx/discord.js/src/structures/Sticker.js\");\nconst StickerPack = __webpack_require__(/*! ../structures/StickerPack */ \"./node_modules/@citizenfx/discord.js/src/structures/StickerPack.js\");\nconst VoiceRegion = __webpack_require__(/*! ../structures/VoiceRegion */ \"./node_modules/@citizenfx/discord.js/src/structures/VoiceRegion.js\");\nconst Webhook = __webpack_require__(/*! ../structures/Webhook */ \"./node_modules/@citizenfx/discord.js/src/structures/Webhook.js\");\nconst Widget = __webpack_require__(/*! ../structures/Widget */ \"./node_modules/@citizenfx/discord.js/src/structures/Widget.js\");\nconst { Events, InviteScopes, Status } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst DataResolver = __webpack_require__(/*! ../util/DataResolver */ \"./node_modules/@citizenfx/discord.js/src/util/DataResolver.js\");\nconst Intents = __webpack_require__(/*! ../util/Intents */ \"./node_modules/@citizenfx/discord.js/src/util/Intents.js\");\nconst Options = __webpack_require__(/*! ../util/Options */ \"./node_modules/@citizenfx/discord.js/src/util/Options.js\");\nconst Permissions = __webpack_require__(/*! ../util/Permissions */ \"./node_modules/@citizenfx/discord.js/src/util/Permissions.js\");\nconst Sweepers = __webpack_require__(/*! ../util/Sweepers */ \"./node_modules/@citizenfx/discord.js/src/util/Sweepers.js\");\n\n/**\n * The main hub for interacting with the Discord API, and the starting point for any bot.\n * @extends {BaseClient}\n */\nclass Client extends BaseClient {\n  /**\n   * @param {ClientOptions} options Options for the client\n   */\n  constructor(options) {\n    super(options);\n\n    const data = (__webpack_require__(/*! node:worker_threads */ \"node:worker_threads\").workerData) ?? process.env;\n    const defaults = Options.createDefault();\n\n    if (this.options.shards === defaults.shards) {\n      if ('SHARDS' in data) {\n        this.options.shards = JSON.parse(data.SHARDS);\n      }\n    }\n\n    if (this.options.shardCount === defaults.shardCount) {\n      if ('SHARD_COUNT' in data) {\n        this.options.shardCount = Number(data.SHARD_COUNT);\n      } else if (Array.isArray(this.options.shards)) {\n        this.options.shardCount = this.options.shards.length;\n      }\n    }\n\n    const typeofShards = typeof this.options.shards;\n\n    if (typeofShards === 'undefined' && typeof this.options.shardCount === 'number') {\n      this.options.shards = Array.from({ length: this.options.shardCount }, (_, i) => i);\n    }\n\n    if (typeofShards === 'number') this.options.shards = [this.options.shards];\n\n    if (Array.isArray(this.options.shards)) {\n      this.options.shards = [\n        ...new Set(\n          this.options.shards.filter(item => !isNaN(item) && item >= 0 && item < Infinity && item === (item | 0)),\n        ),\n      ];\n    }\n\n    this._validateOptions();\n\n    /**\n     * Functions called when a cache is garbage collected or the Client is destroyed\n     * @type {Set<Function>}\n     * @private\n     */\n    this._cleanups = new Set();\n\n    /**\n     * The finalizers used to cleanup items.\n     * @type {FinalizationRegistry}\n     * @private\n     */\n    this._finalizers = new FinalizationRegistry(this._finalize.bind(this));\n\n    /**\n     * The WebSocket manager of the client\n     * @type {WebSocketManager}\n     */\n    this.ws = new WebSocketManager(this);\n\n    /**\n     * The action manager of the client\n     * @type {ActionsManager}\n     * @private\n     */\n    this.actions = new ActionsManager(this);\n\n    /**\n     * The voice manager of the client\n     * @type {ClientVoiceManager}\n     */\n    this.voice = new ClientVoiceManager(this);\n\n    /**\n     * Shard helpers for the client (only if the process was spawned from a {@link ShardingManager})\n     * @type {?ShardClientUtil}\n     */\n    this.shard = process.env.SHARDING_MANAGER\n      ? ShardClientUtil.singleton(this, process.env.SHARDING_MANAGER_MODE)\n      : null;\n\n    /**\n     * All of the {@link User} objects that have been cached at any point, mapped by their ids\n     * @type {UserManager}\n     */\n    this.users = new UserManager(this);\n\n    /**\n     * All of the guilds the client is currently handling, mapped by their ids -\n     * as long as sharding isn't being used, this will be *every* guild the bot is a member of\n     * @type {GuildManager}\n     */\n    this.guilds = new GuildManager(this);\n\n    /**\n     * All of the {@link Channel}s that the client is currently handling, mapped by their ids -\n     * as long as sharding isn't being used, this will be *every* channel in *every* guild the bot\n     * is a member of. Note that DM channels will not be initially cached, and thus not be present\n     * in the Manager without their explicit fetching or use.\n     * @type {ChannelManager}\n     */\n    this.channels = new ChannelManager(this);\n\n    /**\n     * The sweeping functions and their intervals used to periodically sweep caches\n     * @type {Sweepers}\n     */\n    this.sweepers = new Sweepers(this, this.options.sweepers);\n\n    /**\n     * The presence of the Client\n     * @private\n     * @type {ClientPresence}\n     */\n    this.presence = new ClientPresence(this, this.options.presence);\n\n    Object.defineProperty(this, 'token', { writable: true });\n    if (!this.token && 'DISCORD_TOKEN' in process.env) {\n      /**\n       * Authorization token for the logged in bot.\n       * If present, this defaults to `process.env.DISCORD_TOKEN` when instantiating the client\n       * <warn>This should be kept private at all times.</warn>\n       * @type {?string}\n       */\n      this.token = process.env.DISCORD_TOKEN;\n    } else {\n      this.token = null;\n    }\n\n    /**\n     * User that the client is logged in as\n     * @type {?ClientUser}\n     */\n    this.user = null;\n\n    /**\n     * The application of this bot\n     * @type {?ClientApplication}\n     */\n    this.application = null;\n\n    /**\n     * Time at which the client was last regarded as being in the `READY` state\n     * (each time the client disconnects and successfully reconnects, this will be overwritten)\n     * @type {?Date}\n     */\n    this.readyAt = null;\n\n    if (this.options.messageSweepInterval > 0) {\n      process.emitWarning(\n        'The message sweeping client options are deprecated, use the global sweepers instead.',\n        'DeprecationWarning',\n      );\n      this.sweepMessageInterval = setInterval(\n        this.sweepMessages.bind(this),\n        this.options.messageSweepInterval * 1_000,\n      ).unref();\n    }\n  }\n\n  /**\n   * All custom emojis that the client has access to, mapped by their ids\n   * @type {BaseGuildEmojiManager}\n   * @readonly\n   */\n  get emojis() {\n    const emojis = new BaseGuildEmojiManager(this);\n    for (const guild of this.guilds.cache.values()) {\n      if (guild.available) for (const emoji of guild.emojis.cache.values()) emojis.cache.set(emoji.id, emoji);\n    }\n    return emojis;\n  }\n\n  /**\n   * Timestamp of the time the client was last `READY` at\n   * @type {?number}\n   * @readonly\n   */\n  get readyTimestamp() {\n    return this.readyAt?.getTime() ?? null;\n  }\n\n  /**\n   * How long it has been since the client last entered the `READY` state in milliseconds\n   * @type {?number}\n   * @readonly\n   */\n  get uptime() {\n    return this.readyAt ? Date.now() - this.readyAt : null;\n  }\n\n  /**\n   * Logs the client in, establishing a WebSocket connection to Discord.\n   * @param {string} [token=this.token] Token of the account to log in with\n   * @returns {Promise<string>} Token of the account used\n   * @example\n   * client.login('my token');\n   */\n  async login(token = this.token) {\n    if (!token || typeof token !== 'string') throw new Error('TOKEN_INVALID');\n    this.token = token = token.replace(/^(Bot|Bearer)\\s*/i, '');\n    this.emit(\n      Events.DEBUG,\n      `Provided token: ${token\n        .split('.')\n        .map((val, i) => (i > 1 ? val.replace(/./g, '*') : val))\n        .join('.')}`,\n    );\n\n    if (this.options.presence) {\n      this.options.ws.presence = this.presence._parse(this.options.presence);\n    }\n\n    this.emit(Events.DEBUG, 'Preparing to connect to the gateway...');\n\n    try {\n      await this.ws.connect();\n      return this.token;\n    } catch (error) {\n      this.destroy();\n      throw error;\n    }\n  }\n\n  /**\n   * Returns whether the client has logged in, indicative of being able to access\n   * properties such as `user` and `application`.\n   * @returns {boolean}\n   */\n  isReady() {\n    return this.ws.status === Status.READY;\n  }\n\n  /**\n   * Logs out, terminates the connection to Discord, and destroys the client.\n   * @returns {void}\n   */\n  destroy() {\n    super.destroy();\n\n    for (const fn of this._cleanups) fn();\n    this._cleanups.clear();\n\n    if (this.sweepMessageInterval) clearInterval(this.sweepMessageInterval);\n\n    this.sweepers.destroy();\n    this.ws.destroy();\n    this.token = null;\n  }\n\n  /**\n   * Options used when fetching an invite from Discord.\n   * @typedef {Object} ClientFetchInviteOptions\n   * @property {Snowflake} [guildScheduledEventId] The id of the guild scheduled event to include with\n   * the invite\n   */\n\n  /**\n   * Obtains an invite from Discord.\n   * @param {InviteResolvable} invite Invite code or URL\n   * @param {ClientFetchInviteOptions} [options] Options for fetching the invite\n   * @returns {Promise<Invite>}\n   * @example\n   * client.fetchInvite('https://discord.gg/djs')\n   *   .then(invite => console.log(`Obtained invite with code: ${invite.code}`))\n   *   .catch(console.error);\n   */\n  async fetchInvite(invite, options) {\n    const code = DataResolver.resolveInviteCode(invite);\n    const data = await this.api.invites(code).get({\n      query: { with_counts: true, with_expiration: true, guild_scheduled_event_id: options?.guildScheduledEventId },\n    });\n    return new Invite(this, data);\n  }\n\n  /**\n   * Obtains a template from Discord.\n   * @param {GuildTemplateResolvable} template Template code or URL\n   * @returns {Promise<GuildTemplate>}\n   * @example\n   * client.fetchGuildTemplate('https://discord.new/FKvmczH2HyUf')\n   *   .then(template => console.log(`Obtained template with code: ${template.code}`))\n   *   .catch(console.error);\n   */\n  async fetchGuildTemplate(template) {\n    const code = DataResolver.resolveGuildTemplateCode(template);\n    const data = await this.api.guilds.templates(code).get();\n    return new GuildTemplate(this, data);\n  }\n\n  /**\n   * Obtains a webhook from Discord.\n   * @param {Snowflake} id The webhook's id\n   * @param {string} [token] Token for the webhook\n   * @returns {Promise<Webhook>}\n   * @example\n   * client.fetchWebhook('id', 'token')\n   *   .then(webhook => console.log(`Obtained webhook with name: ${webhook.name}`))\n   *   .catch(console.error);\n   */\n  async fetchWebhook(id, token) {\n    const data = await this.api.webhooks(id, token).get();\n    return new Webhook(this, { token, ...data });\n  }\n\n  /**\n   * Obtains the available voice regions from Discord.\n   * @returns {Promise<Collection<string, VoiceRegion>>}\n   * @example\n   * client.fetchVoiceRegions()\n   *   .then(regions => console.log(`Available regions are: ${regions.map(region => region.name).join(', ')}`))\n   *   .catch(console.error);\n   */\n  async fetchVoiceRegions() {\n    const apiRegions = await this.api.voice.regions.get();\n    const regions = new Collection();\n    for (const region of apiRegions) regions.set(region.id, new VoiceRegion(region));\n    return regions;\n  }\n\n  /**\n   * Obtains a sticker from Discord.\n   * @param {Snowflake} id The sticker's id\n   * @returns {Promise<Sticker>}\n   * @example\n   * client.fetchSticker('id')\n   *   .then(sticker => console.log(`Obtained sticker with name: ${sticker.name}`))\n   *   .catch(console.error);\n   */\n  async fetchSticker(id) {\n    const data = await this.api.stickers(id).get();\n    return new Sticker(this, data);\n  }\n\n  /**\n   * Obtains the list of sticker packs available to Nitro subscribers from Discord.\n   * @returns {Promise<Collection<Snowflake, StickerPack>>}\n   * @example\n   * client.fetchPremiumStickerPacks()\n   *   .then(packs => console.log(`Available sticker packs are: ${packs.map(pack => pack.name).join(', ')}`))\n   *   .catch(console.error);\n   */\n  async fetchPremiumStickerPacks() {\n    const data = await this.api('sticker-packs').get();\n    return new Collection(data.sticker_packs.map(p => [p.id, new StickerPack(this, p)]));\n  }\n  /**\n   * A last ditch cleanup function for garbage collection.\n   * @param {Function} options.cleanup The function called to GC\n   * @param {string} [options.message] The message to send after a successful GC\n   * @param {string} [options.name] The name of the item being GCed\n   * @private\n   */\n  _finalize({ cleanup, message, name }) {\n    try {\n      cleanup();\n      this._cleanups.delete(cleanup);\n      if (message) {\n        this.emit(Events.DEBUG, message);\n      }\n    } catch {\n      this.emit(Events.DEBUG, `Garbage collection failed on ${name ?? 'an unknown item'}.`);\n    }\n  }\n\n  /**\n   * Sweeps all text-based channels' messages and removes the ones older than the max message lifetime.\n   * If the message has been edited, the time of the edit is used rather than the time of the original message.\n   * @param {number} [lifetime=this.options.messageCacheLifetime] Messages that are older than this (in seconds)\n   * will be removed from the caches. The default is based on {@link ClientOptions#messageCacheLifetime}\n   * @returns {number} Amount of messages that were removed from the caches,\n   * or -1 if the message cache lifetime is unlimited\n   * @example\n   * // Remove all messages older than 1800 seconds from the messages cache\n   * const amount = client.sweepMessages(1800);\n   * console.log(`Successfully removed ${amount} messages from the cache.`);\n   */\n  sweepMessages(lifetime = this.options.messageCacheLifetime) {\n    if (typeof lifetime !== 'number' || isNaN(lifetime)) {\n      throw new TypeError('INVALID_TYPE', 'lifetime', 'number');\n    }\n    if (lifetime <= 0) {\n      this.emit(Events.DEBUG, \"Didn't sweep messages - lifetime is unlimited\");\n      return -1;\n    }\n\n    const messages = this.sweepers.sweepMessages(Sweepers.outdatedMessageSweepFilter(lifetime)());\n    this.emit(Events.DEBUG, `Swept ${messages} messages older than ${lifetime} seconds`);\n    return messages;\n  }\n\n  /**\n   * Obtains a guild preview from Discord, available for all guilds the bot is in and all Discoverable guilds.\n   * @param {GuildResolvable} guild The guild to fetch the preview for\n   * @returns {Promise<GuildPreview>}\n   */\n  async fetchGuildPreview(guild) {\n    const id = this.guilds.resolveId(guild);\n    if (!id) throw new TypeError('INVALID_TYPE', 'guild', 'GuildResolvable');\n    const data = await this.api.guilds(id).preview.get();\n    return new GuildPreview(this, data);\n  }\n\n  /**\n   * Obtains the widget data of a guild from Discord, available for guilds with the widget enabled.\n   * @param {GuildResolvable} guild The guild to fetch the widget data for\n   * @returns {Promise<Widget>}\n   */\n  async fetchGuildWidget(guild) {\n    const id = this.guilds.resolveId(guild);\n    if (!id) throw new TypeError('INVALID_TYPE', 'guild', 'GuildResolvable');\n    const data = await this.api.guilds(id, 'widget.json').get();\n    return new Widget(this, data);\n  }\n\n  /**\n   * Options for {@link Client#generateInvite}.\n   * @typedef {Object} InviteGenerationOptions\n   * @property {InviteScope[]} scopes Scopes that should be requested\n   * @property {PermissionResolvable} [permissions] Permissions to request\n   * @property {GuildResolvable} [guild] Guild to preselect\n   * @property {boolean} [disableGuildSelect] Whether to disable the guild selection\n   */\n\n  /**\n   * Generates a link that can be used to invite the bot to a guild.\n   * @param {InviteGenerationOptions} [options={}] Options for the invite\n   * @returns {string}\n   * @example\n   * const link = client.generateInvite({\n   *   scopes: ['applications.commands'],\n   * });\n   * console.log(`Generated application invite link: ${link}`);\n   * @example\n   * const link = client.generateInvite({\n   *   permissions: [\n   *     Permissions.FLAGS.SEND_MESSAGES,\n   *     Permissions.FLAGS.MANAGE_GUILD,\n   *     Permissions.FLAGS.MENTION_EVERYONE,\n   *   ],\n   *   scopes: ['bot'],\n   * });\n   * console.log(`Generated bot invite link: ${link}`);\n   */\n  generateInvite(options = {}) {\n    if (typeof options !== 'object') throw new TypeError('INVALID_TYPE', 'options', 'object', true);\n    if (!this.application) throw new Error('CLIENT_NOT_READY', 'generate an invite link');\n\n    const query = new URLSearchParams({\n      client_id: this.application.id,\n    });\n\n    const { scopes } = options;\n    if (typeof scopes === 'undefined') {\n      throw new TypeError('INVITE_MISSING_SCOPES');\n    }\n    if (!Array.isArray(scopes)) {\n      throw new TypeError('INVALID_TYPE', 'scopes', 'Array of Invite Scopes', true);\n    }\n    if (!scopes.some(scope => ['bot', 'applications.commands'].includes(scope))) {\n      throw new TypeError('INVITE_MISSING_SCOPES');\n    }\n    const invalidScope = scopes.find(scope => !InviteScopes.includes(scope));\n    if (invalidScope) {\n      throw new TypeError('INVALID_ELEMENT', 'Array', 'scopes', invalidScope);\n    }\n    query.set('scope', scopes.join(' '));\n\n    if (options.permissions) {\n      const permissions = Permissions.resolve(options.permissions);\n      if (permissions) query.set('permissions', permissions);\n    }\n\n    if (options.disableGuildSelect) {\n      query.set('disable_guild_select', true);\n    }\n\n    if (options.guild) {\n      const guildId = this.guilds.resolveId(options.guild);\n      if (!guildId) throw new TypeError('INVALID_TYPE', 'options.guild', 'GuildResolvable');\n      query.set('guild_id', guildId);\n    }\n\n    return `${this.options.http.api}${this.api.oauth2.authorize}?${query}`;\n  }\n\n  toJSON() {\n    return super.toJSON({\n      readyAt: false,\n    });\n  }\n\n  /**\n   * Calls {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval} on a script\n   * with the client as `this`.\n   * @param {string} script Script to eval\n   * @returns {*}\n   * @private\n   */\n  _eval(script) {\n    return eval(script);\n  }\n\n  /**\n   * Validates the client options.\n   * @param {ClientOptions} [options=this.options] Options to validate\n   * @private\n   */\n  _validateOptions(options = this.options) {\n    if (typeof options.intents === 'undefined') {\n      throw new TypeError('CLIENT_MISSING_INTENTS');\n    } else {\n      options.intents = Intents.resolve(options.intents);\n    }\n    if (typeof options.shardCount !== 'number' || isNaN(options.shardCount) || options.shardCount < 1) {\n      throw new TypeError('CLIENT_INVALID_OPTION', 'shardCount', 'a number greater than or equal to 1');\n    }\n    if (options.shards && !(options.shards === 'auto' || Array.isArray(options.shards))) {\n      throw new TypeError('CLIENT_INVALID_OPTION', 'shards', \"'auto', a number or array of numbers\");\n    }\n    if (options.shards && !options.shards.length) throw new RangeError('CLIENT_INVALID_PROVIDED_SHARDS');\n    if (typeof options.makeCache !== 'function') {\n      throw new TypeError('CLIENT_INVALID_OPTION', 'makeCache', 'a function');\n    }\n    if (typeof options.messageCacheLifetime !== 'number' || isNaN(options.messageCacheLifetime)) {\n      throw new TypeError('CLIENT_INVALID_OPTION', 'The messageCacheLifetime', 'a number');\n    }\n    if (typeof options.messageSweepInterval !== 'number' || isNaN(options.messageSweepInterval)) {\n      throw new TypeError('CLIENT_INVALID_OPTION', 'messageSweepInterval', 'a number');\n    }\n    if (typeof options.sweepers !== 'object' || options.sweepers === null) {\n      throw new TypeError('CLIENT_INVALID_OPTION', 'sweepers', 'an object');\n    }\n    if (typeof options.invalidRequestWarningInterval !== 'number' || isNaN(options.invalidRequestWarningInterval)) {\n      throw new TypeError('CLIENT_INVALID_OPTION', 'invalidRequestWarningInterval', 'a number');\n    }\n    if (!Array.isArray(options.partials)) {\n      throw new TypeError('CLIENT_INVALID_OPTION', 'partials', 'an Array');\n    }\n    if (typeof options.waitGuildTimeout !== 'number' || isNaN(options.waitGuildTimeout)) {\n      throw new TypeError('CLIENT_INVALID_OPTION', 'waitGuildTimeout', 'a number');\n    }\n    if (typeof options.restWsBridgeTimeout !== 'number' || isNaN(options.restWsBridgeTimeout)) {\n      throw new TypeError('CLIENT_INVALID_OPTION', 'restWsBridgeTimeout', 'a number');\n    }\n    if (typeof options.restRequestTimeout !== 'number' || isNaN(options.restRequestTimeout)) {\n      throw new TypeError('CLIENT_INVALID_OPTION', 'restRequestTimeout', 'a number');\n    }\n    if (typeof options.restGlobalRateLimit !== 'number' || isNaN(options.restGlobalRateLimit)) {\n      throw new TypeError('CLIENT_INVALID_OPTION', 'restGlobalRateLimit', 'a number');\n    }\n    if (typeof options.restSweepInterval !== 'number' || isNaN(options.restSweepInterval)) {\n      throw new TypeError('CLIENT_INVALID_OPTION', 'restSweepInterval', 'a number');\n    }\n    if (typeof options.retryLimit !== 'number' || isNaN(options.retryLimit)) {\n      throw new TypeError('CLIENT_INVALID_OPTION', 'retryLimit', 'a number');\n    }\n    if (typeof options.failIfNotExists !== 'boolean') {\n      throw new TypeError('CLIENT_INVALID_OPTION', 'failIfNotExists', 'a boolean');\n    }\n    if (!Array.isArray(options.userAgentSuffix)) {\n      throw new TypeError('CLIENT_INVALID_OPTION', 'userAgentSuffix', 'an array of strings');\n    }\n    if (\n      typeof options.rejectOnRateLimit !== 'undefined' &&\n      !(typeof options.rejectOnRateLimit === 'function' || Array.isArray(options.rejectOnRateLimit))\n    ) {\n      throw new TypeError('CLIENT_INVALID_OPTION', 'rejectOnRateLimit', 'an array or a function');\n    }\n  }\n}\n\nmodule.exports = Client;\n\n/**\n * Emitted for general warnings.\n * @event Client#warn\n * @param {string} info The warning\n */\n\n/**\n * @external Collection\n * @see {@link https://discord.js.org/#/docs/collection/main/class/Collection}\n */\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/Client.js?")},"./node_modules/@citizenfx/discord.js/src/client/WebhookClient.js":
/*!************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/WebhookClient.js ***!
  \************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst BaseClient = __webpack_require__(/*! ./BaseClient */ \"./node_modules/@citizenfx/discord.js/src/client/BaseClient.js\");\nconst { Error } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst Webhook = __webpack_require__(/*! ../structures/Webhook */ \"./node_modules/@citizenfx/discord.js/src/structures/Webhook.js\");\n\n/**\n * The webhook client.\n * @implements {Webhook}\n * @extends {BaseClient}\n */\nclass WebhookClient extends BaseClient {\n  /**\n   * The data for the webhook client containing either an id and token or just a URL\n   * @typedef {Object} WebhookClientData\n   * @property {Snowflake} [id] The id of the webhook\n   * @property {string} [token] The token of the webhook\n   * @property {string} [url] The full URL for the webhook client\n   */\n\n  /**\n   * @param {WebhookClientData} data The data of the webhook\n   * @param {ClientOptions} [options] Options for the client\n   */\n  constructor(data, options) {\n    super(options);\n    Object.defineProperty(this, 'client', { value: this });\n    let { id, token } = data;\n\n    if ('url' in data) {\n      const url = data.url.match(\n        // eslint-disable-next-line no-useless-escape\n        /^https?:\\/\\/(?:canary|ptb)?\\.?discord\\.com\\/api\\/webhooks(?:\\/v[0-9]\\d*)?\\/([^\\/]+)\\/([^\\/]+)/i,\n      );\n\n      if (!url || url.length <= 1) throw new Error('WEBHOOK_URL_INVALID');\n\n      [, id, token] = url;\n    }\n\n    this.id = id;\n    Object.defineProperty(this, 'token', { value: token, writable: true, configurable: true });\n  }\n\n  // These are here only for documentation purposes - they are implemented by Webhook\n  /* eslint-disable no-empty-function */\n  send() {}\n  sendSlackMessage() {}\n  fetchMessage() {}\n  edit() {}\n  editMessage() {}\n  delete() {}\n  deleteMessage() {}\n  get createdTimestamp() {}\n  get createdAt() {}\n  get url() {}\n}\n\nWebhook.applyToClass(WebhookClient);\n\nmodule.exports = WebhookClient;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/WebhookClient.js?")},"./node_modules/@citizenfx/discord.js/src/client/actions/Action.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/Action.js ***!
  \*************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst { PartialTypes } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\n/*\n\nABOUT ACTIONS\n\nActions are similar to WebSocket Packet Handlers, but since introducing\nthe REST API methods, in order to prevent rewriting code to handle data,\n"actions" have been introduced. They\'re basically what Packet Handlers\nused to be but they\'re strictly for manipulating data and making sure\nthat WebSocket events don\'t clash with REST methods.\n\n*/\n\nclass GenericAction {\n  constructor(client) {\n    this.client = client;\n  }\n\n  handle(data) {\n    return data;\n  }\n\n  getPayload(data, manager, id, partialType, cache) {\n    const existing = manager.cache.get(id);\n    if (!existing && this.client.options.partials.includes(partialType)) {\n      return manager._add(data, cache);\n    }\n    return existing;\n  }\n\n  getChannel(data) {\n    const id = data.channel_id ?? data.id;\n    return (\n      data.channel ??\n      this.getPayload(\n        {\n          id,\n          guild_id: data.guild_id,\n          recipients: [data.author ?? data.user ?? { id: data.user_id }],\n        },\n        this.client.channels,\n        id,\n        PartialTypes.CHANNEL,\n      )\n    );\n  }\n\n  getMessage(data, channel, cache) {\n    const id = data.message_id ?? data.id;\n    return (\n      data.message ??\n      this.getPayload(\n        {\n          id,\n          channel_id: channel.id,\n          guild_id: data.guild_id ?? channel.guild?.id,\n        },\n        channel.messages,\n        id,\n        PartialTypes.MESSAGE,\n        cache,\n      )\n    );\n  }\n\n  getReaction(data, message, user) {\n    const id = data.emoji.id ?? decodeURIComponent(data.emoji.name);\n    return this.getPayload(\n      {\n        emoji: data.emoji,\n        count: message.partial ? null : 0,\n        me: user?.id === this.client.user.id,\n      },\n      message.reactions,\n      id,\n      PartialTypes.REACTION,\n    );\n  }\n\n  getMember(data, guild) {\n    return this.getPayload(data, guild.members, data.user.id, PartialTypes.GUILD_MEMBER);\n  }\n\n  getUser(data) {\n    const id = data.user_id;\n    return data.user ?? this.getPayload({ id }, this.client.users, id, PartialTypes.USER);\n  }\n\n  getUserFromMember(data) {\n    if (data.guild_id && data.member?.user) {\n      const guild = this.client.guilds.cache.get(data.guild_id);\n      if (guild) {\n        return guild.members._add(data.member).user;\n      } else {\n        return this.client.users._add(data.member.user);\n      }\n    }\n    return this.getUser(data);\n  }\n\n  getScheduledEvent(data, guild) {\n    const id = data.guild_scheduled_event_id ?? data.id;\n    return this.getPayload(\n      { id, guild_id: data.guild_id ?? guild.id },\n      guild.scheduledEvents,\n      id,\n      PartialTypes.GUILD_SCHEDULED_EVENT,\n    );\n  }\n}\n\nmodule.exports = GenericAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/Action.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/ActionsManager.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/ActionsManager.js ***!
  \*********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nclass ActionsManager {\n  constructor(client) {\n    this.client = client;\n\n    this.register(__webpack_require__(/*! ./ChannelCreate */ "./node_modules/@citizenfx/discord.js/src/client/actions/ChannelCreate.js"));\n    this.register(__webpack_require__(/*! ./ChannelDelete */ "./node_modules/@citizenfx/discord.js/src/client/actions/ChannelDelete.js"));\n    this.register(__webpack_require__(/*! ./ChannelUpdate */ "./node_modules/@citizenfx/discord.js/src/client/actions/ChannelUpdate.js"));\n    this.register(__webpack_require__(/*! ./GuildBanAdd */ "./node_modules/@citizenfx/discord.js/src/client/actions/GuildBanAdd.js"));\n    this.register(__webpack_require__(/*! ./GuildBanRemove */ "./node_modules/@citizenfx/discord.js/src/client/actions/GuildBanRemove.js"));\n    this.register(__webpack_require__(/*! ./GuildChannelsPositionUpdate */ "./node_modules/@citizenfx/discord.js/src/client/actions/GuildChannelsPositionUpdate.js"));\n    this.register(__webpack_require__(/*! ./GuildDelete */ "./node_modules/@citizenfx/discord.js/src/client/actions/GuildDelete.js"));\n    this.register(__webpack_require__(/*! ./GuildEmojiCreate */ "./node_modules/@citizenfx/discord.js/src/client/actions/GuildEmojiCreate.js"));\n    this.register(__webpack_require__(/*! ./GuildEmojiDelete */ "./node_modules/@citizenfx/discord.js/src/client/actions/GuildEmojiDelete.js"));\n    this.register(__webpack_require__(/*! ./GuildEmojiUpdate */ "./node_modules/@citizenfx/discord.js/src/client/actions/GuildEmojiUpdate.js"));\n    this.register(__webpack_require__(/*! ./GuildEmojisUpdate */ "./node_modules/@citizenfx/discord.js/src/client/actions/GuildEmojisUpdate.js"));\n    this.register(__webpack_require__(/*! ./GuildIntegrationsUpdate */ "./node_modules/@citizenfx/discord.js/src/client/actions/GuildIntegrationsUpdate.js"));\n    this.register(__webpack_require__(/*! ./GuildMemberRemove */ "./node_modules/@citizenfx/discord.js/src/client/actions/GuildMemberRemove.js"));\n    this.register(__webpack_require__(/*! ./GuildMemberUpdate */ "./node_modules/@citizenfx/discord.js/src/client/actions/GuildMemberUpdate.js"));\n    this.register(__webpack_require__(/*! ./GuildRoleCreate */ "./node_modules/@citizenfx/discord.js/src/client/actions/GuildRoleCreate.js"));\n    this.register(__webpack_require__(/*! ./GuildRoleDelete */ "./node_modules/@citizenfx/discord.js/src/client/actions/GuildRoleDelete.js"));\n    this.register(__webpack_require__(/*! ./GuildRoleUpdate */ "./node_modules/@citizenfx/discord.js/src/client/actions/GuildRoleUpdate.js"));\n    this.register(__webpack_require__(/*! ./GuildRolesPositionUpdate */ "./node_modules/@citizenfx/discord.js/src/client/actions/GuildRolesPositionUpdate.js"));\n    this.register(__webpack_require__(/*! ./GuildScheduledEventCreate */ "./node_modules/@citizenfx/discord.js/src/client/actions/GuildScheduledEventCreate.js"));\n    this.register(__webpack_require__(/*! ./GuildScheduledEventDelete */ "./node_modules/@citizenfx/discord.js/src/client/actions/GuildScheduledEventDelete.js"));\n    this.register(__webpack_require__(/*! ./GuildScheduledEventUpdate */ "./node_modules/@citizenfx/discord.js/src/client/actions/GuildScheduledEventUpdate.js"));\n    this.register(__webpack_require__(/*! ./GuildScheduledEventUserAdd */ "./node_modules/@citizenfx/discord.js/src/client/actions/GuildScheduledEventUserAdd.js"));\n    this.register(__webpack_require__(/*! ./GuildScheduledEventUserRemove */ "./node_modules/@citizenfx/discord.js/src/client/actions/GuildScheduledEventUserRemove.js"));\n    this.register(__webpack_require__(/*! ./GuildStickerCreate */ "./node_modules/@citizenfx/discord.js/src/client/actions/GuildStickerCreate.js"));\n    this.register(__webpack_require__(/*! ./GuildStickerDelete */ "./node_modules/@citizenfx/discord.js/src/client/actions/GuildStickerDelete.js"));\n    this.register(__webpack_require__(/*! ./GuildStickerUpdate */ "./node_modules/@citizenfx/discord.js/src/client/actions/GuildStickerUpdate.js"));\n    this.register(__webpack_require__(/*! ./GuildStickersUpdate */ "./node_modules/@citizenfx/discord.js/src/client/actions/GuildStickersUpdate.js"));\n    this.register(__webpack_require__(/*! ./GuildUpdate */ "./node_modules/@citizenfx/discord.js/src/client/actions/GuildUpdate.js"));\n    this.register(__webpack_require__(/*! ./InteractionCreate */ "./node_modules/@citizenfx/discord.js/src/client/actions/InteractionCreate.js"));\n    this.register(__webpack_require__(/*! ./InviteCreate */ "./node_modules/@citizenfx/discord.js/src/client/actions/InviteCreate.js"));\n    this.register(__webpack_require__(/*! ./InviteDelete */ "./node_modules/@citizenfx/discord.js/src/client/actions/InviteDelete.js"));\n    this.register(__webpack_require__(/*! ./MessageCreate */ "./node_modules/@citizenfx/discord.js/src/client/actions/MessageCreate.js"));\n    this.register(__webpack_require__(/*! ./MessageDelete */ "./node_modules/@citizenfx/discord.js/src/client/actions/MessageDelete.js"));\n    this.register(__webpack_require__(/*! ./MessageDeleteBulk */ "./node_modules/@citizenfx/discord.js/src/client/actions/MessageDeleteBulk.js"));\n    this.register(__webpack_require__(/*! ./MessageReactionAdd */ "./node_modules/@citizenfx/discord.js/src/client/actions/MessageReactionAdd.js"));\n    this.register(__webpack_require__(/*! ./MessageReactionRemove */ "./node_modules/@citizenfx/discord.js/src/client/actions/MessageReactionRemove.js"));\n    this.register(__webpack_require__(/*! ./MessageReactionRemoveAll */ "./node_modules/@citizenfx/discord.js/src/client/actions/MessageReactionRemoveAll.js"));\n    this.register(__webpack_require__(/*! ./MessageReactionRemoveEmoji */ "./node_modules/@citizenfx/discord.js/src/client/actions/MessageReactionRemoveEmoji.js"));\n    this.register(__webpack_require__(/*! ./MessageUpdate */ "./node_modules/@citizenfx/discord.js/src/client/actions/MessageUpdate.js"));\n    this.register(__webpack_require__(/*! ./PresenceUpdate */ "./node_modules/@citizenfx/discord.js/src/client/actions/PresenceUpdate.js"));\n    this.register(__webpack_require__(/*! ./StageInstanceCreate */ "./node_modules/@citizenfx/discord.js/src/client/actions/StageInstanceCreate.js"));\n    this.register(__webpack_require__(/*! ./StageInstanceDelete */ "./node_modules/@citizenfx/discord.js/src/client/actions/StageInstanceDelete.js"));\n    this.register(__webpack_require__(/*! ./StageInstanceUpdate */ "./node_modules/@citizenfx/discord.js/src/client/actions/StageInstanceUpdate.js"));\n    this.register(__webpack_require__(/*! ./ThreadCreate */ "./node_modules/@citizenfx/discord.js/src/client/actions/ThreadCreate.js"));\n    this.register(__webpack_require__(/*! ./ThreadDelete */ "./node_modules/@citizenfx/discord.js/src/client/actions/ThreadDelete.js"));\n    this.register(__webpack_require__(/*! ./ThreadListSync */ "./node_modules/@citizenfx/discord.js/src/client/actions/ThreadListSync.js"));\n    this.register(__webpack_require__(/*! ./ThreadMemberUpdate */ "./node_modules/@citizenfx/discord.js/src/client/actions/ThreadMemberUpdate.js"));\n    this.register(__webpack_require__(/*! ./ThreadMembersUpdate */ "./node_modules/@citizenfx/discord.js/src/client/actions/ThreadMembersUpdate.js"));\n    this.register(__webpack_require__(/*! ./TypingStart */ "./node_modules/@citizenfx/discord.js/src/client/actions/TypingStart.js"));\n    this.register(__webpack_require__(/*! ./UserUpdate */ "./node_modules/@citizenfx/discord.js/src/client/actions/UserUpdate.js"));\n    this.register(__webpack_require__(/*! ./VoiceStateUpdate */ "./node_modules/@citizenfx/discord.js/src/client/actions/VoiceStateUpdate.js"));\n    this.register(__webpack_require__(/*! ./WebhooksUpdate */ "./node_modules/@citizenfx/discord.js/src/client/actions/WebhooksUpdate.js"));\n  }\n\n  register(Action) {\n    this[Action.name.replace(/Action$/, \'\')] = new Action(this.client);\n  }\n}\n\nmodule.exports = ActionsManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/ActionsManager.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/ChannelCreate.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/ChannelCreate.js ***!
  \********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass ChannelCreateAction extends Action {\n  handle(data) {\n    const client = this.client;\n    const existing = client.channels.cache.has(data.id);\n    const channel = client.channels._add(data);\n    if (!existing && channel) {\n      /**\n       * Emitted whenever a guild channel is created.\n       * @event Client#channelCreate\n       * @param {GuildChannel} channel The channel that was created\n       */\n      client.emit(Events.CHANNEL_CREATE, channel);\n    }\n    return { channel };\n  }\n}\n\nmodule.exports = ChannelCreateAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/ChannelCreate.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/ChannelDelete.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/ChannelDelete.js ***!
  \********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { deletedChannels } = __webpack_require__(/*! ../../structures/Channel */ "./node_modules/@citizenfx/discord.js/src/structures/Channel.js");\nconst DMChannel = __webpack_require__(/*! ../../structures/DMChannel */ "./node_modules/@citizenfx/discord.js/src/structures/DMChannel.js");\nconst { deletedMessages } = __webpack_require__(/*! ../../structures/Message */ "./node_modules/@citizenfx/discord.js/src/structures/Message.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass ChannelDeleteAction extends Action {\n  constructor(client) {\n    super(client);\n    this.deleted = new Map();\n  }\n\n  handle(data) {\n    const client = this.client;\n    const channel = client.channels.cache.get(data.id);\n\n    if (channel) {\n      client.channels._remove(channel.id);\n      deletedChannels.add(channel);\n      if (channel.messages && !(channel instanceof DMChannel)) {\n        for (const message of channel.messages.cache.values()) {\n          deletedMessages.add(message);\n        }\n      }\n      /**\n       * Emitted whenever a channel is deleted.\n       * @event Client#channelDelete\n       * @param {DMChannel|GuildChannel} channel The channel that was deleted\n       */\n      client.emit(Events.CHANNEL_DELETE, channel);\n    }\n\n    return { channel };\n  }\n}\n\nmodule.exports = ChannelDeleteAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/ChannelDelete.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/ChannelUpdate.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/ChannelUpdate.js ***!
  \********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Channel } = __webpack_require__(/*! ../../structures/Channel */ "./node_modules/@citizenfx/discord.js/src/structures/Channel.js");\nconst { ChannelTypes } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass ChannelUpdateAction extends Action {\n  handle(data) {\n    const client = this.client;\n\n    let channel = client.channels.cache.get(data.id);\n    if (channel) {\n      const old = channel._update(data);\n\n      if (ChannelTypes[channel.type] !== data.type) {\n        const newChannel = Channel.create(this.client, data, channel.guild);\n        for (const [id, message] of channel.messages.cache) newChannel.messages.cache.set(id, message);\n        channel = newChannel;\n        this.client.channels.cache.set(channel.id, channel);\n      }\n\n      return {\n        old,\n        updated: channel,\n      };\n    } else {\n      client.channels._add(data);\n    }\n\n    return {};\n  }\n}\n\nmodule.exports = ChannelUpdateAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/ChannelUpdate.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/GuildBanAdd.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/GuildBanAdd.js ***!
  \******************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass GuildBanAdd extends Action {\n  handle(data) {\n    const client = this.client;\n    const guild = client.guilds.cache.get(data.guild_id);\n\n    /**\n     * Emitted whenever a member is banned from a guild.\n     * @event Client#guildBanAdd\n     * @param {GuildBan} ban The ban that occurred\n     */\n    if (guild) client.emit(Events.GUILD_BAN_ADD, guild.bans._add(data));\n  }\n}\n\nmodule.exports = GuildBanAdd;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/GuildBanAdd.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/GuildBanRemove.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/GuildBanRemove.js ***!
  \*********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst GuildBan = __webpack_require__(/*! ../../structures/GuildBan */ "./node_modules/@citizenfx/discord.js/src/structures/GuildBan.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass GuildBanRemove extends Action {\n  handle(data) {\n    const client = this.client;\n    const guild = client.guilds.cache.get(data.guild_id);\n\n    /**\n     * Emitted whenever a member is unbanned from a guild.\n     * @event Client#guildBanRemove\n     * @param {GuildBan} ban The ban that was removed\n     */\n    if (guild) {\n      const ban = guild.bans.cache.get(data.user.id) ?? new GuildBan(client, data, guild);\n      guild.bans.cache.delete(ban.user.id);\n      client.emit(Events.GUILD_BAN_REMOVE, ban);\n    }\n  }\n}\n\nmodule.exports = GuildBanRemove;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/GuildBanRemove.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/GuildChannelsPositionUpdate.js":
/*!**********************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/GuildChannelsPositionUpdate.js ***!
  \**********************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\n\nclass GuildChannelsPositionUpdate extends Action {\n  handle(data) {\n    const client = this.client;\n\n    const guild = client.guilds.cache.get(data.guild_id);\n    if (guild) {\n      for (const partialChannel of data.channels) {\n        const channel = guild.channels.cache.get(partialChannel.id);\n        if (channel) channel.rawPosition = partialChannel.position;\n      }\n    }\n\n    return { guild };\n  }\n}\n\nmodule.exports = GuildChannelsPositionUpdate;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/GuildChannelsPositionUpdate.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/GuildDelete.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/GuildDelete.js ***!
  \******************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst { setTimeout } = __webpack_require__(/*! node:timers */ "node:timers");\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { deletedGuilds } = __webpack_require__(/*! ../../structures/Guild */ "./node_modules/@citizenfx/discord.js/src/structures/Guild.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass GuildDeleteAction extends Action {\n  constructor(client) {\n    super(client);\n    this.deleted = new Map();\n  }\n\n  handle(data) {\n    const client = this.client;\n\n    let guild = client.guilds.cache.get(data.id);\n    if (guild) {\n      if (data.unavailable) {\n        // Guild is unavailable\n        guild.available = false;\n\n        /**\n         * Emitted whenever a guild becomes unavailable, likely due to a server outage.\n         * @event Client#guildUnavailable\n         * @param {Guild} guild The guild that has become unavailable\n         */\n        client.emit(Events.GUILD_UNAVAILABLE, guild);\n\n        // Stops the GuildDelete packet thinking a guild was actually deleted,\n        // handles emitting of event itself\n        return {\n          guild: null,\n        };\n      }\n\n      for (const channel of guild.channels.cache.values()) this.client.channels._remove(channel.id);\n      client.voice.adapters.get(data.id)?.destroy();\n\n      // Delete guild\n      client.guilds.cache.delete(guild.id);\n      deletedGuilds.add(guild);\n\n      /**\n       * Emitted whenever a guild kicks the client or the guild is deleted/left.\n       * @event Client#guildDelete\n       * @param {Guild} guild The guild that was deleted\n       */\n      client.emit(Events.GUILD_DELETE, guild);\n\n      this.deleted.set(guild.id, guild);\n      this.scheduleForDeletion(guild.id);\n    } else {\n      guild = this.deleted.get(data.id) ?? null;\n    }\n\n    return { guild };\n  }\n\n  scheduleForDeletion(id) {\n    setTimeout(() => this.deleted.delete(id), this.client.options.restWsBridgeTimeout).unref();\n  }\n}\n\nmodule.exports = GuildDeleteAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/GuildDelete.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/GuildEmojiCreate.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/GuildEmojiCreate.js ***!
  \***********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass GuildEmojiCreateAction extends Action {\n  handle(guild, createdEmoji) {\n    const already = guild.emojis.cache.has(createdEmoji.id);\n    const emoji = guild.emojis._add(createdEmoji);\n    /**\n     * Emitted whenever a custom emoji is created in a guild.\n     * @event Client#emojiCreate\n     * @param {GuildEmoji} emoji The emoji that was created\n     */\n    if (!already) this.client.emit(Events.GUILD_EMOJI_CREATE, emoji);\n    return { emoji };\n  }\n}\n\nmodule.exports = GuildEmojiCreateAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/GuildEmojiCreate.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/GuildEmojiDelete.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/GuildEmojiDelete.js ***!
  \***********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { deletedEmojis } = __webpack_require__(/*! ../../structures/Emoji */ "./node_modules/@citizenfx/discord.js/src/structures/Emoji.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass GuildEmojiDeleteAction extends Action {\n  handle(emoji) {\n    emoji.guild.emojis.cache.delete(emoji.id);\n    deletedEmojis.add(emoji);\n    /**\n     * Emitted whenever a custom emoji is deleted in a guild.\n     * @event Client#emojiDelete\n     * @param {GuildEmoji} emoji The emoji that was deleted\n     */\n    this.client.emit(Events.GUILD_EMOJI_DELETE, emoji);\n    return { emoji };\n  }\n}\n\nmodule.exports = GuildEmojiDeleteAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/GuildEmojiDelete.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/GuildEmojiUpdate.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/GuildEmojiUpdate.js ***!
  \***********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass GuildEmojiUpdateAction extends Action {\n  handle(current, data) {\n    const old = current._update(data);\n    /**\n     * Emitted whenever a custom emoji is updated in a guild.\n     * @event Client#emojiUpdate\n     * @param {GuildEmoji} oldEmoji The old emoji\n     * @param {GuildEmoji} newEmoji The new emoji\n     */\n    this.client.emit(Events.GUILD_EMOJI_UPDATE, old, current);\n    return { emoji: current };\n  }\n}\n\nmodule.exports = GuildEmojiUpdateAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/GuildEmojiUpdate.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/GuildEmojisUpdate.js":
/*!************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/GuildEmojisUpdate.js ***!
  \************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\n\nclass GuildEmojisUpdateAction extends Action {\n  handle(data) {\n    const guild = this.client.guilds.cache.get(data.guild_id);\n    if (!guild?.emojis) return;\n\n    const deletions = new Map(guild.emojis.cache);\n\n    for (const emoji of data.emojis) {\n      // Determine type of emoji event\n      const cachedEmoji = guild.emojis.cache.get(emoji.id);\n      if (cachedEmoji) {\n        deletions.delete(emoji.id);\n        if (!cachedEmoji.equals(emoji)) {\n          // Emoji updated\n          this.client.actions.GuildEmojiUpdate.handle(cachedEmoji, emoji);\n        }\n      } else {\n        // Emoji added\n        this.client.actions.GuildEmojiCreate.handle(guild, emoji);\n      }\n    }\n\n    for (const emoji of deletions.values()) {\n      // Emoji deleted\n      this.client.actions.GuildEmojiDelete.handle(emoji);\n    }\n  }\n}\n\nmodule.exports = GuildEmojisUpdateAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/GuildEmojisUpdate.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/GuildIntegrationsUpdate.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/GuildIntegrationsUpdate.js ***!
  \******************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass GuildIntegrationsUpdate extends Action {\n  handle(data) {\n    const client = this.client;\n    const guild = client.guilds.cache.get(data.guild_id);\n    /**\n     * Emitted whenever a guild integration is updated\n     * @event Client#guildIntegrationsUpdate\n     * @param {Guild} guild The guild whose integrations were updated\n     */\n    if (guild) client.emit(Events.GUILD_INTEGRATIONS_UPDATE, guild);\n  }\n}\n\nmodule.exports = GuildIntegrationsUpdate;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/GuildIntegrationsUpdate.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/GuildMemberRemove.js":
/*!************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/GuildMemberRemove.js ***!
  \************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { deletedGuildMembers } = __webpack_require__(/*! ../../structures/GuildMember */ "./node_modules/@citizenfx/discord.js/src/structures/GuildMember.js");\nconst { Events, Status } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass GuildMemberRemoveAction extends Action {\n  handle(data, shard) {\n    const client = this.client;\n    const guild = client.guilds.cache.get(data.guild_id);\n    let member = null;\n    if (guild) {\n      member = this.getMember({ user: data.user }, guild);\n      guild.memberCount--;\n      if (member) {\n        deletedGuildMembers.add(member);\n        guild.members.cache.delete(member.id);\n        /**\n         * Emitted whenever a member leaves a guild, or is kicked.\n         * @event Client#guildMemberRemove\n         * @param {GuildMember} member The member that has left/been kicked from the guild\n         */\n        if (shard.status === Status.READY) client.emit(Events.GUILD_MEMBER_REMOVE, member);\n      }\n      guild.voiceStates.cache.delete(data.user.id);\n    }\n    return { guild, member };\n  }\n}\n\nmodule.exports = GuildMemberRemoveAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/GuildMemberRemove.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/GuildMemberUpdate.js":
/*!************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/GuildMemberUpdate.js ***!
  \************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Status, Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass GuildMemberUpdateAction extends Action {\n  handle(data, shard) {\n    const { client } = this;\n    if (data.user.username) {\n      const user = client.users.cache.get(data.user.id);\n      if (!user) {\n        client.users._add(data.user);\n      } else if (!user._equals(data.user)) {\n        client.actions.UserUpdate.handle(data.user);\n      }\n    }\n\n    const guild = client.guilds.cache.get(data.guild_id);\n    if (guild) {\n      const member = this.getMember({ user: data.user }, guild);\n      if (member) {\n        const old = member._update(data);\n        /**\n         * Emitted whenever a guild member changes - i.e. new role, removed role, nickname.\n         * @event Client#guildMemberUpdate\n         * @param {GuildMember} oldMember The member before the update\n         * @param {GuildMember} newMember The member after the update\n         */\n        if (shard.status === Status.READY && !member.equals(old)) client.emit(Events.GUILD_MEMBER_UPDATE, old, member);\n      } else {\n        const newMember = guild.members._add(data);\n        /**\n         * Emitted whenever a member becomes available in a large guild.\n         * @event Client#guildMemberAvailable\n         * @param {GuildMember} member The member that became available\n         */\n        this.client.emit(Events.GUILD_MEMBER_AVAILABLE, newMember);\n      }\n    }\n  }\n}\n\nmodule.exports = GuildMemberUpdateAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/GuildMemberUpdate.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/GuildRoleCreate.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/GuildRoleCreate.js ***!
  \**********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass GuildRoleCreate extends Action {\n  handle(data) {\n    const client = this.client;\n    const guild = client.guilds.cache.get(data.guild_id);\n    let role;\n    if (guild) {\n      const already = guild.roles.cache.has(data.role.id);\n      role = guild.roles._add(data.role);\n      /**\n       * Emitted whenever a role is created.\n       * @event Client#roleCreate\n       * @param {Role} role The role that was created\n       */\n      if (!already) client.emit(Events.GUILD_ROLE_CREATE, role);\n    }\n    return { role };\n  }\n}\n\nmodule.exports = GuildRoleCreate;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/GuildRoleCreate.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/GuildRoleDelete.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/GuildRoleDelete.js ***!
  \**********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { deletedRoles } = __webpack_require__(/*! ../../structures/Role */ "./node_modules/@citizenfx/discord.js/src/structures/Role.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass GuildRoleDeleteAction extends Action {\n  handle(data) {\n    const client = this.client;\n    const guild = client.guilds.cache.get(data.guild_id);\n    let role;\n\n    if (guild) {\n      role = guild.roles.cache.get(data.role_id);\n      if (role) {\n        guild.roles.cache.delete(data.role_id);\n        deletedRoles.add(role);\n        /**\n         * Emitted whenever a guild role is deleted.\n         * @event Client#roleDelete\n         * @param {Role} role The role that was deleted\n         */\n        client.emit(Events.GUILD_ROLE_DELETE, role);\n      }\n    }\n\n    return { role };\n  }\n}\n\nmodule.exports = GuildRoleDeleteAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/GuildRoleDelete.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/GuildRoleUpdate.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/GuildRoleUpdate.js ***!
  \**********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass GuildRoleUpdateAction extends Action {\n  handle(data) {\n    const client = this.client;\n    const guild = client.guilds.cache.get(data.guild_id);\n\n    if (guild) {\n      let old = null;\n\n      const role = guild.roles.cache.get(data.role.id);\n      if (role) {\n        old = role._update(data.role);\n        /**\n         * Emitted whenever a guild role is updated.\n         * @event Client#roleUpdate\n         * @param {Role} oldRole The role before the update\n         * @param {Role} newRole The role after the update\n         */\n        client.emit(Events.GUILD_ROLE_UPDATE, old, role);\n      }\n\n      return {\n        old,\n        updated: role,\n      };\n    }\n\n    return {\n      old: null,\n      updated: null,\n    };\n  }\n}\n\nmodule.exports = GuildRoleUpdateAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/GuildRoleUpdate.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/GuildRolesPositionUpdate.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/GuildRolesPositionUpdate.js ***!
  \*******************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\n\nclass GuildRolesPositionUpdate extends Action {\n  handle(data) {\n    const client = this.client;\n\n    const guild = client.guilds.cache.get(data.guild_id);\n    if (guild) {\n      for (const partialRole of data.roles) {\n        const role = guild.roles.cache.get(partialRole.id);\n        if (role) role.rawPosition = partialRole.position;\n      }\n    }\n\n    return { guild };\n  }\n}\n\nmodule.exports = GuildRolesPositionUpdate;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/GuildRolesPositionUpdate.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/GuildScheduledEventCreate.js":
/*!********************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/GuildScheduledEventCreate.js ***!
  \********************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass GuildScheduledEventCreateAction extends Action {\n  handle(data) {\n    const client = this.client;\n    const guild = client.guilds.cache.get(data.guild_id);\n    if (guild) {\n      const guildScheduledEvent = guild.scheduledEvents._add(data);\n\n      /**\n       * Emitted whenever a guild scheduled event is created.\n       * @event Client#guildScheduledEventCreate\n       * @param {GuildScheduledEvent} guildScheduledEvent The created guild scheduled event\n       */\n      client.emit(Events.GUILD_SCHEDULED_EVENT_CREATE, guildScheduledEvent);\n\n      return { guildScheduledEvent };\n    }\n\n    return {};\n  }\n}\n\nmodule.exports = GuildScheduledEventCreateAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/GuildScheduledEventCreate.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/GuildScheduledEventDelete.js":
/*!********************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/GuildScheduledEventDelete.js ***!
  \********************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass GuildScheduledEventDeleteAction extends Action {\n  handle(data) {\n    const client = this.client;\n    const guild = client.guilds.cache.get(data.guild_id);\n\n    if (guild) {\n      const guildScheduledEvent = this.getScheduledEvent(data, guild);\n      if (guildScheduledEvent) {\n        guild.scheduledEvents.cache.delete(guildScheduledEvent.id);\n\n        /**\n         * Emitted whenever a guild scheduled event is deleted.\n         * @event Client#guildScheduledEventDelete\n         * @param {GuildScheduledEvent} guildScheduledEvent The deleted guild scheduled event\n         */\n        client.emit(Events.GUILD_SCHEDULED_EVENT_DELETE, guildScheduledEvent);\n\n        return { guildScheduledEvent };\n      }\n    }\n\n    return {};\n  }\n}\n\nmodule.exports = GuildScheduledEventDeleteAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/GuildScheduledEventDelete.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/GuildScheduledEventUpdate.js":
/*!********************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/GuildScheduledEventUpdate.js ***!
  \********************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass GuildScheduledEventUpdateAction extends Action {\n  handle(data) {\n    const client = this.client;\n    const guild = client.guilds.cache.get(data.guild_id);\n\n    if (guild) {\n      const oldGuildScheduledEvent = guild.scheduledEvents.cache.get(data.id)?._clone() ?? null;\n      const newGuildScheduledEvent = guild.scheduledEvents._add(data);\n\n      /**\n       * Emitted whenever a guild scheduled event gets updated.\n       * @event Client#guildScheduledEventUpdate\n       * @param {?GuildScheduledEvent} oldGuildScheduledEvent The guild scheduled event object before the update\n       * @param {GuildScheduledEvent} newGuildScheduledEvent The guild scheduled event object after the update\n       */\n      client.emit(Events.GUILD_SCHEDULED_EVENT_UPDATE, oldGuildScheduledEvent, newGuildScheduledEvent);\n\n      return { oldGuildScheduledEvent, newGuildScheduledEvent };\n    }\n\n    return {};\n  }\n}\n\nmodule.exports = GuildScheduledEventUpdateAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/GuildScheduledEventUpdate.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/GuildScheduledEventUserAdd.js":
/*!*********************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/GuildScheduledEventUserAdd.js ***!
  \*********************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass GuildScheduledEventUserAddAction extends Action {\n  handle(data) {\n    const client = this.client;\n    const guild = client.guilds.cache.get(data.guild_id);\n\n    if (guild) {\n      const guildScheduledEvent = this.getScheduledEvent(data, guild);\n      const user = this.getUser(data);\n\n      if (guildScheduledEvent && user) {\n        /**\n         * Emitted whenever a user subscribes to a guild scheduled event\n         * @event Client#guildScheduledEventUserAdd\n         * @param {GuildScheduledEvent} guildScheduledEvent The guild scheduled event\n         * @param {User} user The user who subscribed\n         */\n        client.emit(Events.GUILD_SCHEDULED_EVENT_USER_ADD, guildScheduledEvent, user);\n\n        return { guildScheduledEvent, user };\n      }\n    }\n\n    return {};\n  }\n}\n\nmodule.exports = GuildScheduledEventUserAddAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/GuildScheduledEventUserAdd.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/GuildScheduledEventUserRemove.js":
/*!************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/GuildScheduledEventUserRemove.js ***!
  \************************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass GuildScheduledEventUserRemoveAction extends Action {\n  handle(data) {\n    const client = this.client;\n    const guild = client.guilds.cache.get(data.guild_id);\n\n    if (guild) {\n      const guildScheduledEvent = this.getScheduledEvent(data, guild);\n      const user = this.getUser(data);\n\n      if (guildScheduledEvent && user) {\n        /**\n         * Emitted whenever a user unsubscribes from a guild scheduled event\n         * @event Client#guildScheduledEventUserRemove\n         * @param {GuildScheduledEvent} guildScheduledEvent The guild scheduled event\n         * @param {User} user The user who unsubscribed\n         */\n        client.emit(Events.GUILD_SCHEDULED_EVENT_USER_REMOVE, guildScheduledEvent, user);\n\n        return { guildScheduledEvent, user };\n      }\n    }\n\n    return {};\n  }\n}\n\nmodule.exports = GuildScheduledEventUserRemoveAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/GuildScheduledEventUserRemove.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/GuildStickerCreate.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/GuildStickerCreate.js ***!
  \*************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass GuildStickerCreateAction extends Action {\n  handle(guild, createdSticker) {\n    const already = guild.stickers.cache.has(createdSticker.id);\n    const sticker = guild.stickers._add(createdSticker);\n    /**\n     * Emitted whenever a custom sticker is created in a guild.\n     * @event Client#stickerCreate\n     * @param {Sticker} sticker The sticker that was created\n     */\n    if (!already) this.client.emit(Events.GUILD_STICKER_CREATE, sticker);\n    return { sticker };\n  }\n}\n\nmodule.exports = GuildStickerCreateAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/GuildStickerCreate.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/GuildStickerDelete.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/GuildStickerDelete.js ***!
  \*************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { deletedStickers } = __webpack_require__(/*! ../../structures/Sticker */ "./node_modules/@citizenfx/discord.js/src/structures/Sticker.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass GuildStickerDeleteAction extends Action {\n  handle(sticker) {\n    sticker.guild.stickers.cache.delete(sticker.id);\n    deletedStickers.add(sticker);\n    /**\n     * Emitted whenever a custom sticker is deleted in a guild.\n     * @event Client#stickerDelete\n     * @param {Sticker} sticker The sticker that was deleted\n     */\n    this.client.emit(Events.GUILD_STICKER_DELETE, sticker);\n    return { sticker };\n  }\n}\n\nmodule.exports = GuildStickerDeleteAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/GuildStickerDelete.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/GuildStickerUpdate.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/GuildStickerUpdate.js ***!
  \*************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass GuildStickerUpdateAction extends Action {\n  handle(current, data) {\n    const old = current._update(data);\n    /**\n     * Emitted whenever a custom sticker is updated in a guild.\n     * @event Client#stickerUpdate\n     * @param {Sticker} oldSticker The old sticker\n     * @param {Sticker} newSticker The new sticker\n     */\n    this.client.emit(Events.GUILD_STICKER_UPDATE, old, current);\n    return { sticker: current };\n  }\n}\n\nmodule.exports = GuildStickerUpdateAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/GuildStickerUpdate.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/GuildStickersUpdate.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/GuildStickersUpdate.js ***!
  \**************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\n\nclass GuildStickersUpdateAction extends Action {\n  handle(data) {\n    const guild = this.client.guilds.cache.get(data.guild_id);\n    if (!guild?.stickers) return;\n\n    const deletions = new Map(guild.stickers.cache);\n\n    for (const sticker of data.stickers) {\n      // Determine type of sticker event\n      const cachedSticker = guild.stickers.cache.get(sticker.id);\n      if (cachedSticker) {\n        deletions.delete(sticker.id);\n        if (!cachedSticker.equals(sticker)) {\n          // Sticker updated\n          this.client.actions.GuildStickerUpdate.handle(cachedSticker, sticker);\n        }\n      } else {\n        // Sticker added\n        this.client.actions.GuildStickerCreate.handle(guild, sticker);\n      }\n    }\n\n    for (const sticker of deletions.values()) {\n      // Sticker deleted\n      this.client.actions.GuildStickerDelete.handle(sticker);\n    }\n  }\n}\n\nmodule.exports = GuildStickersUpdateAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/GuildStickersUpdate.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/GuildUpdate.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/GuildUpdate.js ***!
  \******************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass GuildUpdateAction extends Action {\n  handle(data) {\n    const client = this.client;\n\n    const guild = client.guilds.cache.get(data.id);\n    if (guild) {\n      const old = guild._update(data);\n      /**\n       * Emitted whenever a guild is updated - e.g. name change.\n       * @event Client#guildUpdate\n       * @param {Guild} oldGuild The guild before the update\n       * @param {Guild} newGuild The guild after the update\n       */\n      client.emit(Events.GUILD_UPDATE, old, guild);\n      return {\n        old,\n        updated: guild,\n      };\n    }\n\n    return {\n      old: null,\n      updated: null,\n    };\n  }\n}\n\nmodule.exports = GuildUpdateAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/GuildUpdate.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/InteractionCreate.js":
/*!************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/InteractionCreate.js ***!
  \************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst process = __webpack_require__(/*! node:process */ "node:process");\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst AutocompleteInteraction = __webpack_require__(/*! ../../structures/AutocompleteInteraction */ "./node_modules/@citizenfx/discord.js/src/structures/AutocompleteInteraction.js");\nconst ButtonInteraction = __webpack_require__(/*! ../../structures/ButtonInteraction */ "./node_modules/@citizenfx/discord.js/src/structures/ButtonInteraction.js");\nconst CommandInteraction = __webpack_require__(/*! ../../structures/CommandInteraction */ "./node_modules/@citizenfx/discord.js/src/structures/CommandInteraction.js");\nconst MessageContextMenuInteraction = __webpack_require__(/*! ../../structures/MessageContextMenuInteraction */ "./node_modules/@citizenfx/discord.js/src/structures/MessageContextMenuInteraction.js");\nconst SelectMenuInteraction = __webpack_require__(/*! ../../structures/SelectMenuInteraction */ "./node_modules/@citizenfx/discord.js/src/structures/SelectMenuInteraction.js");\nconst UserContextMenuInteraction = __webpack_require__(/*! ../../structures/UserContextMenuInteraction */ "./node_modules/@citizenfx/discord.js/src/structures/UserContextMenuInteraction.js");\nconst { Events, InteractionTypes, MessageComponentTypes, ApplicationCommandTypes } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nlet deprecationEmitted = false;\n\nclass InteractionCreateAction extends Action {\n  handle(data) {\n    const client = this.client;\n\n    // Resolve and cache partial channels for Interaction#channel getter\n    this.getChannel(data);\n\n    let InteractionType;\n    switch (data.type) {\n      case InteractionTypes.APPLICATION_COMMAND:\n        switch (data.data.type) {\n          case ApplicationCommandTypes.CHAT_INPUT:\n            InteractionType = CommandInteraction;\n            break;\n          case ApplicationCommandTypes.USER:\n            InteractionType = UserContextMenuInteraction;\n            break;\n          case ApplicationCommandTypes.MESSAGE:\n            InteractionType = MessageContextMenuInteraction;\n            break;\n          default:\n            client.emit(\n              Events.DEBUG,\n              `[INTERACTION] Received application command interaction with unknown type: ${data.data.type}`,\n            );\n            return;\n        }\n        break;\n      case InteractionTypes.MESSAGE_COMPONENT:\n        switch (data.data.component_type) {\n          case MessageComponentTypes.BUTTON:\n            InteractionType = ButtonInteraction;\n            break;\n          case MessageComponentTypes.SELECT_MENU:\n            InteractionType = SelectMenuInteraction;\n            break;\n          default:\n            client.emit(\n              Events.DEBUG,\n              `[INTERACTION] Received component interaction with unknown type: ${data.data.component_type}`,\n            );\n            return;\n        }\n        break;\n      case InteractionTypes.APPLICATION_COMMAND_AUTOCOMPLETE:\n        InteractionType = AutocompleteInteraction;\n        break;\n      default:\n        client.emit(Events.DEBUG, `[INTERACTION] Received interaction with unknown type: ${data.type}`);\n        return;\n    }\n\n    const interaction = new InteractionType(client, data);\n\n    /**\n     * Emitted when an interaction is created.\n     * @event Client#interactionCreate\n     * @param {Interaction} interaction The interaction which was created\n     */\n    client.emit(Events.INTERACTION_CREATE, interaction);\n\n    /**\n     * Emitted when an interaction is created.\n     * @event Client#interaction\n     * @param {Interaction} interaction The interaction which was created\n     * @deprecated Use {@link Client#event:interactionCreate} instead\n     */\n    if (client.emit(\'interaction\', interaction) && !deprecationEmitted) {\n      deprecationEmitted = true;\n      process.emitWarning(\'The interaction event is deprecated. Use interactionCreate instead\', \'DeprecationWarning\');\n    }\n  }\n}\n\nmodule.exports = InteractionCreateAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/InteractionCreate.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/InviteCreate.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/InviteCreate.js ***!
  \*******************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass InviteCreateAction extends Action {\n  handle(data) {\n    const client = this.client;\n    const channel = client.channels.cache.get(data.channel_id);\n    const guild = client.guilds.cache.get(data.guild_id);\n    if (!channel) return false;\n\n    const inviteData = Object.assign(data, { channel, guild });\n    const invite = guild.invites._add(inviteData);\n\n    /**\n     * Emitted when an invite is created.\n     * <info> This event only triggers if the client has `MANAGE_GUILD` permissions for the guild,\n     * or `MANAGE_CHANNELS` permissions for the channel.</info>\n     * @event Client#inviteCreate\n     * @param {Invite} invite The invite that was created\n     */\n    client.emit(Events.INVITE_CREATE, invite);\n    return { invite };\n  }\n}\n\nmodule.exports = InviteCreateAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/InviteCreate.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/InviteDelete.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/InviteDelete.js ***!
  \*******************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst Invite = __webpack_require__(/*! ../../structures/Invite */ "./node_modules/@citizenfx/discord.js/src/structures/Invite.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass InviteDeleteAction extends Action {\n  handle(data) {\n    const client = this.client;\n    const channel = client.channels.cache.get(data.channel_id);\n    const guild = client.guilds.cache.get(data.guild_id);\n    if (!channel) return false;\n\n    const inviteData = Object.assign(data, { channel, guild });\n    const invite = new Invite(client, inviteData);\n    guild.invites.cache.delete(invite.code);\n\n    /**\n     * Emitted when an invite is deleted.\n     * <info> This event only triggers if the client has `MANAGE_GUILD` permissions for the guild,\n     * or `MANAGE_CHANNELS` permissions for the channel.</info>\n     * @event Client#inviteDelete\n     * @param {Invite} invite The invite that was deleted\n     */\n    client.emit(Events.INVITE_DELETE, invite);\n    return { invite };\n  }\n}\n\nmodule.exports = InviteDeleteAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/InviteDelete.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/MessageCreate.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/MessageCreate.js ***!
  \********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst process = __webpack_require__(/*! node:process */ \"node:process\");\nconst Action = __webpack_require__(/*! ./Action */ \"./node_modules/@citizenfx/discord.js/src/client/actions/Action.js\");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\n\nlet deprecationEmitted = false;\n\nclass MessageCreateAction extends Action {\n  handle(data) {\n    const client = this.client;\n    const channel = this.getChannel(data);\n    if (channel) {\n      if (!channel.isText()) return {};\n\n      const existing = channel.messages.cache.get(data.id);\n      if (existing) return { message: existing };\n      const message = channel.messages._add(data);\n      channel.lastMessageId = data.id;\n\n      /**\n       * Emitted whenever a message is created.\n       * @event Client#messageCreate\n       * @param {Message} message The created message\n       */\n      client.emit(Events.MESSAGE_CREATE, message);\n\n      /**\n       * Emitted whenever a message is created.\n       * @event Client#message\n       * @param {Message} message The created message\n       * @deprecated Use {@link Client#event:messageCreate} instead\n       */\n      if (client.emit('message', message) && !deprecationEmitted) {\n        deprecationEmitted = true;\n        process.emitWarning('The message event is deprecated. Use messageCreate instead', 'DeprecationWarning');\n      }\n\n      return { message };\n    }\n\n    return {};\n  }\n}\n\nmodule.exports = MessageCreateAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/MessageCreate.js?")},"./node_modules/@citizenfx/discord.js/src/client/actions/MessageDelete.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/MessageDelete.js ***!
  \********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { deletedMessages } = __webpack_require__(/*! ../../structures/Message */ "./node_modules/@citizenfx/discord.js/src/structures/Message.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass MessageDeleteAction extends Action {\n  handle(data) {\n    const client = this.client;\n    const channel = this.getChannel(data);\n    let message;\n    if (channel) {\n      if (!channel.isText()) return {};\n\n      message = this.getMessage(data, channel);\n      if (message) {\n        channel.messages.cache.delete(message.id);\n        deletedMessages.add(message);\n        /**\n         * Emitted whenever a message is deleted.\n         * @event Client#messageDelete\n         * @param {Message} message The deleted message\n         */\n        client.emit(Events.MESSAGE_DELETE, message);\n      }\n    }\n\n    return { message };\n  }\n}\n\nmodule.exports = MessageDeleteAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/MessageDelete.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/MessageDeleteBulk.js":
/*!************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/MessageDeleteBulk.js ***!
  \************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ "./node_modules/@discordjs/collection/dist/index.js");\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { deletedMessages } = __webpack_require__(/*! ../../structures/Message */ "./node_modules/@citizenfx/discord.js/src/structures/Message.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass MessageDeleteBulkAction extends Action {\n  handle(data) {\n    const client = this.client;\n    const channel = client.channels.cache.get(data.channel_id);\n\n    if (channel) {\n      if (!channel.isText()) return {};\n\n      const ids = data.ids;\n      const messages = new Collection();\n      for (const id of ids) {\n        const message = this.getMessage(\n          {\n            id,\n            guild_id: data.guild_id,\n          },\n          channel,\n          false,\n        );\n        if (message) {\n          deletedMessages.add(message);\n          messages.set(message.id, message);\n          channel.messages.cache.delete(id);\n        }\n      }\n\n      /**\n       * Emitted whenever messages are deleted in bulk.\n       * @event Client#messageDeleteBulk\n       * @param {Collection<Snowflake, Message>} messages The deleted messages, mapped by their id\n       */\n      if (messages.size > 0) client.emit(Events.MESSAGE_BULK_DELETE, messages);\n      return { messages };\n    }\n    return {};\n  }\n}\n\nmodule.exports = MessageDeleteBulkAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/MessageDeleteBulk.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/MessageReactionAdd.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/MessageReactionAdd.js ***!
  \*************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Action = __webpack_require__(/*! ./Action */ \"./node_modules/@citizenfx/discord.js/src/client/actions/Action.js\");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst { PartialTypes } = __webpack_require__(/*! ../../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\n\n/*\n{ user_id: 'id',\n     message_id: 'id',\n     emoji: { name: '�', id: null },\n     channel_id: 'id',\n     // If originating from a guild\n     guild_id: 'id',\n     member: { ..., user: { ... } } }\n*/\n\nclass MessageReactionAdd extends Action {\n  handle(data, fromStructure = false) {\n    if (!data.emoji) return false;\n\n    const user = this.getUserFromMember(data);\n    if (!user) return false;\n\n    // Verify channel\n    const channel = this.getChannel(data);\n    if (!channel || !channel.isText()) return false;\n\n    // Verify message\n    const message = this.getMessage(data, channel);\n    if (!message) return false;\n\n    // Verify reaction\n    const includePartial = this.client.options.partials.includes(PartialTypes.REACTION);\n    if (message.partial && !includePartial) return false;\n    const reaction = message.reactions._add({\n      emoji: data.emoji,\n      count: message.partial ? null : 0,\n      me: user.id === this.client.user.id,\n    });\n    if (!reaction) return false;\n    reaction._add(user);\n    if (fromStructure) return { message, reaction, user };\n    /**\n     * Emitted whenever a reaction is added to a cached message.\n     * @event Client#messageReactionAdd\n     * @param {MessageReaction} messageReaction The reaction object\n     * @param {User} user The user that applied the guild or reaction emoji\n     */\n    this.client.emit(Events.MESSAGE_REACTION_ADD, reaction, user);\n\n    return { message, reaction, user };\n  }\n}\n\nmodule.exports = MessageReactionAdd;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/MessageReactionAdd.js?")},"./node_modules/@citizenfx/discord.js/src/client/actions/MessageReactionRemove.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/MessageReactionRemove.js ***!
  \****************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Action = __webpack_require__(/*! ./Action */ \"./node_modules/@citizenfx/discord.js/src/client/actions/Action.js\");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\n\n/*\n{ user_id: 'id',\n     message_id: 'id',\n     emoji: { name: '�', id: null },\n     channel_id: 'id',\n     guild_id: 'id' }\n*/\n\nclass MessageReactionRemove extends Action {\n  handle(data) {\n    if (!data.emoji) return false;\n\n    const user = this.getUser(data);\n    if (!user) return false;\n\n    // Verify channel\n    const channel = this.getChannel(data);\n    if (!channel || !channel.isText()) return false;\n\n    // Verify message\n    const message = this.getMessage(data, channel);\n    if (!message) return false;\n\n    // Verify reaction\n    const reaction = this.getReaction(data, message, user);\n    if (!reaction) return false;\n    reaction._remove(user);\n    /**\n     * Emitted whenever a reaction is removed from a cached message.\n     * @event Client#messageReactionRemove\n     * @param {MessageReaction} messageReaction The reaction object\n     * @param {User} user The user whose emoji or reaction emoji was removed\n     */\n    this.client.emit(Events.MESSAGE_REACTION_REMOVE, reaction, user);\n\n    return { message, reaction, user };\n  }\n}\n\nmodule.exports = MessageReactionRemove;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/MessageReactionRemove.js?")},"./node_modules/@citizenfx/discord.js/src/client/actions/MessageReactionRemoveAll.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/MessageReactionRemoveAll.js ***!
  \*******************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass MessageReactionRemoveAll extends Action {\n  handle(data) {\n    // Verify channel\n    const channel = this.getChannel(data);\n    if (!channel || !channel.isText()) return false;\n\n    // Verify message\n    const message = this.getMessage(data, channel);\n    if (!message) return false;\n\n    // Copy removed reactions to emit for the event.\n    const removed = message.reactions.cache.clone();\n\n    message.reactions.cache.clear();\n    this.client.emit(Events.MESSAGE_REACTION_REMOVE_ALL, message, removed);\n\n    return { message };\n  }\n}\n\n/**\n * Emitted whenever all reactions are removed from a cached message.\n * @event Client#messageReactionRemoveAll\n * @param {Message} message The message the reactions were removed from\n * @param {Collection<string|Snowflake, MessageReaction>} reactions The cached message reactions that were removed.\n */\n\nmodule.exports = MessageReactionRemoveAll;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/MessageReactionRemoveAll.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/MessageReactionRemoveEmoji.js":
/*!*********************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/MessageReactionRemoveEmoji.js ***!
  \*********************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass MessageReactionRemoveEmoji extends Action {\n  handle(data) {\n    const channel = this.getChannel(data);\n    if (!channel || !channel.isText()) return false;\n\n    const message = this.getMessage(data, channel);\n    if (!message) return false;\n\n    const reaction = this.getReaction(data, message);\n    if (!reaction) return false;\n    if (!message.partial) message.reactions.cache.delete(reaction.emoji.id ?? reaction.emoji.name);\n\n    /**\n     * Emitted when a bot removes an emoji reaction from a cached message.\n     * @event Client#messageReactionRemoveEmoji\n     * @param {MessageReaction} reaction The reaction that was removed\n     */\n    this.client.emit(Events.MESSAGE_REACTION_REMOVE_EMOJI, reaction);\n    return { reaction };\n  }\n}\n\nmodule.exports = MessageReactionRemoveEmoji;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/MessageReactionRemoveEmoji.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/MessageUpdate.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/MessageUpdate.js ***!
  \********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\n\nclass MessageUpdateAction extends Action {\n  handle(data) {\n    const channel = this.getChannel(data);\n    if (channel) {\n      if (!channel.isText()) return {};\n\n      const { id, channel_id, guild_id, author, timestamp, type } = data;\n      const message = this.getMessage({ id, channel_id, guild_id, author, timestamp, type }, channel);\n      if (message) {\n        const old = message._update(data);\n        return {\n          old,\n          updated: message,\n        };\n      }\n    }\n\n    return {};\n  }\n}\n\nmodule.exports = MessageUpdateAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/MessageUpdate.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/PresenceUpdate.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/PresenceUpdate.js ***!
  \*********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass PresenceUpdateAction extends Action {\n  handle(data) {\n    let user = this.client.users.cache.get(data.user.id);\n    if (!user && data.user?.username) user = this.client.users._add(data.user);\n    if (!user) return;\n\n    if (data.user?.username) {\n      if (!user._equals(data.user)) this.client.actions.UserUpdate.handle(data.user);\n    }\n\n    const guild = this.client.guilds.cache.get(data.guild_id);\n    if (!guild) return;\n\n    const oldPresence = guild.presences.cache.get(user.id)?._clone() ?? null;\n    let member = guild.members.cache.get(user.id);\n    if (!member && data.status !== \'offline\') {\n      member = guild.members._add({\n        user,\n        deaf: false,\n        mute: false,\n      });\n      this.client.emit(Events.GUILD_MEMBER_AVAILABLE, member);\n    }\n    const newPresence = guild.presences._add(Object.assign(data, { guild }));\n    if (this.client.listenerCount(Events.PRESENCE_UPDATE) && !newPresence.equals(oldPresence)) {\n      /**\n       * Emitted whenever a guild member\'s presence (e.g. status, activity) is changed.\n       * @event Client#presenceUpdate\n       * @param {?Presence} oldPresence The presence before the update, if one at all\n       * @param {Presence} newPresence The presence after the update\n       */\n      this.client.emit(Events.PRESENCE_UPDATE, oldPresence, newPresence);\n    }\n  }\n}\n\nmodule.exports = PresenceUpdateAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/PresenceUpdate.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/StageInstanceCreate.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/StageInstanceCreate.js ***!
  \**************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass StageInstanceCreateAction extends Action {\n  handle(data) {\n    const client = this.client;\n    const channel = this.getChannel(data);\n\n    if (channel) {\n      const stageInstance = channel.guild.stageInstances._add(data);\n\n      /**\n       * Emitted whenever a stage instance is created.\n       * @event Client#stageInstanceCreate\n       * @param {StageInstance} stageInstance The created stage instance\n       */\n      client.emit(Events.STAGE_INSTANCE_CREATE, stageInstance);\n\n      return { stageInstance };\n    }\n\n    return {};\n  }\n}\n\nmodule.exports = StageInstanceCreateAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/StageInstanceCreate.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/StageInstanceDelete.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/StageInstanceDelete.js ***!
  \**************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { deletedStageInstances } = __webpack_require__(/*! ../../structures/StageInstance */ "./node_modules/@citizenfx/discord.js/src/structures/StageInstance.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass StageInstanceDeleteAction extends Action {\n  handle(data) {\n    const client = this.client;\n    const channel = this.getChannel(data);\n\n    if (channel) {\n      const stageInstance = channel.guild.stageInstances._add(data);\n      if (stageInstance) {\n        channel.guild.stageInstances.cache.delete(stageInstance.id);\n        deletedStageInstances.add(stageInstance);\n\n        /**\n         * Emitted whenever a stage instance is deleted.\n         * @event Client#stageInstanceDelete\n         * @param {StageInstance} stageInstance The deleted stage instance\n         */\n        client.emit(Events.STAGE_INSTANCE_DELETE, stageInstance);\n\n        return { stageInstance };\n      }\n    }\n\n    return {};\n  }\n}\n\nmodule.exports = StageInstanceDeleteAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/StageInstanceDelete.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/StageInstanceUpdate.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/StageInstanceUpdate.js ***!
  \**************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass StageInstanceUpdateAction extends Action {\n  handle(data) {\n    const client = this.client;\n    const channel = this.getChannel(data);\n\n    if (channel) {\n      const oldStageInstance = channel.guild.stageInstances.cache.get(data.id)?._clone() ?? null;\n      const newStageInstance = channel.guild.stageInstances._add(data);\n\n      /**\n       * Emitted whenever a stage instance gets updated - e.g. change in topic or privacy level\n       * @event Client#stageInstanceUpdate\n       * @param {?StageInstance} oldStageInstance The stage instance before the update\n       * @param {StageInstance} newStageInstance The stage instance after the update\n       */\n      client.emit(Events.STAGE_INSTANCE_UPDATE, oldStageInstance, newStageInstance);\n\n      return { oldStageInstance, newStageInstance };\n    }\n\n    return {};\n  }\n}\n\nmodule.exports = StageInstanceUpdateAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/StageInstanceUpdate.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/ThreadCreate.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/ThreadCreate.js ***!
  \*******************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass ThreadCreateAction extends Action {\n  handle(data) {\n    const client = this.client;\n    const existing = client.channels.cache.has(data.id);\n    const thread = client.channels._add(data);\n    if (!existing && thread) {\n      /**\n       * Emitted whenever a thread is created or when the client user is added to a thread.\n       * @event Client#threadCreate\n       * @param {ThreadChannel} thread The thread that was created\n       */\n      client.emit(Events.THREAD_CREATE, thread);\n    }\n    return { thread };\n  }\n}\n\nmodule.exports = ThreadCreateAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/ThreadCreate.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/ThreadDelete.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/ThreadDelete.js ***!
  \*******************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { deletedChannels } = __webpack_require__(/*! ../../structures/Channel */ "./node_modules/@citizenfx/discord.js/src/structures/Channel.js");\nconst { deletedMessages } = __webpack_require__(/*! ../../structures/Message */ "./node_modules/@citizenfx/discord.js/src/structures/Message.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass ThreadDeleteAction extends Action {\n  handle(data) {\n    const client = this.client;\n    const thread = client.channels.cache.get(data.id);\n\n    if (thread) {\n      client.channels._remove(thread.id);\n      deletedChannels.add(thread);\n      for (const message of thread.messages.cache.values()) {\n        deletedMessages.add(message);\n      }\n\n      /**\n       * Emitted whenever a thread is deleted.\n       * @event Client#threadDelete\n       * @param {ThreadChannel} thread The thread that was deleted\n       */\n      client.emit(Events.THREAD_DELETE, thread);\n    }\n\n    return { thread };\n  }\n}\n\nmodule.exports = ThreadDeleteAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/ThreadDelete.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/ThreadListSync.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/ThreadListSync.js ***!
  \*********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ "./node_modules/@discordjs/collection/dist/index.js");\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass ThreadListSyncAction extends Action {\n  handle(data) {\n    const client = this.client;\n\n    const guild = client.guilds.cache.get(data.guild_id);\n    if (!guild) return {};\n\n    if (data.channel_ids) {\n      for (const id of data.channel_ids) {\n        const channel = client.channels.resolve(id);\n        if (channel) this.removeStale(channel);\n      }\n    } else {\n      for (const channel of guild.channels.cache.values()) {\n        this.removeStale(channel);\n      }\n    }\n\n    const syncedThreads = data.threads.reduce((coll, rawThread) => {\n      const thread = client.channels._add(rawThread);\n      return coll.set(thread.id, thread);\n    }, new Collection());\n\n    for (const rawMember of Object.values(data.members)) {\n      // Discord sends the thread id as id in this object\n      const thread = client.channels.cache.get(rawMember.id);\n      if (thread) {\n        thread.members._add(rawMember);\n      }\n    }\n\n    /**\n     * Emitted whenever the client user gains access to a text or news channel that contains threads\n     * @event Client#threadListSync\n     * @param {Collection<Snowflake, ThreadChannel>} threads The threads that were synced\n     */\n    client.emit(Events.THREAD_LIST_SYNC, syncedThreads);\n\n    return {\n      syncedThreads,\n    };\n  }\n\n  removeStale(channel) {\n    channel.threads?.cache.forEach(thread => {\n      if (!thread.archived) {\n        this.client.channels._remove(thread.id);\n      }\n    });\n  }\n}\n\nmodule.exports = ThreadListSyncAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/ThreadListSync.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/ThreadMemberUpdate.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/ThreadMemberUpdate.js ***!
  \*************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass ThreadMemberUpdateAction extends Action {\n  handle(data) {\n    const client = this.client;\n    // Discord sends the thread id as id in this object\n    const thread = client.channels.cache.get(data.id);\n    if (thread) {\n      const member = thread.members.cache.get(data.user_id);\n      if (!member) {\n        const newMember = thread.members._add(data);\n        return { newMember };\n      }\n      const old = member._update(data);\n      /**\n       * Emitted whenever the client user\'s thread member is updated.\n       * @event Client#threadMemberUpdate\n       * @param {ThreadMember} oldMember The member before the update\n       * @param {ThreadMember} newMember The member after the update\n       */\n      client.emit(Events.THREAD_MEMBER_UPDATE, old, member);\n    }\n    return {};\n  }\n}\n\nmodule.exports = ThreadMemberUpdateAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/ThreadMemberUpdate.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/ThreadMembersUpdate.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/ThreadMembersUpdate.js ***!
  \**************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass ThreadMembersUpdateAction extends Action {\n  handle(data) {\n    const client = this.client;\n    const thread = client.channels.cache.get(data.id);\n    if (thread) {\n      const old = thread.members.cache.clone();\n      thread.memberCount = data.member_count;\n\n      data.added_members?.forEach(rawMember => {\n        thread.members._add(rawMember);\n      });\n\n      data.removed_member_ids?.forEach(memberId => {\n        thread.members.cache.delete(memberId);\n      });\n\n      /**\n       * Emitted whenever members are added or removed from a thread. Requires `GUILD_MEMBERS` privileged intent\n       * @event Client#threadMembersUpdate\n       * @param {Collection<Snowflake, ThreadMember>} oldMembers The members before the update\n       * @param {Collection<Snowflake, ThreadMember>} newMembers The members after the update\n       */\n      client.emit(Events.THREAD_MEMBERS_UPDATE, old, thread.members.cache);\n    }\n    return {};\n  }\n}\n\nmodule.exports = ThreadMembersUpdateAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/ThreadMembersUpdate.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/TypingStart.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/TypingStart.js ***!
  \******************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst Typing = __webpack_require__(/*! ../../structures/Typing */ "./node_modules/@citizenfx/discord.js/src/structures/Typing.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass TypingStart extends Action {\n  handle(data) {\n    const channel = this.getChannel(data);\n    if (!channel) return;\n\n    if (!channel.isText()) {\n      this.client.emit(Events.WARN, `Discord sent a typing packet to a ${channel.type} channel ${channel.id}`);\n      return;\n    }\n\n    const user = this.getUserFromMember(data);\n    if (user) {\n      /**\n       * Emitted whenever a user starts typing in a channel.\n       * @event Client#typingStart\n       * @param {Typing} typing The typing state\n       */\n      this.client.emit(Events.TYPING_START, new Typing(channel, user, data));\n    }\n  }\n}\n\nmodule.exports = TypingStart;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/TypingStart.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/UserUpdate.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/UserUpdate.js ***!
  \*****************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass UserUpdateAction extends Action {\n  handle(data) {\n    const client = this.client;\n\n    const newUser = data.id === client.user.id ? client.user : client.users.cache.get(data.id);\n    const oldUser = newUser._update(data);\n\n    if (!oldUser.equals(newUser)) {\n      /**\n       * Emitted whenever a user\'s details (e.g. username) are changed.\n       * Triggered by the Discord gateway events USER_UPDATE, GUILD_MEMBER_UPDATE, and PRESENCE_UPDATE.\n       * @event Client#userUpdate\n       * @param {User} oldUser The user before the update\n       * @param {User} newUser The user after the update\n       */\n      client.emit(Events.USER_UPDATE, oldUser, newUser);\n      return {\n        old: oldUser,\n        updated: newUser,\n      };\n    }\n\n    return {\n      old: null,\n      updated: null,\n    };\n  }\n}\n\nmodule.exports = UserUpdateAction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/UserUpdate.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/VoiceStateUpdate.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/VoiceStateUpdate.js ***!
  \***********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst VoiceState = __webpack_require__(/*! ../../structures/VoiceState */ "./node_modules/@citizenfx/discord.js/src/structures/VoiceState.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass VoiceStateUpdate extends Action {\n  handle(data) {\n    const client = this.client;\n    const guild = client.guilds.cache.get(data.guild_id);\n    if (guild) {\n      // Update the state\n      const oldState =\n        guild.voiceStates.cache.get(data.user_id)?._clone() ?? new VoiceState(guild, { user_id: data.user_id });\n\n      const newState = guild.voiceStates._add(data);\n\n      // Get the member\n      let member = guild.members.cache.get(data.user_id);\n      if (member && data.member) {\n        member._patch(data.member);\n      } else if (data.member?.user && data.member.joined_at) {\n        member = guild.members._add(data.member);\n      }\n\n      // Emit event\n      if (member?.user.id === client.user.id) {\n        client.emit(\'debug\', `[VOICE] received voice state update: ${JSON.stringify(data)}`);\n        client.voice.onVoiceStateUpdate(data);\n      }\n\n      /**\n       * Emitted whenever a member changes voice state - e.g. joins/leaves a channel, mutes/unmutes.\n       * @event Client#voiceStateUpdate\n       * @param {VoiceState} oldState The voice state before the update\n       * @param {VoiceState} newState The voice state after the update\n       */\n      client.emit(Events.VOICE_STATE_UPDATE, oldState, newState);\n    }\n  }\n}\n\nmodule.exports = VoiceStateUpdate;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/VoiceStateUpdate.js?')},"./node_modules/@citizenfx/discord.js/src/client/actions/WebhooksUpdate.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/actions/WebhooksUpdate.js ***!
  \*********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Action = __webpack_require__(/*! ./Action */ "./node_modules/@citizenfx/discord.js/src/client/actions/Action.js");\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass WebhooksUpdate extends Action {\n  handle(data) {\n    const client = this.client;\n    const channel = client.channels.cache.get(data.channel_id);\n    /**\n     * Emitted whenever a channel has its webhooks changed.\n     * @event Client#webhookUpdate\n     * @param {TextChannel|NewsChannel} channel The channel that had a webhook update\n     */\n    if (channel) client.emit(Events.WEBHOOKS_UPDATE, channel);\n  }\n}\n\nmodule.exports = WebhooksUpdate;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/actions/WebhooksUpdate.js?')},"./node_modules/@citizenfx/discord.js/src/client/voice/ClientVoiceManager.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/voice/ClientVoiceManager.js ***!
  \***********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Events } = __webpack_require__(/*! ../../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\n\n/**\n * Manages voice connections for the client\n */\nclass ClientVoiceManager {\n  constructor(client) {\n    /**\n     * The client that instantiated this voice manager\n     * @type {Client}\n     * @readonly\n     * @name ClientVoiceManager#client\n     */\n    Object.defineProperty(this, 'client', { value: client });\n\n    /**\n     * Maps guild ids to voice adapters created for use with @discordjs/voice.\n     * @type {Map<Snowflake, Object>}\n     */\n    this.adapters = new Map();\n\n    client.on(Events.SHARD_DISCONNECT, (_, shardId) => {\n      for (const [guildId, adapter] of this.adapters.entries()) {\n        if (client.guilds.cache.get(guildId)?.shardId === shardId) {\n          adapter.destroy();\n        }\n      }\n    });\n  }\n\n  onVoiceServer(payload) {\n    this.adapters.get(payload.guild_id)?.onVoiceServerUpdate(payload);\n  }\n\n  onVoiceStateUpdate(payload) {\n    if (payload.guild_id && payload.session_id && payload.user_id === this.client.user?.id) {\n      this.adapters.get(payload.guild_id)?.onVoiceStateUpdate(payload);\n    }\n  }\n}\n\nmodule.exports = ClientVoiceManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/voice/ClientVoiceManager.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/WebSocketManager.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/WebSocketManager.js ***!
  \*************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst EventEmitter = __webpack_require__(/*! node:events */ \"node:events\");\nconst { setImmediate } = __webpack_require__(/*! node:timers */ \"node:timers\");\nconst { setTimeout: sleep } = __webpack_require__(/*! node:timers/promises */ \"node:timers/promises\");\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst { RPCErrorCodes } = __webpack_require__(/*! discord-api-types/v9 */ \"./node_modules/discord-api-types/v9.js\");\nconst WebSocketShard = __webpack_require__(/*! ./WebSocketShard */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/WebSocketShard.js\");\nconst PacketHandlers = __webpack_require__(/*! ./handlers */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/index.js\");\nconst { Error } = __webpack_require__(/*! ../../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst { Events, ShardEvents, Status, WSCodes, WSEvents } = __webpack_require__(/*! ../../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\n\nconst BeforeReadyWhitelist = [\n  WSEvents.READY,\n  WSEvents.RESUMED,\n  WSEvents.GUILD_CREATE,\n  WSEvents.GUILD_DELETE,\n  WSEvents.GUILD_MEMBERS_CHUNK,\n  WSEvents.GUILD_MEMBER_ADD,\n  WSEvents.GUILD_MEMBER_REMOVE,\n];\n\nconst UNRECOVERABLE_CLOSE_CODES = Object.keys(WSCodes).slice(1).map(Number);\nconst UNRESUMABLE_CLOSE_CODES = [\n  RPCErrorCodes.UnknownError,\n  RPCErrorCodes.InvalidPermissions,\n  RPCErrorCodes.InvalidClientId,\n];\n\n/**\n * The WebSocket manager for this client.\n * <info>This class forwards raw dispatch events,\n * read more about it here {@link https://discord.com/developers/docs/topics/gateway}</info>\n * @extends EventEmitter\n */\nclass WebSocketManager extends EventEmitter {\n  constructor(client) {\n    super();\n\n    /**\n     * The client that instantiated this WebSocketManager\n     * @type {Client}\n     * @readonly\n     * @name WebSocketManager#client\n     */\n    Object.defineProperty(this, 'client', { value: client });\n\n    /**\n     * The gateway this manager uses\n     * @type {?string}\n     */\n    this.gateway = null;\n\n    /**\n     * The amount of shards this manager handles\n     * @private\n     * @type {number}\n     */\n    this.totalShards = this.client.options.shards.length;\n\n    /**\n     * A collection of all shards this manager handles\n     * @type {Collection<number, WebSocketShard>}\n     */\n    this.shards = new Collection();\n\n    /**\n     * An array of shards to be connected or that need to reconnect\n     * @type {Set<WebSocketShard>}\n     * @private\n     * @name WebSocketManager#shardQueue\n     */\n    Object.defineProperty(this, 'shardQueue', { value: new Set(), writable: true });\n\n    /**\n     * An array of queued events before this WebSocketManager became ready\n     * @type {Object[]}\n     * @private\n     * @name WebSocketManager#packetQueue\n     */\n    Object.defineProperty(this, 'packetQueue', { value: [] });\n\n    /**\n     * The current status of this WebSocketManager\n     * @type {Status}\n     */\n    this.status = Status.IDLE;\n\n    /**\n     * If this manager was destroyed. It will prevent shards from reconnecting\n     * @type {boolean}\n     * @private\n     */\n    this.destroyed = false;\n\n    /**\n     * If this manager is currently reconnecting one or multiple shards\n     * @type {boolean}\n     * @private\n     */\n    this.reconnecting = false;\n  }\n\n  /**\n   * The average ping of all WebSocketShards\n   * @type {number}\n   * @readonly\n   */\n  get ping() {\n    const sum = this.shards.reduce((a, b) => a + b.ping, 0);\n    return sum / this.shards.size;\n  }\n\n  /**\n   * Emits a debug message.\n   * @param {string} message The debug message\n   * @param {?WebSocketShard} [shard] The shard that emitted this message, if any\n   * @private\n   */\n  debug(message, shard) {\n    this.client.emit(Events.DEBUG, `[WS => ${shard ? `Shard ${shard.id}` : 'Manager'}] ${message}`);\n  }\n\n  /**\n   * Connects this manager to the gateway.\n   * @private\n   */\n  async connect() {\n    const invalidToken = new Error(WSCodes[4004]);\n    const {\n      url: gatewayURL,\n      shards: recommendedShards,\n      session_start_limit: sessionStartLimit,\n    } = await this.client.api.gateway.bot.get().catch(error => {\n      throw error.httpStatus === 401 ? invalidToken : error;\n    });\n\n    const { total, remaining } = sessionStartLimit;\n\n    this.debug(`Fetched Gateway Information\n    URL: ${gatewayURL}\n    Recommended Shards: ${recommendedShards}`);\n\n    this.debug(`Session Limit Information\n    Total: ${total}\n    Remaining: ${remaining}`);\n\n    this.gateway = `${gatewayURL}/`;\n\n    let { shards } = this.client.options;\n\n    if (shards === 'auto') {\n      this.debug(`Using the recommended shard count provided by Discord: ${recommendedShards}`);\n      this.totalShards = this.client.options.shardCount = recommendedShards;\n      shards = this.client.options.shards = Array.from({ length: recommendedShards }, (_, i) => i);\n    }\n\n    this.totalShards = shards.length;\n    this.debug(`Spawning shards: ${shards.join(', ')}`);\n    this.shardQueue = new Set(shards.map(id => new WebSocketShard(this, id)));\n\n    return this.createShards();\n  }\n\n  /**\n   * Handles the creation of a shard.\n   * @returns {Promise<boolean>}\n   * @private\n   */\n  async createShards() {\n    // If we don't have any shards to handle, return\n    if (!this.shardQueue.size) return false;\n\n    const [shard] = this.shardQueue;\n\n    this.shardQueue.delete(shard);\n\n    if (!shard.eventsAttached) {\n      shard.on(ShardEvents.ALL_READY, unavailableGuilds => {\n        /**\n         * Emitted when a shard turns ready.\n         * @event Client#shardReady\n         * @param {number} id The shard id that turned ready\n         * @param {?Set<Snowflake>} unavailableGuilds Set of unavailable guild ids, if any\n         */\n        this.client.emit(Events.SHARD_READY, shard.id, unavailableGuilds);\n\n        if (!this.shardQueue.size) this.reconnecting = false;\n        this.checkShardsReady();\n      });\n\n      shard.on(ShardEvents.CLOSE, event => {\n        if (event.code === 1_000 ? this.destroyed : UNRECOVERABLE_CLOSE_CODES.includes(event.code)) {\n          /**\n           * Emitted when a shard's WebSocket disconnects and will no longer reconnect.\n           * @event Client#shardDisconnect\n           * @param {CloseEvent} event The WebSocket close event\n           * @param {number} id The shard id that disconnected\n           */\n          this.client.emit(Events.SHARD_DISCONNECT, event, shard.id);\n          this.debug(WSCodes[event.code], shard);\n          return;\n        }\n\n        if (UNRESUMABLE_CLOSE_CODES.includes(event.code)) {\n          // These event codes cannot be resumed\n          shard.sessionId = null;\n        }\n\n        /**\n         * Emitted when a shard is attempting to reconnect or re-identify.\n         * @event Client#shardReconnecting\n         * @param {number} id The shard id that is attempting to reconnect\n         */\n        this.client.emit(Events.SHARD_RECONNECTING, shard.id);\n\n        this.shardQueue.add(shard);\n\n        if (shard.sessionId) {\n          this.debug(`Session id is present, attempting an immediate reconnect...`, shard);\n          this.reconnect();\n        } else {\n          shard.destroy({ reset: true, emit: false, log: false });\n          this.reconnect();\n        }\n      });\n\n      shard.on(ShardEvents.INVALID_SESSION, () => {\n        this.client.emit(Events.SHARD_RECONNECTING, shard.id);\n      });\n\n      shard.on(ShardEvents.DESTROYED, () => {\n        this.debug('Shard was destroyed but no WebSocket connection was present! Reconnecting...', shard);\n\n        this.client.emit(Events.SHARD_RECONNECTING, shard.id);\n\n        this.shardQueue.add(shard);\n        this.reconnect();\n      });\n\n      shard.eventsAttached = true;\n    }\n\n    this.shards.set(shard.id, shard);\n\n    try {\n      await shard.connect();\n    } catch (error) {\n      if (error?.code && UNRECOVERABLE_CLOSE_CODES.includes(error.code)) {\n        throw new Error(WSCodes[error.code]);\n        // Undefined if session is invalid, error event for regular closes\n      } else if (!error || error.code) {\n        this.debug('Failed to connect to the gateway, requeueing...', shard);\n        this.shardQueue.add(shard);\n      } else {\n        throw error;\n      }\n    }\n    // If we have more shards, add a 5s delay\n    if (this.shardQueue.size) {\n      this.debug(`Shard Queue Size: ${this.shardQueue.size}; continuing in 5 seconds...`);\n      await sleep(5_000);\n      return this.createShards();\n    }\n\n    return true;\n  }\n\n  /**\n   * Handles reconnects for this manager.\n   * @private\n   * @returns {Promise<boolean>}\n   */\n  async reconnect() {\n    if (this.reconnecting || this.status !== Status.READY) return false;\n    this.reconnecting = true;\n    try {\n      await this.createShards();\n    } catch (error) {\n      this.debug(`Couldn't reconnect or fetch information about the gateway. ${error}`);\n      if (error.httpStatus !== 401) {\n        this.debug(`Possible network error occurred. Retrying in 5s...`);\n        await sleep(5_000);\n        this.reconnecting = false;\n        return this.reconnect();\n      }\n      // If we get an error at this point, it means we cannot reconnect anymore\n      if (this.client.listenerCount(Events.INVALIDATED)) {\n        /**\n         * Emitted when the client's session becomes invalidated.\n         * You are expected to handle closing the process gracefully and preventing a boot loop\n         * if you are listening to this event.\n         * @event Client#invalidated\n         */\n        this.client.emit(Events.INVALIDATED);\n        // Destroy just the shards. This means you have to handle the cleanup yourself\n        this.destroy();\n      } else {\n        this.client.destroy();\n      }\n    } finally {\n      this.reconnecting = false;\n    }\n    return true;\n  }\n\n  /**\n   * Broadcasts a packet to every shard this manager handles.\n   * @param {Object} packet The packet to send\n   * @private\n   */\n  broadcast(packet) {\n    for (const shard of this.shards.values()) shard.send(packet);\n  }\n\n  /**\n   * Destroys this manager and all its shards.\n   * @private\n   */\n  destroy() {\n    if (this.destroyed) return;\n    this.debug(`Manager was destroyed. Called by:\\n${new Error('MANAGER_DESTROYED').stack}`);\n    this.destroyed = true;\n    this.shardQueue.clear();\n    for (const shard of this.shards.values()) shard.destroy({ closeCode: 1_000, reset: true, emit: false, log: false });\n  }\n\n  /**\n   * Processes a packet and queues it if this WebSocketManager is not ready.\n   * @param {Object} [packet] The packet to be handled\n   * @param {WebSocketShard} [shard] The shard that will handle this packet\n   * @returns {boolean}\n   * @private\n   */\n  handlePacket(packet, shard) {\n    if (packet && this.status !== Status.READY) {\n      if (!BeforeReadyWhitelist.includes(packet.t)) {\n        this.packetQueue.push({ packet, shard });\n        return false;\n      }\n    }\n\n    if (this.packetQueue.length) {\n      const item = this.packetQueue.shift();\n      setImmediate(() => {\n        this.handlePacket(item.packet, item.shard);\n      }).unref();\n    }\n\n    if (packet && PacketHandlers[packet.t]) {\n      PacketHandlers[packet.t](this.client, packet, shard);\n    }\n\n    return true;\n  }\n\n  /**\n   * Checks whether the client is ready to be marked as ready.\n   * @private\n   */\n  checkShardsReady() {\n    if (this.status === Status.READY) return;\n    if (this.shards.size !== this.totalShards || this.shards.some(s => s.status !== Status.READY)) {\n      return;\n    }\n\n    this.triggerClientReady();\n  }\n\n  /**\n   * Causes the client to be marked as ready and emits the ready event.\n   * @private\n   */\n  triggerClientReady() {\n    this.status = Status.READY;\n\n    this.client.readyAt = new Date();\n\n    /**\n     * Emitted when the client becomes ready to start working.\n     * @event Client#ready\n     * @param {Client} client The client\n     */\n    this.client.emit(Events.CLIENT_READY, this.client);\n\n    this.handlePacket();\n  }\n}\n\nmodule.exports = WebSocketManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/WebSocketManager.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/WebSocketShard.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/WebSocketShard.js ***!
  \***********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst EventEmitter = __webpack_require__(/*! node:events */ \"node:events\");\nconst { setTimeout, setInterval, clearTimeout, clearInterval } = __webpack_require__(/*! node:timers */ \"node:timers\");\nconst WebSocket = __webpack_require__(/*! ../../WebSocket */ \"./node_modules/@citizenfx/discord.js/src/WebSocket.js\");\nconst { Status, Events, ShardEvents, Opcodes, WSEvents } = __webpack_require__(/*! ../../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst Intents = __webpack_require__(/*! ../../util/Intents */ \"./node_modules/@citizenfx/discord.js/src/util/Intents.js\");\n\nconst STATUS_KEYS = Object.keys(Status);\nconst CONNECTION_STATE = Object.keys(WebSocket.WebSocket);\n\nlet zlib;\n\ntry {\n  zlib = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'zlib-sync'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\n} catch {} // eslint-disable-line no-empty\n\n/**\n * Represents a Shard's WebSocket connection\n */\nclass WebSocketShard extends EventEmitter {\n  constructor(manager, id) {\n    super();\n\n    /**\n     * The WebSocketManager of the shard\n     * @type {WebSocketManager}\n     */\n    this.manager = manager;\n\n    /**\n     * The shard's id\n     * @type {number}\n     */\n    this.id = id;\n\n    /**\n     * The current status of the shard\n     * @type {Status}\n     */\n    this.status = Status.IDLE;\n\n    /**\n     * The current sequence of the shard\n     * @type {number}\n     * @private\n     */\n    this.sequence = -1;\n\n    /**\n     * The sequence of the shard after close\n     * @type {number}\n     * @private\n     */\n    this.closeSequence = 0;\n\n    /**\n     * The current session id of the shard\n     * @type {?string}\n     * @private\n     */\n    this.sessionId = null;\n\n    /**\n     * The previous heartbeat ping of the shard\n     * @type {number}\n     */\n    this.ping = -1;\n\n    /**\n     * The last time a ping was sent (a timestamp)\n     * @type {number}\n     * @private\n     */\n    this.lastPingTimestamp = -1;\n\n    /**\n     * If we received a heartbeat ack back. Used to identify zombie connections\n     * @type {boolean}\n     * @private\n     */\n    this.lastHeartbeatAcked = true;\n\n    /**\n     * Contains the rate limit queue and metadata\n     * @name WebSocketShard#ratelimit\n     * @type {Object}\n     * @private\n     */\n    Object.defineProperty(this, 'ratelimit', {\n      value: {\n        queue: [],\n        total: 120,\n        remaining: 120,\n        time: 60e3,\n        timer: null,\n      },\n    });\n\n    /**\n     * The WebSocket connection for the current shard\n     * @name WebSocketShard#connection\n     * @type {?WebSocket}\n     * @private\n     */\n    Object.defineProperty(this, 'connection', { value: null, writable: true });\n\n    /**\n     * @external Inflate\n     * @see {@link https://www.npmjs.com/package/zlib-sync}\n     */\n\n    /**\n     * The compression to use\n     * @name WebSocketShard#inflate\n     * @type {?Inflate}\n     * @private\n     */\n    Object.defineProperty(this, 'inflate', { value: null, writable: true });\n\n    /**\n     * The HELLO timeout\n     * @name WebSocketShard#helloTimeout\n     * @type {?NodeJS.Timeout}\n     * @private\n     */\n    Object.defineProperty(this, 'helloTimeout', { value: null, writable: true });\n\n    /**\n     * If the manager attached its event handlers on the shard\n     * @name WebSocketShard#eventsAttached\n     * @type {boolean}\n     * @private\n     */\n    Object.defineProperty(this, 'eventsAttached', { value: false, writable: true });\n\n    /**\n     * A set of guild ids this shard expects to receive\n     * @name WebSocketShard#expectedGuilds\n     * @type {?Set<string>}\n     * @private\n     */\n    Object.defineProperty(this, 'expectedGuilds', { value: null, writable: true });\n\n    /**\n     * The ready timeout\n     * @name WebSocketShard#readyTimeout\n     * @type {?NodeJS.Timeout}\n     * @private\n     */\n    Object.defineProperty(this, 'readyTimeout', { value: null, writable: true });\n\n    /**\n     * Time when the WebSocket connection was opened\n     * @name WebSocketShard#connectedAt\n     * @type {number}\n     * @private\n     */\n    Object.defineProperty(this, 'connectedAt', { value: 0, writable: true });\n  }\n\n  /**\n   * Emits a debug event.\n   * @param {string} message The debug message\n   * @private\n   */\n  debug(message) {\n    this.manager.debug(message, this);\n  }\n\n  /**\n   * Connects the shard to the gateway.\n   * @private\n   * @returns {Promise<void>} A promise that will resolve if the shard turns ready successfully,\n   * or reject if we couldn't connect\n   */\n  connect() {\n    const { gateway, client } = this.manager;\n\n    if (this.connection?.readyState === WebSocket.OPEN && this.status === Status.READY) {\n      return Promise.resolve();\n    }\n\n    return new Promise((resolve, reject) => {\n      const cleanup = () => {\n        this.removeListener(ShardEvents.CLOSE, onClose);\n        this.removeListener(ShardEvents.READY, onReady);\n        this.removeListener(ShardEvents.RESUMED, onResumed);\n        this.removeListener(ShardEvents.INVALID_SESSION, onInvalidOrDestroyed);\n        this.removeListener(ShardEvents.DESTROYED, onInvalidOrDestroyed);\n      };\n\n      const onReady = () => {\n        cleanup();\n        resolve();\n      };\n\n      const onResumed = () => {\n        cleanup();\n        resolve();\n      };\n\n      const onClose = event => {\n        cleanup();\n        reject(event);\n      };\n\n      const onInvalidOrDestroyed = () => {\n        cleanup();\n        // eslint-disable-next-line prefer-promise-reject-errors\n        reject();\n      };\n\n      this.once(ShardEvents.READY, onReady);\n      this.once(ShardEvents.RESUMED, onResumed);\n      this.once(ShardEvents.CLOSE, onClose);\n      this.once(ShardEvents.INVALID_SESSION, onInvalidOrDestroyed);\n      this.once(ShardEvents.DESTROYED, onInvalidOrDestroyed);\n\n      if (this.connection?.readyState === WebSocket.OPEN) {\n        this.debug('An open connection was found, attempting an immediate identify.');\n        this.identify();\n        return;\n      }\n\n      if (this.connection) {\n        this.debug(`A connection object was found. Cleaning up before continuing.\n    State: ${CONNECTION_STATE[this.connection.readyState]}`);\n        this.destroy({ emit: false });\n      }\n\n      const wsQuery = { v: client.options.ws.version };\n\n      if (zlib) {\n        this.inflate = new zlib.Inflate({\n          chunkSize: 65535,\n          flush: zlib.Z_SYNC_FLUSH,\n          to: WebSocket.encoding === 'json' ? 'string' : '',\n        });\n        wsQuery.compress = 'zlib-stream';\n      }\n\n      this.debug(\n        `[CONNECT]\n    Gateway    : ${gateway}\n    Version    : ${client.options.ws.version}\n    Encoding   : ${WebSocket.encoding}\n    Compression: ${zlib ? 'zlib-stream' : 'none'}`,\n      );\n\n      this.status = this.status === Status.DISCONNECTED ? Status.RECONNECTING : Status.CONNECTING;\n      this.setHelloTimeout();\n\n      this.connectedAt = Date.now();\n\n      const ws = (this.connection = WebSocket.create(gateway, wsQuery));\n      ws.onopen = this.onOpen.bind(this);\n      ws.onmessage = this.onMessage.bind(this);\n      ws.onerror = this.onError.bind(this);\n      ws.onclose = this.onClose.bind(this);\n    });\n  }\n\n  /**\n   * Called whenever a connection is opened to the gateway.\n   * @private\n   */\n  onOpen() {\n    this.debug(`[CONNECTED] Took ${Date.now() - this.connectedAt}ms`);\n    this.status = Status.NEARLY;\n  }\n\n  /**\n   * Called whenever a message is received.\n   * @param {MessageEvent} event Event received\n   * @private\n   */\n  onMessage({ data }) {\n    let raw;\n    if (data instanceof ArrayBuffer) data = new Uint8Array(data);\n    if (zlib) {\n      const l = data.length;\n      const flush =\n        l >= 4 && data[l - 4] === 0x00 && data[l - 3] === 0x00 && data[l - 2] === 0xff && data[l - 1] === 0xff;\n\n      this.inflate.push(data, flush && zlib.Z_SYNC_FLUSH);\n      if (!flush) return;\n      raw = this.inflate.result;\n    } else {\n      raw = data;\n    }\n    let packet;\n    try {\n      packet = WebSocket.unpack(raw);\n    } catch (err) {\n      this.manager.client.emit(Events.SHARD_ERROR, err, this.id);\n      return;\n    }\n    this.manager.client.emit(Events.RAW, packet, this.id);\n    if (packet.op === Opcodes.DISPATCH) this.manager.emit(packet.t, packet.d, this.id);\n    this.onPacket(packet);\n  }\n\n  /**\n   * Called whenever an error occurs with the WebSocket.\n   * @param {ErrorEvent} event The error that occurred\n   * @private\n   */\n  onError(event) {\n    const error = event?.error ?? event;\n    if (!error) return;\n\n    /**\n     * Emitted whenever a shard's WebSocket encounters a connection error.\n     * @event Client#shardError\n     * @param {Error} error The encountered error\n     * @param {number} shardId The shard that encountered this error\n     */\n    this.manager.client.emit(Events.SHARD_ERROR, error, this.id);\n  }\n\n  /**\n   * @external CloseEvent\n   * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent}\n   */\n\n  /**\n   * @external ErrorEvent\n   * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent}\n   */\n\n  /**\n   * @external MessageEvent\n   * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent}\n   */\n\n  /**\n   * Called whenever a connection to the gateway is closed.\n   * @param {CloseEvent} event Close event that was received\n   * @private\n   */\n  onClose(event) {\n    if (this.sequence !== -1) this.closeSequence = this.sequence;\n    this.sequence = -1;\n\n    this.debug(`[CLOSE]\n    Event Code: ${event.code}\n    Clean     : ${event.wasClean}\n    Reason    : ${event.reason ?? 'No reason received'}`);\n\n    this.setHeartbeatTimer(-1);\n    this.setHelloTimeout(-1);\n    // If we still have a connection object, clean up its listeners\n    if (this.connection) this._cleanupConnection();\n\n    this.status = Status.DISCONNECTED;\n\n    /**\n     * Emitted when a shard's WebSocket closes.\n     * @private\n     * @event WebSocketShard#close\n     * @param {CloseEvent} event The received event\n     */\n    this.emit(ShardEvents.CLOSE, event);\n  }\n\n  /**\n   * Called whenever a packet is received.\n   * @param {Object} packet The received packet\n   * @private\n   */\n  onPacket(packet) {\n    if (!packet) {\n      this.debug(`Received broken packet: '${packet}'.`);\n      return;\n    }\n\n    switch (packet.t) {\n      case WSEvents.READY:\n        /**\n         * Emitted when the shard receives the READY payload and is now waiting for guilds\n         * @event WebSocketShard#ready\n         */\n        this.emit(ShardEvents.READY);\n\n        this.sessionId = packet.d.session_id;\n        this.expectedGuilds = new Set(packet.d.guilds.map(d => d.id));\n        this.status = Status.WAITING_FOR_GUILDS;\n        this.debug(`[READY] Session ${this.sessionId}.`);\n        this.lastHeartbeatAcked = true;\n        this.sendHeartbeat('ReadyHeartbeat');\n        break;\n      case WSEvents.RESUMED: {\n        /**\n         * Emitted when the shard resumes successfully\n         * @event WebSocketShard#resumed\n         */\n        this.emit(ShardEvents.RESUMED);\n\n        this.status = Status.READY;\n        const replayed = packet.s - this.closeSequence;\n        this.debug(`[RESUMED] Session ${this.sessionId} | Replayed ${replayed} events.`);\n        this.lastHeartbeatAcked = true;\n        this.sendHeartbeat('ResumeHeartbeat');\n        break;\n      }\n    }\n\n    if (packet.s > this.sequence) this.sequence = packet.s;\n\n    switch (packet.op) {\n      case Opcodes.HELLO:\n        this.setHelloTimeout(-1);\n        this.setHeartbeatTimer(packet.d.heartbeat_interval);\n        this.identify();\n        break;\n      case Opcodes.RECONNECT:\n        this.debug('[RECONNECT] Discord asked us to reconnect');\n        this.destroy({ closeCode: 4_000 });\n        break;\n      case Opcodes.INVALID_SESSION:\n        this.debug(`[INVALID SESSION] Resumable: ${packet.d}.`);\n        // If we can resume the session, do so immediately\n        if (packet.d) {\n          this.identifyResume();\n          return;\n        }\n        // Reset the sequence\n        this.sequence = -1;\n        // Reset the session id as it's invalid\n        this.sessionId = null;\n        // Set the status to reconnecting\n        this.status = Status.RECONNECTING;\n        // Finally, emit the INVALID_SESSION event\n        this.emit(ShardEvents.INVALID_SESSION);\n        break;\n      case Opcodes.HEARTBEAT_ACK:\n        this.ackHeartbeat();\n        break;\n      case Opcodes.HEARTBEAT:\n        this.sendHeartbeat('HeartbeatRequest', true);\n        break;\n      default:\n        this.manager.handlePacket(packet, this);\n        if (this.status === Status.WAITING_FOR_GUILDS && packet.t === WSEvents.GUILD_CREATE) {\n          this.expectedGuilds.delete(packet.d.id);\n          this.checkReady();\n        }\n    }\n  }\n\n  /**\n   * Checks if the shard can be marked as ready\n   * @private\n   */\n  checkReady() {\n    // Step 0. Clear the ready timeout, if it exists\n    if (this.readyTimeout) {\n      clearTimeout(this.readyTimeout);\n      this.readyTimeout = null;\n    }\n    // Step 1. If we don't have any other guilds pending, we are ready\n    if (!this.expectedGuilds.size) {\n      this.debug('Shard received all its guilds. Marking as fully ready.');\n      this.status = Status.READY;\n\n      /**\n       * Emitted when the shard is fully ready.\n       * This event is emitted if:\n       * * all guilds were received by this shard\n       * * the ready timeout expired, and some guilds are unavailable\n       * @event WebSocketShard#allReady\n       * @param {?Set<string>} unavailableGuilds Set of unavailable guilds, if any\n       */\n      this.emit(ShardEvents.ALL_READY);\n      return;\n    }\n    const hasGuildsIntent = new Intents(this.manager.client.options.intents).has(Intents.FLAGS.GUILDS);\n    // Step 2. Create a timeout that will mark the shard as ready if there are still unavailable guilds\n    // * The timeout is 15 seconds by default\n    // * This can be optionally changed in the client options via the `waitGuildTimeout` option\n    // * a timeout time of zero will skip this timeout, which potentially could cause the Client to miss guilds.\n\n    const { waitGuildTimeout } = this.manager.client.options;\n\n    this.readyTimeout = setTimeout(\n      () => {\n        this.debug(\n          `Shard ${hasGuildsIntent ? 'did' : 'will'} not receive any more guild packets` +\n            `${hasGuildsIntent ? ` in ${waitGuildTimeout} ms` : ''}.\\nUnavailable guild count: ${\n              this.expectedGuilds.size\n            }`,\n        );\n\n        this.readyTimeout = null;\n\n        this.status = Status.READY;\n\n        this.emit(ShardEvents.ALL_READY, this.expectedGuilds);\n      },\n      hasGuildsIntent ? waitGuildTimeout : 0,\n    ).unref();\n  }\n\n  /**\n   * Sets the HELLO packet timeout.\n   * @param {number} [time] If set to -1, it will clear the hello timeout\n   * @private\n   */\n  setHelloTimeout(time) {\n    if (time === -1) {\n      if (this.helloTimeout) {\n        this.debug('Clearing the HELLO timeout.');\n        clearTimeout(this.helloTimeout);\n        this.helloTimeout = null;\n      }\n      return;\n    }\n    this.debug('Setting a HELLO timeout for 20s.');\n    this.helloTimeout = setTimeout(() => {\n      this.debug('Did not receive HELLO in time. Destroying and connecting again.');\n      this.destroy({ reset: true, closeCode: 4009 });\n    }, 20_000).unref();\n  }\n\n  /**\n   * Sets the heartbeat timer for this shard.\n   * @param {number} time If -1, clears the interval, any other number sets an interval\n   * @private\n   */\n  setHeartbeatTimer(time) {\n    if (time === -1) {\n      if (this.heartbeatInterval) {\n        this.debug('Clearing the heartbeat interval.');\n        clearInterval(this.heartbeatInterval);\n        this.heartbeatInterval = null;\n      }\n      return;\n    }\n    this.debug(`Setting a heartbeat interval for ${time}ms.`);\n    // Sanity checks\n    if (this.heartbeatInterval) clearInterval(this.heartbeatInterval);\n    this.heartbeatInterval = setInterval(() => this.sendHeartbeat(), time).unref();\n  }\n\n  /**\n   * Sends a heartbeat to the WebSocket.\n   * If this shard didn't receive a heartbeat last time, it will destroy it and reconnect\n   * @param {string} [tag='HeartbeatTimer'] What caused this heartbeat to be sent\n   * @param {boolean} [ignoreHeartbeatAck] If we should send the heartbeat forcefully.\n   * @private\n   */\n  sendHeartbeat(\n    tag = 'HeartbeatTimer',\n    ignoreHeartbeatAck = [Status.WAITING_FOR_GUILDS, Status.IDENTIFYING, Status.RESUMING].includes(this.status),\n  ) {\n    if (ignoreHeartbeatAck && !this.lastHeartbeatAcked) {\n      this.debug(`[${tag}] Didn't process heartbeat ack yet but we are still connected. Sending one now.`);\n    } else if (!this.lastHeartbeatAcked) {\n      this.debug(\n        `[${tag}] Didn't receive a heartbeat ack last time, assuming zombie connection. Destroying and reconnecting.\n    Status          : ${STATUS_KEYS[this.status]}\n    Sequence        : ${this.sequence}\n    Connection State: ${this.connection ? CONNECTION_STATE[this.connection.readyState] : 'No Connection??'}`,\n      );\n\n      this.destroy({ closeCode: 4009, reset: true });\n      return;\n    }\n\n    this.debug(`[${tag}] Sending a heartbeat.`);\n    this.lastHeartbeatAcked = false;\n    this.lastPingTimestamp = Date.now();\n    this.send({ op: Opcodes.HEARTBEAT, d: this.sequence }, true);\n  }\n\n  /**\n   * Acknowledges a heartbeat.\n   * @private\n   */\n  ackHeartbeat() {\n    this.lastHeartbeatAcked = true;\n    const latency = Date.now() - this.lastPingTimestamp;\n    this.debug(`Heartbeat acknowledged, latency of ${latency}ms.`);\n    this.ping = latency;\n  }\n\n  /**\n   * Identifies the client on the connection.\n   * @private\n   * @returns {void}\n   */\n  identify() {\n    return this.sessionId ? this.identifyResume() : this.identifyNew();\n  }\n\n  /**\n   * Identifies as a new connection on the gateway.\n   * @private\n   */\n  identifyNew() {\n    const { client } = this.manager;\n    if (!client.token) {\n      this.debug('[IDENTIFY] No token available to identify a new session.');\n      return;\n    }\n\n    this.status = Status.IDENTIFYING;\n\n    // Clone the identify payload and assign the token and shard info\n    const d = {\n      ...client.options.ws,\n      intents: Intents.resolve(client.options.intents),\n      token: client.token,\n      shard: [this.id, Number(client.options.shardCount)],\n    };\n\n    this.debug(`[IDENTIFY] Shard ${this.id}/${client.options.shardCount} with intents: ${d.intents}`);\n    this.send({ op: Opcodes.IDENTIFY, d }, true);\n  }\n\n  /**\n   * Resumes a session on the gateway.\n   * @private\n   */\n  identifyResume() {\n    if (!this.sessionId) {\n      this.debug('[RESUME] No session id was present; identifying as a new session.');\n      this.identifyNew();\n      return;\n    }\n\n    this.status = Status.RESUMING;\n\n    this.debug(`[RESUME] Session ${this.sessionId}, sequence ${this.closeSequence}`);\n\n    const d = {\n      token: this.manager.client.token,\n      session_id: this.sessionId,\n      seq: this.closeSequence,\n    };\n\n    this.send({ op: Opcodes.RESUME, d }, true);\n  }\n\n  /**\n   * Adds a packet to the queue to be sent to the gateway.\n   * <warn>If you use this method, make sure you understand that you need to provide\n   * a full [Payload](https://discord.com/developers/docs/topics/gateway#commands-and-events-gateway-commands).\n   * Do not use this method if you don't know what you're doing.</warn>\n   * @param {Object} data The full packet to send\n   * @param {boolean} [important=false] If this packet should be added first in queue\n   */\n  send(data, important = false) {\n    this.ratelimit.queue[important ? 'unshift' : 'push'](data);\n    this.processQueue();\n  }\n\n  /**\n   * Sends data, bypassing the queue.\n   * @param {Object} data Packet to send\n   * @returns {void}\n   * @private\n   */\n  _send(data) {\n    if (this.connection?.readyState !== WebSocket.OPEN) {\n      this.debug(`Tried to send packet '${JSON.stringify(data)}' but no WebSocket is available!`);\n      this.destroy({ closeCode: 4_000 });\n      return;\n    }\n\n    this.connection.send(WebSocket.pack(data), err => {\n      if (err) this.manager.client.emit(Events.SHARD_ERROR, err, this.id);\n    });\n  }\n\n  /**\n   * Processes the current WebSocket queue.\n   * @returns {void}\n   * @private\n   */\n  processQueue() {\n    if (this.ratelimit.remaining === 0) return;\n    if (this.ratelimit.queue.length === 0) return;\n    if (this.ratelimit.remaining === this.ratelimit.total) {\n      this.ratelimit.timer = setTimeout(() => {\n        this.ratelimit.remaining = this.ratelimit.total;\n        this.processQueue();\n      }, this.ratelimit.time).unref();\n    }\n    while (this.ratelimit.remaining > 0) {\n      const item = this.ratelimit.queue.shift();\n      if (!item) return;\n      this._send(item);\n      this.ratelimit.remaining--;\n    }\n  }\n\n  /**\n   * Destroys this shard and closes its WebSocket connection.\n   * @param {Object} [options={ closeCode: 1000, reset: false, emit: true, log: true }] Options for destroying the shard\n   * @private\n   */\n  destroy({ closeCode = 1_000, reset = false, emit = true, log = true } = {}) {\n    if (log) {\n      this.debug(`[DESTROY]\n    Close Code    : ${closeCode}\n    Reset         : ${reset}\n    Emit DESTROYED: ${emit}`);\n    }\n\n    // Step 0: Remove all timers\n    this.setHeartbeatTimer(-1);\n    this.setHelloTimeout(-1);\n\n    // Step 1: Close the WebSocket connection, if any, otherwise, emit DESTROYED\n    if (this.connection) {\n      // If the connection is currently opened, we will (hopefully) receive close\n      if (this.connection.readyState === WebSocket.OPEN) {\n        this.connection.close(closeCode);\n      } else {\n        // Connection is not OPEN\n        this.debug(`WS State: ${CONNECTION_STATE[this.connection.readyState]}`);\n        // Remove listeners from the connection\n        this._cleanupConnection();\n        // Attempt to close the connection just in case\n        try {\n          this.connection.close(closeCode);\n        } catch {\n          // No-op\n        }\n        // Emit the destroyed event if needed\n        if (emit) this._emitDestroyed();\n      }\n    } else if (emit) {\n      // We requested a destroy, but we had no connection. Emit destroyed\n      this._emitDestroyed();\n    }\n\n    // Step 2: Null the connection object\n    this.connection = null;\n\n    // Step 3: Set the shard status to DISCONNECTED\n    this.status = Status.DISCONNECTED;\n\n    // Step 4: Cache the old sequence (use to attempt a resume)\n    if (this.sequence !== -1) this.closeSequence = this.sequence;\n\n    // Step 5: Reset the sequence and session id if requested\n    if (reset) {\n      this.sequence = -1;\n      this.sessionId = null;\n    }\n\n    // Step 6: reset the rate limit data\n    this.ratelimit.remaining = this.ratelimit.total;\n    this.ratelimit.queue.length = 0;\n    if (this.ratelimit.timer) {\n      clearTimeout(this.ratelimit.timer);\n      this.ratelimit.timer = null;\n    }\n  }\n\n  /**\n   * Cleans up the WebSocket connection listeners.\n   * @private\n   */\n  _cleanupConnection() {\n    this.connection.onopen = this.connection.onclose = this.connection.onerror = this.connection.onmessage = null;\n  }\n\n  /**\n   * Emits the DESTROYED event on the shard\n   * @private\n   */\n  _emitDestroyed() {\n    /**\n     * Emitted when a shard is destroyed, but no WebSocket connection was present.\n     * @private\n     * @event WebSocketShard#destroyed\n     */\n    this.emit(ShardEvents.DESTROYED);\n  }\n}\n\nmodule.exports = WebSocketShard;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/WebSocketShard.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/APPLICATION_COMMAND_CREATE.js":
/*!********************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/APPLICATION_COMMAND_CREATE.js ***!
  \********************************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst { Events } = __webpack_require__(/*! ../../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nmodule.exports = (client, { d: data }) => {\n  const commandManager = data.guild_id ? client.guilds.cache.get(data.guild_id)?.commands : client.application.commands;\n  if (!commandManager) return;\n\n  const command = commandManager._add(data, data.application_id === client.application.id);\n\n  /**\n   * Emitted when a guild application command is created.\n   * @event Client#applicationCommandCreate\n   * @param {ApplicationCommand} command The command which was created\n   * @deprecated See {@link https://github.com/discord/discord-api-docs/issues/3690 this issue} for more information.\n   */\n  client.emit(Events.APPLICATION_COMMAND_CREATE, command);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/APPLICATION_COMMAND_CREATE.js?')},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/APPLICATION_COMMAND_DELETE.js":
/*!********************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/APPLICATION_COMMAND_DELETE.js ***!
  \********************************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst { Events } = __webpack_require__(/*! ../../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nmodule.exports = (client, { d: data }) => {\n  const commandManager = data.guild_id ? client.guilds.cache.get(data.guild_id)?.commands : client.application.commands;\n  if (!commandManager) return;\n\n  const isOwn = data.application_id === client.application.id;\n  const command = commandManager._add(data, isOwn);\n  if (isOwn) commandManager.cache.delete(data.id);\n\n  /**\n   * Emitted when a guild application command is deleted.\n   * @event Client#applicationCommandDelete\n   * @param {ApplicationCommand} command The command which was deleted\n   * @deprecated See {@link https://github.com/discord/discord-api-docs/issues/3690 this issue} for more information.\n   */\n  client.emit(Events.APPLICATION_COMMAND_DELETE, command);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/APPLICATION_COMMAND_DELETE.js?')},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/APPLICATION_COMMAND_UPDATE.js":
/*!********************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/APPLICATION_COMMAND_UPDATE.js ***!
  \********************************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst { Events } = __webpack_require__(/*! ../../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nmodule.exports = (client, { d: data }) => {\n  const commandManager = data.guild_id ? client.guilds.cache.get(data.guild_id)?.commands : client.application.commands;\n  if (!commandManager) return;\n\n  const oldCommand = commandManager.cache.get(data.id)?._clone() ?? null;\n  const newCommand = commandManager._add(data, data.application_id === client.application.id);\n\n  /**\n   * Emitted when a guild application command is updated.\n   * @event Client#applicationCommandUpdate\n   * @param {?ApplicationCommand} oldCommand The command before the update\n   * @param {ApplicationCommand} newCommand The command after the update\n   * @deprecated See {@link https://github.com/discord/discord-api-docs/issues/3690 this issue} for more information.\n   */\n  client.emit(Events.APPLICATION_COMMAND_UPDATE, oldCommand, newCommand);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/APPLICATION_COMMAND_UPDATE.js?')},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/CHANNEL_CREATE.js":
/*!********************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/CHANNEL_CREATE.js ***!
  \********************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.ChannelCreate.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/CHANNEL_CREATE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/CHANNEL_DELETE.js":
/*!********************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/CHANNEL_DELETE.js ***!
  \********************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.ChannelDelete.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/CHANNEL_DELETE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js":
/*!*************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js ***!
  \*************************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst { Events } = __webpack_require__(/*! ../../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nmodule.exports = (client, { d: data }) => {\n  const channel = client.channels.cache.get(data.channel_id);\n  const time = data.last_pin_timestamp ? new Date(data.last_pin_timestamp).getTime() : null;\n\n  if (channel) {\n    // Discord sends null for last_pin_timestamp if the last pinned message was removed\n    channel.lastPinTimestamp = time;\n\n    /**\n     * Emitted whenever the pins of a channel are updated. Due to the nature of the WebSocket event,\n     * not much information can be provided easily here - you need to manually check the pins yourself.\n     * @event Client#channelPinsUpdate\n     * @param {TextBasedChannels} channel The channel that the pins update occurred in\n     * @param {Date} time The time of the pins update\n     */\n    client.emit(Events.CHANNEL_PINS_UPDATE, channel, time);\n  }\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js?')},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/CHANNEL_UPDATE.js":
/*!********************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/CHANNEL_UPDATE.js ***!
  \********************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst { Events } = __webpack_require__(/*! ../../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nmodule.exports = (client, packet) => {\n  const { old, updated } = client.actions.ChannelUpdate.handle(packet.d);\n  if (old && updated) {\n    /**\n     * Emitted whenever a channel is updated - e.g. name change, topic change, channel type change.\n     * @event Client#channelUpdate\n     * @param {DMChannel|GuildChannel} oldChannel The channel before the update\n     * @param {DMChannel|GuildChannel} newChannel The channel after the update\n     */\n    client.emit(Events.CHANNEL_UPDATE, old, updated);\n  }\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/CHANNEL_UPDATE.js?')},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_BAN_ADD.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_BAN_ADD.js ***!
  \*******************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.GuildBanAdd.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_BAN_ADD.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_BAN_REMOVE.js":
/*!**********************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_BAN_REMOVE.js ***!
  \**********************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.GuildBanRemove.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_BAN_REMOVE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_CREATE.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_CREATE.js ***!
  \******************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst { Events, Status } = __webpack_require__(/*! ../../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nmodule.exports = (client, { d: data }, shard) => {\n  let guild = client.guilds.cache.get(data.id);\n  if (guild) {\n    if (!guild.available && !data.unavailable) {\n      // A newly available guild\n      guild._patch(data);\n    }\n  } else {\n    // A new guild\n    data.shardId = shard.id;\n    guild = client.guilds._add(data);\n    if (client.ws.status === Status.READY) {\n      /**\n       * Emitted whenever the client joins a guild.\n       * @event Client#guildCreate\n       * @param {Guild} guild The created guild\n       */\n      client.emit(Events.GUILD_CREATE, guild);\n    }\n  }\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_CREATE.js?')},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_DELETE.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_DELETE.js ***!
  \******************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.GuildDelete.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_DELETE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.js":
/*!*************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.js ***!
  \*************************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.GuildEmojisUpdate.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.js":
/*!*******************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.js ***!
  \*******************************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.GuildIntegrationsUpdate.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js":
/*!*************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js ***!
  \*************************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ "./node_modules/@discordjs/collection/dist/index.js");\nconst { Events } = __webpack_require__(/*! ../../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nmodule.exports = (client, { d: data }) => {\n  const guild = client.guilds.cache.get(data.guild_id);\n  if (!guild) return;\n  const members = new Collection();\n\n  for (const member of data.members) members.set(member.user.id, guild.members._add(member));\n  if (data.presences) {\n    for (const presence of data.presences) guild.presences._add(Object.assign(presence, { guild }));\n  }\n\n  /**\n   * Represents the properties of a guild members chunk\n   * @typedef {Object} GuildMembersChunk\n   * @property {number} index Index of the received chunk\n   * @property {number} count Number of chunks the client should receive\n   * @property {?string} nonce Nonce for this chunk\n   */\n\n  /**\n   * Emitted whenever a chunk of guild members is received (all members come from the same guild).\n   * @event Client#guildMembersChunk\n   * @param {Collection<Snowflake, GuildMember>} members The members in the chunk\n   * @param {Guild} guild The guild related to the member chunk\n   * @param {GuildMembersChunk} chunk Properties of the received chunk\n   */\n  client.emit(Events.GUILD_MEMBERS_CHUNK, members, guild, {\n    count: data.chunk_count,\n    index: data.chunk_index,\n    nonce: data.nonce,\n  });\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js?')},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_MEMBER_ADD.js":
/*!**********************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_MEMBER_ADD.js ***!
  \**********************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst { Events, Status } = __webpack_require__(/*! ../../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nmodule.exports = (client, { d: data }, shard) => {\n  const guild = client.guilds.cache.get(data.guild_id);\n  if (guild) {\n    guild.memberCount++;\n    const member = guild.members._add(data);\n    if (shard.status === Status.READY) {\n      /**\n       * Emitted whenever a user joins a guild.\n       * @event Client#guildMemberAdd\n       * @param {GuildMember} member The member that has joined a guild\n       */\n      client.emit(Events.GUILD_MEMBER_ADD, member);\n    }\n  }\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_MEMBER_ADD.js?')},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.js":
/*!*************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.js ***!
  \*************************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet, shard) => {\n  client.actions.GuildMemberRemove.handle(packet.d, shard);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js":
/*!*************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js ***!
  \*************************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet, shard) => {\n  client.actions.GuildMemberUpdate.handle(packet.d, shard);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_ROLE_CREATE.js":
/*!***********************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_ROLE_CREATE.js ***!
  \***********************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.GuildRoleCreate.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_ROLE_CREATE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_ROLE_DELETE.js":
/*!***********************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_ROLE_DELETE.js ***!
  \***********************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.GuildRoleDelete.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_ROLE_DELETE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_ROLE_UPDATE.js":
/*!***********************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_ROLE_UPDATE.js ***!
  \***********************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.GuildRoleUpdate.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_ROLE_UPDATE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.js":
/*!**********************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.js ***!
  \**********************************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.GuildScheduledEventCreate.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.js":
/*!**********************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.js ***!
  \**********************************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.GuildScheduledEventDelete.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.js":
/*!**********************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.js ***!
  \**********************************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.GuildScheduledEventUpdate.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.js":
/*!************************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.js ***!
  \************************************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.GuildScheduledEventUserAdd.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.js":
/*!***************************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.js ***!
  \***************************************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.GuildScheduledEventUserRemove.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.js":
/*!***************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.js ***!
  \***************************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.GuildStickersUpdate.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_UPDATE.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_UPDATE.js ***!
  \******************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.GuildUpdate.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_UPDATE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/INTERACTION_CREATE.js":
/*!************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/INTERACTION_CREATE.js ***!
  \************************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.InteractionCreate.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/INTERACTION_CREATE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/INVITE_CREATE.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/INVITE_CREATE.js ***!
  \*******************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.InviteCreate.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/INVITE_CREATE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/INVITE_DELETE.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/INVITE_DELETE.js ***!
  \*******************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.InviteDelete.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/INVITE_DELETE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js":
/*!********************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js ***!
  \********************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.MessageCreate.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_DELETE.js":
/*!********************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_DELETE.js ***!
  \********************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.MessageDelete.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_DELETE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js":
/*!*************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js ***!
  \*************************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.MessageDeleteBulk.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_REACTION_ADD.js":
/*!**************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_REACTION_ADD.js ***!
  \**************************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.MessageReactionAdd.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_REACTION_ADD.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js":
/*!*****************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js ***!
  \*****************************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.MessageReactionRemove.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js":
/*!*********************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js ***!
  \*********************************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.MessageReactionRemoveAll.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js":
/*!***********************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js ***!
  \***********************************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.MessageReactionRemoveEmoji.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_UPDATE.js":
/*!********************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_UPDATE.js ***!
  \********************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst { Events } = __webpack_require__(/*! ../../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nmodule.exports = (client, packet) => {\n  const { old, updated } = client.actions.MessageUpdate.handle(packet.d);\n  if (old && updated) {\n    /**\n     * Emitted whenever a message is updated - e.g. embed or content change.\n     * @event Client#messageUpdate\n     * @param {Message} oldMessage The message before the update\n     * @param {Message} newMessage The message after the update\n     */\n    client.emit(Events.MESSAGE_UPDATE, old, updated);\n  }\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_UPDATE.js?')},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/PRESENCE_UPDATE.js":
/*!*********************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/PRESENCE_UPDATE.js ***!
  \*********************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.PresenceUpdate.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/PRESENCE_UPDATE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/READY.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/READY.js ***!
  \***********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst ClientApplication = __webpack_require__(/*! ../../../structures/ClientApplication */ "./node_modules/@citizenfx/discord.js/src/structures/ClientApplication.js");\nlet ClientUser;\n\nmodule.exports = (client, { d: data }, shard) => {\n  if (client.user) {\n    client.user._patch(data.user);\n  } else {\n    ClientUser ??= __webpack_require__(/*! ../../../structures/ClientUser */ "./node_modules/@citizenfx/discord.js/src/structures/ClientUser.js");\n    client.user = new ClientUser(client, data.user);\n    client.users.cache.set(client.user.id, client.user);\n  }\n\n  for (const guild of data.guilds) {\n    guild.shardId = shard.id;\n    client.guilds._add(guild);\n  }\n\n  if (client.application) {\n    client.application._patch(data.application);\n  } else {\n    client.application = new ClientApplication(client, data.application);\n  }\n\n  shard.checkReady();\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/READY.js?')},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/RESUMED.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/RESUMED.js ***!
  \*************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst { Events } = __webpack_require__(/*! ../../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nmodule.exports = (client, packet, shard) => {\n  const replayed = shard.sequence - shard.closeSequence;\n  /**\n   * Emitted when a shard resumes successfully.\n   * @event Client#shardResume\n   * @param {number} id The shard id that resumed\n   * @param {number} replayedEvents The amount of replayed events\n   */\n  client.emit(Events.SHARD_RESUME, shard.id, replayed);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/RESUMED.js?')},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.js":
/*!***************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.js ***!
  \***************************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.StageInstanceCreate.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.js":
/*!***************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.js ***!
  \***************************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.StageInstanceDelete.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.js":
/*!***************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.js ***!
  \***************************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.StageInstanceUpdate.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/THREAD_CREATE.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/THREAD_CREATE.js ***!
  \*******************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.ThreadCreate.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/THREAD_CREATE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/THREAD_DELETE.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/THREAD_DELETE.js ***!
  \*******************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.ThreadDelete.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/THREAD_DELETE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/THREAD_LIST_SYNC.js":
/*!**********************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/THREAD_LIST_SYNC.js ***!
  \**********************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.ThreadListSync.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/THREAD_LIST_SYNC.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.js":
/*!***************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.js ***!
  \***************************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.ThreadMembersUpdate.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.js":
/*!**************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.js ***!
  \**************************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.ThreadMemberUpdate.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/THREAD_UPDATE.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/THREAD_UPDATE.js ***!
  \*******************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst { Events } = __webpack_require__(/*! ../../../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nmodule.exports = (client, packet) => {\n  const { old, updated } = client.actions.ChannelUpdate.handle(packet.d);\n  if (old && updated) {\n    /**\n     * Emitted whenever a thread is updated - e.g. name change, archive state change, locked state change.\n     * @event Client#threadUpdate\n     * @param {ThreadChannel} oldThread The thread before the update\n     * @param {ThreadChannel} newThread The thread after the update\n     */\n    client.emit(Events.THREAD_UPDATE, old, updated);\n  }\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/THREAD_UPDATE.js?')},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/TYPING_START.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/TYPING_START.js ***!
  \******************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.TypingStart.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/TYPING_START.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/USER_UPDATE.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/USER_UPDATE.js ***!
  \*****************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.UserUpdate.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/USER_UPDATE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js":
/*!*************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js ***!
  \*************************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.emit('debug', `[VOICE] received voice server: ${JSON.stringify(packet)}`);\n  client.voice.onVoiceServer(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/VOICE_STATE_UPDATE.js":
/*!************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/VOICE_STATE_UPDATE.js ***!
  \************************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.VoiceStateUpdate.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/VOICE_STATE_UPDATE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/WEBHOOKS_UPDATE.js":
/*!*********************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/WEBHOOKS_UPDATE.js ***!
  \*********************************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (client, packet) => {\n  client.actions.WebhooksUpdate.handle(packet.d);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/WEBHOOKS_UPDATE.js?")},"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/index.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/index.js ***!
  \***********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst handlers = Object.fromEntries([\n  ['READY', __webpack_require__(/*! ./READY */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/READY.js\")],\n  ['RESUMED', __webpack_require__(/*! ./RESUMED */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/RESUMED.js\")],\n  ['APPLICATION_COMMAND_CREATE', __webpack_require__(/*! ./APPLICATION_COMMAND_CREATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/APPLICATION_COMMAND_CREATE.js\")],\n  ['APPLICATION_COMMAND_DELETE', __webpack_require__(/*! ./APPLICATION_COMMAND_DELETE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/APPLICATION_COMMAND_DELETE.js\")],\n  ['APPLICATION_COMMAND_UPDATE', __webpack_require__(/*! ./APPLICATION_COMMAND_UPDATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/APPLICATION_COMMAND_UPDATE.js\")],\n  ['GUILD_CREATE', __webpack_require__(/*! ./GUILD_CREATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_CREATE.js\")],\n  ['GUILD_DELETE', __webpack_require__(/*! ./GUILD_DELETE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_DELETE.js\")],\n  ['GUILD_UPDATE', __webpack_require__(/*! ./GUILD_UPDATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_UPDATE.js\")],\n  ['INVITE_CREATE', __webpack_require__(/*! ./INVITE_CREATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/INVITE_CREATE.js\")],\n  ['INVITE_DELETE', __webpack_require__(/*! ./INVITE_DELETE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/INVITE_DELETE.js\")],\n  ['GUILD_MEMBER_ADD', __webpack_require__(/*! ./GUILD_MEMBER_ADD */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_MEMBER_ADD.js\")],\n  ['GUILD_MEMBER_REMOVE', __webpack_require__(/*! ./GUILD_MEMBER_REMOVE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.js\")],\n  ['GUILD_MEMBER_UPDATE', __webpack_require__(/*! ./GUILD_MEMBER_UPDATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js\")],\n  ['GUILD_MEMBERS_CHUNK', __webpack_require__(/*! ./GUILD_MEMBERS_CHUNK */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js\")],\n  ['GUILD_INTEGRATIONS_UPDATE', __webpack_require__(/*! ./GUILD_INTEGRATIONS_UPDATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.js\")],\n  ['GUILD_ROLE_CREATE', __webpack_require__(/*! ./GUILD_ROLE_CREATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_ROLE_CREATE.js\")],\n  ['GUILD_ROLE_DELETE', __webpack_require__(/*! ./GUILD_ROLE_DELETE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_ROLE_DELETE.js\")],\n  ['GUILD_ROLE_UPDATE', __webpack_require__(/*! ./GUILD_ROLE_UPDATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_ROLE_UPDATE.js\")],\n  ['GUILD_BAN_ADD', __webpack_require__(/*! ./GUILD_BAN_ADD */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_BAN_ADD.js\")],\n  ['GUILD_BAN_REMOVE', __webpack_require__(/*! ./GUILD_BAN_REMOVE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_BAN_REMOVE.js\")],\n  ['GUILD_EMOJIS_UPDATE', __webpack_require__(/*! ./GUILD_EMOJIS_UPDATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.js\")],\n  ['CHANNEL_CREATE', __webpack_require__(/*! ./CHANNEL_CREATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/CHANNEL_CREATE.js\")],\n  ['CHANNEL_DELETE', __webpack_require__(/*! ./CHANNEL_DELETE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/CHANNEL_DELETE.js\")],\n  ['CHANNEL_UPDATE', __webpack_require__(/*! ./CHANNEL_UPDATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/CHANNEL_UPDATE.js\")],\n  ['CHANNEL_PINS_UPDATE', __webpack_require__(/*! ./CHANNEL_PINS_UPDATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js\")],\n  ['MESSAGE_CREATE', __webpack_require__(/*! ./MESSAGE_CREATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js\")],\n  ['MESSAGE_DELETE', __webpack_require__(/*! ./MESSAGE_DELETE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_DELETE.js\")],\n  ['MESSAGE_UPDATE', __webpack_require__(/*! ./MESSAGE_UPDATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_UPDATE.js\")],\n  ['MESSAGE_DELETE_BULK', __webpack_require__(/*! ./MESSAGE_DELETE_BULK */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js\")],\n  ['MESSAGE_REACTION_ADD', __webpack_require__(/*! ./MESSAGE_REACTION_ADD */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_REACTION_ADD.js\")],\n  ['MESSAGE_REACTION_REMOVE', __webpack_require__(/*! ./MESSAGE_REACTION_REMOVE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js\")],\n  ['MESSAGE_REACTION_REMOVE_ALL', __webpack_require__(/*! ./MESSAGE_REACTION_REMOVE_ALL */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js\")],\n  ['MESSAGE_REACTION_REMOVE_EMOJI', __webpack_require__(/*! ./MESSAGE_REACTION_REMOVE_EMOJI */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js\")],\n  ['THREAD_CREATE', __webpack_require__(/*! ./THREAD_CREATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/THREAD_CREATE.js\")],\n  ['THREAD_UPDATE', __webpack_require__(/*! ./THREAD_UPDATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/THREAD_UPDATE.js\")],\n  ['THREAD_DELETE', __webpack_require__(/*! ./THREAD_DELETE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/THREAD_DELETE.js\")],\n  ['THREAD_LIST_SYNC', __webpack_require__(/*! ./THREAD_LIST_SYNC */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/THREAD_LIST_SYNC.js\")],\n  ['THREAD_MEMBER_UPDATE', __webpack_require__(/*! ./THREAD_MEMBER_UPDATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.js\")],\n  ['THREAD_MEMBERS_UPDATE', __webpack_require__(/*! ./THREAD_MEMBERS_UPDATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.js\")],\n  ['USER_UPDATE', __webpack_require__(/*! ./USER_UPDATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/USER_UPDATE.js\")],\n  ['PRESENCE_UPDATE', __webpack_require__(/*! ./PRESENCE_UPDATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/PRESENCE_UPDATE.js\")],\n  ['TYPING_START', __webpack_require__(/*! ./TYPING_START */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/TYPING_START.js\")],\n  ['VOICE_STATE_UPDATE', __webpack_require__(/*! ./VOICE_STATE_UPDATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/VOICE_STATE_UPDATE.js\")],\n  ['VOICE_SERVER_UPDATE', __webpack_require__(/*! ./VOICE_SERVER_UPDATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js\")],\n  ['WEBHOOKS_UPDATE', __webpack_require__(/*! ./WEBHOOKS_UPDATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/WEBHOOKS_UPDATE.js\")],\n  ['INTERACTION_CREATE', __webpack_require__(/*! ./INTERACTION_CREATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/INTERACTION_CREATE.js\")],\n  ['STAGE_INSTANCE_CREATE', __webpack_require__(/*! ./STAGE_INSTANCE_CREATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.js\")],\n  ['STAGE_INSTANCE_UPDATE', __webpack_require__(/*! ./STAGE_INSTANCE_UPDATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.js\")],\n  ['STAGE_INSTANCE_DELETE', __webpack_require__(/*! ./STAGE_INSTANCE_DELETE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.js\")],\n  ['GUILD_STICKERS_UPDATE', __webpack_require__(/*! ./GUILD_STICKERS_UPDATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.js\")],\n  ['GUILD_SCHEDULED_EVENT_CREATE', __webpack_require__(/*! ./GUILD_SCHEDULED_EVENT_CREATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.js\")],\n  ['GUILD_SCHEDULED_EVENT_UPDATE', __webpack_require__(/*! ./GUILD_SCHEDULED_EVENT_UPDATE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.js\")],\n  ['GUILD_SCHEDULED_EVENT_DELETE', __webpack_require__(/*! ./GUILD_SCHEDULED_EVENT_DELETE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.js\")],\n  ['GUILD_SCHEDULED_EVENT_USER_ADD', __webpack_require__(/*! ./GUILD_SCHEDULED_EVENT_USER_ADD */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.js\")],\n  ['GUILD_SCHEDULED_EVENT_USER_REMOVE', __webpack_require__(/*! ./GUILD_SCHEDULED_EVENT_USER_REMOVE */ \"./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.js\")],\n]);\n\nmodule.exports = handlers;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/client/websocket/handlers/index.js?")},"./node_modules/@citizenfx/discord.js/src/errors/DJSError.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/errors/DJSError.js ***!
  \*******************************************************************/module=>{"use strict";eval("\n\n// Heavily inspired by node's `internal/errors` module\n\nconst kCode = Symbol('code');\nconst messages = new Map();\n\n/**\n * Extend an error of some sort into a DiscordjsError.\n * @param {Error} Base Base error to extend\n * @returns {DiscordjsError}\n */\nfunction makeDiscordjsError(Base) {\n  return class DiscordjsError extends Base {\n    constructor(key, ...args) {\n      super(message(key, args));\n      this[kCode] = key;\n      if (Error.captureStackTrace) Error.captureStackTrace(this, DiscordjsError);\n    }\n\n    get name() {\n      return `${super.name} [${this[kCode]}]`;\n    }\n\n    get code() {\n      return this[kCode];\n    }\n  };\n}\n\n/**\n * Format the message for an error.\n * @param {string} key Error key\n * @param {Array<*>} args Arguments to pass for util format or as function args\n * @returns {string} Formatted string\n */\nfunction message(key, args) {\n  if (typeof key !== 'string') throw new Error('Error message key must be a string');\n  const msg = messages.get(key);\n  if (!msg) throw new Error(`An invalid error message key was used: ${key}.`);\n  if (typeof msg === 'function') return msg(...args);\n  if (!args?.length) return msg;\n  args.unshift(msg);\n  return String(...args);\n}\n\n/**\n * Register an error code and message.\n * @param {string} sym Unique name for the error\n * @param {*} val Value of the error\n */\nfunction register(sym, val) {\n  messages.set(sym, typeof val === 'function' ? val : String(val));\n}\n\nmodule.exports = {\n  register,\n  Error: makeDiscordjsError(Error),\n  TypeError: makeDiscordjsError(TypeError),\n  RangeError: makeDiscordjsError(RangeError),\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/errors/DJSError.js?")},"./node_modules/@citizenfx/discord.js/src/errors/Messages.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/errors/Messages.js ***!
  \*******************************************************************/(__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { register } = __webpack_require__(/*! ./DJSError */ \"./node_modules/@citizenfx/discord.js/src/errors/DJSError.js\");\n\nconst Messages = {\n  CLIENT_INVALID_OPTION: (prop, must) => `The ${prop} option must be ${must}`,\n  CLIENT_INVALID_PROVIDED_SHARDS: 'None of the provided shards were valid.',\n  CLIENT_MISSING_INTENTS: 'Valid intents must be provided for the Client.',\n  CLIENT_NOT_READY: action => `The client needs to be logged in to ${action}.`,\n\n  TOKEN_INVALID: 'An invalid token was provided.',\n  TOKEN_MISSING: 'Request to use token, but token was unavailable to the client.',\n\n  WS_CLOSE_REQUESTED: 'WebSocket closed due to user request.',\n  WS_CONNECTION_EXISTS: 'There is already an existing WebSocket connection.',\n  WS_NOT_OPEN: (data = 'data') => `WebSocket not open to send ${data}`,\n  MANAGER_DESTROYED: 'Manager was destroyed.',\n\n  BITFIELD_INVALID: bit => `Invalid bitfield flag or number: ${bit}.`,\n\n  SHARDING_INVALID: 'Invalid shard settings were provided.',\n  SHARDING_REQUIRED: 'This session would have handled too many guilds - Sharding is required.',\n  INVALID_INTENTS: 'Invalid intent provided for WebSocket intents.',\n  DISALLOWED_INTENTS: 'Privileged intent provided is not enabled or whitelisted.',\n  SHARDING_NO_SHARDS: 'No shards have been spawned.',\n  SHARDING_IN_PROCESS: 'Shards are still being spawned.',\n  SHARDING_INVALID_EVAL_BROADCAST: 'Script to evaluate must be a function',\n  SHARDING_SHARD_NOT_FOUND: id => `Shard ${id} could not be found.`,\n  SHARDING_ALREADY_SPAWNED: count => `Already spawned ${count} shards.`,\n  SHARDING_PROCESS_EXISTS: id => `Shard ${id} already has an active process.`,\n  SHARDING_WORKER_EXISTS: id => `Shard ${id} already has an active worker.`,\n  SHARDING_READY_TIMEOUT: id => `Shard ${id}'s Client took too long to become ready.`,\n  SHARDING_READY_DISCONNECTED: id => `Shard ${id}'s Client disconnected before becoming ready.`,\n  SHARDING_READY_DIED: id => `Shard ${id}'s process exited before its Client became ready.`,\n  SHARDING_NO_CHILD_EXISTS: id => `Shard ${id} has no active process or worker.`,\n  SHARDING_SHARD_MISCALCULATION: (shard, guild, count) =>\n    `Calculated invalid shard ${shard} for guild ${guild} with ${count} shards.`,\n\n  COLOR_RANGE: 'Color must be within the range 0 - 16777215 (0xFFFFFF).',\n  COLOR_CONVERT: 'Unable to convert color to a number.',\n\n  INVITE_OPTIONS_MISSING_CHANNEL: 'A valid guild channel must be provided when GuildScheduledEvent is EXTERNAL.',\n\n  EMBED_TITLE: 'MessageEmbed title must be a string.',\n  EMBED_FIELD_NAME: 'MessageEmbed field names must be non-empty strings.',\n  EMBED_FIELD_VALUE: 'MessageEmbed field values must be non-empty strings.',\n  EMBED_FOOTER_TEXT: 'MessageEmbed footer text must be a string.',\n  EMBED_DESCRIPTION: 'MessageEmbed description must be a string.',\n  EMBED_AUTHOR_NAME: 'MessageEmbed author name must be a string.',\n\n  BUTTON_LABEL: 'MessageButton label must be a string',\n  BUTTON_URL: 'MessageButton URL must be a string',\n  BUTTON_CUSTOM_ID: 'MessageButton customId must be a string',\n\n  SELECT_MENU_CUSTOM_ID: 'MessageSelectMenu customId must be a string',\n  SELECT_MENU_PLACEHOLDER: 'MessageSelectMenu placeholder must be a string',\n  SELECT_OPTION_LABEL: 'MessageSelectOption label must be a string',\n  SELECT_OPTION_VALUE: 'MessageSelectOption value must be a string',\n  SELECT_OPTION_DESCRIPTION: 'MessageSelectOption description must be a string',\n\n  INTERACTION_COLLECTOR_ERROR: reason => `Collector received no interactions before ending with reason: ${reason}`,\n\n  FILE_NOT_FOUND: file => `File could not be found: ${file}`,\n\n  USER_BANNER_NOT_FETCHED: \"You must fetch this user's banner before trying to generate its URL!\",\n  USER_NO_DM_CHANNEL: 'No DM Channel exists!',\n\n  VOICE_NOT_STAGE_CHANNEL: 'You are only allowed to do this in stage channels.',\n\n  VOICE_STATE_NOT_OWN:\n    'You cannot self-deafen/mute/request to speak on VoiceStates that do not belong to the ClientUser.',\n  VOICE_STATE_INVALID_TYPE: name => `${name} must be a boolean.`,\n\n  REQ_RESOURCE_TYPE: 'The resource must be a string, Buffer or a valid file stream.',\n\n  IMAGE_FORMAT: format => `Invalid image format: ${format}`,\n  IMAGE_SIZE: size => `Invalid image size: ${size}`,\n\n  MESSAGE_BULK_DELETE_TYPE: 'The messages must be an Array, Collection, or number.',\n  MESSAGE_NONCE_TYPE: 'Message nonce must be an integer or a string.',\n  MESSAGE_CONTENT_TYPE: 'Message content must be a non-empty string.',\n\n  SPLIT_MAX_LEN: 'Chunk exceeds the max length and contains no split characters.',\n\n  BAN_RESOLVE_ID: (ban = false) => `Couldn't resolve the user id to ${ban ? 'ban' : 'unban'}.`,\n  FETCH_BAN_RESOLVE_ID: \"Couldn't resolve the user id to fetch the ban.\",\n\n  PRUNE_DAYS_TYPE: 'Days must be a number',\n\n  GUILD_CHANNEL_RESOLVE: 'Could not resolve channel to a guild channel.',\n  GUILD_VOICE_CHANNEL_RESOLVE: 'Could not resolve channel to a guild voice channel.',\n  GUILD_CHANNEL_ORPHAN: 'Could not find a parent to this guild channel.',\n  GUILD_CHANNEL_UNOWNED: \"The fetched channel does not belong to this manager's guild.\",\n  GUILD_OWNED: 'Guild is owned by the client.',\n  GUILD_MEMBERS_TIMEOUT: \"Members didn't arrive in time.\",\n  GUILD_UNCACHED_ME: 'The client user as a member of this guild is uncached.',\n  CHANNEL_NOT_CACHED: 'Could not find the channel where this message came from in the cache!',\n  STAGE_CHANNEL_RESOLVE: 'Could not resolve channel to a stage channel.',\n  GUILD_SCHEDULED_EVENT_RESOLVE: 'Could not resolve the guild scheduled event.',\n\n  INVALID_TYPE: (name, expected, an = false) => `Supplied ${name} is not a${an ? 'n' : ''} ${expected}.`,\n  INVALID_ELEMENT: (type, name, elem) => `Supplied ${type} ${name} includes an invalid element: ${elem}`,\n\n  MESSAGE_THREAD_PARENT: 'The message was not sent in a guild text or news channel',\n  MESSAGE_EXISTING_THREAD: 'The message already has a thread',\n  THREAD_INVITABLE_TYPE: type => `Invitable cannot be edited on ${type}`,\n\n  WEBHOOK_MESSAGE: 'The message was not sent by a webhook.',\n  WEBHOOK_TOKEN_UNAVAILABLE: 'This action requires a webhook token, but none is available.',\n  WEBHOOK_URL_INVALID: 'The provided webhook URL is not valid.',\n  WEBHOOK_APPLICATION: 'This message webhook belongs to an application and cannot be fetched.',\n  MESSAGE_REFERENCE_MISSING: 'The message does not reference another message',\n\n  EMOJI_TYPE: 'Emoji must be a string or GuildEmoji/ReactionEmoji',\n  EMOJI_MANAGED: 'Emoji is managed and has no Author.',\n  MISSING_MANAGE_EMOJIS_AND_STICKERS_PERMISSION: guild =>\n    `Client must have Manage Emojis and Stickers permission in guild ${guild} to see emoji authors.`,\n  NOT_GUILD_STICKER: 'Sticker is a standard (non-guild) sticker and has no author.',\n\n  REACTION_RESOLVE_USER: \"Couldn't resolve the user id to remove from the reaction.\",\n\n  VANITY_URL: 'This guild does not have the VANITY_URL feature enabled.',\n\n  INVITE_RESOLVE_CODE: 'Could not resolve the code to fetch the invite.',\n\n  INVITE_NOT_FOUND: 'Could not find the requested invite.',\n\n  DELETE_GROUP_DM_CHANNEL: \"Bots don't have access to Group DM Channels and cannot delete them\",\n  FETCH_GROUP_DM_CHANNEL: \"Bots don't have access to Group DM Channels and cannot fetch them\",\n\n  MEMBER_FETCH_NONCE_LENGTH: 'Nonce length must not exceed 32 characters.',\n\n  GLOBAL_COMMAND_PERMISSIONS:\n    'Permissions for global commands may only be fetched or modified by providing a GuildResolvable ' +\n    \"or from a guild's application command manager.\",\n  GUILD_UNCACHED_ROLE_RESOLVE: 'Cannot resolve roles from an arbitrary guild, provide an id instead',\n\n  INTERACTION_ALREADY_REPLIED: 'The reply to this interaction has already been sent or deferred.',\n  INTERACTION_NOT_REPLIED: 'The reply to this interaction has not been sent or deferred.',\n  INTERACTION_EPHEMERAL_REPLIED: 'Ephemeral responses cannot be deleted.',\n\n  COMMAND_INTERACTION_OPTION_NOT_FOUND: name => `Required option \"${name}\" not found.`,\n  COMMAND_INTERACTION_OPTION_TYPE: (name, type, expected) =>\n    `Option \"${name}\" is of type: ${type}; expected ${expected}.`,\n  COMMAND_INTERACTION_OPTION_EMPTY: (name, type) =>\n    `Required option \"${name}\" is of type: ${type}; expected a non-empty value.`,\n  COMMAND_INTERACTION_OPTION_NO_SUB_COMMAND: 'No subcommand specified for interaction.',\n  COMMAND_INTERACTION_OPTION_NO_SUB_COMMAND_GROUP: 'No subcommand group specified for interaction.',\n  AUTOCOMPLETE_INTERACTION_OPTION_NO_FOCUSED_OPTION: 'No focused option for autocomplete interaction.',\n\n  INVITE_MISSING_SCOPES: 'At least one valid scope must be provided for the invite',\n\n  NOT_IMPLEMENTED: (what, name) => `Method ${what} not implemented on ${name}.`,\n\n  SWEEP_FILTER_RETURN: 'The return value of the sweepFilter function was not false or a Function',\n};\n\nfor (const [name, message] of Object.entries(Messages)) register(name, message);\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/errors/Messages.js?")},"./node_modules/@citizenfx/discord.js/src/errors/index.js":
/*!****************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/errors/index.js ***!
  \****************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nmodule.exports = __webpack_require__(/*! ./DJSError */ "./node_modules/@citizenfx/discord.js/src/errors/DJSError.js");\nmodule.exports.Messages = __webpack_require__(/*! ./Messages */ "./node_modules/@citizenfx/discord.js/src/errors/Messages.js");\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/errors/index.js?')},"./node_modules/@citizenfx/discord.js/src/index.js":
/*!*********************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/index.js ***!
  \*********************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n\n// "Root" classes (starting points)\nexports.BaseClient = __webpack_require__(/*! ./client/BaseClient */ "./node_modules/@citizenfx/discord.js/src/client/BaseClient.js");\nexports.Client = __webpack_require__(/*! ./client/Client */ "./node_modules/@citizenfx/discord.js/src/client/Client.js");\nexports.Shard = __webpack_require__(/*! ./sharding/Shard */ "./node_modules/@citizenfx/discord.js/src/sharding/Shard.js");\nexports.ShardClientUtil = __webpack_require__(/*! ./sharding/ShardClientUtil */ "./node_modules/@citizenfx/discord.js/src/sharding/ShardClientUtil.js");\nexports.ShardingManager = __webpack_require__(/*! ./sharding/ShardingManager */ "./node_modules/@citizenfx/discord.js/src/sharding/ShardingManager.js");\nexports.WebhookClient = __webpack_require__(/*! ./client/WebhookClient */ "./node_modules/@citizenfx/discord.js/src/client/WebhookClient.js");\n\n// Utilities\nexports.ActivityFlags = __webpack_require__(/*! ./util/ActivityFlags */ "./node_modules/@citizenfx/discord.js/src/util/ActivityFlags.js");\nexports.ApplicationFlags = __webpack_require__(/*! ./util/ApplicationFlags */ "./node_modules/@citizenfx/discord.js/src/util/ApplicationFlags.js");\nexports.BaseManager = __webpack_require__(/*! ./managers/BaseManager */ "./node_modules/@citizenfx/discord.js/src/managers/BaseManager.js");\nexports.BitField = __webpack_require__(/*! ./util/BitField */ "./node_modules/@citizenfx/discord.js/src/util/BitField.js");\nexports.Collection = __webpack_require__(/*! @discordjs/collection */ "./node_modules/@discordjs/collection/dist/index.js").Collection;\nexports.Constants = __webpack_require__(/*! ./util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\nexports.DataResolver = __webpack_require__(/*! ./util/DataResolver */ "./node_modules/@citizenfx/discord.js/src/util/DataResolver.js");\nexports.DiscordAPIError = __webpack_require__(/*! ./rest/DiscordAPIError */ "./node_modules/@citizenfx/discord.js/src/rest/DiscordAPIError.js");\nexports.Formatters = __webpack_require__(/*! ./util/Formatters */ "./node_modules/@citizenfx/discord.js/src/util/Formatters.js");\nexports.HTTPError = __webpack_require__(/*! ./rest/HTTPError */ "./node_modules/@citizenfx/discord.js/src/rest/HTTPError.js");\nexports.Intents = __webpack_require__(/*! ./util/Intents */ "./node_modules/@citizenfx/discord.js/src/util/Intents.js");\nexports.LimitedCollection = __webpack_require__(/*! ./util/LimitedCollection */ "./node_modules/@citizenfx/discord.js/src/util/LimitedCollection.js");\nexports.MessageFlags = __webpack_require__(/*! ./util/MessageFlags */ "./node_modules/@citizenfx/discord.js/src/util/MessageFlags.js");\nexports.Options = __webpack_require__(/*! ./util/Options */ "./node_modules/@citizenfx/discord.js/src/util/Options.js");\nexports.Permissions = __webpack_require__(/*! ./util/Permissions */ "./node_modules/@citizenfx/discord.js/src/util/Permissions.js");\nexports.RateLimitError = __webpack_require__(/*! ./rest/RateLimitError */ "./node_modules/@citizenfx/discord.js/src/rest/RateLimitError.js");\nexports.SnowflakeUtil = __webpack_require__(/*! ./util/SnowflakeUtil */ "./node_modules/@citizenfx/discord.js/src/util/SnowflakeUtil.js");\nexports.Sweepers = __webpack_require__(/*! ./util/Sweepers */ "./node_modules/@citizenfx/discord.js/src/util/Sweepers.js");\nexports.SystemChannelFlags = __webpack_require__(/*! ./util/SystemChannelFlags */ "./node_modules/@citizenfx/discord.js/src/util/SystemChannelFlags.js");\nexports.ThreadMemberFlags = __webpack_require__(/*! ./util/ThreadMemberFlags */ "./node_modules/@citizenfx/discord.js/src/util/ThreadMemberFlags.js");\nexports.UserFlags = __webpack_require__(/*! ./util/UserFlags */ "./node_modules/@citizenfx/discord.js/src/util/UserFlags.js");\nexports.Util = __webpack_require__(/*! ./util/Util */ "./node_modules/@citizenfx/discord.js/src/util/Util.js");\nexports.version = __webpack_require__(/*! ../package.json */ "./node_modules/@citizenfx/discord.js/package.json").version;\n\n// Managers\nexports.ApplicationCommandManager = __webpack_require__(/*! ./managers/ApplicationCommandManager */ "./node_modules/@citizenfx/discord.js/src/managers/ApplicationCommandManager.js");\nexports.ApplicationCommandPermissionsManager = __webpack_require__(/*! ./managers/ApplicationCommandPermissionsManager */ "./node_modules/@citizenfx/discord.js/src/managers/ApplicationCommandPermissionsManager.js");\nexports.BaseGuildEmojiManager = __webpack_require__(/*! ./managers/BaseGuildEmojiManager */ "./node_modules/@citizenfx/discord.js/src/managers/BaseGuildEmojiManager.js");\nexports.CachedManager = __webpack_require__(/*! ./managers/CachedManager */ "./node_modules/@citizenfx/discord.js/src/managers/CachedManager.js");\nexports.ChannelManager = __webpack_require__(/*! ./managers/ChannelManager */ "./node_modules/@citizenfx/discord.js/src/managers/ChannelManager.js");\nexports.ClientVoiceManager = __webpack_require__(/*! ./client/voice/ClientVoiceManager */ "./node_modules/@citizenfx/discord.js/src/client/voice/ClientVoiceManager.js");\nexports.DataManager = __webpack_require__(/*! ./managers/DataManager */ "./node_modules/@citizenfx/discord.js/src/managers/DataManager.js");\nexports.GuildApplicationCommandManager = __webpack_require__(/*! ./managers/GuildApplicationCommandManager */ "./node_modules/@citizenfx/discord.js/src/managers/GuildApplicationCommandManager.js");\nexports.GuildBanManager = __webpack_require__(/*! ./managers/GuildBanManager */ "./node_modules/@citizenfx/discord.js/src/managers/GuildBanManager.js");\nexports.GuildChannelManager = __webpack_require__(/*! ./managers/GuildChannelManager */ "./node_modules/@citizenfx/discord.js/src/managers/GuildChannelManager.js");\nexports.GuildEmojiManager = __webpack_require__(/*! ./managers/GuildEmojiManager */ "./node_modules/@citizenfx/discord.js/src/managers/GuildEmojiManager.js");\nexports.GuildEmojiRoleManager = __webpack_require__(/*! ./managers/GuildEmojiRoleManager */ "./node_modules/@citizenfx/discord.js/src/managers/GuildEmojiRoleManager.js");\nexports.GuildInviteManager = __webpack_require__(/*! ./managers/GuildInviteManager */ "./node_modules/@citizenfx/discord.js/src/managers/GuildInviteManager.js");\nexports.GuildManager = __webpack_require__(/*! ./managers/GuildManager */ "./node_modules/@citizenfx/discord.js/src/managers/GuildManager.js");\nexports.GuildMemberManager = __webpack_require__(/*! ./managers/GuildMemberManager */ "./node_modules/@citizenfx/discord.js/src/managers/GuildMemberManager.js");\nexports.GuildMemberRoleManager = __webpack_require__(/*! ./managers/GuildMemberRoleManager */ "./node_modules/@citizenfx/discord.js/src/managers/GuildMemberRoleManager.js");\nexports.GuildScheduledEventManager = __webpack_require__(/*! ./managers/GuildScheduledEventManager */ "./node_modules/@citizenfx/discord.js/src/managers/GuildScheduledEventManager.js");\nexports.GuildStickerManager = __webpack_require__(/*! ./managers/GuildStickerManager */ "./node_modules/@citizenfx/discord.js/src/managers/GuildStickerManager.js");\nexports.MessageManager = __webpack_require__(/*! ./managers/MessageManager */ "./node_modules/@citizenfx/discord.js/src/managers/MessageManager.js");\nexports.PermissionOverwriteManager = __webpack_require__(/*! ./managers/PermissionOverwriteManager */ "./node_modules/@citizenfx/discord.js/src/managers/PermissionOverwriteManager.js");\nexports.PresenceManager = __webpack_require__(/*! ./managers/PresenceManager */ "./node_modules/@citizenfx/discord.js/src/managers/PresenceManager.js");\nexports.ReactionManager = __webpack_require__(/*! ./managers/ReactionManager */ "./node_modules/@citizenfx/discord.js/src/managers/ReactionManager.js");\nexports.ReactionUserManager = __webpack_require__(/*! ./managers/ReactionUserManager */ "./node_modules/@citizenfx/discord.js/src/managers/ReactionUserManager.js");\nexports.RoleManager = __webpack_require__(/*! ./managers/RoleManager */ "./node_modules/@citizenfx/discord.js/src/managers/RoleManager.js");\nexports.StageInstanceManager = __webpack_require__(/*! ./managers/StageInstanceManager */ "./node_modules/@citizenfx/discord.js/src/managers/StageInstanceManager.js");\nexports.ThreadManager = __webpack_require__(/*! ./managers/ThreadManager */ "./node_modules/@citizenfx/discord.js/src/managers/ThreadManager.js");\nexports.ThreadMemberManager = __webpack_require__(/*! ./managers/ThreadMemberManager */ "./node_modules/@citizenfx/discord.js/src/managers/ThreadMemberManager.js");\nexports.UserManager = __webpack_require__(/*! ./managers/UserManager */ "./node_modules/@citizenfx/discord.js/src/managers/UserManager.js");\nexports.VoiceStateManager = __webpack_require__(/*! ./managers/VoiceStateManager */ "./node_modules/@citizenfx/discord.js/src/managers/VoiceStateManager.js");\nexports.WebSocketManager = __webpack_require__(/*! ./client/websocket/WebSocketManager */ "./node_modules/@citizenfx/discord.js/src/client/websocket/WebSocketManager.js");\nexports.WebSocketShard = __webpack_require__(/*! ./client/websocket/WebSocketShard */ "./node_modules/@citizenfx/discord.js/src/client/websocket/WebSocketShard.js");\n\n// Structures\nexports.Activity = __webpack_require__(/*! ./structures/Presence */ "./node_modules/@citizenfx/discord.js/src/structures/Presence.js").Activity;\nexports.AnonymousGuild = __webpack_require__(/*! ./structures/AnonymousGuild */ "./node_modules/@citizenfx/discord.js/src/structures/AnonymousGuild.js");\nexports.Application = __webpack_require__(/*! ./structures/interfaces/Application */ "./node_modules/@citizenfx/discord.js/src/structures/interfaces/Application.js");\nexports.ApplicationCommand = __webpack_require__(/*! ./structures/ApplicationCommand */ "./node_modules/@citizenfx/discord.js/src/structures/ApplicationCommand.js");\nexports.AutocompleteInteraction = __webpack_require__(/*! ./structures/AutocompleteInteraction */ "./node_modules/@citizenfx/discord.js/src/structures/AutocompleteInteraction.js");\nexports.Base = __webpack_require__(/*! ./structures/Base */ "./node_modules/@citizenfx/discord.js/src/structures/Base.js");\nexports.BaseCommandInteraction = __webpack_require__(/*! ./structures/BaseCommandInteraction */ "./node_modules/@citizenfx/discord.js/src/structures/BaseCommandInteraction.js");\nexports.BaseGuild = __webpack_require__(/*! ./structures/BaseGuild */ "./node_modules/@citizenfx/discord.js/src/structures/BaseGuild.js");\nexports.BaseGuildEmoji = __webpack_require__(/*! ./structures/BaseGuildEmoji */ "./node_modules/@citizenfx/discord.js/src/structures/BaseGuildEmoji.js");\nexports.BaseGuildTextChannel = __webpack_require__(/*! ./structures/BaseGuildTextChannel */ "./node_modules/@citizenfx/discord.js/src/structures/BaseGuildTextChannel.js");\nexports.BaseGuildVoiceChannel = __webpack_require__(/*! ./structures/BaseGuildVoiceChannel */ "./node_modules/@citizenfx/discord.js/src/structures/BaseGuildVoiceChannel.js");\nexports.BaseMessageComponent = __webpack_require__(/*! ./structures/BaseMessageComponent */ "./node_modules/@citizenfx/discord.js/src/structures/BaseMessageComponent.js");\nexports.ButtonInteraction = __webpack_require__(/*! ./structures/ButtonInteraction */ "./node_modules/@citizenfx/discord.js/src/structures/ButtonInteraction.js");\nexports.CategoryChannel = __webpack_require__(/*! ./structures/CategoryChannel */ "./node_modules/@citizenfx/discord.js/src/structures/CategoryChannel.js");\nexports.Channel = __webpack_require__(/*! ./structures/Channel */ "./node_modules/@citizenfx/discord.js/src/structures/Channel.js").Channel;\nexports.ClientApplication = __webpack_require__(/*! ./structures/ClientApplication */ "./node_modules/@citizenfx/discord.js/src/structures/ClientApplication.js");\nexports.ClientPresence = __webpack_require__(/*! ./structures/ClientPresence */ "./node_modules/@citizenfx/discord.js/src/structures/ClientPresence.js");\nexports.ClientUser = __webpack_require__(/*! ./structures/ClientUser */ "./node_modules/@citizenfx/discord.js/src/structures/ClientUser.js");\nexports.Collector = __webpack_require__(/*! ./structures/interfaces/Collector */ "./node_modules/@citizenfx/discord.js/src/structures/interfaces/Collector.js");\nexports.CommandInteraction = __webpack_require__(/*! ./structures/CommandInteraction */ "./node_modules/@citizenfx/discord.js/src/structures/CommandInteraction.js");\nexports.CommandInteractionOptionResolver = __webpack_require__(/*! ./structures/CommandInteractionOptionResolver */ "./node_modules/@citizenfx/discord.js/src/structures/CommandInteractionOptionResolver.js");\nexports.ContextMenuInteraction = __webpack_require__(/*! ./structures/ContextMenuInteraction */ "./node_modules/@citizenfx/discord.js/src/structures/ContextMenuInteraction.js");\nexports.DMChannel = __webpack_require__(/*! ./structures/DMChannel */ "./node_modules/@citizenfx/discord.js/src/structures/DMChannel.js");\nexports.Emoji = __webpack_require__(/*! ./structures/Emoji */ "./node_modules/@citizenfx/discord.js/src/structures/Emoji.js").Emoji;\nexports.Guild = __webpack_require__(/*! ./structures/Guild */ "./node_modules/@citizenfx/discord.js/src/structures/Guild.js").Guild;\nexports.GuildAuditLogs = __webpack_require__(/*! ./structures/GuildAuditLogs */ "./node_modules/@citizenfx/discord.js/src/structures/GuildAuditLogs.js");\nexports.GuildAuditLogsEntry = __webpack_require__(/*! ./structures/GuildAuditLogs */ "./node_modules/@citizenfx/discord.js/src/structures/GuildAuditLogs.js").Entry;\nexports.GuildBan = __webpack_require__(/*! ./structures/GuildBan */ "./node_modules/@citizenfx/discord.js/src/structures/GuildBan.js");\nexports.GuildChannel = __webpack_require__(/*! ./structures/GuildChannel */ "./node_modules/@citizenfx/discord.js/src/structures/GuildChannel.js");\nexports.GuildEmoji = __webpack_require__(/*! ./structures/GuildEmoji */ "./node_modules/@citizenfx/discord.js/src/structures/GuildEmoji.js");\nexports.GuildMember = __webpack_require__(/*! ./structures/GuildMember */ "./node_modules/@citizenfx/discord.js/src/structures/GuildMember.js").GuildMember;\nexports.GuildPreview = __webpack_require__(/*! ./structures/GuildPreview */ "./node_modules/@citizenfx/discord.js/src/structures/GuildPreview.js");\nexports.GuildPreviewEmoji = __webpack_require__(/*! ./structures/GuildPreviewEmoji */ "./node_modules/@citizenfx/discord.js/src/structures/GuildPreviewEmoji.js");\nexports.GuildScheduledEvent = __webpack_require__(/*! ./structures/GuildScheduledEvent */ "./node_modules/@citizenfx/discord.js/src/structures/GuildScheduledEvent.js").GuildScheduledEvent;\nexports.GuildTemplate = __webpack_require__(/*! ./structures/GuildTemplate */ "./node_modules/@citizenfx/discord.js/src/structures/GuildTemplate.js");\nexports.Integration = __webpack_require__(/*! ./structures/Integration */ "./node_modules/@citizenfx/discord.js/src/structures/Integration.js");\nexports.IntegrationApplication = __webpack_require__(/*! ./structures/IntegrationApplication */ "./node_modules/@citizenfx/discord.js/src/structures/IntegrationApplication.js");\nexports.Interaction = __webpack_require__(/*! ./structures/Interaction */ "./node_modules/@citizenfx/discord.js/src/structures/Interaction.js");\nexports.InteractionCollector = __webpack_require__(/*! ./structures/InteractionCollector */ "./node_modules/@citizenfx/discord.js/src/structures/InteractionCollector.js");\nexports.InteractionWebhook = __webpack_require__(/*! ./structures/InteractionWebhook */ "./node_modules/@citizenfx/discord.js/src/structures/InteractionWebhook.js");\nexports.Invite = __webpack_require__(/*! ./structures/Invite */ "./node_modules/@citizenfx/discord.js/src/structures/Invite.js");\nexports.InviteStageInstance = __webpack_require__(/*! ./structures/InviteStageInstance */ "./node_modules/@citizenfx/discord.js/src/structures/InviteStageInstance.js");\nexports.InviteGuild = __webpack_require__(/*! ./structures/InviteGuild */ "./node_modules/@citizenfx/discord.js/src/structures/InviteGuild.js");\nexports.Message = __webpack_require__(/*! ./structures/Message */ "./node_modules/@citizenfx/discord.js/src/structures/Message.js").Message;\nexports.MessageActionRow = __webpack_require__(/*! ./structures/MessageActionRow */ "./node_modules/@citizenfx/discord.js/src/structures/MessageActionRow.js");\nexports.MessageAttachment = __webpack_require__(/*! ./structures/MessageAttachment */ "./node_modules/@citizenfx/discord.js/src/structures/MessageAttachment.js");\nexports.MessageButton = __webpack_require__(/*! ./structures/MessageButton */ "./node_modules/@citizenfx/discord.js/src/structures/MessageButton.js");\nexports.MessageCollector = __webpack_require__(/*! ./structures/MessageCollector */ "./node_modules/@citizenfx/discord.js/src/structures/MessageCollector.js");\nexports.MessageComponentInteraction = __webpack_require__(/*! ./structures/MessageComponentInteraction */ "./node_modules/@citizenfx/discord.js/src/structures/MessageComponentInteraction.js");\nexports.MessageContextMenuInteraction = __webpack_require__(/*! ./structures/MessageContextMenuInteraction */ "./node_modules/@citizenfx/discord.js/src/structures/MessageContextMenuInteraction.js");\nexports.MessageEmbed = __webpack_require__(/*! ./structures/MessageEmbed */ "./node_modules/@citizenfx/discord.js/src/structures/MessageEmbed.js");\nexports.MessageMentions = __webpack_require__(/*! ./structures/MessageMentions */ "./node_modules/@citizenfx/discord.js/src/structures/MessageMentions.js");\nexports.MessagePayload = __webpack_require__(/*! ./structures/MessagePayload */ "./node_modules/@citizenfx/discord.js/src/structures/MessagePayload.js");\nexports.MessageReaction = __webpack_require__(/*! ./structures/MessageReaction */ "./node_modules/@citizenfx/discord.js/src/structures/MessageReaction.js");\nexports.MessageSelectMenu = __webpack_require__(/*! ./structures/MessageSelectMenu */ "./node_modules/@citizenfx/discord.js/src/structures/MessageSelectMenu.js");\nexports.NewsChannel = __webpack_require__(/*! ./structures/NewsChannel */ "./node_modules/@citizenfx/discord.js/src/structures/NewsChannel.js");\nexports.OAuth2Guild = __webpack_require__(/*! ./structures/OAuth2Guild */ "./node_modules/@citizenfx/discord.js/src/structures/OAuth2Guild.js");\nexports.PartialGroupDMChannel = __webpack_require__(/*! ./structures/PartialGroupDMChannel */ "./node_modules/@citizenfx/discord.js/src/structures/PartialGroupDMChannel.js");\nexports.PermissionOverwrites = __webpack_require__(/*! ./structures/PermissionOverwrites */ "./node_modules/@citizenfx/discord.js/src/structures/PermissionOverwrites.js");\nexports.Presence = __webpack_require__(/*! ./structures/Presence */ "./node_modules/@citizenfx/discord.js/src/structures/Presence.js").Presence;\nexports.ReactionCollector = __webpack_require__(/*! ./structures/ReactionCollector */ "./node_modules/@citizenfx/discord.js/src/structures/ReactionCollector.js");\nexports.ReactionEmoji = __webpack_require__(/*! ./structures/ReactionEmoji */ "./node_modules/@citizenfx/discord.js/src/structures/ReactionEmoji.js");\nexports.RichPresenceAssets = __webpack_require__(/*! ./structures/Presence */ "./node_modules/@citizenfx/discord.js/src/structures/Presence.js").RichPresenceAssets;\nexports.Role = __webpack_require__(/*! ./structures/Role */ "./node_modules/@citizenfx/discord.js/src/structures/Role.js").Role;\nexports.SelectMenuInteraction = __webpack_require__(/*! ./structures/SelectMenuInteraction */ "./node_modules/@citizenfx/discord.js/src/structures/SelectMenuInteraction.js");\nexports.StageChannel = __webpack_require__(/*! ./structures/StageChannel */ "./node_modules/@citizenfx/discord.js/src/structures/StageChannel.js");\nexports.StageInstance = __webpack_require__(/*! ./structures/StageInstance */ "./node_modules/@citizenfx/discord.js/src/structures/StageInstance.js").StageInstance;\nexports.Sticker = __webpack_require__(/*! ./structures/Sticker */ "./node_modules/@citizenfx/discord.js/src/structures/Sticker.js").Sticker;\nexports.StickerPack = __webpack_require__(/*! ./structures/StickerPack */ "./node_modules/@citizenfx/discord.js/src/structures/StickerPack.js");\nexports.StoreChannel = __webpack_require__(/*! ./structures/StoreChannel */ "./node_modules/@citizenfx/discord.js/src/structures/StoreChannel.js");\nexports.Team = __webpack_require__(/*! ./structures/Team */ "./node_modules/@citizenfx/discord.js/src/structures/Team.js");\nexports.TeamMember = __webpack_require__(/*! ./structures/TeamMember */ "./node_modules/@citizenfx/discord.js/src/structures/TeamMember.js");\nexports.TextChannel = __webpack_require__(/*! ./structures/TextChannel */ "./node_modules/@citizenfx/discord.js/src/structures/TextChannel.js");\nexports.ThreadChannel = __webpack_require__(/*! ./structures/ThreadChannel */ "./node_modules/@citizenfx/discord.js/src/structures/ThreadChannel.js");\nexports.ThreadMember = __webpack_require__(/*! ./structures/ThreadMember */ "./node_modules/@citizenfx/discord.js/src/structures/ThreadMember.js");\nexports.Typing = __webpack_require__(/*! ./structures/Typing */ "./node_modules/@citizenfx/discord.js/src/structures/Typing.js");\nexports.User = __webpack_require__(/*! ./structures/User */ "./node_modules/@citizenfx/discord.js/src/structures/User.js");\nexports.UserContextMenuInteraction = __webpack_require__(/*! ./structures/UserContextMenuInteraction */ "./node_modules/@citizenfx/discord.js/src/structures/UserContextMenuInteraction.js");\nexports.VoiceChannel = __webpack_require__(/*! ./structures/VoiceChannel */ "./node_modules/@citizenfx/discord.js/src/structures/VoiceChannel.js");\nexports.VoiceRegion = __webpack_require__(/*! ./structures/VoiceRegion */ "./node_modules/@citizenfx/discord.js/src/structures/VoiceRegion.js");\nexports.VoiceState = __webpack_require__(/*! ./structures/VoiceState */ "./node_modules/@citizenfx/discord.js/src/structures/VoiceState.js");\nexports.Webhook = __webpack_require__(/*! ./structures/Webhook */ "./node_modules/@citizenfx/discord.js/src/structures/Webhook.js");\nexports.Widget = __webpack_require__(/*! ./structures/Widget */ "./node_modules/@citizenfx/discord.js/src/structures/Widget.js");\nexports.WidgetMember = __webpack_require__(/*! ./structures/WidgetMember */ "./node_modules/@citizenfx/discord.js/src/structures/WidgetMember.js");\nexports.WelcomeChannel = __webpack_require__(/*! ./structures/WelcomeChannel */ "./node_modules/@citizenfx/discord.js/src/structures/WelcomeChannel.js");\nexports.WelcomeScreen = __webpack_require__(/*! ./structures/WelcomeScreen */ "./node_modules/@citizenfx/discord.js/src/structures/WelcomeScreen.js");\n\nexports.WebSocket = __webpack_require__(/*! ./WebSocket */ "./node_modules/@citizenfx/discord.js/src/WebSocket.js");\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/index.js?')},"./node_modules/@citizenfx/discord.js/src/managers/ApplicationCommandManager.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/ApplicationCommandManager.js ***!
  \**************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst ApplicationCommandPermissionsManager = __webpack_require__(/*! ./ApplicationCommandPermissionsManager */ \"./node_modules/@citizenfx/discord.js/src/managers/ApplicationCommandPermissionsManager.js\");\nconst CachedManager = __webpack_require__(/*! ./CachedManager */ \"./node_modules/@citizenfx/discord.js/src/managers/CachedManager.js\");\nconst { TypeError } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst ApplicationCommand = __webpack_require__(/*! ../structures/ApplicationCommand */ \"./node_modules/@citizenfx/discord.js/src/structures/ApplicationCommand.js\");\nconst { ApplicationCommandTypes } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\n\n/**\n * Manages API methods for application commands and stores their cache.\n * @extends {CachedManager}\n */\nclass ApplicationCommandManager extends CachedManager {\n  constructor(client, iterable) {\n    super(client, ApplicationCommand, iterable);\n\n    /**\n     * The manager for permissions of arbitrary commands on arbitrary guilds\n     * @type {ApplicationCommandPermissionsManager}\n     */\n    this.permissions = new ApplicationCommandPermissionsManager(this);\n  }\n\n  /**\n   * The cache of this manager\n   * @type {Collection<Snowflake, ApplicationCommand>}\n   * @name ApplicationCommandManager#cache\n   */\n\n  _add(data, cache, guildId) {\n    return super._add(data, cache, { extras: [this.guild, guildId] });\n  }\n\n  /**\n   * The APIRouter path to the commands\n   * @param {Snowflake} [options.id] The application command's id\n   * @param {Snowflake} [options.guildId] The guild's id to use in the path,\n   * ignored when using a {@link GuildApplicationCommandManager}\n   * @returns {Object}\n   * @private\n   */\n  commandPath({ id, guildId } = {}) {\n    let path = this.client.api.applications(this.client.application.id);\n    if (this.guild ?? guildId) path = path.guilds(this.guild?.id ?? guildId);\n    return id ? path.commands(id) : path.commands;\n  }\n\n  /**\n   * Data that resolves to give an ApplicationCommand object. This can be:\n   * * An ApplicationCommand object\n   * * A Snowflake\n   * @typedef {ApplicationCommand|Snowflake} ApplicationCommandResolvable\n   */\n\n  /**\n   * Options used to fetch data from Discord\n   * @typedef {Object} BaseFetchOptions\n   * @property {boolean} [cache=true] Whether to cache the fetched data if it wasn't already\n   * @property {boolean} [force=false] Whether to skip the cache check and request the API\n   */\n\n  /**\n   * Options used to fetch Application Commands from Discord\n   * @typedef {BaseFetchOptions} FetchApplicationCommandOptions\n   * @property {Snowflake} [guildId] The guild's id to fetch commands for, for when the guild is not cached\n   */\n\n  /**\n   * Obtains one or multiple application commands from Discord, or the cache if it's already available.\n   * @param {Snowflake} [id] The application command's id\n   * @param {FetchApplicationCommandOptions} [options] Additional options for this fetch\n   * @returns {Promise<ApplicationCommand|Collection<Snowflake, ApplicationCommand>>}\n   * @example\n   * // Fetch a single command\n   * client.application.commands.fetch('123456789012345678')\n   *   .then(command => console.log(`Fetched command ${command.name}`))\n   *   .catch(console.error);\n   * @example\n   * // Fetch all commands\n   * guild.commands.fetch()\n   *   .then(commands => console.log(`Fetched ${commands.size} commands`))\n   *   .catch(console.error);\n   */\n  async fetch(id, { guildId, cache = true, force = false } = {}) {\n    if (typeof id === 'object') {\n      ({ guildId, cache = true } = id);\n    } else if (id) {\n      if (!force) {\n        const existing = this.cache.get(id);\n        if (existing) return existing;\n      }\n      const command = await this.commandPath({ id, guildId }).get();\n      return this._add(command, cache);\n    }\n\n    const data = await this.commandPath({ guildId }).get();\n    return data.reduce((coll, command) => coll.set(command.id, this._add(command, cache, guildId)), new Collection());\n  }\n\n  /**\n   * Creates an application command.\n   * @param {ApplicationCommandData|APIApplicationCommand} command The command\n   * @param {Snowflake} [guildId] The guild's id to create this command in,\n   * ignored when using a {@link GuildApplicationCommandManager}\n   * @returns {Promise<ApplicationCommand>}\n   * @example\n   * // Create a new command\n   * client.application.commands.create({\n   *   name: 'test',\n   *   description: 'A test command',\n   * })\n   *   .then(console.log)\n   *   .catch(console.error);\n   */\n  async create(command, guildId) {\n    const data = await this.commandPath({ guildId }).post({\n      data: this.constructor.transformCommand(command),\n    });\n    return this._add(data, true, guildId);\n  }\n\n  /**\n   * Sets all the commands for this application or guild.\n   * @param {ApplicationCommandData[]|APIApplicationCommand[]} commands The commands\n   * @param {Snowflake} [guildId] The guild's id to create the commands in,\n   * ignored when using a {@link GuildApplicationCommandManager}\n   * @returns {Promise<Collection<Snowflake, ApplicationCommand>>}\n   * @example\n   * // Set all commands to just this one\n   * client.application.commands.set([\n   *   {\n   *     name: 'test',\n   *     description: 'A test command',\n   *   },\n   * ])\n   *   .then(console.log)\n   *   .catch(console.error);\n   * @example\n   * // Remove all commands\n   * guild.commands.set([])\n   *   .then(console.log)\n   *   .catch(console.error);\n   */\n  async set(commands, guildId) {\n    const data = await this.commandPath({ guildId }).put({\n      data: commands.map(c => this.constructor.transformCommand(c)),\n    });\n    return data.reduce((coll, command) => coll.set(command.id, this._add(command, true, guildId)), new Collection());\n  }\n\n  /**\n   * Edits an application command.\n   * @param {ApplicationCommandResolvable} command The command to edit\n   * @param {ApplicationCommandData|APIApplicationCommand} data The data to update the command with\n   * @param {Snowflake} [guildId] The guild's id where the command registered,\n   * ignored when using a {@link GuildApplicationCommandManager}\n   * @returns {Promise<ApplicationCommand>}\n   * @example\n   * // Edit an existing command\n   * client.application.commands.edit('123456789012345678', {\n   *   description: 'New description',\n   * })\n   *   .then(console.log)\n   *   .catch(console.error);\n   */\n  async edit(command, data, guildId) {\n    const id = this.resolveId(command);\n    if (!id) throw new TypeError('INVALID_TYPE', 'command', 'ApplicationCommandResolvable');\n\n    const patched = await this.commandPath({ id, guildId }).patch({\n      data: this.constructor.transformCommand(data),\n    });\n    return this._add(patched, true, guildId);\n  }\n\n  /**\n   * Deletes an application command.\n   * @param {ApplicationCommandResolvable} command The command to delete\n   * @param {Snowflake} [guildId] The guild's id where the command is registered,\n   * ignored when using a {@link GuildApplicationCommandManager}\n   * @returns {Promise<?ApplicationCommand>}\n   * @example\n   * // Delete a command\n   * guild.commands.delete('123456789012345678')\n   *   .then(console.log)\n   *   .catch(console.error);\n   */\n  async delete(command, guildId) {\n    const id = this.resolveId(command);\n    if (!id) throw new TypeError('INVALID_TYPE', 'command', 'ApplicationCommandResolvable');\n\n    await this.commandPath({ id, guildId }).delete();\n\n    const cached = this.cache.get(id);\n    this.cache.delete(id);\n    return cached ?? null;\n  }\n\n  /**\n   * Transforms an {@link ApplicationCommandData} object into something that can be used with the API.\n   * @param {ApplicationCommandData|APIApplicationCommand} command The command to transform\n   * @returns {APIApplicationCommand}\n   * @private\n   */\n  static transformCommand(command) {\n    return {\n      name: command.name,\n      description: command.description,\n      type: typeof command.type === 'number' ? command.type : ApplicationCommandTypes[command.type],\n      options: command.options?.map(o => ApplicationCommand.transformOption(o)),\n      default_permission: command.defaultPermission ?? command.default_permission,\n    };\n  }\n}\n\nmodule.exports = ApplicationCommandManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/ApplicationCommandManager.js?")},"./node_modules/@citizenfx/discord.js/src/managers/ApplicationCommandPermissionsManager.js":
/*!*************************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/ApplicationCommandPermissionsManager.js ***!
  \*************************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst BaseManager = __webpack_require__(/*! ./BaseManager */ \"./node_modules/@citizenfx/discord.js/src/managers/BaseManager.js\");\nconst { Error, TypeError } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst { ApplicationCommandPermissionTypes, APIErrors } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\n\n/**\n * Manages API methods for permissions of Application Commands.\n * @extends {BaseManager}\n */\nclass ApplicationCommandPermissionsManager extends BaseManager {\n  constructor(manager) {\n    super(manager.client);\n\n    /**\n     * The manager or command that this manager belongs to\n     * @type {ApplicationCommandManager|ApplicationCommand}\n     * @private\n     */\n    this.manager = manager;\n\n    /**\n     * The guild that this manager acts on\n     * @type {?Guild}\n     */\n    this.guild = manager.guild ?? null;\n\n    /**\n     * The id of the guild that this manager acts on\n     * @type {?Snowflake}\n     */\n    this.guildId = manager.guildId ?? manager.guild?.id ?? null;\n\n    /**\n     * The id of the command this manager acts on\n     * @type {?Snowflake}\n     */\n    this.commandId = manager.id ?? null;\n  }\n\n  /**\n   * The APIRouter path to the commands\n   * @param {Snowflake} guildId The guild's id to use in the path,\n   * @param {Snowflake} [commandId] The application command's id\n   * @returns {Object}\n   * @private\n   */\n  permissionsPath(guildId, commandId) {\n    return this.client.api.applications(this.client.application.id).guilds(guildId).commands(commandId).permissions;\n  }\n\n  /**\n   * Data for setting the permissions of an application command.\n   * @typedef {Object} ApplicationCommandPermissionData\n   * @property {Snowflake} id The role or user's id\n   * @property {ApplicationCommandPermissionType|number} type Whether this permission is for a role or a user\n   * @property {boolean} permission Whether the role or user has the permission to use this command\n   */\n\n  /**\n   * The object returned when fetching permissions for an application command.\n   * @typedef {Object} ApplicationCommandPermissions\n   * @property {Snowflake} id The role or user's id\n   * @property {ApplicationCommandPermissionType} type Whether this permission is for a role or a user\n   * @property {boolean} permission Whether the role or user has the permission to use this command\n   */\n\n  /**\n   * Options for managing permissions for one or more Application Commands\n   * <warn>When passing these options to a manager where `guildId` is `null`,\n   * `guild` is a required parameter</warn>\n   * @typedef {Object} BaseApplicationCommandPermissionsOptions\n   * @property {GuildResolvable} [guild] The guild to modify / check permissions for\n   * <warn>Ignored when the manager has a non-null `guildId` property</warn>\n   * @property {ApplicationCommandResolvable} [command] The command to modify / check permissions for\n   * <warn>Ignored when the manager has a non-null `commandId` property</warn>\n   */\n\n  /**\n   * Fetches the permissions for one or multiple commands.\n   * @param {BaseApplicationCommandPermissionsOptions} [options] Options used to fetch permissions\n   * @returns {Promise<ApplicationCommandPermissions[]|Collection<Snowflake, ApplicationCommandPermissions[]>>}\n   * @example\n   * // Fetch permissions for one command\n   * guild.commands.permissions.fetch({ command: '123456789012345678' })\n   *   .then(perms => console.log(`Fetched permissions for ${perms.length} users`))\n   *   .catch(console.error);\n   * @example\n   * // Fetch permissions for all commands in a guild\n   * client.application.commands.permissions.fetch({ guild: '123456789012345678' })\n   *   .then(perms => console.log(`Fetched permissions for ${perms.size} commands`))\n   *   .catch(console.error);\n   */\n  async fetch({ guild, command } = {}) {\n    const { guildId, commandId } = this._validateOptions(guild, command);\n    if (commandId) {\n      const data = await this.permissionsPath(guildId, commandId).get();\n      return data.permissions.map(perm => this.constructor.transformPermissions(perm, true));\n    }\n\n    const data = await this.permissionsPath(guildId).get();\n    return data.reduce(\n      (coll, perm) =>\n        coll.set(\n          perm.id,\n          perm.permissions.map(p => this.constructor.transformPermissions(p, true)),\n        ),\n      new Collection(),\n    );\n  }\n\n  /**\n   * Data used for overwriting the permissions for all application commands in a guild.\n   * @typedef {Object} GuildApplicationCommandPermissionData\n   * @property {Snowflake} id The command's id\n   * @property {ApplicationCommandPermissionData[]} permissions The permissions for this command\n   */\n\n  /**\n   * Options used to set permissions for one or more Application Commands in a guild\n   * <warn>One of `command` AND `permissions`, OR `fullPermissions` is required.\n   * `fullPermissions` is not a valid option when passing to a manager where `commandId` is non-null</warn>\n   * @typedef {BaseApplicationCommandPermissionsOptions} SetApplicationCommandPermissionsOptions\n   * @property {ApplicationCommandPermissionData[]} [permissions] The new permissions for the command\n   * @property {GuildApplicationCommandPermissionData[]} [fullPermissions] The new permissions for all commands\n   * in a guild <warn>When this parameter is set, `permissions` and `command` are ignored</warn>\n   */\n\n  /**\n   * Sets the permissions for one or more commands.\n   * @param {SetApplicationCommandPermissionsOptions} options Options used to set permissions\n   * @returns {Promise<ApplicationCommandPermissions[]|Collection<Snowflake, ApplicationCommandPermissions[]>>}\n   * @example\n   * // Set the permissions for one command\n   * client.application.commands.permissions.set({ guild: '892455839386304532', command: '123456789012345678',\n   *  permissions: [\n   *    {\n   *      id: '876543210987654321',\n   *      type: 'USER',\n   *      permission: false,\n   *    },\n   * ]})\n   *   .then(console.log)\n   *   .catch(console.error);\n   * @example\n   * // Set the permissions for all commands\n   * guild.commands.permissions.set({ fullPermissions: [\n   *   {\n   *     id: '123456789012345678',\n   *     permissions: [{\n   *       id: '876543210987654321',\n   *       type: 'USER',\n   *       permission: false,\n   *     }],\n   *   },\n   * ]})\n   *   .then(console.log)\n   *   .catch(console.error);\n   */\n  async set({ guild, command, permissions, fullPermissions } = {}) {\n    const { guildId, commandId } = this._validateOptions(guild, command);\n\n    if (commandId) {\n      if (!Array.isArray(permissions)) {\n        throw new TypeError('INVALID_TYPE', 'permissions', 'Array of ApplicationCommandPermissionData', true);\n      }\n      const data = await this.permissionsPath(guildId, commandId).put({\n        data: { permissions: permissions.map(perm => this.constructor.transformPermissions(perm)) },\n      });\n      return data.permissions.map(perm => this.constructor.transformPermissions(perm, true));\n    }\n\n    if (!Array.isArray(fullPermissions)) {\n      throw new TypeError('INVALID_TYPE', 'fullPermissions', 'Array of GuildApplicationCommandPermissionData', true);\n    }\n\n    const APIPermissions = [];\n    for (const perm of fullPermissions) {\n      if (!Array.isArray(perm.permissions)) throw new TypeError('INVALID_ELEMENT', 'Array', 'fullPermissions', perm);\n      APIPermissions.push({\n        id: perm.id,\n        permissions: perm.permissions.map(p => this.constructor.transformPermissions(p)),\n      });\n    }\n    const data = await this.permissionsPath(guildId).put({\n      data: APIPermissions,\n    });\n    return data.reduce(\n      (coll, perm) =>\n        coll.set(\n          perm.id,\n          perm.permissions.map(p => this.constructor.transformPermissions(p, true)),\n        ),\n      new Collection(),\n    );\n  }\n\n  /**\n   * Options used to add permissions to a command\n   * <warn>The `command` parameter is not optional when the managers `commandId` is `null`</warn>\n   * @typedef {BaseApplicationCommandPermissionsOptions} AddApplicationCommandPermissionsOptions\n   * @property {ApplicationCommandPermissionData[]} permissions The permissions to add to the command\n   */\n\n  /**\n   * Add permissions to a command.\n   * @param {AddApplicationCommandPermissionsOptions} options Options used to add permissions\n   * @returns {Promise<ApplicationCommandPermissions[]>}\n   * @example\n   * // Block a role from the command permissions\n   * guild.commands.permissions.add({ command: '123456789012345678', permissions: [\n   *   {\n   *     id: '876543211234567890',\n   *     type: 'ROLE',\n   *     permission: false\n   *   },\n   * ]})\n   *   .then(console.log)\n   *   .catch(console.error);\n   */\n  async add({ guild, command, permissions }) {\n    const { guildId, commandId } = this._validateOptions(guild, command);\n    if (!commandId) throw new TypeError('INVALID_TYPE', 'command', 'ApplicationCommandResolvable');\n    if (!Array.isArray(permissions)) {\n      throw new TypeError('INVALID_TYPE', 'permissions', 'Array of ApplicationCommandPermissionData', true);\n    }\n\n    let existing = [];\n    try {\n      existing = await this.fetch({ guild: guildId, command: commandId });\n    } catch (error) {\n      if (error.code !== APIErrors.UNKNOWN_APPLICATION_COMMAND_PERMISSIONS) throw error;\n    }\n\n    const newPermissions = permissions.slice();\n    for (const perm of existing) {\n      if (!newPermissions.some(x => x.id === perm.id)) {\n        newPermissions.push(perm);\n      }\n    }\n\n    return this.set({ guild: guildId, command: commandId, permissions: newPermissions });\n  }\n\n  /**\n   * Options used to remove permissions from a command\n   * <warn>The `command` parameter is not optional when the managers `commandId` is `null`</warn>\n   * @typedef {BaseApplicationCommandPermissionsOptions} RemoveApplicationCommandPermissionsOptions\n   * @property {UserResolvable|UserResolvable[]} [users] The user(s) to remove from the command permissions\n   * <warn>One of `users` or `roles` is required</warn>\n   * @property {RoleResolvable|RoleResolvable[]} [roles] The role(s) to remove from the command permissions\n   * <warn>One of `users` or `roles` is required</warn>\n   */\n\n  /**\n   * Remove permissions from a command.\n   * @param {RemoveApplicationCommandPermissionsOptions} options Options used to remove permissions\n   * @returns {Promise<ApplicationCommandPermissions[]>}\n   * @example\n   * // Remove a user permission from this command\n   * guild.commands.permissions.remove({ command: '123456789012345678', users: '876543210123456789' })\n   *   .then(console.log)\n   *   .catch(console.error);\n   * @example\n   * // Remove multiple roles from this command\n   * guild.commands.permissions.remove({\n   *   command: '123456789012345678', roles: ['876543210123456789', '765432101234567890']\n   * })\n   *    .then(console.log)\n   *    .catch(console.error);\n   */\n  async remove({ guild, command, users, roles }) {\n    const { guildId, commandId } = this._validateOptions(guild, command);\n    if (!commandId) throw new TypeError('INVALID_TYPE', 'command', 'ApplicationCommandResolvable');\n\n    if (!users && !roles) throw new TypeError('INVALID_TYPE', 'users OR roles', 'Array or Resolvable', true);\n\n    let resolvedIds = [];\n    if (Array.isArray(users)) {\n      users.forEach(user => {\n        const userId = this.client.users.resolveId(user);\n        if (!userId) throw new TypeError('INVALID_ELEMENT', 'Array', 'users', user);\n        resolvedIds.push(userId);\n      });\n    } else if (users) {\n      const userId = this.client.users.resolveId(users);\n      if (!userId) {\n        throw new TypeError('INVALID_TYPE', 'users', 'Array or UserResolvable');\n      }\n      resolvedIds.push(userId);\n    }\n\n    if (Array.isArray(roles)) {\n      roles.forEach(role => {\n        if (typeof role === 'string') {\n          resolvedIds.push(role);\n          return;\n        }\n        if (!this.guild) throw new Error('GUILD_UNCACHED_ROLE_RESOLVE');\n        const roleId = this.guild.roles.resolveId(role);\n        if (!roleId) throw new TypeError('INVALID_ELEMENT', 'Array', 'users', role);\n        resolvedIds.push(roleId);\n      });\n    } else if (roles) {\n      if (typeof roles === 'string') {\n        resolvedIds.push(roles);\n      } else {\n        if (!this.guild) throw new Error('GUILD_UNCACHED_ROLE_RESOLVE');\n        const roleId = this.guild.roles.resolveId(roles);\n        if (!roleId) {\n          throw new TypeError('INVALID_TYPE', 'users', 'Array or RoleResolvable');\n        }\n        resolvedIds.push(roleId);\n      }\n    }\n\n    let existing = [];\n    try {\n      existing = await this.fetch({ guild: guildId, command: commandId });\n    } catch (error) {\n      if (error.code !== APIErrors.UNKNOWN_APPLICATION_COMMAND_PERMISSIONS) throw error;\n    }\n\n    const permissions = existing.filter(perm => !resolvedIds.includes(perm.id));\n\n    return this.set({ guild: guildId, command: commandId, permissions });\n  }\n\n  /**\n   * Options used to check the existence of permissions on a command\n   * <warn>The `command` parameter is not optional when the managers `commandId` is `null`</warn>\n   * @typedef {BaseApplicationCommandPermissionsOptions} HasApplicationCommandPermissionsOptions\n   * @property {UserResolvable|RoleResolvable} permissionId The user or role to check if a permission exists for\n   * on this command.\n   */\n\n  /**\n   * Check whether a permission exists for a user or role\n   * @param {AddApplicationCommandPermissionsOptions} options Options used to check permissions\n   * @returns {Promise<boolean>}\n   * @example\n   * // Check whether a user has permission to use a command\n   * guild.commands.permissions.has({ command: '123456789012345678', permissionId: '876543210123456789' })\n   *  .then(console.log)\n   *  .catch(console.error);\n   */\n  async has({ guild, command, permissionId }) {\n    const { guildId, commandId } = this._validateOptions(guild, command);\n    if (!commandId) throw new TypeError('INVALID_TYPE', 'command', 'ApplicationCommandResolvable');\n\n    if (!permissionId) throw new TypeError('INVALID_TYPE', 'permissionId', 'UserResolvable or RoleResolvable');\n    let resolvedId = permissionId;\n    if (typeof permissionId !== 'string') {\n      resolvedId = this.client.users.resolveId(permissionId);\n      if (!resolvedId) {\n        if (!this.guild) throw new Error('GUILD_UNCACHED_ROLE_RESOLVE');\n        resolvedId = this.guild.roles.resolveId(permissionId);\n      }\n      if (!resolvedId) {\n        throw new TypeError('INVALID_TYPE', 'permissionId', 'UserResolvable or RoleResolvable');\n      }\n    }\n\n    let existing = [];\n    try {\n      existing = await this.fetch({ guild: guildId, command: commandId });\n    } catch (error) {\n      if (error.code !== APIErrors.UNKNOWN_APPLICATION_COMMAND_PERMISSIONS) throw error;\n    }\n\n    return existing.some(perm => perm.id === resolvedId);\n  }\n\n  _validateOptions(guild, command) {\n    const guildId = this.guildId ?? this.client.guilds.resolveId(guild);\n    if (!guildId) throw new Error('GLOBAL_COMMAND_PERMISSIONS');\n    let commandId = this.commandId;\n    if (command && !commandId) {\n      commandId = this.manager.resolveId?.(command);\n      if (!commandId && this.guild) {\n        commandId = this.guild.commands.resolveId(command);\n      }\n      commandId ??= this.client.application?.commands.resolveId(command);\n      if (!commandId) {\n        throw new TypeError('INVALID_TYPE', 'command', 'ApplicationCommandResolvable', true);\n      }\n    }\n    return { guildId, commandId };\n  }\n\n  /**\n   * Transforms an {@link ApplicationCommandPermissionData} object into something that can be used with the API.\n   * @param {ApplicationCommandPermissionData} permissions The permissions to transform\n   * @param {boolean} [received] Whether these permissions have been received from Discord\n   * @returns {APIApplicationCommandPermissions}\n   * @private\n   */\n  static transformPermissions(permissions, received) {\n    return {\n      id: permissions.id,\n      permission: permissions.permission,\n      type:\n        typeof permissions.type === 'number' && !received\n          ? permissions.type\n          : ApplicationCommandPermissionTypes[permissions.type],\n    };\n  }\n}\n\nmodule.exports = ApplicationCommandPermissionsManager;\n\n/* eslint-disable max-len */\n/**\n * @external APIApplicationCommandPermissions\n * @see {@link https://discord.com/developers/docs/interactions/application-commands#application-command-permissions-object-application-command-permissions-structure}\n */\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/ApplicationCommandPermissionsManager.js?")},"./node_modules/@citizenfx/discord.js/src/managers/BaseGuildEmojiManager.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/BaseGuildEmojiManager.js ***!
  \**********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst CachedManager = __webpack_require__(/*! ./CachedManager */ \"./node_modules/@citizenfx/discord.js/src/managers/CachedManager.js\");\nconst GuildEmoji = __webpack_require__(/*! ../structures/GuildEmoji */ \"./node_modules/@citizenfx/discord.js/src/structures/GuildEmoji.js\");\nconst ReactionEmoji = __webpack_require__(/*! ../structures/ReactionEmoji */ \"./node_modules/@citizenfx/discord.js/src/structures/ReactionEmoji.js\");\nconst { parseEmoji } = __webpack_require__(/*! ../util/Util */ \"./node_modules/@citizenfx/discord.js/src/util/Util.js\");\n\n/**\n * Holds methods to resolve GuildEmojis and stores their cache.\n * @extends {CachedManager}\n */\nclass BaseGuildEmojiManager extends CachedManager {\n  constructor(client, iterable) {\n    super(client, GuildEmoji, iterable);\n  }\n\n  /**\n   * The cache of GuildEmojis\n   * @type {Collection<Snowflake, GuildEmoji>}\n   * @name BaseGuildEmojiManager#cache\n   */\n\n  /**\n   * Data that can be resolved into a GuildEmoji object. This can be:\n   * * A Snowflake\n   * * A GuildEmoji object\n   * * A ReactionEmoji object\n   * @typedef {Snowflake|GuildEmoji|ReactionEmoji} EmojiResolvable\n   */\n\n  /**\n   * Resolves an EmojiResolvable to an Emoji object.\n   * @param {EmojiResolvable} emoji The Emoji resolvable to identify\n   * @returns {?GuildEmoji}\n   */\n  resolve(emoji) {\n    if (emoji instanceof ReactionEmoji) return super.resolve(emoji.id);\n    return super.resolve(emoji);\n  }\n\n  /**\n   * Resolves an EmojiResolvable to an Emoji id string.\n   * @param {EmojiResolvable} emoji The Emoji resolvable to identify\n   * @returns {?Snowflake}\n   */\n  resolveId(emoji) {\n    if (emoji instanceof ReactionEmoji) return emoji.id;\n    return super.resolveId(emoji);\n  }\n\n  /**\n   * Data that can be resolved to give an emoji identifier. This can be:\n   * * The unicode representation of an emoji\n   * * The `<a:name:id>`, `<:name:id>`, `a:name:id` or `name:id` emoji identifier string of an emoji\n   * * An EmojiResolvable\n   * @typedef {string|EmojiResolvable} EmojiIdentifierResolvable\n   */\n\n  /**\n   * Resolves an EmojiResolvable to an emoji identifier.\n   * @param {EmojiIdentifierResolvable} emoji The emoji resolvable to resolve\n   * @returns {?string}\n   */\n  resolveIdentifier(emoji) {\n    const emojiResolvable = this.resolve(emoji);\n    if (emojiResolvable) return emojiResolvable.identifier;\n    if (emoji instanceof ReactionEmoji) return emoji.identifier;\n    if (typeof emoji === 'string') {\n      const res = parseEmoji(emoji);\n      if (res?.name.length) {\n        emoji = `${res.animated ? 'a:' : ''}${res.name}${res.id ? `:${res.id}` : ''}`;\n      }\n      if (!emoji.includes('%')) return encodeURIComponent(emoji);\n      return emoji;\n    }\n    return null;\n  }\n}\n\nmodule.exports = BaseGuildEmojiManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/BaseGuildEmojiManager.js?")},"./node_modules/@citizenfx/discord.js/src/managers/BaseManager.js":
/*!************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/BaseManager.js ***!
  \************************************************************************/module=>{"use strict";eval("\n\n/**\n * Manages the API methods of a data model.\n * @abstract\n */\nclass BaseManager {\n  constructor(client) {\n    /**\n     * The client that instantiated this Manager\n     * @name BaseManager#client\n     * @type {Client}\n     * @readonly\n     */\n    Object.defineProperty(this, 'client', { value: client });\n  }\n}\n\nmodule.exports = BaseManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/BaseManager.js?")},"./node_modules/@citizenfx/discord.js/src/managers/CachedManager.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/CachedManager.js ***!
  \**************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst DataManager = __webpack_require__(/*! ./DataManager */ "./node_modules/@citizenfx/discord.js/src/managers/DataManager.js");\nconst { _cleanupSymbol } = __webpack_require__(/*! ../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\n/**\n * Manages the API methods of a data model with a mutable cache of instances.\n * @extends {DataManager}\n * @abstract\n */\nclass CachedManager extends DataManager {\n  constructor(client, holds, iterable) {\n    super(client, holds);\n\n    Object.defineProperty(this, \'_cache\', { value: this.client.options.makeCache(this.constructor, this.holds) });\n\n    let cleanup = this._cache[_cleanupSymbol]?.();\n    if (cleanup) {\n      cleanup = cleanup.bind(this._cache);\n      client._cleanups.add(cleanup);\n      client._finalizers.register(this, {\n        cleanup,\n        message:\n          `Garbage collection completed on ${this.constructor.name}, ` +\n          `which had a ${this._cache.constructor.name} of ${this.holds.name}.`,\n        name: this.constructor.name,\n      });\n    }\n\n    if (iterable) {\n      for (const item of iterable) {\n        this._add(item);\n      }\n    }\n  }\n\n  /**\n   * The cache of items for this manager.\n   * @type {Collection}\n   * @abstract\n   */\n  get cache() {\n    return this._cache;\n  }\n\n  _add(data, cache = true, { id, extras = [] } = {}) {\n    const existing = this.cache.get(id ?? data.id);\n    if (existing) {\n      if (cache) {\n        existing._patch(data);\n        return existing;\n      }\n      const clone = existing._clone();\n      clone._patch(data);\n      return clone;\n    }\n\n    const entry = this.holds ? new this.holds(this.client, data, ...extras) : data;\n    if (cache) this.cache.set(id ?? entry.id, entry);\n    return entry;\n  }\n}\n\nmodule.exports = CachedManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/CachedManager.js?')},"./node_modules/@citizenfx/discord.js/src/managers/ChannelManager.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/ChannelManager.js ***!
  \***************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst process = __webpack_require__(/*! node:process */ \"node:process\");\nconst CachedManager = __webpack_require__(/*! ./CachedManager */ \"./node_modules/@citizenfx/discord.js/src/managers/CachedManager.js\");\nconst { Channel } = __webpack_require__(/*! ../structures/Channel */ \"./node_modules/@citizenfx/discord.js/src/structures/Channel.js\");\nconst { Events, ThreadChannelTypes } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\n\nlet cacheWarningEmitted = false;\n\n/**\n * A manager of channels belonging to a client\n * @extends {CachedManager}\n */\nclass ChannelManager extends CachedManager {\n  constructor(client, iterable) {\n    super(client, Channel, iterable);\n    const defaultCaching =\n      this._cache.constructor.name === 'Collection' ||\n      ((this._cache.maxSize === undefined || this._cache.maxSize === Infinity) &&\n        (this._cache.sweepFilter === undefined || this._cache.sweepFilter.isDefault));\n    if (!cacheWarningEmitted && !defaultCaching) {\n      cacheWarningEmitted = true;\n      process.emitWarning(\n        `Overriding the cache handling for ${this.constructor.name} is unsupported and breaks functionality.`,\n        'UnsupportedCacheOverwriteWarning',\n      );\n    }\n  }\n\n  /**\n   * The cache of Channels\n   * @type {Collection<Snowflake, Channel>}\n   * @name ChannelManager#cache\n   */\n\n  _add(data, guild, { cache = true, allowUnknownGuild = false, fromInteraction = false } = {}) {\n    const existing = this.cache.get(data.id);\n    if (existing) {\n      if (cache) existing._patch(data, fromInteraction);\n      guild?.channels?._add(existing);\n      if (ThreadChannelTypes.includes(existing.type)) {\n        existing.parent?.threads?._add(existing);\n      }\n      return existing;\n    }\n\n    const channel = Channel.create(this.client, data, guild, { allowUnknownGuild, fromInteraction });\n\n    if (!channel) {\n      this.client.emit(Events.DEBUG, `Failed to find guild, or unknown type for channel ${data.id} ${data.type}`);\n      return null;\n    }\n\n    if (cache && !allowUnknownGuild) this.cache.set(channel.id, channel);\n\n    return channel;\n  }\n\n  _remove(id) {\n    const channel = this.cache.get(id);\n    channel?.guild?.channels.cache.delete(id);\n    channel?.parent?.threads?.cache.delete(id);\n    this.cache.delete(id);\n  }\n\n  /**\n   * Data that can be resolved to give a Channel object. This can be:\n   * * A Channel object\n   * * A Snowflake\n   * @typedef {Channel|Snowflake} ChannelResolvable\n   */\n\n  /**\n   * Resolves a ChannelResolvable to a Channel object.\n   * @method resolve\n   * @memberof ChannelManager\n   * @instance\n   * @param {ChannelResolvable} channel The channel resolvable to resolve\n   * @returns {?Channel}\n   */\n\n  /**\n   * Resolves a ChannelResolvable to a channel id string.\n   * @method resolveId\n   * @memberof ChannelManager\n   * @instance\n   * @param {ChannelResolvable} channel The channel resolvable to resolve\n   * @returns {?Snowflake}\n   */\n\n  /**\n   * Options for fetching a channel from Discord\n   * @typedef {BaseFetchOptions} FetchChannelOptions\n   * @property {boolean} [allowUnknownGuild=false] Allows the channel to be returned even if the guild is not in cache,\n   * it will not be cached. <warn>Many of the properties and methods on the returned channel will throw errors</warn>\n   */\n\n  /**\n   * Obtains a channel from Discord, or the channel cache if it's already available.\n   * @param {Snowflake} id The channel's id\n   * @param {FetchChannelOptions} [options] Additional options for this fetch\n   * @returns {Promise<?Channel>}\n   * @example\n   * // Fetch a channel by its id\n   * client.channels.fetch('222109930545610754')\n   *   .then(channel => console.log(channel.name))\n   *   .catch(console.error);\n   */\n  async fetch(id, { allowUnknownGuild = false, cache = true, force = false } = {}) {\n    if (!force) {\n      const existing = this.cache.get(id);\n      if (existing && !existing.partial) return existing;\n    }\n\n    const data = await this.client.api.channels(id).get();\n    return this._add(data, null, { cache, allowUnknownGuild });\n  }\n}\n\nmodule.exports = ChannelManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/ChannelManager.js?")},"./node_modules/@citizenfx/discord.js/src/managers/DataManager.js":
/*!************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/DataManager.js ***!
  \************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst BaseManager = __webpack_require__(/*! ./BaseManager */ \"./node_modules/@citizenfx/discord.js/src/managers/BaseManager.js\");\nconst { Error } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\n\n/**\n * Manages the API methods of a data model along with a collection of instances.\n * @extends {BaseManager}\n * @abstract\n */\nclass DataManager extends BaseManager {\n  constructor(client, holds) {\n    super(client);\n\n    /**\n     * The data structure belonging to this manager.\n     * @name DataManager#holds\n     * @type {Function}\n     * @private\n     * @readonly\n     */\n    Object.defineProperty(this, 'holds', { value: holds });\n  }\n\n  /**\n   * The cache of items for this manager.\n   * @type {Collection}\n   * @abstract\n   */\n  get cache() {\n    throw new Error('NOT_IMPLEMENTED', 'get cache', this.constructor.name);\n  }\n\n  /**\n   * Resolves a data entry to a data Object.\n   * @param {string|Object} idOrInstance The id or instance of something in this Manager\n   * @returns {?Object} An instance from this Manager\n   */\n  resolve(idOrInstance) {\n    if (idOrInstance instanceof this.holds) return idOrInstance;\n    if (typeof idOrInstance === 'string') return this.cache.get(idOrInstance) ?? null;\n    return null;\n  }\n\n  /**\n   * Resolves a data entry to an instance id.\n   * @param {string|Object} idOrInstance The id or instance of something in this Manager\n   * @returns {?Snowflake}\n   */\n  resolveId(idOrInstance) {\n    if (idOrInstance instanceof this.holds) return idOrInstance.id;\n    if (typeof idOrInstance === 'string') return idOrInstance;\n    return null;\n  }\n\n  valueOf() {\n    return this.cache;\n  }\n}\n\nmodule.exports = DataManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/DataManager.js?")},"./node_modules/@citizenfx/discord.js/src/managers/GuildApplicationCommandManager.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/GuildApplicationCommandManager.js ***!
  \*******************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst ApplicationCommandManager = __webpack_require__(/*! ./ApplicationCommandManager */ "./node_modules/@citizenfx/discord.js/src/managers/ApplicationCommandManager.js");\nconst ApplicationCommandPermissionsManager = __webpack_require__(/*! ./ApplicationCommandPermissionsManager */ "./node_modules/@citizenfx/discord.js/src/managers/ApplicationCommandPermissionsManager.js");\n\n/**\n * An extension for guild-specific application commands.\n * @extends {ApplicationCommandManager}\n */\nclass GuildApplicationCommandManager extends ApplicationCommandManager {\n  constructor(guild, iterable) {\n    super(guild.client, iterable);\n\n    /**\n     * The guild that this manager belongs to\n     * @type {Guild}\n     */\n    this.guild = guild;\n\n    /**\n     * The manager for permissions of arbitrary commands on this guild\n     * @type {ApplicationCommandPermissionsManager}\n     */\n    this.permissions = new ApplicationCommandPermissionsManager(this);\n  }\n}\n\nmodule.exports = GuildApplicationCommandManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/GuildApplicationCommandManager.js?')},"./node_modules/@citizenfx/discord.js/src/managers/GuildBanManager.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/GuildBanManager.js ***!
  \****************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst CachedManager = __webpack_require__(/*! ./CachedManager */ \"./node_modules/@citizenfx/discord.js/src/managers/CachedManager.js\");\nconst { TypeError, Error } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst GuildBan = __webpack_require__(/*! ../structures/GuildBan */ \"./node_modules/@citizenfx/discord.js/src/structures/GuildBan.js\");\nconst { GuildMember } = __webpack_require__(/*! ../structures/GuildMember */ \"./node_modules/@citizenfx/discord.js/src/structures/GuildMember.js\");\n\n/**\n * Manages API methods for GuildBans and stores their cache.\n * @extends {CachedManager}\n */\nclass GuildBanManager extends CachedManager {\n  constructor(guild, iterable) {\n    super(guild.client, GuildBan, iterable);\n\n    /**\n     * The guild this Manager belongs to\n     * @type {Guild}\n     */\n    this.guild = guild;\n  }\n\n  /**\n   * The cache of this Manager\n   * @type {Collection<Snowflake, GuildBan>}\n   * @name GuildBanManager#cache\n   */\n\n  _add(data, cache) {\n    return super._add(data, cache, { id: data.user.id, extras: [this.guild] });\n  }\n\n  /**\n   * Data that resolves to give a GuildBan object. This can be:\n   * * A GuildBan object\n   * * A User resolvable\n   * @typedef {GuildBan|UserResolvable} GuildBanResolvable\n   */\n\n  /**\n   * Resolves a GuildBanResolvable to a GuildBan object.\n   * @param {GuildBanResolvable} ban The ban that is in the guild\n   * @returns {?GuildBan}\n   */\n  resolve(ban) {\n    return super.resolve(ban) ?? super.resolve(this.client.users.resolveId(ban));\n  }\n\n  /**\n   * Options used to fetch a single ban from a guild.\n   * @typedef {BaseFetchOptions} FetchBanOptions\n   * @property {UserResolvable} user The ban to fetch\n   */\n\n  /**\n   * Options used to fetch all bans from a guild.\n   * @typedef {Object} FetchBansOptions\n   * @property {boolean} cache Whether or not to cache the fetched bans\n   */\n\n  /**\n   * Fetches ban(s) from Discord.\n   * @param {UserResolvable|FetchBanOptions|FetchBansOptions} [options] Options for fetching guild ban(s)\n   * @returns {Promise<GuildBan|Collection<Snowflake, GuildBan>>}\n   * @example\n   * // Fetch all bans from a guild\n   * guild.bans.fetch()\n   *   .then(console.log)\n   *   .catch(console.error);\n   * @example\n   * // Fetch all bans from a guild without caching\n   * guild.bans.fetch({ cache: false })\n   *   .then(console.log)\n   *   .catch(console.error);\n   * @example\n   * // Fetch a single ban\n   * guild.bans.fetch('351871113346809860')\n   *   .then(console.log)\n   *   .catch(console.error);\n   * @example\n   * // Fetch a single ban without checking cache\n   * guild.bans.fetch({ user, force: true })\n   *   .then(console.log)\n   *   .catch(console.error)\n   * @example\n   * // Fetch a single ban without caching\n   * guild.bans.fetch({ user, cache: false })\n   *   .then(console.log)\n   *   .catch(console.error);\n   */\n  fetch(options) {\n    if (!options) return this._fetchMany();\n    const user = this.client.users.resolveId(options);\n    if (user) return this._fetchSingle({ user, cache: true });\n    options.user &&= this.client.users.resolveId(options.user);\n    if (!options.user) {\n      if ('cache' in options) return this._fetchMany(options.cache);\n      return Promise.reject(new Error('FETCH_BAN_RESOLVE_ID'));\n    }\n    return this._fetchSingle(options);\n  }\n\n  async _fetchSingle({ user, cache, force = false }) {\n    if (!force) {\n      const existing = this.cache.get(user);\n      if (existing && !existing.partial) return existing;\n    }\n\n    const data = await this.client.api.guilds(this.guild.id).bans(user).get();\n    return this._add(data, cache);\n  }\n\n  async _fetchMany(cache) {\n    const data = await this.client.api.guilds(this.guild.id).bans.get();\n    return data.reduce((col, ban) => col.set(ban.user.id, this._add(ban, cache)), new Collection());\n  }\n\n  /**\n   * Options used to ban a user from a guild.\n   * @typedef {Object} BanOptions\n   * @property {number} [days=0] Number of days of messages to delete, must be between 0 and 7, inclusive\n   * @property {string} [reason] The reason for the ban\n   */\n\n  /**\n   * Bans a user from the guild.\n   * @param {UserResolvable} user The user to ban\n   * @param {BanOptions} [options] Options for the ban\n   * @returns {Promise<GuildMember|User|Snowflake>} Result object will be resolved as specifically as possible.\n   * If the GuildMember cannot be resolved, the User will instead be attempted to be resolved. If that also cannot\n   * be resolved, the user id will be the result.\n   * @example\n   * // Ban a user by id (or with a user/guild member object)\n   * guild.bans.create('84484653687267328')\n   *   .then(banInfo => console.log(`Banned ${banInfo.user?.tag ?? banInfo.tag ?? banInfo}`))\n   *   .catch(console.error);\n   */\n  async create(user, options = { days: 0 }) {\n    if (typeof options !== 'object') throw new TypeError('INVALID_TYPE', 'options', 'object', true);\n    const id = this.client.users.resolveId(user);\n    if (!id) throw new Error('BAN_RESOLVE_ID', true);\n    await this.client.api\n      .guilds(this.guild.id)\n      .bans(id)\n      .put({\n        data: { delete_message_days: options.days },\n        reason: options.reason,\n      });\n    if (user instanceof GuildMember) return user;\n    const _user = this.client.users.resolve(id);\n    if (_user) {\n      return this.guild.members.resolve(_user) ?? _user;\n    }\n    return id;\n  }\n\n  /**\n   * Unbans a user from the guild.\n   * @param {UserResolvable} user The user to unban\n   * @param {string} [reason] Reason for unbanning user\n   * @returns {Promise<?User>}\n   * @example\n   * // Unban a user by id (or with a user/guild member object)\n   * guild.bans.remove('84484653687267328')\n   *   .then(user => console.log(`Unbanned ${user.username} from ${guild.name}`))\n   *   .catch(console.error);\n   */\n  async remove(user, reason) {\n    const id = this.client.users.resolveId(user);\n    if (!id) throw new Error('BAN_RESOLVE_ID');\n    await this.client.api.guilds(this.guild.id).bans(id).delete({ reason });\n    return this.client.users.resolve(user);\n  }\n}\n\nmodule.exports = GuildBanManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/GuildBanManager.js?")},"./node_modules/@citizenfx/discord.js/src/managers/GuildChannelManager.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/GuildChannelManager.js ***!
  \********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst process = __webpack_require__(/*! node:process */ \"node:process\");\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst CachedManager = __webpack_require__(/*! ./CachedManager */ \"./node_modules/@citizenfx/discord.js/src/managers/CachedManager.js\");\nconst ThreadManager = __webpack_require__(/*! ./ThreadManager */ \"./node_modules/@citizenfx/discord.js/src/managers/ThreadManager.js\");\nconst { Error } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst GuildChannel = __webpack_require__(/*! ../structures/GuildChannel */ \"./node_modules/@citizenfx/discord.js/src/structures/GuildChannel.js\");\nconst PermissionOverwrites = __webpack_require__(/*! ../structures/PermissionOverwrites */ \"./node_modules/@citizenfx/discord.js/src/structures/PermissionOverwrites.js\");\nconst ThreadChannel = __webpack_require__(/*! ../structures/ThreadChannel */ \"./node_modules/@citizenfx/discord.js/src/structures/ThreadChannel.js\");\nconst { ChannelTypes, ThreadChannelTypes } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\n\nlet cacheWarningEmitted = false;\nlet storeChannelDeprecationEmitted = false;\n\n/**\n * Manages API methods for GuildChannels and stores their cache.\n * @extends {CachedManager}\n */\nclass GuildChannelManager extends CachedManager {\n  constructor(guild, iterable) {\n    super(guild.client, GuildChannel, iterable);\n    const defaultCaching =\n      this._cache.constructor.name === 'Collection' ||\n      ((this._cache.maxSize === undefined || this._cache.maxSize === Infinity) &&\n        (this._cache.sweepFilter === undefined || this._cache.sweepFilter.isDefault));\n    if (!cacheWarningEmitted && !defaultCaching) {\n      cacheWarningEmitted = true;\n      process.emitWarning(\n        `Overriding the cache handling for ${this.constructor.name} is unsupported and breaks functionality.`,\n        'UnsupportedCacheOverwriteWarning',\n      );\n    }\n\n    /**\n     * The guild this Manager belongs to\n     * @type {Guild}\n     */\n    this.guild = guild;\n  }\n\n  /**\n   * The number of channels in this managers cache excluding thread channels\n   * that do not count towards a guild's maximum channels restriction.\n   * @type {number}\n   * @readonly\n   */\n  get channelCountWithoutThreads() {\n    return this.cache.reduce((acc, channel) => {\n      if (ThreadChannelTypes.includes(channel.type)) return acc;\n      return ++acc;\n    }, 0);\n  }\n\n  /**\n   * The cache of this Manager\n   * @type {Collection<Snowflake, GuildChannel|ThreadChannel>}\n   * @name GuildChannelManager#cache\n   */\n\n  _add(channel) {\n    const existing = this.cache.get(channel.id);\n    if (existing) return existing;\n    this.cache.set(channel.id, channel);\n    return channel;\n  }\n\n  /**\n   * Data that can be resolved to give a Guild Channel object. This can be:\n   * * A GuildChannel object\n   * * A ThreadChannel object\n   * * A Snowflake\n   * @typedef {GuildChannel|ThreadChannel|Snowflake} GuildChannelResolvable\n   */\n\n  /**\n   * Resolves a GuildChannelResolvable to a Channel object.\n   * @param {GuildChannelResolvable} channel The GuildChannel resolvable to resolve\n   * @returns {?(GuildChannel|ThreadChannel)}\n   */\n  resolve(channel) {\n    if (channel instanceof ThreadChannel) return super.resolve(channel.id);\n    return super.resolve(channel);\n  }\n\n  /**\n   * Resolves a GuildChannelResolvable to a channel id.\n   * @param {GuildChannelResolvable} channel The GuildChannel resolvable to resolve\n   * @returns {?Snowflake}\n   */\n  resolveId(channel) {\n    if (channel instanceof ThreadChannel) return super.resolveId(channel.id);\n    return super.resolveId(channel);\n  }\n\n  /**\n   * Options used to create a new channel in a guild.\n   * @typedef {CategoryCreateChannelOptions} GuildChannelCreateOptions\n   * @property {CategoryChannelResolvable} [parent] Parent of the new channel\n   */\n\n  /**\n   * Creates a new channel in the guild.\n   * @param {string} name The name of the new channel\n   * @param {GuildChannelCreateOptions} [options={}] Options for creating the new channel\n   * @returns {Promise<GuildChannel>}\n   * @example\n   * // Create a new text channel\n   * guild.channels.create('new-general', { reason: 'Needed a cool new channel' })\n   *   .then(console.log)\n   *   .catch(console.error);\n   * @example\n   * // Create a new channel with permission overwrites\n   * guild.channels.create('new-voice', {\n   *   type: 'GUILD_VOICE',\n   *   permissionOverwrites: [\n   *      {\n   *        id: message.author.id,\n   *        deny: [Permissions.FLAGS.VIEW_CHANNEL],\n   *     },\n   *   ],\n   * })\n   */\n  async create(\n    name,\n    {\n      type,\n      topic,\n      nsfw,\n      bitrate,\n      userLimit,\n      parent,\n      permissionOverwrites,\n      position,\n      rateLimitPerUser,\n      rtcRegion,\n      reason,\n    } = {},\n  ) {\n    parent &&= this.client.channels.resolveId(parent);\n    permissionOverwrites &&= permissionOverwrites.map(o => PermissionOverwrites.resolve(o, this.guild));\n    const intType = typeof type === 'number' ? type : ChannelTypes[type] ?? ChannelTypes.GUILD_TEXT;\n\n    if (intType === ChannelTypes.GUILD_STORE && !storeChannelDeprecationEmitted) {\n      storeChannelDeprecationEmitted = true;\n      process.emitWarning(\n        // eslint-disable-next-line max-len\n        'Creating store channels is deprecated by Discord and will stop working in March 2022. Check the docs for more info.',\n        'DeprecationWarning',\n      );\n    }\n\n    const data = await this.client.api.guilds(this.guild.id).channels.post({\n      data: {\n        name,\n        topic,\n        type: intType,\n        nsfw,\n        bitrate,\n        user_limit: userLimit,\n        parent_id: parent,\n        position,\n        permission_overwrites: permissionOverwrites,\n        rate_limit_per_user: rateLimitPerUser,\n        rtc_region: rtcRegion,\n      },\n      reason,\n    });\n    return this.client.actions.ChannelCreate.handle(data).channel;\n  }\n\n  /**\n   * Obtains one or more guild channels from Discord, or the channel cache if they're already available.\n   * @param {Snowflake} [id] The channel's id\n   * @param {BaseFetchOptions} [options] Additional options for this fetch\n   * @returns {Promise<?GuildChannel|Collection<Snowflake, GuildChannel>>}\n   * @example\n   * // Fetch all channels from the guild (excluding threads)\n   * message.guild.channels.fetch()\n   *   .then(channels => console.log(`There are ${channels.size} channels.`))\n   *   .catch(console.error);\n   * @example\n   * // Fetch a single channel\n   * message.guild.channels.fetch('222197033908436994')\n   *   .then(channel => console.log(`The channel name is: ${channel.name}`))\n   *   .catch(console.error);\n   */\n  async fetch(id, { cache = true, force = false } = {}) {\n    if (id && !force) {\n      const existing = this.cache.get(id);\n      if (existing) return existing;\n    }\n\n    if (id) {\n      const data = await this.client.api.channels(id).get();\n      // Since this is the guild manager, throw if on a different guild\n      if (this.guild.id !== data.guild_id) throw new Error('GUILD_CHANNEL_UNOWNED');\n      return this.client.channels._add(data, this.guild, { cache });\n    }\n\n    const data = await this.client.api.guilds(this.guild.id).channels.get();\n    const channels = new Collection();\n    for (const channel of data) channels.set(channel.id, this.client.channels._add(channel, this.guild, { cache }));\n    return channels;\n  }\n\n  /**\n   * Batch-updates the guild's channels' positions.\n   * <info>Only one channel's parent can be changed at a time</info>\n   * @param {ChannelPosition[]} channelPositions Channel positions to update\n   * @returns {Promise<Guild>}\n   * @example\n   * guild.channels.setPositions([{ channel: channelId, position: newChannelIndex }])\n   *   .then(guild => console.log(`Updated channel positions for ${guild}`))\n   *   .catch(console.error);\n   */\n  async setPositions(channelPositions) {\n    channelPositions = channelPositions.map(r => ({\n      id: this.client.channels.resolveId(r.channel),\n      position: r.position,\n      lock_permissions: r.lockPermissions,\n      parent_id: typeof r.parent !== 'undefined' ? this.channels.resolveId(r.parent) : undefined,\n    }));\n\n    await this.client.api.guilds(this.guild.id).channels.patch({ data: channelPositions });\n    return this.client.actions.GuildChannelsPositionUpdate.handle({\n      guild_id: this.guild.id,\n      channels: channelPositions,\n    }).guild;\n  }\n\n  /**\n   * Obtains all active thread channels in the guild from Discord\n   * @param {boolean} [cache=true] Whether to cache the fetched data\n   * @returns {Promise<FetchedThreads>}\n   * @example\n   * // Fetch all threads from the guild\n   * message.guild.channels.fetchActiveThreads()\n   *   .then(fetched => console.log(`There are ${fetched.threads.size} threads.`))\n   *   .catch(console.error);\n   */\n  async fetchActiveThreads(cache = true) {\n    const raw = await this.client.api.guilds(this.guild.id).threads.active.get();\n    return ThreadManager._mapThreads(raw, this.client, { guild: this.guild, cache });\n  }\n}\n\nmodule.exports = GuildChannelManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/GuildChannelManager.js?")},"./node_modules/@citizenfx/discord.js/src/managers/GuildEmojiManager.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/GuildEmojiManager.js ***!
  \******************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst BaseGuildEmojiManager = __webpack_require__(/*! ./BaseGuildEmojiManager */ \"./node_modules/@citizenfx/discord.js/src/managers/BaseGuildEmojiManager.js\");\nconst { TypeError } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst DataResolver = __webpack_require__(/*! ../util/DataResolver */ \"./node_modules/@citizenfx/discord.js/src/util/DataResolver.js\");\n\n/**\n * Manages API methods for GuildEmojis and stores their cache.\n * @extends {BaseGuildEmojiManager}\n */\nclass GuildEmojiManager extends BaseGuildEmojiManager {\n  constructor(guild, iterable) {\n    super(guild.client, iterable);\n\n    /**\n     * The guild this manager belongs to\n     * @type {Guild}\n     */\n    this.guild = guild;\n  }\n\n  _add(data, cache) {\n    return super._add(data, cache, { extras: [this.guild] });\n  }\n\n  /**\n   * Options used for creating an emoji in a guild.\n   * @typedef {Object} GuildEmojiCreateOptions\n   * @property {Collection<Snowflake, Role>|RoleResolvable[]} [roles] The roles to limit the emoji to\n   * @property {string} [reason] The reason for creating the emoji\n   */\n\n  /**\n   * Creates a new custom emoji in the guild.\n   * @param {BufferResolvable|Base64Resolvable} attachment The image for the emoji\n   * @param {string} name The name for the emoji\n   * @param {GuildEmojiCreateOptions} [options] Options for creating the emoji\n   * @returns {Promise<Emoji>} The created emoji\n   * @example\n   * // Create a new emoji from a URL\n   * guild.emojis.create('https://i.imgur.com/w3duR07.png', 'rip')\n   *   .then(emoji => console.log(`Created new emoji with name ${emoji.name}!`))\n   *   .catch(console.error);\n   * @example\n   * // Create a new emoji from a file on your computer\n   * guild.emojis.create('./memes/banana.png', 'banana')\n   *   .then(emoji => console.log(`Created new emoji with name ${emoji.name}!`))\n   *   .catch(console.error);\n   */\n  async create(attachment, name, { roles, reason } = {}) {\n    attachment = await DataResolver.resolveImage(attachment);\n    if (!attachment) throw new TypeError('REQ_RESOURCE_TYPE');\n\n    const data = { image: attachment, name };\n    if (roles) {\n      if (!Array.isArray(roles) && !(roles instanceof Collection)) {\n        throw new TypeError('INVALID_TYPE', 'options.roles', 'Array or Collection of Roles or Snowflakes', true);\n      }\n      data.roles = [];\n      for (const role of roles.values()) {\n        const resolvedRole = this.guild.roles.resolveId(role);\n        if (!resolvedRole) throw new TypeError('INVALID_ELEMENT', 'Array or Collection', 'options.roles', role);\n        data.roles.push(resolvedRole);\n      }\n    }\n\n    const emoji = await this.client.api.guilds(this.guild.id).emojis.post({ data, reason });\n    return this.client.actions.GuildEmojiCreate.handle(this.guild, emoji).emoji;\n  }\n\n  /**\n   * Obtains one or more emojis from Discord, or the emoji cache if they're already available.\n   * @param {Snowflake} [id] The emoji's id\n   * @param {BaseFetchOptions} [options] Additional options for this fetch\n   * @returns {Promise<GuildEmoji|Collection<Snowflake, GuildEmoji>>}\n   * @example\n   * // Fetch all emojis from the guild\n   * message.guild.emojis.fetch()\n   *   .then(emojis => console.log(`There are ${emojis.size} emojis.`))\n   *   .catch(console.error);\n   * @example\n   * // Fetch a single emoji\n   * message.guild.emojis.fetch('222078108977594368')\n   *   .then(emoji => console.log(`The emoji name is: ${emoji.name}`))\n   *   .catch(console.error);\n   */\n  async fetch(id, { cache = true, force = false } = {}) {\n    if (id) {\n      if (!force) {\n        const existing = this.cache.get(id);\n        if (existing) return existing;\n      }\n      const emoji = await this.client.api.guilds(this.guild.id).emojis(id).get();\n      return this._add(emoji, cache);\n    }\n\n    const data = await this.client.api.guilds(this.guild.id).emojis.get();\n    const emojis = new Collection();\n    for (const emoji of data) emojis.set(emoji.id, this._add(emoji, cache));\n    return emojis;\n  }\n}\n\nmodule.exports = GuildEmojiManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/GuildEmojiManager.js?")},"./node_modules/@citizenfx/discord.js/src/managers/GuildEmojiRoleManager.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/GuildEmojiRoleManager.js ***!
  \**********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst DataManager = __webpack_require__(/*! ./DataManager */ \"./node_modules/@citizenfx/discord.js/src/managers/DataManager.js\");\nconst { TypeError } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst { Role } = __webpack_require__(/*! ../structures/Role */ \"./node_modules/@citizenfx/discord.js/src/structures/Role.js\");\n\n/**\n * Manages API methods for roles belonging to emojis and stores their cache.\n * @extends {DataManager}\n */\nclass GuildEmojiRoleManager extends DataManager {\n  constructor(emoji) {\n    super(emoji.client, Role);\n\n    /**\n     * The emoji belonging to this manager\n     * @type {GuildEmoji}\n     */\n    this.emoji = emoji;\n    /**\n     * The guild belonging to this manager\n     * @type {Guild}\n     */\n    this.guild = emoji.guild;\n  }\n\n  /**\n   * The cache of roles belonging to this emoji\n   * @type {Collection<Snowflake, Role>}\n   * @readonly\n   */\n  get cache() {\n    return this.guild.roles.cache.filter(role => this.emoji._roles.includes(role.id));\n  }\n\n  /**\n   * Adds a role (or multiple roles) to the list of roles that can use this emoji.\n   * @param {RoleResolvable|RoleResolvable[]|Collection<Snowflake, Role>} roleOrRoles The role or roles to add\n   * @returns {Promise<GuildEmoji>}\n   */\n  add(roleOrRoles) {\n    if (!Array.isArray(roleOrRoles) && !(roleOrRoles instanceof Collection)) roleOrRoles = [roleOrRoles];\n\n    const resolvedRoles = [];\n    for (const role of roleOrRoles.values()) {\n      const resolvedRole = this.guild.roles.resolveId(role);\n      if (!resolvedRole) {\n        return Promise.reject(new TypeError('INVALID_ELEMENT', 'Array or Collection', 'roles', role));\n      }\n      resolvedRoles.push(resolvedRole);\n    }\n\n    const newRoles = [...new Set(resolvedRoles.concat(...this.cache.keys()))];\n    return this.set(newRoles);\n  }\n\n  /**\n   * Removes a role (or multiple roles) from the list of roles that can use this emoji.\n   * @param {RoleResolvable|RoleResolvable[]|Collection<Snowflake, Role>} roleOrRoles The role or roles to remove\n   * @returns {Promise<GuildEmoji>}\n   */\n  remove(roleOrRoles) {\n    if (!Array.isArray(roleOrRoles) && !(roleOrRoles instanceof Collection)) roleOrRoles = [roleOrRoles];\n\n    const resolvedRoleIds = [];\n    for (const role of roleOrRoles.values()) {\n      const roleId = this.guild.roles.resolveId(role);\n      if (!roleId) {\n        return Promise.reject(new TypeError('INVALID_ELEMENT', 'Array or Collection', 'roles', role));\n      }\n      resolvedRoleIds.push(roleId);\n    }\n\n    const newRoles = [...this.cache.keys()].filter(id => !resolvedRoleIds.includes(id));\n    return this.set(newRoles);\n  }\n\n  /**\n   * Sets the role(s) that can use this emoji.\n   * @param {Collection<Snowflake, Role>|RoleResolvable[]} roles The roles or role ids to apply\n   * @returns {Promise<GuildEmoji>}\n   * @example\n   * // Set the emoji's roles to a single role\n   * guildEmoji.roles.set(['391156570408615936'])\n   *   .then(console.log)\n   *   .catch(console.error);\n   * @example\n   * // Remove all roles from an emoji\n   * guildEmoji.roles.set([])\n   *    .then(console.log)\n   *    .catch(console.error);\n   */\n  set(roles) {\n    return this.emoji.edit({ roles });\n  }\n\n  clone() {\n    const clone = new this.constructor(this.emoji);\n    clone._patch([...this.cache.keys()]);\n    return clone;\n  }\n\n  /**\n   * Patches the roles for this manager's cache\n   * @param {Snowflake[]} roles The new roles\n   * @private\n   */\n  _patch(roles) {\n    this.emoji._roles = roles;\n  }\n\n  valueOf() {\n    return this.cache;\n  }\n}\n\nmodule.exports = GuildEmojiRoleManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/GuildEmojiRoleManager.js?")},"./node_modules/@citizenfx/discord.js/src/managers/GuildInviteManager.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/GuildInviteManager.js ***!
  \*******************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst CachedManager = __webpack_require__(/*! ./CachedManager */ \"./node_modules/@citizenfx/discord.js/src/managers/CachedManager.js\");\nconst { Error } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst Invite = __webpack_require__(/*! ../structures/Invite */ \"./node_modules/@citizenfx/discord.js/src/structures/Invite.js\");\nconst DataResolver = __webpack_require__(/*! ../util/DataResolver */ \"./node_modules/@citizenfx/discord.js/src/util/DataResolver.js\");\n\n/**\n * Manages API methods for GuildInvites and stores their cache.\n * @extends {CachedManager}\n */\nclass GuildInviteManager extends CachedManager {\n  constructor(guild, iterable) {\n    super(guild.client, Invite, iterable);\n\n    /**\n     * The guild this Manager belongs to\n     * @type {Guild}\n     */\n    this.guild = guild;\n  }\n\n  /**\n   * The cache of this Manager\n   * @type {Collection<string, Invite>}\n   * @name GuildInviteManager#cache\n   */\n\n  _add(data, cache) {\n    return super._add(data, cache, { id: data.code, extras: [this.guild] });\n  }\n\n  /**\n   * Data that resolves to give an Invite object. This can be:\n   * * An invite code\n   * * An invite URL\n   * @typedef {string} InviteResolvable\n   */\n\n  /**\n   * Data that can be resolved to a channel that an invite can be created on. This can be:\n   * * TextChannel\n   * * VoiceChannel\n   * * NewsChannel\n   * * StoreChannel\n   * * StageChannel\n   * * Snowflake\n   * @typedef {TextChannel|VoiceChannel|NewsChannel|StoreChannel|StageChannel|Snowflake}\n   * GuildInvitableChannelResolvable\n   */\n\n  /**\n   * Resolves an InviteResolvable to an Invite object.\n   * @method resolve\n   * @memberof GuildInviteManager\n   * @instance\n   * @param {InviteResolvable} invite The invite resolvable to resolve\n   * @returns {?Invite}\n   */\n\n  /**\n   * Resolves an InviteResolvable to an invite code string.\n   * @method resolveId\n   * @memberof GuildInviteManager\n   * @instance\n   * @param {InviteResolvable} invite The invite resolvable to resolve\n   * @returns {?string}\n   */\n\n  /**\n   * Options used to fetch a single invite from a guild.\n   * @typedef {Object} FetchInviteOptions\n   * @property {InviteResolvable} code The invite to fetch\n   * @property {boolean} [cache=true] Whether or not to cache the fetched invite\n   * @property {boolean} [force=false] Whether to skip the cache check and request the API\n   */\n\n  /**\n   * Options used to fetch all invites from a guild.\n   * @typedef {Object} FetchInvitesOptions\n   * @property {GuildInvitableChannelResolvable} [channelId]\n   * The channel to fetch all invites from\n   * @property {boolean} [cache=true] Whether or not to cache the fetched invites\n   */\n\n  /**\n   * Fetches invite(s) from Discord.\n   * @param {InviteResolvable|FetchInviteOptions|FetchInvitesOptions} [options] Options for fetching guild invite(s)\n   * @returns {Promise<Invite|Collection<string, Invite>>}\n   * @example\n   * // Fetch all invites from a guild\n   * guild.invites.fetch()\n   *   .then(console.log)\n   *   .catch(console.error);\n   * @example\n   * // Fetch all invites from a guild without caching\n   * guild.invites.fetch({ cache: false })\n   *   .then(console.log)\n   *   .catch(console.error);\n   * @example\n   * // Fetch all invites from a channel\n   * guild.invites.fetch({ channelId: '222197033908436994' })\n   *   .then(console.log)\n   *   .catch(console.error);\n   * @example\n   * // Fetch a single invite\n   * guild.invites.fetch('bRCvFy9')\n   *   .then(console.log)\n   *   .catch(console.error);\n   * @example\n   * // Fetch a single invite without checking cache\n   * guild.invites.fetch({ code: 'bRCvFy9', force: true })\n   *   .then(console.log)\n   *   .catch(console.error)\n   * @example\n   * // Fetch a single invite without caching\n   * guild.invites.fetch({ code: 'bRCvFy9', cache: false })\n   *   .then(console.log)\n   *   .catch(console.error);\n   */\n  fetch(options) {\n    if (!options) return this._fetchMany();\n    if (typeof options === 'string') {\n      const code = DataResolver.resolveInviteCode(options);\n      if (!code) return Promise.reject(new Error('INVITE_RESOLVE_CODE'));\n      return this._fetchSingle({ code, cache: true });\n    }\n    if (!options.code) {\n      if (options.channelId) {\n        const id = this.guild.channels.resolveId(options.channelId);\n        if (!id) return Promise.reject(new Error('GUILD_CHANNEL_RESOLVE'));\n        return this._fetchChannelMany(id, options.cache);\n      }\n\n      if ('cache' in options) return this._fetchMany(options.cache);\n      return Promise.reject(new Error('INVITE_RESOLVE_CODE'));\n    }\n    return this._fetchSingle({\n      ...options,\n      code: DataResolver.resolveInviteCode(options.code),\n    });\n  }\n\n  async _fetchSingle({ code, cache, force = false }) {\n    if (!force) {\n      const existing = this.cache.get(code);\n      if (existing) return existing;\n    }\n\n    const invites = await this._fetchMany(cache);\n    const invite = invites.get(code);\n    if (!invite) throw new Error('INVITE_NOT_FOUND');\n    return invite;\n  }\n\n  async _fetchMany(cache) {\n    const data = await this.client.api.guilds(this.guild.id).invites.get();\n    return data.reduce((col, invite) => col.set(invite.code, this._add(invite, cache)), new Collection());\n  }\n\n  async _fetchChannelMany(channelId, cache) {\n    const data = await this.client.api.channels(channelId).invites.get();\n    return data.reduce((col, invite) => col.set(invite.code, this._add(invite, cache)), new Collection());\n  }\n\n  /**\n   * Create an invite to the guild from the provided channel.\n   * @param {GuildInvitableChannelResolvable} channel The options for creating the invite from a channel.\n   * @param {CreateInviteOptions} [options={}] The options for creating the invite from a channel.\n   * @returns {Promise<Invite>}\n   * @example\n   * // Create an invite to a selected channel\n   * guild.invites.create('599942732013764608')\n   *   .then(console.log)\n   *   .catch(console.error);\n   */\n  async create(\n    channel,\n    { temporary = false, maxAge = 86400, maxUses = 0, unique, targetUser, targetApplication, targetType, reason } = {},\n  ) {\n    const id = this.guild.channels.resolveId(channel);\n    if (!id) throw new Error('GUILD_CHANNEL_RESOLVE');\n\n    const invite = await this.client.api.channels(id).invites.post({\n      data: {\n        temporary,\n        max_age: maxAge,\n        max_uses: maxUses,\n        unique,\n        target_user_id: this.client.users.resolveId(targetUser),\n        target_application_id: targetApplication?.id ?? targetApplication?.applicationId ?? targetApplication,\n        target_type: targetType,\n      },\n      reason,\n    });\n    return new Invite(this.client, invite);\n  }\n\n  /**\n   * Deletes an invite.\n   * @param {InviteResolvable} invite The invite to delete\n   * @param {string} [reason] Reason for deleting the invite\n   * @returns {Promise<void>}\n   */\n  async delete(invite, reason) {\n    const code = DataResolver.resolveInviteCode(invite);\n\n    await this.client.api.invites(code).delete({ reason });\n  }\n}\n\nmodule.exports = GuildInviteManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/GuildInviteManager.js?")},"./node_modules/@citizenfx/discord.js/src/managers/GuildManager.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/GuildManager.js ***!
  \*************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst process = __webpack_require__(/*! node:process */ "node:process");\nconst { setTimeout, clearTimeout } = __webpack_require__(/*! node:timers */ "node:timers");\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ "./node_modules/@discordjs/collection/dist/index.js");\nconst CachedManager = __webpack_require__(/*! ./CachedManager */ "./node_modules/@citizenfx/discord.js/src/managers/CachedManager.js");\nconst { Guild } = __webpack_require__(/*! ../structures/Guild */ "./node_modules/@citizenfx/discord.js/src/structures/Guild.js");\nconst GuildChannel = __webpack_require__(/*! ../structures/GuildChannel */ "./node_modules/@citizenfx/discord.js/src/structures/GuildChannel.js");\nconst GuildEmoji = __webpack_require__(/*! ../structures/GuildEmoji */ "./node_modules/@citizenfx/discord.js/src/structures/GuildEmoji.js");\nconst { GuildMember } = __webpack_require__(/*! ../structures/GuildMember */ "./node_modules/@citizenfx/discord.js/src/structures/GuildMember.js");\nconst Invite = __webpack_require__(/*! ../structures/Invite */ "./node_modules/@citizenfx/discord.js/src/structures/Invite.js");\nconst OAuth2Guild = __webpack_require__(/*! ../structures/OAuth2Guild */ "./node_modules/@citizenfx/discord.js/src/structures/OAuth2Guild.js");\nconst { Role } = __webpack_require__(/*! ../structures/Role */ "./node_modules/@citizenfx/discord.js/src/structures/Role.js");\nconst {\n  ChannelTypes,\n  Events,\n  OverwriteTypes,\n  VerificationLevels,\n  DefaultMessageNotificationLevels,\n  ExplicitContentFilterLevels,\n} = __webpack_require__(/*! ../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\nconst DataResolver = __webpack_require__(/*! ../util/DataResolver */ "./node_modules/@citizenfx/discord.js/src/util/DataResolver.js");\nconst Permissions = __webpack_require__(/*! ../util/Permissions */ "./node_modules/@citizenfx/discord.js/src/util/Permissions.js");\nconst SystemChannelFlags = __webpack_require__(/*! ../util/SystemChannelFlags */ "./node_modules/@citizenfx/discord.js/src/util/SystemChannelFlags.js");\nconst { resolveColor } = __webpack_require__(/*! ../util/Util */ "./node_modules/@citizenfx/discord.js/src/util/Util.js");\n\nlet cacheWarningEmitted = false;\n\n/**\n * Manages API methods for Guilds and stores their cache.\n * @extends {CachedManager}\n */\nclass GuildManager extends CachedManager {\n  constructor(client, iterable) {\n    super(client, Guild, iterable);\n    if (!cacheWarningEmitted && this._cache.constructor.name !== \'Collection\') {\n      cacheWarningEmitted = true;\n      process.emitWarning(\n        `Overriding the cache handling for ${this.constructor.name} is unsupported and breaks functionality.`,\n        \'UnsupportedCacheOverwriteWarning\',\n      );\n    }\n  }\n\n  /**\n   * The cache of this Manager\n   * @type {Collection<Snowflake, Guild>}\n   * @name GuildManager#cache\n   */\n\n  /**\n   * Data that resolves to give a Guild object. This can be:\n   * * A Guild object\n   * * A GuildChannel object\n   * * A GuildEmoji object\n   * * A Role object\n   * * A Snowflake\n   * * An Invite object\n   * @typedef {Guild|GuildChannel|GuildMember|GuildEmoji|Role|Snowflake|Invite} GuildResolvable\n   */\n\n  /**\n   * Partial data for a Role.\n   * @typedef {Object} PartialRoleData\n   * @property {Snowflake|number} [id] The role\'s id, used to set channel overrides,\n   * this is a placeholder and will be replaced by the API after consumption\n   * @property {string} [name] The name of the role\n   * @property {ColorResolvable} [color] The color of the role, either a hex string or a base 10 number\n   * @property {boolean} [hoist] Whether or not the role should be hoisted\n   * @property {number} [position] The position of the role\n   * @property {PermissionResolvable} [permissions] The permissions of the role\n   * @property {boolean} [mentionable] Whether or not the role should be mentionable\n   */\n\n  /**\n   * Partial overwrite data.\n   * @typedef {Object} PartialOverwriteData\n   * @property {Snowflake|number} id The id of the {@link Role} or {@link User} this overwrite belongs to\n   * @property {OverwriteType} [type] The type of this overwrite\n   * @property {PermissionResolvable} [allow] The permissions to allow\n   * @property {PermissionResolvable} [deny] The permissions to deny\n   */\n\n  /**\n   * Partial data for a Channel.\n   * @typedef {Object} PartialChannelData\n   * @property {Snowflake|number} [id] The channel\'s id, used to set its parent,\n   * this is a placeholder and will be replaced by the API after consumption\n   * @property {Snowflake|number} [parentId] The parent id for this channel\n   * @property {ChannelType|number} [type] The type of the channel\n   * @property {string} name The name of the channel\n   * @property {string} [topic] The topic of the text channel\n   * @property {boolean} [nsfw] Whether the channel is NSFW\n   * @property {number} [bitrate] The bitrate of the voice channel\n   * @property {number} [userLimit] The user limit of the channel\n   * @property {?string} [rtcRegion] The RTC region of the channel\n   * @property {PartialOverwriteData[]} [permissionOverwrites]\n   * Overwrites of the channel\n   * @property {number} [rateLimitPerUser] The rate limit per user (slowmode) of the channel in seconds\n   */\n\n  /**\n   * Resolves a GuildResolvable to a Guild object.\n   * @method resolve\n   * @memberof GuildManager\n   * @instance\n   * @param {GuildResolvable} guild The guild resolvable to identify\n   * @returns {?Guild}\n   */\n  resolve(guild) {\n    if (\n      guild instanceof GuildChannel ||\n      guild instanceof GuildMember ||\n      guild instanceof GuildEmoji ||\n      guild instanceof Role ||\n      (guild instanceof Invite && guild.guild)\n    ) {\n      return super.resolve(guild.guild);\n    }\n    return super.resolve(guild);\n  }\n\n  /**\n   * Resolves a {@link GuildResolvable} to a {@link Guild} id string.\n   * @method resolveId\n   * @memberof GuildManager\n   * @instance\n   * @param {GuildResolvable} guild The guild resolvable to identify\n   * @returns {?Snowflake}\n   */\n  resolveId(guild) {\n    if (\n      guild instanceof GuildChannel ||\n      guild instanceof GuildMember ||\n      guild instanceof GuildEmoji ||\n      guild instanceof Role ||\n      (guild instanceof Invite && guild.guild)\n    ) {\n      return super.resolveId(guild.guild.id);\n    }\n    return super.resolveId(guild);\n  }\n\n  /**\n   * Options used to create a guild.\n   * @typedef {Object} GuildCreateOptions\n   * @property {Snowflake|number} [afkChannelId] The AFK channel\'s id\n   * @property {number} [afkTimeout] The AFK timeout in seconds\n   * @property {PartialChannelData[]} [channels=[]] The channels for this guild\n   * @property {DefaultMessageNotificationLevel|number} [defaultMessageNotifications] The default message notifications\n   * for the guild\n   * @property {ExplicitContentFilterLevel} [explicitContentFilter] The explicit content filter level for the guild\n   * @property {?(BufferResolvable|Base64Resolvable)} [icon=null] The icon for the guild\n   * @property {PartialRoleData[]} [roles=[]] The roles for this guild,\n   * the first element of this array is used to change properties of the guild\'s everyone role.\n   * @property {Snowflake|number} [systemChannelId] The system channel\'s id\n   * @property {SystemChannelFlagsResolvable} [systemChannelFlags] The flags of the system channel\n   * @property {VerificationLevel} [verificationLevel] The verification level for the guild\n   */\n\n  /**\n   * Creates a guild.\n   * <warn>This is only available to bots in fewer than 10 guilds.</warn>\n   * @param {string} name The name of the guild\n   * @param {GuildCreateOptions} [options] Options for creating the guild\n   * @returns {Promise<Guild>} The guild that was created\n   */\n  async create(\n    name,\n    {\n      afkChannelId,\n      afkTimeout,\n      channels = [],\n      defaultMessageNotifications,\n      explicitContentFilter,\n      icon = null,\n      roles = [],\n      systemChannelId,\n      systemChannelFlags,\n      verificationLevel,\n    } = {},\n  ) {\n    icon = await DataResolver.resolveImage(icon);\n    if (typeof verificationLevel === \'string\') {\n      verificationLevel = VerificationLevels[verificationLevel];\n    }\n    if (typeof defaultMessageNotifications === \'string\') {\n      defaultMessageNotifications = DefaultMessageNotificationLevels[defaultMessageNotifications];\n    }\n    if (typeof explicitContentFilter === \'string\') {\n      explicitContentFilter = ExplicitContentFilterLevels[explicitContentFilter];\n    }\n    for (const channel of channels) {\n      channel.type &&= typeof channel.type === \'number\' ? channel.type : ChannelTypes[channel.type];\n      channel.parent_id = channel.parentId;\n      delete channel.parentId;\n      channel.user_limit = channel.userLimit;\n      delete channel.userLimit;\n      channel.rate_limit_per_user = channel.rateLimitPerUser;\n      delete channel.rateLimitPerUser;\n      channel.rtc_region = channel.rtcRegion;\n      delete channel.rtcRegion;\n\n      if (!channel.permissionOverwrites) continue;\n      for (const overwrite of channel.permissionOverwrites) {\n        if (typeof overwrite.type === \'string\') {\n          overwrite.type = OverwriteTypes[overwrite.type];\n        }\n        overwrite.allow &&= Permissions.resolve(overwrite.allow).toString();\n        overwrite.deny &&= Permissions.resolve(overwrite.deny).toString();\n      }\n      channel.permission_overwrites = channel.permissionOverwrites;\n      delete channel.permissionOverwrites;\n    }\n    for (const role of roles) {\n      role.color &&= resolveColor(role.color);\n      role.permissions &&= Permissions.resolve(role.permissions).toString();\n    }\n    systemChannelFlags &&= SystemChannelFlags.resolve(systemChannelFlags);\n\n    const data = await this.client.api.guilds.post({\n      data: {\n        name,\n        icon,\n        verification_level: verificationLevel,\n        default_message_notifications: defaultMessageNotifications,\n        explicit_content_filter: explicitContentFilter,\n        roles,\n        channels,\n        afk_channel_id: afkChannelId,\n        afk_timeout: afkTimeout,\n        system_channel_id: systemChannelId,\n        system_channel_flags: systemChannelFlags,\n      },\n    });\n\n    if (this.client.guilds.cache.has(data.id)) return this.client.guilds.cache.get(data.id);\n\n    return new Promise(resolve => {\n      const handleGuild = guild => {\n        if (guild.id === data.id) {\n          clearTimeout(timeout);\n          this.client.removeListener(Events.GUILD_CREATE, handleGuild);\n          this.client.decrementMaxListeners();\n          resolve(guild);\n        }\n      };\n      this.client.incrementMaxListeners();\n      this.client.on(Events.GUILD_CREATE, handleGuild);\n\n      const timeout = setTimeout(() => {\n        this.client.removeListener(Events.GUILD_CREATE, handleGuild);\n        this.client.decrementMaxListeners();\n        resolve(this.client.guilds._add(data));\n      }, 10_000).unref();\n    });\n  }\n\n  /**\n   * Options used to fetch a single guild.\n   * @typedef {BaseFetchOptions} FetchGuildOptions\n   * @property {GuildResolvable} guild The guild to fetch\n   * @property {boolean} [withCounts=true] Whether the approximate member and presence counts should be returned\n   */\n\n  /**\n   * Options used to fetch multiple guilds.\n   * @typedef {Object} FetchGuildsOptions\n   * @property {Snowflake} [before] Get guilds before this guild id\n   * @property {Snowflake} [after] Get guilds after this guild id\n   * @property {number} [limit=200] Maximum number of guilds to request (1-200)\n   */\n\n  /**\n   * Obtains one or multiple guilds from Discord, or the guild cache if it\'s already available.\n   * @param {GuildResolvable|FetchGuildOptions|FetchGuildsOptions} [options] The guild\'s id or options\n   * @returns {Promise<Guild|Collection<Snowflake, OAuth2Guild>>}\n   */\n  async fetch(options = {}) {\n    const id = this.resolveId(options) ?? this.resolveId(options.guild);\n\n    if (id) {\n      if (!options.force) {\n        const existing = this.cache.get(id);\n        if (existing) return existing;\n      }\n\n      const data = await this.client.api.guilds(id).get({ query: { with_counts: options.withCounts ?? true } });\n      return this._add(data, options.cache);\n    }\n\n    const data = await this.client.api.users(\'@me\').guilds.get({ query: options });\n    return data.reduce((coll, guild) => coll.set(guild.id, new OAuth2Guild(this.client, guild)), new Collection());\n  }\n}\n\nmodule.exports = GuildManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/GuildManager.js?')},"./node_modules/@citizenfx/discord.js/src/managers/GuildMemberManager.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/GuildMemberManager.js ***!
  \*******************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Buffer } = __webpack_require__(/*! node:buffer */ \"node:buffer\");\nconst { setTimeout, clearTimeout } = __webpack_require__(/*! node:timers */ \"node:timers\");\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst CachedManager = __webpack_require__(/*! ./CachedManager */ \"./node_modules/@citizenfx/discord.js/src/managers/CachedManager.js\");\nconst { Error, TypeError, RangeError } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst BaseGuildVoiceChannel = __webpack_require__(/*! ../structures/BaseGuildVoiceChannel */ \"./node_modules/@citizenfx/discord.js/src/structures/BaseGuildVoiceChannel.js\");\nconst { GuildMember } = __webpack_require__(/*! ../structures/GuildMember */ \"./node_modules/@citizenfx/discord.js/src/structures/GuildMember.js\");\nconst { Role } = __webpack_require__(/*! ../structures/Role */ \"./node_modules/@citizenfx/discord.js/src/structures/Role.js\");\nconst { Events, Opcodes } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst SnowflakeUtil = __webpack_require__(/*! ../util/SnowflakeUtil */ \"./node_modules/@citizenfx/discord.js/src/util/SnowflakeUtil.js\");\n\n/**\n * Manages API methods for GuildMembers and stores their cache.\n * @extends {CachedManager}\n */\nclass GuildMemberManager extends CachedManager {\n  constructor(guild, iterable) {\n    super(guild.client, GuildMember, iterable);\n\n    /**\n     * The guild this manager belongs to\n     * @type {Guild}\n     */\n    this.guild = guild;\n  }\n\n  /**\n   * The cache of this Manager\n   * @type {Collection<Snowflake, GuildMember>}\n   * @name GuildMemberManager#cache\n   */\n\n  _add(data, cache = true) {\n    return super._add(data, cache, { id: data.user.id, extras: [this.guild] });\n  }\n\n  /**\n   * Data that resolves to give a GuildMember object. This can be:\n   * * A GuildMember object\n   * * A User resolvable\n   * @typedef {GuildMember|UserResolvable} GuildMemberResolvable\n   */\n\n  /**\n   * Resolves a {@link GuildMemberResolvable} to a {@link GuildMember} object.\n   * @param {GuildMemberResolvable} member The user that is part of the guild\n   * @returns {?GuildMember}\n   */\n  resolve(member) {\n    const memberResolvable = super.resolve(member);\n    if (memberResolvable) return memberResolvable;\n    const userResolvable = this.client.users.resolveId(member);\n    if (userResolvable) return super.resolve(userResolvable);\n    return null;\n  }\n\n  /**\n   * Resolves a {@link GuildMemberResolvable} to a member id.\n   * @param {GuildMemberResolvable} member The user that is part of the guild\n   * @returns {?Snowflake}\n   */\n  resolveId(member) {\n    const memberResolvable = super.resolveId(member);\n    if (memberResolvable) return memberResolvable;\n    const userResolvable = this.client.users.resolveId(member);\n    return this.cache.has(userResolvable) ? userResolvable : null;\n  }\n\n  /**\n   * Options used to add a user to a guild using OAuth2.\n   * @typedef {Object} AddGuildMemberOptions\n   * @property {string} accessToken An OAuth2 access token for the user with the `guilds.join` scope granted to the\n   * bot's application\n   * @property {string} [nick] The nickname to give to the member (requires `MANAGE_NICKNAMES`)\n   * @property {Collection<Snowflake, Role>|RoleResolvable[]} [roles] The roles to add to the member\n   * (requires `MANAGE_ROLES`)\n   * @property {boolean} [mute] Whether the member should be muted (requires `MUTE_MEMBERS`)\n   * @property {boolean} [deaf] Whether the member should be deafened (requires `DEAFEN_MEMBERS`)\n   * @property {boolean} [force] Whether to skip the cache check and call the API directly\n   * @property {boolean} [fetchWhenExisting=true] Whether to fetch the user if not cached and already a member\n   */\n\n  /**\n   * Adds a user to the guild using OAuth2. Requires the `CREATE_INSTANT_INVITE` permission.\n   * @param {UserResolvable} user The user to add to the guild\n   * @param {AddGuildMemberOptions} options Options for adding the user to the guild\n   * @returns {Promise<GuildMember|null>}\n   */\n  async add(user, options) {\n    const userId = this.client.users.resolveId(user);\n    if (!userId) throw new TypeError('INVALID_TYPE', 'user', 'UserResolvable');\n    if (!options.force) {\n      const cachedUser = this.cache.get(userId);\n      if (cachedUser) return cachedUser;\n    }\n    const resolvedOptions = {\n      access_token: options.accessToken,\n      nick: options.nick,\n      mute: options.mute,\n      deaf: options.deaf,\n    };\n    if (options.roles) {\n      if (!Array.isArray(options.roles) && !(options.roles instanceof Collection)) {\n        throw new TypeError('INVALID_TYPE', 'options.roles', 'Array or Collection of Roles or Snowflakes', true);\n      }\n      const resolvedRoles = [];\n      for (const role of options.roles.values()) {\n        const resolvedRole = this.guild.roles.resolveId(role);\n        if (!resolvedRole) throw new TypeError('INVALID_ELEMENT', 'Array or Collection', 'options.roles', role);\n        resolvedRoles.push(resolvedRole);\n      }\n      resolvedOptions.roles = resolvedRoles;\n    }\n    const data = await this.client.api.guilds(this.guild.id).members(userId).put({ data: resolvedOptions });\n    // Data is an empty buffer if the member is already part of the guild.\n    return data instanceof Buffer ? (options.fetchWhenExisting === false ? null : this.fetch(userId)) : this._add(data);\n  }\n\n  /**\n   * Options used to fetch a single member from a guild.\n   * @typedef {BaseFetchOptions} FetchMemberOptions\n   * @property {UserResolvable} user The user to fetch\n   */\n\n  /**\n   * Options used to fetch multiple members from a guild.\n   * @typedef {Object} FetchMembersOptions\n   * @property {UserResolvable|UserResolvable[]} user The user(s) to fetch\n   * @property {?string} query Limit fetch to members with similar usernames\n   * @property {number} [limit=0] Maximum number of members to request\n   * @property {boolean} [withPresences=false] Whether or not to include the presences\n   * @property {number} [time=120e3] Timeout for receipt of members\n   * @property {?string} nonce Nonce for this request (32 characters max - default to base 16 now timestamp)\n   * @property {boolean} [force=false] Whether to skip the cache check and request the API\n   */\n\n  /**\n   * Fetches member(s) from Discord, even if they're offline.\n   * @param {UserResolvable|FetchMemberOptions|FetchMembersOptions} [options] If a UserResolvable, the user to fetch.\n   * If undefined, fetches all members.\n   * If a query, it limits the results to users with similar usernames.\n   * @returns {Promise<GuildMember|Collection<Snowflake, GuildMember>>}\n   * @example\n   * // Fetch all members from a guild\n   * guild.members.fetch()\n   *   .then(console.log)\n   *   .catch(console.error);\n   * @example\n   * // Fetch a single member\n   * guild.members.fetch('66564597481480192')\n   *   .then(console.log)\n   *   .catch(console.error);\n   * @example\n   * // Fetch a single member without checking cache\n   * guild.members.fetch({ user, force: true })\n   *   .then(console.log)\n   *   .catch(console.error)\n   * @example\n   * // Fetch a single member without caching\n   * guild.members.fetch({ user, cache: false })\n   *   .then(console.log)\n   *   .catch(console.error);\n   * @example\n   * // Fetch by an array of users including their presences\n   * guild.members.fetch({ user: ['66564597481480192', '191615925336670208'], withPresences: true })\n   *   .then(console.log)\n   *   .catch(console.error);\n   * @example\n   * // Fetch by query\n   * guild.members.fetch({ query: 'hydra', limit: 1 })\n   *   .then(console.log)\n   *   .catch(console.error);\n   */\n  fetch(options) {\n    if (!options) return this._fetchMany();\n    const user = this.client.users.resolveId(options);\n    if (user) return this._fetchSingle({ user, cache: true });\n    if (options.user) {\n      if (Array.isArray(options.user)) {\n        options.user = options.user.map(u => this.client.users.resolveId(u));\n        return this._fetchMany(options);\n      } else {\n        options.user = this.client.users.resolveId(options.user);\n      }\n      if (!options.limit && !options.withPresences) return this._fetchSingle(options);\n    }\n    return this._fetchMany(options);\n  }\n\n  /**\n   * Options used for searching guild members.\n   * @typedef {Object} GuildSearchMembersOptions\n   * @property {string} query Filter members whose username or nickname start with this query\n   * @property {number} [limit=1] Maximum number of members to search\n   * @property {boolean} [cache=true] Whether or not to cache the fetched member(s)\n   */\n\n  /**\n   * Searches for members in the guild based on a query.\n   * @param {GuildSearchMembersOptions} options Options for searching members\n   * @returns {Promise<Collection<Snowflake, GuildMember>>}\n   */\n  async search({ query, limit = 1, cache = true } = {}) {\n    const data = await this.client.api.guilds(this.guild.id).members.search.get({ query: { query, limit } });\n    return data.reduce((col, member) => col.set(member.user.id, this._add(member, cache)), new Collection());\n  }\n\n  /**\n   * Options used for listing guild members.\n   * @typedef {Object} GuildListMembersOptions\n   * @property {Snowflake} [after] Limit fetching members to those with an id greater than the supplied id\n   * @property {number} [limit=1] Maximum number of members to list\n   * @property {boolean} [cache=true] Whether or not to cache the fetched member(s)\n   */\n\n  /**\n   * Lists up to 1000 members of the guild.\n   * @param {GuildListMembersOptions} [options] Options for listing members\n   * @returns {Promise<Collection<Snowflake, GuildMember>>}\n   */\n  async list({ after, limit = 1, cache = true } = {}) {\n    const data = await this.client.api.guilds(this.guild.id).members.get({ query: { after, limit } });\n    return data.reduce((col, member) => col.set(member.user.id, this._add(member, cache)), new Collection());\n  }\n\n  /**\n   * The data for editing a guild member.\n   * @typedef {Object} GuildMemberEditData\n   * @property {?string} [nick] The nickname to set for the member\n   * @property {Collection<Snowflake, Role>|RoleResolvable[]} [roles] The roles or role ids to apply\n   * @property {boolean} [mute] Whether or not the member should be muted\n   * @property {boolean} [deaf] Whether or not the member should be deafened\n   * @property {GuildVoiceChannelResolvable|null} [channel] Channel to move the member to\n   * (if they are connected to voice), or `null` if you want to disconnect them from voice\n   * @property {DateResolvable|null} [communicationDisabledUntil] The date or timestamp\n   * for the member's communication to be disabled until. Provide `null` to enable communication again.\n   */\n\n  /**\n   * Edits a member of the guild.\n   * <info>The user must be a member of the guild</info>\n   * @param {UserResolvable} user The member to edit\n   * @param {GuildMemberEditData} data The data to edit the member with\n   * @param {string} [reason] Reason for editing this user\n   * @returns {Promise<GuildMember>}\n   */\n  async edit(user, data, reason) {\n    const id = this.client.users.resolveId(user);\n    if (!id) throw new TypeError('INVALID_TYPE', 'user', 'UserResolvable');\n\n    // Clone the data object for immutability\n    const _data = { ...data };\n    if (_data.channel) {\n      _data.channel = this.guild.channels.resolve(_data.channel);\n      if (!(_data.channel instanceof BaseGuildVoiceChannel)) {\n        throw new Error('GUILD_VOICE_CHANNEL_RESOLVE');\n      }\n      _data.channel_id = _data.channel.id;\n      _data.channel = undefined;\n    } else if (_data.channel === null) {\n      _data.channel_id = null;\n      _data.channel = undefined;\n    }\n    _data.roles &&= _data.roles.map(role => (role instanceof Role ? role.id : role));\n\n    _data.communication_disabled_until =\n      _data.communicationDisabledUntil && new Date(_data.communicationDisabledUntil).toISOString();\n\n    let endpoint = this.client.api.guilds(this.guild.id);\n    if (id === this.client.user.id) {\n      const keys = Object.keys(data);\n      if (keys.length === 1 && keys[0] === 'nick') endpoint = endpoint.members('@me');\n      else endpoint = endpoint.members(id);\n    } else {\n      endpoint = endpoint.members(id);\n    }\n    const d = await endpoint.patch({ data: _data, reason });\n\n    const clone = this.cache.get(id)?._clone();\n    clone?._patch(d);\n    return clone ?? this._add(d, false);\n  }\n\n  /**\n   * Options used for pruning guild members.\n   * <info>It's recommended to set {@link GuildPruneMembersOptions#count options.count}\n   * to `false` for large guilds.</info>\n   * @typedef {Object} GuildPruneMembersOptions\n   * @property {number} [days=7] Number of days of inactivity required to kick\n   * @property {boolean} [dry=false] Get the number of users that will be kicked, without actually kicking them\n   * @property {boolean} [count=true] Whether or not to return the number of users that have been kicked.\n   * @property {RoleResolvable[]} [roles] Array of roles to bypass the \"...and no roles\" constraint when pruning\n   * @property {string} [reason] Reason for this prune\n   */\n\n  /**\n   * Prunes members from the guild based on how long they have been inactive.\n   * @param {GuildPruneMembersOptions} [options] Options for pruning\n   * @returns {Promise<number|null>} The number of members that were/will be kicked\n   * @example\n   * // See how many members will be pruned\n   * guild.members.prune({ dry: true })\n   *   .then(pruned => console.log(`This will prune ${pruned} people!`))\n   *   .catch(console.error);\n   * @example\n   * // Actually prune the members\n   * guild.members.prune({ days: 1, reason: 'too many people!' })\n   *   .then(pruned => console.log(`I just pruned ${pruned} people!`))\n   *   .catch(console.error);\n   * @example\n   * // Include members with a specified role\n   * guild.members.prune({ days: 7, roles: ['657259391652855808'] })\n   *    .then(pruned => console.log(`I just pruned ${pruned} people!`))\n   *    .catch(console.error);\n   */\n  async prune({ days = 7, dry = false, count: compute_prune_count = true, roles = [], reason } = {}) {\n    if (typeof days !== 'number') throw new TypeError('PRUNE_DAYS_TYPE');\n\n    const query = { days };\n    const resolvedRoles = [];\n\n    for (const role of roles) {\n      const resolvedRole = this.guild.roles.resolveId(role);\n      if (!resolvedRole) {\n        throw new TypeError('INVALID_ELEMENT', 'Array', 'options.roles', role);\n      }\n      resolvedRoles.push(resolvedRole);\n    }\n\n    if (resolvedRoles.length) {\n      query.include_roles = dry ? resolvedRoles.join(',') : resolvedRoles;\n    }\n\n    const endpoint = this.client.api.guilds(this.guild.id).prune;\n\n    const { pruned } = await (dry\n      ? endpoint.get({ query, reason })\n      : endpoint.post({ data: { ...query, compute_prune_count }, reason }));\n\n    return pruned;\n  }\n\n  /**\n   * Kicks a user from the guild.\n   * <info>The user must be a member of the guild</info>\n   * @param {UserResolvable} user The member to kick\n   * @param {string} [reason] Reason for kicking\n   * @returns {Promise<GuildMember|User|Snowflake>} Result object will be resolved as specifically as possible.\n   * If the GuildMember cannot be resolved, the User will instead be attempted to be resolved. If that also cannot\n   * be resolved, the user's id will be the result.\n   * @example\n   * // Kick a user by id (or with a user/guild member object)\n   * guild.members.kick('84484653687267328')\n   *   .then(banInfo => console.log(`Kicked ${banInfo.user?.tag ?? banInfo.tag ?? banInfo}`))\n   *   .catch(console.error);\n   */\n  async kick(user, reason) {\n    const id = this.client.users.resolveId(user);\n    if (!id) return Promise.reject(new TypeError('INVALID_TYPE', 'user', 'UserResolvable'));\n\n    await this.client.api.guilds(this.guild.id).members(id).delete({ reason });\n\n    return this.resolve(user) ?? this.client.users.resolve(user) ?? id;\n  }\n\n  /**\n   * Bans a user from the guild.\n   * @param {UserResolvable} user The user to ban\n   * @param {BanOptions} [options] Options for the ban\n   * @returns {Promise<GuildMember|User|Snowflake>} Result object will be resolved as specifically as possible.\n   * If the GuildMember cannot be resolved, the User will instead be attempted to be resolved. If that also cannot\n   * be resolved, the user id will be the result.\n   * Internally calls the GuildBanManager#create method.\n   * @example\n   * // Ban a user by id (or with a user/guild member object)\n   * guild.members.ban('84484653687267328')\n   *   .then(kickInfo => console.log(`Banned ${kickInfo.user?.tag ?? kickInfo.tag ?? kickInfo}`))\n   *   .catch(console.error);\n   */\n  ban(user, options = { days: 0 }) {\n    return this.guild.bans.create(user, options);\n  }\n\n  /**\n   * Unbans a user from the guild. Internally calls the {@link GuildBanManager#remove} method.\n   * @param {UserResolvable} user The user to unban\n   * @param {string} [reason] Reason for unbanning user\n   * @returns {Promise<User>} The user that was unbanned\n   * @example\n   * // Unban a user by id (or with a user/guild member object)\n   * guild.members.unban('84484653687267328')\n   *   .then(user => console.log(`Unbanned ${user.username} from ${guild.name}`))\n   *   .catch(console.error);\n   */\n  unban(user, reason) {\n    return this.guild.bans.remove(user, reason);\n  }\n\n  async _fetchSingle({ user, cache, force = false }) {\n    if (!force) {\n      const existing = this.cache.get(user);\n      if (existing && !existing.partial) return existing;\n    }\n\n    const data = await this.client.api.guilds(this.guild.id).members(user).get();\n    return this._add(data, cache);\n  }\n\n  _fetchMany({\n    limit = 0,\n    withPresences: presences = false,\n    user: user_ids,\n    query,\n    time = 120e3,\n    nonce = SnowflakeUtil.generate(),\n  } = {}) {\n    return new Promise((resolve, reject) => {\n      if (!query && !user_ids) query = '';\n      if (nonce.length > 32) throw new RangeError('MEMBER_FETCH_NONCE_LENGTH');\n      this.guild.shard.send({\n        op: Opcodes.REQUEST_GUILD_MEMBERS,\n        d: {\n          guild_id: this.guild.id,\n          presences,\n          user_ids,\n          query,\n          nonce,\n          limit,\n        },\n      });\n      const fetchedMembers = new Collection();\n      let i = 0;\n      const handler = (members, _, chunk) => {\n        timeout.refresh();\n        if (chunk.nonce !== nonce) return;\n        i++;\n        for (const member of members.values()) {\n          fetchedMembers.set(member.id, member);\n        }\n        if (members.size < 1_000 || (limit && fetchedMembers.size >= limit) || i === chunk.count) {\n          clearTimeout(timeout);\n          this.client.removeListener(Events.GUILD_MEMBERS_CHUNK, handler);\n          this.client.decrementMaxListeners();\n          let fetched = fetchedMembers;\n          if (user_ids && !Array.isArray(user_ids) && fetched.size) fetched = fetched.first();\n          resolve(fetched);\n        }\n      };\n      const timeout = setTimeout(() => {\n        this.client.removeListener(Events.GUILD_MEMBERS_CHUNK, handler);\n        this.client.decrementMaxListeners();\n        reject(new Error('GUILD_MEMBERS_TIMEOUT'));\n      }, time).unref();\n      this.client.incrementMaxListeners();\n      this.client.on(Events.GUILD_MEMBERS_CHUNK, handler);\n    });\n  }\n}\n\nmodule.exports = GuildMemberManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/GuildMemberManager.js?")},"./node_modules/@citizenfx/discord.js/src/managers/GuildMemberRoleManager.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/GuildMemberRoleManager.js ***!
  \***********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst DataManager = __webpack_require__(/*! ./DataManager */ \"./node_modules/@citizenfx/discord.js/src/managers/DataManager.js\");\nconst { TypeError } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst { Role } = __webpack_require__(/*! ../structures/Role */ \"./node_modules/@citizenfx/discord.js/src/structures/Role.js\");\n\n/**\n * Manages API methods for roles of a GuildMember and stores their cache.\n * @extends {DataManager}\n */\nclass GuildMemberRoleManager extends DataManager {\n  constructor(member) {\n    super(member.client, Role);\n\n    /**\n     * The GuildMember this manager belongs to\n     * @type {GuildMember}\n     */\n    this.member = member;\n\n    /**\n     * The Guild this manager belongs to\n     * @type {Guild}\n     */\n    this.guild = member.guild;\n  }\n\n  /**\n   * The roles of this member\n   * @type {Collection<Snowflake, Role>}\n   * @readonly\n   */\n  get cache() {\n    const everyone = this.guild.roles.everyone;\n    return this.guild.roles.cache.filter(role => this.member._roles.includes(role.id)).set(everyone.id, everyone);\n  }\n\n  /**\n   * The role of the member used to hoist them in a separate category in the users list\n   * @type {?Role}\n   * @readonly\n   */\n  get hoist() {\n    const hoistedRoles = this.cache.filter(role => role.hoist);\n    if (!hoistedRoles.size) return null;\n    return hoistedRoles.reduce((prev, role) => (role.comparePositionTo(prev) > 0 ? role : prev));\n  }\n\n  /**\n   * The role of the member used to set their role icon\n   * @type {?Role}\n   * @readonly\n   */\n  get icon() {\n    const iconRoles = this.cache.filter(role => role.icon || role.unicodeEmoji);\n    if (!iconRoles.size) return null;\n    return iconRoles.reduce((prev, role) => (role.comparePositionTo(prev) > 0 ? role : prev));\n  }\n\n  /**\n   * The role of the member used to set their color\n   * @type {?Role}\n   * @readonly\n   */\n  get color() {\n    const coloredRoles = this.cache.filter(role => role.color);\n    if (!coloredRoles.size) return null;\n    return coloredRoles.reduce((prev, role) => (role.comparePositionTo(prev) > 0 ? role : prev));\n  }\n\n  /**\n   * The role of the member with the highest position\n   * @type {Role}\n   * @readonly\n   */\n  get highest() {\n    return this.cache.reduce((prev, role) => (role.comparePositionTo(prev) > 0 ? role : prev), this.cache.first());\n  }\n\n  /**\n   * The premium subscriber role of the guild, if present on the member\n   * @type {?Role}\n   * @readonly\n   */\n  get premiumSubscriberRole() {\n    return this.cache.find(role => role.tags?.premiumSubscriberRole) ?? null;\n  }\n\n  /**\n   * The managed role this member created when joining the guild, if any\n   * <info>Only ever available on bots</info>\n   * @type {?Role}\n   * @readonly\n   */\n  get botRole() {\n    if (!this.member.user.bot) return null;\n    return this.cache.find(role => role.tags?.botId === this.member.user.id) ?? null;\n  }\n\n  /**\n   * Adds a role (or multiple roles) to the member.\n   * @param {RoleResolvable|RoleResolvable[]|Collection<Snowflake, Role>} roleOrRoles The role or roles to add\n   * @param {string} [reason] Reason for adding the role(s)\n   * @returns {Promise<GuildMember>}\n   */\n  async add(roleOrRoles, reason) {\n    if (roleOrRoles instanceof Collection || Array.isArray(roleOrRoles)) {\n      const resolvedRoles = [];\n      for (const role of roleOrRoles.values()) {\n        const resolvedRole = this.guild.roles.resolveId(role);\n        if (!resolvedRole) throw new TypeError('INVALID_ELEMENT', 'Array or Collection', 'roles', role);\n        resolvedRoles.push(resolvedRole);\n      }\n\n      const newRoles = [...new Set(resolvedRoles.concat(...this.cache.keys()))];\n      return this.set(newRoles, reason);\n    } else {\n      roleOrRoles = this.guild.roles.resolveId(roleOrRoles);\n      if (roleOrRoles === null) {\n        throw new TypeError('INVALID_TYPE', 'roles', 'Role, Snowflake or Array or Collection of Roles or Snowflakes');\n      }\n\n      await this.client.api.guilds[this.guild.id].members[this.member.id].roles[roleOrRoles].put({ reason });\n\n      const clone = this.member._clone();\n      clone._roles = [...this.cache.keys(), roleOrRoles];\n      return clone;\n    }\n  }\n\n  /**\n   * Removes a role (or multiple roles) from the member.\n   * @param {RoleResolvable|RoleResolvable[]|Collection<Snowflake, Role>} roleOrRoles The role or roles to remove\n   * @param {string} [reason] Reason for removing the role(s)\n   * @returns {Promise<GuildMember>}\n   */\n  async remove(roleOrRoles, reason) {\n    if (roleOrRoles instanceof Collection || Array.isArray(roleOrRoles)) {\n      const resolvedRoles = [];\n      for (const role of roleOrRoles.values()) {\n        const resolvedRole = this.guild.roles.resolveId(role);\n        if (!resolvedRole) throw new TypeError('INVALID_ELEMENT', 'Array or Collection', 'roles', role);\n        resolvedRoles.push(resolvedRole);\n      }\n\n      const newRoles = this.cache.filter(role => !resolvedRoles.includes(role.id));\n      return this.set(newRoles, reason);\n    } else {\n      roleOrRoles = this.guild.roles.resolveId(roleOrRoles);\n      if (roleOrRoles === null) {\n        throw new TypeError('INVALID_TYPE', 'roles', 'Role, Snowflake or Array or Collection of Roles or Snowflakes');\n      }\n\n      await this.client.api.guilds[this.guild.id].members[this.member.id].roles[roleOrRoles].delete({ reason });\n\n      const clone = this.member._clone();\n      const newRoles = this.cache.filter(role => role.id !== roleOrRoles);\n      clone._roles = [...newRoles.keys()];\n      return clone;\n    }\n  }\n\n  /**\n   * Sets the roles applied to the member.\n   * @param {Collection<Snowflake, Role>|RoleResolvable[]} roles The roles or role ids to apply\n   * @param {string} [reason] Reason for applying the roles\n   * @returns {Promise<GuildMember>}\n   * @example\n   * // Set the member's roles to a single role\n   * guildMember.roles.set(['391156570408615936'])\n   *   .then(console.log)\n   *   .catch(console.error);\n   * @example\n   * // Remove all the roles from a member\n   * guildMember.roles.set([])\n   *   .then(member => console.log(`Member roles is now of ${member.roles.cache.size} size`))\n   *   .catch(console.error);\n   */\n  set(roles, reason) {\n    return this.member.edit({ roles }, reason);\n  }\n\n  clone() {\n    const clone = new this.constructor(this.member);\n    clone.member._roles = [...this.cache.keys()];\n    return clone;\n  }\n}\n\nmodule.exports = GuildMemberRoleManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/GuildMemberRoleManager.js?")},"./node_modules/@citizenfx/discord.js/src/managers/GuildScheduledEventManager.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/GuildScheduledEventManager.js ***!
  \***************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst CachedManager = __webpack_require__(/*! ./CachedManager */ \"./node_modules/@citizenfx/discord.js/src/managers/CachedManager.js\");\nconst { TypeError, Error } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst { GuildScheduledEvent } = __webpack_require__(/*! ../structures/GuildScheduledEvent */ \"./node_modules/@citizenfx/discord.js/src/structures/GuildScheduledEvent.js\");\nconst { PrivacyLevels, GuildScheduledEventEntityTypes, GuildScheduledEventStatuses } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\n\n/**\n * Manages API methods for GuildScheduledEvents and stores their cache.\n * @extends {CachedManager}\n */\nclass GuildScheduledEventManager extends CachedManager {\n  constructor(guild, iterable) {\n    super(guild.client, GuildScheduledEvent, iterable);\n\n    /**\n     * The guild this manager belongs to\n     * @type {Guild}\n     */\n    this.guild = guild;\n  }\n\n  /**\n   * The cache of this manager\n   * @type {Collection<Snowflake, GuildScheduledEvent>}\n   * @name GuildScheduledEventManager#cache\n   */\n\n  /**\n   * Data that resolves to give a GuildScheduledEvent object. This can be:\n   * * A Snowflake\n   * * A GuildScheduledEvent object\n   * @typedef {Snowflake|GuildScheduledEvent} GuildScheduledEventResolvable\n   */\n\n  /**\n   * Options used to create a guild scheduled event.\n   * @typedef {Object} GuildScheduledEventCreateOptions\n   * @property {string} name The name of the guild scheduled event\n   * @property {DateResolvable} scheduledStartTime The time to schedule the event at\n   * @property {DateResolvable} [scheduledEndTime] The time to end the event at\n   * <warn>This is required if `entityType` is 'EXTERNAL'</warn>\n   * @property {PrivacyLevel|number} privacyLevel The privacy level of the guild scheduled event\n   * @property {GuildScheduledEventEntityType|number} entityType The scheduled entity type of the event\n   * @property {string} [description] The description of the guild scheduled event\n   * @property {GuildVoiceChannelResolvable} [channel] The channel of the guild scheduled event\n   * <warn>This is required if `entityType` is 'STAGE_INSTANCE' or `VOICE`</warn>\n   * @property {GuildScheduledEventEntityMetadataOptions} [entityMetadata] The entity metadata of the\n   * guild scheduled event\n   * <warn>This is required if `entityType` is 'EXTERNAL'</warn>\n   * @property {string} [reason] The reason for creating the guild scheduled event\n   */\n\n  /**\n   * Options used to set entity metadata of a guild scheduled event.\n   * @typedef {Object} GuildScheduledEventEntityMetadataOptions\n   * @property {string} [location] The location of the guild scheduled event\n   * <warn>This is required if `entityType` is 'EXTERNAL'</warn>\n   */\n\n  /**\n   * Creates a new guild scheduled event.\n   * @param {GuildScheduledEventCreateOptions} options Options for creating the guild scheduled event\n   * @returns {Promise<GuildScheduledEvent>}\n   */\n  async create(options) {\n    if (typeof options !== 'object') throw new TypeError('INVALID_TYPE', 'options', 'object', true);\n    let {\n      privacyLevel,\n      entityType,\n      channel,\n      name,\n      scheduledStartTime,\n      description,\n      scheduledEndTime,\n      entityMetadata,\n      reason,\n    } = options;\n\n    if (typeof privacyLevel === 'string') privacyLevel = PrivacyLevels[privacyLevel];\n    if (typeof entityType === 'string') entityType = GuildScheduledEventEntityTypes[entityType];\n\n    let entity_metadata, channel_id;\n    if (entityType === GuildScheduledEventEntityTypes.EXTERNAL) {\n      channel_id = typeof channel === 'undefined' ? channel : null;\n      entity_metadata = { location: entityMetadata?.location };\n    } else {\n      channel_id = this.guild.channels.resolveId(channel);\n      if (!channel_id) throw new Error('GUILD_VOICE_CHANNEL_RESOLVE');\n      entity_metadata = typeof entityMetadata === 'undefined' ? entityMetadata : null;\n    }\n\n    const data = await this.client.api.guilds(this.guild.id, 'scheduled-events').post({\n      data: {\n        channel_id,\n        name,\n        privacy_level: privacyLevel,\n        scheduled_start_time: new Date(scheduledStartTime).toISOString(),\n        scheduled_end_time: scheduledEndTime ? new Date(scheduledEndTime).toISOString() : scheduledEndTime,\n        description,\n        entity_type: entityType,\n        entity_metadata,\n      },\n      reason,\n    });\n\n    return this._add(data);\n  }\n\n  /**\n   * Options used to fetch a single guild scheduled event from a guild.\n   * @typedef {BaseFetchOptions} FetchGuildScheduledEventOptions\n   * @property {GuildScheduledEventResolvable} guildScheduledEvent The guild scheduled event to fetch\n   * @property {boolean} [withUserCount=true] Whether to fetch the number of users subscribed to the scheduled event\n   */\n\n  /**\n   * Options used to fetch multiple guild scheduled events from a guild.\n   * @typedef {Object} FetchGuildScheduledEventsOptions\n   * @property {boolean} [cache] Whether or not to cache the fetched guild scheduled events\n   * @property {boolean} [withUserCount=true] Whether to fetch the number of users subscribed to each scheduled event\n   * should be returned\n   */\n\n  /**\n   * Obtains one or more guild scheduled events from Discord, or the guild cache if it's already available.\n   * @param {GuildScheduledEventResolvable|FetchGuildScheduledEventOptions|FetchGuildScheduledEventsOptions} [options]\n   * The id of the guild scheduled event or options\n   * @returns {Promise<GuildScheduledEvent|Collection<Snowflake, GuildScheduledEvent>>}\n   */\n  async fetch(options = {}) {\n    const id = this.resolveId(options.guildScheduledEvent ?? options);\n\n    if (id) {\n      if (!options.force) {\n        const existing = this.cache.get(id);\n        if (existing) return existing;\n      }\n\n      const data = await this.client.api\n        .guilds(this.guild.id, 'scheduled-events', id)\n        .get({ query: { with_user_count: options.withUserCount ?? true } });\n      return this._add(data, options.cache);\n    }\n\n    const data = await this.client.api\n      .guilds(this.guild.id, 'scheduled-events')\n      .get({ query: { with_user_count: options.withUserCount ?? true } });\n\n    return data.reduce(\n      (coll, rawGuildScheduledEventData) =>\n        coll.set(\n          rawGuildScheduledEventData.id,\n          this.guild.scheduledEvents._add(rawGuildScheduledEventData, options.cache),\n        ),\n      new Collection(),\n    );\n  }\n\n  /**\n   * Options used to edit a guild scheduled event.\n   * @typedef {Object} GuildScheduledEventEditOptions\n   * @property {string} [name] The name of the guild scheduled event\n   * @property {DateResolvable} [scheduledStartTime] The time to schedule the event at\n   * @property {DateResolvable} [scheduledEndTime] The time to end the event at\n   * @property {PrivacyLevel|number} [privacyLevel] The privacy level of the guild scheduled event\n   * @property {GuildScheduledEventEntityType|number} [entityType] The scheduled entity type of the event\n   * @property {string} [description] The description of the guild scheduled event\n   * @property {?GuildVoiceChannelResolvable} [channel] The channel of the guild scheduled event\n   * @property {GuildScheduledEventStatus|number} [status] The status of the guild scheduled event\n   * @property {GuildScheduledEventEntityMetadataOptions} [entityMetadata] The entity metadata of the\n   * guild scheduled event\n   * <warn>This can be modified only if `entityType` of the `GuildScheduledEvent` to be edited is 'EXTERNAL'</warn>\n   * @property {string} [reason] The reason for editing the guild scheduled event\n   */\n\n  /**\n   * Edits a guild scheduled event.\n   * @param {GuildScheduledEventResolvable} guildScheduledEvent The guild scheduled event to edit\n   * @param {GuildScheduledEventEditOptions} options Options to edit the guild scheduled event\n   * @returns {Promise<GuildScheduledEvent>}\n   */\n  async edit(guildScheduledEvent, options) {\n    const guildScheduledEventId = this.resolveId(guildScheduledEvent);\n    if (!guildScheduledEventId) throw new Error('GUILD_SCHEDULED_EVENT_RESOLVE');\n\n    if (typeof options !== 'object') throw new TypeError('INVALID_TYPE', 'options', 'object', true);\n    let {\n      privacyLevel,\n      entityType,\n      channel,\n      status,\n      name,\n      scheduledStartTime,\n      description,\n      scheduledEndTime,\n      entityMetadata,\n      reason,\n    } = options;\n\n    if (typeof privacyLevel === 'string') privacyLevel = PrivacyLevels[privacyLevel];\n    if (typeof entityType === 'string') entityType = GuildScheduledEventEntityTypes[entityType];\n    if (typeof status === 'string') status = GuildScheduledEventStatuses[status];\n\n    let entity_metadata;\n    if (entityMetadata) {\n      entity_metadata = {\n        location: entityMetadata.location,\n      };\n    }\n\n    const data = await this.client.api.guilds(this.guild.id, 'scheduled-events', guildScheduledEventId).patch({\n      data: {\n        channel_id: typeof channel === 'undefined' ? channel : this.guild.channels.resolveId(channel),\n        name,\n        privacy_level: privacyLevel,\n        scheduled_start_time: scheduledStartTime ? new Date(scheduledStartTime).toISOString() : undefined,\n        scheduled_end_time: scheduledEndTime ? new Date(scheduledEndTime).toISOString() : scheduledEndTime,\n        description,\n        entity_type: entityType,\n        status,\n        entity_metadata,\n      },\n      reason,\n    });\n\n    return this._add(data);\n  }\n\n  /**\n   * Deletes a guild scheduled event.\n   * @param {GuildScheduledEventResolvable} guildScheduledEvent The guild scheduled event to delete\n   * @returns {Promise<void>}\n   */\n  async delete(guildScheduledEvent) {\n    const guildScheduledEventId = this.resolveId(guildScheduledEvent);\n    if (!guildScheduledEventId) throw new Error('GUILD_SCHEDULED_EVENT_RESOLVE');\n\n    await this.client.api.guilds(this.guild.id, 'scheduled-events', guildScheduledEventId).delete();\n  }\n\n  /**\n   * Options used to fetch subscribers of a guild scheduled event\n   * @typedef {Object} FetchGuildScheduledEventSubscribersOptions\n   * @property {number} [limit] The maximum numbers of users to fetch\n   * @property {boolean} [withMember] Whether to fetch guild member data of the users\n   * @property {Snowflake} [before] Consider only users before this user id\n   * @property {Snowflake} [after] Consider only users after this user id\n   * <warn>If both `before` and `after` are provided, only `before` is respected</warn>\n   */\n\n  /**\n   * Represents a subscriber of a {@link GuildScheduledEvent}\n   * @typedef {Object} GuildScheduledEventUser\n   * @property {Snowflake} guildScheduledEventId The id of the guild scheduled event which the user subscribed to\n   * @property {User} user The user that subscribed to the guild scheduled event\n   * @property {?GuildMember} member The guild member associated with the user, if any\n   */\n\n  /**\n   * Fetches subscribers of a guild scheduled event.\n   * @param {GuildScheduledEventResolvable} guildScheduledEvent The guild scheduled event to fetch subscribers of\n   * @param {FetchGuildScheduledEventSubscribersOptions} [options={}] Options for fetching the subscribers\n   * @returns {Promise<Collection<Snowflake, GuildScheduledEventUser>>}\n   */\n  async fetchSubscribers(guildScheduledEvent, options = {}) {\n    const guildScheduledEventId = this.resolveId(guildScheduledEvent);\n    if (!guildScheduledEventId) throw new Error('GUILD_SCHEDULED_EVENT_RESOLVE');\n\n    let { limit, withMember, before, after } = options;\n\n    const data = await this.client.api.guilds(this.guild.id, 'scheduled-events', guildScheduledEventId).users.get({\n      query: { limit, with_member: withMember, before, after },\n    });\n\n    return data.reduce(\n      (coll, rawData) =>\n        coll.set(rawData.user.id, {\n          guildScheduledEventId: rawData.guild_scheduled_event_id,\n          user: this.client.users._add(rawData.user),\n          member: rawData.member ? this.guild.members._add({ ...rawData.member, user: rawData.user }) : null,\n        }),\n      new Collection(),\n    );\n  }\n}\n\nmodule.exports = GuildScheduledEventManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/GuildScheduledEventManager.js?")},"./node_modules/@citizenfx/discord.js/src/managers/GuildStickerManager.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/GuildStickerManager.js ***!
  \********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst CachedManager = __webpack_require__(/*! ./CachedManager */ \"./node_modules/@citizenfx/discord.js/src/managers/CachedManager.js\");\nconst { TypeError } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst MessagePayload = __webpack_require__(/*! ../structures/MessagePayload */ \"./node_modules/@citizenfx/discord.js/src/structures/MessagePayload.js\");\nconst { Sticker } = __webpack_require__(/*! ../structures/Sticker */ \"./node_modules/@citizenfx/discord.js/src/structures/Sticker.js\");\n\n/**\n * Manages API methods for Guild Stickers and stores their cache.\n * @extends {CachedManager}\n */\nclass GuildStickerManager extends CachedManager {\n  constructor(guild, iterable) {\n    super(guild.client, Sticker, iterable);\n\n    /**\n     * The guild this manager belongs to\n     * @type {Guild}\n     */\n    this.guild = guild;\n  }\n\n  /**\n   * The cache of Guild Stickers\n   * @type {Collection<Snowflake, Sticker>}\n   * @name GuildStickerManager#cache\n   */\n\n  _add(data, cache) {\n    return super._add(data, cache, { extras: [this.guild] });\n  }\n\n  /**\n   * Options for creating a guild sticker.\n   * @typedef {Object} GuildStickerCreateOptions\n   * @property {?string} [description] The description for the sticker\n   * @property {string} [reason] Reason for creating the sticker\n   */\n\n  /**\n   * Creates a new custom sticker in the guild.\n   * @param {BufferResolvable|Stream|FileOptions|MessageAttachment} file The file for the sticker\n   * @param {string} name The name for the sticker\n   * @param {string} tags The Discord name of a unicode emoji representing the sticker's expression\n   * @param {GuildStickerCreateOptions} [options] Options\n   * @returns {Promise<Sticker>} The created sticker\n   * @example\n   * // Create a new sticker from a URL\n   * guild.stickers.create('https://i.imgur.com/w3duR07.png', 'rip', 'headstone')\n   *   .then(sticker => console.log(`Created new sticker with name ${sticker.name}!`))\n   *   .catch(console.error);\n   * @example\n   * // Create a new sticker from a file on your computer\n   * guild.stickers.create('./memes/banana.png', 'banana', 'banana')\n   *   .then(sticker => console.log(`Created new sticker with name ${sticker.name}!`))\n   *   .catch(console.error);\n   */\n  async create(file, name, tags, { description, reason } = {}) {\n    const resolvedFile = await MessagePayload.resolveFile(file);\n    if (!resolvedFile) throw new TypeError('REQ_RESOURCE_TYPE');\n    file = { ...resolvedFile, key: 'file' };\n\n    const data = { name, tags, description: description ?? '' };\n\n    const sticker = await this.client.api\n      .guilds(this.guild.id)\n      .stickers.post({ data, files: [file], reason, dontUsePayloadJSON: true });\n    return this.client.actions.GuildStickerCreate.handle(this.guild, sticker).sticker;\n  }\n\n  /**\n   * Data that resolves to give a Sticker object. This can be:\n   * * A Sticker object\n   * * A Snowflake\n   * @typedef {Sticker|Snowflake} StickerResolvable\n   */\n\n  /**\n   * Resolves a StickerResolvable to a Sticker object.\n   * @method resolve\n   * @memberof GuildStickerManager\n   * @instance\n   * @param {StickerResolvable} sticker The Sticker resolvable to identify\n   * @returns {?Sticker}\n   */\n\n  /**\n   * Resolves a StickerResolvable to a Sticker id string.\n   * @method resolveId\n   * @memberof GuildStickerManager\n   * @instance\n   * @param {StickerResolvable} sticker The Sticker resolvable to identify\n   * @returns {?Snowflake}\n   */\n\n  /**\n   * Edits a sticker.\n   * @param {StickerResolvable} sticker The sticker to edit\n   * @param {GuildStickerEditData} [data] The new data for the sticker\n   * @param {string} [reason] Reason for editing this sticker\n   * @returns {Promise<Sticker>}\n   */\n  async edit(sticker, data, reason) {\n    const stickerId = this.resolveId(sticker);\n    if (!stickerId) throw new TypeError('INVALID_TYPE', 'sticker', 'StickerResolvable');\n\n    const d = await this.client.api.guilds(this.guild.id).stickers(stickerId).patch({\n      data,\n      reason,\n    });\n\n    const existing = this.cache.get(stickerId);\n    if (existing) {\n      const clone = existing._clone();\n      clone._patch(d);\n      return clone;\n    }\n    return this._add(d);\n  }\n\n  /**\n   * Deletes a sticker.\n   * @param {StickerResolvable} sticker The sticker to delete\n   * @param {string} [reason] Reason for deleting this sticker\n   * @returns {Promise<void>}\n   */\n  async delete(sticker, reason) {\n    sticker = this.resolveId(sticker);\n    if (!sticker) throw new TypeError('INVALID_TYPE', 'sticker', 'StickerResolvable');\n\n    await this.client.api.guilds(this.guild.id).stickers(sticker).delete({ reason });\n  }\n\n  /**\n   * Obtains one or more stickers from Discord, or the sticker cache if they're already available.\n   * @param {Snowflake} [id] The Sticker's id\n   * @param {BaseFetchOptions} [options] Additional options for this fetch\n   * @returns {Promise<Sticker|Collection<Snowflake, Sticker>>}\n   * @example\n   * // Fetch all stickers from the guild\n   * message.guild.stickers.fetch()\n   *   .then(stickers => console.log(`There are ${stickers.size} stickers.`))\n   *   .catch(console.error);\n   * @example\n   * // Fetch a single sticker\n   * message.guild.stickers.fetch('222078108977594368')\n   *   .then(sticker => console.log(`The sticker name is: ${sticker.name}`))\n   *   .catch(console.error);\n   */\n  async fetch(id, { cache = true, force = false } = {}) {\n    if (id) {\n      if (!force) {\n        const existing = this.cache.get(id);\n        if (existing) return existing;\n      }\n      const sticker = await this.client.api.guilds(this.guild.id).stickers(id).get();\n      return this._add(sticker, cache);\n    }\n\n    const data = await this.client.api.guilds(this.guild.id).stickers.get();\n    return new Collection(data.map(sticker => [sticker.id, this._add(sticker, cache)]));\n  }\n}\n\nmodule.exports = GuildStickerManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/GuildStickerManager.js?")},"./node_modules/@citizenfx/discord.js/src/managers/MessageManager.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/MessageManager.js ***!
  \***************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst CachedManager = __webpack_require__(/*! ./CachedManager */ \"./node_modules/@citizenfx/discord.js/src/managers/CachedManager.js\");\nconst { TypeError } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst { Message } = __webpack_require__(/*! ../structures/Message */ \"./node_modules/@citizenfx/discord.js/src/structures/Message.js\");\nconst MessagePayload = __webpack_require__(/*! ../structures/MessagePayload */ \"./node_modules/@citizenfx/discord.js/src/structures/MessagePayload.js\");\nconst Util = __webpack_require__(/*! ../util/Util */ \"./node_modules/@citizenfx/discord.js/src/util/Util.js\");\n\n/**\n * Manages API methods for Messages and holds their cache.\n * @extends {CachedManager}\n */\nclass MessageManager extends CachedManager {\n  constructor(channel, iterable) {\n    super(channel.client, Message, iterable);\n\n    /**\n     * The channel that the messages belong to\n     * @type {TextBasedChannels}\n     */\n    this.channel = channel;\n  }\n\n  /**\n   * The cache of Messages\n   * @type {Collection<Snowflake, Message>}\n   * @name MessageManager#cache\n   */\n\n  _add(data, cache) {\n    return super._add(data, cache);\n  }\n\n  /**\n   * The parameters to pass in when requesting previous messages from a channel. `around`, `before` and\n   * `after` are mutually exclusive. All the parameters are optional.\n   * @typedef {Object} ChannelLogsQueryOptions\n   * @property {number} [limit=50] Number of messages to acquire\n   * @property {Snowflake} [before] The message's id to get the messages that were posted before it\n   * @property {Snowflake} [after] The message's id to get the messages that were posted after it\n   * @property {Snowflake} [around] The message's id to get the messages that were posted around it\n   */\n\n  /**\n   * Gets a message, or messages, from this channel.\n   * <info>The returned Collection does not contain reaction users of the messages if they were not cached.\n   * Those need to be fetched separately in such a case.</info>\n   * @param {Snowflake|ChannelLogsQueryOptions} [message] The id of the message to fetch, or query parameters.\n   * @param {BaseFetchOptions} [options] Additional options for this fetch\n   * @returns {Promise<Message|Collection<Snowflake, Message>>}\n   * @example\n   * // Get message\n   * channel.messages.fetch('99539446449315840')\n   *   .then(message => console.log(message.content))\n   *   .catch(console.error);\n   * @example\n   * // Get messages\n   * channel.messages.fetch({ limit: 10 })\n   *   .then(messages => console.log(`Received ${messages.size} messages`))\n   *   .catch(console.error);\n   * @example\n   * // Get messages and filter by user id\n   * channel.messages.fetch()\n   *   .then(messages => console.log(`${messages.filter(m => m.author.id === '84484653687267328').size} messages`))\n   *   .catch(console.error);\n   */\n  fetch(message, { cache = true, force = false } = {}) {\n    return typeof message === 'string' ? this._fetchId(message, cache, force) : this._fetchMany(message, cache);\n  }\n\n  /**\n   * Fetches the pinned messages of this channel and returns a collection of them.\n   * <info>The returned Collection does not contain any reaction data of the messages.\n   * Those need to be fetched separately.</info>\n   * @param {boolean} [cache=true] Whether to cache the message(s)\n   * @returns {Promise<Collection<Snowflake, Message>>}\n   * @example\n   * // Get pinned messages\n   * channel.messages.fetchPinned()\n   *   .then(messages => console.log(`Received ${messages.size} messages`))\n   *   .catch(console.error);\n   */\n  async fetchPinned(cache = true) {\n    const data = await this.client.api.channels[this.channel.id].pins.get();\n    const messages = new Collection();\n    for (const message of data) messages.set(message.id, this._add(message, cache));\n    return messages;\n  }\n\n  /**\n   * Data that can be resolved to a Message object. This can be:\n   * * A Message\n   * * A Snowflake\n   * @typedef {Message|Snowflake} MessageResolvable\n   */\n\n  /**\n   * Resolves a {@link MessageResolvable} to a {@link Message} object.\n   * @method resolve\n   * @memberof MessageManager\n   * @instance\n   * @param {MessageResolvable} message The message resolvable to resolve\n   * @returns {?Message}\n   */\n\n  /**\n   * Resolves a {@link MessageResolvable} to a {@link Message} id.\n   * @method resolveId\n   * @memberof MessageManager\n   * @instance\n   * @param {MessageResolvable} message The message resolvable to resolve\n   * @returns {?Snowflake}\n   */\n\n  /**\n   * Edits a message, even if it's not cached.\n   * @param {MessageResolvable} message The message to edit\n   * @param {string|MessageEditOptions|MessagePayload} options The options to edit the message\n   * @returns {Promise<Message>}\n   */\n  async edit(message, options) {\n    const messageId = this.resolveId(message);\n    if (!messageId) throw new TypeError('INVALID_TYPE', 'message', 'MessageResolvable');\n\n    const { data, files } = await (options instanceof MessagePayload\n      ? options\n      : MessagePayload.create(message instanceof Message ? message : this, options)\n    )\n      .resolveData()\n      .resolveFiles();\n    const d = await this.client.api.channels[this.channel.id].messages[messageId].patch({ data, files });\n\n    const existing = this.cache.get(messageId);\n    if (existing) {\n      const clone = existing._clone();\n      clone._patch(d);\n      return clone;\n    }\n    return this._add(d);\n  }\n\n  /**\n   * Publishes a message in an announcement channel to all channels following it, even if it's not cached.\n   * @param {MessageResolvable} message The message to publish\n   * @returns {Promise<Message>}\n   */\n  async crosspost(message) {\n    message = this.resolveId(message);\n    if (!message) throw new TypeError('INVALID_TYPE', 'message', 'MessageResolvable');\n\n    const data = await this.client.api.channels(this.channel.id).messages(message).crosspost.post();\n    return this.cache.get(data.id) ?? this._add(data);\n  }\n\n  /**\n   * Pins a message to the channel's pinned messages, even if it's not cached.\n   * @param {MessageResolvable} message The message to pin\n   * @returns {Promise<void>}\n   */\n  async pin(message) {\n    message = this.resolveId(message);\n    if (!message) throw new TypeError('INVALID_TYPE', 'message', 'MessageResolvable');\n\n    await this.client.api.channels(this.channel.id).pins(message).put();\n  }\n\n  /**\n   * Unpins a message from the channel's pinned messages, even if it's not cached.\n   * @param {MessageResolvable} message The message to unpin\n   * @returns {Promise<void>}\n   */\n  async unpin(message) {\n    message = this.resolveId(message);\n    if (!message) throw new TypeError('INVALID_TYPE', 'message', 'MessageResolvable');\n\n    await this.client.api.channels(this.channel.id).pins(message).delete();\n  }\n\n  /**\n   * Adds a reaction to a message, even if it's not cached.\n   * @param {MessageResolvable} message The message to react to\n   * @param {EmojiIdentifierResolvable} emoji The emoji to react with\n   * @returns {Promise<void>}\n   */\n  async react(message, emoji) {\n    message = this.resolveId(message);\n    if (!message) throw new TypeError('INVALID_TYPE', 'message', 'MessageResolvable');\n\n    emoji = Util.resolvePartialEmoji(emoji);\n    if (!emoji) throw new TypeError('EMOJI_TYPE', 'emoji', 'EmojiIdentifierResolvable');\n\n    const emojiId = emoji.id\n      ? `${emoji.animated ? 'a:' : ''}${emoji.name}:${emoji.id}`\n      : encodeURIComponent(emoji.name);\n\n    // eslint-disable-next-line newline-per-chained-call\n    await this.client.api.channels(this.channel.id).messages(message).reactions(emojiId, '@me').put();\n  }\n\n  /**\n   * Deletes a message, even if it's not cached.\n   * @param {MessageResolvable} message The message to delete\n   * @returns {Promise<void>}\n   */\n  async delete(message) {\n    message = this.resolveId(message);\n    if (!message) throw new TypeError('INVALID_TYPE', 'message', 'MessageResolvable');\n\n    await this.client.api.channels(this.channel.id).messages(message).delete();\n  }\n\n  async _fetchId(messageId, cache, force) {\n    if (!force) {\n      const existing = this.cache.get(messageId);\n      if (existing && !existing.partial) return existing;\n    }\n\n    const data = await this.client.api.channels[this.channel.id].messages[messageId].get();\n    return this._add(data, cache);\n  }\n\n  async _fetchMany(options = {}, cache) {\n    const data = await this.client.api.channels[this.channel.id].messages.get({ query: options });\n    const messages = new Collection();\n    for (const message of data) messages.set(message.id, this._add(message, cache));\n    return messages;\n  }\n}\n\nmodule.exports = MessageManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/MessageManager.js?")},"./node_modules/@citizenfx/discord.js/src/managers/PermissionOverwriteManager.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/PermissionOverwriteManager.js ***!
  \***************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst process = __webpack_require__(/*! node:process */ \"node:process\");\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst CachedManager = __webpack_require__(/*! ./CachedManager */ \"./node_modules/@citizenfx/discord.js/src/managers/CachedManager.js\");\nconst { TypeError } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst PermissionOverwrites = __webpack_require__(/*! ../structures/PermissionOverwrites */ \"./node_modules/@citizenfx/discord.js/src/structures/PermissionOverwrites.js\");\nconst { Role } = __webpack_require__(/*! ../structures/Role */ \"./node_modules/@citizenfx/discord.js/src/structures/Role.js\");\nconst { OverwriteTypes } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\n\nlet cacheWarningEmitted = false;\n\n/**\n * Manages API methods for guild channel permission overwrites and stores their cache.\n * @extends {CachedManager}\n */\nclass PermissionOverwriteManager extends CachedManager {\n  constructor(channel, iterable) {\n    super(channel.client, PermissionOverwrites);\n    if (!cacheWarningEmitted && this._cache.constructor.name !== 'Collection') {\n      cacheWarningEmitted = true;\n      process.emitWarning(\n        `Overriding the cache handling for ${this.constructor.name} is unsupported and breaks functionality.`,\n        'UnsupportedCacheOverwriteWarning',\n      );\n    }\n\n    /**\n     * The channel of the permission overwrite this manager belongs to\n     * @type {GuildChannel}\n     */\n    this.channel = channel;\n\n    if (iterable) {\n      for (const item of iterable) {\n        this._add(item);\n      }\n    }\n  }\n\n  /**\n   * The cache of this Manager\n   * @type {Collection<Snowflake, PermissionOverwrites>}\n   * @name PermissionOverwriteManager#cache\n   */\n\n  _add(data, cache) {\n    return super._add(data, cache, { extras: [this.channel] });\n  }\n\n  /**\n   * Replaces the permission overwrites in this channel.\n   * @param {OverwriteResolvable[]|Collection<Snowflake, OverwriteResolvable>} overwrites\n   * Permission overwrites the channel gets updated with\n   * @param {string} [reason] Reason for updating the channel overwrites\n   * @returns {Promise<GuildChannel>}\n   * @example\n   * message.channel.permissionOverwrites.set([\n   *   {\n   *      id: message.author.id,\n   *      deny: [Permissions.FLAGS.VIEW_CHANNEL],\n   *   },\n   * ], 'Needed to change permissions');\n   */\n  set(overwrites, reason) {\n    if (!Array.isArray(overwrites) && !(overwrites instanceof Collection)) {\n      return Promise.reject(\n        new TypeError('INVALID_TYPE', 'overwrites', 'Array or Collection of Permission Overwrites', true),\n      );\n    }\n    return this.channel.edit({ permissionOverwrites: overwrites, reason });\n  }\n\n  /**\n   * Extra information about the overwrite\n   * @typedef {Object} GuildChannelOverwriteOptions\n   * @property {string} [reason] Reason for creating/editing this overwrite\n   * @property {number} [type] The type of overwrite, either `0` for a role or `1` for a member. Use this to bypass\n   * automatic resolution of type that results in an error for uncached structure\n   */\n\n  /**\n   * Creates or edits permission overwrites for a user or role in this channel.\n   * @param {RoleResolvable|UserResolvable} userOrRole The user or role to update\n   * @param {PermissionOverwriteOptions} options The options for the update\n   * @param {GuildChannelOverwriteOptions} [overwriteOptions] The extra information for the update\n   * @param {PermissionOverwrites} [existing] The existing overwrites to merge with this update\n   * @returns {Promise<GuildChannel>}\n   * @private\n   */\n  async upsert(userOrRole, options, overwriteOptions = {}, existing) {\n    let userOrRoleId = this.channel.guild.roles.resolveId(userOrRole) ?? this.client.users.resolveId(userOrRole);\n    let { type, reason } = overwriteOptions;\n    if (typeof type !== 'number') {\n      userOrRole = this.channel.guild.roles.resolve(userOrRole) ?? this.client.users.resolve(userOrRole);\n      if (!userOrRole) throw new TypeError('INVALID_TYPE', 'parameter', 'User nor a Role');\n      type = userOrRole instanceof Role ? OverwriteTypes.role : OverwriteTypes.member;\n    }\n\n    const { allow, deny } = PermissionOverwrites.resolveOverwriteOptions(options, existing);\n\n    await this.client.api\n      .channels(this.channel.id)\n      .permissions(userOrRoleId)\n      .put({\n        data: { id: userOrRoleId, type, allow, deny },\n        reason,\n      });\n    return this.channel;\n  }\n\n  /**\n   * Creates permission overwrites for a user or role in this channel, or replaces them if already present.\n   * @param {RoleResolvable|UserResolvable} userOrRole The user or role to update\n   * @param {PermissionOverwriteOptions} options The options for the update\n   * @param {GuildChannelOverwriteOptions} [overwriteOptions] The extra information for the update\n   * @returns {Promise<GuildChannel>}\n   * @example\n   * // Create or Replace permission overwrites for a message author\n   * message.channel.permissionOverwrites.create(message.author, {\n   *   SEND_MESSAGES: false\n   * })\n   *   .then(channel => console.log(channel.permissionOverwrites.cache.get(message.author.id)))\n   *   .catch(console.error);\n   */\n  create(userOrRole, options, overwriteOptions) {\n    return this.upsert(userOrRole, options, overwriteOptions);\n  }\n\n  /**\n   * Edits permission overwrites for a user or role in this channel, or creates an entry if not already present.\n   * @param {RoleResolvable|UserResolvable} userOrRole The user or role to update\n   * @param {PermissionOverwriteOptions} options The options for the update\n   * @param {GuildChannelOverwriteOptions} [overwriteOptions] The extra information for the update\n   * @returns {Promise<GuildChannel>}\n   * @example\n   * // Edit or Create permission overwrites for a message author\n   * message.channel.permissionOverwrites.edit(message.author, {\n   *   SEND_MESSAGES: false\n   * })\n   *   .then(channel => console.log(channel.permissionOverwrites.cache.get(message.author.id)))\n   *   .catch(console.error);\n   */\n  edit(userOrRole, options, overwriteOptions) {\n    userOrRole = this.channel.guild.roles.resolveId(userOrRole) ?? this.client.users.resolveId(userOrRole);\n    const existing = this.cache.get(userOrRole);\n    return this.upsert(userOrRole, options, overwriteOptions, existing);\n  }\n\n  /**\n   * Deletes permission overwrites for a user or role in this channel.\n   * @param {UserResolvable|RoleResolvable} userOrRole The user or role to delete\n   * @param {string} [reason] The reason for deleting the overwrite\n   * @returns {Promise<GuildChannel>}\n   */\n  async delete(userOrRole, reason) {\n    const userOrRoleId = this.channel.guild.roles.resolveId(userOrRole) ?? this.client.users.resolveId(userOrRole);\n    if (!userOrRoleId) throw new TypeError('INVALID_TYPE', 'parameter', 'User nor a Role');\n\n    await this.client.api.channels(this.channel.id).permissions(userOrRoleId).delete({ reason });\n    return this.channel;\n  }\n}\n\nmodule.exports = PermissionOverwriteManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/PermissionOverwriteManager.js?")},"./node_modules/@citizenfx/discord.js/src/managers/PresenceManager.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/PresenceManager.js ***!
  \****************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst CachedManager = __webpack_require__(/*! ./CachedManager */ "./node_modules/@citizenfx/discord.js/src/managers/CachedManager.js");\nconst { Presence } = __webpack_require__(/*! ../structures/Presence */ "./node_modules/@citizenfx/discord.js/src/structures/Presence.js");\n\n/**\n * Manages API methods for Presences and holds their cache.\n * @extends {CachedManager}\n */\nclass PresenceManager extends CachedManager {\n  constructor(client, iterable) {\n    super(client, Presence, iterable);\n  }\n\n  /**\n   * The cache of Presences\n   * @type {Collection<Snowflake, Presence>}\n   * @name PresenceManager#cache\n   */\n\n  _add(data, cache) {\n    return super._add(data, cache, { id: data.user.id });\n  }\n\n  /**\n   * Data that can be resolved to a Presence object. This can be:\n   * * A Presence\n   * * A UserResolvable\n   * * A Snowflake\n   * @typedef {Presence|UserResolvable|Snowflake} PresenceResolvable\n   */\n\n  /**\n   * Resolves a {@link PresenceResolvable} to a {@link Presence} object.\n   * @param {PresenceResolvable} presence The presence resolvable to resolve\n   * @returns {?Presence}\n   */\n  resolve(presence) {\n    const presenceResolvable = super.resolve(presence);\n    if (presenceResolvable) return presenceResolvable;\n    const UserResolvable = this.client.users.resolveId(presence);\n    return super.resolve(UserResolvable);\n  }\n\n  /**\n   * Resolves a {@link PresenceResolvable} to a {@link Presence} id.\n   * @param {PresenceResolvable} presence The presence resolvable to resolve\n   * @returns {?Snowflake}\n   */\n  resolveId(presence) {\n    const presenceResolvable = super.resolveId(presence);\n    if (presenceResolvable) return presenceResolvable;\n    const userResolvable = this.client.users.resolveId(presence);\n    return this.cache.has(userResolvable) ? userResolvable : null;\n  }\n}\n\nmodule.exports = PresenceManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/PresenceManager.js?')},"./node_modules/@citizenfx/discord.js/src/managers/ReactionManager.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/ReactionManager.js ***!
  \****************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst CachedManager = __webpack_require__(/*! ./CachedManager */ "./node_modules/@citizenfx/discord.js/src/managers/CachedManager.js");\nconst MessageReaction = __webpack_require__(/*! ../structures/MessageReaction */ "./node_modules/@citizenfx/discord.js/src/structures/MessageReaction.js");\n\n/**\n * Manages API methods for reactions and holds their cache.\n * @extends {CachedManager}\n */\nclass ReactionManager extends CachedManager {\n  constructor(message, iterable) {\n    super(message.client, MessageReaction, iterable);\n\n    /**\n     * The message that this manager belongs to\n     * @type {Message}\n     */\n    this.message = message;\n  }\n\n  _add(data, cache) {\n    return super._add(data, cache, { id: data.emoji.id ?? data.emoji.name, extras: [this.message] });\n  }\n\n  /**\n   * The reaction cache of this manager\n   * @type {Collection<string|Snowflake, MessageReaction>}\n   * @name ReactionManager#cache\n   */\n\n  /**\n   * Data that can be resolved to a MessageReaction object. This can be:\n   * * A MessageReaction\n   * * A Snowflake\n   * @typedef {MessageReaction|Snowflake} MessageReactionResolvable\n   */\n\n  /**\n   * Resolves a {@link MessageReactionResolvable} to a {@link MessageReaction} object.\n   * @method resolve\n   * @memberof ReactionManager\n   * @instance\n   * @param {MessageReactionResolvable} reaction The MessageReaction to resolve\n   * @returns {?MessageReaction}\n   */\n\n  /**\n   * Resolves a {@link MessageReactionResolvable} to a {@link MessageReaction} id.\n   * @method resolveId\n   * @memberof ReactionManager\n   * @instance\n   * @param {MessageReactionResolvable} reaction The MessageReaction to resolve\n   * @returns {?Snowflake}\n   */\n\n  /**\n   * Removes all reactions from a message.\n   * @returns {Promise<Message>}\n   */\n  async removeAll() {\n    await this.client.api.channels(this.message.channelId).messages(this.message.id).reactions.delete();\n    return this.message;\n  }\n}\n\nmodule.exports = ReactionManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/ReactionManager.js?')},"./node_modules/@citizenfx/discord.js/src/managers/ReactionUserManager.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/ReactionUserManager.js ***!
  \********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ "./node_modules/@discordjs/collection/dist/index.js");\nconst CachedManager = __webpack_require__(/*! ./CachedManager */ "./node_modules/@citizenfx/discord.js/src/managers/CachedManager.js");\nconst { Error } = __webpack_require__(/*! ../errors */ "./node_modules/@citizenfx/discord.js/src/errors/index.js");\nconst User = __webpack_require__(/*! ../structures/User */ "./node_modules/@citizenfx/discord.js/src/structures/User.js");\n\n/**\n * Manages API methods for users who reacted to a reaction and stores their cache.\n * @extends {CachedManager}\n */\nclass ReactionUserManager extends CachedManager {\n  constructor(reaction, iterable) {\n    super(reaction.client, User, iterable);\n\n    /**\n     * The reaction that this manager belongs to\n     * @type {MessageReaction}\n     */\n    this.reaction = reaction;\n  }\n\n  /**\n   * The cache of this manager\n   * @type {Collection<Snowflake, User>}\n   * @name ReactionUserManager#cache\n   */\n\n  /**\n   * Options used to fetch users who gave a reaction.\n   * @typedef {Object} FetchReactionUsersOptions\n   * @property {number} [limit=100] The maximum amount of users to fetch, defaults to `100`\n   * @property {Snowflake} [after] Limit fetching users to those with an id greater than the supplied id\n   */\n\n  /**\n   * Fetches all the users that gave this reaction. Resolves with a collection of users, mapped by their ids.\n   * @param {FetchReactionUsersOptions} [options] Options for fetching the users\n   * @returns {Promise<Collection<Snowflake, User>>}\n   */\n  async fetch({ limit = 100, after } = {}) {\n    const message = this.reaction.message;\n    const data = await this.client.api.channels[message.channelId].messages[message.id].reactions[\n      this.reaction.emoji.identifier\n    ].get({ query: { limit, after } });\n    const users = new Collection();\n    for (const rawUser of data) {\n      const user = this.client.users._add(rawUser);\n      this.cache.set(user.id, user);\n      users.set(user.id, user);\n    }\n    return users;\n  }\n\n  /**\n   * Removes a user from this reaction.\n   * @param {UserResolvable} [user=this.client.user] The user to remove the reaction of\n   * @returns {Promise<MessageReaction>}\n   */\n  async remove(user = this.client.user) {\n    const userId = this.client.users.resolveId(user);\n    if (!userId) throw new Error(\'REACTION_RESOLVE_USER\');\n    const message = this.reaction.message;\n    await this.client.api.channels[message.channelId].messages[message.id].reactions[this.reaction.emoji.identifier][\n      userId === this.client.user.id ? \'@me\' : userId\n    ].delete();\n    return this.reaction;\n  }\n}\n\nmodule.exports = ReactionUserManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/ReactionUserManager.js?')},"./node_modules/@citizenfx/discord.js/src/managers/RoleManager.js":
/*!************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/RoleManager.js ***!
  \************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst process = __webpack_require__(/*! node:process */ \"node:process\");\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst CachedManager = __webpack_require__(/*! ./CachedManager */ \"./node_modules/@citizenfx/discord.js/src/managers/CachedManager.js\");\nconst { TypeError } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst { Role } = __webpack_require__(/*! ../structures/Role */ \"./node_modules/@citizenfx/discord.js/src/structures/Role.js\");\nconst DataResolver = __webpack_require__(/*! ../util/DataResolver */ \"./node_modules/@citizenfx/discord.js/src/util/DataResolver.js\");\nconst Permissions = __webpack_require__(/*! ../util/Permissions */ \"./node_modules/@citizenfx/discord.js/src/util/Permissions.js\");\nconst { resolveColor, setPosition } = __webpack_require__(/*! ../util/Util */ \"./node_modules/@citizenfx/discord.js/src/util/Util.js\");\n\nlet cacheWarningEmitted = false;\n\n/**\n * Manages API methods for roles and stores their cache.\n * @extends {CachedManager}\n */\nclass RoleManager extends CachedManager {\n  constructor(guild, iterable) {\n    super(guild.client, Role, iterable);\n    if (!cacheWarningEmitted && this._cache.constructor.name !== 'Collection') {\n      cacheWarningEmitted = true;\n      process.emitWarning(\n        `Overriding the cache handling for ${this.constructor.name} is unsupported and breaks functionality.`,\n        'UnsupportedCacheOverwriteWarning',\n      );\n    }\n\n    /**\n     * The guild belonging to this manager\n     * @type {Guild}\n     */\n    this.guild = guild;\n  }\n\n  /**\n   * The role cache of this manager\n   * @type {Collection<Snowflake, Role>}\n   * @name RoleManager#cache\n   */\n\n  _add(data, cache) {\n    return super._add(data, cache, { extras: [this.guild] });\n  }\n\n  /**\n   * Obtains a role from Discord, or the role cache if they're already available.\n   * @param {Snowflake} [id] The role's id\n   * @param {BaseFetchOptions} [options] Additional options for this fetch\n   * @returns {Promise<?Role|Collection<Snowflake, Role>>}\n   * @example\n   * // Fetch all roles from the guild\n   * message.guild.roles.fetch()\n   *   .then(roles => console.log(`There are ${roles.size} roles.`))\n   *   .catch(console.error);\n   * @example\n   * // Fetch a single role\n   * message.guild.roles.fetch('222078108977594368')\n   *   .then(role => console.log(`The role color is: ${role.color}`))\n   *   .catch(console.error);\n   */\n  async fetch(id, { cache = true, force = false } = {}) {\n    if (id && !force) {\n      const existing = this.cache.get(id);\n      if (existing) return existing;\n    }\n\n    // We cannot fetch a single role, as of this commit's date, Discord API throws with 405\n    const data = await this.client.api.guilds(this.guild.id).roles.get();\n    const roles = new Collection();\n    for (const role of data) roles.set(role.id, this._add(role, cache));\n    return id ? roles.get(id) ?? null : roles;\n  }\n\n  /**\n   * Data that can be resolved to a Role object. This can be:\n   * * A Role\n   * * A Snowflake\n   * @typedef {Role|Snowflake} RoleResolvable\n   */\n\n  /**\n   * Resolves a {@link RoleResolvable} to a {@link Role} object.\n   * @method resolve\n   * @memberof RoleManager\n   * @instance\n   * @param {RoleResolvable} role The role resolvable to resolve\n   * @returns {?Role}\n   */\n\n  /**\n   * Resolves a {@link RoleResolvable} to a {@link Role} id.\n   * @method resolveId\n   * @memberof RoleManager\n   * @instance\n   * @param {RoleResolvable} role The role resolvable to resolve\n   * @returns {?Snowflake}\n   */\n\n  /**\n   * Options used to create a new role.\n   * @typedef {Object} CreateRoleOptions\n   * @property {string} [name] The name of the new role\n   * @property {ColorResolvable} [color] The data to create the role with\n   * @property {boolean} [hoist] Whether or not the new role should be hoisted\n   * @property {PermissionResolvable} [permissions] The permissions for the new role\n   * @property {number} [position] The position of the new role\n   * @property {boolean} [mentionable] Whether or not the new role should be mentionable\n   * @property {?(BufferResolvable|Base64Resolvable|EmojiResolvable)} [icon] The icon for the role\n   * <warn>The `EmojiResolvable` should belong to the same guild as the role.\n   * If not, pass the emoji's URL directly</warn>\n   * @property {?string} [unicodeEmoji] The unicode emoji for the role\n   * @property {string} [reason] The reason for creating this role\n   */\n\n  /**\n   * Creates a new role in the guild with given information.\n   * <warn>The position will silently reset to 1 if an invalid one is provided, or none.</warn>\n   * @param {CreateRoleOptions} [options] Options for creating the new role\n   * @returns {Promise<Role>}\n   * @example\n   * // Create a new role\n   * guild.roles.create()\n   *   .then(console.log)\n   *   .catch(console.error);\n   * @example\n   * // Create a new role with data and a reason\n   * guild.roles.create({\n   *   name: 'Super Cool Blue People',\n   *   color: 'BLUE',\n   *   reason: 'we needed a role for Super Cool People',\n   * })\n   *   .then(console.log)\n   *   .catch(console.error);\n   */\n  async create(options = {}) {\n    let { name, color, hoist, permissions, position, mentionable, reason, icon, unicodeEmoji } = options;\n    color &&= resolveColor(color);\n    if (typeof permissions !== 'undefined') permissions = new Permissions(permissions);\n    if (icon) {\n      const guildEmojiURL = this.guild.emojis.resolve(icon)?.url;\n      icon = guildEmojiURL ? await DataResolver.resolveImage(guildEmojiURL) : await DataResolver.resolveImage(icon);\n      if (typeof icon !== 'string') icon = undefined;\n    }\n\n    const data = await this.client.api.guilds(this.guild.id).roles.post({\n      data: {\n        name,\n        color,\n        hoist,\n        permissions,\n        mentionable,\n        icon,\n        unicode_emoji: unicodeEmoji,\n      },\n      reason,\n    });\n    const { role } = this.client.actions.GuildRoleCreate.handle({\n      guild_id: this.guild.id,\n      role: data,\n    });\n    if (position) return role.setPosition(position, reason);\n    return role;\n  }\n\n  /**\n   * Edits a role of the guild.\n   * @param {RoleResolvable} role The role to edit\n   * @param {RoleData} data The new data for the role\n   * @param {string} [reason] Reason for editing this role\n   * @returns {Promise<Role>}\n   * @example\n   * // Edit a role\n   * guild.roles.edit('222079219327434752', { name: 'buddies' })\n   *   .then(updated => console.log(`Edited role name to ${updated.name}`))\n   *   .catch(console.error);\n   */\n  async edit(role, data, reason) {\n    role = this.resolve(role);\n    if (!role) throw new TypeError('INVALID_TYPE', 'role', 'RoleResolvable');\n\n    if (typeof data.position === 'number') {\n      const updatedRoles = await setPosition(\n        role,\n        data.position,\n        false,\n        this.guild._sortedRoles(),\n        this.client.api.guilds(this.guild.id).roles,\n        reason,\n      );\n\n      this.client.actions.GuildRolesPositionUpdate.handle({\n        guild_id: this.guild.id,\n        roles: updatedRoles,\n      });\n    }\n\n    let icon = data.icon;\n    if (icon) {\n      const guildEmojiURL = this.guild.emojis.resolve(icon)?.url;\n      icon = guildEmojiURL ? await DataResolver.resolveImage(guildEmojiURL) : await DataResolver.resolveImage(icon);\n      if (typeof icon !== 'string') icon = undefined;\n    }\n\n    const _data = {\n      name: data.name,\n      color: typeof data.color === 'undefined' ? undefined : resolveColor(data.color),\n      hoist: data.hoist,\n      permissions: typeof data.permissions === 'undefined' ? undefined : new Permissions(data.permissions),\n      mentionable: data.mentionable,\n      icon,\n      unicode_emoji: data.unicodeEmoji,\n    };\n\n    const d = await this.client.api.guilds(this.guild.id).roles(role.id).patch({ data: _data, reason });\n\n    const clone = role._clone();\n    clone._patch(d);\n    return clone;\n  }\n\n  /**\n   * Deletes a role.\n   * @param {RoleResolvable} role The role to delete\n   * @param {string} [reason] Reason for deleting the role\n   * @returns {Promise<void>}\n   * @example\n   * // Delete a role\n   * guild.roles.delete('222079219327434752', 'The role needed to go')\n   *   .then(deleted => console.log(`Deleted role ${deleted.name}`))\n   *   .catch(console.error);\n   */\n  async delete(role, reason) {\n    const id = this.resolveId(role);\n    await this.client.api.guilds[this.guild.id].roles[id].delete({ reason });\n    this.client.actions.GuildRoleDelete.handle({ guild_id: this.guild.id, role_id: id });\n  }\n\n  /**\n   * Batch-updates the guild's role positions\n   * @param {GuildRolePosition[]} rolePositions Role positions to update\n   * @returns {Promise<Guild>}\n   * @example\n   * guild.roles.setPositions([{ role: roleId, position: updatedRoleIndex }])\n   *  .then(guild => console.log(`Role positions updated for ${guild}`))\n   *  .catch(console.error);\n   */\n  async setPositions(rolePositions) {\n    // Make sure rolePositions are prepared for API\n    rolePositions = rolePositions.map(o => ({\n      id: this.resolveId(o.role),\n      position: o.position,\n    }));\n\n    // Call the API to update role positions\n    await this.client.api.guilds(this.guild.id).roles.patch({\n      data: rolePositions,\n    });\n    return this.client.actions.GuildRolesPositionUpdate.handle({\n      guild_id: this.guild.id,\n      roles: rolePositions,\n    }).guild;\n  }\n\n  /**\n   * Compares the positions of two roles.\n   * @param {RoleResolvable} role1 First role to compare\n   * @param {RoleResolvable} role2 Second role to compare\n   * @returns {number} Negative number if the first role's position is lower (second role's is higher),\n   * positive number if the first's is higher (second's is lower), 0 if equal\n   */\n  comparePositions(role1, role2) {\n    const resolvedRole1 = this.resolve(role1);\n    const resolvedRole2 = this.resolve(role2);\n    if (!resolvedRole1 || !resolvedRole2) throw new TypeError('INVALID_TYPE', 'role', 'Role nor a Snowflake');\n\n    if (resolvedRole1.position === resolvedRole2.position) {\n      return Number(BigInt(resolvedRole2.id) - BigInt(resolvedRole1.id));\n    }\n\n    return resolvedRole1.position - resolvedRole2.position;\n  }\n\n  /**\n   * Gets the managed role a user created when joining the guild, if any\n   * <info>Only ever available for bots</info>\n   * @param {UserResolvable} user The user to access the bot role for\n   * @returns {?Role}\n   */\n  botRoleFor(user) {\n    const userId = this.client.users.resolveId(user);\n    if (!userId) return null;\n    return this.cache.find(role => role.tags?.botId === userId) ?? null;\n  }\n\n  /**\n   * The `@everyone` role of the guild\n   * @type {Role}\n   * @readonly\n   */\n  get everyone() {\n    return this.cache.get(this.guild.id);\n  }\n\n  /**\n   * The premium subscriber role of the guild, if any\n   * @type {?Role}\n   * @readonly\n   */\n  get premiumSubscriberRole() {\n    return this.cache.find(role => role.tags?.premiumSubscriberRole) ?? null;\n  }\n\n  /**\n   * The role with the highest position in the cache\n   * @type {Role}\n   * @readonly\n   */\n  get highest() {\n    return this.cache.reduce((prev, role) => (role.comparePositionTo(prev) > 0 ? role : prev), this.cache.first());\n  }\n}\n\nmodule.exports = RoleManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/RoleManager.js?")},"./node_modules/@citizenfx/discord.js/src/managers/StageInstanceManager.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/StageInstanceManager.js ***!
  \*********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst CachedManager = __webpack_require__(/*! ./CachedManager */ \"./node_modules/@citizenfx/discord.js/src/managers/CachedManager.js\");\nconst { TypeError, Error } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst { StageInstance } = __webpack_require__(/*! ../structures/StageInstance */ \"./node_modules/@citizenfx/discord.js/src/structures/StageInstance.js\");\nconst { PrivacyLevels } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\n\n/**\n * Manages API methods for {@link StageInstance} objects and holds their cache.\n * @extends {CachedManager}\n */\nclass StageInstanceManager extends CachedManager {\n  constructor(guild, iterable) {\n    super(guild.client, StageInstance, iterable);\n\n    /**\n     * The guild this manager belongs to\n     * @type {Guild}\n     */\n    this.guild = guild;\n  }\n\n  /**\n   * The cache of this Manager\n   * @type {Collection<Snowflake, StageInstance>}\n   * @name StageInstanceManager#cache\n   */\n\n  /**\n   * Options used to create a stage instance.\n   * @typedef {Object} StageInstanceCreateOptions\n   * @property {string} topic The topic of the stage instance\n   * @property {PrivacyLevel|number} [privacyLevel] The privacy level of the stage instance\n   */\n\n  /**\n   * Data that can be resolved to a Stage Channel object. This can be:\n   * * A StageChannel\n   * * A Snowflake\n   * @typedef {StageChannel|Snowflake} StageChannelResolvable\n   */\n\n  /**\n   * Creates a new stage instance.\n   * @param {StageChannelResolvable} channel The stage channel to associate the created stage instance to\n   * @param {StageInstanceCreateOptions} options The options to create the stage instance\n   * @returns {Promise<StageInstance>}\n   * @example\n   * // Create a stage instance\n   * guild.stageInstances.create('1234567890123456789', {\n   *  topic: 'A very creative topic',\n   *  privacyLevel: 'GUILD_ONLY'\n   * })\n   *  .then(stageInstance => console.log(stageInstance))\n   *  .catch(console.error);\n   */\n  async create(channel, options) {\n    const channelId = this.guild.channels.resolveId(channel);\n    if (!channelId) throw new Error('STAGE_CHANNEL_RESOLVE');\n    if (typeof options !== 'object') throw new TypeError('INVALID_TYPE', 'options', 'object', true);\n    let { topic, privacyLevel } = options;\n\n    privacyLevel &&= typeof privacyLevel === 'number' ? privacyLevel : PrivacyLevels[privacyLevel];\n\n    const data = await this.client.api['stage-instances'].post({\n      data: {\n        channel_id: channelId,\n        topic,\n        privacy_level: privacyLevel,\n      },\n    });\n\n    return this._add(data);\n  }\n\n  /**\n   * Fetches the stage instance associated with a stage channel, if it exists.\n   * @param {StageChannelResolvable} channel The stage channel whose associated stage instance is to be fetched\n   * @param {BaseFetchOptions} [options] Additional options for this fetch\n   * @returns {Promise<StageInstance>}\n   * @example\n   * // Fetch a stage instance\n   * guild.stageInstances.fetch('1234567890123456789')\n   *  .then(stageInstance => console.log(stageInstance))\n   *  .catch(console.error);\n   */\n  async fetch(channel, { cache = true, force = false } = {}) {\n    const channelId = this.guild.channels.resolveId(channel);\n    if (!channelId) throw new Error('STAGE_CHANNEL_RESOLVE');\n\n    if (!force) {\n      const existing = this.cache.find(stageInstance => stageInstance.channelId === channelId);\n      if (existing) return existing;\n    }\n\n    const data = await this.client.api('stage-instances', channelId).get();\n    return this._add(data, cache);\n  }\n\n  /**\n   * Options used to edit an existing stage instance.\n   * @typedef {Object} StageInstanceEditOptions\n   * @property {string} [topic] The new topic of the stage instance\n   * @property {PrivacyLevel|number} [privacyLevel] The new privacy level of the stage instance\n   */\n\n  /**\n   * Edits an existing stage instance.\n   * @param {StageChannelResolvable} channel The stage channel whose associated stage instance is to be edited\n   * @param {StageInstanceEditOptions} options The options to edit the stage instance\n   * @returns {Promise<StageInstance>}\n   * @example\n   * // Edit a stage instance\n   * guild.stageInstances.edit('1234567890123456789', { topic: 'new topic' })\n   *  .then(stageInstance => console.log(stageInstance))\n   *  .catch(console.error);\n   */\n  async edit(channel, options) {\n    if (typeof options !== 'object') throw new TypeError('INVALID_TYPE', 'options', 'object', true);\n    const channelId = this.guild.channels.resolveId(channel);\n    if (!channelId) throw new Error('STAGE_CHANNEL_RESOLVE');\n\n    let { topic, privacyLevel } = options;\n\n    privacyLevel &&= typeof privacyLevel === 'number' ? privacyLevel : PrivacyLevels[privacyLevel];\n\n    const data = await this.client.api('stage-instances', channelId).patch({\n      data: {\n        topic,\n        privacy_level: privacyLevel,\n      },\n    });\n\n    if (this.cache.has(data.id)) {\n      const clone = this.cache.get(data.id)._clone();\n      clone._patch(data);\n      return clone;\n    }\n\n    return this._add(data);\n  }\n\n  /**\n   * Deletes an existing stage instance.\n   * @param {StageChannelResolvable} channel The stage channel whose associated stage instance is to be deleted\n   * @returns {Promise<void>}\n   */\n  async delete(channel) {\n    const channelId = this.guild.channels.resolveId(channel);\n    if (!channelId) throw new Error('STAGE_CHANNEL_RESOLVE');\n\n    await this.client.api('stage-instances', channelId).delete();\n  }\n}\n\nmodule.exports = StageInstanceManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/StageInstanceManager.js?")},"./node_modules/@citizenfx/discord.js/src/managers/ThreadManager.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/ThreadManager.js ***!
  \**************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst CachedManager = __webpack_require__(/*! ./CachedManager */ \"./node_modules/@citizenfx/discord.js/src/managers/CachedManager.js\");\nconst { TypeError } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst ThreadChannel = __webpack_require__(/*! ../structures/ThreadChannel */ \"./node_modules/@citizenfx/discord.js/src/structures/ThreadChannel.js\");\nconst { ChannelTypes } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\n\n/**\n * Manages API methods for {@link ThreadChannel} objects and stores their cache.\n * @extends {CachedManager}\n */\nclass ThreadManager extends CachedManager {\n  constructor(channel, iterable) {\n    super(channel.client, ThreadChannel, iterable);\n\n    /**\n     * The channel this Manager belongs to\n     * @type {NewsChannel|TextChannel}\n     */\n    this.channel = channel;\n  }\n\n  /**\n   * The cache of this Manager\n   * @type {Collection<Snowflake, ThreadChannel>}\n   * @name ThreadManager#cache\n   */\n\n  _add(thread) {\n    const existing = this.cache.get(thread.id);\n    if (existing) return existing;\n    this.cache.set(thread.id, thread);\n    return thread;\n  }\n\n  /**\n   * Data that can be resolved to a Thread Channel object. This can be:\n   * * A ThreadChannel object\n   * * A Snowflake\n   * @typedef {ThreadChannel|Snowflake} ThreadChannelResolvable\n   */\n\n  /**\n   * Resolves a {@link ThreadChannelResolvable} to a {@link ThreadChannel} object.\n   * @method resolve\n   * @memberof ThreadManager\n   * @instance\n   * @param {ThreadChannelResolvable} thread The ThreadChannel resolvable to resolve\n   * @returns {?ThreadChannel}\n   */\n\n  /**\n   * Resolves a {@link ThreadChannelResolvable} to a {@link ThreadChannel} id.\n   * @method resolveId\n   * @memberof ThreadManager\n   * @instance\n   * @param {ThreadChannelResolvable} thread The ThreadChannel resolvable to resolve\n   * @returns {?Snowflake}\n   */\n\n  /**\n   * Options for creating a thread. <warn>Only one of `startMessage` or `type` can be defined.</warn>\n   * @typedef {StartThreadOptions} ThreadCreateOptions\n   * @property {MessageResolvable} [startMessage] The message to start a thread from. <warn>If this is defined then type\n   * of thread gets automatically defined and cannot be changed. The provided `type` field will be ignored</warn>\n   * @property {ThreadChannelTypes|number} [type] The type of thread to create. Defaults to `GUILD_PUBLIC_THREAD` if\n   * created in a {@link TextChannel} <warn>When creating threads in a {@link NewsChannel} this is ignored and is always\n   * `GUILD_NEWS_THREAD`</warn>\n   * @property {boolean} [invitable] Whether non-moderators can add other non-moderators to the thread\n   * <info>Can only be set when type will be `GUILD_PRIVATE_THREAD`</info>\n   * @property {number} [rateLimitPerUser] The rate limit per user (slowmode) for the new channel in seconds\n   */\n\n  /**\n   * Creates a new thread in the channel.\n   * @param {ThreadCreateOptions} [options] Options to create a new thread\n   * @returns {Promise<ThreadChannel>}\n   * @example\n   * // Create a new public thread\n   * channel.threads\n   *   .create({\n   *     name: 'food-talk',\n   *     autoArchiveDuration: 60,\n   *     reason: 'Needed a separate thread for food',\n   *   })\n   *   .then(threadChannel => console.log(threadChannel))\n   *   .catch(console.error);\n   * @example\n   * // Create a new private thread\n   * channel.threads\n   *   .create({\n   *      name: 'mod-talk',\n   *      autoArchiveDuration: 60,\n   *      type: 'GUILD_PRIVATE_THREAD',\n   *      reason: 'Needed a separate thread for moderation',\n   *    })\n   *   .then(threadChannel => console.log(threadChannel))\n   *   .catch(console.error);\n   */\n  async create({\n    name,\n    autoArchiveDuration = this.channel.defaultAutoArchiveDuration,\n    startMessage,\n    type,\n    invitable,\n    reason,\n    rateLimitPerUser,\n  } = {}) {\n    let path = this.client.api.channels(this.channel.id);\n    if (type && typeof type !== 'string' && typeof type !== 'number') {\n      throw new TypeError('INVALID_TYPE', 'type', 'ThreadChannelType or Number');\n    }\n    let resolvedType =\n      this.channel.type === 'GUILD_NEWS' ? ChannelTypes.GUILD_NEWS_THREAD : ChannelTypes.GUILD_PUBLIC_THREAD;\n    if (startMessage) {\n      const startMessageId = this.channel.messages.resolveId(startMessage);\n      if (!startMessageId) throw new TypeError('INVALID_TYPE', 'startMessage', 'MessageResolvable');\n      path = path.messages(startMessageId);\n    } else if (this.channel.type !== 'GUILD_NEWS') {\n      resolvedType = typeof type === 'string' ? ChannelTypes[type] : type ?? resolvedType;\n    }\n    if (autoArchiveDuration === 'MAX') {\n      autoArchiveDuration = 1440;\n      if (this.channel.guild.features.includes('SEVEN_DAY_THREAD_ARCHIVE')) {\n        autoArchiveDuration = 10080;\n      } else if (this.channel.guild.features.includes('THREE_DAY_THREAD_ARCHIVE')) {\n        autoArchiveDuration = 4320;\n      }\n    }\n\n    const data = await path.threads.post({\n      data: {\n        name,\n        auto_archive_duration: autoArchiveDuration,\n        type: resolvedType,\n        invitable: resolvedType === ChannelTypes.GUILD_PRIVATE_THREAD ? invitable : undefined,\n        rate_limit_per_user: rateLimitPerUser,\n      },\n      reason,\n    });\n\n    return this.client.actions.ThreadCreate.handle(data).thread;\n  }\n\n  /**\n   * The options for fetching multiple threads, the properties are mutually exclusive\n   * @typedef {Object} FetchThreadsOptions\n   * @property {FetchArchivedThreadOptions} [archived] The options used to fetch archived threads\n   * @property {boolean} [active] When true, fetches active threads. <warn>If `archived` is set, this is ignored!</warn>\n   */\n\n  /**\n   * Obtains a thread from Discord, or the channel cache if it's already available.\n   * @param {ThreadChannelResolvable|FetchThreadsOptions} [options] The options to fetch threads. If it is a\n   * ThreadChannelResolvable then the specified thread will be fetched. Fetches all active threads if `undefined`\n   * @param {BaseFetchOptions} [cacheOptions] Additional options for this fetch. <warn>The `force` field gets ignored\n   * if `options` is not a {@link ThreadChannelResolvable}</warn>\n   * @returns {Promise<?(ThreadChannel|FetchedThreads)>}\n   * @example\n   * // Fetch a thread by its id\n   * channel.threads.fetch('831955138126104859')\n   *   .then(channel => console.log(channel.name))\n   *   .catch(console.error);\n   */\n  fetch(options, { cache = true, force = false } = {}) {\n    if (!options) return this.fetchActive(cache);\n    const channel = this.client.channels.resolveId(options);\n    if (channel) return this.client.channels.fetch(channel, cache, force);\n    if (options.archived) {\n      return this.fetchArchived(options.archived, cache);\n    }\n    return this.fetchActive(cache);\n  }\n\n  /**\n   * Data that can be resolved to a Date object. This can be:\n   * * A Date object\n   * * A number representing a timestamp\n   * * An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) string\n   * @typedef {Date|number|string} DateResolvable\n   */\n\n  /**\n   * The options used to fetch archived threads.\n   * @typedef {Object} FetchArchivedThreadOptions\n   * @property {string} [type='public'] The type of threads to fetch, either `public` or `private`\n   * @property {boolean} [fetchAll=false] Whether to fetch **all** archived threads when type is `private`.\n   * Requires `MANAGE_THREADS` if true\n   * @property {DateResolvable|ThreadChannelResolvable} [before] Only return threads that were created before this Date\n   * or Snowflake. <warn>Must be a {@link ThreadChannelResolvable} when type is `private` and fetchAll is `false`</warn>\n   * @property {number} [limit] Maximum number of threads to return\n   */\n\n  /**\n   * The data returned from a thread fetch that returns multiple threads.\n   * @typedef {Object} FetchedThreads\n   * @property {Collection<Snowflake, ThreadChannel>} threads The threads that were fetched, with any members returned\n   * @property {?boolean} hasMore Whether there are potentially additional threads that require a subsequent call\n   */\n\n  /**\n   * Obtains a set of archived threads from Discord, requires `READ_MESSAGE_HISTORY` in the parent channel.\n   * @param {FetchArchivedThreadOptions} [options] The options to fetch archived threads\n   * @param {boolean} [cache=true] Whether to cache the new thread objects if they aren't already\n   * @returns {Promise<FetchedThreads>}\n   */\n  async fetchArchived({ type = 'public', fetchAll = false, before, limit } = {}, cache = true) {\n    let path = this.client.api.channels(this.channel.id);\n    if (type === 'private' && !fetchAll) {\n      path = path.users('@me');\n    }\n    let timestamp;\n    let id;\n    if (typeof before !== 'undefined') {\n      if (before instanceof ThreadChannel || /^\\d{16,19}$/.test(String(before))) {\n        id = this.resolveId(before);\n        timestamp = this.resolve(before)?.archivedAt?.toISOString();\n      } else {\n        try {\n          timestamp = new Date(before).toISOString();\n        } catch {\n          throw new TypeError('INVALID_TYPE', 'before', 'DateResolvable or ThreadChannelResolvable');\n        }\n      }\n    }\n    const raw = await path.threads\n      .archived(type)\n      .get({ query: { before: type === 'private' && !fetchAll ? id : timestamp, limit } });\n    return this.constructor._mapThreads(raw, this.client, { parent: this.channel, cache });\n  }\n\n  /**\n   * Obtains the accessible active threads from Discord, requires `READ_MESSAGE_HISTORY` in the parent channel.\n   * @param {boolean} [cache=true] Whether to cache the new thread objects if they aren't already\n   * @returns {Promise<FetchedThreads>}\n   */\n  async fetchActive(cache = true) {\n    const raw = await this.client.api.guilds(this.channel.guild.id).threads.active.get();\n    return this.constructor._mapThreads(raw, this.client, { parent: this.channel, cache });\n  }\n\n  static _mapThreads(rawThreads, client, { parent, guild, cache }) {\n    const threads = rawThreads.threads.reduce((coll, raw) => {\n      const thread = client.channels._add(raw, guild ?? parent?.guild, { cache });\n      if (parent && thread.parentId !== parent.id) return coll;\n      return coll.set(thread.id, thread);\n    }, new Collection());\n    // Discord sends the thread id as id in this object\n    for (const rawMember of rawThreads.members) client.channels.cache.get(rawMember.id)?.members._add(rawMember);\n    return {\n      threads,\n      hasMore: rawThreads.has_more ?? false,\n    };\n  }\n}\n\nmodule.exports = ThreadManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/ThreadManager.js?")},"./node_modules/@citizenfx/discord.js/src/managers/ThreadMemberManager.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/ThreadMemberManager.js ***!
  \********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst CachedManager = __webpack_require__(/*! ./CachedManager */ \"./node_modules/@citizenfx/discord.js/src/managers/CachedManager.js\");\nconst { TypeError } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst ThreadMember = __webpack_require__(/*! ../structures/ThreadMember */ \"./node_modules/@citizenfx/discord.js/src/structures/ThreadMember.js\");\n\n/**\n * Manages API methods for GuildMembers and stores their cache.\n * @extends {CachedManager}\n */\nclass ThreadMemberManager extends CachedManager {\n  constructor(thread, iterable) {\n    super(thread.client, ThreadMember, iterable);\n\n    /**\n     * The thread this manager belongs to\n     * @type {ThreadChannel}\n     */\n    this.thread = thread;\n  }\n\n  /**\n   * The cache of this Manager\n   * @type {Collection<Snowflake, ThreadMember>}\n   * @name ThreadMemberManager#cache\n   */\n\n  _add(data, cache = true) {\n    const existing = this.cache.get(data.user_id);\n    if (cache) existing?._patch(data);\n    if (existing) return existing;\n\n    const member = new ThreadMember(this.thread, data);\n    if (cache) this.cache.set(data.user_id, member);\n    return member;\n  }\n\n  /**\n   * Data that resolves to give a ThreadMember object. This can be:\n   * * A ThreadMember object\n   * * A User resolvable\n   * @typedef {ThreadMember|UserResolvable} ThreadMemberResolvable\n   */\n\n  /**\n   * Resolves a {@link ThreadMemberResolvable} to a {@link ThreadMember} object.\n   * @param {ThreadMemberResolvable} member The user that is part of the thread\n   * @returns {?GuildMember}\n   */\n  resolve(member) {\n    const memberResolvable = super.resolve(member);\n    if (memberResolvable) return memberResolvable;\n    const userResolvable = this.client.users.resolveId(member);\n    if (userResolvable) return super.resolve(userResolvable);\n    return null;\n  }\n\n  /**\n   * Resolves a {@link ThreadMemberResolvable} to a {@link ThreadMember} id string.\n   * @param {ThreadMemberResolvable} member The user that is part of the guild\n   * @returns {?Snowflake}\n   */\n  resolveId(member) {\n    const memberResolvable = super.resolveId(member);\n    if (memberResolvable) return memberResolvable;\n    const userResolvable = this.client.users.resolveId(member);\n    return this.cache.has(userResolvable) ? userResolvable : null;\n  }\n\n  /**\n   * Adds a member to the thread.\n   * @param {UserResolvable|'@me'} member The member to add\n   * @param {string} [reason] The reason for adding this member\n   * @returns {Promise<Snowflake>}\n   */\n  async add(member, reason) {\n    const id = member === '@me' ? member : this.client.users.resolveId(member);\n    if (!id) throw new TypeError('INVALID_TYPE', 'member', 'UserResolvable');\n    await this.client.api.channels(this.thread.id, 'thread-members', id).put({ reason });\n    return id;\n  }\n\n  /**\n   * Remove a user from the thread.\n   * @param {Snowflake|'@me'} id The id of the member to remove\n   * @param {string} [reason] The reason for removing this member from the thread\n   * @returns {Promise<Snowflake>}\n   */\n  async remove(id, reason) {\n    await this.client.api.channels(this.thread.id, 'thread-members', id).delete({ reason });\n    return id;\n  }\n\n  async _fetchOne(memberId, cache, force) {\n    if (!force) {\n      const existing = this.cache.get(memberId);\n      if (existing) return existing;\n    }\n\n    const data = await this.client.api.channels(this.thread.id, 'thread-members', memberId).get();\n    return this._add(data, cache);\n  }\n\n  async _fetchMany(cache) {\n    const raw = await this.client.api.channels(this.thread.id, 'thread-members').get();\n    return raw.reduce((col, member) => col.set(member.user_id, this._add(member, cache)), new Collection());\n  }\n\n  /**\n   * Fetches member(s) for the thread from Discord, requires access to the `GUILD_MEMBERS` gateway intent.\n   * @param {UserResolvable|boolean} [member] The member to fetch. If `undefined`, all members\n   * in the thread are fetched, and will be cached based on `options.cache`. If boolean, this serves\n   * the purpose of `options.cache`.\n   * @param {BaseFetchOptions} [options] Additional options for this fetch\n   * @returns {Promise<ThreadMember|Collection<Snowflake, ThreadMember>>}\n   */\n  fetch(member, { cache = true, force = false } = {}) {\n    const id = this.resolveId(member);\n    return id ? this._fetchOne(id, cache, force) : this._fetchMany(member ?? cache);\n  }\n}\n\nmodule.exports = ThreadMemberManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/ThreadMemberManager.js?")},"./node_modules/@citizenfx/discord.js/src/managers/UserManager.js":
/*!************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/UserManager.js ***!
  \************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst CachedManager = __webpack_require__(/*! ./CachedManager */ "./node_modules/@citizenfx/discord.js/src/managers/CachedManager.js");\nconst { GuildMember } = __webpack_require__(/*! ../structures/GuildMember */ "./node_modules/@citizenfx/discord.js/src/structures/GuildMember.js");\nconst { Message } = __webpack_require__(/*! ../structures/Message */ "./node_modules/@citizenfx/discord.js/src/structures/Message.js");\nconst ThreadMember = __webpack_require__(/*! ../structures/ThreadMember */ "./node_modules/@citizenfx/discord.js/src/structures/ThreadMember.js");\nconst User = __webpack_require__(/*! ../structures/User */ "./node_modules/@citizenfx/discord.js/src/structures/User.js");\n\n/**\n * Manages API methods for users and stores their cache.\n * @extends {CachedManager}\n */\nclass UserManager extends CachedManager {\n  constructor(client, iterable) {\n    super(client, User, iterable);\n  }\n\n  /**\n   * The cache of this manager\n   * @type {Collection<Snowflake, User>}\n   * @name UserManager#cache\n   */\n\n  /**\n   * Data that resolves to give a User object. This can be:\n   * * A User object\n   * * A Snowflake\n   * * A Message object (resolves to the message author)\n   * * A GuildMember object\n   * * A ThreadMember object\n   * @typedef {User|Snowflake|Message|GuildMember|ThreadMember} UserResolvable\n   */\n\n  /**\n   * The DM between the client\'s user and a user\n   * @param {Snowflake} userId The user id\n   * @returns {?DMChannel}\n   * @private\n   */\n  dmChannel(userId) {\n    return this.client.channels.cache.find(c => c.type === \'DM\' && c.recipient.id === userId) ?? null;\n  }\n\n  /**\n   * Creates a {@link DMChannel} between the client and a user.\n   * @param {UserResolvable} user The UserResolvable to identify\n   * @param {BaseFetchOptions} [options] Additional options for this fetch\n   * @returns {Promise<DMChannel>}\n   */\n  async createDM(user, { cache = true, force = false } = {}) {\n    const id = this.resolveId(user);\n\n    if (!force) {\n      const dmChannel = this.dmChannel(id);\n      if (dmChannel && !dmChannel.partial) return dmChannel;\n    }\n\n    const data = await this.client.api.users(this.client.user.id).channels.post({\n      data: {\n        recipient_id: id,\n      },\n    });\n    return this.client.channels._add(data, null, { cache });\n  }\n\n  /**\n   * Deletes a {@link DMChannel} (if one exists) between the client and a user. Resolves with the channel if successful.\n   * @param {UserResolvable} user The UserResolvable to identify\n   * @returns {Promise<DMChannel>}\n   */\n  async deleteDM(user) {\n    const id = this.resolveId(user);\n    const dmChannel = this.dmChannel(id);\n    if (!dmChannel) throw new Error(\'USER_NO_DM_CHANNEL\');\n    await this.client.api.channels(dmChannel.id).delete();\n    this.client.channels._remove(dmChannel.id);\n    return dmChannel;\n  }\n\n  /**\n   * Obtains a user from Discord, or the user cache if it\'s already available.\n   * @param {UserResolvable} user The user to fetch\n   * @param {BaseFetchOptions} [options] Additional options for this fetch\n   * @returns {Promise<User>}\n   */\n  async fetch(user, { cache = true, force = false } = {}) {\n    const id = this.resolveId(user);\n    if (!force) {\n      const existing = this.cache.get(id);\n      if (existing && !existing.partial) return existing;\n    }\n\n    const data = await this.client.api.users(id).get();\n    return this._add(data, cache);\n  }\n\n  /**\n   * Fetches a user\'s flags.\n   * @param {UserResolvable} user The UserResolvable to identify\n   * @param {BaseFetchOptions} [options] Additional options for this fetch\n   * @returns {Promise<UserFlags>}\n   */\n  async fetchFlags(user, options) {\n    return (await this.fetch(user, options)).flags;\n  }\n\n  /**\n   * Sends a message to a user.\n   * @param {UserResolvable} user The UserResolvable to identify\n   * @param {string|MessagePayload|MessageOptions} options The options to provide\n   * @returns {Promise<Message>}\n   */\n  async send(user, options) {\n    return (await this.createDM(user)).send(options);\n  }\n\n  /**\n   * Resolves a {@link UserResolvable} to a {@link User} object.\n   * @param {UserResolvable} user The UserResolvable to identify\n   * @returns {?User}\n   */\n  resolve(user) {\n    if (user instanceof GuildMember || user instanceof ThreadMember) return user.user;\n    if (user instanceof Message) return user.author;\n    return super.resolve(user);\n  }\n\n  /**\n   * Resolves a {@link UserResolvable} to a {@link User} id.\n   * @param {UserResolvable} user The UserResolvable to identify\n   * @returns {?Snowflake}\n   */\n  resolveId(user) {\n    if (user instanceof ThreadMember) return user.id;\n    if (user instanceof GuildMember) return user.user.id;\n    if (user instanceof Message) return user.author.id;\n    return super.resolveId(user);\n  }\n}\n\nmodule.exports = UserManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/UserManager.js?')},"./node_modules/@citizenfx/discord.js/src/managers/VoiceStateManager.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/managers/VoiceStateManager.js ***!
  \******************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst CachedManager = __webpack_require__(/*! ./CachedManager */ "./node_modules/@citizenfx/discord.js/src/managers/CachedManager.js");\nconst VoiceState = __webpack_require__(/*! ../structures/VoiceState */ "./node_modules/@citizenfx/discord.js/src/structures/VoiceState.js");\n\n/**\n * Manages API methods for VoiceStates and stores their cache.\n * @extends {CachedManager}\n */\nclass VoiceStateManager extends CachedManager {\n  constructor(guild, iterable) {\n    super(guild.client, VoiceState, iterable);\n\n    /**\n     * The guild this manager belongs to\n     * @type {Guild}\n     */\n    this.guild = guild;\n  }\n\n  /**\n   * The cache of this manager\n   * @type {Collection<Snowflake, VoiceState>}\n   * @name VoiceStateManager#cache\n   */\n\n  _add(data, cache = true) {\n    const existing = this.cache.get(data.user_id);\n    if (existing) return existing._patch(data);\n\n    const entry = new this.holds(this.guild, data);\n    if (cache) this.cache.set(data.user_id, entry);\n    return entry;\n  }\n}\n\nmodule.exports = VoiceStateManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/managers/VoiceStateManager.js?')},"./node_modules/@citizenfx/discord.js/src/rest/APIRequest.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/rest/APIRequest.js ***!
  \*******************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst https = __webpack_require__(/*! node:https */ \"node:https\");\nconst { setTimeout, clearTimeout } = __webpack_require__(/*! node:timers */ \"node:timers\");\nconst FormData = __webpack_require__(/*! form-data */ \"./node_modules/form-data/lib/form_data.js\");\nconst fetch = __webpack_require__(/*! node-fetch */ \"./node_modules/node-fetch/lib/index.js\");\nconst { UserAgent } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\n\nlet agent = null;\n\nclass APIRequest {\n  constructor(rest, method, path, options) {\n    this.rest = rest;\n    this.client = rest.client;\n    this.method = method;\n    this.route = options.route;\n    this.options = options;\n    this.retries = 0;\n\n    const { userAgentSuffix } = this.client.options;\n    this.fullUserAgent = `${UserAgent}${userAgentSuffix.length ? `, ${userAgentSuffix.join(', ')}` : ''}`;\n\n    let queryString = '';\n    if (options.query) {\n      const query = Object.entries(options.query)\n        .filter(([, value]) => value !== null && typeof value !== 'undefined')\n        .flatMap(([key, value]) => (Array.isArray(value) ? value.map(v => [key, v]) : [[key, value]]));\n      queryString = new URLSearchParams(query).toString();\n    }\n    this.path = `${path}${queryString && `?${queryString}`}`;\n  }\n\n  make() {\n    agent ??= new https.Agent({ ...this.client.options.http.agent, keepAlive: true });\n\n    const API =\n      this.options.versioned === false\n        ? this.client.options.http.api\n        : `${this.client.options.http.api}/v${this.client.options.http.version}`;\n    const url = API + this.path;\n\n    let headers = {\n      ...this.client.options.http.headers,\n      'User-Agent': this.fullUserAgent,\n    };\n\n    if (this.options.auth !== false) headers.Authorization = this.rest.getAuth();\n    if (this.options.reason) headers['X-Audit-Log-Reason'] = encodeURIComponent(this.options.reason);\n    if (this.options.headers) headers = Object.assign(headers, this.options.headers);\n\n    let body;\n    if (this.options.files?.length) {\n      body = new FormData();\n      for (const [index, file] of this.options.files.entries()) {\n        if (file?.file) body.append(file.key ?? `files[${index}]`, file.file, file.name);\n      }\n      if (typeof this.options.data !== 'undefined') {\n        if (this.options.dontUsePayloadJSON) {\n          for (const [key, value] of Object.entries(this.options.data)) body.append(key, value);\n        } else {\n          body.append('payload_json', JSON.stringify(this.options.data));\n        }\n      }\n      headers = Object.assign(headers, body.getHeaders());\n      // eslint-disable-next-line eqeqeq\n    } else if (this.options.data != null) {\n      body = JSON.stringify(this.options.data);\n      headers['Content-Type'] = 'application/json';\n    }\n\n    const controller = new AbortController();\n    const timeout = setTimeout(() => controller.abort(), this.client.options.restRequestTimeout).unref();\n    return fetch(url, {\n      method: this.method,\n      headers,\n      agent,\n      body,\n      signal: controller.signal,\n    }).finally(() => clearTimeout(timeout));\n  }\n}\n\nmodule.exports = APIRequest;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/rest/APIRequest.js?")},"./node_modules/@citizenfx/discord.js/src/rest/APIRouter.js":
/*!******************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/rest/APIRouter.js ***!
  \******************************************************************/module=>{"use strict";eval("\n\nconst noop = () => {}; // eslint-disable-line no-empty-function\nconst methods = ['get', 'post', 'delete', 'patch', 'put'];\nconst reflectors = [\n  'toString',\n  'valueOf',\n  'inspect',\n  'constructor',\n  Symbol.toPrimitive,\n  Symbol.for('nodejs.util.inspect.custom'),\n];\n\nfunction buildRoute(manager) {\n  const route = [''];\n  const handler = {\n    get(target, name) {\n      if (reflectors.includes(name)) return () => route.join('/');\n      if (methods.includes(name)) {\n        const routeBucket = [];\n        for (let i = 0; i < route.length; i++) {\n          // Reactions routes and sub-routes all share the same bucket\n          if (route[i - 1] === 'reactions') break;\n          // Literal ids should only be taken account if they are the Major id (the Channel/Guild id)\n          if (/\\d{16,19}/g.test(route[i]) && !/channels|guilds/.test(route[i - 1])) routeBucket.push(':id');\n          // All other parts of the route should be considered as part of the bucket identifier\n          else routeBucket.push(route[i]);\n        }\n        return options =>\n          manager.request(\n            name,\n            route.join('/'),\n            Object.assign(\n              {\n                versioned: manager.versioned,\n                route: routeBucket.join('/'),\n              },\n              options,\n            ),\n          );\n      }\n      route.push(name);\n      return new Proxy(noop, handler);\n    },\n    apply(target, _, args) {\n      route.push(...args.filter(x => x != null)); // eslint-disable-line eqeqeq\n      return new Proxy(noop, handler);\n    },\n  };\n  return new Proxy(noop, handler);\n}\n\nmodule.exports = buildRoute;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/rest/APIRouter.js?")},"./node_modules/@citizenfx/discord.js/src/rest/DiscordAPIError.js":
/*!************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/rest/DiscordAPIError.js ***!
  \************************************************************************/module=>{"use strict";eval("\n\n/**\n * Represents an error from the Discord API.\n * @extends Error\n */\nclass DiscordAPIError extends Error {\n  constructor(error, status, request) {\n    super();\n    const flattened = this.constructor.flattenErrors(error.errors ?? error).join('\\n');\n    this.name = 'DiscordAPIError';\n    this.message = error.message && flattened ? `${error.message}\\n${flattened}` : error.message ?? flattened;\n\n    /**\n     * The HTTP method used for the request\n     * @type {string}\n     */\n    this.method = request.method;\n\n    /**\n     * The path of the request relative to the HTTP endpoint\n     * @type {string}\n     */\n    this.path = request.path;\n\n    /**\n     * HTTP error code returned by Discord\n     * @type {number}\n     */\n    this.code = error.code;\n\n    /**\n     * The HTTP status code\n     * @type {number}\n     */\n    this.httpStatus = status;\n\n    /**\n     * The data associated with the request that caused this error\n     * @type {HTTPErrorData}\n     */\n    this.requestData = {\n      json: request.options.data,\n      files: request.options.files ?? [],\n    };\n  }\n\n  /**\n   * Flattens an errors object returned from the API into an array.\n   * @param {APIError} obj Discord errors object\n   * @param {string} [key] Used internally to determine key names of nested fields\n   * @returns {string[]}\n   * @private\n   */\n  static flattenErrors(obj, key = '') {\n    let messages = [];\n\n    for (const [k, v] of Object.entries(obj)) {\n      if (k === 'message') continue;\n      const newKey = key ? (isNaN(k) ? `${key}.${k}` : `${key}[${k}]`) : k;\n\n      if (v._errors) {\n        messages.push(`${newKey}: ${v._errors.map(e => e.message).join(' ')}`);\n      } else if (v.code ?? v.message) {\n        messages.push(`${v.code ? `${v.code}: ` : ''}${v.message}`.trim());\n      } else if (typeof v === 'string') {\n        messages.push(v);\n      } else {\n        messages = messages.concat(this.flattenErrors(v, newKey));\n      }\n    }\n\n    return messages;\n  }\n}\n\nmodule.exports = DiscordAPIError;\n\n/**\n * @external APIError\n * @see {@link https://discord.com/developers/docs/reference#error-messages}\n */\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/rest/DiscordAPIError.js?")},"./node_modules/@citizenfx/discord.js/src/rest/HTTPError.js":
/*!******************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/rest/HTTPError.js ***!
  \******************************************************************/module=>{"use strict";eval("\n\n/**\n * Represents an HTTP error from a request.\n * @extends Error\n */\nclass HTTPError extends Error {\n  constructor(message, name, code, request) {\n    super(message);\n\n    /**\n     * The name of the error\n     * @type {string}\n     */\n    this.name = name;\n\n    /**\n     * HTTP error code returned from the request\n     * @type {number}\n     */\n    this.code = code ?? 500;\n\n    /**\n     * The HTTP method used for the request\n     * @type {string}\n     */\n    this.method = request.method;\n\n    /**\n     * The path of the request relative to the HTTP endpoint\n     * @type {string}\n     */\n    this.path = request.path;\n\n    /**\n     * The HTTP data that was sent to Discord\n     * @typedef {Object} HTTPErrorData\n     * @property {*} json The JSON data that was sent\n     * @property {HTTPAttachmentData[]} files The files that were sent with this request, if any\n     */\n\n    /**\n     * The attachment data that is sent to Discord\n     * @typedef {Object} HTTPAttachmentData\n     * @property {string|Buffer|Stream} attachment The source of this attachment data\n     * @property {string} name The file name\n     * @property {Buffer|Stream} file The file buffer\n     */\n\n    /**\n     * The data associated with the request that caused this error\n     * @type {HTTPErrorData}\n     */\n    this.requestData = {\n      json: request.options.data,\n      files: request.options.files ?? [],\n    };\n  }\n}\n\nmodule.exports = HTTPError;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/rest/HTTPError.js?")},"./node_modules/@citizenfx/discord.js/src/rest/RESTManager.js":
/*!********************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/rest/RESTManager.js ***!
  \********************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst { setInterval } = __webpack_require__(/*! node:timers */ "node:timers");\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ "./node_modules/@discordjs/collection/dist/index.js");\nconst APIRequest = __webpack_require__(/*! ./APIRequest */ "./node_modules/@citizenfx/discord.js/src/rest/APIRequest.js");\nconst routeBuilder = __webpack_require__(/*! ./APIRouter */ "./node_modules/@citizenfx/discord.js/src/rest/APIRouter.js");\nconst RequestHandler = __webpack_require__(/*! ./RequestHandler */ "./node_modules/@citizenfx/discord.js/src/rest/RequestHandler.js");\nconst { Error } = __webpack_require__(/*! ../errors */ "./node_modules/@citizenfx/discord.js/src/errors/index.js");\nconst { Endpoints } = __webpack_require__(/*! ../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\nclass RESTManager {\n  constructor(client) {\n    this.client = client;\n    this.handlers = new Collection();\n    this.versioned = true;\n    this.globalLimit = client.options.restGlobalRateLimit > 0 ? client.options.restGlobalRateLimit : Infinity;\n    this.globalRemaining = this.globalLimit;\n    this.globalReset = null;\n    this.globalDelay = null;\n    if (client.options.restSweepInterval > 0) {\n      this.sweepInterval = setInterval(() => {\n        this.handlers.sweep(handler => handler._inactive);\n      }, client.options.restSweepInterval * 1_000).unref();\n    }\n  }\n\n  get api() {\n    return routeBuilder(this);\n  }\n\n  getAuth() {\n    const token = this.client.token ?? this.client.accessToken;\n    if (token) return `Bot ${token}`;\n    throw new Error(\'TOKEN_MISSING\');\n  }\n\n  get cdn() {\n    return Endpoints.CDN(this.client.options.http.cdn);\n  }\n\n  request(method, url, options = {}) {\n    const apiRequest = new APIRequest(this, method, url, options);\n    let handler = this.handlers.get(apiRequest.route);\n\n    if (!handler) {\n      handler = new RequestHandler(this);\n      this.handlers.set(apiRequest.route, handler);\n    }\n\n    return handler.push(apiRequest);\n  }\n\n  get endpoint() {\n    return this.client.options.http.api;\n  }\n\n  set endpoint(endpoint) {\n    this.client.options.http.api = endpoint;\n  }\n}\n\nmodule.exports = RESTManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/rest/RESTManager.js?')},"./node_modules/@citizenfx/discord.js/src/rest/RateLimitError.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/rest/RateLimitError.js ***!
  \***********************************************************************/module=>{"use strict";eval("\n\n/**\n * Represents a RateLimit error from a request.\n * @extends Error\n */\nclass RateLimitError extends Error {\n  constructor({ timeout, limit, method, path, route, global }) {\n    super(`A ${global ? 'global ' : ''}rate limit was hit on route ${route}`);\n\n    /**\n     * The name of the error\n     * @type {string}\n     */\n    this.name = 'RateLimitError';\n\n    /**\n     * Time until this rate limit ends, in ms\n     * @type {number}\n     */\n    this.timeout = timeout;\n\n    /**\n     * The HTTP method used for the request\n     * @type {string}\n     */\n    this.method = method;\n\n    /**\n     * The path of the request relative to the HTTP endpoint\n     * @type {string}\n     */\n    this.path = path;\n\n    /**\n     * The route of the request relative to the HTTP endpoint\n     * @type {string}\n     */\n    this.route = route;\n\n    /**\n     * Whether this rate limit is global\n     * @type {boolean}\n     */\n    this.global = global;\n\n    /**\n     * The maximum amount of requests of this endpoint\n     * @type {number}\n     */\n    this.limit = limit;\n  }\n}\n\nmodule.exports = RateLimitError;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/rest/RateLimitError.js?")},"./node_modules/@citizenfx/discord.js/src/rest/RequestHandler.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/rest/RequestHandler.js ***!
  \***********************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { setTimeout } = __webpack_require__(/*! node:timers */ \"node:timers\");\nconst { setTimeout: sleep } = __webpack_require__(/*! node:timers/promises */ \"node:timers/promises\");\nconst { AsyncQueue } = __webpack_require__(/*! @sapphire/async-queue */ \"./node_modules/@sapphire/async-queue/dist/index.js\");\nconst DiscordAPIError = __webpack_require__(/*! ./DiscordAPIError */ \"./node_modules/@citizenfx/discord.js/src/rest/DiscordAPIError.js\");\nconst HTTPError = __webpack_require__(/*! ./HTTPError */ \"./node_modules/@citizenfx/discord.js/src/rest/HTTPError.js\");\nconst RateLimitError = __webpack_require__(/*! ./RateLimitError */ \"./node_modules/@citizenfx/discord.js/src/rest/RateLimitError.js\");\nconst {\n  Events: { DEBUG, RATE_LIMIT, INVALID_REQUEST_WARNING, API_RESPONSE, API_REQUEST },\n} = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\n\nfunction parseResponse(res) {\n  if (res.headers.get('content-type').startsWith('application/json')) return res.json();\n  return res.buffer();\n}\n\nfunction getAPIOffset(serverDate) {\n  return new Date(serverDate).getTime() - Date.now();\n}\n\nfunction calculateReset(reset, resetAfter, serverDate) {\n  // Use direct reset time when available, server date becomes irrelevant in this case\n  if (resetAfter) {\n    return Date.now() + Number(resetAfter) * 1_000;\n  }\n  return new Date(Number(reset) * 1_000).getTime() - getAPIOffset(serverDate);\n}\n\n/* Invalid request limiting is done on a per-IP basis, not a per-token basis.\n * The best we can do is track invalid counts process-wide (on the theory that\n * users could have multiple bots run from one process) rather than per-bot.\n * Therefore, store these at file scope here rather than in the client's\n * RESTManager object.\n */\nlet invalidCount = 0;\nlet invalidCountResetTime = null;\n\nclass RequestHandler {\n  constructor(manager) {\n    this.manager = manager;\n    this.queue = new AsyncQueue();\n    this.reset = -1;\n    this.remaining = -1;\n    this.limit = -1;\n  }\n\n  async push(request) {\n    await this.queue.wait();\n    try {\n      return await this.execute(request);\n    } finally {\n      this.queue.shift();\n    }\n  }\n\n  get globalLimited() {\n    return this.manager.globalRemaining <= 0 && Date.now() < this.manager.globalReset;\n  }\n\n  get localLimited() {\n    return this.remaining <= 0 && Date.now() < this.reset;\n  }\n\n  get limited() {\n    return this.globalLimited || this.localLimited;\n  }\n\n  get _inactive() {\n    return this.queue.remaining === 0 && !this.limited;\n  }\n\n  globalDelayFor(ms) {\n    return new Promise(resolve => {\n      setTimeout(() => {\n        this.manager.globalDelay = null;\n        resolve();\n      }, ms).unref();\n    });\n  }\n\n  /*\n   * Determines whether the request should be queued or whether a RateLimitError should be thrown\n   */\n  async onRateLimit(request, limit, timeout, isGlobal) {\n    const { options } = this.manager.client;\n    if (!options.rejectOnRateLimit) return;\n\n    const rateLimitData = {\n      timeout,\n      limit,\n      method: request.method,\n      path: request.path,\n      route: request.route,\n      global: isGlobal,\n    };\n    const shouldThrow =\n      typeof options.rejectOnRateLimit === 'function'\n        ? await options.rejectOnRateLimit(rateLimitData)\n        : options.rejectOnRateLimit.some(route => rateLimitData.route.startsWith(route.toLowerCase()));\n    if (shouldThrow) {\n      throw new RateLimitError(rateLimitData);\n    }\n  }\n\n  async execute(request) {\n    /*\n     * After calculations have been done, pre-emptively stop further requests\n     * Potentially loop until this task can run if e.g. the global rate limit is hit twice\n     */\n    while (this.limited) {\n      const isGlobal = this.globalLimited;\n      let limit, timeout, delayPromise;\n\n      if (isGlobal) {\n        // Set the variables based on the global rate limit\n        limit = this.manager.globalLimit;\n        timeout = this.manager.globalReset + this.manager.client.options.restTimeOffset - Date.now();\n      } else {\n        // Set the variables based on the route-specific rate limit\n        limit = this.limit;\n        timeout = this.reset + this.manager.client.options.restTimeOffset - Date.now();\n      }\n\n      if (this.manager.client.listenerCount(RATE_LIMIT)) {\n        /**\n         * Emitted when the client hits a rate limit while making a request\n         * @event BaseClient#rateLimit\n         * @param {RateLimitData} rateLimitData Object containing the rate limit info\n         */\n        this.manager.client.emit(RATE_LIMIT, {\n          timeout,\n          limit,\n          method: request.method,\n          path: request.path,\n          route: request.route,\n          global: isGlobal,\n        });\n      }\n\n      if (isGlobal) {\n        // If this is the first task to reach the global timeout, set the global delay\n        if (!this.manager.globalDelay) {\n          // The global delay function should clear the global delay state when it is resolved\n          this.manager.globalDelay = this.globalDelayFor(timeout);\n        }\n        delayPromise = this.manager.globalDelay;\n      } else {\n        delayPromise = sleep(timeout);\n      }\n\n      // Determine whether a RateLimitError should be thrown\n      await this.onRateLimit(request, limit, timeout, isGlobal); // eslint-disable-line no-await-in-loop\n\n      // Wait for the timeout to expire in order to avoid an actual 429\n      await delayPromise; // eslint-disable-line no-await-in-loop\n    }\n\n    // As the request goes out, update the global usage information\n    if (!this.manager.globalReset || this.manager.globalReset < Date.now()) {\n      this.manager.globalReset = Date.now() + 1_000;\n      this.manager.globalRemaining = this.manager.globalLimit;\n    }\n    this.manager.globalRemaining--;\n\n    /**\n     * Represents a request that will or has been made to the Discord API\n     * @typedef {Object} APIRequest\n     * @property {HTTPMethod} method The HTTP method used in this request\n     * @property {string} path The full path used to make the request\n     * @property {string} route The API route identifying the rate limit for this request\n     * @property {Object} options Additional options for this request\n     * @property {number} retries The number of times this request has been attempted\n     */\n\n    if (this.manager.client.listenerCount(API_REQUEST)) {\n      /**\n       * Emitted before every API request.\n       * This event can emit several times for the same request, e.g. when hitting a rate limit.\n       * <info>This is an informational event that is emitted quite frequently,\n       * it is highly recommended to check `request.path` to filter the data.</info>\n       * @event BaseClient#apiRequest\n       * @param {APIRequest} request The request that is about to be sent\n       */\n      this.manager.client.emit(API_REQUEST, {\n        method: request.method,\n        path: request.path,\n        route: request.route,\n        options: request.options,\n        retries: request.retries,\n      });\n    }\n\n    // Perform the request\n    let res;\n    try {\n      res = await request.make();\n    } catch (error) {\n      // Retry the specified number of times for request abortions\n      if (request.retries === this.manager.client.options.retryLimit) {\n        throw new HTTPError(error.message, error.constructor.name, error.status, request);\n      }\n\n      request.retries++;\n      return this.execute(request);\n    }\n\n    if (this.manager.client.listenerCount(API_RESPONSE)) {\n      /**\n       * Emitted after every API request has received a response.\n       * This event does not necessarily correlate to completion of the request, e.g. when hitting a rate limit.\n       * <info>This is an informational event that is emitted quite frequently,\n       * it is highly recommended to check `request.path` to filter the data.</info>\n       * @event BaseClient#apiResponse\n       * @param {APIRequest} request The request that triggered this response\n       * @param {Response} response The response received from the Discord API\n       */\n      this.manager.client.emit(\n        API_RESPONSE,\n        {\n          method: request.method,\n          path: request.path,\n          route: request.route,\n          options: request.options,\n          retries: request.retries,\n        },\n        res.clone(),\n      );\n    }\n\n    let sublimitTimeout;\n    if (res.headers) {\n      const serverDate = res.headers.get('date');\n      const limit = res.headers.get('x-ratelimit-limit');\n      const remaining = res.headers.get('x-ratelimit-remaining');\n      const reset = res.headers.get('x-ratelimit-reset');\n      const resetAfter = res.headers.get('x-ratelimit-reset-after');\n      this.limit = limit ? Number(limit) : Infinity;\n      this.remaining = remaining ? Number(remaining) : 1;\n\n      this.reset = reset || resetAfter ? calculateReset(reset, resetAfter, serverDate) : Date.now();\n\n      // https://github.com/discord/discord-api-docs/issues/182\n      if (!resetAfter && request.route.includes('reactions')) {\n        this.reset = new Date(serverDate).getTime() - getAPIOffset(serverDate) + 250;\n      }\n\n      // Handle retryAfter, which means we have actually hit a rate limit\n      let retryAfter = res.headers.get('retry-after');\n      retryAfter = retryAfter ? Number(retryAfter) * 1_000 : -1;\n      if (retryAfter > 0) {\n        // If the global rate limit header is set, that means we hit the global rate limit\n        if (res.headers.get('x-ratelimit-global')) {\n          this.manager.globalRemaining = 0;\n          this.manager.globalReset = Date.now() + retryAfter;\n        } else if (!this.localLimited) {\n          /*\n           * This is a sublimit (e.g. 2 channel name changes/10 minutes) since the headers don't indicate a\n           * route-wide rate limit. Don't update remaining or reset to avoid rate limiting the whole\n           * endpoint, just set a reset time on the request itself to avoid retrying too soon.\n           */\n          sublimitTimeout = retryAfter;\n        }\n      }\n    }\n\n    // Count the invalid requests\n    if (res.status === 401 || res.status === 403 || res.status === 429) {\n      if (!invalidCountResetTime || invalidCountResetTime < Date.now()) {\n        invalidCountResetTime = Date.now() + 1_000 * 60 * 10;\n        invalidCount = 0;\n      }\n      invalidCount++;\n\n      const emitInvalid =\n        this.manager.client.listenerCount(INVALID_REQUEST_WARNING) &&\n        this.manager.client.options.invalidRequestWarningInterval > 0 &&\n        invalidCount % this.manager.client.options.invalidRequestWarningInterval === 0;\n      if (emitInvalid) {\n        /**\n         * @typedef {Object} InvalidRequestWarningData\n         * @property {number} count Number of invalid requests that have been made in the window\n         * @property {number} remainingTime Time in ms remaining before the count resets\n         */\n\n        /**\n         * Emitted periodically when the process sends invalid requests to let users avoid the\n         * 10k invalid requests in 10 minutes threshold that causes a ban\n         * @event BaseClient#invalidRequestWarning\n         * @param {InvalidRequestWarningData} invalidRequestWarningData Object containing the invalid request info\n         */\n        this.manager.client.emit(INVALID_REQUEST_WARNING, {\n          count: invalidCount,\n          remainingTime: invalidCountResetTime - Date.now(),\n        });\n      }\n    }\n\n    // Handle 2xx and 3xx responses\n    if (res.ok) {\n      // Nothing wrong with the request, proceed with the next one\n      return parseResponse(res);\n    }\n\n    // Handle 4xx responses\n    if (res.status >= 400 && res.status < 500) {\n      // Handle ratelimited requests\n      if (res.status === 429) {\n        const isGlobal = this.globalLimited;\n        let limit, timeout;\n        if (isGlobal) {\n          // Set the variables based on the global rate limit\n          limit = this.manager.globalLimit;\n          timeout = this.manager.globalReset + this.manager.client.options.restTimeOffset - Date.now();\n        } else {\n          // Set the variables based on the route-specific rate limit\n          limit = this.limit;\n          timeout = this.reset + this.manager.client.options.restTimeOffset - Date.now();\n        }\n\n        this.manager.client.emit(\n          DEBUG,\n          `Hit a 429 while executing a request.\n    Global  : ${isGlobal}\n    Method  : ${request.method}\n    Path    : ${request.path}\n    Route   : ${request.route}\n    Limit   : ${limit}\n    Timeout : ${timeout}ms\n    Sublimit: ${sublimitTimeout ? `${sublimitTimeout}ms` : 'None'}`,\n        );\n\n        await this.onRateLimit(request, limit, timeout, isGlobal);\n\n        // If caused by a sublimit, wait it out here so other requests on the route can be handled\n        if (sublimitTimeout) {\n          await sleep(sublimitTimeout);\n        }\n        return this.execute(request);\n      }\n\n      // Handle possible malformed requests\n      let data;\n      try {\n        data = await parseResponse(res);\n      } catch (err) {\n        throw new HTTPError(err.message, err.constructor.name, err.status, request);\n      }\n\n      throw new DiscordAPIError(data, res.status, request);\n    }\n\n    // Handle 5xx responses\n    if (res.status >= 500 && res.status < 600) {\n      // Retry the specified number of times for possible serverside issues\n      if (request.retries === this.manager.client.options.retryLimit) {\n        throw new HTTPError(res.statusText, res.constructor.name, res.status, request);\n      }\n\n      request.retries++;\n      return this.execute(request);\n    }\n\n    // Fallback in the rare case a status code outside the range 200..=599 is returned\n    return null;\n  }\n}\n\nmodule.exports = RequestHandler;\n\n/**\n * @external HTTPMethod\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods}\n */\n\n/**\n * @external Response\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Response}\n */\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/rest/RequestHandler.js?")},"./node_modules/@citizenfx/discord.js/src/sharding/Shard.js":
/*!******************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/sharding/Shard.js ***!
  \******************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst EventEmitter = __webpack_require__(/*! node:events */ \"node:events\");\nconst path = __webpack_require__(/*! node:path */ \"node:path\");\nconst process = __webpack_require__(/*! node:process */ \"node:process\");\nconst { setTimeout, clearTimeout } = __webpack_require__(/*! node:timers */ \"node:timers\");\nconst { setTimeout: sleep } = __webpack_require__(/*! node:timers/promises */ \"node:timers/promises\");\nconst { Error } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst Util = __webpack_require__(/*! ../util/Util */ \"./node_modules/@citizenfx/discord.js/src/util/Util.js\");\nlet childProcess = null;\nlet Worker = null;\n\n/**\n * A self-contained shard created by the {@link ShardingManager}. Each one has a {@link ChildProcess} that contains\n * an instance of the bot and its {@link Client}. When its child process/worker exits for any reason, the shard will\n * spawn a new one to replace it as necessary.\n * @extends EventEmitter\n */\nclass Shard extends EventEmitter {\n  constructor(manager, id) {\n    super();\n\n    if (manager.mode === 'process') childProcess = __webpack_require__(/*! node:child_process */ \"node:child_process\");\n    else if (manager.mode === 'worker') Worker = (__webpack_require__(/*! node:worker_threads */ \"node:worker_threads\").Worker);\n\n    /**\n     * Manager that created the shard\n     * @type {ShardingManager}\n     */\n    this.manager = manager;\n\n    /**\n     * The shard's id in the manager\n     * @type {number}\n     */\n    this.id = id;\n\n    /**\n     * Arguments for the shard's process (only when {@link ShardingManager#mode} is `process`)\n     * @type {string[]}\n     */\n    this.args = manager.shardArgs ?? [];\n\n    /**\n     * Arguments for the shard's process executable (only when {@link ShardingManager#mode} is `process`)\n     * @type {string[]}\n     */\n    this.execArgv = manager.execArgv;\n\n    /**\n     * Environment variables for the shard's process, or workerData for the shard's worker\n     * @type {Object}\n     */\n    this.env = Object.assign({}, process.env, {\n      SHARDING_MANAGER: true,\n      SHARDS: this.id,\n      SHARD_COUNT: this.manager.totalShards,\n      DISCORD_TOKEN: this.manager.token,\n    });\n\n    /**\n     * Whether the shard's {@link Client} is ready\n     * @type {boolean}\n     */\n    this.ready = false;\n\n    /**\n     * Process of the shard (if {@link ShardingManager#mode} is `process`)\n     * @type {?ChildProcess}\n     */\n    this.process = null;\n\n    /**\n     * Worker of the shard (if {@link ShardingManager#mode} is `worker`)\n     * @type {?Worker}\n     */\n    this.worker = null;\n\n    /**\n     * Ongoing promises for calls to {@link Shard#eval}, mapped by the `script` they were called with\n     * @type {Map<string, Promise>}\n     * @private\n     */\n    this._evals = new Map();\n\n    /**\n     * Ongoing promises for calls to {@link Shard#fetchClientValue}, mapped by the `prop` they were called with\n     * @type {Map<string, Promise>}\n     * @private\n     */\n    this._fetches = new Map();\n\n    /**\n     * Listener function for the {@link ChildProcess}' `exit` event\n     * @type {Function}\n     * @private\n     */\n    this._exitListener = null;\n  }\n\n  /**\n   * Forks a child process or creates a worker thread for the shard.\n   * <warn>You should not need to call this manually.</warn>\n   * @param {number} [timeout=30000] The amount in milliseconds to wait until the {@link Client} has become ready\n   * before resolving (`-1` or `Infinity` for no wait)\n   * @returns {Promise<ChildProcess>}\n   */\n  spawn(timeout = 30_000) {\n    if (this.process) throw new Error('SHARDING_PROCESS_EXISTS', this.id);\n    if (this.worker) throw new Error('SHARDING_WORKER_EXISTS', this.id);\n\n    this._exitListener = this._handleExit.bind(this, undefined, timeout);\n\n    if (this.manager.mode === 'process') {\n      this.process = childProcess\n        .fork(path.resolve(this.manager.file), this.args, {\n          env: this.env,\n          execArgv: this.execArgv,\n        })\n        .on('message', this._handleMessage.bind(this))\n        .on('exit', this._exitListener);\n    } else if (this.manager.mode === 'worker') {\n      this.worker = new Worker(path.resolve(this.manager.file), { workerData: this.env })\n        .on('message', this._handleMessage.bind(this))\n        .on('exit', this._exitListener);\n    }\n\n    this._evals.clear();\n    this._fetches.clear();\n\n    const child = this.process ?? this.worker;\n\n    /**\n     * Emitted upon the creation of the shard's child process/worker.\n     * @event Shard#spawn\n     * @param {ChildProcess|Worker} process Child process/worker that was created\n     */\n    this.emit('spawn', child);\n\n    if (timeout === -1 || timeout === Infinity) return Promise.resolve(child);\n    return new Promise((resolve, reject) => {\n      const cleanup = () => {\n        clearTimeout(spawnTimeoutTimer);\n        this.off('ready', onReady);\n        this.off('disconnect', onDisconnect);\n        this.off('death', onDeath);\n      };\n\n      const onReady = () => {\n        cleanup();\n        resolve(child);\n      };\n\n      const onDisconnect = () => {\n        cleanup();\n        reject(new Error('SHARDING_READY_DISCONNECTED', this.id));\n      };\n\n      const onDeath = () => {\n        cleanup();\n        reject(new Error('SHARDING_READY_DIED', this.id));\n      };\n\n      const onTimeout = () => {\n        cleanup();\n        reject(new Error('SHARDING_READY_TIMEOUT', this.id));\n      };\n\n      const spawnTimeoutTimer = setTimeout(onTimeout, timeout);\n      this.once('ready', onReady);\n      this.once('disconnect', onDisconnect);\n      this.once('death', onDeath);\n    });\n  }\n\n  /**\n   * Immediately kills the shard's process/worker and does not restart it.\n   */\n  kill() {\n    if (this.process) {\n      this.process.removeListener('exit', this._exitListener);\n      this.process.kill();\n    } else {\n      this.worker.removeListener('exit', this._exitListener);\n      this.worker.terminate();\n    }\n\n    this._handleExit(false);\n  }\n\n  /**\n   * Options used to respawn a shard.\n   * @typedef {Object} ShardRespawnOptions\n   * @property {number} [delay=500] How long to wait between killing the process/worker and\n   * restarting it (in milliseconds)\n   * @property {number} [timeout=30000] The amount in milliseconds to wait until the {@link Client}\n   * has become ready before resolving (`-1` or `Infinity` for no wait)\n   */\n\n  /**\n   * Kills and restarts the shard's process/worker.\n   * @param {ShardRespawnOptions} [options] Options for respawning the shard\n   * @returns {Promise<ChildProcess>}\n   */\n  async respawn({ delay = 500, timeout = 30_000 } = {}) {\n    this.kill();\n    if (delay > 0) await sleep(delay);\n    return this.spawn(timeout);\n  }\n\n  /**\n   * Sends a message to the shard's process/worker.\n   * @param {*} message Message to send to the shard\n   * @returns {Promise<Shard>}\n   */\n  send(message) {\n    return new Promise((resolve, reject) => {\n      if (this.process) {\n        this.process.send(message, err => {\n          if (err) reject(err);\n          else resolve(this);\n        });\n      } else {\n        this.worker.postMessage(message);\n        resolve(this);\n      }\n    });\n  }\n\n  /**\n   * Fetches a client property value of the shard.\n   * @param {string} prop Name of the client property to get, using periods for nesting\n   * @returns {Promise<*>}\n   * @example\n   * shard.fetchClientValue('guilds.cache.size')\n   *   .then(count => console.log(`${count} guilds in shard ${shard.id}`))\n   *   .catch(console.error);\n   */\n  fetchClientValue(prop) {\n    // Shard is dead (maybe respawning), don't cache anything and error immediately\n    if (!this.process && !this.worker) return Promise.reject(new Error('SHARDING_NO_CHILD_EXISTS', this.id));\n\n    // Cached promise from previous call\n    if (this._fetches.has(prop)) return this._fetches.get(prop);\n\n    const promise = new Promise((resolve, reject) => {\n      const child = this.process ?? this.worker;\n\n      const listener = message => {\n        if (message?._fetchProp !== prop) return;\n        child.removeListener('message', listener);\n        this._fetches.delete(prop);\n        if (!message._error) resolve(message._result);\n        else reject(Util.makeError(message._error));\n      };\n      child.on('message', listener);\n\n      this.send({ _fetchProp: prop }).catch(err => {\n        child.removeListener('message', listener);\n        this._fetches.delete(prop);\n        reject(err);\n      });\n    });\n\n    this._fetches.set(prop, promise);\n    return promise;\n  }\n\n  /**\n   * Evaluates a script or function on the shard, in the context of the {@link Client}.\n   * @param {string|Function} script JavaScript to run on the shard\n   * @param {*} [context] The context for the eval\n   * @returns {Promise<*>} Result of the script execution\n   */\n  eval(script, context) {\n    // Stringify the script if it's a Function\n    const _eval = typeof script === 'function' ? `(${script})(this, ${JSON.stringify(context)})` : script;\n\n    // Shard is dead (maybe respawning), don't cache anything and error immediately\n    if (!this.process && !this.worker) return Promise.reject(new Error('SHARDING_NO_CHILD_EXISTS', this.id));\n\n    // Cached promise from previous call\n    if (this._evals.has(_eval)) return this._evals.get(_eval);\n\n    const promise = new Promise((resolve, reject) => {\n      const child = this.process ?? this.worker;\n\n      const listener = message => {\n        if (message?._eval !== _eval) return;\n        child.removeListener('message', listener);\n        this._evals.delete(_eval);\n        if (!message._error) resolve(message._result);\n        else reject(Util.makeError(message._error));\n      };\n      child.on('message', listener);\n\n      this.send({ _eval }).catch(err => {\n        child.removeListener('message', listener);\n        this._evals.delete(_eval);\n        reject(err);\n      });\n    });\n\n    this._evals.set(_eval, promise);\n    return promise;\n  }\n\n  /**\n   * Handles a message received from the child process/worker.\n   * @param {*} message Message received\n   * @private\n   */\n  _handleMessage(message) {\n    if (message) {\n      // Shard is ready\n      if (message._ready) {\n        this.ready = true;\n        /**\n         * Emitted upon the shard's {@link Client#event:shardReady} event.\n         * @event Shard#ready\n         */\n        this.emit('ready');\n        return;\n      }\n\n      // Shard has disconnected\n      if (message._disconnect) {\n        this.ready = false;\n        /**\n         * Emitted upon the shard's {@link Client#event:shardDisconnect} event.\n         * @event Shard#disconnect\n         */\n        this.emit('disconnect');\n        return;\n      }\n\n      // Shard is attempting to reconnect\n      if (message._reconnecting) {\n        this.ready = false;\n        /**\n         * Emitted upon the shard's {@link Client#event:shardReconnecting} event.\n         * @event Shard#reconnecting\n         */\n        this.emit('reconnecting');\n        return;\n      }\n\n      // Shard is requesting a property fetch\n      if (message._sFetchProp) {\n        const resp = { _sFetchProp: message._sFetchProp, _sFetchPropShard: message._sFetchPropShard };\n        this.manager.fetchClientValues(message._sFetchProp, message._sFetchPropShard).then(\n          results => this.send({ ...resp, _result: results }),\n          err => this.send({ ...resp, _error: Util.makePlainError(err) }),\n        );\n        return;\n      }\n\n      // Shard is requesting an eval broadcast\n      if (message._sEval) {\n        const resp = { _sEval: message._sEval, _sEvalShard: message._sEvalShard };\n        this.manager._performOnShards('eval', [message._sEval], message._sEvalShard).then(\n          results => this.send({ ...resp, _result: results }),\n          err => this.send({ ...resp, _error: Util.makePlainError(err) }),\n        );\n        return;\n      }\n\n      // Shard is requesting a respawn of all shards\n      if (message._sRespawnAll) {\n        const { shardDelay, respawnDelay, timeout } = message._sRespawnAll;\n        this.manager.respawnAll({ shardDelay, respawnDelay, timeout }).catch(() => {\n          // Do nothing\n        });\n        return;\n      }\n    }\n\n    /**\n     * Emitted upon receiving a message from the child process/worker.\n     * @event Shard#message\n     * @param {*} message Message that was received\n     */\n    this.emit('message', message);\n  }\n\n  /**\n   * Handles the shard's process/worker exiting.\n   * @param {boolean} [respawn=this.manager.respawn] Whether to spawn the shard again\n   * @param {number} [timeout] The amount in milliseconds to wait until the {@link Client}\n   * has become ready (`-1` or `Infinity` for no wait)\n   * @private\n   */\n  _handleExit(respawn = this.manager.respawn, timeout) {\n    /**\n     * Emitted upon the shard's child process/worker exiting.\n     * @event Shard#death\n     * @param {ChildProcess|Worker} process Child process/worker that exited\n     */\n    this.emit('death', this.process ?? this.worker);\n\n    this.ready = false;\n    this.process = null;\n    this.worker = null;\n    this._evals.clear();\n    this._fetches.clear();\n\n    if (respawn) this.spawn(timeout).catch(err => this.emit('error', err));\n  }\n}\n\nmodule.exports = Shard;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/sharding/Shard.js?")},"./node_modules/@citizenfx/discord.js/src/sharding/ShardClientUtil.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/sharding/ShardClientUtil.js ***!
  \****************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst process = __webpack_require__(/*! node:process */ \"node:process\");\nconst { Error } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst { Events } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst Util = __webpack_require__(/*! ../util/Util */ \"./node_modules/@citizenfx/discord.js/src/util/Util.js\");\n\n/**\n * Helper class for sharded clients spawned as a child process/worker, such as from a {@link ShardingManager}.\n * Utilises IPC to send and receive data to/from the master process and other shards.\n */\nclass ShardClientUtil {\n  constructor(client, mode) {\n    /**\n     * Client for the shard\n     * @type {Client}\n     */\n    this.client = client;\n\n    /**\n     * Mode the shard was spawned with\n     * @type {ShardingManagerMode}\n     */\n    this.mode = mode;\n\n    /**\n     * Message port for the master process (only when {@link ShardClientUtil#mode} is `worker`)\n     * @type {?MessagePort}\n     */\n    this.parentPort = null;\n\n    if (mode === 'process') {\n      process.on('message', this._handleMessage.bind(this));\n      client.on('ready', () => {\n        process.send({ _ready: true });\n      });\n      client.on('disconnect', () => {\n        process.send({ _disconnect: true });\n      });\n      client.on('reconnecting', () => {\n        process.send({ _reconnecting: true });\n      });\n    } else if (mode === 'worker') {\n      this.parentPort = (__webpack_require__(/*! node:worker_threads */ \"node:worker_threads\").parentPort);\n      this.parentPort.on('message', this._handleMessage.bind(this));\n      client.on('ready', () => {\n        this.parentPort.postMessage({ _ready: true });\n      });\n      client.on('disconnect', () => {\n        this.parentPort.postMessage({ _disconnect: true });\n      });\n      client.on('reconnecting', () => {\n        this.parentPort.postMessage({ _reconnecting: true });\n      });\n    }\n  }\n\n  /**\n   * Array of shard ids of this client\n   * @type {number[]}\n   * @readonly\n   */\n  get ids() {\n    return this.client.options.shards;\n  }\n\n  /**\n   * Total number of shards\n   * @type {number}\n   * @readonly\n   */\n  get count() {\n    return this.client.options.shardCount;\n  }\n\n  /**\n   * Sends a message to the master process.\n   * @param {*} message Message to send\n   * @returns {Promise<void>}\n   * @emits Shard#message\n   */\n  send(message) {\n    return new Promise((resolve, reject) => {\n      if (this.mode === 'process') {\n        process.send(message, err => {\n          if (err) reject(err);\n          else resolve();\n        });\n      } else if (this.mode === 'worker') {\n        this.parentPort.postMessage(message);\n        resolve();\n      }\n    });\n  }\n\n  /**\n   * Fetches a client property value of each shard, or a given shard.\n   * @param {string} prop Name of the client property to get, using periods for nesting\n   * @param {number} [shard] Shard to fetch property from, all if undefined\n   * @returns {Promise<*|Array<*>>}\n   * @example\n   * client.shard.fetchClientValues('guilds.cache.size')\n   *   .then(results => console.log(`${results.reduce((prev, val) => prev + val, 0)} total guilds`))\n   *   .catch(console.error);\n   * @see {@link ShardingManager#fetchClientValues}\n   */\n  fetchClientValues(prop, shard) {\n    return new Promise((resolve, reject) => {\n      const parent = this.parentPort ?? process;\n\n      const listener = message => {\n        if (message?._sFetchProp !== prop || message._sFetchPropShard !== shard) return;\n        parent.removeListener('message', listener);\n        if (!message._error) resolve(message._result);\n        else reject(Util.makeError(message._error));\n      };\n      parent.on('message', listener);\n\n      this.send({ _sFetchProp: prop, _sFetchPropShard: shard }).catch(err => {\n        parent.removeListener('message', listener);\n        reject(err);\n      });\n    });\n  }\n\n  /**\n   * Evaluates a script or function on all shards, or a given shard, in the context of the {@link Client}s.\n   * @param {Function} script JavaScript to run on each shard\n   * @param {BroadcastEvalOptions} [options={}] The options for the broadcast\n   * @returns {Promise<*|Array<*>>} Results of the script execution\n   * @example\n   * client.shard.broadcastEval(client => client.guilds.cache.size)\n   *   .then(results => console.log(`${results.reduce((prev, val) => prev + val, 0)} total guilds`))\n   *   .catch(console.error);\n   * @see {@link ShardingManager#broadcastEval}\n   */\n  broadcastEval(script, options = {}) {\n    return new Promise((resolve, reject) => {\n      const parent = this.parentPort ?? process;\n      if (typeof script !== 'function') {\n        reject(new TypeError('SHARDING_INVALID_EVAL_BROADCAST'));\n        return;\n      }\n      script = `(${script})(this, ${JSON.stringify(options.context)})`;\n\n      const listener = message => {\n        if (message?._sEval !== script || message._sEvalShard !== options.shard) return;\n        parent.removeListener('message', listener);\n        if (!message._error) resolve(message._result);\n        else reject(Util.makeError(message._error));\n      };\n      parent.on('message', listener);\n\n      this.send({ _sEval: script, _sEvalShard: options.shard }).catch(err => {\n        parent.removeListener('message', listener);\n        reject(err);\n      });\n    });\n  }\n\n  /**\n   * Requests a respawn of all shards.\n   * @param {MultipleShardRespawnOptions} [options] Options for respawning shards\n   * @returns {Promise<void>} Resolves upon the message being sent\n   * @see {@link ShardingManager#respawnAll}\n   */\n  respawnAll({ shardDelay = 5_000, respawnDelay = 500, timeout = 30_000 } = {}) {\n    return this.send({ _sRespawnAll: { shardDelay, respawnDelay, timeout } });\n  }\n\n  /**\n   * Handles an IPC message.\n   * @param {*} message Message received\n   * @private\n   */\n  async _handleMessage(message) {\n    if (!message) return;\n    if (message._fetchProp) {\n      try {\n        const props = message._fetchProp.split('.');\n        let value = this.client;\n        for (const prop of props) value = value[prop];\n        this._respond('fetchProp', { _fetchProp: message._fetchProp, _result: value });\n      } catch (err) {\n        this._respond('fetchProp', { _fetchProp: message._fetchProp, _error: Util.makePlainError(err) });\n      }\n    } else if (message._eval) {\n      try {\n        this._respond('eval', { _eval: message._eval, _result: await this.client._eval(message._eval) });\n      } catch (err) {\n        this._respond('eval', { _eval: message._eval, _error: Util.makePlainError(err) });\n      }\n    }\n  }\n\n  /**\n   * Sends a message to the master process, emitting an error from the client upon failure.\n   * @param {string} type Type of response to send\n   * @param {*} message Message to send\n   * @private\n   */\n  _respond(type, message) {\n    this.send(message).catch(err => {\n      const error = new Error(`Error when sending ${type} response to master process: ${err.message}`);\n      error.stack = err.stack;\n      /**\n       * Emitted when the client encounters an error.\n       * @event Client#error\n       * @param {Error} error The error encountered\n       */\n      this.client.emit(Events.ERROR, error);\n    });\n  }\n\n  /**\n   * Creates/gets the singleton of this class.\n   * @param {Client} client The client to use\n   * @param {ShardingManagerMode} mode Mode the shard was spawned with\n   * @returns {ShardClientUtil}\n   */\n  static singleton(client, mode) {\n    if (!this._singleton) {\n      this._singleton = new this(client, mode);\n    } else {\n      client.emit(\n        Events.WARN,\n        'Multiple clients created in child process/worker; only the first will handle sharding helpers.',\n      );\n    }\n    return this._singleton;\n  }\n\n  /**\n   * Get the shard id for a given guild id.\n   * @param {Snowflake} guildId Snowflake guild id to get shard id for\n   * @param {number} shardCount Number of shards\n   * @returns {number}\n   */\n  static shardIdForGuildId(guildId, shardCount) {\n    const shard = Number(BigInt(guildId) >> 22n) % shardCount;\n    if (shard < 0) throw new Error('SHARDING_SHARD_MISCALCULATION', shard, guildId, shardCount);\n    return shard;\n  }\n}\n\nmodule.exports = ShardClientUtil;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/sharding/ShardClientUtil.js?")},"./node_modules/@citizenfx/discord.js/src/sharding/ShardingManager.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/sharding/ShardingManager.js ***!
  \****************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst EventEmitter = __webpack_require__(/*! node:events */ \"node:events\");\nconst fs = __webpack_require__(/*! node:fs */ \"node:fs\");\nconst path = __webpack_require__(/*! node:path */ \"node:path\");\nconst process = __webpack_require__(/*! node:process */ \"node:process\");\nconst { setTimeout: sleep } = __webpack_require__(/*! node:timers/promises */ \"node:timers/promises\");\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst Shard = __webpack_require__(/*! ./Shard */ \"./node_modules/@citizenfx/discord.js/src/sharding/Shard.js\");\nconst { Error, TypeError, RangeError } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst Util = __webpack_require__(/*! ../util/Util */ \"./node_modules/@citizenfx/discord.js/src/util/Util.js\");\n\n/**\n * This is a utility class that makes multi-process sharding of a bot an easy and painless experience.\n * It works by spawning a self-contained {@link ChildProcess} or {@link Worker} for each individual shard, each\n * containing its own instance of your bot's {@link Client}. They all have a line of communication with the master\n * process, and there are several useful methods that utilise it in order to simplify tasks that are normally difficult\n * with sharding. It can spawn a specific number of shards or the amount that Discord suggests for the bot, and takes a\n * path to your main bot script to launch for each one.\n * @extends {EventEmitter}\n */\nclass ShardingManager extends EventEmitter {\n  /**\n   * The mode to spawn shards with for a {@link ShardingManager}. Can be either one of:\n   * * 'process' to use child processes\n   * * 'worker' to use [Worker threads](https://nodejs.org/api/worker_threads.html)\n   * @typedef {string} ShardingManagerMode\n   */\n\n  /**\n   * The options to spawn shards with for a {@link ShardingManager}.\n   * @typedef {Object} ShardingManagerOptions\n   * @property {string|number} [totalShards='auto'] Number of total shards of all shard managers or \"auto\"\n   * @property {string|number[]} [shardList='auto'] List of shards to spawn or \"auto\"\n   * @property {ShardingManagerMode} [mode='process'] Which mode to use for shards\n   * @property {boolean} [respawn=true] Whether shards should automatically respawn upon exiting\n   * @property {string[]} [shardArgs=[]] Arguments to pass to the shard script when spawning\n   * (only available when mode is set to 'process')\n   * @property {string} [execArgv=[]] Arguments to pass to the shard script executable when spawning\n   * (only available when mode is set to 'process')\n   * @property {string} [token] Token to use for automatic shard count and passing to shards\n   */\n\n  /**\n   * @param {string} file Path to your shard script file\n   * @param {ShardingManagerOptions} [options] Options for the sharding manager\n   */\n  constructor(file, options = {}) {\n    super();\n    options = Util.mergeDefault(\n      {\n        totalShards: 'auto',\n        mode: 'process',\n        respawn: true,\n        shardArgs: [],\n        execArgv: [],\n        token: process.env.DISCORD_TOKEN,\n      },\n      options,\n    );\n\n    /**\n     * Path to the shard script file\n     * @type {string}\n     */\n    this.file = file;\n    if (!file) throw new Error('CLIENT_INVALID_OPTION', 'File', 'specified.');\n    if (!path.isAbsolute(file)) this.file = path.resolve(process.cwd(), file);\n    const stats = fs.statSync(this.file);\n    if (!stats.isFile()) throw new Error('CLIENT_INVALID_OPTION', 'File', 'a file');\n\n    /**\n     * List of shards this sharding manager spawns\n     * @type {string|number[]}\n     */\n    this.shardList = options.shardList ?? 'auto';\n    if (this.shardList !== 'auto') {\n      if (!Array.isArray(this.shardList)) {\n        throw new TypeError('CLIENT_INVALID_OPTION', 'shardList', 'an array.');\n      }\n      this.shardList = [...new Set(this.shardList)];\n      if (this.shardList.length < 1) throw new RangeError('CLIENT_INVALID_OPTION', 'shardList', 'at least 1 id.');\n      if (\n        this.shardList.some(\n          shardId => typeof shardId !== 'number' || isNaN(shardId) || !Number.isInteger(shardId) || shardId < 0,\n        )\n      ) {\n        throw new TypeError('CLIENT_INVALID_OPTION', 'shardList', 'an array of positive integers.');\n      }\n    }\n\n    /**\n     * Amount of shards that all sharding managers spawn in total\n     * @type {number}\n     */\n    this.totalShards = options.totalShards || 'auto';\n    if (this.totalShards !== 'auto') {\n      if (typeof this.totalShards !== 'number' || isNaN(this.totalShards)) {\n        throw new TypeError('CLIENT_INVALID_OPTION', 'Amount of shards', 'a number.');\n      }\n      if (this.totalShards < 1) throw new RangeError('CLIENT_INVALID_OPTION', 'Amount of shards', 'at least 1.');\n      if (!Number.isInteger(this.totalShards)) {\n        throw new RangeError('CLIENT_INVALID_OPTION', 'Amount of shards', 'an integer.');\n      }\n    }\n\n    /**\n     * Mode for shards to spawn with\n     * @type {ShardingManagerMode}\n     */\n    this.mode = options.mode;\n    if (this.mode !== 'process' && this.mode !== 'worker') {\n      throw new RangeError('CLIENT_INVALID_OPTION', 'Sharding mode', '\"process\" or \"worker\"');\n    }\n\n    /**\n     * Whether shards should automatically respawn upon exiting\n     * @type {boolean}\n     */\n    this.respawn = options.respawn;\n\n    /**\n     * An array of arguments to pass to shards (only when {@link ShardingManager#mode} is `process`)\n     * @type {string[]}\n     */\n    this.shardArgs = options.shardArgs;\n\n    /**\n     * An array of arguments to pass to the executable (only when {@link ShardingManager#mode} is `process`)\n     * @type {string[]}\n     */\n    this.execArgv = options.execArgv;\n\n    /**\n     * Token to use for obtaining the automatic shard count, and passing to shards\n     * @type {?string}\n     */\n    this.token = options.token?.replace(/^Bot\\s*/i, '') ?? null;\n\n    /**\n     * A collection of shards that this manager has spawned\n     * @type {Collection<number, Shard>}\n     */\n    this.shards = new Collection();\n\n    process.env.SHARDING_MANAGER = true;\n    process.env.SHARDING_MANAGER_MODE = this.mode;\n    process.env.DISCORD_TOKEN = this.token;\n  }\n\n  /**\n   * Creates a single shard.\n   * <warn>Using this method is usually not necessary if you use the spawn method.</warn>\n   * @param {number} [id=this.shards.size] Id of the shard to create\n   * <info>This is usually not necessary to manually specify.</info>\n   * @returns {Shard} Note that the created shard needs to be explicitly spawned using its spawn method.\n   */\n  createShard(id = this.shards.size) {\n    const shard = new Shard(this, id);\n    this.shards.set(id, shard);\n    /**\n     * Emitted upon creating a shard.\n     * @event ShardingManager#shardCreate\n     * @param {Shard} shard Shard that was created\n     */\n    this.emit('shardCreate', shard);\n    return shard;\n  }\n\n  /**\n   * Options used to spawn multiple shards.\n   * @typedef {Object} MultipleShardSpawnOptions\n   * @property {number|string} [amount=this.totalShards] Number of shards to spawn\n   * @property {number} [delay=5500] How long to wait in between spawning each shard (in milliseconds)\n   * @property {number} [timeout=30000] The amount in milliseconds to wait until the {@link Client} has become ready\n   */\n\n  /**\n   * Spawns multiple shards.\n   * @param {MultipleShardSpawnOptions} [options] Options for spawning shards\n   * @returns {Promise<Collection<number, Shard>>}\n   */\n  async spawn({ amount = this.totalShards, delay = 5500, timeout = 30_000 } = {}) {\n    // Obtain/verify the number of shards to spawn\n    if (amount === 'auto') {\n      amount = await Util.fetchRecommendedShards(this.token);\n    } else {\n      if (typeof amount !== 'number' || isNaN(amount)) {\n        throw new TypeError('CLIENT_INVALID_OPTION', 'Amount of shards', 'a number.');\n      }\n      if (amount < 1) throw new RangeError('CLIENT_INVALID_OPTION', 'Amount of shards', 'at least 1.');\n      if (!Number.isInteger(amount)) {\n        throw new TypeError('CLIENT_INVALID_OPTION', 'Amount of shards', 'an integer.');\n      }\n    }\n\n    // Make sure this many shards haven't already been spawned\n    if (this.shards.size >= amount) throw new Error('SHARDING_ALREADY_SPAWNED', this.shards.size);\n    if (this.shardList === 'auto' || this.totalShards === 'auto' || this.totalShards !== amount) {\n      this.shardList = [...Array(amount).keys()];\n    }\n    if (this.totalShards === 'auto' || this.totalShards !== amount) {\n      this.totalShards = amount;\n    }\n\n    if (this.shardList.some(shardId => shardId >= amount)) {\n      throw new RangeError(\n        'CLIENT_INVALID_OPTION',\n        'Amount of shards',\n        'bigger than the highest shardId in the shardList option.',\n      );\n    }\n\n    // Spawn the shards\n    for (const shardId of this.shardList) {\n      const promises = [];\n      const shard = this.createShard(shardId);\n      promises.push(shard.spawn(timeout));\n      if (delay > 0 && this.shards.size !== this.shardList.length) promises.push(sleep(delay));\n      await Promise.all(promises); // eslint-disable-line no-await-in-loop\n    }\n\n    return this.shards;\n  }\n\n  /**\n   * Sends a message to all shards.\n   * @param {*} message Message to be sent to the shards\n   * @returns {Promise<Shard[]>}\n   */\n  broadcast(message) {\n    const promises = [];\n    for (const shard of this.shards.values()) promises.push(shard.send(message));\n    return Promise.all(promises);\n  }\n\n  /**\n   * Options for {@link ShardingManager#broadcastEval} and {@link ShardClientUtil#broadcastEval}.\n   * @typedef {Object} BroadcastEvalOptions\n   * @property {number} [shard] Shard to run script on, all if undefined\n   * @property {*} [context] The JSON-serializable values to call the script with\n   */\n\n  /**\n   * Evaluates a script on all shards, or a given shard, in the context of the {@link Client}s.\n   * @param {Function} script JavaScript to run on each shard\n   * @param {BroadcastEvalOptions} [options={}] The options for the broadcast\n   * @returns {Promise<*|Array<*>>} Results of the script execution\n   */\n  broadcastEval(script, options = {}) {\n    if (typeof script !== 'function') return Promise.reject(new TypeError('SHARDING_INVALID_EVAL_BROADCAST'));\n    return this._performOnShards('eval', [`(${script})(this, ${JSON.stringify(options.context)})`], options.shard);\n  }\n\n  /**\n   * Fetches a client property value of each shard, or a given shard.\n   * @param {string} prop Name of the client property to get, using periods for nesting\n   * @param {number} [shard] Shard to fetch property from, all if undefined\n   * @returns {Promise<*|Array<*>>}\n   * @example\n   * manager.fetchClientValues('guilds.cache.size')\n   *   .then(results => console.log(`${results.reduce((prev, val) => prev + val, 0)} total guilds`))\n   *   .catch(console.error);\n   */\n  fetchClientValues(prop, shard) {\n    return this._performOnShards('fetchClientValue', [prop], shard);\n  }\n\n  /**\n   * Runs a method with given arguments on all shards, or a given shard.\n   * @param {string} method Method name to run on each shard\n   * @param {Array<*>} args Arguments to pass through to the method call\n   * @param {number} [shard] Shard to run on, all if undefined\n   * @returns {Promise<*|Array<*>>} Results of the method execution\n   * @private\n   */\n  _performOnShards(method, args, shard) {\n    if (this.shards.size === 0) return Promise.reject(new Error('SHARDING_NO_SHARDS'));\n\n    if (typeof shard === 'number') {\n      if (this.shards.has(shard)) return this.shards.get(shard)[method](...args);\n      return Promise.reject(new Error('SHARDING_SHARD_NOT_FOUND', shard));\n    }\n\n    if (this.shards.size !== this.shardList.length) return Promise.reject(new Error('SHARDING_IN_PROCESS'));\n\n    const promises = [];\n    for (const sh of this.shards.values()) promises.push(sh[method](...args));\n    return Promise.all(promises);\n  }\n\n  /**\n   * Options used to respawn all shards.\n   * @typedef {Object} MultipleShardRespawnOptions\n   * @property {number} [shardDelay=5000] How long to wait between shards (in milliseconds)\n   * @property {number} [respawnDelay=500] How long to wait between killing a shard's process and restarting it\n   * (in milliseconds)\n   * @property {number} [timeout=30000] The amount in milliseconds to wait for a shard to become ready before\n   * continuing to another (`-1` or `Infinity` for no wait)\n   */\n\n  /**\n   * Kills all running shards and respawns them.\n   * @param {MultipleShardRespawnOptions} [options] Options for respawning shards\n   * @returns {Promise<Collection<number, Shard>>}\n   */\n  async respawnAll({ shardDelay = 5_000, respawnDelay = 500, timeout = 30_000 } = {}) {\n    let s = 0;\n    for (const shard of this.shards.values()) {\n      const promises = [shard.respawn({ delay: respawnDelay, timeout })];\n      if (++s < this.shards.size && shardDelay > 0) promises.push(sleep(shardDelay));\n      await Promise.all(promises); // eslint-disable-line no-await-in-loop\n    }\n    return this.shards;\n  }\n}\n\nmodule.exports = ShardingManager;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/sharding/ShardingManager.js?")},"./node_modules/@citizenfx/discord.js/src/structures/AnonymousGuild.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/AnonymousGuild.js ***!
  \*****************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst BaseGuild = __webpack_require__(/*! ./BaseGuild */ \"./node_modules/@citizenfx/discord.js/src/structures/BaseGuild.js\");\nconst { VerificationLevels, NSFWLevels } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\n\n/**\n * Bundles common attributes and methods between {@link Guild} and {@link InviteGuild}\n * @extends {BaseGuild}\n * @abstract\n */\nclass AnonymousGuild extends BaseGuild {\n  constructor(client, data, immediatePatch = true) {\n    super(client, data);\n    if (immediatePatch) this._patch(data);\n  }\n\n  _patch(data) {\n    if ('features' in data) this.features = data.features;\n\n    if ('splash' in data) {\n      /**\n       * The hash of the guild invite splash image\n       * @type {?string}\n       */\n      this.splash = data.splash;\n    }\n\n    if ('banner' in data) {\n      /**\n       * The hash of the guild banner\n       * @type {?string}\n       */\n      this.banner = data.banner;\n    }\n\n    if ('description' in data) {\n      /**\n       * The description of the guild, if any\n       * @type {?string}\n       */\n      this.description = data.description;\n    }\n\n    if ('verification_level' in data) {\n      /**\n       * The verification level of the guild\n       * @type {VerificationLevel}\n       */\n      this.verificationLevel = VerificationLevels[data.verification_level];\n    }\n\n    if ('vanity_url_code' in data) {\n      /**\n       * The vanity invite code of the guild, if any\n       * @type {?string}\n       */\n      this.vanityURLCode = data.vanity_url_code;\n    }\n\n    if ('nsfw_level' in data) {\n      /**\n       * The NSFW level of this guild\n       * @type {NSFWLevel}\n       */\n      this.nsfwLevel = NSFWLevels[data.nsfw_level];\n    }\n  }\n\n  /**\n   * The URL to this guild's banner.\n   * @param {StaticImageURLOptions} [options={}] Options for the Image URL\n   * @returns {?string}\n   */\n  bannerURL({ format, size } = {}) {\n    return this.banner && this.client.rest.cdn.Banner(this.id, this.banner, format, size);\n  }\n\n  /**\n   * The URL to this guild's invite splash image.\n   * @param {StaticImageURLOptions} [options={}] Options for the Image URL\n   * @returns {?string}\n   */\n  splashURL({ format, size } = {}) {\n    return this.splash && this.client.rest.cdn.Splash(this.id, this.splash, format, size);\n  }\n}\n\nmodule.exports = AnonymousGuild;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/AnonymousGuild.js?")},"./node_modules/@citizenfx/discord.js/src/structures/ApplicationCommand.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/ApplicationCommand.js ***!
  \*********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Base = __webpack_require__(/*! ./Base */ \"./node_modules/@citizenfx/discord.js/src/structures/Base.js\");\nconst ApplicationCommandPermissionsManager = __webpack_require__(/*! ../managers/ApplicationCommandPermissionsManager */ \"./node_modules/@citizenfx/discord.js/src/managers/ApplicationCommandPermissionsManager.js\");\nconst { ApplicationCommandOptionTypes, ApplicationCommandTypes, ChannelTypes } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst SnowflakeUtil = __webpack_require__(/*! ../util/SnowflakeUtil */ \"./node_modules/@citizenfx/discord.js/src/util/SnowflakeUtil.js\");\n\n/**\n * Represents an application command.\n * @extends {Base}\n */\nclass ApplicationCommand extends Base {\n  constructor(client, data, guild, guildId) {\n    super(client);\n\n    /**\n     * The command's id\n     * @type {Snowflake}\n     */\n    this.id = data.id;\n\n    /**\n     * The parent application's id\n     * @type {Snowflake}\n     */\n    this.applicationId = data.application_id;\n\n    /**\n     * The guild this command is part of\n     * @type {?Guild}\n     */\n    this.guild = guild ?? null;\n\n    /**\n     * The guild's id this command is part of, this may be non-null when `guild` is `null` if the command\n     * was fetched from the `ApplicationCommandManager`\n     * @type {?Snowflake}\n     */\n    this.guildId = guild?.id ?? guildId ?? null;\n\n    /**\n     * The manager for permissions of this command on its guild or arbitrary guilds when the command is global\n     * @type {ApplicationCommandPermissionsManager}\n     */\n    this.permissions = new ApplicationCommandPermissionsManager(this);\n\n    /**\n     * The type of this application command\n     * @type {ApplicationCommandType}\n     */\n    this.type = ApplicationCommandTypes[data.type];\n\n    this._patch(data);\n  }\n\n  _patch(data) {\n    if ('name' in data) {\n      /**\n       * The name of this command\n       * @type {string}\n       */\n      this.name = data.name;\n    }\n\n    if ('description' in data) {\n      /**\n       * The description of this command\n       * @type {string}\n       */\n      this.description = data.description;\n    }\n\n    if ('options' in data) {\n      /**\n       * The options of this command\n       * @type {ApplicationCommandOption[]}\n       */\n      this.options = data.options.map(o => this.constructor.transformOption(o, true));\n    } else {\n      this.options ??= [];\n    }\n\n    if ('default_permission' in data) {\n      /**\n       * Whether the command is enabled by default when the app is added to a guild\n       * @type {boolean}\n       */\n      this.defaultPermission = data.default_permission;\n    }\n\n    if ('version' in data) {\n      /**\n       * Autoincrementing version identifier updated during substantial record changes\n       * @type {Snowflake}\n       */\n      this.version = data.version;\n    }\n  }\n\n  /**\n   * The timestamp the command was created at\n   * @type {number}\n   * @readonly\n   */\n  get createdTimestamp() {\n    return SnowflakeUtil.timestampFrom(this.id);\n  }\n\n  /**\n   * The time the command was created at\n   * @type {Date}\n   * @readonly\n   */\n  get createdAt() {\n    return new Date(this.createdTimestamp);\n  }\n\n  /**\n   * The manager that this command belongs to\n   * @type {ApplicationCommandManager}\n   * @readonly\n   */\n  get manager() {\n    return (this.guild ?? this.client.application).commands;\n  }\n\n  /**\n   * Data for creating or editing an application command.\n   * @typedef {Object} ApplicationCommandData\n   * @property {string} name The name of the command\n   * @property {string} description The description of the command\n   * @property {ApplicationCommandType} [type] The type of the command\n   * @property {ApplicationCommandOptionData[]} [options] Options for the command\n   * @property {boolean} [defaultPermission] Whether the command is enabled by default when the app is added to a guild\n   */\n\n  /**\n   * An option for an application command or subcommand.\n   * <info>In addition to the listed properties, when used as a parameter,\n   * API style `snake_case` properties can be used for compatibility with generators like `@discordjs/builders`.</info>\n   * <warn>Note that providing a value for the `camelCase` counterpart for any `snake_case` property\n   * will discard the provided `snake_case` property.</warn>\n   * @typedef {Object} ApplicationCommandOptionData\n   * @property {ApplicationCommandOptionType|number} type The type of the option\n   * @property {string} name The name of the option\n   * @property {string} description The description of the option\n   * @property {boolean} [autocomplete] Whether the option is an autocomplete option\n   * @property {boolean} [required] Whether the option is required\n   * @property {ApplicationCommandOptionChoice[]} [choices] The choices of the option for the user to pick from\n   * @property {ApplicationCommandOptionData[]} [options] Additional options if this option is a subcommand (group)\n   * @property {ChannelType[]|number[]} [channelTypes] When the option type is channel,\n   * the allowed types of channels that can be selected\n   * @property {number} [minValue] The minimum value for an `INTEGER` or `NUMBER` option\n   * @property {number} [maxValue] The maximum value for an `INTEGER` or `NUMBER` option\n   */\n\n  /**\n   * Edits this application command.\n   * @param {ApplicationCommandData} data The data to update the command with\n   * @returns {Promise<ApplicationCommand>}\n   * @example\n   * // Edit the description of this command\n   * command.edit({\n   *   description: 'New description',\n   * })\n   *   .then(console.log)\n   *   .catch(console.error);\n   */\n  edit(data) {\n    return this.manager.edit(this, data, this.guildId);\n  }\n\n  /**\n   * Edits the name of this ApplicationCommand\n   * @param {string} name The new name of the command\n   * @returns {Promise<ApplicationCommand>}\n   */\n  setName(name) {\n    return this.edit({ name });\n  }\n\n  /**\n   * Edits the description of this ApplicationCommand\n   * @param {string} description The new description of the command\n   * @returns {Promise<ApplicationCommand>}\n   */\n  setDescription(description) {\n    return this.edit({ description });\n  }\n\n  /**\n   * Edits the default permission of this ApplicationCommand\n   * @param {boolean} [defaultPermission=true] The default permission for this command\n   * @returns {Promise<ApplicationCommand>}\n   */\n  setDefaultPermission(defaultPermission = true) {\n    return this.edit({ defaultPermission });\n  }\n\n  /**\n   * Edits the options of this ApplicationCommand\n   * @param {ApplicationCommandOptionData[]} options The options to set for this command\n   * @returns {Promise<ApplicationCommand>}\n   */\n  setOptions(options) {\n    return this.edit({ options });\n  }\n\n  /**\n   * Deletes this command.\n   * @returns {Promise<ApplicationCommand>}\n   * @example\n   * // Delete this command\n   * command.delete()\n   *   .then(console.log)\n   *   .catch(console.error);\n   */\n  delete() {\n    return this.manager.delete(this, this.guildId);\n  }\n\n  /**\n   * Whether this command equals another command. It compares all properties, so for most operations\n   * it is advisable to just compare `command.id === command2.id` as it is much faster and is often\n   * what most users need.\n   * @param {ApplicationCommand|ApplicationCommandData|APIApplicationCommand} command The command to compare with\n   * @param {boolean} [enforceOptionOrder=false] Whether to strictly check that options and choices are in the same\n   * order in the array <info>The client may not always respect this ordering!</info>\n   * @returns {boolean}\n   */\n  equals(command, enforceOptionOrder = false) {\n    // If given an id, check if the id matches\n    if (command.id && this.id !== command.id) return false;\n\n    // Check top level parameters\n    const commandType = typeof command.type === 'string' ? command.type : ApplicationCommandTypes[command.type];\n    if (\n      command.name !== this.name ||\n      ('description' in command && command.description !== this.description) ||\n      ('version' in command && command.version !== this.version) ||\n      ('autocomplete' in command && command.autocomplete !== this.autocomplete) ||\n      (commandType && commandType !== this.type) ||\n      // Future proof for options being nullable\n      // TODO: remove ?? 0 on each when nullable\n      (command.options?.length ?? 0) !== (this.options?.length ?? 0) ||\n      (command.defaultPermission ?? command.default_permission ?? true) !== this.defaultPermission\n    ) {\n      return false;\n    }\n\n    if (command.options) {\n      return this.constructor.optionsEqual(this.options, command.options, enforceOptionOrder);\n    }\n    return true;\n  }\n\n  /**\n   * Recursively checks that all options for an {@link ApplicationCommand} are equal to the provided options.\n   * In most cases it is better to compare using {@link ApplicationCommand#equals}\n   * @param {ApplicationCommandOptionData[]} existing The options on the existing command,\n   * should be {@link ApplicationCommand#options}\n   * @param {ApplicationCommandOptionData[]|APIApplicationCommandOption[]} options The options to compare against\n   * @param {boolean} [enforceOptionOrder=false] Whether to strictly check that options and choices are in the same\n   * order in the array <info>The client may not always respect this ordering!</info>\n   * @returns {boolean}\n   */\n  static optionsEqual(existing, options, enforceOptionOrder = false) {\n    if (existing.length !== options.length) return false;\n    if (enforceOptionOrder) {\n      return existing.every((option, index) => this._optionEquals(option, options[index], enforceOptionOrder));\n    }\n    const newOptions = new Map(options.map(option => [option.name, option]));\n    for (const option of existing) {\n      const foundOption = newOptions.get(option.name);\n      if (!foundOption || !this._optionEquals(option, foundOption)) return false;\n    }\n    return true;\n  }\n\n  /**\n   * Checks that an option for an {@link ApplicationCommand} is equal to the provided option\n   * In most cases it is better to compare using {@link ApplicationCommand#equals}\n   * @param {ApplicationCommandOptionData} existing The option on the existing command,\n   * should be from {@link ApplicationCommand#options}\n   * @param {ApplicationCommandOptionData|APIApplicationCommandOption} option The option to compare against\n   * @param {boolean} [enforceOptionOrder=false] Whether to strictly check that options or choices are in the same\n   * order in their array <info>The client may not always respect this ordering!</info>\n   * @returns {boolean}\n   * @private\n   */\n  static _optionEquals(existing, option, enforceOptionOrder = false) {\n    const optionType = typeof option.type === 'string' ? option.type : ApplicationCommandOptionTypes[option.type];\n    if (\n      option.name !== existing.name ||\n      optionType !== existing.type ||\n      option.description !== existing.description ||\n      option.autocomplete !== existing.autocomplete ||\n      (option.required ?? (['SUB_COMMAND', 'SUB_COMMAND_GROUP'].includes(optionType) ? undefined : false)) !==\n        existing.required ||\n      option.choices?.length !== existing.choices?.length ||\n      option.options?.length !== existing.options?.length ||\n      (option.channelTypes ?? option.channel_types)?.length !== existing.channelTypes?.length ||\n      (option.minValue ?? option.min_value) !== existing.minValue ||\n      (option.maxValue ?? option.max_value) !== existing.maxValue\n    ) {\n      return false;\n    }\n\n    if (existing.choices) {\n      if (\n        enforceOptionOrder &&\n        !existing.choices.every(\n          (choice, index) => choice.name === option.choices[index].name && choice.value === option.choices[index].value,\n        )\n      ) {\n        return false;\n      }\n      if (!enforceOptionOrder) {\n        const newChoices = new Map(option.choices.map(choice => [choice.name, choice]));\n        for (const choice of existing.choices) {\n          const foundChoice = newChoices.get(choice.name);\n          if (!foundChoice || foundChoice.value !== choice.value) return false;\n        }\n      }\n    }\n\n    if (existing.channelTypes) {\n      const newTypes = (option.channelTypes ?? option.channel_types).map(type =>\n        typeof type === 'number' ? ChannelTypes[type] : type,\n      );\n      for (const type of existing.channelTypes) {\n        if (!newTypes.includes(type)) return false;\n      }\n    }\n\n    if (existing.options) {\n      return this.optionsEqual(existing.options, option.options, enforceOptionOrder);\n    }\n    return true;\n  }\n\n  /**\n   * An option for an application command or subcommand.\n   * @typedef {Object} ApplicationCommandOption\n   * @property {ApplicationCommandOptionType} type The type of the option\n   * @property {string} name The name of the option\n   * @property {string} description The description of the option\n   * @property {boolean} [required] Whether the option is required\n   * @property {boolean} [autocomplete] Whether the option is an autocomplete option\n   * @property {ApplicationCommandOptionChoice[]} [choices] The choices of the option for the user to pick from\n   * @property {ApplicationCommandOption[]} [options] Additional options if this option is a subcommand (group)\n   * @property {ChannelType[]} [channelTypes] When the option type is channel,\n   * the allowed types of channels that can be selected\n   * @property {number} [minValue] The minimum value for an `INTEGER` or `NUMBER` option\n   * @property {number} [maxValue] The maximum value for an `INTEGER` or `NUMBER` option\n   */\n\n  /**\n   * A choice for an application command option.\n   * @typedef {Object} ApplicationCommandOptionChoice\n   * @property {string} name The name of the choice\n   * @property {string|number} value The value of the choice\n   */\n\n  /**\n   * Transforms an {@link ApplicationCommandOptionData} object into something that can be used with the API.\n   * @param {ApplicationCommandOptionData} option The option to transform\n   * @param {boolean} [received] Whether this option has been received from Discord\n   * @returns {APIApplicationCommandOption}\n   * @private\n   */\n  static transformOption(option, received) {\n    const stringType = typeof option.type === 'string' ? option.type : ApplicationCommandOptionTypes[option.type];\n    const channelTypesKey = received ? 'channelTypes' : 'channel_types';\n    const minValueKey = received ? 'minValue' : 'min_value';\n    const maxValueKey = received ? 'maxValue' : 'max_value';\n    return {\n      type: typeof option.type === 'number' && !received ? option.type : ApplicationCommandOptionTypes[option.type],\n      name: option.name,\n      description: option.description,\n      required:\n        option.required ?? (stringType === 'SUB_COMMAND' || stringType === 'SUB_COMMAND_GROUP' ? undefined : false),\n      autocomplete: option.autocomplete,\n      choices: option.choices,\n      options: option.options?.map(o => this.transformOption(o, received)),\n      [channelTypesKey]: received\n        ? option.channel_types?.map(type => ChannelTypes[type])\n        : option.channelTypes?.map(type => (typeof type === 'string' ? ChannelTypes[type] : type)) ??\n          // When transforming to API data, accept API data\n          option.channel_types,\n      [minValueKey]: option.minValue ?? option.min_value,\n      [maxValueKey]: option.maxValue ?? option.max_value,\n    };\n  }\n}\n\nmodule.exports = ApplicationCommand;\n\n/* eslint-disable max-len */\n/**\n * @external APIApplicationCommand\n * @see {@link https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-structure}\n */\n\n/**\n * @external APIApplicationCommandOption\n * @see {@link https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-option-structure}\n */\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/ApplicationCommand.js?")},"./node_modules/@citizenfx/discord.js/src/structures/AutocompleteInteraction.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/AutocompleteInteraction.js ***!
  \**************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst CommandInteractionOptionResolver = __webpack_require__(/*! ./CommandInteractionOptionResolver */ \"./node_modules/@citizenfx/discord.js/src/structures/CommandInteractionOptionResolver.js\");\nconst Interaction = __webpack_require__(/*! ./Interaction */ \"./node_modules/@citizenfx/discord.js/src/structures/Interaction.js\");\nconst { InteractionResponseTypes, ApplicationCommandOptionTypes } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\n\n/**\n * Represents an autocomplete interaction.\n * @extends {Interaction}\n */\nclass AutocompleteInteraction extends Interaction {\n  constructor(client, data) {\n    super(client, data);\n\n    /**\n     * The id of the channel this interaction was sent in\n     * @type {Snowflake}\n     * @name AutocompleteInteraction#channelId\n     */\n\n    /**\n     * The invoked application command's id\n     * @type {Snowflake}\n     */\n    this.commandId = data.data.id;\n\n    /**\n     * The invoked application command's name\n     * @type {string}\n     */\n    this.commandName = data.data.name;\n\n    /**\n     * Whether this interaction has already received a response\n     * @type {boolean}\n     */\n    this.responded = false;\n\n    /**\n     * The options passed to the command\n     * @type {CommandInteractionOptionResolver}\n     */\n    this.options = new CommandInteractionOptionResolver(\n      this.client,\n      data.data.options?.map(option => this.transformOption(option, data.data.resolved)) ?? [],\n    );\n  }\n\n  /**\n   * The invoked application command, if it was fetched before\n   * @type {?ApplicationCommand}\n   */\n  get command() {\n    const id = this.commandId;\n    return this.guild?.commands.cache.get(id) ?? this.client.application.commands.cache.get(id) ?? null;\n  }\n\n  /**\n   * Transforms an option received from the API.\n   * @param {APIApplicationCommandOption} option The received option\n   * @returns {CommandInteractionOption}\n   * @private\n   */\n  transformOption(option) {\n    const result = {\n      name: option.name,\n      type: ApplicationCommandOptionTypes[option.type],\n    };\n\n    if ('value' in option) result.value = option.value;\n    if ('options' in option) result.options = option.options.map(opt => this.transformOption(opt));\n    if ('focused' in option) result.focused = option.focused;\n\n    return result;\n  }\n\n  /**\n   * Sends results for the autocomplete of this interaction.\n   * @param {ApplicationCommandOptionChoice[]} options The options for the autocomplete\n   * @returns {Promise<void>}\n   * @example\n   * // respond to autocomplete interaction\n   * interaction.respond([\n   *  {\n   *    name: 'Option 1',\n   *    value: 'option1',\n   *  },\n   * ])\n   *  .then(console.log)\n   *  .catch(console.error);\n   */\n  async respond(options) {\n    if (this.responded) throw new Error('INTERACTION_ALREADY_REPLIED');\n\n    await this.client.api.interactions(this.id, this.token).callback.post({\n      data: {\n        type: InteractionResponseTypes.APPLICATION_COMMAND_AUTOCOMPLETE_RESULT,\n        data: {\n          choices: options,\n        },\n      },\n      auth: false,\n    });\n    this.responded = true;\n  }\n}\n\nmodule.exports = AutocompleteInteraction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/AutocompleteInteraction.js?")},"./node_modules/@citizenfx/discord.js/src/structures/Base.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/Base.js ***!
  \*******************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Util = __webpack_require__(/*! ../util/Util */ \"./node_modules/@citizenfx/discord.js/src/util/Util.js\");\n\n/**\n * Represents a data model that is identifiable by a Snowflake (i.e. Discord API data models).\n * @abstract\n */\nclass Base {\n  constructor(client) {\n    /**\n     * The client that instantiated this\n     * @name Base#client\n     * @type {Client}\n     * @readonly\n     */\n    Object.defineProperty(this, 'client', { value: client });\n  }\n\n  _clone() {\n    return Object.assign(Object.create(this), this);\n  }\n\n  _patch(data) {\n    return data;\n  }\n\n  _update(data) {\n    const clone = this._clone();\n    this._patch(data);\n    return clone;\n  }\n\n  toJSON(...props) {\n    return Util.flatten(this, ...props);\n  }\n\n  valueOf() {\n    return this.id;\n  }\n}\n\nmodule.exports = Base;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/Base.js?")},"./node_modules/@citizenfx/discord.js/src/structures/BaseCommandInteraction.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/BaseCommandInteraction.js ***!
  \*************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst Interaction = __webpack_require__(/*! ./Interaction */ \"./node_modules/@citizenfx/discord.js/src/structures/Interaction.js\");\nconst InteractionWebhook = __webpack_require__(/*! ./InteractionWebhook */ \"./node_modules/@citizenfx/discord.js/src/structures/InteractionWebhook.js\");\nconst InteractionResponses = __webpack_require__(/*! ./interfaces/InteractionResponses */ \"./node_modules/@citizenfx/discord.js/src/structures/interfaces/InteractionResponses.js\");\nconst { ApplicationCommandOptionTypes } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\n\n/**\n * Represents a command interaction.\n * @extends {Interaction}\n * @implements {InteractionResponses}\n * @abstract\n */\nclass BaseCommandInteraction extends Interaction {\n  constructor(client, data) {\n    super(client, data);\n\n    /**\n     * The id of the channel this interaction was sent in\n     * @type {Snowflake}\n     * @name BaseCommandInteraction#channelId\n     */\n\n    /**\n     * The invoked application command's id\n     * @type {Snowflake}\n     */\n    this.commandId = data.data.id;\n\n    /**\n     * The invoked application command's name\n     * @type {string}\n     */\n    this.commandName = data.data.name;\n\n    /**\n     * Whether the reply to this interaction has been deferred\n     * @type {boolean}\n     */\n    this.deferred = false;\n\n    /**\n     * Whether this interaction has already been replied to\n     * @type {boolean}\n     */\n    this.replied = false;\n\n    /**\n     * Whether the reply to this interaction is ephemeral\n     * @type {?boolean}\n     */\n    this.ephemeral = null;\n\n    /**\n     * An associated interaction webhook, can be used to further interact with this interaction\n     * @type {InteractionWebhook}\n     */\n    this.webhook = new InteractionWebhook(this.client, this.applicationId, this.token);\n  }\n\n  /**\n   * The invoked application command, if it was fetched before\n   * @type {?ApplicationCommand}\n   */\n  get command() {\n    const id = this.commandId;\n    return this.guild?.commands.cache.get(id) ?? this.client.application.commands.cache.get(id) ?? null;\n  }\n\n  /**\n   * Represents the resolved data of a received command interaction.\n   * @typedef {Object} CommandInteractionResolvedData\n   * @property {Collection<Snowflake, User>} [users] The resolved users\n   * @property {Collection<Snowflake, GuildMember|APIGuildMember>} [members] The resolved guild members\n   * @property {Collection<Snowflake, Role|APIRole>} [roles] The resolved roles\n   * @property {Collection<Snowflake, Channel|APIChannel>} [channels] The resolved channels\n   * @property {Collection<Snowflake, Message|APIMessage>} [messages] The resolved messages\n   */\n\n  /**\n   * Transforms the resolved received from the API.\n   * @param {APIInteractionDataResolved} resolved The received resolved objects\n   * @returns {CommandInteractionResolvedData}\n   * @private\n   */\n  transformResolved({ members, users, channels, roles, messages }) {\n    const result = {};\n\n    if (members) {\n      result.members = new Collection();\n      for (const [id, member] of Object.entries(members)) {\n        const user = users[id];\n        result.members.set(id, this.guild?.members._add({ user, ...member }) ?? member);\n      }\n    }\n\n    if (users) {\n      result.users = new Collection();\n      for (const user of Object.values(users)) {\n        result.users.set(user.id, this.client.users._add(user));\n      }\n    }\n\n    if (roles) {\n      result.roles = new Collection();\n      for (const role of Object.values(roles)) {\n        result.roles.set(role.id, this.guild?.roles._add(role) ?? role);\n      }\n    }\n\n    if (channels) {\n      result.channels = new Collection();\n      for (const channel of Object.values(channels)) {\n        result.channels.set(channel.id, this.client.channels._add(channel, this.guild) ?? channel);\n      }\n    }\n\n    if (messages) {\n      result.messages = new Collection();\n      for (const message of Object.values(messages)) {\n        result.messages.set(message.id, this.channel?.messages?._add(message) ?? message);\n      }\n    }\n\n    return result;\n  }\n\n  /**\n   * Represents an option of a received command interaction.\n   * @typedef {Object} CommandInteractionOption\n   * @property {string} name The name of the option\n   * @property {ApplicationCommandOptionType} type The type of the option\n   * @property {boolean} [autocomplete] Whether the option is an autocomplete option\n   * @property {string|number|boolean} [value] The value of the option\n   * @property {CommandInteractionOption[]} [options] Additional options if this option is a\n   * subcommand (group)\n   * @property {User} [user] The resolved user\n   * @property {GuildMember|APIGuildMember} [member] The resolved member\n   * @property {GuildChannel|ThreadChannel|APIChannel} [channel] The resolved channel\n   * @property {Role|APIRole} [role] The resolved role\n   */\n\n  /**\n   * Transforms an option received from the API.\n   * @param {APIApplicationCommandOption} option The received option\n   * @param {APIInteractionDataResolved} resolved The resolved interaction data\n   * @returns {CommandInteractionOption}\n   * @private\n   */\n  transformOption(option, resolved) {\n    const result = {\n      name: option.name,\n      type: ApplicationCommandOptionTypes[option.type],\n    };\n\n    if ('value' in option) result.value = option.value;\n    if ('options' in option) result.options = option.options.map(opt => this.transformOption(opt, resolved));\n\n    if (resolved) {\n      const user = resolved.users?.[option.value];\n      if (user) result.user = this.client.users._add(user);\n\n      const member = resolved.members?.[option.value];\n      if (member) result.member = this.guild?.members._add({ user, ...member }) ?? member;\n\n      const channel = resolved.channels?.[option.value];\n      if (channel) result.channel = this.client.channels._add(channel, this.guild) ?? channel;\n\n      const role = resolved.roles?.[option.value];\n      if (role) result.role = this.guild?.roles._add(role) ?? role;\n    }\n\n    return result;\n  }\n\n  // These are here only for documentation purposes - they are implemented by InteractionResponses\n  /* eslint-disable no-empty-function */\n  deferReply() {}\n  reply() {}\n  fetchReply() {}\n  editReply() {}\n  deleteReply() {}\n  followUp() {}\n}\n\nInteractionResponses.applyToClass(BaseCommandInteraction, ['deferUpdate', 'update']);\n\nmodule.exports = BaseCommandInteraction;\n\n/* eslint-disable max-len */\n/**\n * @external APIInteractionDataResolved\n * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-resolved-data-structure}\n */\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/BaseCommandInteraction.js?")},"./node_modules/@citizenfx/discord.js/src/structures/BaseGuild.js":
/*!************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/BaseGuild.js ***!
  \************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Base = __webpack_require__(/*! ./Base */ \"./node_modules/@citizenfx/discord.js/src/structures/Base.js\");\nconst SnowflakeUtil = __webpack_require__(/*! ../util/SnowflakeUtil */ \"./node_modules/@citizenfx/discord.js/src/util/SnowflakeUtil.js\");\n\n/**\n * The base class for {@link Guild}, {@link OAuth2Guild} and {@link InviteGuild}.\n * @extends {Base}\n * @abstract\n */\nclass BaseGuild extends Base {\n  constructor(client, data) {\n    super(client);\n\n    /**\n     * The guild's id\n     * @type {Snowflake}\n     */\n    this.id = data.id;\n\n    /**\n     * The name of this guild\n     * @type {string}\n     */\n    this.name = data.name;\n\n    /**\n     * The icon hash of this guild\n     * @type {?string}\n     */\n    this.icon = data.icon;\n\n    /**\n     * An array of features available to this guild\n     * @type {Features[]}\n     */\n    this.features = data.features;\n  }\n\n  /**\n   * The timestamp this guild was created at\n   * @type {number}\n   * @readonly\n   */\n  get createdTimestamp() {\n    return SnowflakeUtil.timestampFrom(this.id);\n  }\n\n  /**\n   * The time this guild was created at\n   * @type {Date}\n   * @readonly\n   */\n  get createdAt() {\n    return new Date(this.createdTimestamp);\n  }\n\n  /**\n   * The acronym that shows up in place of a guild icon\n   * @type {string}\n   * @readonly\n   */\n  get nameAcronym() {\n    return this.name\n      .replace(/'s /g, ' ')\n      .replace(/\\w+/g, e => e[0])\n      .replace(/\\s/g, '');\n  }\n\n  /**\n   * Whether this guild is partnered\n   * @type {boolean}\n   * @readonly\n   */\n  get partnered() {\n    return this.features.includes('PARTNERED');\n  }\n\n  /**\n   * Whether this guild is verified\n   * @type {boolean}\n   * @readonly\n   */\n  get verified() {\n    return this.features.includes('VERIFIED');\n  }\n\n  /**\n   * The URL to this guild's icon.\n   * @param {ImageURLOptions} [options={}] Options for the Image URL\n   * @returns {?string}\n   */\n  iconURL({ format, size, dynamic } = {}) {\n    if (!this.icon) return null;\n    return this.client.rest.cdn.Icon(this.id, this.icon, format, size, dynamic);\n  }\n\n  /**\n   * Fetches this guild.\n   * @returns {Promise<Guild>}\n   */\n  async fetch() {\n    const data = await this.client.api.guilds(this.id).get({ query: { with_counts: true } });\n    return this.client.guilds._add(data);\n  }\n\n  /**\n   * When concatenated with a string, this automatically returns the guild's name instead of the Guild object.\n   * @returns {string}\n   */\n  toString() {\n    return this.name;\n  }\n}\n\nmodule.exports = BaseGuild;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/BaseGuild.js?")},"./node_modules/@citizenfx/discord.js/src/structures/BaseGuildEmoji.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/BaseGuildEmoji.js ***!
  \*****************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Emoji } = __webpack_require__(/*! ./Emoji */ \"./node_modules/@citizenfx/discord.js/src/structures/Emoji.js\");\n\n/**\n * Parent class for {@link GuildEmoji} and {@link GuildPreviewEmoji}.\n * @extends {Emoji}\n * @abstract\n */\nclass BaseGuildEmoji extends Emoji {\n  constructor(client, data, guild) {\n    super(client, data);\n\n    /**\n     * The guild this emoji is a part of\n     * @type {Guild|GuildPreview}\n     */\n    this.guild = guild;\n\n    this.requiresColons = null;\n    this.managed = null;\n    this.available = null;\n\n    this._patch(data);\n  }\n\n  _patch(data) {\n    if ('name' in data) this.name = data.name;\n\n    if ('require_colons' in data) {\n      /**\n       * Whether or not this emoji requires colons surrounding it\n       * @type {?boolean}\n       */\n      this.requiresColons = data.require_colons;\n    }\n\n    if ('managed' in data) {\n      /**\n       * Whether this emoji is managed by an external service\n       * @type {?boolean}\n       */\n      this.managed = data.managed;\n    }\n\n    if ('available' in data) {\n      /**\n       * Whether this emoji is available\n       * @type {?boolean}\n       */\n      this.available = data.available;\n    }\n  }\n}\n\nmodule.exports = BaseGuildEmoji;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/BaseGuildEmoji.js?")},"./node_modules/@citizenfx/discord.js/src/structures/BaseGuildTextChannel.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/BaseGuildTextChannel.js ***!
  \***********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst GuildChannel = __webpack_require__(/*! ./GuildChannel */ \"./node_modules/@citizenfx/discord.js/src/structures/GuildChannel.js\");\nconst Webhook = __webpack_require__(/*! ./Webhook */ \"./node_modules/@citizenfx/discord.js/src/structures/Webhook.js\");\nconst TextBasedChannel = __webpack_require__(/*! ./interfaces/TextBasedChannel */ \"./node_modules/@citizenfx/discord.js/src/structures/interfaces/TextBasedChannel.js\");\nconst MessageManager = __webpack_require__(/*! ../managers/MessageManager */ \"./node_modules/@citizenfx/discord.js/src/managers/MessageManager.js\");\nconst ThreadManager = __webpack_require__(/*! ../managers/ThreadManager */ \"./node_modules/@citizenfx/discord.js/src/managers/ThreadManager.js\");\nconst DataResolver = __webpack_require__(/*! ../util/DataResolver */ \"./node_modules/@citizenfx/discord.js/src/util/DataResolver.js\");\n\n/**\n * Represents a text-based guild channel on Discord.\n * @extends {GuildChannel}\n * @implements {TextBasedChannel}\n */\nclass BaseGuildTextChannel extends GuildChannel {\n  constructor(guild, data, client) {\n    super(guild, data, client, false);\n\n    /**\n     * A manager of the messages sent to this channel\n     * @type {MessageManager}\n     */\n    this.messages = new MessageManager(this);\n\n    /**\n     * A manager of the threads belonging to this channel\n     * @type {ThreadManager}\n     */\n    this.threads = new ThreadManager(this);\n\n    /**\n     * If the guild considers this channel NSFW\n     * @type {boolean}\n     */\n    this.nsfw = Boolean(data.nsfw);\n\n    this._patch(data);\n  }\n\n  _patch(data) {\n    super._patch(data);\n\n    if ('topic' in data) {\n      /**\n       * The topic of the text channel\n       * @type {?string}\n       */\n      this.topic = data.topic;\n    }\n\n    if ('nsfw' in data) {\n      this.nsfw = Boolean(data.nsfw);\n    }\n\n    if ('last_message_id' in data) {\n      /**\n       * The last message id sent in the channel, if one was sent\n       * @type {?Snowflake}\n       */\n      this.lastMessageId = data.last_message_id;\n    }\n\n    if ('last_pin_timestamp' in data) {\n      /**\n       * The timestamp when the last pinned message was pinned, if there was one\n       * @type {?number}\n       */\n      this.lastPinTimestamp = data.last_pin_timestamp ? new Date(data.last_pin_timestamp).getTime() : null;\n    }\n\n    if ('default_auto_archive_duration' in data) {\n      /**\n       * The default auto archive duration for newly created threads in this channel\n       * @type {?ThreadAutoArchiveDuration}\n       */\n      this.defaultAutoArchiveDuration = data.default_auto_archive_duration;\n    }\n\n    if ('messages' in data) {\n      for (const message of data.messages) this.messages._add(message);\n    }\n  }\n\n  /**\n   * Sets the default auto archive duration for all newly created threads in this channel.\n   * @param {ThreadAutoArchiveDuration} defaultAutoArchiveDuration The new default auto archive duration\n   * @param {string} [reason] Reason for changing the channel's default auto archive duration\n   * @returns {Promise<TextChannel>}\n   */\n  setDefaultAutoArchiveDuration(defaultAutoArchiveDuration, reason) {\n    return this.edit({ defaultAutoArchiveDuration }, reason);\n  }\n\n  /**\n   * Sets whether this channel is flagged as NSFW.\n   * @param {boolean} [nsfw=true] Whether the channel should be considered NSFW\n   * @param {string} [reason] Reason for changing the channel's NSFW flag\n   * @returns {Promise<TextChannel>}\n   */\n  setNSFW(nsfw = true, reason) {\n    return this.edit({ nsfw }, reason);\n  }\n\n  /**\n   * Sets the type of this channel (only conversion between text and news is supported)\n   * @param {string} type The new channel type\n   * @param {string} [reason] Reason for changing the channel's type\n   * @returns {Promise<GuildChannel>}\n   */\n  setType(type, reason) {\n    return this.edit({ type }, reason);\n  }\n\n  /**\n   * Fetches all webhooks for the channel.\n   * @returns {Promise<Collection<Snowflake, Webhook>>}\n   * @example\n   * // Fetch webhooks\n   * channel.fetchWebhooks()\n   *   .then(hooks => console.log(`This channel has ${hooks.size} hooks`))\n   *   .catch(console.error);\n   */\n  async fetchWebhooks() {\n    const data = await this.client.api.channels[this.id].webhooks.get();\n    const hooks = new Collection();\n    for (const hook of data) hooks.set(hook.id, new Webhook(this.client, hook));\n    return hooks;\n  }\n\n  /**\n   * Options used to create a {@link Webhook} in a {@link TextChannel} or a {@link NewsChannel}.\n   * @typedef {Object} ChannelWebhookCreateOptions\n   * @property {?(BufferResolvable|Base64Resolvable)} [avatar] Avatar for the webhook\n   * @property {string} [reason] Reason for creating the webhook\n   */\n\n  /**\n   * Creates a webhook for the channel.\n   * @param {string} name The name of the webhook\n   * @param {ChannelWebhookCreateOptions} [options] Options for creating the webhook\n   * @returns {Promise<Webhook>} Returns the created Webhook\n   * @example\n   * // Create a webhook for the current channel\n   * channel.createWebhook('Snek', {\n   *   avatar: 'https://i.imgur.com/mI8XcpG.jpg',\n   *   reason: 'Needed a cool new Webhook'\n   * })\n   *   .then(console.log)\n   *   .catch(console.error)\n   */\n  async createWebhook(name, { avatar, reason } = {}) {\n    if (typeof avatar === 'string' && !avatar.startsWith('data:')) {\n      avatar = await DataResolver.resolveImage(avatar);\n    }\n    const data = await this.client.api.channels[this.id].webhooks.post({\n      data: {\n        name,\n        avatar,\n      },\n      reason,\n    });\n    return new Webhook(this.client, data);\n  }\n\n  /**\n   * Sets a new topic for the guild channel.\n   * @param {?string} topic The new topic for the guild channel\n   * @param {string} [reason] Reason for changing the guild channel's topic\n   * @returns {Promise<GuildChannel>}\n   * @example\n   * // Set a new channel topic\n   * channel.setTopic('needs more rate limiting')\n   *   .then(newChannel => console.log(`Channel's new topic is ${newChannel.topic}`))\n   *   .catch(console.error);\n   */\n  setTopic(topic, reason) {\n    return this.edit({ topic }, reason);\n  }\n\n  /**\n   * Options used to create an invite to a guild channel.\n   * @typedef {Object} CreateInviteOptions\n   * @property {boolean} [temporary=false] Whether members that joined via the invite should be automatically\n   * kicked after 24 hours if they have not yet received a role\n   * @property {number} [maxAge=86400] How long the invite should last (in seconds, 0 for forever)\n   * @property {number} [maxUses=0] Maximum number of uses\n   * @property {boolean} [unique=false] Create a unique invite, or use an existing one with similar settings\n   * @property {UserResolvable} [targetUser] The user whose stream to display for this invite,\n   * required if `targetType` is 1, the user must be streaming in the channel\n   * @property {ApplicationResolvable} [targetApplication] The embedded application to open for this invite,\n   * required if `targetType` is 2, the application must have the `EMBEDDED` flag\n   * @property {TargetType} [targetType] The type of the target for this voice channel invite\n   * @property {string} [reason] The reason for creating the invite\n   */\n\n  /**\n   * Creates an invite to this guild channel.\n   * @param {CreateInviteOptions} [options={}] The options for creating the invite\n   * @returns {Promise<Invite>}\n   * @example\n   * // Create an invite to a channel\n   * channel.createInvite()\n   *   .then(invite => console.log(`Created an invite with a code of ${invite.code}`))\n   *   .catch(console.error);\n   */\n  createInvite(options) {\n    return this.guild.invites.create(this.id, options);\n  }\n\n  /**\n   * Fetches a collection of invites to this guild channel.\n   * Resolves with a collection mapping invites by their codes.\n   * @param {boolean} [cache=true] Whether or not to cache the fetched invites\n   * @returns {Promise<Collection<string, Invite>>}\n   */\n  fetchInvites(cache = true) {\n    return this.guild.invites.fetch({ channelId: this.id, cache });\n  }\n\n  // These are here only for documentation purposes - they are implemented by TextBasedChannel\n  /* eslint-disable no-empty-function */\n  get lastMessage() {}\n  get lastPinAt() {}\n  send() {}\n  sendTyping() {}\n  createMessageCollector() {}\n  awaitMessages() {}\n  createMessageComponentCollector() {}\n  awaitMessageComponent() {}\n  bulkDelete() {}\n}\n\nTextBasedChannel.applyToClass(BaseGuildTextChannel, true);\n\nmodule.exports = BaseGuildTextChannel;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/BaseGuildTextChannel.js?")},"./node_modules/@citizenfx/discord.js/src/structures/BaseGuildVoiceChannel.js":
/*!************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/BaseGuildVoiceChannel.js ***!
  \************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst GuildChannel = __webpack_require__(/*! ./GuildChannel */ \"./node_modules/@citizenfx/discord.js/src/structures/GuildChannel.js\");\nconst Permissions = __webpack_require__(/*! ../util/Permissions */ \"./node_modules/@citizenfx/discord.js/src/util/Permissions.js\");\n\n/**\n * Represents a voice-based guild channel on Discord.\n * @extends {GuildChannel}\n */\nclass BaseGuildVoiceChannel extends GuildChannel {\n  _patch(data) {\n    super._patch(data);\n\n    if ('rtc_region' in data) {\n      /**\n       * The RTC region for this voice-based channel. This region is automatically selected if `null`.\n       * @type {?string}\n       */\n      this.rtcRegion = data.rtc_region;\n    }\n\n    if ('bitrate' in data) {\n      /**\n       * The bitrate of this voice-based channel\n       * @type {number}\n       */\n      this.bitrate = data.bitrate;\n    }\n\n    if ('user_limit' in data) {\n      /**\n       * The maximum amount of users allowed in this channel.\n       * @type {number}\n       */\n      this.userLimit = data.user_limit;\n    }\n  }\n\n  /**\n   * The members in this voice-based channel\n   * @type {Collection<Snowflake, GuildMember>}\n   * @readonly\n   */\n  get members() {\n    const coll = new Collection();\n    for (const state of this.guild.voiceStates.cache.values()) {\n      if (state.channelId === this.id && state.member) {\n        coll.set(state.id, state.member);\n      }\n    }\n    return coll;\n  }\n\n  /**\n   * Checks if the voice-based channel is full\n   * @type {boolean}\n   * @readonly\n   */\n  get full() {\n    return this.userLimit > 0 && this.members.size >= this.userLimit;\n  }\n\n  /**\n   * Whether the channel is joinable by the client user\n   * @type {boolean}\n   * @readonly\n   */\n  get joinable() {\n    if (!this.viewable) return false;\n    const permissions = this.permissionsFor(this.client.user);\n    if (!permissions) return false;\n\n    // This flag allows joining even if timed out\n    if (permissions.has(Permissions.FLAGS.ADMINISTRATOR, false)) return true;\n\n    return (\n      this.guild.me.communicationDisabledUntilTimestamp < Date.now() &&\n      permissions.has(Permissions.FLAGS.CONNECT, false)\n    );\n  }\n\n  /**\n   * Sets the RTC region of the channel.\n   * @param {?string} region The new region of the channel. Set to `null` to remove a specific region for the channel\n   * @returns {Promise<BaseGuildVoiceChannel>}\n   * @example\n   * // Set the RTC region to europe\n   * channel.setRTCRegion('europe');\n   * @example\n   * // Remove a fixed region for this channel - let Discord decide automatically\n   * channel.setRTCRegion(null);\n   */\n  setRTCRegion(region) {\n    return this.edit({ rtcRegion: region });\n  }\n\n  /**\n   * Creates an invite to this guild channel.\n   * @param {CreateInviteOptions} [options={}] The options for creating the invite\n   * @returns {Promise<Invite>}\n   * @example\n   * // Create an invite to a channel\n   * channel.createInvite()\n   *   .then(invite => console.log(`Created an invite with a code of ${invite.code}`))\n   *   .catch(console.error);\n   */\n  createInvite(options) {\n    return this.guild.invites.create(this.id, options);\n  }\n\n  /**\n   * Fetches a collection of invites to this guild channel.\n   * Resolves with a collection mapping invites by their codes.\n   * @param {boolean} [cache=true] Whether or not to cache the fetched invites\n   * @returns {Promise<Collection<string, Invite>>}\n   */\n  fetchInvites(cache = true) {\n    return this.guild.invites.fetch({ channelId: this.id, cache });\n  }\n}\n\nmodule.exports = BaseGuildVoiceChannel;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/BaseGuildVoiceChannel.js?")},"./node_modules/@citizenfx/discord.js/src/structures/BaseMessageComponent.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/BaseMessageComponent.js ***!
  \***********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { TypeError } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst { MessageComponentTypes, Events } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\n\n/**\n * Represents an interactive component of a Message. It should not be necessary to construct this directly.\n * See {@link MessageComponent}\n */\nclass BaseMessageComponent {\n  /**\n   * Options for a BaseMessageComponent\n   * @typedef {Object} BaseMessageComponentOptions\n   * @property {MessageComponentTypeResolvable} type The type of this component\n   */\n\n  /**\n   * Data that can be resolved into options for a MessageComponent. This can be:\n   * * MessageActionRowOptions\n   * * MessageButtonOptions\n   * * MessageSelectMenuOptions\n   * @typedef {MessageActionRowOptions|MessageButtonOptions|MessageSelectMenuOptions} MessageComponentOptions\n   */\n\n  /**\n   * Components that can be sent in a message. These can be:\n   * * MessageActionRow\n   * * MessageButton\n   * * MessageSelectMenu\n   * @typedef {MessageActionRow|MessageButton|MessageSelectMenu} MessageComponent\n   * @see {@link https://discord.com/developers/docs/interactions/message-components#component-object-component-types}\n   */\n\n  /**\n   * Data that can be resolved to a MessageComponentType. This can be:\n   * * MessageComponentType\n   * * string\n   * * number\n   * @typedef {string|number|MessageComponentType} MessageComponentTypeResolvable\n   */\n\n  /**\n   * @param {BaseMessageComponent|BaseMessageComponentOptions} [data={}] The options for this component\n   */\n  constructor(data) {\n    /**\n     * The type of this component\n     * @type {?MessageComponentType}\n     */\n    this.type = 'type' in data ? BaseMessageComponent.resolveType(data.type) : null;\n  }\n\n  /**\n   * Constructs a MessageComponent based on the type of the incoming data\n   * @param {MessageComponentOptions} data Data for a MessageComponent\n   * @param {Client|WebhookClient} [client] Client constructing this component\n   * @returns {?MessageComponent}\n   * @private\n   */\n  static create(data, client) {\n    let component;\n    let type = data.type;\n\n    if (typeof type === 'string') type = MessageComponentTypes[type];\n\n    switch (type) {\n      case MessageComponentTypes.ACTION_ROW: {\n        const MessageActionRow = __webpack_require__(/*! ./MessageActionRow */ \"./node_modules/@citizenfx/discord.js/src/structures/MessageActionRow.js\");\n        component = data instanceof MessageActionRow ? data : new MessageActionRow(data, client);\n        break;\n      }\n      case MessageComponentTypes.BUTTON: {\n        const MessageButton = __webpack_require__(/*! ./MessageButton */ \"./node_modules/@citizenfx/discord.js/src/structures/MessageButton.js\");\n        component = data instanceof MessageButton ? data : new MessageButton(data);\n        break;\n      }\n      case MessageComponentTypes.SELECT_MENU: {\n        const MessageSelectMenu = __webpack_require__(/*! ./MessageSelectMenu */ \"./node_modules/@citizenfx/discord.js/src/structures/MessageSelectMenu.js\");\n        component = data instanceof MessageSelectMenu ? data : new MessageSelectMenu(data);\n        break;\n      }\n      default:\n        if (client) {\n          client.emit(Events.DEBUG, `[BaseMessageComponent] Received component with unknown type: ${data.type}`);\n        } else {\n          throw new TypeError('INVALID_TYPE', 'data.type', 'valid MessageComponentType');\n        }\n    }\n    return component;\n  }\n\n  /**\n   * Resolves the type of a MessageComponent\n   * @param {MessageComponentTypeResolvable} type The type to resolve\n   * @returns {MessageComponentType}\n   * @private\n   */\n  static resolveType(type) {\n    return typeof type === 'string' ? type : MessageComponentTypes[type];\n  }\n}\n\nmodule.exports = BaseMessageComponent;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/BaseMessageComponent.js?")},"./node_modules/@citizenfx/discord.js/src/structures/ButtonInteraction.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/ButtonInteraction.js ***!
  \********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst MessageComponentInteraction = __webpack_require__(/*! ./MessageComponentInteraction */ "./node_modules/@citizenfx/discord.js/src/structures/MessageComponentInteraction.js");\n\n/**\n * Represents a button interaction.\n * @extends {MessageComponentInteraction}\n */\nclass ButtonInteraction extends MessageComponentInteraction {}\n\nmodule.exports = ButtonInteraction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/ButtonInteraction.js?')},"./node_modules/@citizenfx/discord.js/src/structures/CategoryChannel.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/CategoryChannel.js ***!
  \******************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst GuildChannel = __webpack_require__(/*! ./GuildChannel */ \"./node_modules/@citizenfx/discord.js/src/structures/GuildChannel.js\");\n\n/**\n * Represents a guild category channel on Discord.\n * @extends {GuildChannel}\n */\nclass CategoryChannel extends GuildChannel {\n  /**\n   * Channels that are a part of this category\n   * @type {Collection<Snowflake, GuildChannel>}\n   * @readonly\n   */\n  get children() {\n    return this.guild.channels.cache.filter(c => c.parentId === this.id);\n  }\n\n  /**\n   * Sets the category parent of this channel.\n   * <warn>It is not currently possible to set the parent of a CategoryChannel.</warn>\n   * @method setParent\n   * @memberof CategoryChannel\n   * @instance\n   * @param {?CategoryChannelResolvable} channel The channel to set as parent\n   * @param {SetParentOptions} [options={}] The options for setting the parent\n   * @returns {Promise<GuildChannel>}\n   */\n\n  /**\n   * Options for creating a channel using {@link CategoryChannel#createChannel}.\n   * @typedef {Object} CategoryCreateChannelOptions\n   * @property {ChannelType|number} [type='GUILD_TEXT'] The type of the new channel.\n   * @property {string} [topic] The topic for the new channel\n   * @property {boolean} [nsfw] Whether the new channel is NSFW\n   * @property {number} [bitrate] Bitrate of the new channel in bits (only voice)\n   * @property {number} [userLimit] Maximum amount of users allowed in the new channel (only voice)\n   * @property {OverwriteResolvable[]|Collection<Snowflake, OverwriteResolvable>} [permissionOverwrites]\n   * Permission overwrites of the new channel\n   * @property {number} [position] Position of the new channel\n   * @property {number} [rateLimitPerUser] The rate limit per user (slowmode) for the new channel in seconds\n   * @property {string} [rtcRegion] The specific region of the new channel.\n   * @property {string} [reason] Reason for creating the new channel\n   */\n\n  /**\n   * Creates a new channel within this category.\n   * <info>You cannot create a channel of type `GUILD_CATEGORY` inside a CategoryChannel.</info>\n   * @param {string} name The name of the new channel\n   * @param {CategoryCreateChannelOptions} options Options for creating the new channel\n   * @returns {Promise<GuildChannel>}\n   */\n  createChannel(name, options) {\n    return this.guild.channels.create(name, {\n      ...options,\n      parent: this.id,\n    });\n  }\n}\n\nmodule.exports = CategoryChannel;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/CategoryChannel.js?")},"./node_modules/@citizenfx/discord.js/src/structures/Channel.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/Channel.js ***!
  \**********************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n\nconst process = __webpack_require__(/*! node:process */ "node:process");\nconst Base = __webpack_require__(/*! ./Base */ "./node_modules/@citizenfx/discord.js/src/structures/Base.js");\nlet CategoryChannel;\nlet DMChannel;\nlet NewsChannel;\nlet StageChannel;\nlet StoreChannel;\nlet TextChannel;\nlet ThreadChannel;\nlet VoiceChannel;\nconst { ChannelTypes, ThreadChannelTypes, VoiceBasedChannelTypes } = __webpack_require__(/*! ../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\nconst SnowflakeUtil = __webpack_require__(/*! ../util/SnowflakeUtil */ "./node_modules/@citizenfx/discord.js/src/util/SnowflakeUtil.js");\n\n/**\n * @type {WeakSet<Channel>}\n * @private\n * @internal\n */\nconst deletedChannels = new WeakSet();\nlet deprecationEmittedForDeleted = false;\n\n/**\n * Represents any channel on Discord.\n * @extends {Base}\n * @abstract\n */\nclass Channel extends Base {\n  constructor(client, data, immediatePatch = true) {\n    super(client);\n\n    const type = ChannelTypes[data?.type];\n    /**\n     * The type of the channel\n     * @type {ChannelType}\n     */\n    this.type = type ?? \'UNKNOWN\';\n\n    if (data && immediatePatch) this._patch(data);\n  }\n\n  _patch(data) {\n    /**\n     * The channel\'s id\n     * @type {Snowflake}\n     */\n    this.id = data.id;\n  }\n\n  /**\n   * The timestamp the channel was created at\n   * @type {number}\n   * @readonly\n   */\n  get createdTimestamp() {\n    return SnowflakeUtil.timestampFrom(this.id);\n  }\n\n  /**\n   * The time the channel was created at\n   * @type {Date}\n   * @readonly\n   */\n  get createdAt() {\n    return new Date(this.createdTimestamp);\n  }\n\n  /**\n   * Whether or not the structure has been deleted\n   * @type {boolean}\n   * @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091\n   */\n  get deleted() {\n    if (!deprecationEmittedForDeleted) {\n      deprecationEmittedForDeleted = true;\n      process.emitWarning(\n        \'Channel#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.\',\n        \'DeprecationWarning\',\n      );\n    }\n\n    return deletedChannels.has(this);\n  }\n\n  set deleted(value) {\n    if (!deprecationEmittedForDeleted) {\n      deprecationEmittedForDeleted = true;\n      process.emitWarning(\n        \'Channel#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.\',\n        \'DeprecationWarning\',\n      );\n    }\n\n    if (value) deletedChannels.add(this);\n    else deletedChannels.delete(this);\n  }\n\n  /**\n   * Whether this Channel is a partial\n   * <info>This is always false outside of DM channels.</info>\n   * @type {boolean}\n   * @readonly\n   */\n  get partial() {\n    return false;\n  }\n\n  /**\n   * When concatenated with a string, this automatically returns the channel\'s mention instead of the Channel object.\n   * @returns {string}\n   * @example\n   * // Logs: Hello from <#123456789012345678>!\n   * console.log(`Hello from ${channel}!`);\n   */\n  toString() {\n    return `<#${this.id}>`;\n  }\n\n  /**\n   * Deletes this channel.\n   * @returns {Promise<Channel>}\n   * @example\n   * // Delete the channel\n   * channel.delete()\n   *   .then(console.log)\n   *   .catch(console.error);\n   */\n  async delete() {\n    await this.client.api.channels(this.id).delete();\n    return this;\n  }\n\n  /**\n   * Fetches this channel.\n   * @param {boolean} [force=true] Whether to skip the cache check and request the API\n   * @returns {Promise<Channel>}\n   */\n  fetch(force = true) {\n    return this.client.channels.fetch(this.id, { force });\n  }\n\n  /**\n   * Indicates whether this channel is {@link TextBasedChannels text-based}.\n   * @returns {boolean}\n   */\n  isText() {\n    return \'messages\' in this;\n  }\n\n  /**\n   * Indicates whether this channel is {@link BaseGuildVoiceChannel voice-based}.\n   * @returns {boolean}\n   */\n  isVoice() {\n    return VoiceBasedChannelTypes.includes(this.type);\n  }\n\n  /**\n   * Indicates whether this channel is a {@link ThreadChannel}.\n   * @returns {boolean}\n   */\n  isThread() {\n    return ThreadChannelTypes.includes(this.type);\n  }\n\n  static create(client, data, guild, { allowUnknownGuild, fromInteraction } = {}) {\n    CategoryChannel ??= __webpack_require__(/*! ./CategoryChannel */ "./node_modules/@citizenfx/discord.js/src/structures/CategoryChannel.js");\n    DMChannel ??= __webpack_require__(/*! ./DMChannel */ "./node_modules/@citizenfx/discord.js/src/structures/DMChannel.js");\n    NewsChannel ??= __webpack_require__(/*! ./NewsChannel */ "./node_modules/@citizenfx/discord.js/src/structures/NewsChannel.js");\n    StageChannel ??= __webpack_require__(/*! ./StageChannel */ "./node_modules/@citizenfx/discord.js/src/structures/StageChannel.js");\n    StoreChannel ??= __webpack_require__(/*! ./StoreChannel */ "./node_modules/@citizenfx/discord.js/src/structures/StoreChannel.js");\n    TextChannel ??= __webpack_require__(/*! ./TextChannel */ "./node_modules/@citizenfx/discord.js/src/structures/TextChannel.js");\n    ThreadChannel ??= __webpack_require__(/*! ./ThreadChannel */ "./node_modules/@citizenfx/discord.js/src/structures/ThreadChannel.js");\n    VoiceChannel ??= __webpack_require__(/*! ./VoiceChannel */ "./node_modules/@citizenfx/discord.js/src/structures/VoiceChannel.js");\n\n    let channel;\n    if (!data.guild_id && !guild) {\n      if ((data.recipients && data.type !== ChannelTypes.GROUP_DM) || data.type === ChannelTypes.DM) {\n        channel = new DMChannel(client, data);\n      } else if (data.type === ChannelTypes.GROUP_DM) {\n        const PartialGroupDMChannel = __webpack_require__(/*! ./PartialGroupDMChannel */ "./node_modules/@citizenfx/discord.js/src/structures/PartialGroupDMChannel.js");\n        channel = new PartialGroupDMChannel(client, data);\n      }\n    } else {\n      guild ??= client.guilds.cache.get(data.guild_id);\n\n      if (guild || allowUnknownGuild) {\n        switch (data.type) {\n          case ChannelTypes.GUILD_TEXT: {\n            channel = new TextChannel(guild, data, client);\n            break;\n          }\n          case ChannelTypes.GUILD_VOICE: {\n            channel = new VoiceChannel(guild, data, client);\n            break;\n          }\n          case ChannelTypes.GUILD_CATEGORY: {\n            channel = new CategoryChannel(guild, data, client);\n            break;\n          }\n          case ChannelTypes.GUILD_NEWS: {\n            channel = new NewsChannel(guild, data, client);\n            break;\n          }\n          case ChannelTypes.GUILD_STORE: {\n            channel = new StoreChannel(guild, data, client);\n            break;\n          }\n          case ChannelTypes.GUILD_STAGE_VOICE: {\n            channel = new StageChannel(guild, data, client);\n            break;\n          }\n          case ChannelTypes.GUILD_NEWS_THREAD:\n          case ChannelTypes.GUILD_PUBLIC_THREAD:\n          case ChannelTypes.GUILD_PRIVATE_THREAD: {\n            channel = new ThreadChannel(guild, data, client, fromInteraction);\n            if (!allowUnknownGuild) channel.parent?.threads.cache.set(channel.id, channel);\n            break;\n          }\n        }\n        if (channel && !allowUnknownGuild) guild.channels?.cache.set(channel.id, channel);\n      }\n    }\n    return channel;\n  }\n\n  toJSON(...props) {\n    return super.toJSON({ createdTimestamp: true }, ...props);\n  }\n}\n\nexports.Channel = Channel;\nexports.deletedChannels = deletedChannels;\n\n/**\n * @external APIChannel\n * @see {@link https://discord.com/developers/docs/resources/channel#channel-object}\n */\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/Channel.js?')},"./node_modules/@citizenfx/discord.js/src/structures/ClientApplication.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/ClientApplication.js ***!
  \********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Team = __webpack_require__(/*! ./Team */ \"./node_modules/@citizenfx/discord.js/src/structures/Team.js\");\nconst Application = __webpack_require__(/*! ./interfaces/Application */ \"./node_modules/@citizenfx/discord.js/src/structures/interfaces/Application.js\");\nconst ApplicationCommandManager = __webpack_require__(/*! ../managers/ApplicationCommandManager */ \"./node_modules/@citizenfx/discord.js/src/managers/ApplicationCommandManager.js\");\nconst ApplicationFlags = __webpack_require__(/*! ../util/ApplicationFlags */ \"./node_modules/@citizenfx/discord.js/src/util/ApplicationFlags.js\");\n\n/**\n * Represents a Client OAuth2 Application.\n * @extends {Application}\n */\nclass ClientApplication extends Application {\n  constructor(client, data) {\n    super(client, data);\n\n    /**\n     * The application command manager for this application\n     * @type {ApplicationCommandManager}\n     */\n    this.commands = new ApplicationCommandManager(this.client);\n  }\n\n  _patch(data) {\n    super._patch(data);\n\n    if ('flags' in data) {\n      /**\n       * The flags this application has\n       * @type {ApplicationFlags}\n       */\n      this.flags = new ApplicationFlags(data.flags).freeze();\n    }\n\n    if ('cover_image' in data) {\n      /**\n       * The hash of the application's cover image\n       * @type {?string}\n       */\n      this.cover = data.cover_image;\n    } else {\n      this.cover ??= null;\n    }\n\n    if ('rpc_origins' in data) {\n      /**\n       * The application's RPC origins, if enabled\n       * @type {string[]}\n       */\n      this.rpcOrigins = data.rpc_origins;\n    } else {\n      this.rpcOrigins ??= [];\n    }\n\n    if ('bot_require_code_grant' in data) {\n      /**\n       * If this application's bot requires a code grant when using the OAuth2 flow\n       * @type {?boolean}\n       */\n      this.botRequireCodeGrant = data.bot_require_code_grant;\n    } else {\n      this.botRequireCodeGrant ??= null;\n    }\n\n    if ('bot_public' in data) {\n      /**\n       * If this application's bot is public\n       * @type {?boolean}\n       */\n      this.botPublic = data.bot_public;\n    } else {\n      this.botPublic ??= null;\n    }\n\n    /**\n     * The owner of this OAuth application\n     * @type {?(User|Team)}\n     */\n    this.owner = data.team\n      ? new Team(this.client, data.team)\n      : data.owner\n      ? this.client.users._add(data.owner)\n      : this.owner ?? null;\n  }\n\n  /**\n   * Whether this application is partial\n   * @type {boolean}\n   * @readonly\n   */\n  get partial() {\n    return !this.name;\n  }\n\n  /**\n   * Obtains this application from Discord.\n   * @returns {Promise<ClientApplication>}\n   */\n  async fetch() {\n    const app = await this.client.api.oauth2.applications('@me').get();\n    this._patch(app);\n    return this;\n  }\n}\n\nmodule.exports = ClientApplication;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/ClientApplication.js?")},"./node_modules/@citizenfx/discord.js/src/structures/ClientPresence.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/ClientPresence.js ***!
  \*****************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Presence } = __webpack_require__(/*! ./Presence */ \"./node_modules/@citizenfx/discord.js/src/structures/Presence.js\");\nconst { TypeError } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst { ActivityTypes, Opcodes } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\n\n/**\n * Represents the client's presence.\n * @extends {Presence}\n */\nclass ClientPresence extends Presence {\n  constructor(client, data = {}) {\n    super(client, Object.assign(data, { status: data.status ?? 'online', user: { id: null } }));\n  }\n\n  /**\n   * Sets the client's presence\n   * @param {PresenceData} presence The data to set the presence to\n   * @returns {ClientPresence}\n   */\n  set(presence) {\n    const packet = this._parse(presence);\n    this._patch(packet);\n    if (typeof presence.shardId === 'undefined') {\n      this.client.ws.broadcast({ op: Opcodes.STATUS_UPDATE, d: packet });\n    } else if (Array.isArray(presence.shardId)) {\n      for (const shardId of presence.shardId) {\n        this.client.ws.shards.get(shardId).send({ op: Opcodes.STATUS_UPDATE, d: packet });\n      }\n    } else {\n      this.client.ws.shards.get(presence.shardId).send({ op: Opcodes.STATUS_UPDATE, d: packet });\n    }\n    return this;\n  }\n\n  /**\n   * Parses presence data into a packet ready to be sent to Discord\n   * @param {PresenceData} presence The data to parse\n   * @returns {APIPresence}\n   * @private\n   */\n  _parse({ status, since, afk, activities }) {\n    const data = {\n      activities: [],\n      afk: typeof afk === 'boolean' ? afk : false,\n      since: typeof since === 'number' && !Number.isNaN(since) ? since : null,\n      status: status ?? this.status,\n    };\n    if (activities?.length) {\n      for (const [i, activity] of activities.entries()) {\n        if (typeof activity.name !== 'string') throw new TypeError('INVALID_TYPE', `activities[${i}].name`, 'string');\n        activity.type ??= 0;\n\n        data.activities.push({\n          type: typeof activity.type === 'number' ? activity.type : ActivityTypes[activity.type],\n          name: activity.name,\n          url: activity.url,\n        });\n      }\n    } else if (!activities && (status || afk || since) && this.activities.length) {\n      data.activities.push(\n        ...this.activities.map(a => ({\n          name: a.name,\n          type: ActivityTypes[a.type],\n          url: a.url ?? undefined,\n        })),\n      );\n    }\n\n    return data;\n  }\n}\n\nmodule.exports = ClientPresence;\n\n/* eslint-disable max-len */\n/**\n * @external APIPresence\n * @see {@link https://discord.com/developers/docs/rich-presence/how-to#updating-presence-update-presence-payload-fields}\n */\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/ClientPresence.js?")},"./node_modules/@citizenfx/discord.js/src/structures/ClientUser.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/ClientUser.js ***!
  \*************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst User = __webpack_require__(/*! ./User */ \"./node_modules/@citizenfx/discord.js/src/structures/User.js\");\nconst DataResolver = __webpack_require__(/*! ../util/DataResolver */ \"./node_modules/@citizenfx/discord.js/src/util/DataResolver.js\");\n\n/**\n * Represents the logged in client's Discord user.\n * @extends {User}\n */\nclass ClientUser extends User {\n  _patch(data) {\n    super._patch(data);\n\n    if ('verified' in data) {\n      /**\n       * Whether or not this account has been verified\n       * @type {boolean}\n       */\n      this.verified = data.verified;\n    }\n\n    if ('mfa_enabled' in data) {\n      /**\n       * If the bot's {@link ClientApplication#owner Owner} has MFA enabled on their account\n       * @type {?boolean}\n       */\n      this.mfaEnabled = typeof data.mfa_enabled === 'boolean' ? data.mfa_enabled : null;\n    } else {\n      this.mfaEnabled ??= null;\n    }\n\n    if ('token' in data) this.client.token = data.token;\n  }\n\n  /**\n   * Represents the client user's presence\n   * @type {ClientPresence}\n   * @readonly\n   */\n  get presence() {\n    return this.client.presence;\n  }\n\n  /**\n   * Data used to edit the logged in client\n   * @typedef {Object} ClientUserEditData\n   * @property {string} [username] The new username\n   * @property {?(BufferResolvable|Base64Resolvable)} [avatar] The new avatar\n   */\n\n  /**\n   * Edits the logged in client.\n   * @param {ClientUserEditData} data The new data\n   * @returns {Promise<ClientUser>}\n   */\n  async edit(data) {\n    if (typeof data.avatar !== 'undefined') data.avatar = await DataResolver.resolveImage(data.avatar);\n    const newData = await this.client.api.users('@me').patch({ data });\n    this.client.token = newData.token;\n    const { updated } = this.client.actions.UserUpdate.handle(newData);\n    return updated ?? this;\n  }\n\n  /**\n   * Sets the username of the logged in client.\n   * <info>Changing usernames in Discord is heavily rate limited, with only 2 requests\n   * every hour. Use this sparingly!</info>\n   * @param {string} username The new username\n   * @returns {Promise<ClientUser>}\n   * @example\n   * // Set username\n   * client.user.setUsername('discordjs')\n   *   .then(user => console.log(`My new username is ${user.username}`))\n   *   .catch(console.error);\n   */\n  setUsername(username) {\n    return this.edit({ username });\n  }\n\n  /**\n   * Sets the avatar of the logged in client.\n   * @param {?(BufferResolvable|Base64Resolvable)} avatar The new avatar\n   * @returns {Promise<ClientUser>}\n   * @example\n   * // Set avatar\n   * client.user.setAvatar('./avatar.png')\n   *   .then(user => console.log(`New avatar set!`))\n   *   .catch(console.error);\n   */\n  setAvatar(avatar) {\n    return this.edit({ avatar });\n  }\n\n  /**\n   * Options for setting activities\n   * @typedef {Object} ActivitiesOptions\n   * @property {string} [name] Name of the activity\n   * @property {ActivityType|number} [type] Type of the activity\n   * @property {string} [url] Twitch / YouTube stream URL\n   */\n\n  /**\n   * Data resembling a raw Discord presence.\n   * @typedef {Object} PresenceData\n   * @property {PresenceStatusData} [status] Status of the user\n   * @property {boolean} [afk] Whether the user is AFK\n   * @property {ActivitiesOptions[]} [activities] Activity the user is playing\n   * @property {number|number[]} [shardId] Shard id(s) to have the activity set on\n   */\n\n  /**\n   * Sets the full presence of the client user.\n   * @param {PresenceData} data Data for the presence\n   * @returns {ClientPresence}\n   * @example\n   * // Set the client user's presence\n   * client.user.setPresence({ activities: [{ name: 'with discord.js' }], status: 'idle' });\n   */\n  setPresence(data) {\n    return this.client.presence.set(data);\n  }\n\n  /**\n   * A user's status. Must be one of:\n   * * `online`\n   * * `idle`\n   * * `invisible`\n   * * `dnd` (do not disturb)\n   * @typedef {string} PresenceStatusData\n   */\n\n  /**\n   * Sets the status of the client user.\n   * @param {PresenceStatusData} status Status to change to\n   * @param {number|number[]} [shardId] Shard id(s) to have the activity set on\n   * @returns {ClientPresence}\n   * @example\n   * // Set the client user's status\n   * client.user.setStatus('idle');\n   */\n  setStatus(status, shardId) {\n    return this.setPresence({ status, shardId });\n  }\n\n  /**\n   * Options for setting an activity.\n   * @typedef {Object} ActivityOptions\n   * @property {string} [name] Name of the activity\n   * @property {string} [url] Twitch / YouTube stream URL\n   * @property {ActivityType|number} [type] Type of the activity\n   * @property {number|number[]} [shardId] Shard Id(s) to have the activity set on\n   */\n\n  /**\n   * Sets the activity the client user is playing.\n   * @param {string|ActivityOptions} [name] Activity being played, or options for setting the activity\n   * @param {ActivityOptions} [options] Options for setting the activity\n   * @returns {ClientPresence}\n   * @example\n   * // Set the client user's activity\n   * client.user.setActivity('discord.js', { type: 'WATCHING' });\n   */\n  setActivity(name, options = {}) {\n    if (!name) return this.setPresence({ activities: [], shardId: options.shardId });\n\n    const activity = Object.assign({}, options, typeof name === 'object' ? name : { name });\n    return this.setPresence({ activities: [activity], shardId: activity.shardId });\n  }\n\n  /**\n   * Sets/removes the AFK flag for the client user.\n   * @param {boolean} [afk=true] Whether or not the user is AFK\n   * @param {number|number[]} [shardId] Shard Id(s) to have the AFK flag set on\n   * @returns {ClientPresence}\n   */\n  setAFK(afk = true, shardId) {\n    return this.setPresence({ afk, shardId });\n  }\n}\n\nmodule.exports = ClientUser;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/ClientUser.js?")},"./node_modules/@citizenfx/discord.js/src/structures/CommandInteraction.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/CommandInteraction.js ***!
  \*********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst BaseCommandInteraction = __webpack_require__(/*! ./BaseCommandInteraction */ "./node_modules/@citizenfx/discord.js/src/structures/BaseCommandInteraction.js");\nconst CommandInteractionOptionResolver = __webpack_require__(/*! ./CommandInteractionOptionResolver */ "./node_modules/@citizenfx/discord.js/src/structures/CommandInteractionOptionResolver.js");\n\n/**\n * Represents a command interaction.\n * @extends {BaseCommandInteraction}\n */\nclass CommandInteraction extends BaseCommandInteraction {\n  constructor(client, data) {\n    super(client, data);\n\n    /**\n     * The options passed to the command.\n     * @type {CommandInteractionOptionResolver}\n     */\n    this.options = new CommandInteractionOptionResolver(\n      this.client,\n      data.data.options?.map(option => this.transformOption(option, data.data.resolved)) ?? [],\n      this.transformResolved(data.data.resolved ?? {}),\n    );\n  }\n\n  /**\n   * Returns a string representation of the command interaction.\n   * This can then be copied by a user and executed again in a new command while keeping the option order.\n   * @returns {string}\n   */\n  toString() {\n    const properties = [\n      this.commandName,\n      this.options._group,\n      this.options._subcommand,\n      ...this.options._hoistedOptions.map(o => `${o.name}:${o.value}`),\n    ];\n    return `/${properties.filter(Boolean).join(\' \')}`;\n  }\n}\n\nmodule.exports = CommandInteraction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/CommandInteraction.js?')},"./node_modules/@citizenfx/discord.js/src/structures/CommandInteractionOptionResolver.js":
/*!***********************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/CommandInteractionOptionResolver.js ***!
  \***********************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { TypeError } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\n\n/**\n * A resolver for command interaction options.\n */\nclass CommandInteractionOptionResolver {\n  constructor(client, options, resolved) {\n    /**\n     * The client that instantiated this.\n     * @name CommandInteractionOptionResolver#client\n     * @type {Client}\n     * @readonly\n     */\n    Object.defineProperty(this, 'client', { value: client });\n\n    /**\n     * The name of the subcommand group.\n     * @type {?string}\n     * @private\n     */\n    this._group = null;\n\n    /**\n     * The name of the subcommand.\n     * @type {?string}\n     * @private\n     */\n    this._subcommand = null;\n\n    /**\n     * The bottom-level options for the interaction.\n     * If there is a subcommand (or subcommand and group), this is the options for the subcommand.\n     * @type {CommandInteractionOption[]}\n     * @private\n     */\n    this._hoistedOptions = options;\n\n    // Hoist subcommand group if present\n    if (this._hoistedOptions[0]?.type === 'SUB_COMMAND_GROUP') {\n      this._group = this._hoistedOptions[0].name;\n      this._hoistedOptions = this._hoistedOptions[0].options ?? [];\n    }\n    // Hoist subcommand if present\n    if (this._hoistedOptions[0]?.type === 'SUB_COMMAND') {\n      this._subcommand = this._hoistedOptions[0].name;\n      this._hoistedOptions = this._hoistedOptions[0].options ?? [];\n    }\n\n    /**\n     * The interaction options array.\n     * @name CommandInteractionOptionResolver#data\n     * @type {ReadonlyArray<CommandInteractionOption>}\n     * @readonly\n     */\n    Object.defineProperty(this, 'data', { value: Object.freeze([...options]) });\n\n    /**\n     * The interaction resolved data\n     * @name CommandInteractionOptionResolver#resolved\n     * @type {Readonly<CommandInteractionResolvedData>}\n     */\n    Object.defineProperty(this, 'resolved', { value: Object.freeze(resolved) });\n  }\n\n  /**\n   * Gets an option by its name.\n   * @param {string} name The name of the option.\n   * @param {boolean} [required=false] Whether to throw an error if the option is not found.\n   * @returns {?CommandInteractionOption} The option, if found.\n   */\n  get(name, required = false) {\n    const option = this._hoistedOptions.find(opt => opt.name === name);\n    if (!option) {\n      if (required) {\n        throw new TypeError('COMMAND_INTERACTION_OPTION_NOT_FOUND', name);\n      }\n      return null;\n    }\n    return option;\n  }\n\n  /**\n   * Gets an option by name and property and checks its type.\n   * @param {string} name The name of the option.\n   * @param {ApplicationCommandOptionType} type The type of the option.\n   * @param {string[]} properties The properties to check for for `required`.\n   * @param {boolean} required Whether to throw an error if the option is not found.\n   * @returns {?CommandInteractionOption} The option, if found.\n   * @private\n   */\n  _getTypedOption(name, type, properties, required) {\n    const option = this.get(name, required);\n    if (!option) {\n      return null;\n    } else if (option.type !== type) {\n      throw new TypeError('COMMAND_INTERACTION_OPTION_TYPE', name, option.type, type);\n    } else if (required && properties.every(prop => option[prop] === null || typeof option[prop] === 'undefined')) {\n      throw new TypeError('COMMAND_INTERACTION_OPTION_EMPTY', name, option.type);\n    }\n    return option;\n  }\n\n  /**\n   * Gets the selected subcommand.\n   * @param {boolean} [required=true] Whether to throw an error if there is no subcommand.\n   * @returns {?string} The name of the selected subcommand, or null if not set and not required.\n   */\n  getSubcommand(required = true) {\n    if (required && !this._subcommand) {\n      throw new TypeError('COMMAND_INTERACTION_OPTION_NO_SUB_COMMAND');\n    }\n    return this._subcommand;\n  }\n\n  /**\n   * Gets the selected subcommand group.\n   * @param {boolean} [required=true] Whether to throw an error if there is no subcommand group.\n   * @returns {?string} The name of the selected subcommand group, or null if not set and not required.\n   */\n  getSubcommandGroup(required = true) {\n    if (required && !this._group) {\n      throw new TypeError('COMMAND_INTERACTION_OPTION_NO_SUB_COMMAND_GROUP');\n    }\n    return this._group;\n  }\n\n  /**\n   * Gets a boolean option.\n   * @param {string} name The name of the option.\n   * @param {boolean} [required=false] Whether to throw an error if the option is not found.\n   * @returns {?boolean} The value of the option, or null if not set and not required.\n   */\n  getBoolean(name, required = false) {\n    const option = this._getTypedOption(name, 'BOOLEAN', ['value'], required);\n    return option?.value ?? null;\n  }\n\n  /**\n   * Gets a channel option.\n   * @param {string} name The name of the option.\n   * @param {boolean} [required=false] Whether to throw an error if the option is not found.\n   * @returns {?(GuildChannel|ThreadChannel|APIChannel)}\n   * The value of the option, or null if not set and not required.\n   */\n  getChannel(name, required = false) {\n    const option = this._getTypedOption(name, 'CHANNEL', ['channel'], required);\n    return option?.channel ?? null;\n  }\n\n  /**\n   * Gets a string option.\n   * @param {string} name The name of the option.\n   * @param {boolean} [required=false] Whether to throw an error if the option is not found.\n   * @returns {?string} The value of the option, or null if not set and not required.\n   */\n  getString(name, required = false) {\n    const option = this._getTypedOption(name, 'STRING', ['value'], required);\n    return option?.value ?? null;\n  }\n\n  /**\n   * Gets an integer option.\n   * @param {string} name The name of the option.\n   * @param {boolean} [required=false] Whether to throw an error if the option is not found.\n   * @returns {?number} The value of the option, or null if not set and not required.\n   */\n  getInteger(name, required = false) {\n    const option = this._getTypedOption(name, 'INTEGER', ['value'], required);\n    return option?.value ?? null;\n  }\n\n  /**\n   * Gets a number option.\n   * @param {string} name The name of the option.\n   * @param {boolean} [required=false] Whether to throw an error if the option is not found.\n   * @returns {?number} The value of the option, or null if not set and not required.\n   */\n  getNumber(name, required = false) {\n    const option = this._getTypedOption(name, 'NUMBER', ['value'], required);\n    return option?.value ?? null;\n  }\n\n  /**\n   * Gets a user option.\n   * @param {string} name The name of the option.\n   * @param {boolean} [required=false] Whether to throw an error if the option is not found.\n   * @returns {?User} The value of the option, or null if not set and not required.\n   */\n  getUser(name, required = false) {\n    const option = this._getTypedOption(name, 'USER', ['user'], required);\n    return option?.user ?? null;\n  }\n\n  /**\n   * Gets a member option.\n   * @param {string} name The name of the option.\n   * @param {boolean} [required=false] Whether to throw an error if the option is not found.\n   * @returns {?(GuildMember|APIGuildMember)}\n   * The value of the option, or null if not set and not required.\n   */\n  getMember(name, required = false) {\n    const option = this._getTypedOption(name, 'USER', ['member'], required);\n    return option?.member ?? null;\n  }\n\n  /**\n   * Gets a role option.\n   * @param {string} name The name of the option.\n   * @param {boolean} [required=false] Whether to throw an error if the option is not found.\n   * @returns {?(Role|APIRole)} The value of the option, or null if not set and not required.\n   */\n  getRole(name, required = false) {\n    const option = this._getTypedOption(name, 'ROLE', ['role'], required);\n    return option?.role ?? null;\n  }\n\n  /**\n   * Gets a mentionable option.\n   * @param {string} name The name of the option.\n   * @param {boolean} [required=false] Whether to throw an error if the option is not found.\n   * @returns {?(User|GuildMember|APIGuildMember|Role|APIRole)}\n   * The value of the option, or null if not set and not required.\n   */\n  getMentionable(name, required = false) {\n    const option = this._getTypedOption(name, 'MENTIONABLE', ['user', 'member', 'role'], required);\n    return option?.member ?? option?.user ?? option?.role ?? null;\n  }\n\n  /**\n   * Gets a message option.\n   * @param {string} name The name of the option.\n   * @param {boolean} [required=false] Whether to throw an error if the option is not found.\n   * @returns {?(Message|APIMessage)}\n   * The value of the option, or null if not set and not required.\n   */\n  getMessage(name, required = false) {\n    const option = this._getTypedOption(name, '_MESSAGE', ['message'], required);\n    return option?.message ?? null;\n  }\n\n  /**\n   * Gets the focused option.\n   * @param {boolean} [getFull=false] Whether to get the full option object\n   * @returns {string|number|ApplicationCommandOptionChoice}\n   * The value of the option, or the whole option if getFull is true\n   */\n  getFocused(getFull = false) {\n    const focusedOption = this._hoistedOptions.find(option => option.focused);\n    if (!focusedOption) throw new TypeError('AUTOCOMPLETE_INTERACTION_OPTION_NO_FOCUSED_OPTION');\n    return getFull ? focusedOption : focusedOption.value;\n  }\n}\n\nmodule.exports = CommandInteractionOptionResolver;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/CommandInteractionOptionResolver.js?")},"./node_modules/@citizenfx/discord.js/src/structures/ContextMenuInteraction.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/ContextMenuInteraction.js ***!
  \*************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst BaseCommandInteraction = __webpack_require__(/*! ./BaseCommandInteraction */ \"./node_modules/@citizenfx/discord.js/src/structures/BaseCommandInteraction.js\");\nconst CommandInteractionOptionResolver = __webpack_require__(/*! ./CommandInteractionOptionResolver */ \"./node_modules/@citizenfx/discord.js/src/structures/CommandInteractionOptionResolver.js\");\nconst { ApplicationCommandOptionTypes, ApplicationCommandTypes } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\n\n/**\n * Represents a context menu interaction.\n * @extends {BaseCommandInteraction}\n */\nclass ContextMenuInteraction extends BaseCommandInteraction {\n  constructor(client, data) {\n    super(client, data);\n    /**\n     * The target of the interaction, parsed into options\n     * @type {CommandInteractionOptionResolver}\n     */\n    this.options = new CommandInteractionOptionResolver(\n      this.client,\n      this.resolveContextMenuOptions(data.data),\n      this.transformResolved(data.data.resolved),\n    );\n\n    /**\n     * The id of the target of the interaction\n     * @type {Snowflake}\n     */\n    this.targetId = data.data.target_id;\n\n    /**\n     * The type of the target of the interaction; either USER or MESSAGE\n     * @type {ApplicationCommandType}\n     */\n    this.targetType = ApplicationCommandTypes[data.data.type];\n  }\n\n  /**\n   * Resolves and transforms options received from the API for a context menu interaction.\n   * @param {APIApplicationCommandInteractionData} data The interaction data\n   * @returns {CommandInteractionOption[]}\n   * @private\n   */\n  resolveContextMenuOptions({ target_id, resolved }) {\n    const result = [];\n\n    if (resolved.users?.[target_id]) {\n      result.push(\n        this.transformOption({ name: 'user', type: ApplicationCommandOptionTypes.USER, value: target_id }, resolved),\n      );\n    }\n\n    if (resolved.messages?.[target_id]) {\n      result.push({\n        name: 'message',\n        type: '_MESSAGE',\n        value: target_id,\n        message: this.channel?.messages._add(resolved.messages[target_id]) ?? resolved.messages[target_id],\n      });\n    }\n\n    return result;\n  }\n}\n\nmodule.exports = ContextMenuInteraction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/ContextMenuInteraction.js?")},"./node_modules/@citizenfx/discord.js/src/structures/DMChannel.js":
/*!************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/DMChannel.js ***!
  \************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Channel } = __webpack_require__(/*! ./Channel */ \"./node_modules/@citizenfx/discord.js/src/structures/Channel.js\");\nconst TextBasedChannel = __webpack_require__(/*! ./interfaces/TextBasedChannel */ \"./node_modules/@citizenfx/discord.js/src/structures/interfaces/TextBasedChannel.js\");\nconst MessageManager = __webpack_require__(/*! ../managers/MessageManager */ \"./node_modules/@citizenfx/discord.js/src/managers/MessageManager.js\");\n\n/**\n * Represents a direct message channel between two users.\n * @extends {Channel}\n * @implements {TextBasedChannel}\n */\nclass DMChannel extends Channel {\n  constructor(client, data) {\n    super(client, data);\n\n    // Override the channel type so partials have a known type\n    this.type = 'DM';\n\n    /**\n     * A manager of the messages belonging to this channel\n     * @type {MessageManager}\n     */\n    this.messages = new MessageManager(this);\n  }\n\n  _patch(data) {\n    super._patch(data);\n\n    if (data.recipients) {\n      /**\n       * The recipient on the other end of the DM\n       * @type {User}\n       */\n      this.recipient = this.client.users._add(data.recipients[0]);\n    }\n\n    if ('last_message_id' in data) {\n      /**\n       * The channel's last message id, if one was sent\n       * @type {?Snowflake}\n       */\n      this.lastMessageId = data.last_message_id;\n    }\n\n    if ('last_pin_timestamp' in data) {\n      /**\n       * The timestamp when the last pinned message was pinned, if there was one\n       * @type {?number}\n       */\n      this.lastPinTimestamp = new Date(data.last_pin_timestamp).getTime();\n    } else {\n      this.lastPinTimestamp ??= null;\n    }\n  }\n\n  /**\n   * Whether this DMChannel is a partial\n   * @type {boolean}\n   * @readonly\n   */\n  get partial() {\n    return typeof this.lastMessageId === 'undefined';\n  }\n\n  /**\n   * Fetch this DMChannel.\n   * @param {boolean} [force=true] Whether to skip the cache check and request the API\n   * @returns {Promise<DMChannel>}\n   */\n  fetch(force = true) {\n    return this.recipient.createDM(force);\n  }\n\n  /**\n   * When concatenated with a string, this automatically returns the recipient's mention instead of the\n   * DMChannel object.\n   * @returns {string}\n   * @example\n   * // Logs: Hello from <@123456789012345678>!\n   * console.log(`Hello from ${channel}!`);\n   */\n  toString() {\n    return this.recipient.toString();\n  }\n\n  // These are here only for documentation purposes - they are implemented by TextBasedChannel\n  /* eslint-disable no-empty-function */\n  get lastMessage() {}\n  get lastPinAt() {}\n  send() {}\n  sendTyping() {}\n  createMessageCollector() {}\n  awaitMessages() {}\n  createMessageComponentCollector() {}\n  awaitMessageComponent() {}\n  // Doesn't work on DM channels; bulkDelete() {}\n}\n\nTextBasedChannel.applyToClass(DMChannel, true, ['bulkDelete']);\n\nmodule.exports = DMChannel;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/DMChannel.js?")},"./node_modules/@citizenfx/discord.js/src/structures/Emoji.js":
/*!********************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/Emoji.js ***!
  \********************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nconst process = __webpack_require__(/*! node:process */ \"node:process\");\nconst Base = __webpack_require__(/*! ./Base */ \"./node_modules/@citizenfx/discord.js/src/structures/Base.js\");\nconst SnowflakeUtil = __webpack_require__(/*! ../util/SnowflakeUtil */ \"./node_modules/@citizenfx/discord.js/src/util/SnowflakeUtil.js\");\n\n/**\n * @type {WeakSet<Emoji>}\n * @private\n * @internal\n */\nconst deletedEmojis = new WeakSet();\nlet deprecationEmittedForDeleted = false;\n\n/**\n * Represents raw emoji data from the API\n * @typedef {APIEmoji} RawEmoji\n * @property {?Snowflake} id The emoji's id\n * @property {?string} name The emoji's name\n * @property {?boolean} animated Whether the emoji is animated\n */\n\n/**\n * Represents an emoji, see {@link GuildEmoji} and {@link ReactionEmoji}.\n * @extends {Base}\n */\nclass Emoji extends Base {\n  constructor(client, emoji) {\n    super(client);\n    /**\n     * Whether or not the emoji is animated\n     * @type {?boolean}\n     */\n    this.animated = emoji.animated ?? null;\n\n    /**\n     * The emoji's name\n     * @type {?string}\n     */\n    this.name = emoji.name ?? null;\n\n    /**\n     * The emoji's id\n     * @type {?Snowflake}\n     */\n    this.id = emoji.id;\n  }\n\n  /**\n   * Whether or not the structure has been deleted\n   * @type {boolean}\n   * @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091\n   */\n  get deleted() {\n    if (!deprecationEmittedForDeleted) {\n      deprecationEmittedForDeleted = true;\n      process.emitWarning(\n        'Emoji#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.',\n        'DeprecationWarning',\n      );\n    }\n\n    return deletedEmojis.has(this);\n  }\n\n  set deleted(value) {\n    if (!deprecationEmittedForDeleted) {\n      deprecationEmittedForDeleted = true;\n      process.emitWarning(\n        'Emoji#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.',\n        'DeprecationWarning',\n      );\n    }\n\n    if (value) deletedEmojis.add(this);\n    else deletedEmojis.delete(this);\n  }\n\n  /**\n   * The identifier of this emoji, used for message reactions\n   * @type {string}\n   * @readonly\n   */\n  get identifier() {\n    if (this.id) return `${this.animated ? 'a:' : ''}${this.name}:${this.id}`;\n    return encodeURIComponent(this.name);\n  }\n\n  /**\n   * The URL to the emoji file if it's a custom emoji\n   * @type {?string}\n   * @readonly\n   */\n  get url() {\n    return this.id && this.client.rest.cdn.Emoji(this.id, this.animated ? 'gif' : 'png');\n  }\n\n  /**\n   * The timestamp the emoji was created at, or null if unicode\n   * @type {?number}\n   * @readonly\n   */\n  get createdTimestamp() {\n    return this.id && SnowflakeUtil.timestampFrom(this.id);\n  }\n\n  /**\n   * The time the emoji was created at, or null if unicode\n   * @type {?Date}\n   * @readonly\n   */\n  get createdAt() {\n    return this.id && new Date(this.createdTimestamp);\n  }\n\n  /**\n   * When concatenated with a string, this automatically returns the text required to form a graphical emoji on Discord\n   * instead of the Emoji object.\n   * @returns {string}\n   * @example\n   * // Send a custom emoji from a guild:\n   * const emoji = guild.emojis.cache.first();\n   * msg.channel.send(`Hello! ${emoji}`);\n   * @example\n   * // Send the emoji used in a reaction to the channel the reaction is part of\n   * reaction.message.channel.send(`The emoji used was: ${reaction.emoji}`);\n   */\n  toString() {\n    return this.id ? `<${this.animated ? 'a' : ''}:${this.name}:${this.id}>` : this.name;\n  }\n\n  toJSON() {\n    return super.toJSON({\n      guild: 'guildId',\n      createdTimestamp: true,\n      url: true,\n      identifier: true,\n    });\n  }\n}\n\nexports.Emoji = Emoji;\nexports.deletedEmojis = deletedEmojis;\n\n/**\n * @external APIEmoji\n * @see {@link https://discord.com/developers/docs/resources/emoji#emoji-object}\n */\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/Emoji.js?")},"./node_modules/@citizenfx/discord.js/src/structures/Guild.js":
/*!********************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/Guild.js ***!
  \********************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nconst process = __webpack_require__(/*! node:process */ \"node:process\");\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst AnonymousGuild = __webpack_require__(/*! ./AnonymousGuild */ \"./node_modules/@citizenfx/discord.js/src/structures/AnonymousGuild.js\");\nconst GuildAuditLogs = __webpack_require__(/*! ./GuildAuditLogs */ \"./node_modules/@citizenfx/discord.js/src/structures/GuildAuditLogs.js\");\nconst GuildPreview = __webpack_require__(/*! ./GuildPreview */ \"./node_modules/@citizenfx/discord.js/src/structures/GuildPreview.js\");\nconst GuildTemplate = __webpack_require__(/*! ./GuildTemplate */ \"./node_modules/@citizenfx/discord.js/src/structures/GuildTemplate.js\");\nconst Integration = __webpack_require__(/*! ./Integration */ \"./node_modules/@citizenfx/discord.js/src/structures/Integration.js\");\nconst Webhook = __webpack_require__(/*! ./Webhook */ \"./node_modules/@citizenfx/discord.js/src/structures/Webhook.js\");\nconst WelcomeScreen = __webpack_require__(/*! ./WelcomeScreen */ \"./node_modules/@citizenfx/discord.js/src/structures/WelcomeScreen.js\");\nconst { Error } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst GuildApplicationCommandManager = __webpack_require__(/*! ../managers/GuildApplicationCommandManager */ \"./node_modules/@citizenfx/discord.js/src/managers/GuildApplicationCommandManager.js\");\nconst GuildBanManager = __webpack_require__(/*! ../managers/GuildBanManager */ \"./node_modules/@citizenfx/discord.js/src/managers/GuildBanManager.js\");\nconst GuildChannelManager = __webpack_require__(/*! ../managers/GuildChannelManager */ \"./node_modules/@citizenfx/discord.js/src/managers/GuildChannelManager.js\");\nconst GuildEmojiManager = __webpack_require__(/*! ../managers/GuildEmojiManager */ \"./node_modules/@citizenfx/discord.js/src/managers/GuildEmojiManager.js\");\nconst GuildInviteManager = __webpack_require__(/*! ../managers/GuildInviteManager */ \"./node_modules/@citizenfx/discord.js/src/managers/GuildInviteManager.js\");\nconst GuildMemberManager = __webpack_require__(/*! ../managers/GuildMemberManager */ \"./node_modules/@citizenfx/discord.js/src/managers/GuildMemberManager.js\");\nconst GuildScheduledEventManager = __webpack_require__(/*! ../managers/GuildScheduledEventManager */ \"./node_modules/@citizenfx/discord.js/src/managers/GuildScheduledEventManager.js\");\nconst GuildStickerManager = __webpack_require__(/*! ../managers/GuildStickerManager */ \"./node_modules/@citizenfx/discord.js/src/managers/GuildStickerManager.js\");\nconst PresenceManager = __webpack_require__(/*! ../managers/PresenceManager */ \"./node_modules/@citizenfx/discord.js/src/managers/PresenceManager.js\");\nconst RoleManager = __webpack_require__(/*! ../managers/RoleManager */ \"./node_modules/@citizenfx/discord.js/src/managers/RoleManager.js\");\nconst StageInstanceManager = __webpack_require__(/*! ../managers/StageInstanceManager */ \"./node_modules/@citizenfx/discord.js/src/managers/StageInstanceManager.js\");\nconst VoiceStateManager = __webpack_require__(/*! ../managers/VoiceStateManager */ \"./node_modules/@citizenfx/discord.js/src/managers/VoiceStateManager.js\");\nconst {\n  ChannelTypes,\n  DefaultMessageNotificationLevels,\n  PartialTypes,\n  VerificationLevels,\n  ExplicitContentFilterLevels,\n  Status,\n  MFALevels,\n  PremiumTiers,\n} = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst DataResolver = __webpack_require__(/*! ../util/DataResolver */ \"./node_modules/@citizenfx/discord.js/src/util/DataResolver.js\");\nconst SystemChannelFlags = __webpack_require__(/*! ../util/SystemChannelFlags */ \"./node_modules/@citizenfx/discord.js/src/util/SystemChannelFlags.js\");\nconst Util = __webpack_require__(/*! ../util/Util */ \"./node_modules/@citizenfx/discord.js/src/util/Util.js\");\n\nlet deprecationEmittedForSetChannelPositions = false;\nlet deprecationEmittedForSetRolePositions = false;\nlet deprecationEmittedForDeleted = false;\n\n/**\n * @type {WeakSet<Guild>}\n * @private\n * @internal\n */\nconst deletedGuilds = new WeakSet();\n\n/**\n * Represents a guild (or a server) on Discord.\n * <info>It's recommended to see if a guild is available before performing operations or reading data from it. You can\n * check this with {@link Guild#available}.</info>\n * @extends {AnonymousGuild}\n */\nclass Guild extends AnonymousGuild {\n  constructor(client, data) {\n    super(client, data, false);\n\n    /**\n     * A manager of the application commands belonging to this guild\n     * @type {GuildApplicationCommandManager}\n     */\n    this.commands = new GuildApplicationCommandManager(this);\n\n    /**\n     * A manager of the members belonging to this guild\n     * @type {GuildMemberManager}\n     */\n    this.members = new GuildMemberManager(this);\n\n    /**\n     * A manager of the channels belonging to this guild\n     * @type {GuildChannelManager}\n     */\n    this.channels = new GuildChannelManager(this);\n\n    /**\n     * A manager of the bans belonging to this guild\n     * @type {GuildBanManager}\n     */\n    this.bans = new GuildBanManager(this);\n\n    /**\n     * A manager of the roles belonging to this guild\n     * @type {RoleManager}\n     */\n    this.roles = new RoleManager(this);\n\n    /**\n     * A manager of the presences belonging to this guild\n     * @type {PresenceManager}\n     */\n    this.presences = new PresenceManager(this.client);\n\n    /**\n     * A manager of the voice states of this guild\n     * @type {VoiceStateManager}\n     */\n    this.voiceStates = new VoiceStateManager(this);\n\n    /**\n     * A manager of the stage instances of this guild\n     * @type {StageInstanceManager}\n     */\n    this.stageInstances = new StageInstanceManager(this);\n\n    /**\n     * A manager of the invites of this guild\n     * @type {GuildInviteManager}\n     */\n    this.invites = new GuildInviteManager(this);\n\n    /**\n     * A manager of the scheduled events of this guild\n     * @type {GuildScheduledEventManager}\n     */\n    this.scheduledEvents = new GuildScheduledEventManager(this);\n\n    if (!data) return;\n    if (data.unavailable) {\n      /**\n       * Whether the guild is available to access. If it is not available, it indicates a server outage\n       * @type {boolean}\n       */\n      this.available = false;\n    } else {\n      this._patch(data);\n      if (!data.channels) this.available = false;\n    }\n\n    /**\n     * The id of the shard this Guild belongs to.\n     * @type {number}\n     */\n    this.shardId = data.shardId;\n  }\n\n  /**\n   * Whether or not the structure has been deleted\n   * @type {boolean}\n   * @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091\n   */\n  get deleted() {\n    if (!deprecationEmittedForDeleted) {\n      deprecationEmittedForDeleted = true;\n      process.emitWarning(\n        'Guild#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.',\n        'DeprecationWarning',\n      );\n    }\n\n    return deletedGuilds.has(this);\n  }\n\n  set deleted(value) {\n    if (!deprecationEmittedForDeleted) {\n      deprecationEmittedForDeleted = true;\n      process.emitWarning(\n        'Guild#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.',\n        'DeprecationWarning',\n      );\n    }\n\n    if (value) deletedGuilds.add(this);\n    else deletedGuilds.delete(this);\n  }\n\n  /**\n   * The Shard this Guild belongs to.\n   * @type {WebSocketShard}\n   * @readonly\n   */\n  get shard() {\n    return this.client.ws.shards.get(this.shardId);\n  }\n\n  _patch(data) {\n    super._patch(data);\n    this.id = data.id;\n    if ('name' in data) this.name = data.name;\n    if ('icon' in data) this.icon = data.icon;\n    if ('unavailable' in data) {\n      this.available = !data.unavailable;\n    } else {\n      this.available ??= true;\n    }\n\n    if ('discovery_splash' in data) {\n      /**\n       * The hash of the guild discovery splash image\n       * @type {?string}\n       */\n      this.discoverySplash = data.discovery_splash;\n    }\n\n    if ('member_count' in data) {\n      /**\n       * The full amount of members in this guild\n       * @type {number}\n       */\n      this.memberCount = data.member_count;\n    }\n\n    if ('large' in data) {\n      /**\n       * Whether the guild is \"large\" (has more than {@link WebsocketOptions large_threshold} members, 50 by default)\n       * @type {boolean}\n       */\n      this.large = Boolean(data.large);\n    }\n\n    if ('premium_progress_bar_enabled' in data) {\n      /**\n       * Whether this guild has its premium (boost) progress bar enabled\n       * @type {boolean}\n       */\n      this.premiumProgressBarEnabled = data.premium_progress_bar_enabled;\n    }\n\n    /**\n     * An array of enabled guild features, here are the possible values:\n     * * ANIMATED_ICON\n     * * BANNER\n     * * COMMERCE\n     * * COMMUNITY\n     * * DISCOVERABLE\n     * * FEATURABLE\n     * * INVITE_SPLASH\n     * * MEMBER_VERIFICATION_GATE_ENABLED\n     * * NEWS\n     * * PARTNERED\n     * * PREVIEW_ENABLED\n     * * VANITY_URL\n     * * VERIFIED\n     * * VIP_REGIONS\n     * * WELCOME_SCREEN_ENABLED\n     * * TICKETED_EVENTS_ENABLED\n     * * MONETIZATION_ENABLED\n     * * MORE_STICKERS\n     * * THREE_DAY_THREAD_ARCHIVE\n     * * SEVEN_DAY_THREAD_ARCHIVE\n     * * PRIVATE_THREADS\n     * * ROLE_ICONS\n     * @typedef {string} Features\n     * @see {@link https://discord.com/developers/docs/resources/guild#guild-object-guild-features}\n     */\n\n    if ('application_id' in data) {\n      /**\n       * The id of the application that created this guild (if applicable)\n       * @type {?Snowflake}\n       */\n      this.applicationId = data.application_id;\n    }\n\n    if ('afk_timeout' in data) {\n      /**\n       * The time in seconds before a user is counted as \"away from keyboard\"\n       * @type {?number}\n       */\n      this.afkTimeout = data.afk_timeout;\n    }\n\n    if ('afk_channel_id' in data) {\n      /**\n       * The id of the voice channel where AFK members are moved\n       * @type {?Snowflake}\n       */\n      this.afkChannelId = data.afk_channel_id;\n    }\n\n    if ('system_channel_id' in data) {\n      /**\n       * The system channel's id\n       * @type {?Snowflake}\n       */\n      this.systemChannelId = data.system_channel_id;\n    }\n\n    if ('premium_tier' in data) {\n      /**\n       * The premium tier of this guild\n       * @type {PremiumTier}\n       */\n      this.premiumTier = PremiumTiers[data.premium_tier];\n    }\n\n    if ('premium_subscription_count' in data) {\n      /**\n       * The total number of boosts for this server\n       * @type {?number}\n       */\n      this.premiumSubscriptionCount = data.premium_subscription_count;\n    }\n\n    if ('widget_enabled' in data) {\n      /**\n       * Whether widget images are enabled on this guild\n       * @type {?boolean}\n       */\n      this.widgetEnabled = data.widget_enabled;\n    }\n\n    if ('widget_channel_id' in data) {\n      /**\n       * The widget channel's id, if enabled\n       * @type {?string}\n       */\n      this.widgetChannelId = data.widget_channel_id;\n    }\n\n    if ('explicit_content_filter' in data) {\n      /**\n       * The explicit content filter level of the guild\n       * @type {ExplicitContentFilterLevel}\n       */\n      this.explicitContentFilter = ExplicitContentFilterLevels[data.explicit_content_filter];\n    }\n\n    if ('mfa_level' in data) {\n      /**\n       * The required MFA level for this guild\n       * @type {MFALevel}\n       */\n      this.mfaLevel = MFALevels[data.mfa_level];\n    }\n\n    if ('joined_at' in data) {\n      /**\n       * The timestamp the client user joined the guild at\n       * @type {number}\n       */\n      this.joinedTimestamp = new Date(data.joined_at).getTime();\n    }\n\n    if ('default_message_notifications' in data) {\n      /**\n       * The default message notification level of the guild\n       * @type {DefaultMessageNotificationLevel}\n       */\n      this.defaultMessageNotifications = DefaultMessageNotificationLevels[data.default_message_notifications];\n    }\n\n    if ('system_channel_flags' in data) {\n      /**\n       * The value set for the guild's system channel flags\n       * @type {Readonly<SystemChannelFlags>}\n       */\n      this.systemChannelFlags = new SystemChannelFlags(data.system_channel_flags).freeze();\n    }\n\n    if ('max_members' in data) {\n      /**\n       * The maximum amount of members the guild can have\n       * @type {?number}\n       */\n      this.maximumMembers = data.max_members;\n    } else {\n      this.maximumMembers ??= null;\n    }\n\n    if ('max_presences' in data) {\n      /**\n       * The maximum amount of presences the guild can have\n       * <info>You will need to fetch the guild using {@link Guild#fetch} if you want to receive this parameter</info>\n       * @type {?number}\n       */\n      this.maximumPresences = data.max_presences ?? 25_000;\n    } else {\n      this.maximumPresences ??= null;\n    }\n\n    if ('approximate_member_count' in data) {\n      /**\n       * The approximate amount of members the guild has\n       * <info>You will need to fetch the guild using {@link Guild#fetch} if you want to receive this parameter</info>\n       * @type {?number}\n       */\n      this.approximateMemberCount = data.approximate_member_count;\n    } else {\n      this.approximateMemberCount ??= null;\n    }\n\n    if ('approximate_presence_count' in data) {\n      /**\n       * The approximate amount of presences the guild has\n       * <info>You will need to fetch the guild using {@link Guild#fetch} if you want to receive this parameter</info>\n       * @type {?number}\n       */\n      this.approximatePresenceCount = data.approximate_presence_count;\n    } else {\n      this.approximatePresenceCount ??= null;\n    }\n\n    /**\n     * The use count of the vanity URL code of the guild, if any\n     * <info>You will need to fetch this parameter using {@link Guild#fetchVanityData} if you want to receive it</info>\n     * @type {?number}\n     */\n    this.vanityURLUses ??= null;\n\n    if ('rules_channel_id' in data) {\n      /**\n       * The rules channel's id for the guild\n       * @type {?Snowflake}\n       */\n      this.rulesChannelId = data.rules_channel_id;\n    }\n\n    if ('public_updates_channel_id' in data) {\n      /**\n       * The community updates channel's id for the guild\n       * @type {?Snowflake}\n       */\n      this.publicUpdatesChannelId = data.public_updates_channel_id;\n    }\n\n    if ('preferred_locale' in data) {\n      /**\n       * The preferred locale of the guild, defaults to `en-US`\n       * @type {string}\n       * @see {@link https://discord.com/developers/docs/dispatch/field-values#predefined-field-values-accepted-locales}\n       */\n      this.preferredLocale = data.preferred_locale;\n    }\n\n    if (data.channels) {\n      this.channels.cache.clear();\n      for (const rawChannel of data.channels) {\n        this.client.channels._add(rawChannel, this);\n      }\n    }\n\n    if (data.threads) {\n      for (const rawThread of data.threads) {\n        this.client.channels._add(rawThread, this);\n      }\n    }\n\n    if (data.roles) {\n      this.roles.cache.clear();\n      for (const role of data.roles) this.roles._add(role);\n    }\n\n    if (data.members) {\n      this.members.cache.clear();\n      for (const guildUser of data.members) this.members._add(guildUser);\n    }\n\n    if ('owner_id' in data) {\n      /**\n       * The user id of this guild's owner\n       * @type {Snowflake}\n       */\n      this.ownerId = data.owner_id;\n    }\n\n    if (data.presences) {\n      for (const presence of data.presences) {\n        this.presences._add(Object.assign(presence, { guild: this }));\n      }\n    }\n\n    if (data.stage_instances) {\n      this.stageInstances.cache.clear();\n      for (const stageInstance of data.stage_instances) {\n        this.stageInstances._add(stageInstance);\n      }\n    }\n\n    if (data.guild_scheduled_events) {\n      this.scheduledEvents.cache.clear();\n      for (const scheduledEvent of data.guild_scheduled_events) {\n        this.scheduledEvents._add(scheduledEvent);\n      }\n    }\n\n    if (data.voice_states) {\n      this.voiceStates.cache.clear();\n      for (const voiceState of data.voice_states) {\n        this.voiceStates._add(voiceState);\n      }\n    }\n\n    if (!this.emojis) {\n      /**\n       * A manager of the emojis belonging to this guild\n       * @type {GuildEmojiManager}\n       */\n      this.emojis = new GuildEmojiManager(this);\n      if (data.emojis) for (const emoji of data.emojis) this.emojis._add(emoji);\n    } else if (data.emojis) {\n      this.client.actions.GuildEmojisUpdate.handle({\n        guild_id: this.id,\n        emojis: data.emojis,\n      });\n    }\n\n    if (!this.stickers) {\n      /**\n       * A manager of the stickers belonging to this guild\n       * @type {GuildStickerManager}\n       */\n      this.stickers = new GuildStickerManager(this);\n      if (data.stickers) for (const sticker of data.stickers) this.stickers._add(sticker);\n    } else if (data.stickers) {\n      this.client.actions.GuildStickersUpdate.handle({\n        guild_id: this.id,\n        stickers: data.stickers,\n      });\n    }\n  }\n\n  /**\n   * The time the client user joined the guild\n   * @type {Date}\n   * @readonly\n   */\n  get joinedAt() {\n    return new Date(this.joinedTimestamp);\n  }\n\n  /**\n   * The URL to this guild's discovery splash image.\n   * @param {StaticImageURLOptions} [options={}] Options for the Image URL\n   * @returns {?string}\n   */\n  discoverySplashURL({ format, size } = {}) {\n    return this.discoverySplash && this.client.rest.cdn.DiscoverySplash(this.id, this.discoverySplash, format, size);\n  }\n\n  /**\n   * Fetches the owner of the guild.\n   * If the member object isn't needed, use {@link Guild#ownerId} instead.\n   * @param {BaseFetchOptions} [options] The options for fetching the member\n   * @returns {Promise<GuildMember>}\n   */\n  fetchOwner(options) {\n    return this.members.fetch({ ...options, user: this.ownerId });\n  }\n\n  /**\n   * AFK voice channel for this guild\n   * @type {?VoiceChannel}\n   * @readonly\n   */\n  get afkChannel() {\n    return this.client.channels.resolve(this.afkChannelId);\n  }\n\n  /**\n   * System channel for this guild\n   * @type {?TextChannel}\n   * @readonly\n   */\n  get systemChannel() {\n    return this.client.channels.resolve(this.systemChannelId);\n  }\n\n  /**\n   * Widget channel for this guild\n   * @type {?TextChannel}\n   * @readonly\n   */\n  get widgetChannel() {\n    return this.client.channels.resolve(this.widgetChannelId);\n  }\n\n  /**\n   * Rules channel for this guild\n   * @type {?TextChannel}\n   * @readonly\n   */\n  get rulesChannel() {\n    return this.client.channels.resolve(this.rulesChannelId);\n  }\n\n  /**\n   * Public updates channel for this guild\n   * @type {?TextChannel}\n   * @readonly\n   */\n  get publicUpdatesChannel() {\n    return this.client.channels.resolve(this.publicUpdatesChannelId);\n  }\n\n  /**\n   * The client user as a GuildMember of this guild\n   * @type {?GuildMember}\n   * @readonly\n   */\n  get me() {\n    return (\n      this.members.resolve(this.client.user.id) ??\n      (this.client.options.partials.includes(PartialTypes.GUILD_MEMBER)\n        ? this.members._add({ user: { id: this.client.user.id } }, true)\n        : null)\n    );\n  }\n\n  /**\n   * The maximum bitrate available for this guild\n   * @type {number}\n   * @readonly\n   */\n  get maximumBitrate() {\n    if (this.features.includes('VIP_REGIONS')) {\n      return 384_000;\n    }\n\n    switch (PremiumTiers[this.premiumTier]) {\n      case PremiumTiers.TIER_1:\n        return 128_000;\n      case PremiumTiers.TIER_2:\n        return 256_000;\n      case PremiumTiers.TIER_3:\n        return 384_000;\n      default:\n        return 96_000;\n    }\n  }\n\n  /**\n   * Fetches a collection of integrations to this guild.\n   * Resolves with a collection mapping integrations by their ids.\n   * @returns {Promise<Collection<Snowflake|string, Integration>>}\n   * @example\n   * // Fetch integrations\n   * guild.fetchIntegrations()\n   *   .then(integrations => console.log(`Fetched ${integrations.size} integrations`))\n   *   .catch(console.error);\n   */\n  async fetchIntegrations() {\n    const data = await this.client.api.guilds(this.id).integrations.get();\n    return data.reduce(\n      (collection, integration) => collection.set(integration.id, new Integration(this.client, integration, this)),\n      new Collection(),\n    );\n  }\n\n  /**\n   * Fetches a collection of templates from this guild.\n   * Resolves with a collection mapping templates by their codes.\n   * @returns {Promise<Collection<string, GuildTemplate>>}\n   */\n  async fetchTemplates() {\n    const templates = await this.client.api.guilds(this.id).templates.get();\n    return templates.reduce((col, data) => col.set(data.code, new GuildTemplate(this.client, data)), new Collection());\n  }\n\n  /**\n   * Fetches the welcome screen for this guild.\n   * @returns {Promise<WelcomeScreen>}\n   */\n  async fetchWelcomeScreen() {\n    const data = await this.client.api.guilds(this.id, 'welcome-screen').get();\n    return new WelcomeScreen(this, data);\n  }\n\n  /**\n   * Creates a template for the guild.\n   * @param {string} name The name for the template\n   * @param {string} [description] The description for the template\n   * @returns {Promise<GuildTemplate>}\n   */\n  async createTemplate(name, description) {\n    const data = await this.client.api.guilds(this.id).templates.post({ data: { name, description } });\n    return new GuildTemplate(this.client, data);\n  }\n\n  /**\n   * Obtains a guild preview for this guild from Discord.\n   * @returns {Promise<GuildPreview>}\n   */\n  async fetchPreview() {\n    const data = await this.client.api.guilds(this.id).preview.get();\n    return new GuildPreview(this.client, data);\n  }\n\n  /**\n   * An object containing information about a guild's vanity invite.\n   * @typedef {Object} Vanity\n   * @property {?string} code Vanity invite code\n   * @property {number} uses How many times this invite has been used\n   */\n\n  /**\n   * Fetches the vanity URL invite object to this guild.\n   * Resolves with an object containing the vanity URL invite code and the use count\n   * @returns {Promise<Vanity>}\n   * @example\n   * // Fetch invite data\n   * guild.fetchVanityData()\n   *   .then(res => {\n   *     console.log(`Vanity URL: https://discord.gg/${res.code} with ${res.uses} uses`);\n   *   })\n   *   .catch(console.error);\n   */\n  async fetchVanityData() {\n    if (!this.features.includes('VANITY_URL')) {\n      throw new Error('VANITY_URL');\n    }\n    const data = await this.client.api.guilds(this.id, 'vanity-url').get();\n    this.vanityURLCode = data.code;\n    this.vanityURLUses = data.uses;\n\n    return data;\n  }\n\n  /**\n   * Fetches all webhooks for the guild.\n   * @returns {Promise<Collection<Snowflake, Webhook>>}\n   * @example\n   * // Fetch webhooks\n   * guild.fetchWebhooks()\n   *   .then(webhooks => console.log(`Fetched ${webhooks.size} webhooks`))\n   *   .catch(console.error);\n   */\n  async fetchWebhooks() {\n    const apiHooks = await this.client.api.guilds(this.id).webhooks.get();\n    const hooks = new Collection();\n    for (const hook of apiHooks) hooks.set(hook.id, new Webhook(this.client, hook));\n    return hooks;\n  }\n\n  /**\n   * Fetches the guild widget data, requires the widget to be enabled.\n   * @returns {Promise<Widget>}\n   * @example\n   * // Fetches the guild widget data\n   * guild.fetchWidget()\n   *   .then(widget => console.log(`The widget shows ${widget.channels.size} channels`))\n   *   .catch(console.error);\n   */\n  fetchWidget() {\n    return this.client.fetchGuildWidget(this.id);\n  }\n\n  /**\n   * Data for the Guild Widget Settings object\n   * @typedef {Object} GuildWidgetSettings\n   * @property {boolean} enabled Whether the widget is enabled\n   * @property {?GuildChannel} channel The widget invite channel\n   */\n\n  /**\n   * The Guild Widget Settings object\n   * @typedef {Object} GuildWidgetSettingsData\n   * @property {boolean} enabled Whether the widget is enabled\n   * @property {?GuildChannelResolvable} channel The widget invite channel\n   */\n\n  /**\n   * Fetches the guild widget settings.\n   * @returns {Promise<GuildWidgetSettings>}\n   * @example\n   * // Fetches the guild widget settings\n   * guild.fetchWidgetSettings()\n   *   .then(widget => console.log(`The widget is ${widget.enabled ? 'enabled' : 'disabled'}`))\n   *   .catch(console.error);\n   */\n  async fetchWidgetSettings() {\n    const data = await this.client.api.guilds(this.id).widget.get();\n    this.widgetEnabled = data.enabled;\n    this.widgetChannelId = data.channel_id;\n    return {\n      enabled: data.enabled,\n      channel: data.channel_id ? this.channels.cache.get(data.channel_id) : null,\n    };\n  }\n\n  /**\n   * Options used to fetch audit logs.\n   * @typedef {Object} GuildAuditLogsFetchOptions\n   * @property {Snowflake|GuildAuditLogsEntry} [before] Only return entries before this entry\n   * @property {number} [limit] The number of entries to return\n   * @property {UserResolvable} [user] Only return entries for actions made by this user\n   * @property {AuditLogAction|number} [type] Only return entries for this action type\n   */\n\n  /**\n   * Fetches audit logs for this guild.\n   * @param {GuildAuditLogsFetchOptions} [options={}] Options for fetching audit logs\n   * @returns {Promise<GuildAuditLogs>}\n   * @example\n   * // Output audit log entries\n   * guild.fetchAuditLogs()\n   *   .then(audit => console.log(audit.entries.first()))\n   *   .catch(console.error);\n   */\n  async fetchAuditLogs(options = {}) {\n    if (options.before && options.before instanceof GuildAuditLogs.Entry) options.before = options.before.id;\n    if (typeof options.type === 'string') options.type = GuildAuditLogs.Actions[options.type];\n\n    const data = await this.client.api.guilds(this.id)['audit-logs'].get({\n      query: {\n        before: options.before,\n        limit: options.limit,\n        user_id: this.client.users.resolveId(options.user),\n        action_type: options.type,\n      },\n    });\n    return GuildAuditLogs.build(this, data);\n  }\n\n  /**\n   * The data for editing a guild.\n   * @typedef {Object} GuildEditData\n   * @property {string} [name] The name of the guild\n   * @property {VerificationLevel|number} [verificationLevel] The verification level of the guild\n   * @property {ExplicitContentFilterLevel|number} [explicitContentFilter] The level of the explicit content filter\n   * @property {VoiceChannelResolvable} [afkChannel] The AFK channel of the guild\n   * @property {TextChannelResolvable} [systemChannel] The system channel of the guild\n   * @property {number} [afkTimeout] The AFK timeout of the guild\n   * @property {?(BufferResolvable|Base64Resolvable)} [icon] The icon of the guild\n   * @property {GuildMemberResolvable} [owner] The owner of the guild\n   * @property {?(BufferResolvable|Base64Resolvable)} [splash] The invite splash image of the guild\n   * @property {?(BufferResolvable|Base64Resolvable)} [discoverySplash] The discovery splash image of the guild\n   * @property {?(BufferResolvable|Base64Resolvable)} [banner] The banner of the guild\n   * @property {DefaultMessageNotificationLevel|number} [defaultMessageNotifications] The default message notification\n   * level of the guild\n   * @property {SystemChannelFlagsResolvable} [systemChannelFlags] The system channel flags of the guild\n   * @property {TextChannelResolvable} [rulesChannel] The rules channel of the guild\n   * @property {TextChannelResolvable} [publicUpdatesChannel] The community updates channel of the guild\n   * @property {string} [preferredLocale] The preferred locale of the guild\n   * @property {boolean} [premiumProgressBarEnabled] Whether the guild's premium progress bar is enabled\n   * @property {string} [description] The discovery description of the guild\n   * @property {Features[]} [features] The features of the guild\n   */\n\n  /**\n   * Data that can be resolved to a Text Channel object. This can be:\n   * * A TextChannel\n   * * A Snowflake\n   * @typedef {TextChannel|Snowflake} TextChannelResolvable\n   */\n\n  /**\n   * Data that can be resolved to a Voice Channel object. This can be:\n   * * A VoiceChannel\n   * * A Snowflake\n   * @typedef {VoiceChannel|Snowflake} VoiceChannelResolvable\n   */\n\n  /**\n   * Updates the guild with new information - e.g. a new name.\n   * @param {GuildEditData} data The data to update the guild with\n   * @param {string} [reason] Reason for editing this guild\n   * @returns {Promise<Guild>}\n   * @example\n   * // Set the guild name\n   * guild.edit({\n   *   name: 'Discord Guild',\n   * })\n   *   .then(updated => console.log(`New guild name ${updated}`))\n   *   .catch(console.error);\n   */\n  async edit(data, reason) {\n    const _data = {};\n    if (data.name) _data.name = data.name;\n    if (typeof data.verificationLevel !== 'undefined') {\n      _data.verification_level =\n        typeof data.verificationLevel === 'number'\n          ? data.verificationLevel\n          : VerificationLevels[data.verificationLevel];\n    }\n    if (typeof data.afkChannel !== 'undefined') {\n      _data.afk_channel_id = this.client.channels.resolveId(data.afkChannel);\n    }\n    if (typeof data.systemChannel !== 'undefined') {\n      _data.system_channel_id = this.client.channels.resolveId(data.systemChannel);\n    }\n    if (data.afkTimeout) _data.afk_timeout = Number(data.afkTimeout);\n    if (typeof data.icon !== 'undefined') _data.icon = await DataResolver.resolveImage(data.icon);\n    if (data.owner) _data.owner_id = this.client.users.resolveId(data.owner);\n    if (typeof data.splash !== 'undefined') _data.splash = await DataResolver.resolveImage(data.splash);\n    if (typeof data.discoverySplash !== 'undefined') {\n      _data.discovery_splash = await DataResolver.resolveImage(data.discoverySplash);\n    }\n    if (typeof data.banner !== 'undefined') _data.banner = await DataResolver.resolveImage(data.banner);\n    if (typeof data.explicitContentFilter !== 'undefined') {\n      _data.explicit_content_filter =\n        typeof data.explicitContentFilter === 'number'\n          ? data.explicitContentFilter\n          : ExplicitContentFilterLevels[data.explicitContentFilter];\n    }\n    if (typeof data.defaultMessageNotifications !== 'undefined') {\n      _data.default_message_notifications =\n        typeof data.defaultMessageNotifications === 'number'\n          ? data.defaultMessageNotifications\n          : DefaultMessageNotificationLevels[data.defaultMessageNotifications];\n    }\n    if (typeof data.systemChannelFlags !== 'undefined') {\n      _data.system_channel_flags = SystemChannelFlags.resolve(data.systemChannelFlags);\n    }\n    if (typeof data.rulesChannel !== 'undefined') {\n      _data.rules_channel_id = this.client.channels.resolveId(data.rulesChannel);\n    }\n    if (typeof data.publicUpdatesChannel !== 'undefined') {\n      _data.public_updates_channel_id = this.client.channels.resolveId(data.publicUpdatesChannel);\n    }\n    if (typeof data.features !== 'undefined') {\n      _data.features = data.features;\n    }\n    if (typeof data.description !== 'undefined') {\n      _data.description = data.description;\n    }\n    if (data.preferredLocale) _data.preferred_locale = data.preferredLocale;\n    if ('premiumProgressBarEnabled' in data) _data.premium_progress_bar_enabled = data.premiumProgressBarEnabled;\n    const newData = await this.client.api.guilds(this.id).patch({ data: _data, reason });\n    return this.client.actions.GuildUpdate.handle(newData).updated;\n  }\n\n  /**\n   * Welcome channel data\n   * @typedef {Object} WelcomeChannelData\n   * @property {string} description The description to show for this welcome channel\n   * @property {TextChannel|NewsChannel|StoreChannel|Snowflake} channel The channel to link for this welcome channel\n   * @property {EmojiIdentifierResolvable} [emoji] The emoji to display for this welcome channel\n   */\n\n  /**\n   * Welcome screen edit data\n   * @typedef {Object} WelcomeScreenEditData\n   * @property {boolean} [enabled] Whether the welcome screen is enabled\n   * @property {string} [description] The description for the welcome screen\n   * @property {WelcomeChannelData[]} [welcomeChannels] The welcome channel data for the welcome screen\n   */\n\n  /**\n   * Data that can be resolved to a GuildTextChannel object. This can be:\n   * * A TextChannel\n   * * A NewsChannel\n   * * A Snowflake\n   * @typedef {TextChannel|NewsChannel|Snowflake} GuildTextChannelResolvable\n   */\n\n  /**\n   * Data that can be resolved to a GuildVoiceChannel object. This can be:\n   * * A VoiceChannel\n   * * A StageChannel\n   * * A Snowflake\n   * @typedef {VoiceChannel|StageChannel|Snowflake} GuildVoiceChannelResolvable\n   */\n\n  /**\n   * Updates the guild's welcome screen\n   * @param {WelcomeScreenEditData} data Data to edit the welcome screen with\n   * @returns {Promise<WelcomeScreen>}\n   * @example\n   * guild.editWelcomeScreen({\n   *   description: 'Hello World',\n   *   enabled: true,\n   *   welcomeChannels: [\n   *     {\n   *       description: 'foobar',\n   *       channel: '222197033908436994',\n   *     }\n   *   ],\n   * })\n   */\n  async editWelcomeScreen(data) {\n    const { enabled, description, welcomeChannels } = data;\n    const welcome_channels = welcomeChannels?.map(welcomeChannelData => {\n      const emoji = this.emojis.resolve(welcomeChannelData.emoji);\n      return {\n        emoji_id: emoji?.id,\n        emoji_name: emoji?.name ?? welcomeChannelData.emoji,\n        channel_id: this.channels.resolveId(welcomeChannelData.channel),\n        description: welcomeChannelData.description,\n      };\n    });\n\n    const patchData = await this.client.api.guilds(this.id, 'welcome-screen').patch({\n      data: {\n        welcome_channels,\n        description,\n        enabled,\n      },\n    });\n    return new WelcomeScreen(this, patchData);\n  }\n\n  /**\n   * Edits the level of the explicit content filter.\n   * @param {ExplicitContentFilterLevel|number} explicitContentFilter The new level of the explicit content filter\n   * @param {string} [reason] Reason for changing the level of the guild's explicit content filter\n   * @returns {Promise<Guild>}\n   */\n  setExplicitContentFilter(explicitContentFilter, reason) {\n    return this.edit({ explicitContentFilter }, reason);\n  }\n\n  /* eslint-disable max-len */\n  /**\n   * Edits the setting of the default message notifications of the guild.\n   * @param {DefaultMessageNotificationLevel|number} defaultMessageNotifications The new default message notification level of the guild\n   * @param {string} [reason] Reason for changing the setting of the default message notifications\n   * @returns {Promise<Guild>}\n   */\n  setDefaultMessageNotifications(defaultMessageNotifications, reason) {\n    return this.edit({ defaultMessageNotifications }, reason);\n  }\n  /* eslint-enable max-len */\n\n  /**\n   * Edits the flags of the default message notifications of the guild.\n   * @param {SystemChannelFlagsResolvable} systemChannelFlags The new flags for the default message notifications\n   * @param {string} [reason] Reason for changing the flags of the default message notifications\n   * @returns {Promise<Guild>}\n   */\n  setSystemChannelFlags(systemChannelFlags, reason) {\n    return this.edit({ systemChannelFlags }, reason);\n  }\n\n  /**\n   * Edits the name of the guild.\n   * @param {string} name The new name of the guild\n   * @param {string} [reason] Reason for changing the guild's name\n   * @returns {Promise<Guild>}\n   * @example\n   * // Edit the guild name\n   * guild.setName('Discord Guild')\n   *  .then(updated => console.log(`Updated guild name to ${updated.name}`))\n   *  .catch(console.error);\n   */\n  setName(name, reason) {\n    return this.edit({ name }, reason);\n  }\n\n  /**\n   * Edits the verification level of the guild.\n   * @param {VerificationLevel|number} verificationLevel The new verification level of the guild\n   * @param {string} [reason] Reason for changing the guild's verification level\n   * @returns {Promise<Guild>}\n   * @example\n   * // Edit the guild verification level\n   * guild.setVerificationLevel(1)\n   *  .then(updated => console.log(`Updated guild verification level to ${guild.verificationLevel}`))\n   *  .catch(console.error);\n   */\n  setVerificationLevel(verificationLevel, reason) {\n    return this.edit({ verificationLevel }, reason);\n  }\n\n  /**\n   * Edits the AFK channel of the guild.\n   * @param {VoiceChannelResolvable} afkChannel The new AFK channel\n   * @param {string} [reason] Reason for changing the guild's AFK channel\n   * @returns {Promise<Guild>}\n   * @example\n   * // Edit the guild AFK channel\n   * guild.setAFKChannel(channel)\n   *  .then(updated => console.log(`Updated guild AFK channel to ${guild.afkChannel.name}`))\n   *  .catch(console.error);\n   */\n  setAFKChannel(afkChannel, reason) {\n    return this.edit({ afkChannel }, reason);\n  }\n\n  /**\n   * Edits the system channel of the guild.\n   * @param {TextChannelResolvable} systemChannel The new system channel\n   * @param {string} [reason] Reason for changing the guild's system channel\n   * @returns {Promise<Guild>}\n   * @example\n   * // Edit the guild system channel\n   * guild.setSystemChannel(channel)\n   *  .then(updated => console.log(`Updated guild system channel to ${guild.systemChannel.name}`))\n   *  .catch(console.error);\n   */\n  setSystemChannel(systemChannel, reason) {\n    return this.edit({ systemChannel }, reason);\n  }\n\n  /**\n   * Edits the AFK timeout of the guild.\n   * @param {number} afkTimeout The time in seconds that a user must be idle to be considered AFK\n   * @param {string} [reason] Reason for changing the guild's AFK timeout\n   * @returns {Promise<Guild>}\n   * @example\n   * // Edit the guild AFK channel\n   * guild.setAFKTimeout(60)\n   *  .then(updated => console.log(`Updated guild AFK timeout to ${guild.afkTimeout}`))\n   *  .catch(console.error);\n   */\n  setAFKTimeout(afkTimeout, reason) {\n    return this.edit({ afkTimeout }, reason);\n  }\n\n  /**\n   * Sets a new guild icon.\n   * @param {?(Base64Resolvable|BufferResolvable)} icon The new icon of the guild\n   * @param {string} [reason] Reason for changing the guild's icon\n   * @returns {Promise<Guild>}\n   * @example\n   * // Edit the guild icon\n   * guild.setIcon('./icon.png')\n   *  .then(updated => console.log('Updated the guild icon'))\n   *  .catch(console.error);\n   */\n  setIcon(icon, reason) {\n    return this.edit({ icon }, reason);\n  }\n\n  /**\n   * Sets a new owner of the guild.\n   * @param {GuildMemberResolvable} owner The new owner of the guild\n   * @param {string} [reason] Reason for setting the new owner\n   * @returns {Promise<Guild>}\n   * @example\n   * // Edit the guild owner\n   * guild.setOwner(guild.members.cache.first())\n   *  .then(guild => guild.fetchOwner())\n   *  .then(owner => console.log(`Updated the guild owner to ${owner.displayName}`))\n   *  .catch(console.error);\n   */\n  setOwner(owner, reason) {\n    return this.edit({ owner }, reason);\n  }\n\n  /**\n   * Sets a new guild invite splash image.\n   * @param {?(Base64Resolvable|BufferResolvable)} splash The new invite splash image of the guild\n   * @param {string} [reason] Reason for changing the guild's invite splash image\n   * @returns {Promise<Guild>}\n   * @example\n   * // Edit the guild splash\n   * guild.setSplash('./splash.png')\n   *  .then(updated => console.log('Updated the guild splash'))\n   *  .catch(console.error);\n   */\n  setSplash(splash, reason) {\n    return this.edit({ splash }, reason);\n  }\n\n  /**\n   * Sets a new guild discovery splash image.\n   * @param {?(Base64Resolvable|BufferResolvable)} discoverySplash The new discovery splash image of the guild\n   * @param {string} [reason] Reason for changing the guild's discovery splash image\n   * @returns {Promise<Guild>}\n   * @example\n   * // Edit the guild discovery splash\n   * guild.setDiscoverySplash('./discoverysplash.png')\n   *   .then(updated => console.log('Updated the guild discovery splash'))\n   *   .catch(console.error);\n   */\n  setDiscoverySplash(discoverySplash, reason) {\n    return this.edit({ discoverySplash }, reason);\n  }\n\n  /**\n   * Sets a new guild banner.\n   * @param {?(Base64Resolvable|BufferResolvable)} banner The new banner of the guild\n   * @param {string} [reason] Reason for changing the guild's banner\n   * @returns {Promise<Guild>}\n   * @example\n   * guild.setBanner('./banner.png')\n   *  .then(updated => console.log('Updated the guild banner'))\n   *  .catch(console.error);\n   */\n  setBanner(banner, reason) {\n    return this.edit({ banner }, reason);\n  }\n\n  /**\n   * Edits the rules channel of the guild.\n   * @param {TextChannelResolvable} rulesChannel The new rules channel\n   * @param {string} [reason] Reason for changing the guild's rules channel\n   * @returns {Promise<Guild>}\n   * @example\n   * // Edit the guild rules channel\n   * guild.setRulesChannel(channel)\n   *  .then(updated => console.log(`Updated guild rules channel to ${guild.rulesChannel.name}`))\n   *  .catch(console.error);\n   */\n  setRulesChannel(rulesChannel, reason) {\n    return this.edit({ rulesChannel }, reason);\n  }\n\n  /**\n   * Edits the community updates channel of the guild.\n   * @param {TextChannelResolvable} publicUpdatesChannel The new community updates channel\n   * @param {string} [reason] Reason for changing the guild's community updates channel\n   * @returns {Promise<Guild>}\n   * @example\n   * // Edit the guild community updates channel\n   * guild.setPublicUpdatesChannel(channel)\n   *  .then(updated => console.log(`Updated guild community updates channel to ${guild.publicUpdatesChannel.name}`))\n   *  .catch(console.error);\n   */\n  setPublicUpdatesChannel(publicUpdatesChannel, reason) {\n    return this.edit({ publicUpdatesChannel }, reason);\n  }\n\n  /**\n   * Edits the preferred locale of the guild.\n   * @param {string} preferredLocale The new preferred locale of the guild\n   * @param {string} [reason] Reason for changing the guild's preferred locale\n   * @returns {Promise<Guild>}\n   * @example\n   * // Edit the guild preferred locale\n   * guild.setPreferredLocale('en-US')\n   *  .then(updated => console.log(`Updated guild preferred locale to ${guild.preferredLocale}`))\n   *  .catch(console.error);\n   */\n  setPreferredLocale(preferredLocale, reason) {\n    return this.edit({ preferredLocale }, reason);\n  }\n\n  /**\n   * Edits the enabled state of the guild's premium progress bar\n   * @param {boolean} [enabled=true] The new enabled state of the guild's premium progress bar\n   * @param {string} [reason] Reason for changing the state of the guild's premium progress bar\n   * @returns {Promise<Guild>}\n   */\n  setPremiumProgressBarEnabled(enabled = true, reason) {\n    return this.edit({ premiumProgressBarEnabled: enabled }, reason);\n  }\n\n  /**\n   * Data that can be resolved to give a Category Channel object. This can be:\n   * * A CategoryChannel object\n   * * A Snowflake\n   * @typedef {CategoryChannel|Snowflake} CategoryChannelResolvable\n   */\n\n  /**\n   * The data needed for updating a channel's position.\n   * @typedef {Object} ChannelPosition\n   * @property {GuildChannel|Snowflake} channel Channel to update\n   * @property {number} [position] New position for the channel\n   * @property {CategoryChannelResolvable} [parent] Parent channel for this channel\n   * @property {boolean} [lockPermissions] If the overwrites should be locked to the parents overwrites\n   */\n\n  /**\n   * Batch-updates the guild's channels' positions.\n   * <info>Only one channel's parent can be changed at a time</info>\n   * @param {ChannelPosition[]} channelPositions Channel positions to update\n   * @returns {Promise<Guild>}\n   * @deprecated Use {@link GuildChannelManager#setPositions} instead\n   * @example\n   * guild.setChannelPositions([{ channel: channelId, position: newChannelIndex }])\n   *   .then(guild => console.log(`Updated channel positions for ${guild}`))\n   *   .catch(console.error);\n   */\n  setChannelPositions(channelPositions) {\n    if (!deprecationEmittedForSetChannelPositions) {\n      process.emitWarning(\n        'The Guild#setChannelPositions method is deprecated. Use GuildChannelManager#setPositions instead.',\n        'DeprecationWarning',\n      );\n\n      deprecationEmittedForSetChannelPositions = true;\n    }\n\n    return this.channels.setPositions(channelPositions);\n  }\n\n  /**\n   * The data needed for updating a guild role's position\n   * @typedef {Object} GuildRolePosition\n   * @property {RoleResolvable} role The role's id\n   * @property {number} position The position to update\n   */\n\n  /**\n   * Batch-updates the guild's role positions\n   * @param {GuildRolePosition[]} rolePositions Role positions to update\n   * @returns {Promise<Guild>}\n   * @deprecated Use {@link RoleManager#setPositions} instead\n   * @example\n   * guild.setRolePositions([{ role: roleId, position: updatedRoleIndex }])\n   *  .then(guild => console.log(`Role positions updated for ${guild}`))\n   *  .catch(console.error);\n   */\n  setRolePositions(rolePositions) {\n    if (!deprecationEmittedForSetRolePositions) {\n      process.emitWarning(\n        'The Guild#setRolePositions method is deprecated. Use RoleManager#setPositions instead.',\n        'DeprecationWarning',\n      );\n\n      deprecationEmittedForSetRolePositions = true;\n    }\n\n    return this.roles.setPositions(rolePositions);\n  }\n\n  /**\n   * Edits the guild's widget settings.\n   * @param {GuildWidgetSettingsData} settings The widget settings for the guild\n   * @param {string} [reason] Reason for changing the guild's widget settings\n   * @returns {Promise<Guild>}\n   */\n  async setWidgetSettings(settings, reason) {\n    await this.client.api.guilds(this.id).widget.patch({\n      data: {\n        enabled: settings.enabled,\n        channel_id: this.channels.resolveId(settings.channel),\n      },\n      reason,\n    });\n    return this;\n  }\n\n  /**\n   * Leaves the guild.\n   * @returns {Promise<Guild>}\n   * @example\n   * // Leave a guild\n   * guild.leave()\n   *   .then(g => console.log(`Left the guild ${g}`))\n   *   .catch(console.error);\n   */\n  async leave() {\n    if (this.ownerId === this.client.user.id) throw new Error('GUILD_OWNED');\n    await this.client.api.users('@me').guilds(this.id).delete();\n    return this.client.actions.GuildDelete.handle({ id: this.id }).guild;\n  }\n\n  /**\n   * Deletes the guild.\n   * @returns {Promise<Guild>}\n   * @example\n   * // Delete a guild\n   * guild.delete()\n   *   .then(g => console.log(`Deleted the guild ${g}`))\n   *   .catch(console.error);\n   */\n  async delete() {\n    await this.client.api.guilds(this.id).delete();\n    return this.client.actions.GuildDelete.handle({ id: this.id }).guild;\n  }\n\n  /**\n   * Whether this guild equals another guild. It compares all properties, so for most operations\n   * it is advisable to just compare `guild.id === guild2.id` as it is much faster and is often\n   * what most users need.\n   * @param {Guild} guild The guild to compare with\n   * @returns {boolean}\n   */\n  equals(guild) {\n    return (\n      guild &&\n      guild instanceof this.constructor &&\n      this.id === guild.id &&\n      this.available === guild.available &&\n      this.splash === guild.splash &&\n      this.discoverySplash === guild.discoverySplash &&\n      this.name === guild.name &&\n      this.memberCount === guild.memberCount &&\n      this.large === guild.large &&\n      this.icon === guild.icon &&\n      this.ownerId === guild.ownerId &&\n      this.verificationLevel === guild.verificationLevel &&\n      (this.features === guild.features ||\n        (this.features.length === guild.features.length &&\n          this.features.every((feat, i) => feat === guild.features[i])))\n    );\n  }\n\n  toJSON() {\n    const json = super.toJSON({\n      available: false,\n      createdTimestamp: true,\n      nameAcronym: true,\n      presences: false,\n      voiceStates: false,\n    });\n    json.iconURL = this.iconURL();\n    json.splashURL = this.splashURL();\n    json.discoverySplashURL = this.discoverySplashURL();\n    json.bannerURL = this.bannerURL();\n    return json;\n  }\n\n  /**\n   * The voice state adapter for this guild that can be used with @discordjs/voice to play audio in voice\n   * and stage channels.\n   * @type {Function}\n   * @readonly\n   */\n  get voiceAdapterCreator() {\n    return methods => {\n      this.client.voice.adapters.set(this.id, methods);\n      return {\n        sendPayload: data => {\n          if (this.shard.status !== Status.READY) return false;\n          this.shard.send(data);\n          return true;\n        },\n        destroy: () => {\n          this.client.voice.adapters.delete(this.id);\n        },\n      };\n    };\n  }\n\n  /**\n   * Creates a collection of this guild's roles, sorted by their position and ids.\n   * @returns {Collection<Snowflake, Role>}\n   * @private\n   */\n  _sortedRoles() {\n    return Util.discordSort(this.roles.cache);\n  }\n\n  /**\n   * Creates a collection of this guild's or a specific category's channels, sorted by their position and ids.\n   * @param {GuildChannel} [channel] Category to get the channels of\n   * @returns {Collection<Snowflake, GuildChannel>}\n   * @private\n   */\n  _sortedChannels(channel) {\n    const category = channel.type === ChannelTypes.GUILD_CATEGORY;\n    return Util.discordSort(\n      this.channels.cache.filter(\n        c =>\n          (['GUILD_TEXT', 'GUILD_NEWS', 'GUILD_STORE'].includes(channel.type)\n            ? ['GUILD_TEXT', 'GUILD_NEWS', 'GUILD_STORE'].includes(c.type)\n            : c.type === channel.type) &&\n          (category || c.parent === channel.parent),\n      ),\n    );\n  }\n}\n\nexports.Guild = Guild;\nexports.deletedGuilds = deletedGuilds;\n\n/**\n * @external APIGuild\n * @see {@link https://discord.com/developers/docs/resources/guild#guild-object}\n */\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/Guild.js?")},"./node_modules/@citizenfx/discord.js/src/structures/GuildAuditLogs.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/GuildAuditLogs.js ***!
  \*****************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst { GuildScheduledEvent } = __webpack_require__(/*! ./GuildScheduledEvent */ \"./node_modules/@citizenfx/discord.js/src/structures/GuildScheduledEvent.js\");\nconst Integration = __webpack_require__(/*! ./Integration */ \"./node_modules/@citizenfx/discord.js/src/structures/Integration.js\");\nconst Invite = __webpack_require__(/*! ./Invite */ \"./node_modules/@citizenfx/discord.js/src/structures/Invite.js\");\nconst { StageInstance } = __webpack_require__(/*! ./StageInstance */ \"./node_modules/@citizenfx/discord.js/src/structures/StageInstance.js\");\nconst { Sticker } = __webpack_require__(/*! ./Sticker */ \"./node_modules/@citizenfx/discord.js/src/structures/Sticker.js\");\nconst Webhook = __webpack_require__(/*! ./Webhook */ \"./node_modules/@citizenfx/discord.js/src/structures/Webhook.js\");\nconst { OverwriteTypes, PartialTypes } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst SnowflakeUtil = __webpack_require__(/*! ../util/SnowflakeUtil */ \"./node_modules/@citizenfx/discord.js/src/util/SnowflakeUtil.js\");\nconst Util = __webpack_require__(/*! ../util/Util */ \"./node_modules/@citizenfx/discord.js/src/util/Util.js\");\n\n/**\n * The target type of an entry. Here are the available types:\n * * GUILD\n * * CHANNEL\n * * USER\n * * ROLE\n * * INVITE\n * * WEBHOOK\n * * EMOJI\n * * MESSAGE\n * * INTEGRATION\n * * STAGE_INSTANCE\n * * STICKER\n * * THREAD\n * * GUILD_SCHEDULED_EVENT\n * @typedef {string} AuditLogTargetType\n */\n\n/**\n * Key mirror of all available audit log targets.\n * @name GuildAuditLogs.Targets\n * @type {Object<string, string>}\n */\nconst Targets = {\n  ALL: 'ALL',\n  GUILD: 'GUILD',\n  GUILD_SCHEDULED_EVENT: 'GUILD_SCHEDULED_EVENT',\n  CHANNEL: 'CHANNEL',\n  USER: 'USER',\n  ROLE: 'ROLE',\n  INVITE: 'INVITE',\n  WEBHOOK: 'WEBHOOK',\n  EMOJI: 'EMOJI',\n  MESSAGE: 'MESSAGE',\n  INTEGRATION: 'INTEGRATION',\n  STAGE_INSTANCE: 'STAGE_INSTANCE',\n  STICKER: 'STICKER',\n  THREAD: 'THREAD',\n  UNKNOWN: 'UNKNOWN',\n};\n\n/**\n * The action of an entry. Here are the available actions:\n * * ALL: null\n * * GUILD_UPDATE: 1\n * * CHANNEL_CREATE: 10\n * * CHANNEL_UPDATE: 11\n * * CHANNEL_DELETE: 12\n * * CHANNEL_OVERWRITE_CREATE: 13\n * * CHANNEL_OVERWRITE_UPDATE: 14\n * * CHANNEL_OVERWRITE_DELETE: 15\n * * MEMBER_KICK: 20\n * * MEMBER_PRUNE: 21\n * * MEMBER_BAN_ADD: 22\n * * MEMBER_BAN_REMOVE: 23\n * * MEMBER_UPDATE: 24\n * * MEMBER_ROLE_UPDATE: 25\n * * MEMBER_MOVE: 26\n * * MEMBER_DISCONNECT: 27\n * * BOT_ADD: 28,\n * * ROLE_CREATE: 30\n * * ROLE_UPDATE: 31\n * * ROLE_DELETE: 32\n * * INVITE_CREATE: 40\n * * INVITE_UPDATE: 41\n * * INVITE_DELETE: 42\n * * WEBHOOK_CREATE: 50\n * * WEBHOOK_UPDATE: 51\n * * WEBHOOK_DELETE: 52\n * * EMOJI_CREATE: 60\n * * EMOJI_UPDATE: 61\n * * EMOJI_DELETE: 62\n * * MESSAGE_DELETE: 72\n * * MESSAGE_BULK_DELETE: 73\n * * MESSAGE_PIN: 74\n * * MESSAGE_UNPIN: 75\n * * INTEGRATION_CREATE: 80\n * * INTEGRATION_UPDATE: 81\n * * INTEGRATION_DELETE: 82\n * * STAGE_INSTANCE_CREATE: 83\n * * STAGE_INSTANCE_UPDATE: 84\n * * STAGE_INSTANCE_DELETE: 85\n * * STICKER_CREATE: 90\n * * STICKER_UPDATE: 91\n * * STICKER_DELETE: 92\n * * GUILD_SCHEDULED_EVENT_CREATE: 100\n * * GUILD_SCHEDULED_EVENT_UPDATE: 101\n * * GUILD_SCHEDULED_EVENT_DELETE: 102\n * * THREAD_CREATE: 110\n * * THREAD_UPDATE: 111\n * * THREAD_DELETE: 112\n * @typedef {?(number|string)} AuditLogAction\n * @see {@link https://discord.com/developers/docs/resources/audit-log#audit-log-entry-object-audit-log-events}\n */\n\n/**\n * All available actions keyed under their names to their numeric values.\n * @name GuildAuditLogs.Actions\n * @type {Object<string, number>}\n */\nconst Actions = {\n  ALL: null,\n  GUILD_UPDATE: 1,\n  CHANNEL_CREATE: 10,\n  CHANNEL_UPDATE: 11,\n  CHANNEL_DELETE: 12,\n  CHANNEL_OVERWRITE_CREATE: 13,\n  CHANNEL_OVERWRITE_UPDATE: 14,\n  CHANNEL_OVERWRITE_DELETE: 15,\n  MEMBER_KICK: 20,\n  MEMBER_PRUNE: 21,\n  MEMBER_BAN_ADD: 22,\n  MEMBER_BAN_REMOVE: 23,\n  MEMBER_UPDATE: 24,\n  MEMBER_ROLE_UPDATE: 25,\n  MEMBER_MOVE: 26,\n  MEMBER_DISCONNECT: 27,\n  BOT_ADD: 28,\n  ROLE_CREATE: 30,\n  ROLE_UPDATE: 31,\n  ROLE_DELETE: 32,\n  INVITE_CREATE: 40,\n  INVITE_UPDATE: 41,\n  INVITE_DELETE: 42,\n  WEBHOOK_CREATE: 50,\n  WEBHOOK_UPDATE: 51,\n  WEBHOOK_DELETE: 52,\n  EMOJI_CREATE: 60,\n  EMOJI_UPDATE: 61,\n  EMOJI_DELETE: 62,\n  MESSAGE_DELETE: 72,\n  MESSAGE_BULK_DELETE: 73,\n  MESSAGE_PIN: 74,\n  MESSAGE_UNPIN: 75,\n  INTEGRATION_CREATE: 80,\n  INTEGRATION_UPDATE: 81,\n  INTEGRATION_DELETE: 82,\n  STAGE_INSTANCE_CREATE: 83,\n  STAGE_INSTANCE_UPDATE: 84,\n  STAGE_INSTANCE_DELETE: 85,\n  STICKER_CREATE: 90,\n  STICKER_UPDATE: 91,\n  STICKER_DELETE: 92,\n  GUILD_SCHEDULED_EVENT_CREATE: 100,\n  GUILD_SCHEDULED_EVENT_UPDATE: 101,\n  GUILD_SCHEDULED_EVENT_DELETE: 102,\n  THREAD_CREATE: 110,\n  THREAD_UPDATE: 111,\n  THREAD_DELETE: 112,\n};\n\n/**\n * Audit logs entries are held in this class.\n */\nclass GuildAuditLogs {\n  constructor(guild, data) {\n    if (data.users) for (const user of data.users) guild.client.users._add(user);\n    if (data.threads) for (const thread of data.threads) guild.client.channels._add(thread, guild);\n    /**\n     * Cached webhooks\n     * @type {Collection<Snowflake, Webhook>}\n     * @private\n     */\n    this.webhooks = new Collection();\n    if (data.webhooks) {\n      for (const hook of data.webhooks) {\n        this.webhooks.set(hook.id, new Webhook(guild.client, hook));\n      }\n    }\n\n    /**\n     * Cached integrations\n     * @type {Collection<Snowflake|string, Integration>}\n     * @private\n     */\n    this.integrations = new Collection();\n    if (data.integrations) {\n      for (const integration of data.integrations) {\n        this.integrations.set(integration.id, new Integration(guild.client, integration, guild));\n      }\n    }\n\n    /**\n     * The entries for this guild's audit logs\n     * @type {Collection<Snowflake, GuildAuditLogsEntry>}\n     */\n    this.entries = new Collection();\n    for (const item of data.audit_log_entries) {\n      const entry = new GuildAuditLogsEntry(this, guild, item);\n      this.entries.set(entry.id, entry);\n    }\n  }\n\n  /**\n   * Handles possible promises for entry targets.\n   * @returns {Promise<GuildAuditLogs>}\n   */\n  static async build(...args) {\n    const logs = new GuildAuditLogs(...args);\n    await Promise.all(logs.entries.map(e => e.target));\n    return logs;\n  }\n\n  /**\n   * The target of an entry. It can be one of:\n   * * A guild\n   * * A channel\n   * * A user\n   * * A role\n   * * An invite\n   * * A webhook\n   * * An emoji\n   * * A message\n   * * An integration\n   * * A stage instance\n   * * A sticker\n   * * A guild scheduled event\n   * * A thread\n   * * An object with an id key if target was deleted\n   * * An object where the keys represent either the new value or the old value\n   * @typedef {?(Object|Guild|Channel|User|Role|Invite|Webhook|GuildEmoji|Message|Integration|StageInstance|Sticker|\n   * GuildScheduledEvent)} AuditLogEntryTarget\n   */\n\n  /**\n   * Finds the target type from the entry action.\n   * @param {AuditLogAction} target The action target\n   * @returns {AuditLogTargetType}\n   */\n  static targetType(target) {\n    if (target < 10) return Targets.GUILD;\n    if (target < 20) return Targets.CHANNEL;\n    if (target < 30) return Targets.USER;\n    if (target < 40) return Targets.ROLE;\n    if (target < 50) return Targets.INVITE;\n    if (target < 60) return Targets.WEBHOOK;\n    if (target < 70) return Targets.EMOJI;\n    if (target < 80) return Targets.MESSAGE;\n    if (target < 83) return Targets.INTEGRATION;\n    if (target < 86) return Targets.STAGE_INSTANCE;\n    if (target < 100) return Targets.STICKER;\n    if (target < 110) return Targets.GUILD_SCHEDULED_EVENT;\n    if (target < 120) return Targets.THREAD;\n    return Targets.UNKNOWN;\n  }\n\n  /**\n   * The action type of an entry, e.g. `CREATE`. Here are the available types:\n   * * CREATE\n   * * DELETE\n   * * UPDATE\n   * * ALL\n   * @typedef {string} AuditLogActionType\n   */\n\n  /**\n   * Finds the action type from the entry action.\n   * @param {AuditLogAction} action The action target\n   * @returns {AuditLogActionType}\n   */\n  static actionType(action) {\n    if (\n      [\n        Actions.CHANNEL_CREATE,\n        Actions.CHANNEL_OVERWRITE_CREATE,\n        Actions.MEMBER_BAN_REMOVE,\n        Actions.BOT_ADD,\n        Actions.ROLE_CREATE,\n        Actions.INVITE_CREATE,\n        Actions.WEBHOOK_CREATE,\n        Actions.EMOJI_CREATE,\n        Actions.MESSAGE_PIN,\n        Actions.INTEGRATION_CREATE,\n        Actions.STAGE_INSTANCE_CREATE,\n        Actions.STICKER_CREATE,\n        Actions.GUILD_SCHEDULED_EVENT_CREATE,\n        Actions.THREAD_CREATE,\n      ].includes(action)\n    ) {\n      return 'CREATE';\n    }\n\n    if (\n      [\n        Actions.CHANNEL_DELETE,\n        Actions.CHANNEL_OVERWRITE_DELETE,\n        Actions.MEMBER_KICK,\n        Actions.MEMBER_PRUNE,\n        Actions.MEMBER_BAN_ADD,\n        Actions.MEMBER_DISCONNECT,\n        Actions.ROLE_DELETE,\n        Actions.INVITE_DELETE,\n        Actions.WEBHOOK_DELETE,\n        Actions.EMOJI_DELETE,\n        Actions.MESSAGE_DELETE,\n        Actions.MESSAGE_BULK_DELETE,\n        Actions.MESSAGE_UNPIN,\n        Actions.INTEGRATION_DELETE,\n        Actions.STAGE_INSTANCE_DELETE,\n        Actions.STICKER_DELETE,\n        Actions.GUILD_SCHEDULED_EVENT_DELETE,\n        Actions.THREAD_DELETE,\n      ].includes(action)\n    ) {\n      return 'DELETE';\n    }\n\n    if (\n      [\n        Actions.GUILD_UPDATE,\n        Actions.CHANNEL_UPDATE,\n        Actions.CHANNEL_OVERWRITE_UPDATE,\n        Actions.MEMBER_UPDATE,\n        Actions.MEMBER_ROLE_UPDATE,\n        Actions.MEMBER_MOVE,\n        Actions.ROLE_UPDATE,\n        Actions.INVITE_UPDATE,\n        Actions.WEBHOOK_UPDATE,\n        Actions.EMOJI_UPDATE,\n        Actions.INTEGRATION_UPDATE,\n        Actions.STAGE_INSTANCE_UPDATE,\n        Actions.STICKER_UPDATE,\n        Actions.GUILD_SCHEDULED_EVENT_UPDATE,\n        Actions.THREAD_UPDATE,\n      ].includes(action)\n    ) {\n      return 'UPDATE';\n    }\n\n    return 'ALL';\n  }\n\n  toJSON() {\n    return Util.flatten(this);\n  }\n}\n\n/**\n * Audit logs entry.\n */\nclass GuildAuditLogsEntry {\n  constructor(logs, guild, data) {\n    const targetType = GuildAuditLogs.targetType(data.action_type);\n    /**\n     * The target type of this entry\n     * @type {AuditLogTargetType}\n     */\n    this.targetType = targetType;\n\n    /**\n     * The action type of this entry\n     * @type {AuditLogActionType}\n     */\n    this.actionType = GuildAuditLogs.actionType(data.action_type);\n\n    /**\n     * Specific action type of this entry in its string presentation\n     * @type {AuditLogAction}\n     */\n    this.action = Object.keys(Actions).find(k => Actions[k] === data.action_type);\n\n    /**\n     * The reason of this entry\n     * @type {?string}\n     */\n    this.reason = data.reason ?? null;\n\n    /**\n     * The user that executed this entry\n     * @type {?User}\n     */\n    this.executor = data.user_id\n      ? guild.client.options.partials.includes(PartialTypes.USER)\n        ? guild.client.users._add({ id: data.user_id })\n        : guild.client.users.cache.get(data.user_id)\n      : null;\n\n    /**\n     * An entry in the audit log representing a specific change.\n     * @typedef {Object} AuditLogChange\n     * @property {string} key The property that was changed, e.g. `nick` for nickname changes\n     * @property {*} [old] The old value of the change, e.g. for nicknames, the old nickname\n     * @property {*} [new] The new value of the change, e.g. for nicknames, the new nickname\n     */\n\n    /**\n     * Specific property changes\n     * @type {?AuditLogChange[]}\n     */\n    this.changes = data.changes?.map(c => ({ key: c.key, old: c.old_value, new: c.new_value })) ?? null;\n\n    /**\n     * The entry's id\n     * @type {Snowflake}\n     */\n    this.id = data.id;\n\n    /**\n     * Any extra data from the entry\n     * @type {?(Object|Role|GuildMember)}\n     */\n    this.extra = null;\n    switch (data.action_type) {\n      case Actions.MEMBER_PRUNE:\n        this.extra = {\n          removed: Number(data.options.members_removed),\n          days: Number(data.options.delete_member_days),\n        };\n        break;\n\n      case Actions.MEMBER_MOVE:\n      case Actions.MESSAGE_DELETE:\n      case Actions.MESSAGE_BULK_DELETE:\n        this.extra = {\n          channel: guild.channels.cache.get(data.options.channel_id) ?? { id: data.options.channel_id },\n          count: Number(data.options.count),\n        };\n        break;\n\n      case Actions.MESSAGE_PIN:\n      case Actions.MESSAGE_UNPIN:\n        this.extra = {\n          channel: guild.client.channels.cache.get(data.options.channel_id) ?? { id: data.options.channel_id },\n          messageId: data.options.message_id,\n        };\n        break;\n\n      case Actions.MEMBER_DISCONNECT:\n        this.extra = {\n          count: Number(data.options.count),\n        };\n        break;\n\n      case Actions.CHANNEL_OVERWRITE_CREATE:\n      case Actions.CHANNEL_OVERWRITE_UPDATE:\n      case Actions.CHANNEL_OVERWRITE_DELETE:\n        switch (Number(data.options.type)) {\n          case OverwriteTypes.role:\n            this.extra = guild.roles.cache.get(data.options.id) ?? {\n              id: data.options.id,\n              name: data.options.role_name,\n              type: OverwriteTypes[OverwriteTypes.role],\n            };\n            break;\n\n          case OverwriteTypes.member:\n            this.extra = guild.members.cache.get(data.options.id) ?? {\n              id: data.options.id,\n              type: OverwriteTypes[OverwriteTypes.member],\n            };\n            break;\n\n          default:\n            break;\n        }\n        break;\n\n      case Actions.STAGE_INSTANCE_CREATE:\n      case Actions.STAGE_INSTANCE_DELETE:\n      case Actions.STAGE_INSTANCE_UPDATE:\n        this.extra = {\n          channel: guild.client.channels.cache.get(data.options?.channel_id) ?? { id: data.options?.channel_id },\n        };\n        break;\n\n      default:\n        break;\n    }\n\n    /**\n     * The target of this entry\n     * @type {?AuditLogEntryTarget}\n     */\n    this.target = null;\n    if (targetType === Targets.UNKNOWN) {\n      this.target = this.changes.reduce((o, c) => {\n        o[c.key] = c.new ?? c.old;\n        return o;\n      }, {});\n      this.target.id = data.target_id;\n      // MEMBER_DISCONNECT and similar types do not provide a target_id.\n    } else if (targetType === Targets.USER && data.target_id) {\n      this.target = guild.client.options.partials.includes(PartialTypes.USER)\n        ? guild.client.users._add({ id: data.target_id })\n        : guild.client.users.cache.get(data.target_id);\n    } else if (targetType === Targets.GUILD) {\n      this.target = guild.client.guilds.cache.get(data.target_id);\n    } else if (targetType === Targets.WEBHOOK) {\n      this.target =\n        logs.webhooks.get(data.target_id) ??\n        new Webhook(\n          guild.client,\n          this.changes.reduce(\n            (o, c) => {\n              o[c.key] = c.new ?? c.old;\n              return o;\n            },\n            {\n              id: data.target_id,\n              guild_id: guild.id,\n            },\n          ),\n        );\n    } else if (targetType === Targets.INVITE) {\n      let change = this.changes.find(c => c.key === 'code');\n      change = change.new ?? change.old;\n\n      this.target =\n        guild.invites.cache.get(change) ??\n        new Invite(\n          guild.client,\n          this.changes.reduce(\n            (o, c) => {\n              o[c.key] = c.new ?? c.old;\n              return o;\n            },\n            { guild },\n          ),\n        );\n    } else if (targetType === Targets.MESSAGE) {\n      // Discord sends a channel id for the MESSAGE_BULK_DELETE action type.\n      this.target =\n        data.action_type === Actions.MESSAGE_BULK_DELETE\n          ? guild.channels.cache.get(data.target_id) ?? { id: data.target_id }\n          : guild.client.users.cache.get(data.target_id);\n    } else if (targetType === Targets.INTEGRATION) {\n      this.target =\n        logs.integrations.get(data.target_id) ??\n        new Integration(\n          guild.client,\n          this.changes.reduce(\n            (o, c) => {\n              o[c.key] = c.new ?? c.old;\n              return o;\n            },\n            { id: data.target_id },\n          ),\n          guild,\n        );\n    } else if (targetType === Targets.CHANNEL || targetType === Targets.THREAD) {\n      this.target =\n        guild.channels.cache.get(data.target_id) ??\n        this.changes.reduce(\n          (o, c) => {\n            o[c.key] = c.new ?? c.old;\n            return o;\n          },\n          { id: data.target_id },\n        );\n    } else if (targetType === Targets.STAGE_INSTANCE) {\n      this.target =\n        guild.stageInstances.cache.get(data.target_id) ??\n        new StageInstance(\n          guild.client,\n          this.changes.reduce(\n            (o, c) => {\n              o[c.key] = c.new ?? c.old;\n              return o;\n            },\n            {\n              id: data.target_id,\n              channel_id: data.options?.channel_id,\n              guild_id: guild.id,\n            },\n          ),\n        );\n    } else if (targetType === Targets.STICKER) {\n      this.target =\n        guild.stickers.cache.get(data.target_id) ??\n        new Sticker(\n          guild.client,\n          this.changes.reduce(\n            (o, c) => {\n              o[c.key] = c.new ?? c.old;\n              return o;\n            },\n            { id: data.target_id },\n          ),\n        );\n    } else if (targetType === Targets.GUILD_SCHEDULED_EVENT) {\n      this.target =\n        guild.scheduledEvents.cache.get(data.target_id) ??\n        new GuildScheduledEvent(\n          guild.client,\n          this.changes.reduce(\n            (o, c) => {\n              o[c.key] = c.new ?? c.old;\n              return o;\n            },\n            { id: data.target_id, guild_id: guild.id },\n          ),\n        );\n    } else if (data.target_id) {\n      this.target = guild[`${targetType.toLowerCase()}s`]?.cache.get(data.target_id) ?? { id: data.target_id };\n    }\n  }\n\n  /**\n   * The timestamp this entry was created at\n   * @type {number}\n   * @readonly\n   */\n  get createdTimestamp() {\n    return SnowflakeUtil.timestampFrom(this.id);\n  }\n\n  /**\n   * The time this entry was created at\n   * @type {Date}\n   * @readonly\n   */\n  get createdAt() {\n    return new Date(this.createdTimestamp);\n  }\n\n  toJSON() {\n    return Util.flatten(this, { createdTimestamp: true });\n  }\n}\n\nGuildAuditLogs.Actions = Actions;\nGuildAuditLogs.Targets = Targets;\nGuildAuditLogs.Entry = GuildAuditLogsEntry;\n\nmodule.exports = GuildAuditLogs;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/GuildAuditLogs.js?")},"./node_modules/@citizenfx/discord.js/src/structures/GuildBan.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/GuildBan.js ***!
  \***********************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Base = __webpack_require__(/*! ./Base */ \"./node_modules/@citizenfx/discord.js/src/structures/Base.js\");\n\n/**\n * Represents a ban in a guild on Discord.\n * @extends {Base}\n */\nclass GuildBan extends Base {\n  constructor(client, data, guild) {\n    super(client);\n\n    /**\n     * The guild in which the ban is\n     * @type {Guild}\n     */\n    this.guild = guild;\n\n    this._patch(data);\n  }\n\n  _patch(data) {\n    if ('user' in data) {\n      /**\n       * The user this ban applies to\n       * @type {User}\n       */\n      this.user = this.client.users._add(data.user, true);\n    }\n\n    if ('reason' in data) {\n      /**\n       * The reason for the ban\n       * @type {?string}\n       */\n      this.reason = data.reason;\n    }\n  }\n\n  /**\n   * Whether this GuildBan is partial. If the reason is not provided the value is null\n   * @type {boolean}\n   * @readonly\n   */\n  get partial() {\n    return !('reason' in this);\n  }\n\n  /**\n   * Fetches this GuildBan.\n   * @param {boolean} [force=true] Whether to skip the cache check and request the API\n   * @returns {Promise<GuildBan>}\n   */\n  fetch(force = true) {\n    return this.guild.bans.fetch({ user: this.user, cache: true, force });\n  }\n}\n\nmodule.exports = GuildBan;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/GuildBan.js?")},"./node_modules/@citizenfx/discord.js/src/structures/GuildChannel.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/GuildChannel.js ***!
  \***************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Channel } = __webpack_require__(/*! ./Channel */ \"./node_modules/@citizenfx/discord.js/src/structures/Channel.js\");\nconst PermissionOverwrites = __webpack_require__(/*! ./PermissionOverwrites */ \"./node_modules/@citizenfx/discord.js/src/structures/PermissionOverwrites.js\");\nconst { Error } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst PermissionOverwriteManager = __webpack_require__(/*! ../managers/PermissionOverwriteManager */ \"./node_modules/@citizenfx/discord.js/src/managers/PermissionOverwriteManager.js\");\nconst { ChannelTypes, VoiceBasedChannelTypes } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst Permissions = __webpack_require__(/*! ../util/Permissions */ \"./node_modules/@citizenfx/discord.js/src/util/Permissions.js\");\nconst Util = __webpack_require__(/*! ../util/Util */ \"./node_modules/@citizenfx/discord.js/src/util/Util.js\");\n\n/**\n * Represents a guild channel from any of the following:\n * - {@link TextChannel}\n * - {@link VoiceChannel}\n * - {@link CategoryChannel}\n * - {@link NewsChannel}\n * - {@link StoreChannel}\n * - {@link StageChannel}\n * @extends {Channel}\n * @abstract\n */\nclass GuildChannel extends Channel {\n  constructor(guild, data, client, immediatePatch = true) {\n    super(guild?.client ?? client, data, false);\n\n    /**\n     * The guild the channel is in\n     * @type {Guild}\n     */\n    this.guild = guild;\n\n    /**\n     * The id of the guild the channel is in\n     * @type {Snowflake}\n     */\n    this.guildId = guild?.id ?? data.guild_id;\n\n    this.parentId = this.parentId ?? null;\n    /**\n     * A manager of permission overwrites that belong to this channel\n     * @type {PermissionOverwriteManager}\n     */\n    this.permissionOverwrites = new PermissionOverwriteManager(this);\n\n    if (data && immediatePatch) this._patch(data);\n  }\n\n  _patch(data) {\n    super._patch(data);\n\n    if ('name' in data) {\n      /**\n       * The name of the guild channel\n       * @type {string}\n       */\n      this.name = data.name;\n    }\n\n    if ('position' in data) {\n      /**\n       * The raw position of the channel from Discord\n       * @type {number}\n       */\n      this.rawPosition = data.position;\n    }\n\n    if ('guild_id' in data) {\n      this.guildId = data.guild_id;\n    }\n\n    if ('parent_id' in data) {\n      /**\n       * The id of the category parent of this channel\n       * @type {?Snowflake}\n       */\n      this.parentId = data.parent_id;\n    }\n\n    if ('permission_overwrites' in data) {\n      this.permissionOverwrites.cache.clear();\n      for (const overwrite of data.permission_overwrites) {\n        this.permissionOverwrites._add(overwrite);\n      }\n    }\n  }\n\n  _clone() {\n    const clone = super._clone();\n    clone.permissionOverwrites = new PermissionOverwriteManager(clone, this.permissionOverwrites.cache.values());\n    return clone;\n  }\n\n  /**\n   * The category parent of this channel\n   * @type {?CategoryChannel}\n   * @readonly\n   */\n  get parent() {\n    return this.guild.channels.resolve(this.parentId);\n  }\n\n  /**\n   * If the permissionOverwrites match the parent channel, null if no parent\n   * @type {?boolean}\n   * @readonly\n   */\n  get permissionsLocked() {\n    if (!this.parent) return null;\n\n    // Get all overwrites\n    const overwriteIds = new Set([\n      ...this.permissionOverwrites.cache.keys(),\n      ...this.parent.permissionOverwrites.cache.keys(),\n    ]);\n\n    // Compare all overwrites\n    return [...overwriteIds].every(key => {\n      const channelVal = this.permissionOverwrites.cache.get(key);\n      const parentVal = this.parent.permissionOverwrites.cache.get(key);\n\n      // Handle empty overwrite\n      if (\n        (!channelVal &&\n          parentVal.deny.bitfield === Permissions.defaultBit &&\n          parentVal.allow.bitfield === Permissions.defaultBit) ||\n        (!parentVal &&\n          channelVal.deny.bitfield === Permissions.defaultBit &&\n          channelVal.allow.bitfield === Permissions.defaultBit)\n      ) {\n        return true;\n      }\n\n      // Compare overwrites\n      return (\n        typeof channelVal !== 'undefined' &&\n        typeof parentVal !== 'undefined' &&\n        channelVal.deny.bitfield === parentVal.deny.bitfield &&\n        channelVal.allow.bitfield === parentVal.allow.bitfield\n      );\n    });\n  }\n\n  /**\n   * The position of the channel\n   * @type {number}\n   * @readonly\n   */\n  get position() {\n    const sorted = this.guild._sortedChannels(this);\n    return [...sorted.values()].indexOf(sorted.get(this.id));\n  }\n\n  /**\n   * Gets the overall set of permissions for a member or role in this channel, taking into account channel overwrites.\n   * @param {GuildMemberResolvable|RoleResolvable} memberOrRole The member or role to obtain the overall permissions for\n   * @param {boolean} [checkAdmin=true] Whether having `ADMINISTRATOR` will return all permissions\n   * @returns {?Readonly<Permissions>}\n   */\n  permissionsFor(memberOrRole, checkAdmin = true) {\n    const member = this.guild.members.resolve(memberOrRole);\n    if (member) return this.memberPermissions(member, checkAdmin);\n    const role = this.guild.roles.resolve(memberOrRole);\n    return role && this.rolePermissions(role, checkAdmin);\n  }\n\n  overwritesFor(member, verified = false, roles = null) {\n    if (!verified) member = this.guild.members.resolve(member);\n    if (!member) return [];\n\n    roles ??= member.roles.cache;\n    const roleOverwrites = [];\n    let memberOverwrites;\n    let everyoneOverwrites;\n\n    for (const overwrite of this.permissionOverwrites.cache.values()) {\n      if (overwrite.id === this.guild.id) {\n        everyoneOverwrites = overwrite;\n      } else if (roles.has(overwrite.id)) {\n        roleOverwrites.push(overwrite);\n      } else if (overwrite.id === member.id) {\n        memberOverwrites = overwrite;\n      }\n    }\n\n    return {\n      everyone: everyoneOverwrites,\n      roles: roleOverwrites,\n      member: memberOverwrites,\n    };\n  }\n\n  /**\n   * Gets the overall set of permissions for a member in this channel, taking into account channel overwrites.\n   * @param {GuildMember} member The member to obtain the overall permissions for\n   * @param {boolean} checkAdmin=true Whether having `ADMINISTRATOR` will return all permissions\n   * @returns {Readonly<Permissions>}\n   * @private\n   */\n  memberPermissions(member, checkAdmin) {\n    if (checkAdmin && member.id === this.guild.ownerId) return new Permissions(Permissions.ALL).freeze();\n\n    const roles = member.roles.cache;\n    const permissions = new Permissions(roles.map(role => role.permissions));\n\n    if (checkAdmin && permissions.has(Permissions.FLAGS.ADMINISTRATOR)) {\n      return new Permissions(Permissions.ALL).freeze();\n    }\n\n    const overwrites = this.overwritesFor(member, true, roles);\n\n    return permissions\n      .remove(overwrites.everyone?.deny ?? Permissions.defaultBit)\n      .add(overwrites.everyone?.allow ?? Permissions.defaultBit)\n      .remove(overwrites.roles.length > 0 ? overwrites.roles.map(role => role.deny) : Permissions.defaultBit)\n      .add(overwrites.roles.length > 0 ? overwrites.roles.map(role => role.allow) : Permissions.defaultBit)\n      .remove(overwrites.member?.deny ?? Permissions.defaultBit)\n      .add(overwrites.member?.allow ?? Permissions.defaultBit)\n      .freeze();\n  }\n\n  /**\n   * Gets the overall set of permissions for a role in this channel, taking into account channel overwrites.\n   * @param {Role} role The role to obtain the overall permissions for\n   * @param {boolean} checkAdmin Whether having `ADMINISTRATOR` will return all permissions\n   * @returns {Readonly<Permissions>}\n   * @private\n   */\n  rolePermissions(role, checkAdmin) {\n    if (checkAdmin && role.permissions.has(Permissions.FLAGS.ADMINISTRATOR)) {\n      return new Permissions(Permissions.ALL).freeze();\n    }\n\n    const everyoneOverwrites = this.permissionOverwrites.cache.get(this.guild.id);\n    const roleOverwrites = this.permissionOverwrites.cache.get(role.id);\n\n    return role.permissions\n      .remove(everyoneOverwrites?.deny ?? Permissions.defaultBit)\n      .add(everyoneOverwrites?.allow ?? Permissions.defaultBit)\n      .remove(roleOverwrites?.deny ?? Permissions.defaultBit)\n      .add(roleOverwrites?.allow ?? Permissions.defaultBit)\n      .freeze();\n  }\n\n  /**\n   * Locks in the permission overwrites from the parent channel.\n   * @returns {Promise<GuildChannel>}\n   */\n  lockPermissions() {\n    if (!this.parent) return Promise.reject(new Error('GUILD_CHANNEL_ORPHAN'));\n    const permissionOverwrites = this.parent.permissionOverwrites.cache.map(overwrite => overwrite.toJSON());\n    return this.edit({ permissionOverwrites });\n  }\n\n  /**\n   * A collection of cached members of this channel, mapped by their ids.\n   * Members that can view this channel, if the channel is text-based.\n   * Members in the channel, if the channel is voice-based.\n   * @type {Collection<Snowflake, GuildMember>}\n   * @readonly\n   */\n  get members() {\n    return this.guild.members.cache.filter(m => this.permissionsFor(m).has(Permissions.FLAGS.VIEW_CHANNEL, false));\n  }\n\n  /**\n   * The data for a guild channel.\n   * @typedef {Object} ChannelData\n   * @property {string} [name] The name of the channel\n   * @property {ChannelType} [type] The type of the channel (only conversion between text and news is supported)\n   * @property {number} [position] The position of the channel\n   * @property {string} [topic] The topic of the text channel\n   * @property {boolean} [nsfw] Whether the channel is NSFW\n   * @property {number} [bitrate] The bitrate of the voice channel\n   * @property {number} [userLimit] The user limit of the voice channel\n   * @property {?CategoryChannelResolvable} [parent] The parent of the channel\n   * @property {boolean} [lockPermissions]\n   * Lock the permissions of the channel to what the parent's permissions are\n   * @property {OverwriteResolvable[]|Collection<Snowflake, OverwriteResolvable>} [permissionOverwrites]\n   * Permission overwrites for the channel\n   * @property {number} [rateLimitPerUser] The rate limit per user (slowmode) for the channel in seconds\n   * @property {ThreadAutoArchiveDuration} [defaultAutoArchiveDuration]\n   * The default auto archive duration for all new threads in this channel\n   * @property {?string} [rtcRegion] The RTC region of the channel\n   */\n\n  /**\n   * Edits the channel.\n   * @param {ChannelData} data The new data for the channel\n   * @param {string} [reason] Reason for editing this channel\n   * @returns {Promise<GuildChannel>}\n   * @example\n   * // Edit a channel\n   * channel.edit({ name: 'new-channel' })\n   *   .then(console.log)\n   *   .catch(console.error);\n   */\n  async edit(data, reason) {\n    data.parent &&= this.client.channels.resolveId(data.parent);\n\n    if (typeof data.position !== 'undefined') {\n      const updatedChannels = await Util.setPosition(\n        this,\n        data.position,\n        false,\n        this.guild._sortedChannels(this),\n        this.client.api.guilds(this.guild.id).channels,\n        reason,\n      );\n      this.client.actions.GuildChannelsPositionUpdate.handle({\n        guild_id: this.guild.id,\n        channels: updatedChannels,\n      });\n    }\n\n    let permission_overwrites;\n\n    if (data.permissionOverwrites) {\n      permission_overwrites = data.permissionOverwrites.map(o => PermissionOverwrites.resolve(o, this.guild));\n    }\n\n    if (data.lockPermissions) {\n      if (data.parent) {\n        const newParent = this.guild.channels.resolve(data.parent);\n        if (newParent?.type === 'GUILD_CATEGORY') {\n          permission_overwrites = newParent.permissionOverwrites.cache.map(o =>\n            PermissionOverwrites.resolve(o, this.guild),\n          );\n        }\n      } else if (this.parent) {\n        permission_overwrites = this.parent.permissionOverwrites.cache.map(o =>\n          PermissionOverwrites.resolve(o, this.guild),\n        );\n      }\n    }\n\n    const newData = await this.client.api.channels(this.id).patch({\n      data: {\n        name: (data.name ?? this.name).trim(),\n        type: ChannelTypes[data.type],\n        topic: data.topic,\n        nsfw: data.nsfw,\n        bitrate: data.bitrate ?? this.bitrate,\n        user_limit: data.userLimit ?? this.userLimit,\n        rtc_region: data.rtcRegion ?? this.rtcRegion,\n        parent_id: data.parent,\n        lock_permissions: data.lockPermissions,\n        rate_limit_per_user: data.rateLimitPerUser,\n        default_auto_archive_duration: data.defaultAutoArchiveDuration,\n        permission_overwrites,\n      },\n      reason,\n    });\n\n    return this.client.actions.ChannelUpdate.handle(newData).updated;\n  }\n\n  /**\n   * Sets a new name for the guild channel.\n   * @param {string} name The new name for the guild channel\n   * @param {string} [reason] Reason for changing the guild channel's name\n   * @returns {Promise<GuildChannel>}\n   * @example\n   * // Set a new channel name\n   * channel.setName('not_general')\n   *   .then(newChannel => console.log(`Channel's new name is ${newChannel.name}`))\n   *   .catch(console.error);\n   */\n  setName(name, reason) {\n    return this.edit({ name }, reason);\n  }\n\n  /**\n   * Options used to set the parent of a channel.\n   * @typedef {Object} SetParentOptions\n   * @property {boolean} [lockPermissions=true] Whether to lock the permissions to what the parent's permissions are\n   * @property {string} [reason] The reason for modifying the parent of the channel\n   */\n\n  /**\n   * Sets the parent of this channel.\n   * @param {?CategoryChannelResolvable} channel The category channel to set as the parent\n   * @param {SetParentOptions} [options={}] The options for setting the parent\n   * @returns {Promise<GuildChannel>}\n   * @example\n   * // Add a parent to a channel\n   * message.channel.setParent('355908108431917066', { lockPermissions: false })\n   *   .then(channel => console.log(`New parent of ${message.channel.name}: ${channel.name}`))\n   *   .catch(console.error);\n   */\n  setParent(channel, { lockPermissions = true, reason } = {}) {\n    return this.edit(\n      {\n        parent: channel ?? null,\n        lockPermissions,\n      },\n      reason,\n    );\n  }\n\n  /**\n   * Options used to set the position of a channel.\n   * @typedef {Object} SetChannelPositionOptions\n   * @property {boolean} [relative=false] Whether or not to change the position relative to its current value\n   * @property {string} [reason] The reason for changing the position\n   */\n\n  /**\n   * Sets a new position for the guild channel.\n   * @param {number} position The new position for the guild channel\n   * @param {SetChannelPositionOptions} [options] Options for setting position\n   * @returns {Promise<GuildChannel>}\n   * @example\n   * // Set a new channel position\n   * channel.setPosition(2)\n   *   .then(newChannel => console.log(`Channel's new position is ${newChannel.position}`))\n   *   .catch(console.error);\n   */\n  async setPosition(position, { relative, reason } = {}) {\n    const updatedChannels = await Util.setPosition(\n      this,\n      position,\n      relative,\n      this.guild._sortedChannels(this),\n      this.client.api.guilds(this.guild.id).channels,\n      reason,\n    );\n    this.client.actions.GuildChannelsPositionUpdate.handle({\n      guild_id: this.guild.id,\n      channels: updatedChannels,\n    });\n    return this;\n  }\n\n  /**\n   * Data that can be resolved to an Application. This can be:\n   * * An Application\n   * * An Activity with associated Application\n   * * A Snowflake\n   * @typedef {Application|Snowflake} ApplicationResolvable\n   */\n\n  /**\n   * Options used to clone a guild channel.\n   * @typedef {GuildChannelCreateOptions} GuildChannelCloneOptions\n   * @property {string} [name=this.name] Name of the new channel\n   */\n\n  /**\n   * Clones this channel.\n   * @param {GuildChannelCloneOptions} [options] The options for cloning this channel\n   * @returns {Promise<GuildChannel>}\n   */\n  clone(options = {}) {\n    return this.guild.channels.create(options.name ?? this.name, {\n      permissionOverwrites: this.permissionOverwrites.cache,\n      topic: this.topic,\n      type: this.type,\n      nsfw: this.nsfw,\n      parent: this.parent,\n      bitrate: this.bitrate,\n      userLimit: this.userLimit,\n      rateLimitPerUser: this.rateLimitPerUser,\n      position: this.rawPosition,\n      reason: null,\n      ...options,\n    });\n  }\n\n  /**\n   * Checks if this channel has the same type, topic, position, name, overwrites, and id as another channel.\n   * In most cases, a simple `channel.id === channel2.id` will do, and is much faster too.\n   * @param {GuildChannel} channel Channel to compare with\n   * @returns {boolean}\n   */\n  equals(channel) {\n    let equal =\n      channel &&\n      this.id === channel.id &&\n      this.type === channel.type &&\n      this.topic === channel.topic &&\n      this.position === channel.position &&\n      this.name === channel.name;\n\n    if (equal) {\n      if (this.permissionOverwrites && channel.permissionOverwrites) {\n        equal = this.permissionOverwrites.cache.equals(channel.permissionOverwrites.cache);\n      } else {\n        equal = !this.permissionOverwrites && !channel.permissionOverwrites;\n      }\n    }\n\n    return equal;\n  }\n\n  /**\n   * Whether the channel is deletable by the client user\n   * @type {boolean}\n   * @readonly\n   */\n  get deletable() {\n    return this.manageable && this.guild.rulesChannelId !== this.id && this.guild.publicUpdatesChannelId !== this.id;\n  }\n\n  /**\n   * Whether the channel is manageable by the client user\n   * @type {boolean}\n   * @readonly\n   */\n  get manageable() {\n    if (this.client.user.id === this.guild.ownerId) return true;\n    const permissions = this.permissionsFor(this.client.user);\n    if (!permissions) return false;\n\n    // This flag allows managing even if timed out\n    if (permissions.has(Permissions.FLAGS.ADMINISTRATOR, false)) return true;\n    if (this.guild.me.communicationDisabledUntilTimestamp > Date.now()) return false;\n\n    const bitfield = VoiceBasedChannelTypes.includes(this.type)\n      ? Permissions.FLAGS.MANAGE_CHANNELS | Permissions.FLAGS.CONNECT\n      : Permissions.FLAGS.VIEW_CHANNEL | Permissions.FLAGS.MANAGE_CHANNELS;\n    return permissions.has(bitfield, false);\n  }\n\n  /**\n   * Whether the channel is viewable by the client user\n   * @type {boolean}\n   * @readonly\n   */\n  get viewable() {\n    if (this.client.user.id === this.guild.ownerId) return true;\n    const permissions = this.permissionsFor(this.client.user);\n    if (!permissions) return false;\n    return permissions.has(Permissions.FLAGS.VIEW_CHANNEL, false);\n  }\n\n  /**\n   * Deletes this channel.\n   * @param {string} [reason] Reason for deleting this channel\n   * @returns {Promise<GuildChannel>}\n   * @example\n   * // Delete the channel\n   * channel.delete('making room for new channels')\n   *   .then(console.log)\n   *   .catch(console.error);\n   */\n  async delete(reason) {\n    await this.client.api.channels(this.id).delete({ reason });\n    return this;\n  }\n}\n\nmodule.exports = GuildChannel;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/GuildChannel.js?")},"./node_modules/@citizenfx/discord.js/src/structures/GuildEmoji.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/GuildEmoji.js ***!
  \*************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst BaseGuildEmoji = __webpack_require__(/*! ./BaseGuildEmoji */ \"./node_modules/@citizenfx/discord.js/src/structures/BaseGuildEmoji.js\");\nconst { Error } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst GuildEmojiRoleManager = __webpack_require__(/*! ../managers/GuildEmojiRoleManager */ \"./node_modules/@citizenfx/discord.js/src/managers/GuildEmojiRoleManager.js\");\nconst Permissions = __webpack_require__(/*! ../util/Permissions */ \"./node_modules/@citizenfx/discord.js/src/util/Permissions.js\");\n\n/**\n * Represents a custom emoji.\n * @extends {BaseGuildEmoji}\n */\nclass GuildEmoji extends BaseGuildEmoji {\n  constructor(client, data, guild) {\n    super(client, data, guild);\n\n    /**\n     * The user who created this emoji\n     * @type {?User}\n     */\n    this.author = null;\n\n    /**\n     * Array of role ids this emoji is active for\n     * @name GuildEmoji#_roles\n     * @type {Snowflake[]}\n     * @private\n     */\n    Object.defineProperty(this, '_roles', { value: [], writable: true });\n\n    this._patch(data);\n  }\n\n  /**\n   * The guild this emoji is part of\n   * @type {Guild}\n   * @name GuildEmoji#guild\n   */\n\n  _clone() {\n    const clone = super._clone();\n    clone._roles = this._roles.slice();\n    return clone;\n  }\n\n  _patch(data) {\n    super._patch(data);\n\n    if (data.user) this.author = this.client.users._add(data.user);\n    if (data.roles) this._roles = data.roles;\n  }\n\n  /**\n   * Whether the emoji is deletable by the client user\n   * @type {boolean}\n   * @readonly\n   */\n  get deletable() {\n    if (!this.guild.me) throw new Error('GUILD_UNCACHED_ME');\n    return !this.managed && this.guild.me.permissions.has(Permissions.FLAGS.MANAGE_EMOJIS_AND_STICKERS);\n  }\n\n  /**\n   * A manager for roles this emoji is active for.\n   * @type {GuildEmojiRoleManager}\n   * @readonly\n   */\n  get roles() {\n    return new GuildEmojiRoleManager(this);\n  }\n\n  /**\n   * Fetches the author for this emoji\n   * @returns {Promise<User>}\n   */\n  async fetchAuthor() {\n    if (this.managed) {\n      throw new Error('EMOJI_MANAGED');\n    } else {\n      if (!this.guild.me) throw new Error('GUILD_UNCACHED_ME');\n      if (!this.guild.me.permissions.has(Permissions.FLAGS.MANAGE_EMOJIS_AND_STICKERS)) {\n        throw new Error('MISSING_MANAGE_EMOJIS_AND_STICKERS_PERMISSION', this.guild);\n      }\n    }\n    const data = await this.client.api.guilds(this.guild.id).emojis(this.id).get();\n    this._patch(data);\n    return this.author;\n  }\n\n  /**\n   * Data for editing an emoji.\n   * @typedef {Object} GuildEmojiEditData\n   * @property {string} [name] The name of the emoji\n   * @property {Collection<Snowflake, Role>|RoleResolvable[]} [roles] Roles to restrict emoji to\n   */\n\n  /**\n   * Edits the emoji.\n   * @param {GuildEmojiEditData} data The new data for the emoji\n   * @param {string} [reason] Reason for editing this emoji\n   * @returns {Promise<GuildEmoji>}\n   * @example\n   * // Edit an emoji\n   * emoji.edit({ name: 'newemoji' })\n   *   .then(e => console.log(`Edited emoji ${e}`))\n   *   .catch(console.error);\n   */\n  async edit(data, reason) {\n    const roles = data.roles?.map(r => r.id ?? r);\n    const newData = await this.client.api\n      .guilds(this.guild.id)\n      .emojis(this.id)\n      .patch({\n        data: {\n          name: data.name,\n          roles,\n        },\n        reason,\n      });\n    const clone = this._clone();\n    clone._patch(newData);\n    return clone;\n  }\n\n  /**\n   * Sets the name of the emoji.\n   * @param {string} name The new name for the emoji\n   * @param {string} [reason] Reason for changing the emoji's name\n   * @returns {Promise<GuildEmoji>}\n   */\n  setName(name, reason) {\n    return this.edit({ name }, reason);\n  }\n\n  /**\n   * Deletes the emoji.\n   * @param {string} [reason] Reason for deleting the emoji\n   * @returns {Promise<GuildEmoji>}\n   */\n  async delete(reason) {\n    await this.client.api.guilds(this.guild.id).emojis(this.id).delete({ reason });\n    return this;\n  }\n\n  /**\n   * Whether this emoji is the same as another one.\n   * @param {GuildEmoji|APIEmoji} other The emoji to compare it to\n   * @returns {boolean}\n   */\n  equals(other) {\n    if (other instanceof GuildEmoji) {\n      return (\n        other.id === this.id &&\n        other.name === this.name &&\n        other.managed === this.managed &&\n        other.available === this.available &&\n        other.requiresColons === this.requiresColons &&\n        other.roles.cache.size === this.roles.cache.size &&\n        other.roles.cache.every(role => this.roles.cache.has(role.id))\n      );\n    } else {\n      return (\n        other.id === this.id &&\n        other.name === this.name &&\n        other.roles.length === this.roles.cache.size &&\n        other.roles.every(role => this.roles.cache.has(role))\n      );\n    }\n  }\n}\n\nmodule.exports = GuildEmoji;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/GuildEmoji.js?")},"./node_modules/@citizenfx/discord.js/src/structures/GuildMember.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/GuildMember.js ***!
  \**************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nconst process = __webpack_require__(/*! node:process */ \"node:process\");\nconst Base = __webpack_require__(/*! ./Base */ \"./node_modules/@citizenfx/discord.js/src/structures/Base.js\");\nconst VoiceState = __webpack_require__(/*! ./VoiceState */ \"./node_modules/@citizenfx/discord.js/src/structures/VoiceState.js\");\nconst TextBasedChannel = __webpack_require__(/*! ./interfaces/TextBasedChannel */ \"./node_modules/@citizenfx/discord.js/src/structures/interfaces/TextBasedChannel.js\");\nconst { Error } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst GuildMemberRoleManager = __webpack_require__(/*! ../managers/GuildMemberRoleManager */ \"./node_modules/@citizenfx/discord.js/src/managers/GuildMemberRoleManager.js\");\nconst Permissions = __webpack_require__(/*! ../util/Permissions */ \"./node_modules/@citizenfx/discord.js/src/util/Permissions.js\");\n\n/**\n * @type {WeakSet<GuildMember>}\n * @private\n * @internal\n */\nconst deletedGuildMembers = new WeakSet();\nlet deprecationEmittedForDeleted = false;\n\n/**\n * Represents a member of a guild on Discord.\n * @implements {TextBasedChannel}\n * @extends {Base}\n */\nclass GuildMember extends Base {\n  constructor(client, data, guild) {\n    super(client);\n\n    /**\n     * The guild that this member is part of\n     * @type {Guild}\n     */\n    this.guild = guild;\n\n    /**\n     * The timestamp the member joined the guild at\n     * @type {?number}\n     */\n    this.joinedTimestamp = null;\n\n    /**\n     * The last timestamp this member started boosting the guild\n     * @type {?number}\n     */\n    this.premiumSinceTimestamp = null;\n\n    /**\n     * The nickname of this member, if they have one\n     * @type {?string}\n     */\n    this.nickname = null;\n\n    /**\n     * Whether this member has yet to pass the guild's membership gate\n     * @type {boolean}\n     */\n    this.pending = false;\n\n    /**\n     * The timestamp this member's timeout will be removed\n     * @type {?number}\n     */\n    this.communicationDisabledUntilTimestamp = null;\n\n    this._roles = [];\n    if (data) this._patch(data);\n  }\n\n  _patch(data) {\n    if ('user' in data) {\n      /**\n       * The user that this guild member instance represents\n       * @type {?User}\n       */\n      this.user = this.client.users._add(data.user, true);\n    }\n\n    if ('nick' in data) this.nickname = data.nick;\n    if ('avatar' in data) {\n      /**\n       * The guild member's avatar hash\n       * @type {?string}\n       */\n      this.avatar = data.avatar;\n    } else if (typeof this.avatar !== 'string') {\n      this.avatar = null;\n    }\n    if ('joined_at' in data) this.joinedTimestamp = new Date(data.joined_at).getTime();\n    if ('premium_since' in data) {\n      this.premiumSinceTimestamp = data.premium_since ? new Date(data.premium_since).getTime() : null;\n    }\n    if ('roles' in data) this._roles = data.roles;\n    this.pending = data.pending ?? false;\n\n    if ('communication_disabled_until' in data) {\n      this.communicationDisabledUntilTimestamp =\n        data.communication_disabled_until && Date.parse(data.communication_disabled_until);\n    }\n  }\n\n  _clone() {\n    const clone = super._clone();\n    clone._roles = this._roles.slice();\n    return clone;\n  }\n\n  /**\n   * Whether or not the structure has been deleted\n   * @type {boolean}\n   * @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091\n   */\n  get deleted() {\n    if (!deprecationEmittedForDeleted) {\n      deprecationEmittedForDeleted = true;\n      process.emitWarning(\n        'GuildMember#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.',\n        'DeprecationWarning',\n      );\n    }\n\n    return deletedGuildMembers.has(this);\n  }\n\n  set deleted(value) {\n    if (!deprecationEmittedForDeleted) {\n      deprecationEmittedForDeleted = true;\n      process.emitWarning(\n        'GuildMember#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.',\n        'DeprecationWarning',\n      );\n    }\n\n    if (value) deletedGuildMembers.add(this);\n    else deletedGuildMembers.delete(this);\n  }\n\n  /**\n   * Whether this GuildMember is a partial\n   * @type {boolean}\n   * @readonly\n   */\n  get partial() {\n    return this.joinedTimestamp === null;\n  }\n\n  /**\n   * A manager for the roles belonging to this member\n   * @type {GuildMemberRoleManager}\n   * @readonly\n   */\n  get roles() {\n    return new GuildMemberRoleManager(this);\n  }\n\n  /**\n   * The voice state of this member\n   * @type {VoiceState}\n   * @readonly\n   */\n  get voice() {\n    return this.guild.voiceStates.cache.get(this.id) ?? new VoiceState(this.guild, { user_id: this.id });\n  }\n\n  /**\n   * A link to the member's guild avatar.\n   * @param {ImageURLOptions} [options={}] Options for the Image URL\n   * @returns {?string}\n   */\n  avatarURL({ format, size, dynamic } = {}) {\n    if (!this.avatar) return null;\n    return this.client.rest.cdn.GuildMemberAvatar(this.guild.id, this.id, this.avatar, format, size, dynamic);\n  }\n\n  /**\n   * A link to the member's guild avatar if they have one.\n   * Otherwise, a link to their {@link User#displayAvatarURL} will be returned.\n   * @param {ImageURLOptions} [options={}] Options for the Image URL\n   * @returns {string}\n   */\n  displayAvatarURL(options) {\n    return this.avatarURL(options) ?? this.user.displayAvatarURL(options);\n  }\n\n  /**\n   * The time this member joined the guild\n   * @type {?Date}\n   * @readonly\n   */\n  get joinedAt() {\n    return this.joinedTimestamp ? new Date(this.joinedTimestamp) : null;\n  }\n\n  /**\n   * The time this member's timeout will be removed\n   * @type {?Date}\n   * @readonly\n   */\n  get communicationDisabledUntil() {\n    return this.communicationDisabledUntilTimestamp && new Date(this.communicationDisabledUntilTimestamp);\n  }\n\n  /**\n   * The last time this member started boosting the guild\n   * @type {?Date}\n   * @readonly\n   */\n  get premiumSince() {\n    return this.premiumSinceTimestamp ? new Date(this.premiumSinceTimestamp) : null;\n  }\n\n  /**\n   * The presence of this guild member\n   * @type {?Presence}\n   * @readonly\n   */\n  get presence() {\n    return this.guild.presences.resolve(this.id);\n  }\n\n  /**\n   * The displayed color of this member in base 10\n   * @type {number}\n   * @readonly\n   */\n  get displayColor() {\n    return this.roles.color?.color ?? 0;\n  }\n\n  /**\n   * The displayed color of this member in hexadecimal\n   * @type {string}\n   * @readonly\n   */\n  get displayHexColor() {\n    return this.roles.color?.hexColor ?? '#000000';\n  }\n\n  /**\n   * The member's id\n   * @type {Snowflake}\n   * @readonly\n   */\n  get id() {\n    return this.user.id;\n  }\n\n  /**\n   * The nickname of this member, or their username if they don't have one\n   * @type {?string}\n   * @readonly\n   */\n  get displayName() {\n    return this.nickname ?? this.user.username;\n  }\n\n  /**\n   * The overall set of permissions for this member, taking only roles and owner status into account\n   * @type {Readonly<Permissions>}\n   * @readonly\n   */\n  get permissions() {\n    if (this.user.id === this.guild.ownerId) return new Permissions(Permissions.ALL).freeze();\n    return new Permissions(this.roles.cache.map(role => role.permissions)).freeze();\n  }\n\n  /**\n   * Whether the client user is above this user in the hierarchy, according to role position and guild ownership.\n   * This is a prerequisite for many moderative actions.\n   * @type {boolean}\n   * @readonly\n   */\n  get manageable() {\n    if (this.user.id === this.guild.ownerId) return false;\n    if (this.user.id === this.client.user.id) return false;\n    if (this.client.user.id === this.guild.ownerId) return true;\n    if (!this.guild.me) throw new Error('GUILD_UNCACHED_ME');\n    return this.guild.me.roles.highest.comparePositionTo(this.roles.highest) > 0;\n  }\n\n  /**\n   * Whether this member is kickable by the client user\n   * @type {boolean}\n   * @readonly\n   */\n  get kickable() {\n    return this.manageable && this.guild.me.permissions.has(Permissions.FLAGS.KICK_MEMBERS);\n  }\n\n  /**\n   * Whether this member is bannable by the client user\n   * @type {boolean}\n   * @readonly\n   */\n  get bannable() {\n    return this.manageable && this.guild.me.permissions.has(Permissions.FLAGS.BAN_MEMBERS);\n  }\n\n  /**\n   * Whether this member is moderatable by the client user\n   * @type {boolean}\n   * @readonly\n   */\n  get moderatable() {\n    return this.manageable && (this.guild.me?.permissions.has(Permissions.FLAGS.MODERATE_MEMBERS) ?? false);\n  }\n\n  /**\n   * Whether this member is currently timed out\n   * @returns {boolean}\n   */\n  isCommunicationDisabled() {\n    return this.communicationDisabledUntilTimestamp > Date.now();\n  }\n\n  /**\n   * Returns `channel.permissionsFor(guildMember)`. Returns permissions for a member in a guild channel,\n   * taking into account roles and permission overwrites.\n   * @param {GuildChannelResolvable} channel The guild channel to use as context\n   * @returns {Readonly<Permissions>}\n   */\n  permissionsIn(channel) {\n    channel = this.guild.channels.resolve(channel);\n    if (!channel) throw new Error('GUILD_CHANNEL_RESOLVE');\n    return channel.permissionsFor(this);\n  }\n\n  /**\n   * Edits this member.\n   * @param {GuildMemberEditData} data The data to edit the member with\n   * @param {string} [reason] Reason for editing this user\n   * @returns {Promise<GuildMember>}\n   */\n  edit(data, reason) {\n    return this.guild.members.edit(this, data, reason);\n  }\n\n  /**\n   * Sets the nickname for this member.\n   * @param {?string} nick The nickname for the guild member, or `null` if you want to reset their nickname\n   * @param {string} [reason] Reason for setting the nickname\n   * @returns {Promise<GuildMember>}\n   */\n  setNickname(nick, reason) {\n    return this.edit({ nick }, reason);\n  }\n\n  /**\n   * Creates a DM channel between the client and this member.\n   * @param {boolean} [force=false] Whether to skip the cache check and request the API\n   * @returns {Promise<DMChannel>}\n   */\n  createDM(force = false) {\n    return this.user.createDM(force);\n  }\n\n  /**\n   * Deletes any DMs with this member.\n   * @returns {Promise<DMChannel>}\n   */\n  deleteDM() {\n    return this.user.deleteDM();\n  }\n\n  /**\n   * Kicks this member from the guild.\n   * @param {string} [reason] Reason for kicking user\n   * @returns {Promise<GuildMember>}\n   */\n  kick(reason) {\n    return this.guild.members.kick(this, reason);\n  }\n\n  /**\n   * Bans this guild member.\n   * @param {BanOptions} [options] Options for the ban\n   * @returns {Promise<GuildMember>}\n   * @example\n   * // ban a guild member\n   * guildMember.ban({ days: 7, reason: 'They deserved it' })\n   *   .then(console.log)\n   *   .catch(console.error);\n   */\n  ban(options) {\n    return this.guild.members.ban(this, options);\n  }\n\n  /**\n   * Times this guild member out.\n   * @param {DateResolvable|null} communicationDisabledUntil The date or timestamp\n   * for the member's communication to be disabled until. Provide `null` to remove the timeout.\n   * @param {string} [reason] The reason for this timeout.\n   * @returns {Promise<GuildMember>}\n   * @example\n   * // Time a guild member out for 5 minutes\n   * guildMember.disableCommunicationUntil(Date.now() + (5 * 60 * 1000), 'They deserved it')\n   *   .then(console.log)\n   *   .catch(console.error);\n   */\n  disableCommunicationUntil(communicationDisabledUntil, reason) {\n    return this.edit({ communicationDisabledUntil }, reason);\n  }\n\n  /**\n   * Times this guild member out.\n   * @param {number|null} timeout The time in milliseconds\n   * for the member's communication to be disabled until. Provide `null` to remove the timeout.\n   * @param {string} [reason] The reason for this timeout.\n   * @returns {Promise<GuildMember>}\n   * @example\n   * // Time a guild member out for 5 minutes\n   * guildMember.timeout(5 * 60 * 1000, 'They deserved it')\n   *   .then(console.log)\n   *   .catch(console.error);\n   */\n  timeout(timeout, reason) {\n    return this.disableCommunicationUntil(timeout && Date.now() + timeout, reason);\n  }\n\n  /**\n   * Fetches this GuildMember.\n   * @param {boolean} [force=true] Whether to skip the cache check and request the API\n   * @returns {Promise<GuildMember>}\n   */\n  fetch(force = true) {\n    return this.guild.members.fetch({ user: this.id, cache: true, force });\n  }\n\n  /**\n   * Whether this guild member equals another guild member. It compares all properties, so for most\n   * comparison it is advisable to just compare `member.id === member2.id` as it is significantly faster\n   * and is often what most users need.\n   * @param {GuildMember} member The member to compare with\n   * @returns {boolean}\n   */\n  equals(member) {\n    return (\n      member instanceof this.constructor &&\n      this.id === member.id &&\n      this.partial === member.partial &&\n      this.guild.id === member.guild.id &&\n      this.joinedTimestamp === member.joinedTimestamp &&\n      this.nickname === member.nickname &&\n      this.avatar === member.avatar &&\n      this.pending === member.pending &&\n      this.communicationDisabledUntilTimestamp === member.communicationDisabledUntilTimestamp &&\n      (this._roles === member._roles ||\n        (this._roles.length === member._roles.length && this._roles.every((role, i) => role === member._roles[i])))\n    );\n  }\n\n  /**\n   * When concatenated with a string, this automatically returns the user's mention instead of the GuildMember object.\n   * @returns {string}\n   * @example\n   * // Logs: Hello from <@123456789012345678>!\n   * console.log(`Hello from ${member}!`);\n   */\n  toString() {\n    return `<@${this.nickname ? '!' : ''}${this.user.id}>`;\n  }\n\n  toJSON() {\n    const json = super.toJSON({\n      guild: 'guildId',\n      user: 'userId',\n      displayName: true,\n      roles: true,\n    });\n    json.avatarURL = this.avatarURL();\n    json.displayAvatarURL = this.displayAvatarURL();\n    return json;\n  }\n\n  // These are here only for documentation purposes - they are implemented by TextBasedChannel\n  /* eslint-disable no-empty-function */\n  send() {}\n}\n\nTextBasedChannel.applyToClass(GuildMember);\n\nexports.GuildMember = GuildMember;\nexports.deletedGuildMembers = deletedGuildMembers;\n\n/**\n * @external APIGuildMember\n * @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}\n */\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/GuildMember.js?")},"./node_modules/@citizenfx/discord.js/src/structures/GuildPreview.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/GuildPreview.js ***!
  \***************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst Base = __webpack_require__(/*! ./Base */ \"./node_modules/@citizenfx/discord.js/src/structures/Base.js\");\nconst GuildPreviewEmoji = __webpack_require__(/*! ./GuildPreviewEmoji */ \"./node_modules/@citizenfx/discord.js/src/structures/GuildPreviewEmoji.js\");\nconst SnowflakeUtil = __webpack_require__(/*! ../util/SnowflakeUtil */ \"./node_modules/@citizenfx/discord.js/src/util/SnowflakeUtil.js\");\n\n/**\n * Represents the data about the guild any bot can preview, connected to the specified guild.\n * @extends {Base}\n */\nclass GuildPreview extends Base {\n  constructor(client, data) {\n    super(client);\n\n    if (!data) return;\n\n    this._patch(data);\n  }\n\n  _patch(data) {\n    /**\n     * The id of this guild\n     * @type {string}\n     */\n    this.id = data.id;\n\n    if ('name' in data) {\n      /**\n       * The name of this guild\n       * @type {string}\n       */\n      this.name = data.name;\n    }\n\n    if ('icon' in data) {\n      /**\n       * The icon of this guild\n       * @type {?string}\n       */\n      this.icon = data.icon;\n    }\n\n    if ('splash' in data) {\n      /**\n       * The splash icon of this guild\n       * @type {?string}\n       */\n      this.splash = data.splash;\n    }\n\n    if ('discovery_splash' in data) {\n      /**\n       * The discovery splash icon of this guild\n       * @type {?string}\n       */\n      this.discoverySplash = data.discovery_splash;\n    }\n\n    if ('features' in data) {\n      /**\n       * An array of enabled guild features\n       * @type {Features[]}\n       */\n      this.features = data.features;\n    }\n\n    if ('approximate_member_count' in data) {\n      /**\n       * The approximate count of members in this guild\n       * @type {number}\n       */\n      this.approximateMemberCount = data.approximate_member_count;\n    }\n\n    if ('approximate_presence_count' in data) {\n      /**\n       * The approximate count of online members in this guild\n       * @type {number}\n       */\n      this.approximatePresenceCount = data.approximate_presence_count;\n    }\n\n    if ('description' in data) {\n      /**\n       * The description for this guild\n       * @type {?string}\n       */\n      this.description = data.description;\n    } else {\n      this.description ??= null;\n    }\n\n    if (!this.emojis) {\n      /**\n       * Collection of emojis belonging to this guild\n       * @type {Collection<Snowflake, GuildPreviewEmoji>}\n       */\n      this.emojis = new Collection();\n    } else {\n      this.emojis.clear();\n    }\n    for (const emoji of data.emojis) {\n      this.emojis.set(emoji.id, new GuildPreviewEmoji(this.client, emoji, this));\n    }\n  }\n  /**\n   * The timestamp this guild was created at\n   * @type {number}\n   * @readonly\n   */\n  get createdTimestamp() {\n    return SnowflakeUtil.timestampFrom(this.id);\n  }\n\n  /**\n   * The time this guild was created at\n   * @type {Date}\n   * @readonly\n   */\n  get createdAt() {\n    return new Date(this.createdTimestamp);\n  }\n\n  /**\n   * The URL to this guild's splash.\n   * @param {StaticImageURLOptions} [options={}] Options for the Image URL\n   * @returns {?string}\n   */\n  splashURL({ format, size } = {}) {\n    return this.splash && this.client.rest.cdn.Splash(this.id, this.splash, format, size);\n  }\n\n  /**\n   * The URL to this guild's discovery splash.\n   * @param {StaticImageURLOptions} [options={}] Options for the Image URL\n   * @returns {?string}\n   */\n  discoverySplashURL({ format, size } = {}) {\n    return this.discoverySplash && this.client.rest.cdn.DiscoverySplash(this.id, this.discoverySplash, format, size);\n  }\n\n  /**\n   * The URL to this guild's icon.\n   * @param {ImageURLOptions} [options={}] Options for the Image URL\n   * @returns {?string}\n   */\n  iconURL({ format, size, dynamic } = {}) {\n    return this.icon && this.client.rest.cdn.Icon(this.id, this.icon, format, size, dynamic);\n  }\n\n  /**\n   * Fetches this guild.\n   * @returns {Promise<GuildPreview>}\n   */\n  async fetch() {\n    const data = await this.client.api.guilds(this.id).preview.get();\n    this._patch(data);\n    return this;\n  }\n\n  /**\n   * When concatenated with a string, this automatically returns the guild's name instead of the Guild object.\n   * @returns {string}\n   * @example\n   * // Logs: Hello from My Guild!\n   * console.log(`Hello from ${previewGuild}!`);\n   */\n  toString() {\n    return this.name;\n  }\n\n  toJSON() {\n    const json = super.toJSON();\n    json.iconURL = this.iconURL();\n    json.splashURL = this.splashURL();\n    return json;\n  }\n}\n\nmodule.exports = GuildPreview;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/GuildPreview.js?")},"./node_modules/@citizenfx/discord.js/src/structures/GuildPreviewEmoji.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/GuildPreviewEmoji.js ***!
  \********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst BaseGuildEmoji = __webpack_require__(/*! ./BaseGuildEmoji */ "./node_modules/@citizenfx/discord.js/src/structures/BaseGuildEmoji.js");\n\n/**\n * Represents an instance of an emoji belonging to a public guild obtained through Discord\'s preview endpoint.\n * @extends {BaseGuildEmoji}\n */\nclass GuildPreviewEmoji extends BaseGuildEmoji {\n  /**\n   * The public guild this emoji is part of\n   * @type {GuildPreview}\n   * @name GuildPreviewEmoji#guild\n   */\n\n  constructor(client, data, guild) {\n    super(client, data, guild);\n\n    /**\n     * The roles this emoji is active for\n     * @type {Snowflake[]}\n     */\n    this.roles = data.roles;\n  }\n}\n\nmodule.exports = GuildPreviewEmoji;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/GuildPreviewEmoji.js?')},"./node_modules/@citizenfx/discord.js/src/structures/GuildScheduledEvent.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/GuildScheduledEvent.js ***!
  \**********************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nconst Base = __webpack_require__(/*! ./Base */ \"./node_modules/@citizenfx/discord.js/src/structures/Base.js\");\nconst { Error } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst {\n  GuildScheduledEventEntityTypes,\n  GuildScheduledEventStatuses,\n  GuildScheduledEventPrivacyLevels,\n  Endpoints,\n} = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst SnowflakeUtil = __webpack_require__(/*! ../util/SnowflakeUtil */ \"./node_modules/@citizenfx/discord.js/src/util/SnowflakeUtil.js\");\n\n/**\n * Represents a scheduled event in a {@link Guild}.\n * @extends {Base}\n */\nclass GuildScheduledEvent extends Base {\n  constructor(client, data) {\n    super(client);\n\n    /**\n     * The id of the guild scheduled event\n     * @type {Snowflake}\n     */\n    this.id = data.id;\n\n    /**\n     * The id of the guild this guild scheduled event belongs to\n     * @type {Snowflake}\n     */\n    this.guildId = data.guild_id;\n\n    this._patch(data);\n  }\n\n  _patch(data) {\n    if ('channel_id' in data) {\n      /**\n       * The channel id in which the scheduled event will be hosted, or `null` if entity type is `EXTERNAL`\n       * @type {?Snowflake}\n       */\n      this.channelId = data.channel_id;\n    } else {\n      this.channelId ??= null;\n    }\n\n    if ('creator_id' in data) {\n      /**\n       * The id of the user that created this guild scheduled event\n       * @type {?Snowflake}\n       */\n      this.creatorId = data.creator_id;\n    } else {\n      this.creatorId ??= null;\n    }\n\n    /**\n     * The name of the guild scheduled event\n     * @type {string}\n     */\n    this.name = data.name;\n\n    if ('description' in data) {\n      /**\n       * The description of the guild scheduled event\n       * @type {?string}\n       */\n      this.description = data.description;\n    } else {\n      this.description ??= null;\n    }\n\n    /**\n     * The timestamp the guild scheduled event will start at\n     * <info>This can be potentially `null` only when it's an {@link AuditLogEntryTarget}</info>\n     * @type {?number}\n     */\n    this.scheduledStartTimestamp = data.scheduled_start_time ? Date.parse(data.scheduled_start_time) : null;\n\n    /**\n     * The timestamp the guild scheduled event will end at,\n     * or `null` if the event does not have a scheduled time to end\n     * @type {?number}\n     */\n    this.scheduledEndTimestamp = data.scheduled_end_time ? Date.parse(data.scheduled_end_time) : null;\n\n    /**\n     * The privacy level of the guild scheduled event\n     * @type {PrivacyLevel}\n     */\n    this.privacyLevel = GuildScheduledEventPrivacyLevels[data.privacy_level];\n\n    /**\n     * The status of the guild scheduled event\n     * @type {GuildScheduledEventStatus}\n     */\n    this.status = GuildScheduledEventStatuses[data.status];\n\n    /**\n     * The type of hosting entity associated with the scheduled event\n     * @type {GuildScheduledEventEntityType}\n     */\n    this.entityType = GuildScheduledEventEntityTypes[data.entity_type];\n\n    if ('entity_id' in data) {\n      /**\n       * The id of the hosting entity associated with the scheduled event\n       * @type {?Snowflake}\n       */\n      this.entityId = data.entity_id;\n    } else {\n      this.entityId ??= null;\n    }\n\n    if ('user_count' in data) {\n      /**\n       * The number of users who are subscribed to this guild scheduled event\n       * @type {?number}\n       */\n      this.userCount = data.user_count;\n    } else {\n      this.userCount ??= null;\n    }\n\n    if ('creator' in data) {\n      /**\n       * The user that created this guild scheduled event\n       * @type {?User}\n       */\n      this.creator = this.client.users._add(data.creator);\n    } else {\n      this.creator ??= this.client.users.resolve(this.creatorId);\n    }\n\n    /* eslint-disable max-len */\n    /**\n     * Represents the additional metadata for a {@link GuildScheduledEvent}\n     * @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-metadata}\n     * @typedef {Object} GuildScheduledEventEntityMetadata\n     * @property {?string} location The location of the guild scheduled event\n     */\n    /* eslint-enable max-len */\n\n    if ('entity_metadata' in data) {\n      if (data.entity_metadata) {\n        /**\n         * Additional metadata\n         * @type {?GuildScheduledEventEntityMetadata}\n         */\n        this.entityMetadata = {\n          location: data.entity_metadata.location ?? this.entityMetadata?.location ?? null,\n        };\n      } else {\n        this.entityMetadata = null;\n      }\n    } else {\n      this.entityMetadata ??= null;\n    }\n  }\n\n  /**\n   * The timestamp the guild scheduled event was created at\n   * @type {number}\n   * @readonly\n   */\n  get createdTimestamp() {\n    return SnowflakeUtil.timestampFrom(this.id);\n  }\n\n  /**\n   * The time the guild scheduled event was created at\n   * @type {Date}\n   * @readonly\n   */\n  get createdAt() {\n    return new Date(this.createdTimestamp);\n  }\n\n  /**\n   * The time the guild scheduled event will start at\n   * @type {Date}\n   * @readonly\n   */\n  get scheduledStartAt() {\n    return new Date(this.scheduledStartTimestamp);\n  }\n\n  /**\n   * The time the guild scheduled event will end at,\n   * or `null` if the event does not have a scheduled time to end\n   * @type {?Date}\n   * @readonly\n   */\n  get scheduledEndAt() {\n    return this.scheduledEndTimestamp && new Date(this.scheduledEndTimestamp);\n  }\n\n  /**\n   * The channel associated with this scheduled event\n   * @type {?(VoiceChannel|StageChannel)}\n   * @readonly\n   */\n  get channel() {\n    return this.client.channels.resolve(this.channelId);\n  }\n\n  /**\n   * The guild this scheduled event belongs to\n   * @type {?Guild}\n   * @readonly\n   */\n  get guild() {\n    return this.client.guilds.resolve(this.guildId);\n  }\n\n  /**\n   * The URL to the guild scheduled event\n   * @type {string}\n   * @readonly\n   */\n  get url() {\n    return Endpoints.scheduledEvent(this.client.options.http.scheduledEvent, this.guildId, this.id);\n  }\n\n  /**\n   * Options used to create an invite URL to a {@link GuildScheduledEvent}\n   * @typedef {CreateInviteOptions} CreateGuildScheduledEventInviteURLOptions\n   * @property {GuildInvitableChannelResolvable} [channel] The channel to create the invite in.\n   * <warn>This is required when the `entityType` of `GuildScheduledEvent` is `EXTERNAL`, gets ignored otherwise</warn>\n   */\n\n  /**\n   * Creates an invite URL to this guild scheduled event.\n   * @param {CreateGuildScheduledEventInviteURLOptions} [options] The options to create the invite\n   * @returns {Promise<string>}\n   */\n  async createInviteURL(options) {\n    let channelId = this.channelId;\n    if (this.entityType === 'EXTERNAL') {\n      if (!options?.channel) throw new Error('INVITE_OPTIONS_MISSING_CHANNEL');\n      channelId = this.guild.channels.resolveId(options.channel);\n      if (!channelId) throw new Error('GUILD_CHANNEL_RESOLVE');\n    }\n    const invite = await this.guild.invites.create(channelId, options);\n    return Endpoints.invite(this.client.options.http.invite, invite.code, this.id);\n  }\n\n  /**\n   * Edits this guild scheduled event.\n   * @param {GuildScheduledEventEditOptions} options The options to edit the guild scheduled event\n   * @returns {Promise<GuildScheduledEvent>}\n   * @example\n   * // Edit a guild scheduled event\n   * guildScheduledEvent.edit({ name: 'Party' })\n   *  .then(guildScheduledEvent => console.log(guildScheduledEvent))\n   *  .catch(console.error);\n   */\n  edit(options) {\n    return this.guild.scheduledEvents.edit(this.id, options);\n  }\n\n  /**\n   * Deletes this guild scheduled event.\n   * @returns {Promise<GuildScheduledEvent>}\n   * @example\n   * // Delete a guild scheduled event\n   * guildScheduledEvent.delete()\n   *  .then(guildScheduledEvent => console.log(guildScheduledEvent))\n   *  .catch(console.error);\n   */\n  async delete() {\n    await this.guild.scheduledEvents.delete(this.id);\n    return this;\n  }\n\n  /**\n   * Sets a new name for the guild scheduled event.\n   * @param {string} name The new name of the guild scheduled event\n   * @param {string} [reason] The reason for changing the name\n   * @returns {Promise<GuildScheduledEvent>}\n   * @example\n   * // Set name of a guild scheduled event\n   * guildScheduledEvent.setName('Birthday Party')\n   *  .then(guildScheduledEvent => console.log(`Set the name to: ${guildScheduledEvent.name}`))\n   *  .catch(console.error);\n   */\n  setName(name, reason) {\n    return this.edit({ name, reason });\n  }\n\n  /**\n   * Sets a new time to schedule the event at.\n   * @param {DateResolvable} scheduledStartTime The time to schedule the event at\n   * @param {string} [reason] The reason for changing the scheduled start time\n   * @returns {Promise<GuildScheduledEvent>}\n   * @example\n   * // Set start time of a guild scheduled event\n   * guildScheduledEvent.setScheduledStartTime('2022-09-24T00:00:00+05:30')\n   *  .then(guildScheduledEvent => console.log(`Set the start time to: ${guildScheduledEvent.scheduledStartTime}`))\n   *  .catch(console.error);\n   */\n  setScheduledStartTime(scheduledStartTime, reason) {\n    return this.edit({ scheduledStartTime, reason });\n  }\n\n  // TODO: scheduledEndTime gets reset on passing null but it hasn't been documented\n  /**\n   * Sets a new time to end the event at.\n   * @param {DateResolvable} scheduledEndTime The time to end the event at\n   * @param {string} [reason] The reason for changing the scheduled end time\n   * @returns {Promise<GuildScheduledEvent>}\n   * @example\n   * // Set end time of a guild scheduled event\n   * guildScheduledEvent.setScheduledEndTime('2022-09-25T00:00:00+05:30')\n   *  .then(guildScheduledEvent => console.log(`Set the end time to: ${guildScheduledEvent.scheduledEndTime}`))\n   *  .catch(console.error);\n   */\n  setScheduledEndTime(scheduledEndTime, reason) {\n    return this.edit({ scheduledEndTime, reason });\n  }\n\n  /**\n   * Sets the new description of the guild scheduled event.\n   * @param {string} description The description of the guild scheduled event\n   * @param {string} [reason] The reason for changing the description\n   * @returns {Promise<GuildScheduledEvent>}\n   * @example\n   * // Set description of a guild scheduled event\n   * guildScheduledEvent.setDescription('A virtual birthday party')\n   *  .then(guildScheduledEvent => console.log(`Set the description to: ${guildScheduledEvent.description}`))\n   *  .catch(console.error);\n   */\n  setDescription(description, reason) {\n    return this.edit({ description, reason });\n  }\n\n  /**\n   * Sets the new status of the guild scheduled event.\n   * <info>If you're working with TypeScript, use this method in conjunction with status type-guards\n   * like {@link GuildScheduledEvent#isScheduled} to get only valid status as suggestion</info>\n   * @param {GuildScheduledEventStatus|number} status The status of the guild scheduled event\n   * @param {string} [reason] The reason for changing the status\n   * @returns {Promise<GuildScheduledEvent>}\n   * @example\n   * // Set status of a guild scheduled event\n   * guildScheduledEvent.setStatus('ACTIVE')\n   *  .then(guildScheduledEvent => console.log(`Set the status to: ${guildScheduledEvent.status}`))\n   *  .catch(console.error);\n   */\n  setStatus(status, reason) {\n    return this.edit({ status, reason });\n  }\n\n  /**\n   * Sets the new location of the guild scheduled event.\n   * @param {string} location The location of the guild scheduled event\n   * @param {string} [reason] The reason for changing the location\n   * @returns {Promise<GuildScheduledEvent>}\n   * @example\n   * // Set location of a guild scheduled event\n   * guildScheduledEvent.setLocation('Earth')\n   *  .then(guildScheduledEvent => console.log(`Set the location to: ${guildScheduledEvent.entityMetadata.location}`))\n   *  .catch(console.error);\n   */\n  setLocation(location, reason) {\n    return this.edit({ entityMetadata: { location }, reason });\n  }\n\n  /**\n   * Fetches subscribers of this guild scheduled event.\n   * @param {FetchGuildScheduledEventSubscribersOptions} [options] Options for fetching the subscribers\n   * @returns {Promise<Collection<Snowflake, GuildScheduledEventUser>>}\n   */\n  fetchSubscribers(options) {\n    return this.guild.scheduledEvents.fetchSubscribers(this.id, options);\n  }\n\n  /**\n   * When concatenated with a string, this automatically concatenates the event's URL instead of the object.\n   * @returns {string}\n   * @example\n   * // Logs: Event: https://discord.com/events/412345678901234567/499876543211234567\n   * console.log(`Event: ${guildScheduledEvent}`);\n   */\n  toString() {\n    return this.url;\n  }\n\n  /**\n   * Indicates whether this guild scheduled event has an `ACTIVE` status.\n   * @returns {boolean}\n   */\n  isActive() {\n    return GuildScheduledEventStatuses[this.status] === GuildScheduledEventStatuses.ACTIVE;\n  }\n\n  /**\n   * Indicates whether this guild scheduled event has a `CANCELED` status.\n   * @returns {boolean}\n   */\n  isCanceled() {\n    return GuildScheduledEventStatuses[this.status] === GuildScheduledEventStatuses.CANCELED;\n  }\n\n  /**\n   * Indicates whether this guild scheduled event has a `COMPLETED` status.\n   * @returns {boolean}\n   */\n  isCompleted() {\n    return GuildScheduledEventStatuses[this.status] === GuildScheduledEventStatuses.COMPLETED;\n  }\n\n  /**\n   * Indicates whether this guild scheduled event has a `SCHEDULED` status.\n   * @returns {boolean}\n   */\n  isScheduled() {\n    return GuildScheduledEventStatuses[this.status] === GuildScheduledEventStatuses.SCHEDULED;\n  }\n}\n\nexports.GuildScheduledEvent = GuildScheduledEvent;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/GuildScheduledEvent.js?")},"./node_modules/@citizenfx/discord.js/src/structures/GuildTemplate.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/GuildTemplate.js ***!
  \****************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { setTimeout, clearTimeout } = __webpack_require__(/*! node:timers */ \"node:timers\");\nconst Base = __webpack_require__(/*! ./Base */ \"./node_modules/@citizenfx/discord.js/src/structures/Base.js\");\nconst { Events } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst DataResolver = __webpack_require__(/*! ../util/DataResolver */ \"./node_modules/@citizenfx/discord.js/src/util/DataResolver.js\");\n\n/**\n * Represents the template for a guild.\n * @extends {Base}\n */\nclass GuildTemplate extends Base {\n  constructor(client, data) {\n    super(client);\n    this._patch(data);\n  }\n\n  _patch(data) {\n    if ('code' in data) {\n      /**\n       * The unique code of this template\n       * @type {string}\n       */\n      this.code = data.code;\n    }\n\n    if ('name' in data) {\n      /**\n       * The name of this template\n       * @type {string}\n       */\n      this.name = data.name;\n    }\n\n    if ('description' in data) {\n      /**\n       * The description of this template\n       * @type {?string}\n       */\n      this.description = data.description;\n    }\n\n    if ('usage_count' in data) {\n      /**\n       * The amount of times this template has been used\n       * @type {number}\n       */\n      this.usageCount = data.usage_count;\n    }\n\n    if ('creator_id' in data) {\n      /**\n       * The id of the user that created this template\n       * @type {Snowflake}\n       */\n      this.creatorId = data.creator_id;\n    }\n\n    if ('creator' in data) {\n      /**\n       * The user that created this template\n       * @type {User}\n       */\n      this.creator = this.client.users._add(data.creator);\n    }\n\n    if ('created_at' in data) {\n      /**\n       * The time when this template was created at\n       * @type {Date}\n       */\n      this.createdAt = new Date(data.created_at);\n    }\n\n    if ('updated_at' in data) {\n      /**\n       * The time when this template was last synced to the guild\n       * @type {Date}\n       */\n      this.updatedAt = new Date(data.updated_at);\n    }\n\n    if ('source_guild_id' in data) {\n      /**\n       * The id of the guild that this template belongs to\n       * @type {Snowflake}\n       */\n      this.guildId = data.source_guild_id;\n    }\n\n    if ('serialized_source_guild' in data) {\n      /**\n       * The data of the guild that this template would create\n       * @type {APIGuild}\n       */\n      this.serializedGuild = data.serialized_source_guild;\n    }\n\n    /**\n     * Whether this template has unsynced changes\n     * @type {?boolean}\n     */\n    this.unSynced = 'is_dirty' in data ? Boolean(data.is_dirty) : null;\n\n    return this;\n  }\n\n  /**\n   * Creates a guild based on this template.\n   * <warn>This is only available to bots in fewer than 10 guilds.</warn>\n   * @param {string} name The name of the guild\n   * @param {BufferResolvable|Base64Resolvable} [icon] The icon for the guild\n   * @returns {Promise<Guild>}\n   */\n  async createGuild(name, icon) {\n    const { client } = this;\n    const data = await client.api.guilds.templates(this.code).post({\n      data: {\n        name,\n        icon: await DataResolver.resolveImage(icon),\n      },\n    });\n\n    if (client.guilds.cache.has(data.id)) return client.guilds.cache.get(data.id);\n\n    return new Promise(resolve => {\n      const resolveGuild = guild => {\n        client.off(Events.GUILD_CREATE, handleGuild);\n        client.decrementMaxListeners();\n        resolve(guild);\n      };\n\n      const handleGuild = guild => {\n        if (guild.id === data.id) {\n          clearTimeout(timeout);\n          resolveGuild(guild);\n        }\n      };\n\n      client.incrementMaxListeners();\n      client.on(Events.GUILD_CREATE, handleGuild);\n\n      const timeout = setTimeout(() => resolveGuild(client.guilds._add(data)), 10_000).unref();\n    });\n  }\n\n  /**\n   * Options used to edit a guild template.\n   * @typedef {Object} EditGuildTemplateOptions\n   * @property {string} [name] The name of this template\n   * @property {string} [description] The description of this template\n   */\n\n  /**\n   * Updates the metadata of this template.\n   * @param {EditGuildTemplateOptions} [options] Options for editing the template\n   * @returns {Promise<GuildTemplate>}\n   */\n  async edit({ name, description } = {}) {\n    const data = await this.client.api.guilds(this.guildId).templates(this.code).patch({ data: { name, description } });\n    return this._patch(data);\n  }\n\n  /**\n   * Deletes this template.\n   * @returns {Promise<GuildTemplate>}\n   */\n  async delete() {\n    await this.client.api.guilds(this.guildId).templates(this.code).delete();\n    return this;\n  }\n\n  /**\n   * Syncs this template to the current state of the guild.\n   * @returns {Promise<GuildTemplate>}\n   */\n  async sync() {\n    const data = await this.client.api.guilds(this.guildId).templates(this.code).put();\n    return this._patch(data);\n  }\n\n  /**\n   * The timestamp of when this template was created at\n   * @type {number}\n   * @readonly\n   */\n  get createdTimestamp() {\n    return this.createdAt.getTime();\n  }\n\n  /**\n   * The timestamp of when this template was last synced to the guild\n   * @type {number}\n   * @readonly\n   */\n  get updatedTimestamp() {\n    return this.updatedAt.getTime();\n  }\n\n  /**\n   * The guild that this template belongs to\n   * @type {?Guild}\n   * @readonly\n   */\n  get guild() {\n    return this.client.guilds.resolve(this.guildId);\n  }\n\n  /**\n   * The URL of this template\n   * @type {string}\n   * @readonly\n   */\n  get url() {\n    return `${this.client.options.http.template}/${this.code}`;\n  }\n\n  /**\n   * When concatenated with a string, this automatically returns the template's code instead of the template object.\n   * @returns {string}\n   * @example\n   * // Logs: Template: FKvmczH2HyUf\n   * console.log(`Template: ${guildTemplate}!`);\n   */\n  toString() {\n    return this.code;\n  }\n}\n\n/**\n * Regular expression that globally matches guild template links\n * @type {RegExp}\n */\nGuildTemplate.GUILD_TEMPLATES_PATTERN = /discord(?:app)?\\.(?:com\\/template|new)\\/([\\w-]{2,255})/gi;\n\nmodule.exports = GuildTemplate;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/GuildTemplate.js?")},"./node_modules/@citizenfx/discord.js/src/structures/Integration.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/Integration.js ***!
  \**************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Base = __webpack_require__(/*! ./Base */ \"./node_modules/@citizenfx/discord.js/src/structures/Base.js\");\nconst IntegrationApplication = __webpack_require__(/*! ./IntegrationApplication */ \"./node_modules/@citizenfx/discord.js/src/structures/IntegrationApplication.js\");\n\n/**\n * The information account for an integration\n * @typedef {Object} IntegrationAccount\n * @property {Snowflake|string} id The id of the account\n * @property {string} name The name of the account\n */\n\n/**\n * The type of an {@link Integration}. This can be:\n * * `twitch`\n * * `youtube`\n * * `discord`\n * @typedef {string} IntegrationType\n */\n\n/**\n *  Represents a guild integration.\n */\nclass Integration extends Base {\n  constructor(client, data, guild) {\n    super(client);\n\n    /**\n     * The guild this integration belongs to\n     * @type {Guild}\n     */\n    this.guild = guild;\n\n    /**\n     * The integration id\n     * @type {Snowflake|string}\n     */\n    this.id = data.id;\n\n    /**\n     * The integration name\n     * @type {string}\n     */\n    this.name = data.name;\n\n    /**\n     * The integration type\n     * @type {IntegrationType}\n     */\n    this.type = data.type;\n\n    /**\n     * Whether this integration is enabled\n     * @type {boolean}\n     */\n    this.enabled = data.enabled;\n\n    /**\n     * Whether this integration is syncing\n     * @type {?boolean}\n     */\n    this.syncing = data.syncing;\n\n    /**\n     * The role that this integration uses for subscribers\n     * @type {?Role}\n     */\n    this.role = this.guild.roles.cache.get(data.role_id);\n\n    if ('enable_emoticons' in data) {\n      /**\n       * Whether emoticons should be synced for this integration (twitch only currently)\n       * @type {?boolean}\n       */\n      this.enableEmoticons = data.enable_emoticons;\n    } else {\n      this.enableEmoticons ??= null;\n    }\n\n    if (data.user) {\n      /**\n       * The user for this integration\n       * @type {?User}\n       */\n      this.user = this.client.users._add(data.user);\n    } else {\n      this.user = null;\n    }\n\n    /**\n     * The account integration information\n     * @type {IntegrationAccount}\n     */\n    this.account = data.account;\n\n    /**\n     * The last time this integration was last synced\n     * @type {?number}\n     */\n    this.syncedAt = data.synced_at;\n\n    if ('subscriber_count' in data) {\n      /**\n       * How many subscribers this integration has\n       * @type {?number}\n       */\n      this.subscriberCount = data.subscriber_count;\n    } else {\n      this.subscriberCount ??= null;\n    }\n\n    if ('revoked' in data) {\n      /**\n       * Whether this integration has been revoked\n       * @type {?boolean}\n       */\n      this.revoked = data.revoked;\n    } else {\n      this.revoked ??= null;\n    }\n\n    this._patch(data);\n  }\n\n  /**\n   * All roles that are managed by this integration\n   * @type {Collection<Snowflake, Role>}\n   * @readonly\n   */\n  get roles() {\n    const roles = this.guild.roles.cache;\n    return roles.filter(role => role.tags?.integrationId === this.id);\n  }\n\n  _patch(data) {\n    if ('expire_behavior' in data) {\n      /**\n       * The behavior of expiring subscribers\n       * @type {?number}\n       */\n      this.expireBehavior = data.expire_behavior;\n    }\n\n    if ('expire_grace_period' in data) {\n      /**\n       * The grace period before expiring subscribers\n       * @type {?number}\n       */\n      this.expireGracePeriod = data.expire_grace_period;\n    }\n\n    if ('application' in data) {\n      if (this.application) {\n        this.application._patch(data.application);\n      } else {\n        /**\n         * The application for this integration\n         * @type {?IntegrationApplication}\n         */\n        this.application = new IntegrationApplication(this.client, data.application);\n      }\n    } else {\n      this.application ??= null;\n    }\n  }\n\n  /**\n   * Deletes this integration.\n   * @returns {Promise<Integration>}\n   * @param {string} [reason] Reason for deleting this integration\n   */\n  async delete(reason) {\n    await this.client.api.guilds(this.guild.id).integrations(this.id).delete({ reason });\n    return this;\n  }\n\n  toJSON() {\n    return super.toJSON({\n      role: 'roleId',\n      guild: 'guildId',\n      user: 'userId',\n    });\n  }\n}\n\nmodule.exports = Integration;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/Integration.js?")},"./node_modules/@citizenfx/discord.js/src/structures/IntegrationApplication.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/IntegrationApplication.js ***!
  \*************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Application = __webpack_require__(/*! ./interfaces/Application */ \"./node_modules/@citizenfx/discord.js/src/structures/interfaces/Application.js\");\n\n/**\n * Represents an Integration's OAuth2 Application.\n * @extends {Application}\n */\nclass IntegrationApplication extends Application {\n  _patch(data) {\n    super._patch(data);\n\n    if ('bot' in data) {\n      /**\n       * The bot user for this application\n       * @type {?User}\n       */\n      this.bot = this.client.users._add(data.bot);\n    } else {\n      this.bot ??= null;\n    }\n\n    if ('terms_of_service_url' in data) {\n      /**\n       * The URL of the application's terms of service\n       * @type {?string}\n       */\n      this.termsOfServiceURL = data.terms_of_service_url;\n    } else {\n      this.termsOfServiceURL ??= null;\n    }\n\n    if ('privacy_policy_url' in data) {\n      /**\n       * The URL of the application's privacy policy\n       * @type {?string}\n       */\n      this.privacyPolicyURL = data.privacy_policy_url;\n    } else {\n      this.privacyPolicyURL ??= null;\n    }\n\n    if ('rpc_origins' in data) {\n      /**\n       * The Array of RPC origin URLs\n       * @type {string[]}\n       */\n      this.rpcOrigins = data.rpc_origins;\n    } else {\n      this.rpcOrigins ??= [];\n    }\n\n    if ('summary' in data) {\n      /**\n       * The application's summary\n       * @type {?string}\n       */\n      this.summary = data.summary;\n    } else {\n      this.summary ??= null;\n    }\n\n    if ('hook' in data) {\n      /**\n       * Whether the application can be default hooked by the client\n       * @type {?boolean}\n       */\n      this.hook = data.hook;\n    } else {\n      this.hook ??= null;\n    }\n\n    if ('cover_image' in data) {\n      /**\n       * The hash of the application's cover image\n       * @type {?string}\n       */\n      this.cover = data.cover_image;\n    } else {\n      this.cover ??= null;\n    }\n\n    if ('verify_key' in data) {\n      /**\n       * The hex-encoded key for verification in interactions and the GameSDK's GetTicket\n       * @type {?string}\n       */\n      this.verifyKey = data.verify_key;\n    } else {\n      this.verifyKey ??= null;\n    }\n  }\n}\n\nmodule.exports = IntegrationApplication;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/IntegrationApplication.js?")},"./node_modules/@citizenfx/discord.js/src/structures/Interaction.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/Interaction.js ***!
  \**************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Base = __webpack_require__(/*! ./Base */ \"./node_modules/@citizenfx/discord.js/src/structures/Base.js\");\nconst { InteractionTypes, MessageComponentTypes, ApplicationCommandTypes } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst Permissions = __webpack_require__(/*! ../util/Permissions */ \"./node_modules/@citizenfx/discord.js/src/util/Permissions.js\");\nconst SnowflakeUtil = __webpack_require__(/*! ../util/SnowflakeUtil */ \"./node_modules/@citizenfx/discord.js/src/util/SnowflakeUtil.js\");\n\n/**\n * Represents an interaction.\n * @extends {Base}\n */\nclass Interaction extends Base {\n  constructor(client, data) {\n    super(client);\n\n    /**\n     * The interaction's type\n     * @type {InteractionType}\n     */\n    this.type = InteractionTypes[data.type];\n\n    /**\n     * The interaction's id\n     * @type {Snowflake}\n     */\n    this.id = data.id;\n\n    /**\n     * The interaction's token\n     * @type {string}\n     * @name Interaction#token\n     * @readonly\n     */\n    Object.defineProperty(this, 'token', { value: data.token });\n\n    /**\n     * The application's id\n     * @type {Snowflake}\n     */\n    this.applicationId = data.application_id;\n\n    /**\n     * The id of the channel this interaction was sent in\n     * @type {?Snowflake}\n     */\n    this.channelId = data.channel_id ?? null;\n\n    /**\n     * The id of the guild this interaction was sent in\n     * @type {?Snowflake}\n     */\n    this.guildId = data.guild_id ?? null;\n\n    /**\n     * The user which sent this interaction\n     * @type {User}\n     */\n    this.user = this.client.users._add(data.user ?? data.member.user);\n\n    /**\n     * If this interaction was sent in a guild, the member which sent it\n     * @type {?(GuildMember|APIGuildMember)}\n     */\n    this.member = data.member ? this.guild?.members._add(data.member) ?? data.member : null;\n\n    /**\n     * The version\n     * @type {number}\n     */\n    this.version = data.version;\n\n    /**\n     * The permissions of the member, if one exists, in the channel this interaction was executed in\n     * @type {?Readonly<Permissions>}\n     */\n    this.memberPermissions = data.member?.permissions ? new Permissions(data.member.permissions).freeze() : null;\n\n    /**\n     * The locale of the user who invoked this interaction\n     * @type {string}\n     * @see {@link https://discord.com/developers/docs/dispatch/field-values#predefined-field-values-accepted-locales}\n     */\n    this.locale = data.locale;\n\n    /**\n     * The preferred locale from the guild this interaction was sent in\n     * @type {?string}\n     */\n    this.guildLocale = data.guild_locale ?? null;\n  }\n\n  /**\n   * The timestamp the interaction was created at\n   * @type {number}\n   * @readonly\n   */\n  get createdTimestamp() {\n    return SnowflakeUtil.timestampFrom(this.id);\n  }\n\n  /**\n   * The time the interaction was created at\n   * @type {Date}\n   * @readonly\n   */\n  get createdAt() {\n    return new Date(this.createdTimestamp);\n  }\n\n  /**\n   * The channel this interaction was sent in\n   * @type {?TextBasedChannels}\n   * @readonly\n   */\n  get channel() {\n    return this.client.channels.cache.get(this.channelId) ?? null;\n  }\n\n  /**\n   * The guild this interaction was sent in\n   * @type {?Guild}\n   * @readonly\n   */\n  get guild() {\n    return this.client.guilds.cache.get(this.guildId) ?? null;\n  }\n\n  /**\n   * Indicates whether this interaction is received from a guild.\n   * @returns {boolean}\n   */\n  inGuild() {\n    return Boolean(this.guildId && this.member);\n  }\n\n  /**\n   * Indicates whether or not this interaction is both cached and received from a guild.\n   * @returns {boolean}\n   */\n  inCachedGuild() {\n    return Boolean(this.guild && this.member);\n  }\n\n  /**\n   * Indicates whether or not this interaction is received from an uncached guild.\n   * @returns {boolean}\n   */\n  inRawGuild() {\n    return Boolean(this.guildId && !this.guild && this.member);\n  }\n\n  /**\n   * Indicates whether this interaction is a {@link BaseCommandInteraction}.\n   * @returns {boolean}\n   */\n  isApplicationCommand() {\n    return InteractionTypes[this.type] === InteractionTypes.APPLICATION_COMMAND;\n  }\n\n  /**\n   * Indicates whether this interaction is a {@link CommandInteraction}.\n   * @returns {boolean}\n   */\n  isCommand() {\n    return InteractionTypes[this.type] === InteractionTypes.APPLICATION_COMMAND && typeof this.targetId === 'undefined';\n  }\n\n  /**\n   * Indicates whether this interaction is a {@link ContextMenuInteraction}\n   * @returns {boolean}\n   */\n  isContextMenu() {\n    return InteractionTypes[this.type] === InteractionTypes.APPLICATION_COMMAND && typeof this.targetId !== 'undefined';\n  }\n\n  /**\n   * Indicates whether this interaction is a {@link UserContextMenuInteraction}\n   * @returns {boolean}\n   */\n  isUserContextMenu() {\n    return this.isContextMenu() && ApplicationCommandTypes[this.targetType] === ApplicationCommandTypes.USER;\n  }\n\n  /**\n   * Indicates whether this interaction is a {@link MessageContextMenuInteraction}\n   * @returns {boolean}\n   */\n  isMessageContextMenu() {\n    return this.isContextMenu() && ApplicationCommandTypes[this.targetType] === ApplicationCommandTypes.MESSAGE;\n  }\n\n  /**\n   * Indicates whether this interaction is an {@link AutocompleteInteraction}\n   * @returns {boolean}\n   */\n  isAutocomplete() {\n    return InteractionTypes[this.type] === InteractionTypes.APPLICATION_COMMAND_AUTOCOMPLETE;\n  }\n\n  /**\n   * Indicates whether this interaction is a {@link MessageComponentInteraction}.\n   * @returns {boolean}\n   */\n  isMessageComponent() {\n    return InteractionTypes[this.type] === InteractionTypes.MESSAGE_COMPONENT;\n  }\n\n  /**\n   * Indicates whether this interaction is a {@link ButtonInteraction}.\n   * @returns {boolean}\n   */\n  isButton() {\n    return (\n      InteractionTypes[this.type] === InteractionTypes.MESSAGE_COMPONENT &&\n      MessageComponentTypes[this.componentType] === MessageComponentTypes.BUTTON\n    );\n  }\n\n  /**\n   * Indicates whether this interaction is a {@link SelectMenuInteraction}.\n   * @returns {boolean}\n   */\n  isSelectMenu() {\n    return (\n      InteractionTypes[this.type] === InteractionTypes.MESSAGE_COMPONENT &&\n      MessageComponentTypes[this.componentType] === MessageComponentTypes.SELECT_MENU\n    );\n  }\n}\n\nmodule.exports = Interaction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/Interaction.js?")},"./node_modules/@citizenfx/discord.js/src/structures/InteractionCollector.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/InteractionCollector.js ***!
  \***********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst Collector = __webpack_require__(/*! ./interfaces/Collector */ \"./node_modules/@citizenfx/discord.js/src/structures/interfaces/Collector.js\");\nconst { Events } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst { InteractionTypes, MessageComponentTypes } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\n\n/**\n * @typedef {CollectorOptions} InteractionCollectorOptions\n * @property {TextBasedChannels} [channel] The channel to listen to interactions from\n * @property {MessageComponentType} [componentType] The type of component to listen for\n * @property {Guild} [guild] The guild to listen to interactions from\n * @property {InteractionType} [interactionType] The type of interaction to listen for\n * @property {number} [max] The maximum total amount of interactions to collect\n * @property {number} [maxComponents] The maximum number of components to collect\n * @property {number} [maxUsers] The maximum number of users to interact\n * @property {Message|APIMessage} [message] The message to listen to interactions from\n */\n\n/**\n * Collects interactions.\n * Will automatically stop if the message ({@link Client#event:messageDelete messageDelete} or\n * {@link Client#event:messageDeleteBulk messageDeleteBulk}),\n * channel ({@link Client#event:channelDelete channelDelete}), or\n * guild ({@link Client#event:guildDelete guildDelete}) is deleted.\n * <info>Interaction collectors that do not specify `time` or `idle` may be prone to always running.\n * Ensure your interaction collectors end via either of these options or manual cancellation.</info>\n * @extends {Collector}\n */\nclass InteractionCollector extends Collector {\n  /**\n   * @param {Client} client The client on which to collect interactions\n   * @param {InteractionCollectorOptions} [options={}] The options to apply to this collector\n   */\n  constructor(client, options = {}) {\n    super(client, options);\n\n    /**\n     * The message from which to collect interactions, if provided\n     * @type {?Snowflake}\n     */\n    this.messageId = options.message?.id ?? null;\n\n    /**\n     * The channel from which to collect interactions, if provided\n     * @type {?Snowflake}\n     */\n    this.channelId =\n      this.client.channels.resolveId(options.message?.channel) ??\n      options.message?.channel_id ??\n      this.client.channels.resolveId(options.channel);\n\n    /**\n     * The guild from which to collect interactions, if provided\n     * @type {?Snowflake}\n     */\n    this.guildId =\n      this.client.guilds.resolveId(options.message?.guild) ??\n      options.message?.guild_id ??\n      this.client.guilds.resolveId(options.channel?.guild) ??\n      this.client.guilds.resolveId(options.guild);\n\n    /**\n     * The type of interaction to collect\n     * @type {?InteractionType}\n     */\n    this.interactionType =\n      typeof options.interactionType === 'number'\n        ? InteractionTypes[options.interactionType]\n        : options.interactionType ?? null;\n\n    /**\n     * The type of component to collect\n     * @type {?MessageComponentType}\n     */\n    this.componentType =\n      typeof options.componentType === 'number'\n        ? MessageComponentTypes[options.componentType]\n        : options.componentType ?? null;\n\n    /**\n     * The users that have interacted with this collector\n     * @type {Collection<Snowflake, User>}\n     */\n    this.users = new Collection();\n\n    /**\n     * The total number of interactions collected\n     * @type {number}\n     */\n    this.total = 0;\n\n    this.empty = this.empty.bind(this);\n    this.client.incrementMaxListeners();\n\n    const bulkDeleteListener = messages => {\n      if (messages.has(this.messageId)) this.stop('messageDelete');\n    };\n\n    if (this.messageId) {\n      this._handleMessageDeletion = this._handleMessageDeletion.bind(this);\n      this.client.on(Events.MESSAGE_DELETE, this._handleMessageDeletion);\n      this.client.on(Events.MESSAGE_BULK_DELETE, bulkDeleteListener);\n    }\n\n    if (this.channelId) {\n      this._handleChannelDeletion = this._handleChannelDeletion.bind(this);\n      this._handleThreadDeletion = this._handleThreadDeletion.bind(this);\n      this.client.on(Events.CHANNEL_DELETE, this._handleChannelDeletion);\n      this.client.on(Events.THREAD_DELETE, this._handleThreadDeletion);\n    }\n\n    if (this.guildId) {\n      this._handleGuildDeletion = this._handleGuildDeletion.bind(this);\n      this.client.on(Events.GUILD_DELETE, this._handleGuildDeletion);\n    }\n\n    this.client.on(Events.INTERACTION_CREATE, this.handleCollect);\n\n    this.once('end', () => {\n      this.client.removeListener(Events.INTERACTION_CREATE, this.handleCollect);\n      this.client.removeListener(Events.MESSAGE_DELETE, this._handleMessageDeletion);\n      this.client.removeListener(Events.MESSAGE_BULK_DELETE, bulkDeleteListener);\n      this.client.removeListener(Events.CHANNEL_DELETE, this._handleChannelDeletion);\n      this.client.removeListener(Events.THREAD_DELETE, this._handleThreadDeletion);\n      this.client.removeListener(Events.GUILD_DELETE, this._handleGuildDeletion);\n      this.client.decrementMaxListeners();\n    });\n\n    this.on('collect', interaction => {\n      this.total++;\n      this.users.set(interaction.user.id, interaction.user);\n    });\n  }\n\n  /**\n   * Handles an incoming interaction for possible collection.\n   * @param {Interaction} interaction The interaction to possibly collect\n   * @returns {?Snowflake}\n   * @private\n   */\n  collect(interaction) {\n    /**\n     * Emitted whenever an interaction is collected.\n     * @event InteractionCollector#collect\n     * @param {Interaction} interaction The interaction that was collected\n     */\n    if (this.interactionType && interaction.type !== this.interactionType) return null;\n    if (this.componentType && interaction.componentType !== this.componentType) return null;\n    if (this.messageId && interaction.message?.id !== this.messageId) return null;\n    if (this.channelId && interaction.channelId !== this.channelId) return null;\n    if (this.guildId && interaction.guildId !== this.guildId) return null;\n\n    return interaction.id;\n  }\n\n  /**\n   * Handles an interaction for possible disposal.\n   * @param {Interaction} interaction The interaction that could be disposed of\n   * @returns {?Snowflake}\n   */\n  dispose(interaction) {\n    /**\n     * Emitted whenever an interaction is disposed of.\n     * @event InteractionCollector#dispose\n     * @param {Interaction} interaction The interaction that was disposed of\n     */\n    if (this.type && interaction.type !== this.type) return null;\n    if (this.componentType && interaction.componentType !== this.componentType) return null;\n    if (this.messageId && interaction.message?.id !== this.messageId) return null;\n    if (this.channelId && interaction.channelId !== this.channelId) return null;\n    if (this.guildId && interaction.guildId !== this.guildId) return null;\n\n    return interaction.id;\n  }\n\n  /**\n   * Empties this interaction collector.\n   */\n  empty() {\n    this.total = 0;\n    this.collected.clear();\n    this.users.clear();\n    this.checkEnd();\n  }\n\n  /**\n   * The reason this collector has ended with, or null if it hasn't ended yet\n   * @type {?string}\n   * @readonly\n   */\n  get endReason() {\n    if (this.options.max && this.total >= this.options.max) return 'limit';\n    if (this.options.maxComponents && this.collected.size >= this.options.maxComponents) return 'componentLimit';\n    if (this.options.maxUsers && this.users.size >= this.options.maxUsers) return 'userLimit';\n    return null;\n  }\n\n  /**\n   * Handles checking if the message has been deleted, and if so, stops the collector with the reason 'messageDelete'.\n   * @private\n   * @param {Message} message The message that was deleted\n   * @returns {void}\n   */\n  _handleMessageDeletion(message) {\n    if (message.id === this.messageId) {\n      this.stop('messageDelete');\n    }\n  }\n\n  /**\n   * Handles checking if the channel has been deleted, and if so, stops the collector with the reason 'channelDelete'.\n   * @private\n   * @param {GuildChannel} channel The channel that was deleted\n   * @returns {void}\n   */\n  _handleChannelDeletion(channel) {\n    if (channel.id === this.channelId || channel.threads?.cache.has(this.channelId)) {\n      this.stop('channelDelete');\n    }\n  }\n\n  /**\n   * Handles checking if the thread has been deleted, and if so, stops the collector with the reason 'threadDelete'.\n   * @private\n   * @param {ThreadChannel} thread The thread that was deleted\n   * @returns {void}\n   */\n  _handleThreadDeletion(thread) {\n    if (thread.id === this.channelId) {\n      this.stop('threadDelete');\n    }\n  }\n\n  /**\n   * Handles checking if the guild has been deleted, and if so, stops the collector with the reason 'guildDelete'.\n   * @private\n   * @param {Guild} guild The guild that was deleted\n   * @returns {void}\n   */\n  _handleGuildDeletion(guild) {\n    if (guild.id === this.guildId) {\n      this.stop('guildDelete');\n    }\n  }\n}\n\nmodule.exports = InteractionCollector;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/InteractionCollector.js?")},"./node_modules/@citizenfx/discord.js/src/structures/InteractionWebhook.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/InteractionWebhook.js ***!
  \*********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Webhook = __webpack_require__(/*! ./Webhook */ \"./node_modules/@citizenfx/discord.js/src/structures/Webhook.js\");\n\n/**\n * Represents a webhook for an Interaction\n * @implements {Webhook}\n */\nclass InteractionWebhook {\n  /**\n   * @param {Client} client The instantiating client\n   * @param {Snowflake} id The application's id\n   * @param {string} token The interaction's token\n   */\n  constructor(client, id, token) {\n    /**\n     * The client that instantiated the interaction webhook\n     * @name InteractionWebhook#client\n     * @type {Client}\n     * @readonly\n     */\n    Object.defineProperty(this, 'client', { value: client });\n    this.id = id;\n    Object.defineProperty(this, 'token', { value: token, writable: true, configurable: true });\n  }\n\n  // These are here only for documentation purposes - they are implemented by Webhook\n  /* eslint-disable no-empty-function, valid-jsdoc */\n  /**\n   * Sends a message with this webhook.\n   * @param {string|MessagePayload|InteractionReplyOptions} options The content for the reply\n   * @returns {Promise<Message|APIMessage>}\n   */\n  send() {}\n  fetchMessage() {}\n  editMessage() {}\n  deleteMessage() {}\n  get url() {}\n}\n\nWebhook.applyToClass(InteractionWebhook, ['sendSlackMessage', 'edit', 'delete', 'createdTimestamp', 'createdAt']);\n\nmodule.exports = InteractionWebhook;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/InteractionWebhook.js?")},"./node_modules/@citizenfx/discord.js/src/structures/Invite.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/Invite.js ***!
  \*********************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Base = __webpack_require__(/*! ./Base */ \"./node_modules/@citizenfx/discord.js/src/structures/Base.js\");\nconst { GuildScheduledEvent } = __webpack_require__(/*! ./GuildScheduledEvent */ \"./node_modules/@citizenfx/discord.js/src/structures/GuildScheduledEvent.js\");\nconst IntegrationApplication = __webpack_require__(/*! ./IntegrationApplication */ \"./node_modules/@citizenfx/discord.js/src/structures/IntegrationApplication.js\");\nconst InviteStageInstance = __webpack_require__(/*! ./InviteStageInstance */ \"./node_modules/@citizenfx/discord.js/src/structures/InviteStageInstance.js\");\nconst { Error } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst { Endpoints } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst Permissions = __webpack_require__(/*! ../util/Permissions */ \"./node_modules/@citizenfx/discord.js/src/util/Permissions.js\");\n\n// TODO: Convert `inviter` and `channel` in this class to a getter.\n\n/**\n * Represents an invitation to a guild channel.\n * @extends {Base}\n */\nclass Invite extends Base {\n  constructor(client, data) {\n    super(client);\n    this._patch(data);\n  }\n\n  _patch(data) {\n    const InviteGuild = __webpack_require__(/*! ./InviteGuild */ \"./node_modules/@citizenfx/discord.js/src/structures/InviteGuild.js\");\n    /**\n     * The guild the invite is for including welcome screen data if present\n     * @type {?(Guild|InviteGuild)}\n     */\n    this.guild ??= null;\n    if (data.guild) {\n      this.guild = this.client.guilds.resolve(data.guild.id) ?? new InviteGuild(this.client, data.guild);\n    }\n\n    if ('code' in data) {\n      /**\n       * The code for this invite\n       * @type {string}\n       */\n      this.code = data.code;\n    }\n\n    if ('approximate_presence_count' in data) {\n      /**\n       * The approximate number of online members of the guild this invite is for\n       * <info>This is only available when the invite was fetched through {@link Client#fetchInvite}.</info>\n       * @type {?number}\n       */\n      this.presenceCount = data.approximate_presence_count;\n    } else {\n      this.presenceCount ??= null;\n    }\n\n    if ('approximate_member_count' in data) {\n      /**\n       * The approximate total number of members of the guild this invite is for\n       * <info>This is only available when the invite was fetched through {@link Client#fetchInvite}.</info>\n       * @type {?number}\n       */\n      this.memberCount = data.approximate_member_count;\n    } else {\n      this.memberCount ??= null;\n    }\n\n    if ('temporary' in data) {\n      /**\n       * Whether or not this invite only grants temporary membership\n       * <info>This is only available when the invite was fetched through {@link GuildInviteManager#fetch}\n       * or created through {@link GuildInviteManager#create}.</info>\n       * @type {?boolean}\n       */\n      this.temporary = data.temporary ?? null;\n    } else {\n      this.temporary ??= null;\n    }\n\n    if ('max_age' in data) {\n      /**\n       * The maximum age of the invite, in seconds, 0 if never expires\n       * <info>This is only available when the invite was fetched through {@link GuildInviteManager#fetch}\n       * or created through {@link GuildInviteManager#create}.</info>\n       * @type {?number}\n       */\n      this.maxAge = data.max_age;\n    } else {\n      this.maxAge ??= null;\n    }\n\n    if ('uses' in data) {\n      /**\n       * How many times this invite has been used\n       * <info>This is only available when the invite was fetched through {@link GuildInviteManager#fetch}\n       * or created through {@link GuildInviteManager#create}.</info>\n       * @type {?number}\n       */\n      this.uses = data.uses;\n    } else {\n      this.uses ??= null;\n    }\n\n    if ('max_uses' in data) {\n      /**\n       * The maximum uses of this invite\n       * <info>This is only available when the invite was fetched through {@link GuildInviteManager#fetch}\n       * or created through {@link GuildInviteManager#create}.</info>\n       * @type {?number}\n       */\n      this.maxUses = data.max_uses;\n    } else {\n      this.maxUses ??= null;\n    }\n\n    if ('inviter_id' in data) {\n      /**\n       * The user's id who created this invite\n       * @type {?Snowflake}\n       */\n      this.inviterId = data.inviter_id;\n      this.inviter = this.client.users.resolve(data.inviter_id);\n    } else {\n      this.inviterId ??= null;\n    }\n\n    if ('inviter' in data) {\n      /**\n       * The user who created this invite\n       * @type {?User}\n       */\n      this.inviter ??= this.client.users._add(data.inviter);\n      this.inviterId = data.inviter.id;\n    } else {\n      this.inviter ??= null;\n    }\n\n    if ('target_user' in data) {\n      /**\n       * The user whose stream to display for this voice channel stream invite\n       * @type {?User}\n       */\n      this.targetUser = this.client.users._add(data.target_user);\n    } else {\n      this.targetUser ??= null;\n    }\n\n    if ('target_application' in data) {\n      /**\n       * The embedded application to open for this voice channel embedded application invite\n       * @type {?IntegrationApplication}\n       */\n      this.targetApplication = new IntegrationApplication(this.client, data.target_application);\n    } else {\n      this.targetApplication ??= null;\n    }\n\n    /**\n     * The type of the invite target:\n     * * 1: STREAM\n     * * 2: EMBEDDED_APPLICATION\n     * @typedef {number} TargetType\n     * @see {@link https://discord.com/developers/docs/resources/invite#invite-object-invite-target-types}\n     */\n\n    if ('target_type' in data) {\n      /**\n       * The target type\n       * @type {?TargetType}\n       */\n      this.targetType = data.target_type;\n    } else {\n      this.targetType ??= null;\n    }\n\n    if ('channel_id' in data) {\n      /**\n       * The channel's id this invite is for\n       * @type {Snowflake}\n       */\n      this.channelId = data.channel_id;\n      this.channel = this.client.channels.cache.get(data.channel_id);\n    }\n\n    if ('channel' in data) {\n      /**\n       * The channel this invite is for\n       * @type {Channel}\n       */\n      this.channel ??= this.client.channels._add(data.channel, this.guild, { cache: false });\n      this.channelId ??= data.channel.id;\n    }\n\n    if ('created_at' in data) {\n      /**\n       * The timestamp this invite was created at\n       * @type {?number}\n       */\n      this.createdTimestamp = new Date(data.created_at).getTime();\n    } else {\n      this.createdTimestamp ??= null;\n    }\n\n    if ('expires_at' in data) this._expiresTimestamp = new Date(data.expires_at).getTime();\n    else this._expiresTimestamp ??= null;\n\n    if ('stage_instance' in data) {\n      /**\n       * The stage instance data if there is a public {@link StageInstance} in the stage channel this invite is for\n       * @type {?InviteStageInstance}\n       */\n      this.stageInstance = new InviteStageInstance(this.client, data.stage_instance, this.channel.id, this.guild.id);\n    } else {\n      this.stageInstance ??= null;\n    }\n\n    if ('guild_scheduled_event' in data) {\n      /**\n       * The guild scheduled event data if there is a {@link GuildScheduledEvent} in the channel this invite is for\n       * @type {?GuildScheduledEvent}\n       */\n      this.guildScheduledEvent = new GuildScheduledEvent(this.client, data.guild_scheduled_event);\n    } else {\n      this.guildScheduledEvent ??= null;\n    }\n  }\n\n  /**\n   * The time the invite was created at\n   * @type {?Date}\n   * @readonly\n   */\n  get createdAt() {\n    return this.createdTimestamp ? new Date(this.createdTimestamp) : null;\n  }\n\n  /**\n   * Whether the invite is deletable by the client user\n   * @type {boolean}\n   * @readonly\n   */\n  get deletable() {\n    const guild = this.guild;\n    if (!guild || !this.client.guilds.cache.has(guild.id)) return false;\n    if (!guild.me) throw new Error('GUILD_UNCACHED_ME');\n    return (\n      this.channel.permissionsFor(this.client.user).has(Permissions.FLAGS.MANAGE_CHANNELS, false) ||\n      guild.me.permissions.has(Permissions.FLAGS.MANAGE_GUILD)\n    );\n  }\n\n  /**\n   * The timestamp the invite will expire at\n   * @type {?number}\n   * @readonly\n   */\n  get expiresTimestamp() {\n    return (\n      this._expiresTimestamp ??\n      (this.createdTimestamp && this.maxAge ? this.createdTimestamp + this.maxAge * 1_000 : null)\n    );\n  }\n\n  /**\n   * The time the invite will expire at\n   * @type {?Date}\n   * @readonly\n   */\n  get expiresAt() {\n    const { expiresTimestamp } = this;\n    return expiresTimestamp ? new Date(expiresTimestamp) : null;\n  }\n\n  /**\n   * The URL to the invite\n   * @type {string}\n   * @readonly\n   */\n  get url() {\n    return Endpoints.invite(this.client.options.http.invite, this.code);\n  }\n\n  /**\n   * Deletes this invite.\n   * @param {string} [reason] Reason for deleting this invite\n   * @returns {Promise<Invite>}\n   */\n  async delete(reason) {\n    await this.client.api.invites[this.code].delete({ reason });\n    return this;\n  }\n\n  /**\n   * When concatenated with a string, this automatically concatenates the invite's URL instead of the object.\n   * @returns {string}\n   * @example\n   * // Logs: Invite: https://discord.gg/A1b2C3\n   * console.log(`Invite: ${invite}`);\n   */\n  toString() {\n    return this.url;\n  }\n\n  toJSON() {\n    return super.toJSON({\n      url: true,\n      expiresTimestamp: true,\n      presenceCount: false,\n      memberCount: false,\n      uses: false,\n      channel: 'channelId',\n      inviter: 'inviterId',\n      guild: 'guildId',\n    });\n  }\n\n  valueOf() {\n    return this.code;\n  }\n}\n\n/**\n * Regular expression that globally matches Discord invite links\n * @type {RegExp}\n */\nInvite.INVITES_PATTERN = /discord(?:(?:app)?\\.com\\/invite|\\.gg(?:\\/invite)?)\\/([\\w-]{2,255})/gi;\n\nmodule.exports = Invite;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/Invite.js?")},"./node_modules/@citizenfx/discord.js/src/structures/InviteGuild.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/InviteGuild.js ***!
  \**************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst AnonymousGuild = __webpack_require__(/*! ./AnonymousGuild */ "./node_modules/@citizenfx/discord.js/src/structures/AnonymousGuild.js");\nconst WelcomeScreen = __webpack_require__(/*! ./WelcomeScreen */ "./node_modules/@citizenfx/discord.js/src/structures/WelcomeScreen.js");\n\n/**\n * Represents a guild received from an invite, includes welcome screen data if available.\n * @extends {AnonymousGuild}\n */\nclass InviteGuild extends AnonymousGuild {\n  constructor(client, data) {\n    super(client, data);\n\n    /**\n     * The welcome screen for this invite guild\n     * @type {?WelcomeScreen}\n     */\n    this.welcomeScreen =\n      typeof data.welcome_screen !== \'undefined\' ? new WelcomeScreen(this, data.welcome_screen) : null;\n  }\n}\n\nmodule.exports = InviteGuild;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/InviteGuild.js?')},"./node_modules/@citizenfx/discord.js/src/structures/InviteStageInstance.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/InviteStageInstance.js ***!
  \**********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst Base = __webpack_require__(/*! ./Base */ \"./node_modules/@citizenfx/discord.js/src/structures/Base.js\");\n\n/**\n * Represents the data about a public {@link StageInstance} in an {@link Invite}.\n * @extends {Base}\n */\nclass InviteStageInstance extends Base {\n  constructor(client, data, channelId, guildId) {\n    super(client);\n\n    /**\n     * The id of the stage channel this invite is for\n     * @type {Snowflake}\n     */\n    this.channelId = channelId;\n\n    /**\n     * The stage channel's guild id\n     * @type {Snowflake}\n     */\n    this.guildId = guildId;\n\n    /**\n     * The members speaking in the stage channel\n     * @type {Collection<Snowflake, GuildMember>}\n     */\n    this.members = new Collection();\n\n    this._patch(data);\n  }\n\n  _patch(data) {\n    if ('topic' in data) {\n      /**\n       * The topic of the stage instance\n       * @type {string}\n       */\n      this.topic = data.topic;\n    }\n\n    if ('participant_count' in data) {\n      /**\n       * The number of users in the stage channel\n       * @type {number}\n       */\n      this.participantCount = data.participant_count;\n    }\n\n    if ('speaker_count' in data) {\n      /**\n       * The number of users speaking in the stage channel\n       * @type {number}\n       */\n      this.speakerCount = data.speaker_count;\n    }\n\n    this.members.clear();\n    for (const rawMember of data.members) {\n      const member = this.guild.members._add(rawMember);\n      this.members.set(member.id, member);\n    }\n  }\n\n  /**\n   * The stage channel this invite is for\n   * @type {?StageChannel}\n   * @readonly\n   */\n  get channel() {\n    return this.client.channels.resolve(this.channelId);\n  }\n\n  /**\n   * The guild of the stage channel this invite is for\n   * @type {?Guild}\n   * @readonly\n   */\n  get guild() {\n    return this.client.guilds.resolve(this.guildId);\n  }\n}\n\nmodule.exports = InviteStageInstance;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/InviteStageInstance.js?")},"./node_modules/@citizenfx/discord.js/src/structures/Message.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/Message.js ***!
  \**********************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nconst process = __webpack_require__(/*! node:process */ \"node:process\");\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst Base = __webpack_require__(/*! ./Base */ \"./node_modules/@citizenfx/discord.js/src/structures/Base.js\");\nconst BaseMessageComponent = __webpack_require__(/*! ./BaseMessageComponent */ \"./node_modules/@citizenfx/discord.js/src/structures/BaseMessageComponent.js\");\nconst ClientApplication = __webpack_require__(/*! ./ClientApplication */ \"./node_modules/@citizenfx/discord.js/src/structures/ClientApplication.js\");\nconst InteractionCollector = __webpack_require__(/*! ./InteractionCollector */ \"./node_modules/@citizenfx/discord.js/src/structures/InteractionCollector.js\");\nconst MessageAttachment = __webpack_require__(/*! ./MessageAttachment */ \"./node_modules/@citizenfx/discord.js/src/structures/MessageAttachment.js\");\nconst Embed = __webpack_require__(/*! ./MessageEmbed */ \"./node_modules/@citizenfx/discord.js/src/structures/MessageEmbed.js\");\nconst Mentions = __webpack_require__(/*! ./MessageMentions */ \"./node_modules/@citizenfx/discord.js/src/structures/MessageMentions.js\");\nconst MessagePayload = __webpack_require__(/*! ./MessagePayload */ \"./node_modules/@citizenfx/discord.js/src/structures/MessagePayload.js\");\nconst ReactionCollector = __webpack_require__(/*! ./ReactionCollector */ \"./node_modules/@citizenfx/discord.js/src/structures/ReactionCollector.js\");\nconst { Sticker } = __webpack_require__(/*! ./Sticker */ \"./node_modules/@citizenfx/discord.js/src/structures/Sticker.js\");\nconst { Error } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst ReactionManager = __webpack_require__(/*! ../managers/ReactionManager */ \"./node_modules/@citizenfx/discord.js/src/managers/ReactionManager.js\");\nconst { InteractionTypes, MessageTypes, SystemMessageTypes } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst MessageFlags = __webpack_require__(/*! ../util/MessageFlags */ \"./node_modules/@citizenfx/discord.js/src/util/MessageFlags.js\");\nconst Permissions = __webpack_require__(/*! ../util/Permissions */ \"./node_modules/@citizenfx/discord.js/src/util/Permissions.js\");\nconst SnowflakeUtil = __webpack_require__(/*! ../util/SnowflakeUtil */ \"./node_modules/@citizenfx/discord.js/src/util/SnowflakeUtil.js\");\nconst Util = __webpack_require__(/*! ../util/Util */ \"./node_modules/@citizenfx/discord.js/src/util/Util.js\");\n\n/**\n * @type {WeakSet<Message>}\n * @private\n * @internal\n */\nconst deletedMessages = new WeakSet();\nlet deprecationEmittedForDeleted = false;\n\n/**\n * Represents a message on Discord.\n * @extends {Base}\n */\nclass Message extends Base {\n  constructor(client, data) {\n    super(client);\n\n    /**\n     * The id of the channel the message was sent in\n     * @type {Snowflake}\n     */\n    this.channelId = data.channel_id;\n\n    /**\n     * The id of the guild the message was sent in, if any\n     * @type {?Snowflake}\n     */\n    this.guildId = data.guild_id ?? this.channel?.guild?.id ?? null;\n\n    this._patch(data);\n  }\n\n  _patch(data) {\n    /**\n     * The message's id\n     * @type {Snowflake}\n     */\n    this.id = data.id;\n\n    /**\n     * The timestamp the message was sent at\n     * @type {number}\n     */\n    this.createdTimestamp = SnowflakeUtil.timestampFrom(this.id);\n\n    if ('type' in data) {\n      /**\n       * The type of the message\n       * @type {?MessageType}\n       */\n      this.type = MessageTypes[data.type];\n\n      /**\n       * Whether or not this message was sent by Discord, not actually a user (e.g. pin notifications)\n       * @type {?boolean}\n       */\n      this.system = SystemMessageTypes.includes(this.type);\n    } else {\n      this.system ??= null;\n      this.type ??= null;\n    }\n\n    if ('content' in data) {\n      /**\n       * The content of the message\n       * @type {?string}\n       */\n      this.content = data.content;\n    } else {\n      this.content ??= null;\n    }\n\n    if ('author' in data) {\n      /**\n       * The author of the message\n       * @type {?User}\n       */\n      this.author = this.client.users._add(data.author, !data.webhook_id);\n    } else {\n      this.author ??= null;\n    }\n\n    if ('pinned' in data) {\n      /**\n       * Whether or not this message is pinned\n       * @type {?boolean}\n       */\n      this.pinned = Boolean(data.pinned);\n    } else {\n      this.pinned ??= null;\n    }\n\n    if ('tts' in data) {\n      /**\n       * Whether or not the message was Text-To-Speech\n       * @type {?boolean}\n       */\n      this.tts = data.tts;\n    } else {\n      this.tts ??= null;\n    }\n\n    if ('nonce' in data) {\n      /**\n       * A random number or string used for checking message delivery\n       * <warn>This is only received after the message was sent successfully, and\n       * lost if re-fetched</warn>\n       * @type {?string}\n       */\n      this.nonce = data.nonce;\n    } else {\n      this.nonce ??= null;\n    }\n\n    if ('embeds' in data) {\n      /**\n       * A list of embeds in the message - e.g. YouTube Player\n       * @type {MessageEmbed[]}\n       */\n      this.embeds = data.embeds.map(e => new Embed(e, true));\n    } else {\n      this.embeds = this.embeds?.slice() ?? [];\n    }\n\n    if ('components' in data) {\n      /**\n       * A list of MessageActionRows in the message\n       * @type {MessageActionRow[]}\n       */\n      this.components = data.components.map(c => BaseMessageComponent.create(c, this.client));\n    } else {\n      this.components = this.components?.slice() ?? [];\n    }\n\n    if ('attachments' in data) {\n      /**\n       * A collection of attachments in the message - e.g. Pictures - mapped by their ids\n       * @type {Collection<Snowflake, MessageAttachment>}\n       */\n      this.attachments = new Collection();\n      if (data.attachments) {\n        for (const attachment of data.attachments) {\n          this.attachments.set(attachment.id, new MessageAttachment(attachment.url, attachment.filename, attachment));\n        }\n      }\n    } else {\n      this.attachments = new Collection(this.attachments);\n    }\n\n    if ('sticker_items' in data || 'stickers' in data) {\n      /**\n       * A collection of stickers in the message\n       * @type {Collection<Snowflake, Sticker>}\n       */\n      this.stickers = new Collection(\n        (data.sticker_items ?? data.stickers)?.map(s => [s.id, new Sticker(this.client, s)]),\n      );\n    } else {\n      this.stickers = new Collection(this.stickers);\n    }\n\n    // Discord sends null if the message has not been edited\n    if (data.edited_timestamp) {\n      /**\n       * The timestamp the message was last edited at (if applicable)\n       * @type {?number}\n       */\n      this.editedTimestamp = new Date(data.edited_timestamp).getTime();\n    } else {\n      this.editedTimestamp ??= null;\n    }\n\n    if ('reactions' in data) {\n      /**\n       * A manager of the reactions belonging to this message\n       * @type {ReactionManager}\n       */\n      this.reactions = new ReactionManager(this);\n      if (data.reactions?.length > 0) {\n        for (const reaction of data.reactions) {\n          this.reactions._add(reaction);\n        }\n      }\n    } else {\n      this.reactions ??= new ReactionManager(this);\n    }\n\n    if (!this.mentions) {\n      /**\n       * All valid mentions that the message contains\n       * @type {MessageMentions}\n       */\n      this.mentions = new Mentions(\n        this,\n        data.mentions,\n        data.mention_roles,\n        data.mention_everyone,\n        data.mention_channels,\n        data.referenced_message?.author,\n      );\n    } else {\n      this.mentions = new Mentions(\n        this,\n        data.mentions ?? this.mentions.users,\n        data.mention_roles ?? this.mentions.roles,\n        data.mention_everyone ?? this.mentions.everyone,\n        data.mention_channels ?? this.mentions.crosspostedChannels,\n        data.referenced_message?.author ?? this.mentions.repliedUser,\n      );\n    }\n\n    if ('webhook_id' in data) {\n      /**\n       * The id of the webhook that sent the message, if applicable\n       * @type {?Snowflake}\n       */\n      this.webhookId = data.webhook_id;\n    } else {\n      this.webhookId ??= null;\n    }\n\n    if ('application' in data) {\n      /**\n       * Supplemental application information for group activities\n       * @type {?ClientApplication}\n       */\n      this.groupActivityApplication = new ClientApplication(this.client, data.application);\n    } else {\n      this.groupActivityApplication ??= null;\n    }\n\n    if ('application_id' in data) {\n      /**\n       * The id of the application of the interaction that sent this message, if any\n       * @type {?Snowflake}\n       */\n      this.applicationId = data.application_id;\n    } else {\n      this.applicationId ??= null;\n    }\n\n    if ('activity' in data) {\n      /**\n       * Group activity\n       * @type {?MessageActivity}\n       */\n      this.activity = {\n        partyId: data.activity.party_id,\n        type: data.activity.type,\n      };\n    } else {\n      this.activity ??= null;\n    }\n\n    if ('thread' in data) {\n      this.client.channels._add(data.thread, this.guild);\n    }\n\n    if (this.member && data.member) {\n      this.member._patch(data.member);\n    } else if (data.member && this.guild && this.author) {\n      this.guild.members._add(Object.assign(data.member, { user: this.author }));\n    }\n\n    if ('flags' in data) {\n      /**\n       * Flags that are applied to the message\n       * @type {Readonly<MessageFlags>}\n       */\n      this.flags = new MessageFlags(data.flags).freeze();\n    } else {\n      this.flags = new MessageFlags(this.flags).freeze();\n    }\n\n    /**\n     * Reference data sent in a message that contains ids identifying the referenced message.\n     * This can be present in the following types of message:\n     * * Crossposted messages (IS_CROSSPOST {@link MessageFlags.FLAGS message flag})\n     * * CHANNEL_FOLLOW_ADD\n     * * CHANNEL_PINNED_MESSAGE\n     * * REPLY\n     * * THREAD_STARTER_MESSAGE\n     * @see {@link https://discord.com/developers/docs/resources/channel#message-types}\n     * @typedef {Object} MessageReference\n     * @property {Snowflake} channelId The channel's id the message was referenced\n     * @property {?Snowflake} guildId The guild's id the message was referenced\n     * @property {?Snowflake} messageId The message's id that was referenced\n     */\n\n    if ('message_reference' in data) {\n      /**\n       * Message reference data\n       * @type {?MessageReference}\n       */\n      this.reference = {\n        channelId: data.message_reference.channel_id,\n        guildId: data.message_reference.guild_id,\n        messageId: data.message_reference.message_id,\n      };\n    } else {\n      this.reference ??= null;\n    }\n\n    if (data.referenced_message) {\n      this.channel?.messages._add({ guild_id: data.message_reference?.guild_id, ...data.referenced_message });\n    }\n\n    /**\n     * Partial data of the interaction that a message is a reply to\n     * @typedef {Object} MessageInteraction\n     * @property {Snowflake} id The interaction's id\n     * @property {InteractionType} type The type of the interaction\n     * @property {string} commandName The name of the interaction's application command\n     * @property {User} user The user that invoked the interaction\n     */\n\n    if (data.interaction) {\n      /**\n       * Partial data of the interaction that this message is a reply to\n       * @type {?MessageInteraction}\n       */\n      this.interaction = {\n        id: data.interaction.id,\n        type: InteractionTypes[data.interaction.type],\n        commandName: data.interaction.name,\n        user: this.client.users._add(data.interaction.user),\n      };\n    } else {\n      this.interaction ??= null;\n    }\n  }\n\n  /**\n   * Whether or not the structure has been deleted\n   * @type {boolean}\n   * @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091\n   */\n  get deleted() {\n    if (!deprecationEmittedForDeleted) {\n      deprecationEmittedForDeleted = true;\n      process.emitWarning(\n        'Message#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.',\n        'DeprecationWarning',\n      );\n    }\n\n    return deletedMessages.has(this);\n  }\n\n  set deleted(value) {\n    if (!deprecationEmittedForDeleted) {\n      deprecationEmittedForDeleted = true;\n      process.emitWarning(\n        'Message#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.',\n        'DeprecationWarning',\n      );\n    }\n\n    if (value) deletedMessages.add(this);\n    else deletedMessages.delete(this);\n  }\n\n  /**\n   * The channel that the message was sent in\n   * @type {TextChannel|DMChannel|NewsChannel|ThreadChannel}\n   * @readonly\n   */\n  get channel() {\n    return this.client.channels.resolve(this.channelId);\n  }\n\n  /**\n   * Whether or not this message is a partial\n   * @type {boolean}\n   * @readonly\n   */\n  get partial() {\n    return typeof this.content !== 'string' || !this.author;\n  }\n\n  /**\n   * Represents the author of the message as a guild member.\n   * Only available if the message comes from a guild where the author is still a member\n   * @type {?GuildMember}\n   * @readonly\n   */\n  get member() {\n    return this.guild?.members.resolve(this.author) ?? null;\n  }\n\n  /**\n   * The time the message was sent at\n   * @type {Date}\n   * @readonly\n   */\n  get createdAt() {\n    return new Date(this.createdTimestamp);\n  }\n\n  /**\n   * The time the message was last edited at (if applicable)\n   * @type {?Date}\n   * @readonly\n   */\n  get editedAt() {\n    return this.editedTimestamp ? new Date(this.editedTimestamp) : null;\n  }\n\n  /**\n   * The guild the message was sent in (if in a guild channel)\n   * @type {?Guild}\n   * @readonly\n   */\n  get guild() {\n    return this.client.guilds.resolve(this.guildId) ?? this.channel?.guild ?? null;\n  }\n\n  /**\n   * Whether this message has a thread associated with it\n   * @type {boolean}\n   * @readonly\n   */\n  get hasThread() {\n    return this.flags.has(MessageFlags.FLAGS.HAS_THREAD);\n  }\n\n  /**\n   * The thread started by this message\n   * <info>This property is not suitable for checking whether a message has a thread,\n   * use {@link Message#hasThread} instead.</info>\n   * @type {?ThreadChannel}\n   * @readonly\n   */\n  get thread() {\n    return this.channel?.threads?.resolve(this.id) ?? null;\n  }\n\n  /**\n   * The URL to jump to this message\n   * @type {string}\n   * @readonly\n   */\n  get url() {\n    return `https://discord.com/channels/${this.guildId ?? '@me'}/${this.channelId}/${this.id}`;\n  }\n\n  /**\n   * The message contents with all mentions replaced by the equivalent text.\n   * If mentions cannot be resolved to a name, the relevant mention in the message content will not be converted.\n   * @type {?string}\n   * @readonly\n   */\n  get cleanContent() {\n    // eslint-disable-next-line eqeqeq\n    return this.content != null ? Util.cleanContent(this.content, this.channel) : null;\n  }\n\n  /**\n   * Creates a reaction collector.\n   * @param {ReactionCollectorOptions} [options={}] Options to send to the collector\n   * @returns {ReactionCollector}\n   * @example\n   * // Create a reaction collector\n   * const filter = (reaction, user) => reaction.emoji.name === '👌' && user.id === 'someId';\n   * const collector = message.createReactionCollector({ filter, time: 15_000 });\n   * collector.on('collect', r => console.log(`Collected ${r.emoji.name}`));\n   * collector.on('end', collected => console.log(`Collected ${collected.size} items`));\n   */\n  createReactionCollector(options = {}) {\n    return new ReactionCollector(this, options);\n  }\n\n  /**\n   * An object containing the same properties as CollectorOptions, but a few more:\n   * @typedef {ReactionCollectorOptions} AwaitReactionsOptions\n   * @property {string[]} [errors] Stop/end reasons that cause the promise to reject\n   */\n\n  /**\n   * Similar to createReactionCollector but in promise form.\n   * Resolves with a collection of reactions that pass the specified filter.\n   * @param {AwaitReactionsOptions} [options={}] Optional options to pass to the internal collector\n   * @returns {Promise<Collection<string | Snowflake, MessageReaction>>}\n   * @example\n   * // Create a reaction collector\n   * const filter = (reaction, user) => reaction.emoji.name === '👌' && user.id === 'someId'\n   * message.awaitReactions({ filter, time: 15_000 })\n   *   .then(collected => console.log(`Collected ${collected.size} reactions`))\n   *   .catch(console.error);\n   */\n  awaitReactions(options = {}) {\n    return new Promise((resolve, reject) => {\n      const collector = this.createReactionCollector(options);\n      collector.once('end', (reactions, reason) => {\n        if (options.errors?.includes(reason)) reject(reactions);\n        else resolve(reactions);\n      });\n    });\n  }\n\n  /**\n   * @typedef {CollectorOptions} MessageComponentCollectorOptions\n   * @property {MessageComponentType} [componentType] The type of component to listen for\n   * @property {number} [max] The maximum total amount of interactions to collect\n   * @property {number} [maxComponents] The maximum number of components to collect\n   * @property {number} [maxUsers] The maximum number of users to interact\n   */\n\n  /**\n   * Creates a message component interaction collector.\n   * @param {MessageComponentCollectorOptions} [options={}] Options to send to the collector\n   * @returns {InteractionCollector}\n   * @example\n   * // Create a message component interaction collector\n   * const filter = (interaction) => interaction.customId === 'button' && interaction.user.id === 'someId';\n   * const collector = message.createMessageComponentCollector({ filter, time: 15_000 });\n   * collector.on('collect', i => console.log(`Collected ${i.customId}`));\n   * collector.on('end', collected => console.log(`Collected ${collected.size} items`));\n   */\n  createMessageComponentCollector(options = {}) {\n    return new InteractionCollector(this.client, {\n      ...options,\n      interactionType: InteractionTypes.MESSAGE_COMPONENT,\n      message: this,\n    });\n  }\n\n  /**\n   * An object containing the same properties as CollectorOptions, but a few more:\n   * @typedef {Object} AwaitMessageComponentOptions\n   * @property {CollectorFilter} [filter] The filter applied to this collector\n   * @property {number} [time] Time to wait for an interaction before rejecting\n   * @property {MessageComponentType} [componentType] The type of component interaction to collect\n   */\n\n  /**\n   * Collects a single component interaction that passes the filter.\n   * The Promise will reject if the time expires.\n   * @param {AwaitMessageComponentOptions} [options={}] Options to pass to the internal collector\n   * @returns {Promise<MessageComponentInteraction>}\n   * @example\n   * // Collect a message component interaction\n   * const filter = (interaction) => interaction.customId === 'button' && interaction.user.id === 'someId';\n   * message.awaitMessageComponent({ filter, time: 15_000 })\n   *   .then(interaction => console.log(`${interaction.customId} was clicked!`))\n   *   .catch(console.error);\n   */\n  awaitMessageComponent(options = {}) {\n    const _options = { ...options, max: 1 };\n    return new Promise((resolve, reject) => {\n      const collector = this.createMessageComponentCollector(_options);\n      collector.once('end', (interactions, reason) => {\n        const interaction = interactions.first();\n        if (interaction) resolve(interaction);\n        else reject(new Error('INTERACTION_COLLECTOR_ERROR', reason));\n      });\n    });\n  }\n\n  /**\n   * Whether the message is editable by the client user\n   * @type {boolean}\n   * @readonly\n   */\n  get editable() {\n    const precheck = Boolean(\n      this.author.id === this.client.user.id && !deletedMessages.has(this) && (!this.guild || this.channel?.viewable),\n    );\n    // Regardless of permissions thread messages cannot be edited if\n    // the thread is locked.\n    if (this.channel?.isThread()) {\n      return precheck && !this.channel.locked;\n    }\n    return precheck;\n  }\n\n  /**\n   * Whether the message is deletable by the client user\n   * @type {boolean}\n   * @readonly\n   */\n  get deletable() {\n    if (deletedMessages.has(this)) {\n      return false;\n    }\n    if (!this.guild) {\n      return this.author.id === this.client.user.id;\n    }\n    // DMChannel does not have viewable property, so check viewable after proved that message is on a guild.\n    if (!this.channel?.viewable) {\n      return false;\n    }\n\n    const permissions = this.channel?.permissionsFor(this.client.user);\n    if (!permissions) return false;\n    // This flag allows deleting even if timed out\n    if (permissions.has(Permissions.FLAGS.ADMINISTRATOR, false)) return true;\n\n    return Boolean(\n      this.author.id === this.client.user.id ||\n        (permissions.has(Permissions.FLAGS.MANAGE_MESSAGES, false) &&\n          this.guild.me.communicationDisabledUntilTimestamp < Date.now()),\n    );\n  }\n\n  /**\n   * Whether the message is pinnable by the client user\n   * @type {boolean}\n   * @readonly\n   */\n  get pinnable() {\n    const { channel } = this;\n    return Boolean(\n      !this.system &&\n        !deletedMessages.has(this) &&\n        (!this.guild ||\n          (channel?.viewable &&\n            channel?.permissionsFor(this.client.user)?.has(Permissions.FLAGS.MANAGE_MESSAGES, false))),\n    );\n  }\n\n  /**\n   * Fetches the Message this crosspost/reply/pin-add references, if available to the client\n   * @returns {Promise<Message>}\n   */\n  async fetchReference() {\n    if (!this.reference) throw new Error('MESSAGE_REFERENCE_MISSING');\n    const { channelId, messageId } = this.reference;\n    const channel = this.client.channels.resolve(channelId);\n    if (!channel) throw new Error('GUILD_CHANNEL_RESOLVE');\n    const message = await channel.messages.fetch(messageId);\n    return message;\n  }\n\n  /**\n   * Whether the message is crosspostable by the client user\n   * @type {boolean}\n   * @readonly\n   */\n  get crosspostable() {\n    const bitfield =\n      Permissions.FLAGS.SEND_MESSAGES |\n      (this.author.id === this.client.user.id ? Permissions.defaultBit : Permissions.FLAGS.MANAGE_MESSAGES);\n    const { channel } = this;\n    return Boolean(\n      channel?.type === 'GUILD_NEWS' &&\n        !this.flags.has(MessageFlags.FLAGS.CROSSPOSTED) &&\n        this.type === 'DEFAULT' &&\n        channel.viewable &&\n        channel.permissionsFor(this.client.user)?.has(bitfield, false) &&\n        !deletedMessages.has(this),\n    );\n  }\n\n  /**\n   * Options that can be passed into {@link Message#edit}.\n   * @typedef {Object} MessageEditOptions\n   * @property {?string} [content] Content to be edited\n   * @property {MessageEmbed[]|APIEmbed[]} [embeds] Embeds to be added/edited\n   * @property {MessageMentionOptions} [allowedMentions] Which mentions should be parsed from the message content\n   * @property {MessageFlags} [flags] Which flags to set for the message. Only `SUPPRESS_EMBEDS` can be edited.\n   * @property {MessageAttachment[]} [attachments] An array of attachments to keep,\n   * all attachments will be kept if omitted\n   * @property {FileOptions[]|BufferResolvable[]|MessageAttachment[]} [files] Files to add to the message\n   * @property {MessageActionRow[]|MessageActionRowOptions[]} [components]\n   * Action rows containing interactive components for the message (buttons, select menus)\n   */\n\n  /**\n   * Edits the content of the message.\n   * @param {string|MessagePayload|MessageEditOptions} options The options to provide\n   * @returns {Promise<Message>}\n   * @example\n   * // Update the content of a message\n   * message.edit('This is my new content!')\n   *   .then(msg => console.log(`Updated the content of a message to ${msg.content}`))\n   *   .catch(console.error);\n   */\n  edit(options) {\n    if (!this.channel) return Promise.reject(new Error('CHANNEL_NOT_CACHED'));\n    return this.channel.messages.edit(this, options);\n  }\n\n  /**\n   * Publishes a message in an announcement channel to all channels following it.\n   * @returns {Promise<Message>}\n   * @example\n   * // Crosspost a message\n   * if (message.channel.type === 'GUILD_NEWS') {\n   *   message.crosspost()\n   *     .then(() => console.log('Crossposted message'))\n   *     .catch(console.error);\n   * }\n   */\n  crosspost() {\n    if (!this.channel) return Promise.reject(new Error('CHANNEL_NOT_CACHED'));\n    return this.channel.messages.crosspost(this.id);\n  }\n\n  /**\n   * Pins this message to the channel's pinned messages.\n   * @returns {Promise<Message>}\n   * @example\n   * // Pin a message\n   * message.pin()\n   *   .then(console.log)\n   *   .catch(console.error)\n   */\n  async pin() {\n    if (!this.channel) throw new Error('CHANNEL_NOT_CACHED');\n    await this.channel.messages.pin(this.id);\n    return this;\n  }\n\n  /**\n   * Unpins this message from the channel's pinned messages.\n   * @returns {Promise<Message>}\n   * @example\n   * // Unpin a message\n   * message.unpin()\n   *   .then(console.log)\n   *   .catch(console.error)\n   */\n  async unpin() {\n    if (!this.channel) throw new Error('CHANNEL_NOT_CACHED');\n    await this.channel.messages.unpin(this.id);\n    return this;\n  }\n\n  /**\n   * Adds a reaction to the message.\n   * @param {EmojiIdentifierResolvable} emoji The emoji to react with\n   * @returns {Promise<MessageReaction>}\n   * @example\n   * // React to a message with a unicode emoji\n   * message.react('🤔')\n   *   .then(console.log)\n   *   .catch(console.error);\n   * @example\n   * // React to a message with a custom emoji\n   * message.react(message.guild.emojis.cache.get('123456789012345678'))\n   *   .then(console.log)\n   *   .catch(console.error);\n   */\n  async react(emoji) {\n    if (!this.channel) throw new Error('CHANNEL_NOT_CACHED');\n    await this.channel.messages.react(this.id, emoji);\n\n    return this.client.actions.MessageReactionAdd.handle(\n      {\n        user: this.client.user,\n        channel: this.channel,\n        message: this,\n        emoji: Util.resolvePartialEmoji(emoji),\n      },\n      true,\n    ).reaction;\n  }\n\n  /**\n   * Deletes the message.\n   * @returns {Promise<Message>}\n   * @example\n   * // Delete a message\n   * message.delete()\n   *   .then(msg => console.log(`Deleted message from ${msg.author.username}`))\n   *   .catch(console.error);\n   */\n  async delete() {\n    if (!this.channel) throw new Error('CHANNEL_NOT_CACHED');\n    await this.channel.messages.delete(this.id);\n    return this;\n  }\n\n  /**\n   * Options provided when sending a message as an inline reply.\n   * @typedef {BaseMessageOptions} ReplyMessageOptions\n   * @property {boolean} [failIfNotExists=true] Whether to error if the referenced message\n   * does not exist (creates a standard message in this case when false)\n   * @property {StickerResolvable[]} [stickers=[]] Stickers to send in the message\n   */\n\n  /**\n   * Send an inline reply to this message.\n   * @param {string|MessagePayload|ReplyMessageOptions} options The options to provide\n   * @returns {Promise<Message>}\n   * @example\n   * // Reply to a message\n   * message.reply('This is a reply!')\n   *   .then(() => console.log(`Replied to message \"${message.content}\"`))\n   *   .catch(console.error);\n   */\n  reply(options) {\n    if (!this.channel) return Promise.reject(new Error('CHANNEL_NOT_CACHED'));\n    let data;\n\n    if (options instanceof MessagePayload) {\n      data = options;\n    } else {\n      data = MessagePayload.create(this, options, {\n        reply: {\n          messageReference: this,\n          failIfNotExists: options?.failIfNotExists ?? this.client.options.failIfNotExists,\n        },\n      });\n    }\n    return this.channel.send(data);\n  }\n\n  /**\n   * A number that is allowed to be the duration (in minutes) of inactivity after which a thread is automatically\n   * archived. This can be:\n   * * `60` (1 hour)\n   * * `1440` (1 day)\n   * * `4320` (3 days) <warn>This is only available when the guild has the `THREE_DAY_THREAD_ARCHIVE` feature.</warn>\n   * * `10080` (7 days) <warn>This is only available when the guild has the `SEVEN_DAY_THREAD_ARCHIVE` feature.</warn>\n   * * `'MAX'` Based on the guild's features\n   * @typedef {number|string} ThreadAutoArchiveDuration\n   */\n\n  /**\n   * Options for starting a thread on a message.\n   * @typedef {Object} StartThreadOptions\n   * @property {string} name The name of the new thread\n   * @property {ThreadAutoArchiveDuration} [autoArchiveDuration=this.channel.defaultAutoArchiveDuration] The amount of\n   * time (in minutes) after which the thread should automatically archive in case of no recent activity\n   * @property {string} [reason] Reason for creating the thread\n   * @property {number} [rateLimitPerUser] The rate limit per user (slowmode) for the thread in seconds\n   */\n\n  /**\n   * Create a new public thread from this message\n   * @see ThreadManager#create\n   * @param {StartThreadOptions} [options] Options for starting a thread on this message\n   * @returns {Promise<ThreadChannel>}\n   */\n  startThread(options = {}) {\n    if (!this.channel) return Promise.reject(new Error('CHANNEL_NOT_CACHED'));\n    if (!['GUILD_TEXT', 'GUILD_NEWS'].includes(this.channel.type)) {\n      return Promise.reject(new Error('MESSAGE_THREAD_PARENT'));\n    }\n    if (this.hasThread) return Promise.reject(new Error('MESSAGE_EXISTING_THREAD'));\n    return this.channel.threads.create({ ...options, startMessage: this });\n  }\n\n  /**\n   * Fetch this message.\n   * @param {boolean} [force=true] Whether to skip the cache check and request the API\n   * @returns {Promise<Message>}\n   */\n  fetch(force = true) {\n    if (!this.channel) return Promise.reject(new Error('CHANNEL_NOT_CACHED'));\n    return this.channel.messages.fetch(this.id, { force });\n  }\n\n  /**\n   * Fetches the webhook used to create this message.\n   * @returns {Promise<?Webhook>}\n   */\n  fetchWebhook() {\n    if (!this.webhookId) return Promise.reject(new Error('WEBHOOK_MESSAGE'));\n    if (this.webhookId === this.applicationId) return Promise.reject(new Error('WEBHOOK_APPLICATION'));\n    return this.client.fetchWebhook(this.webhookId);\n  }\n\n  /**\n   * Suppresses or unsuppresses embeds on a message.\n   * @param {boolean} [suppress=true] If the embeds should be suppressed or not\n   * @returns {Promise<Message>}\n   */\n  suppressEmbeds(suppress = true) {\n    const flags = new MessageFlags(this.flags.bitfield);\n\n    if (suppress) {\n      flags.add(MessageFlags.FLAGS.SUPPRESS_EMBEDS);\n    } else {\n      flags.remove(MessageFlags.FLAGS.SUPPRESS_EMBEDS);\n    }\n\n    return this.edit({ flags });\n  }\n\n  /**\n   * Removes the attachments from this message.\n   * @returns {Promise<Message>}\n   */\n  removeAttachments() {\n    return this.edit({ attachments: [] });\n  }\n\n  /**\n   * Resolves a component by a custom id.\n   * @param {string} customId The custom id to resolve against\n   * @returns {?MessageActionRowComponent}\n   */\n  resolveComponent(customId) {\n    return this.components.flatMap(row => row.components).find(component => component.customId === customId) ?? null;\n  }\n\n  /**\n   * Used mainly internally. Whether two messages are identical in properties. If you want to compare messages\n   * without checking all the properties, use `message.id === message2.id`, which is much more efficient. This\n   * method allows you to see if there are differences in content, embeds, attachments, nonce and tts properties.\n   * @param {Message} message The message to compare it to\n   * @param {APIMessage} rawData Raw data passed through the WebSocket about this message\n   * @returns {boolean}\n   */\n  equals(message, rawData) {\n    if (!message) return false;\n    const embedUpdate = !message.author && !message.attachments;\n    if (embedUpdate) return this.id === message.id && this.embeds.length === message.embeds.length;\n\n    let equal =\n      this.id === message.id &&\n      this.author.id === message.author.id &&\n      this.content === message.content &&\n      this.tts === message.tts &&\n      this.nonce === message.nonce &&\n      this.embeds.length === message.embeds.length &&\n      this.attachments.length === message.attachments.length;\n\n    if (equal && rawData) {\n      equal =\n        this.mentions.everyone === message.mentions.everyone &&\n        this.createdTimestamp === new Date(rawData.timestamp).getTime() &&\n        this.editedTimestamp === new Date(rawData.edited_timestamp).getTime();\n    }\n\n    return equal;\n  }\n\n  /**\n   * Whether this message is from a guild.\n   * @returns {boolean}\n   */\n  inGuild() {\n    return Boolean(this.guildId);\n  }\n\n  /**\n   * When concatenated with a string, this automatically concatenates the message's content instead of the object.\n   * @returns {string}\n   * @example\n   * // Logs: Message: This is a message!\n   * console.log(`Message: ${message}`);\n   */\n  toString() {\n    return this.content;\n  }\n\n  toJSON() {\n    return super.toJSON({\n      channel: 'channelId',\n      author: 'authorId',\n      groupActivityApplication: 'groupActivityApplicationId',\n      guild: 'guildId',\n      cleanContent: true,\n      member: false,\n      reactions: false,\n    });\n  }\n}\n\nexports.Message = Message;\nexports.deletedMessages = deletedMessages;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/Message.js?")},"./node_modules/@citizenfx/discord.js/src/structures/MessageActionRow.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/MessageActionRow.js ***!
  \*******************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst BaseMessageComponent = __webpack_require__(/*! ./BaseMessageComponent */ "./node_modules/@citizenfx/discord.js/src/structures/BaseMessageComponent.js");\nconst { MessageComponentTypes } = __webpack_require__(/*! ../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\n/**\n * Represents an action row containing message components.\n * @extends {BaseMessageComponent}\n */\nclass MessageActionRow extends BaseMessageComponent {\n  /**\n   * Components that can be placed in an action row\n   * * MessageButton\n   * * MessageSelectMenu\n   * @typedef {MessageButton|MessageSelectMenu} MessageActionRowComponent\n   */\n\n  /**\n   * Options for components that can be placed in an action row\n   * * MessageButtonOptions\n   * * MessageSelectMenuOptions\n   * @typedef {MessageButtonOptions|MessageSelectMenuOptions} MessageActionRowComponentOptions\n   */\n\n  /**\n   * Data that can be resolved into components that can be placed in an action row\n   * * MessageActionRowComponent\n   * * MessageActionRowComponentOptions\n   * @typedef {MessageActionRowComponent|MessageActionRowComponentOptions} MessageActionRowComponentResolvable\n   */\n\n  /**\n   * @typedef {BaseMessageComponentOptions} MessageActionRowOptions\n   * @property {MessageActionRowComponentResolvable[]} [components]\n   * The components to place in this action row\n   */\n\n  /**\n   * @param {MessageActionRow|MessageActionRowOptions} [data={}] MessageActionRow to clone or raw data\n   * @param {Client} [client] The client constructing this MessageActionRow, if provided\n   */\n  constructor(data = {}, client = null) {\n    super({ type: \'ACTION_ROW\' });\n\n    /**\n     * The components in this action row\n     * @type {MessageActionRowComponent[]}\n     */\n    this.components = data.components?.map(c => BaseMessageComponent.create(c, client)) ?? [];\n  }\n\n  /**\n   * Adds components to the action row.\n   * @param {...MessageActionRowComponentResolvable[]} components The components to add\n   * @returns {MessageActionRow}\n   */\n  addComponents(...components) {\n    this.components.push(...components.flat(Infinity).map(c => BaseMessageComponent.create(c)));\n    return this;\n  }\n\n  /**\n   * Sets the components of the action row.\n   * @param {...MessageActionRowComponentResolvable[]} components The components to set\n   * @returns {MessageActionRow}\n   */\n  setComponents(...components) {\n    this.spliceComponents(0, this.components.length, components);\n    return this;\n  }\n\n  /**\n   * Removes, replaces, and inserts components in the action row.\n   * @param {number} index The index to start at\n   * @param {number} deleteCount The number of components to remove\n   * @param {...MessageActionRowComponentResolvable[]} [components] The replacing components\n   * @returns {MessageActionRow}\n   */\n  spliceComponents(index, deleteCount, ...components) {\n    this.components.splice(index, deleteCount, ...components.flat(Infinity).map(c => BaseMessageComponent.create(c)));\n    return this;\n  }\n\n  /**\n   * Transforms the action row to a plain object.\n   * @returns {APIMessageComponent} The raw data of this action row\n   */\n  toJSON() {\n    return {\n      components: this.components.map(c => c.toJSON()),\n      type: MessageComponentTypes[this.type],\n    };\n  }\n}\n\nmodule.exports = MessageActionRow;\n\n/**\n * @external APIMessageComponent\n * @see {@link https://discord.com/developers/docs/interactions/message-components#component-object}\n */\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/MessageActionRow.js?')},"./node_modules/@citizenfx/discord.js/src/structures/MessageAttachment.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/MessageAttachment.js ***!
  \********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Util = __webpack_require__(/*! ../util/Util */ \"./node_modules/@citizenfx/discord.js/src/util/Util.js\");\n\n/**\n * Represents an attachment in a message.\n */\nclass MessageAttachment {\n  /**\n   * @param {BufferResolvable|Stream} attachment The file\n   * @param {string} [name=null] The name of the file, if any\n   * @param {APIAttachment} [data] Extra data\n   */\n  constructor(attachment, name = null, data) {\n    this.attachment = attachment;\n    /**\n     * The name of this attachment\n     * @type {?string}\n     */\n    this.name = name;\n    if (data) this._patch(data);\n  }\n\n  /**\n   * Sets the description of this attachment.\n   * @param {string} description The description of the file\n   * @returns {MessageAttachment} This attachment\n   */\n  setDescription(description) {\n    this.description = description;\n    return this;\n  }\n\n  /**\n   * Sets the file of this attachment.\n   * @param {BufferResolvable|Stream} attachment The file\n   * @param {string} [name=null] The name of the file, if any\n   * @returns {MessageAttachment} This attachment\n   */\n  setFile(attachment, name = null) {\n    this.attachment = attachment;\n    this.name = name;\n    return this;\n  }\n\n  /**\n   * Sets the name of this attachment.\n   * @param {string} name The name of the file\n   * @returns {MessageAttachment} This attachment\n   */\n  setName(name) {\n    this.name = name;\n    return this;\n  }\n\n  /**\n   * Sets whether this attachment is a spoiler\n   * @param {boolean} [spoiler=true] Whether the attachment should be marked as a spoiler\n   * @returns {MessageAttachment} This attachment\n   */\n  setSpoiler(spoiler = true) {\n    if (spoiler === this.spoiler) return this;\n\n    if (!spoiler) {\n      while (this.spoiler) {\n        this.name = this.name.slice('SPOILER_'.length);\n      }\n      return this;\n    }\n    this.name = `SPOILER_${this.name}`;\n    return this;\n  }\n\n  _patch(data) {\n    /**\n     * The attachment's id\n     * @type {Snowflake}\n     */\n    this.id = data.id;\n\n    if ('size' in data) {\n      /**\n       * The size of this attachment in bytes\n       * @type {number}\n       */\n      this.size = data.size;\n    }\n\n    if ('url' in data) {\n      /**\n       * The URL to this attachment\n       * @type {string}\n       */\n      this.url = data.url;\n    }\n\n    if ('proxy_url' in data) {\n      /**\n       * The Proxy URL to this attachment\n       * @type {string}\n       */\n      this.proxyURL = data.proxy_url;\n    }\n\n    if ('height' in data) {\n      /**\n       * The height of this attachment (if an image or video)\n       * @type {?number}\n       */\n      this.height = data.height;\n    } else {\n      this.height ??= null;\n    }\n\n    if ('width' in data) {\n      /**\n       * The width of this attachment (if an image or video)\n       * @type {?number}\n       */\n      this.width = data.width;\n    } else {\n      this.width ??= null;\n    }\n\n    if ('content_type' in data) {\n      /**\n       * This media type of this attachment\n       * @type {?string}\n       */\n      this.contentType = data.content_type;\n    } else {\n      this.contentType ??= null;\n    }\n\n    if ('description' in data) {\n      /**\n       * The description (alt text) of this attachment\n       * @type {?string}\n       */\n      this.description = data.description;\n    } else {\n      this.description ??= null;\n    }\n\n    /**\n     * Whether this attachment is ephemeral\n     * @type {boolean}\n     */\n    this.ephemeral = data.ephemeral ?? false;\n  }\n\n  /**\n   * Whether or not this attachment has been marked as a spoiler\n   * @type {boolean}\n   * @readonly\n   */\n  get spoiler() {\n    return Util.basename(this.url ?? this.name).startsWith('SPOILER_');\n  }\n\n  toJSON() {\n    return Util.flatten(this);\n  }\n}\n\nmodule.exports = MessageAttachment;\n\n/**\n * @external APIAttachment\n * @see {@link https://discord.com/developers/docs/resources/channel#attachment-object}\n */\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/MessageAttachment.js?")},"./node_modules/@citizenfx/discord.js/src/structures/MessageButton.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/MessageButton.js ***!
  \****************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst BaseMessageComponent = __webpack_require__(/*! ./BaseMessageComponent */ \"./node_modules/@citizenfx/discord.js/src/structures/BaseMessageComponent.js\");\nconst { RangeError } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst { MessageButtonStyles, MessageComponentTypes } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst Util = __webpack_require__(/*! ../util/Util */ \"./node_modules/@citizenfx/discord.js/src/util/Util.js\");\n\n/**\n * Represents a button message component.\n * @extends {BaseMessageComponent}\n */\nclass MessageButton extends BaseMessageComponent {\n  /**\n   * @typedef {BaseMessageComponentOptions} MessageButtonOptions\n   * @property {string} [label] The text to be displayed on this button\n   * @property {string} [customId] A unique string to be sent in the interaction when clicked\n   * @property {MessageButtonStyleResolvable} [style] The style of this button\n   * @property {EmojiIdentifierResolvable} [emoji] The emoji to be displayed to the left of the text\n   * @property {string} [url] Optional URL for link-style buttons\n   * @property {boolean} [disabled=false] Disables the button to prevent interactions\n   */\n\n  /**\n   * @param {MessageButton|MessageButtonOptions} [data={}] MessageButton to clone or raw data\n   */\n  constructor(data = {}) {\n    super({ type: 'BUTTON' });\n\n    this.setup(data);\n  }\n\n  setup(data) {\n    /**\n     * The text to be displayed on this button\n     * @type {?string}\n     */\n    this.label = data.label ?? null;\n\n    /**\n     * A unique string to be sent in the interaction when clicked\n     * @type {?string}\n     */\n    this.customId = data.custom_id ?? data.customId ?? null;\n\n    /**\n     * The style of this button\n     * @type {?MessageButtonStyle}\n     */\n    this.style = data.style ? MessageButton.resolveStyle(data.style) : null;\n\n    /**\n     * Emoji for this button\n     * @type {?RawEmoji}\n     */\n    this.emoji = data.emoji ? Util.resolvePartialEmoji(data.emoji) : null;\n\n    /**\n     * The URL this button links to, if it is a Link style button\n     * @type {?string}\n     */\n    this.url = data.url ?? null;\n\n    /**\n     * Whether this button is currently disabled\n     * @type {boolean}\n     */\n    this.disabled = data.disabled ?? false;\n  }\n\n  /**\n   * Sets the custom id for this button\n   * @param {string} customId A unique string to be sent in the interaction when clicked\n   * @returns {MessageButton}\n   */\n  setCustomId(customId) {\n    this.customId = Util.verifyString(customId, RangeError, 'BUTTON_CUSTOM_ID');\n    return this;\n  }\n\n  /**\n   * Sets the interactive status of the button\n   * @param {boolean} [disabled=true] Whether this button should be disabled\n   * @returns {MessageButton}\n   */\n  setDisabled(disabled = true) {\n    this.disabled = disabled;\n    return this;\n  }\n\n  /**\n   * Set the emoji of this button\n   * @param {EmojiIdentifierResolvable} emoji The emoji to be displayed on this button\n   * @returns {MessageButton}\n   */\n  setEmoji(emoji) {\n    this.emoji = Util.resolvePartialEmoji(emoji);\n    return this;\n  }\n\n  /**\n   * Sets the label of this button\n   * @param {string} label The text to be displayed on this button\n   * @returns {MessageButton}\n   */\n  setLabel(label) {\n    this.label = Util.verifyString(label, RangeError, 'BUTTON_LABEL');\n    return this;\n  }\n\n  /**\n   * Sets the style of this button\n   * @param {MessageButtonStyleResolvable} style The style of this button\n   * @returns {MessageButton}\n   */\n  setStyle(style) {\n    this.style = MessageButton.resolveStyle(style);\n    return this;\n  }\n\n  /**\n   * Sets the URL of this button.\n   * <info>MessageButton#style must be LINK when setting a URL</info>\n   * @param {string} url The URL of this button\n   * @returns {MessageButton}\n   */\n  setURL(url) {\n    this.url = Util.verifyString(url, RangeError, 'BUTTON_URL');\n    return this;\n  }\n\n  /**\n   * Transforms the button to a plain object.\n   * @returns {APIMessageButton} The raw data of this button\n   */\n  toJSON() {\n    return {\n      custom_id: this.customId,\n      disabled: this.disabled,\n      emoji: this.emoji,\n      label: this.label,\n      style: MessageButtonStyles[this.style],\n      type: MessageComponentTypes[this.type],\n      url: this.url,\n    };\n  }\n\n  /**\n   * Data that can be resolved to a MessageButtonStyle. This can be\n   * * MessageButtonStyle\n   * * number\n   * @typedef {number|MessageButtonStyle} MessageButtonStyleResolvable\n   */\n\n  /**\n   * Resolves the style of a button\n   * @param {MessageButtonStyleResolvable} style The style to resolve\n   * @returns {MessageButtonStyle}\n   * @private\n   */\n  static resolveStyle(style) {\n    return typeof style === 'string' ? style : MessageButtonStyles[style];\n  }\n}\n\nmodule.exports = MessageButton;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/MessageButton.js?")},"./node_modules/@citizenfx/discord.js/src/structures/MessageCollector.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/MessageCollector.js ***!
  \*******************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Collector = __webpack_require__(/*! ./interfaces/Collector */ \"./node_modules/@citizenfx/discord.js/src/structures/interfaces/Collector.js\");\nconst { Events } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\n\n/**\n * @typedef {CollectorOptions} MessageCollectorOptions\n * @property {number} max The maximum amount of messages to collect\n * @property {number} maxProcessed The maximum amount of messages to process\n */\n\n/**\n * Collects messages on a channel.\n * Will automatically stop if the channel ({@link Client#event:channelDelete channelDelete}),\n * thread ({@link Client#event:threadDelete threadDelete}), or\n * guild ({@link Client#event:guildDelete guildDelete}) is deleted.\n * @extends {Collector}\n */\nclass MessageCollector extends Collector {\n  /**\n   * @param {TextBasedChannels} channel The channel\n   * @param {MessageCollectorOptions} options The options to be applied to this collector\n   * @emits MessageCollector#message\n   */\n  constructor(channel, options = {}) {\n    super(channel.client, options);\n\n    /**\n     * The channel\n     * @type {TextBasedChannels}\n     */\n    this.channel = channel;\n\n    /**\n     * Total number of messages that were received in the channel during message collection\n     * @type {number}\n     */\n    this.received = 0;\n\n    const bulkDeleteListener = messages => {\n      for (const message of messages.values()) this.handleDispose(message);\n    };\n\n    this._handleChannelDeletion = this._handleChannelDeletion.bind(this);\n    this._handleThreadDeletion = this._handleThreadDeletion.bind(this);\n    this._handleGuildDeletion = this._handleGuildDeletion.bind(this);\n\n    this.client.incrementMaxListeners();\n    this.client.on(Events.MESSAGE_CREATE, this.handleCollect);\n    this.client.on(Events.MESSAGE_DELETE, this.handleDispose);\n    this.client.on(Events.MESSAGE_BULK_DELETE, bulkDeleteListener);\n    this.client.on(Events.CHANNEL_DELETE, this._handleChannelDeletion);\n    this.client.on(Events.THREAD_DELETE, this._handleThreadDeletion);\n    this.client.on(Events.GUILD_DELETE, this._handleGuildDeletion);\n\n    this.once('end', () => {\n      this.client.removeListener(Events.MESSAGE_CREATE, this.handleCollect);\n      this.client.removeListener(Events.MESSAGE_DELETE, this.handleDispose);\n      this.client.removeListener(Events.MESSAGE_BULK_DELETE, bulkDeleteListener);\n      this.client.removeListener(Events.CHANNEL_DELETE, this._handleChannelDeletion);\n      this.client.removeListener(Events.THREAD_DELETE, this._handleThreadDeletion);\n      this.client.removeListener(Events.GUILD_DELETE, this._handleGuildDeletion);\n      this.client.decrementMaxListeners();\n    });\n  }\n\n  /**\n   * Handles a message for possible collection.\n   * @param {Message} message The message that could be collected\n   * @returns {?Snowflake}\n   * @private\n   */\n  collect(message) {\n    /**\n     * Emitted whenever a message is collected.\n     * @event MessageCollector#collect\n     * @param {Message} message The message that was collected\n     */\n    if (message.channelId !== this.channel.id) return null;\n    this.received++;\n    return message.id;\n  }\n\n  /**\n   * Handles a message for possible disposal.\n   * @param {Message} message The message that could be disposed of\n   * @returns {?Snowflake}\n   */\n  dispose(message) {\n    /**\n     * Emitted whenever a message is disposed of.\n     * @event MessageCollector#dispose\n     * @param {Message} message The message that was disposed of\n     */\n    return message.channelId === this.channel.id ? message.id : null;\n  }\n\n  /**\n   * The reason this collector has ended with, or null if it hasn't ended yet\n   * @type {?string}\n   * @readonly\n   */\n  get endReason() {\n    if (this.options.max && this.collected.size >= this.options.max) return 'limit';\n    if (this.options.maxProcessed && this.received === this.options.maxProcessed) return 'processedLimit';\n    return null;\n  }\n\n  /**\n   * Handles checking if the channel has been deleted, and if so, stops the collector with the reason 'channelDelete'.\n   * @private\n   * @param {GuildChannel} channel The channel that was deleted\n   * @returns {void}\n   */\n  _handleChannelDeletion(channel) {\n    if (channel.id === this.channel.id || channel.id === this.channel.parentId) {\n      this.stop('channelDelete');\n    }\n  }\n\n  /**\n   * Handles checking if the thread has been deleted, and if so, stops the collector with the reason 'threadDelete'.\n   * @private\n   * @param {ThreadChannel} thread The thread that was deleted\n   * @returns {void}\n   */\n  _handleThreadDeletion(thread) {\n    if (thread.id === this.channel.id) {\n      this.stop('threadDelete');\n    }\n  }\n\n  /**\n   * Handles checking if the guild has been deleted, and if so, stops the collector with the reason 'guildDelete'.\n   * @private\n   * @param {Guild} guild The guild that was deleted\n   * @returns {void}\n   */\n  _handleGuildDeletion(guild) {\n    if (guild.id === this.channel.guild?.id) {\n      this.stop('guildDelete');\n    }\n  }\n}\n\nmodule.exports = MessageCollector;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/MessageCollector.js?")},"./node_modules/@citizenfx/discord.js/src/structures/MessageComponentInteraction.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/MessageComponentInteraction.js ***!
  \******************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Interaction = __webpack_require__(/*! ./Interaction */ "./node_modules/@citizenfx/discord.js/src/structures/Interaction.js");\nconst InteractionWebhook = __webpack_require__(/*! ./InteractionWebhook */ "./node_modules/@citizenfx/discord.js/src/structures/InteractionWebhook.js");\nconst InteractionResponses = __webpack_require__(/*! ./interfaces/InteractionResponses */ "./node_modules/@citizenfx/discord.js/src/structures/interfaces/InteractionResponses.js");\nconst { MessageComponentTypes } = __webpack_require__(/*! ../util/Constants */ "./node_modules/@citizenfx/discord.js/src/util/Constants.js");\n\n/**\n * Represents a message component interaction.\n * @extends {Interaction}\n * @implements {InteractionResponses}\n */\nclass MessageComponentInteraction extends Interaction {\n  constructor(client, data) {\n    super(client, data);\n\n    /**\n     * The id of the channel this interaction was sent in\n     * @type {Snowflake}\n     * @name MessageComponentInteraction#channelId\n     */\n\n    /**\n     * The message to which the component was attached\n     * @type {Message|APIMessage}\n     */\n    this.message = this.channel?.messages._add(data.message) ?? data.message;\n\n    /**\n     * The custom id of the component which was interacted with\n     * @type {string}\n     */\n    this.customId = data.data.custom_id;\n\n    /**\n     * The type of component which was interacted with\n     * @type {string}\n     */\n    this.componentType = MessageComponentInteraction.resolveType(data.data.component_type);\n\n    /**\n     * Whether the reply to this interaction has been deferred\n     * @type {boolean}\n     */\n    this.deferred = false;\n\n    /**\n     * Whether the reply to this interaction is ephemeral\n     * @type {?boolean}\n     */\n    this.ephemeral = null;\n\n    /**\n     * Whether this interaction has already been replied to\n     * @type {boolean}\n     */\n    this.replied = false;\n\n    /**\n     * An associated interaction webhook, can be used to further interact with this interaction\n     * @type {InteractionWebhook}\n     */\n    this.webhook = new InteractionWebhook(this.client, this.applicationId, this.token);\n  }\n\n  /**\n   * Raw message components from the API\n   * * APIMessageButton\n   * * APIMessageSelectMenu\n   * @typedef {APIMessageButton|APIMessageSelectMenu} APIMessageActionRowComponent\n   */\n\n  /**\n   * The component which was interacted with\n   * @type {MessageActionRowComponent|APIMessageActionRowComponent}\n   * @readonly\n   */\n  get component() {\n    return this.message.components\n      .flatMap(row => row.components)\n      .find(component => (component.customId ?? component.custom_id) === this.customId);\n  }\n\n  /**\n   * Resolves the type of a MessageComponent\n   * @param {MessageComponentTypeResolvable} type The type to resolve\n   * @returns {MessageComponentType}\n   * @private\n   */\n  static resolveType(type) {\n    return typeof type === \'string\' ? type : MessageComponentTypes[type];\n  }\n\n  // These are here only for documentation purposes - they are implemented by InteractionResponses\n  /* eslint-disable no-empty-function */\n  deferReply() {}\n  reply() {}\n  fetchReply() {}\n  editReply() {}\n  deleteReply() {}\n  followUp() {}\n  deferUpdate() {}\n  update() {}\n}\n\nInteractionResponses.applyToClass(MessageComponentInteraction);\n\nmodule.exports = MessageComponentInteraction;\n\n/**\n * @external APIMessageSelectMenu\n * @see {@link https://discord.com/developers/docs/interactions/message-components#select-menu-object}\n */\n\n/**\n * @external APIMessageButton\n * @see {@link https://discord.com/developers/docs/interactions/message-components#button-object}\n */\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/MessageComponentInteraction.js?')},"./node_modules/@citizenfx/discord.js/src/structures/MessageContextMenuInteraction.js":
/*!********************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/MessageContextMenuInteraction.js ***!
  \********************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst ContextMenuInteraction = __webpack_require__(/*! ./ContextMenuInteraction */ \"./node_modules/@citizenfx/discord.js/src/structures/ContextMenuInteraction.js\");\n\n/**\n * Represents a message context menu interaction.\n * @extends {ContextMenuInteraction}\n */\nclass MessageContextMenuInteraction extends ContextMenuInteraction {\n  /**\n   * The message this interaction was sent from\n   * @type {Message|APIMessage}\n   * @readonly\n   */\n  get targetMessage() {\n    return this.options.getMessage('message');\n  }\n}\n\nmodule.exports = MessageContextMenuInteraction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/MessageContextMenuInteraction.js?")},"./node_modules/@citizenfx/discord.js/src/structures/MessageEmbed.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/MessageEmbed.js ***!
  \***************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst process = __webpack_require__(/*! node:process */ \"node:process\");\nconst { RangeError } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst Util = __webpack_require__(/*! ../util/Util */ \"./node_modules/@citizenfx/discord.js/src/util/Util.js\");\n\nlet deprecationEmittedForSetAuthor = false;\nlet deprecationEmittedForSetFooter = false;\n\n// TODO: Remove the deprecated code for `setAuthor()` and `setFooter()`.\n\n/**\n * Represents an embed in a message (image/video preview, rich embed, etc.)\n */\nclass MessageEmbed {\n  /**\n   * A `Partial` object is a representation of any existing object.\n   * This object contains between 0 and all of the original objects parameters.\n   * This is true regardless of whether the parameters are optional in the base object.\n   * @typedef {Object} Partial\n   */\n\n  /**\n   * Represents the possible options for a MessageEmbed\n   * @typedef {Object} MessageEmbedOptions\n   * @property {string} [title] The title of this embed\n   * @property {string} [description] The description of this embed\n   * @property {string} [url] The URL of this embed\n   * @property {Date|number} [timestamp] The timestamp of this embed\n   * @property {ColorResolvable} [color] The color of this embed\n   * @property {EmbedFieldData[]} [fields] The fields of this embed\n   * @property {Partial<MessageEmbedAuthor>} [author] The author of this embed\n   * @property {Partial<MessageEmbedThumbnail>} [thumbnail] The thumbnail of this embed\n   * @property {Partial<MessageEmbedImage>} [image] The image of this embed\n   * @property {Partial<MessageEmbedVideo>} [video] The video of this embed\n   * @property {Partial<MessageEmbedFooter>} [footer] The footer of this embed\n   */\n\n  // eslint-disable-next-line valid-jsdoc\n  /**\n   * @param {MessageEmbed|MessageEmbedOptions|APIEmbed} [data={}] MessageEmbed to clone or raw embed data\n   */\n  constructor(data = {}, skipValidation = false) {\n    this.setup(data, skipValidation);\n  }\n\n  setup(data, skipValidation) {\n    /**\n     * The type of this embed, either:\n     * * `rich` - a generic embed rendered from embed attributes\n     * * `image` - an image embed\n     * * `video` - a video embed\n     * * `gifv` - an animated gif image embed rendered as a video embed\n     * * `article` - an article embed\n     * * `link` - a link embed\n     * @type {string}\n     * @see {@link https://discord.com/developers/docs/resources/channel#embed-object-embed-types}\n     * @deprecated\n     */\n    this.type = data.type ?? 'rich';\n\n    /**\n     * The title of this embed\n     * @type {?string}\n     */\n    this.title = data.title ?? null;\n\n    /**\n     * The description of this embed\n     * @type {?string}\n     */\n    this.description = data.description ?? null;\n\n    /**\n     * The URL of this embed\n     * @type {?string}\n     */\n    this.url = data.url ?? null;\n\n    /**\n     * The color of this embed\n     * @type {?number}\n     */\n    this.color = 'color' in data ? Util.resolveColor(data.color) : null;\n\n    /**\n     * The timestamp of this embed\n     * @type {?number}\n     */\n    this.timestamp = 'timestamp' in data ? new Date(data.timestamp).getTime() : null;\n\n    /**\n     * Represents a field of a MessageEmbed\n     * @typedef {Object} EmbedField\n     * @property {string} name The name of this field\n     * @property {string} value The value of this field\n     * @property {boolean} inline If this field will be displayed inline\n     */\n\n    /**\n     * The fields of this embed\n     * @type {EmbedField[]}\n     */\n    this.fields = [];\n    if (data.fields) {\n      this.fields = skipValidation ? data.fields.map(Util.cloneObject) : this.constructor.normalizeFields(data.fields);\n    }\n\n    /**\n     * Represents the thumbnail of a MessageEmbed\n     * @typedef {Object} MessageEmbedThumbnail\n     * @property {string} url URL for this thumbnail\n     * @property {string} proxyURL ProxyURL for this thumbnail\n     * @property {number} height Height of this thumbnail\n     * @property {number} width Width of this thumbnail\n     */\n\n    /**\n     * The thumbnail of this embed (if there is one)\n     * @type {?MessageEmbedThumbnail}\n     */\n    this.thumbnail = data.thumbnail\n      ? {\n          url: data.thumbnail.url,\n          proxyURL: data.thumbnail.proxyURL ?? data.thumbnail.proxy_url,\n          height: data.thumbnail.height,\n          width: data.thumbnail.width,\n        }\n      : null;\n\n    /**\n     * Represents the image of a MessageEmbed\n     * @typedef {Object} MessageEmbedImage\n     * @property {string} url URL for this image\n     * @property {string} proxyURL ProxyURL for this image\n     * @property {number} height Height of this image\n     * @property {number} width Width of this image\n     */\n\n    /**\n     * The image of this embed, if there is one\n     * @type {?MessageEmbedImage}\n     */\n    this.image = data.image\n      ? {\n          url: data.image.url,\n          proxyURL: data.image.proxyURL ?? data.image.proxy_url,\n          height: data.image.height,\n          width: data.image.width,\n        }\n      : null;\n\n    /**\n     * Represents the video of a MessageEmbed\n     * @typedef {Object} MessageEmbedVideo\n     * @property {string} url URL of this video\n     * @property {string} proxyURL ProxyURL for this video\n     * @property {number} height Height of this video\n     * @property {number} width Width of this video\n     */\n\n    /**\n     * The video of this embed (if there is one)\n     * @type {?MessageEmbedVideo}\n     * @readonly\n     */\n    this.video = data.video\n      ? {\n          url: data.video.url,\n          proxyURL: data.video.proxyURL ?? data.video.proxy_url,\n          height: data.video.height,\n          width: data.video.width,\n        }\n      : null;\n\n    /**\n     * Represents the author field of a MessageEmbed\n     * @typedef {Object} MessageEmbedAuthor\n     * @property {string} name The name of this author\n     * @property {string} url URL of this author\n     * @property {string} iconURL URL of the icon for this author\n     * @property {string} proxyIconURL Proxied URL of the icon for this author\n     */\n\n    /**\n     * The author of this embed (if there is one)\n     * @type {?MessageEmbedAuthor}\n     */\n    this.author = data.author\n      ? {\n          name: data.author.name,\n          url: data.author.url,\n          iconURL: data.author.iconURL ?? data.author.icon_url,\n          proxyIconURL: data.author.proxyIconURL ?? data.author.proxy_icon_url,\n        }\n      : null;\n\n    /**\n     * Represents the provider of a MessageEmbed\n     * @typedef {Object} MessageEmbedProvider\n     * @property {string} name The name of this provider\n     * @property {string} url URL of this provider\n     */\n\n    /**\n     * The provider of this embed (if there is one)\n     * @type {?MessageEmbedProvider}\n     */\n    this.provider = data.provider\n      ? {\n          name: data.provider.name,\n          url: data.provider.name,\n        }\n      : null;\n\n    /**\n     * Represents the footer field of a MessageEmbed\n     * @typedef {Object} MessageEmbedFooter\n     * @property {string} text The text of this footer\n     * @property {string} iconURL URL of the icon for this footer\n     * @property {string} proxyIconURL Proxied URL of the icon for this footer\n     */\n\n    /**\n     * The footer of this embed\n     * @type {?MessageEmbedFooter}\n     */\n    this.footer = data.footer\n      ? {\n          text: data.footer.text,\n          iconURL: data.footer.iconURL ?? data.footer.icon_url,\n          proxyIconURL: data.footer.proxyIconURL ?? data.footer.proxy_icon_url,\n        }\n      : null;\n  }\n\n  /**\n   * The date displayed on this embed\n   * @type {?Date}\n   * @readonly\n   */\n  get createdAt() {\n    return this.timestamp ? new Date(this.timestamp) : null;\n  }\n\n  /**\n   * The hexadecimal version of the embed color, with a leading hash\n   * @type {?string}\n   * @readonly\n   */\n  get hexColor() {\n    return this.color ? `#${this.color.toString(16).padStart(6, '0')}` : null;\n  }\n\n  /**\n   * The accumulated length for the embed title, description, fields, footer text, and author name\n   * @type {number}\n   * @readonly\n   */\n  get length() {\n    return (\n      (this.title?.length ?? 0) +\n      (this.description?.length ?? 0) +\n      (this.fields.length >= 1\n        ? this.fields.reduce((prev, curr) => prev + curr.name.length + curr.value.length, 0)\n        : 0) +\n      (this.footer?.text.length ?? 0) +\n      (this.author?.name.length ?? 0)\n    );\n  }\n\n  /**\n   * Checks if this embed is equal to another one by comparing every single one of their properties.\n   * @param {MessageEmbed|APIEmbed} embed The embed to compare with\n   * @returns {boolean}\n   */\n  equals(embed) {\n    return (\n      this.type === embed.type &&\n      this.author?.name === embed.author?.name &&\n      this.author?.url === embed.author?.url &&\n      this.author?.iconURL === (embed.author?.iconURL ?? embed.author?.icon_url) &&\n      this.color === embed.color &&\n      this.title === embed.title &&\n      this.description === embed.description &&\n      this.url === embed.url &&\n      this.timestamp === embed.timestamp &&\n      this.fields.length === embed.fields.length &&\n      this.fields.every((field, i) => this._fieldEquals(field, embed.fields[i])) &&\n      this.footer?.text === embed.footer?.text &&\n      this.footer?.iconURL === (embed.footer?.iconURL ?? embed.footer?.icon_url) &&\n      this.image?.url === embed.image?.url &&\n      this.thumbnail?.url === embed.thumbnail?.url &&\n      this.video?.url === embed.video?.url &&\n      this.provider?.name === embed.provider?.name &&\n      this.provider?.url === embed.provider?.url\n    );\n  }\n\n  /**\n   * Compares two given embed fields to see if they are equal\n   * @param {EmbedFieldData} field The first field to compare\n   * @param {EmbedFieldData} other The second field to compare\n   * @returns {boolean}\n   * @private\n   */\n  _fieldEquals(field, other) {\n    return field.name === other.name && field.value === other.value && field.inline === other.inline;\n  }\n\n  /**\n   * Adds a field to the embed (max 25).\n   * @param {string} name The name of this field\n   * @param {string} value The value of this field\n   * @param {boolean} [inline=false] If this field will be displayed inline\n   * @returns {MessageEmbed}\n   */\n  addField(name, value, inline) {\n    return this.addFields({ name, value, inline });\n  }\n\n  /**\n   * Adds fields to the embed (max 25).\n   * @param {...EmbedFieldData|EmbedFieldData[]} fields The fields to add\n   * @returns {MessageEmbed}\n   */\n  addFields(...fields) {\n    this.fields.push(...this.constructor.normalizeFields(fields));\n    return this;\n  }\n\n  /**\n   * Removes, replaces, and inserts fields in the embed (max 25).\n   * @param {number} index The index to start at\n   * @param {number} deleteCount The number of fields to remove\n   * @param {...EmbedFieldData|EmbedFieldData[]} [fields] The replacing field objects\n   * @returns {MessageEmbed}\n   */\n  spliceFields(index, deleteCount, ...fields) {\n    this.fields.splice(index, deleteCount, ...this.constructor.normalizeFields(...fields));\n    return this;\n  }\n\n  /**\n   * Sets the embed's fields (max 25).\n   * @param {...EmbedFieldData|EmbedFieldData[]} fields The fields to set\n   * @returns {MessageEmbed}\n   */\n  setFields(...fields) {\n    this.spliceFields(0, this.fields.length, fields);\n    return this;\n  }\n\n  /**\n   * The options to provide for setting an author for a {@link MessageEmbed}.\n   * @typedef {Object} EmbedAuthorData\n   * @property {string} name The name of this author.\n   * @property {string} [url] The URL of this author.\n   * @property {string} [iconURL] The icon URL of this author.\n   */\n\n  /**\n   * Sets the author of this embed.\n   * @param {string|EmbedAuthorData|null} options The options to provide for the author.\n   * Provide `null` to remove the author data.\n   * @param {string} [deprecatedIconURL] The icon URL of this author.\n   * <warn>This parameter is **deprecated**. Use the `options` parameter instead.</warn>\n   * @param {string} [deprecatedURL] The URL of this author.\n   * <warn>This parameter is **deprecated**. Use the `options` parameter instead.</warn>\n   * @returns {MessageEmbed}\n   */\n  setAuthor(options, deprecatedIconURL, deprecatedURL) {\n    if (options === null) {\n      this.author = {};\n      return this;\n    }\n\n    if (typeof options === 'string') {\n      if (!deprecationEmittedForSetAuthor) {\n        process.emitWarning(\n          'Passing strings for MessageEmbed#setAuthor is deprecated. Pass a sole object instead.',\n          'DeprecationWarning',\n        );\n\n        deprecationEmittedForSetAuthor = true;\n      }\n\n      options = { name: options, url: deprecatedURL, iconURL: deprecatedIconURL };\n    }\n\n    const { name, url, iconURL } = options;\n    this.author = { name: Util.verifyString(name, RangeError, 'EMBED_AUTHOR_NAME'), url, iconURL };\n    return this;\n  }\n\n  /**\n   * Sets the color of this embed.\n   * @param {ColorResolvable} color The color of the embed\n   * @returns {MessageEmbed}\n   */\n  setColor(color) {\n    this.color = Util.resolveColor(color);\n    return this;\n  }\n\n  /**\n   * Sets the description of this embed.\n   * @param {string} description The description\n   * @returns {MessageEmbed}\n   */\n  setDescription(description) {\n    this.description = Util.verifyString(description, RangeError, 'EMBED_DESCRIPTION');\n    return this;\n  }\n\n  /**\n   * The options to provide for setting a footer for a {@link MessageEmbed}.\n   * @typedef {Object} EmbedFooterData\n   * @property {string} text The text of the footer.\n   * @property {string} [iconURL] The icon URL of the footer.\n   */\n\n  /**\n   * Sets the footer of this embed.\n   * @param {string|EmbedFooterData|null} options The options to provide for the footer.\n   * Provide `null` to remove the footer data.\n   * @param {string} [deprecatedIconURL] The icon URL of this footer.\n   * <warn>This parameter is **deprecated**. Use the `options` parameter instead.</warn>\n   * @returns {MessageEmbed}\n   */\n  setFooter(options, deprecatedIconURL) {\n    if (options === null) {\n      this.footer = {};\n      return this;\n    }\n\n    if (typeof options === 'string') {\n      if (!deprecationEmittedForSetFooter) {\n        process.emitWarning(\n          'Passing strings for MessageEmbed#setFooter is deprecated. Pass a sole object instead.',\n          'DeprecationWarning',\n        );\n\n        deprecationEmittedForSetFooter = true;\n      }\n\n      options = { text: options, iconURL: deprecatedIconURL };\n    }\n\n    const { text, iconURL } = options;\n    this.footer = { text: Util.verifyString(text, RangeError, 'EMBED_FOOTER_TEXT'), iconURL };\n    return this;\n  }\n\n  /**\n   * Sets the image of this embed.\n   * @param {string} url The URL of the image\n   * @returns {MessageEmbed}\n   */\n  setImage(url) {\n    this.image = { url };\n    return this;\n  }\n\n  /**\n   * Sets the thumbnail of this embed.\n   * @param {string} url The URL of the thumbnail\n   * @returns {MessageEmbed}\n   */\n  setThumbnail(url) {\n    this.thumbnail = { url };\n    return this;\n  }\n\n  /**\n   * Sets the timestamp of this embed.\n   * @param {Date|number|null} [timestamp=Date.now()] The timestamp or date.\n   * If `null` then the timestamp will be unset (i.e. when editing an existing {@link MessageEmbed})\n   * @returns {MessageEmbed}\n   */\n  setTimestamp(timestamp = Date.now()) {\n    if (timestamp instanceof Date) timestamp = timestamp.getTime();\n    this.timestamp = timestamp;\n    return this;\n  }\n\n  /**\n   * Sets the title of this embed.\n   * @param {string} title The title\n   * @returns {MessageEmbed}\n   */\n  setTitle(title) {\n    this.title = Util.verifyString(title, RangeError, 'EMBED_TITLE');\n    return this;\n  }\n\n  /**\n   * Sets the URL of this embed.\n   * @param {string} url The URL\n   * @returns {MessageEmbed}\n   */\n  setURL(url) {\n    this.url = url;\n    return this;\n  }\n\n  /**\n   * Transforms the embed to a plain object.\n   * @returns {APIEmbed} The raw data of this embed\n   */\n  toJSON() {\n    return {\n      title: this.title,\n      type: 'rich',\n      description: this.description,\n      url: this.url,\n      timestamp: this.timestamp && new Date(this.timestamp),\n      color: this.color,\n      fields: this.fields,\n      thumbnail: this.thumbnail,\n      image: this.image,\n      author: this.author && {\n        name: this.author.name,\n        url: this.author.url,\n        icon_url: this.author.iconURL,\n      },\n      footer: this.footer && {\n        text: this.footer.text,\n        icon_url: this.footer.iconURL,\n      },\n    };\n  }\n\n  /**\n   * Normalizes field input and verifies strings.\n   * @param {string} name The name of the field\n   * @param {string} value The value of the field\n   * @param {boolean} [inline=false] Set the field to display inline\n   * @returns {EmbedField}\n   */\n  static normalizeField(name, value, inline = false) {\n    return {\n      name: Util.verifyString(name, RangeError, 'EMBED_FIELD_NAME', false),\n      value: Util.verifyString(value, RangeError, 'EMBED_FIELD_VALUE', false),\n      inline,\n    };\n  }\n\n  /**\n   * @typedef {Object} EmbedFieldData\n   * @property {string} name The name of this field\n   * @property {string} value The value of this field\n   * @property {boolean} [inline] If this field will be displayed inline\n   */\n\n  /**\n   * Normalizes field input and resolves strings.\n   * @param {...EmbedFieldData|EmbedFieldData[]} fields Fields to normalize\n   * @returns {EmbedField[]}\n   */\n  static normalizeFields(...fields) {\n    return fields\n      .flat(2)\n      .map(field =>\n        this.normalizeField(field.name, field.value, typeof field.inline === 'boolean' ? field.inline : false),\n      );\n  }\n}\n\nmodule.exports = MessageEmbed;\n\n/**\n * @external APIEmbed\n * @see {@link https://discord.com/developers/docs/resources/channel#embed-object}\n */\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/MessageEmbed.js?")},"./node_modules/@citizenfx/discord.js/src/structures/MessageMentions.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/MessageMentions.js ***!
  \******************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst { ChannelTypes } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst Util = __webpack_require__(/*! ../util/Util */ \"./node_modules/@citizenfx/discord.js/src/util/Util.js\");\n\n/**\n * Keeps track of mentions in a {@link Message}.\n */\nclass MessageMentions {\n  constructor(message, users, roles, everyone, crosspostedChannels, repliedUser) {\n    /**\n     * The client the message is from\n     * @type {Client}\n     * @readonly\n     */\n    Object.defineProperty(this, 'client', { value: message.client });\n\n    /**\n     * The guild the message is in\n     * @type {?Guild}\n     * @readonly\n     */\n    Object.defineProperty(this, 'guild', { value: message.guild });\n\n    /**\n     * The initial message content\n     * @type {string}\n     * @readonly\n     * @private\n     */\n    Object.defineProperty(this, '_content', { value: message.content });\n\n    /**\n     * Whether `@everyone` or `@here` were mentioned\n     * @type {boolean}\n     */\n    this.everyone = Boolean(everyone);\n\n    if (users) {\n      if (users instanceof Collection) {\n        /**\n         * Any users that were mentioned\n         * <info>Order as received from the API, not as they appear in the message content</info>\n         * @type {Collection<Snowflake, User>}\n         */\n        this.users = new Collection(users);\n      } else {\n        this.users = new Collection();\n        for (const mention of users) {\n          if (mention.member && message.guild) {\n            message.guild.members._add(Object.assign(mention.member, { user: mention }));\n          }\n          const user = message.client.users._add(mention);\n          this.users.set(user.id, user);\n        }\n      }\n    } else {\n      this.users = new Collection();\n    }\n\n    if (roles instanceof Collection) {\n      /**\n       * Any roles that were mentioned\n       * <info>Order as received from the API, not as they appear in the message content</info>\n       * @type {Collection<Snowflake, Role>}\n       */\n      this.roles = new Collection(roles);\n    } else if (roles) {\n      this.roles = new Collection();\n      const guild = message.guild;\n      if (guild) {\n        for (const mention of roles) {\n          const role = guild.roles.cache.get(mention);\n          if (role) this.roles.set(role.id, role);\n        }\n      }\n    } else {\n      this.roles = new Collection();\n    }\n\n    /**\n     * Cached members for {@link MessageMentions#members}\n     * @type {?Collection<Snowflake, GuildMember>}\n     * @private\n     */\n    this._members = null;\n\n    /**\n     * Cached channels for {@link MessageMentions#channels}\n     * @type {?Collection<Snowflake, Channel>}\n     * @private\n     */\n    this._channels = null;\n\n    /**\n     * Crossposted channel data.\n     * @typedef {Object} CrosspostedChannel\n     * @property {Snowflake} channelId The mentioned channel's id\n     * @property {Snowflake} guildId The id of the guild that has the channel\n     * @property {ChannelType} type The channel's type\n     * @property {string} name The channel's name\n     */\n\n    if (crosspostedChannels) {\n      if (crosspostedChannels instanceof Collection) {\n        /**\n         * A collection of crossposted channels\n         * <info>Order as received from the API, not as they appear in the message content</info>\n         * @type {Collection<Snowflake, CrosspostedChannel>}\n         */\n        this.crosspostedChannels = new Collection(crosspostedChannels);\n      } else {\n        this.crosspostedChannels = new Collection();\n        const channelTypes = Object.keys(ChannelTypes);\n        for (const d of crosspostedChannels) {\n          const type = channelTypes[d.type];\n          this.crosspostedChannels.set(d.id, {\n            channelId: d.id,\n            guildId: d.guild_id,\n            type: type ?? 'UNKNOWN',\n            name: d.name,\n          });\n        }\n      }\n    } else {\n      this.crosspostedChannels = new Collection();\n    }\n\n    /**\n     * The author of the message that this message is a reply to\n     * @type {?User}\n     */\n    this.repliedUser = repliedUser ? this.client.users._add(repliedUser) : null;\n  }\n\n  /**\n   * Any members that were mentioned (only in {@link Guild}s)\n   * <info>Order as received from the API, not as they appear in the message content</info>\n   * @type {?Collection<Snowflake, GuildMember>}\n   * @readonly\n   */\n  get members() {\n    if (this._members) return this._members;\n    if (!this.guild) return null;\n    this._members = new Collection();\n    this.users.forEach(user => {\n      const member = this.guild.members.resolve(user);\n      if (member) this._members.set(member.user.id, member);\n    });\n    return this._members;\n  }\n\n  /**\n   * Any channels that were mentioned\n   * <info>Order as they appear first in the message content</info>\n   * @type {Collection<Snowflake, Channel>}\n   * @readonly\n   */\n  get channels() {\n    if (this._channels) return this._channels;\n    this._channels = new Collection();\n    let matches;\n    while ((matches = this.constructor.CHANNELS_PATTERN.exec(this._content)) !== null) {\n      const chan = this.client.channels.cache.get(matches[1]);\n      if (chan) this._channels.set(chan.id, chan);\n    }\n    return this._channels;\n  }\n\n  /**\n   * Options used to check for a mention.\n   * @typedef {Object} MessageMentionsHasOptions\n   * @property {boolean} [ignoreDirect=false] Whether to ignore direct mentions to the item\n   * @property {boolean} [ignoreRoles=false] Whether to ignore role mentions to a guild member\n   * @property {boolean} [ignoreEveryone=false] Whether to ignore everyone/here mentions\n   */\n\n  /**\n   * Checks if a user, guild member, role, or channel is mentioned.\n   * Takes into account user mentions, role mentions, and `@everyone`/`@here` mentions.\n   * @param {UserResolvable|RoleResolvable|ChannelResolvable} data The User/Role/Channel to check for\n   * @param {MessageMentionsHasOptions} [options] The options for the check\n   * @returns {boolean}\n   */\n  has(data, { ignoreDirect = false, ignoreRoles = false, ignoreEveryone = false } = {}) {\n    if (!ignoreEveryone && this.everyone) return true;\n    const { GuildMember } = __webpack_require__(/*! ./GuildMember */ \"./node_modules/@citizenfx/discord.js/src/structures/GuildMember.js\");\n    if (!ignoreRoles && data instanceof GuildMember) {\n      for (const role of this.roles.values()) if (data.roles.cache.has(role.id)) return true;\n    }\n\n    if (!ignoreDirect) {\n      const id =\n        this.guild?.roles.resolveId(data) ?? this.client.channels.resolveId(data) ?? this.client.users.resolveId(data);\n\n      return typeof id === 'string' && (this.users.has(id) || this.channels.has(id) || this.roles.has(id));\n    }\n\n    return false;\n  }\n\n  toJSON() {\n    return Util.flatten(this, {\n      members: true,\n      channels: true,\n    });\n  }\n}\n\n/**\n * Regular expression that globally matches `@everyone` and `@here`\n * @type {RegExp}\n */\nMessageMentions.EVERYONE_PATTERN = /@(everyone|here)/g;\n\n/**\n * Regular expression that globally matches user mentions like `<@81440962496172032>`\n * @type {RegExp}\n */\nMessageMentions.USERS_PATTERN = /<@!?(\\d{17,19})>/g;\n\n/**\n * Regular expression that globally matches role mentions like `<@&297577916114403338>`\n * @type {RegExp}\n */\nMessageMentions.ROLES_PATTERN = /<@&(\\d{17,19})>/g;\n\n/**\n * Regular expression that globally matches channel mentions like `<#222079895583457280>`\n * @type {RegExp}\n */\nMessageMentions.CHANNELS_PATTERN = /<#(\\d{17,19})>/g;\n\nmodule.exports = MessageMentions;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/MessageMentions.js?")},"./node_modules/@citizenfx/discord.js/src/structures/MessagePayload.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/MessagePayload.js ***!
  \*****************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Buffer } = __webpack_require__(/*! node:buffer */ \"node:buffer\");\nconst BaseMessageComponent = __webpack_require__(/*! ./BaseMessageComponent */ \"./node_modules/@citizenfx/discord.js/src/structures/BaseMessageComponent.js\");\nconst MessageEmbed = __webpack_require__(/*! ./MessageEmbed */ \"./node_modules/@citizenfx/discord.js/src/structures/MessageEmbed.js\");\nconst { RangeError } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst DataResolver = __webpack_require__(/*! ../util/DataResolver */ \"./node_modules/@citizenfx/discord.js/src/util/DataResolver.js\");\nconst MessageFlags = __webpack_require__(/*! ../util/MessageFlags */ \"./node_modules/@citizenfx/discord.js/src/util/MessageFlags.js\");\nconst Util = __webpack_require__(/*! ../util/Util */ \"./node_modules/@citizenfx/discord.js/src/util/Util.js\");\n\n/**\n * Represents a message to be sent to the API.\n */\nclass MessagePayload {\n  /**\n   * @param {MessageTarget} target The target for this message to be sent to\n   * @param {MessageOptions|WebhookMessageOptions} options Options passed in from send\n   */\n  constructor(target, options) {\n    /**\n     * The target for this message to be sent to\n     * @type {MessageTarget}\n     */\n    this.target = target;\n\n    /**\n     * Options passed in from send\n     * @type {MessageOptions|WebhookMessageOptions}\n     */\n    this.options = options;\n\n    /**\n     * Data sendable to the API\n     * @type {?APIMessage}\n     */\n    this.data = null;\n\n    /**\n     * @typedef {Object} MessageFile\n     * @property {Buffer|string|Stream} attachment The original attachment that generated this file\n     * @property {string} name The name of this file\n     * @property {Buffer|Stream} file The file to be sent to the API\n     */\n\n    /**\n     * Files sendable to the API\n     * @type {?MessageFile[]}\n     */\n    this.files = null;\n  }\n\n  /**\n   * Whether or not the target is a {@link Webhook} or a {@link WebhookClient}\n   * @type {boolean}\n   * @readonly\n   */\n  get isWebhook() {\n    const Webhook = __webpack_require__(/*! ./Webhook */ \"./node_modules/@citizenfx/discord.js/src/structures/Webhook.js\");\n    const WebhookClient = __webpack_require__(/*! ../client/WebhookClient */ \"./node_modules/@citizenfx/discord.js/src/client/WebhookClient.js\");\n    return this.target instanceof Webhook || this.target instanceof WebhookClient;\n  }\n\n  /**\n   * Whether or not the target is a {@link User}\n   * @type {boolean}\n   * @readonly\n   */\n  get isUser() {\n    const User = __webpack_require__(/*! ./User */ \"./node_modules/@citizenfx/discord.js/src/structures/User.js\");\n    const { GuildMember } = __webpack_require__(/*! ./GuildMember */ \"./node_modules/@citizenfx/discord.js/src/structures/GuildMember.js\");\n    return this.target instanceof User || this.target instanceof GuildMember;\n  }\n\n  /**\n   * Whether or not the target is a {@link Message}\n   * @type {boolean}\n   * @readonly\n   */\n  get isMessage() {\n    const { Message } = __webpack_require__(/*! ./Message */ \"./node_modules/@citizenfx/discord.js/src/structures/Message.js\");\n    return this.target instanceof Message;\n  }\n\n  /**\n   * Whether or not the target is a {@link MessageManager}\n   * @type {boolean}\n   * @readonly\n   */\n  get isMessageManager() {\n    const MessageManager = __webpack_require__(/*! ../managers/MessageManager */ \"./node_modules/@citizenfx/discord.js/src/managers/MessageManager.js\");\n    return this.target instanceof MessageManager;\n  }\n\n  /**\n   * Whether or not the target is an {@link Interaction} or an {@link InteractionWebhook}\n   * @type {boolean}\n   * @readonly\n   */\n  get isInteraction() {\n    const Interaction = __webpack_require__(/*! ./Interaction */ \"./node_modules/@citizenfx/discord.js/src/structures/Interaction.js\");\n    const InteractionWebhook = __webpack_require__(/*! ./InteractionWebhook */ \"./node_modules/@citizenfx/discord.js/src/structures/InteractionWebhook.js\");\n    return this.target instanceof Interaction || this.target instanceof InteractionWebhook;\n  }\n\n  /**\n   * Makes the content of this message.\n   * @returns {?string}\n   */\n  makeContent() {\n    let content;\n    if (this.options.content === null) {\n      content = '';\n    } else if (typeof this.options.content !== 'undefined') {\n      content = Util.verifyString(this.options.content, RangeError, 'MESSAGE_CONTENT_TYPE', false);\n    }\n\n    return content;\n  }\n\n  /**\n   * Resolves data.\n   * @returns {MessagePayload}\n   */\n  resolveData() {\n    if (this.data) return this;\n    const isInteraction = this.isInteraction;\n    const isWebhook = this.isWebhook;\n\n    const content = this.makeContent();\n    const tts = Boolean(this.options.tts);\n\n    let nonce;\n    if (typeof this.options.nonce !== 'undefined') {\n      nonce = this.options.nonce;\n      // eslint-disable-next-line max-len\n      if (typeof nonce === 'number' ? !Number.isInteger(nonce) : typeof nonce !== 'string') {\n        throw new RangeError('MESSAGE_NONCE_TYPE');\n      }\n    }\n\n    const components = this.options.components?.map(c => BaseMessageComponent.create(c).toJSON());\n\n    let username;\n    let avatarURL;\n    if (isWebhook) {\n      username = this.options.username ?? this.target.name;\n      if (this.options.avatarURL) avatarURL = this.options.avatarURL;\n    }\n\n    let flags;\n    if (this.isMessage || this.isMessageManager) {\n      // eslint-disable-next-line eqeqeq\n      flags = this.options.flags != null ? new MessageFlags(this.options.flags).bitfield : this.target.flags?.bitfield;\n    } else if (isInteraction && this.options.ephemeral) {\n      flags = MessageFlags.FLAGS.EPHEMERAL;\n    }\n\n    let allowedMentions =\n      typeof this.options.allowedMentions === 'undefined'\n        ? this.target.client.options.allowedMentions\n        : this.options.allowedMentions;\n\n    if (allowedMentions) {\n      allowedMentions = Util.cloneObject(allowedMentions);\n      allowedMentions.replied_user = allowedMentions.repliedUser;\n      delete allowedMentions.repliedUser;\n    }\n\n    let message_reference;\n    if (typeof this.options.reply === 'object') {\n      const reference = this.options.reply.messageReference;\n      const message_id = this.isMessage ? reference.id ?? reference : this.target.messages.resolveId(reference);\n      if (message_id) {\n        message_reference = {\n          message_id,\n          fail_if_not_exists: this.options.reply.failIfNotExists ?? this.target.client.options.failIfNotExists,\n        };\n      }\n    }\n\n    const attachments = this.options.files?.map((file, index) => ({\n      id: index.toString(),\n      description: file.description,\n    }));\n    if (Array.isArray(this.options.attachments)) {\n      this.options.attachments.push(...(attachments ?? []));\n    } else {\n      this.options.attachments = attachments;\n    }\n\n    this.data = {\n      content,\n      tts,\n      nonce,\n      embeds: this.options.embeds?.map(embed => new MessageEmbed(embed).toJSON()),\n      components,\n      username,\n      avatar_url: avatarURL,\n      allowed_mentions:\n        typeof content === 'undefined' && typeof message_reference === 'undefined' ? undefined : allowedMentions,\n      flags,\n      message_reference,\n      attachments: this.options.attachments,\n      sticker_ids: this.options.stickers?.map(sticker => sticker.id ?? sticker),\n    };\n    return this;\n  }\n\n  /**\n   * Resolves files.\n   * @returns {Promise<MessagePayload>}\n   */\n  async resolveFiles() {\n    if (this.files) return this;\n\n    this.files = await Promise.all(this.options.files?.map(file => this.constructor.resolveFile(file)) ?? []);\n    return this;\n  }\n\n  /**\n   * Resolves a single file into an object sendable to the API.\n   * @param {BufferResolvable|Stream|FileOptions|MessageAttachment} fileLike Something that could be resolved to a file\n   * @returns {Promise<MessageFile>}\n   */\n  static async resolveFile(fileLike) {\n    let attachment;\n    let name;\n\n    const findName = thing => {\n      if (typeof thing === 'string') {\n        return Util.basename(thing);\n      }\n\n      if (thing.path) {\n        return Util.basename(thing.path);\n      }\n\n      return 'file.jpg';\n    };\n\n    const ownAttachment =\n      typeof fileLike === 'string' || fileLike instanceof Buffer || typeof fileLike.pipe === 'function';\n    if (ownAttachment) {\n      attachment = fileLike;\n      name = findName(attachment);\n    } else {\n      attachment = fileLike.attachment;\n      name = fileLike.name ?? findName(attachment);\n    }\n\n    const resource = await DataResolver.resolveFile(attachment);\n    return { attachment, name, file: resource };\n  }\n\n  /**\n   * Creates a {@link MessagePayload} from user-level arguments.\n   * @param {MessageTarget} target Target to send to\n   * @param {string|MessageOptions|WebhookMessageOptions} options Options or content to use\n   * @param {MessageOptions|WebhookMessageOptions} [extra={}] Extra options to add onto specified options\n   * @returns {MessagePayload}\n   */\n  static create(target, options, extra = {}) {\n    return new this(\n      target,\n      typeof options !== 'object' || options === null ? { content: options, ...extra } : { ...options, ...extra },\n    );\n  }\n}\n\nmodule.exports = MessagePayload;\n\n/**\n * A target for a message.\n * @typedef {TextChannel|DMChannel|User|GuildMember|Webhook|WebhookClient|Interaction|InteractionWebhook|\n * Message|MessageManager} MessageTarget\n */\n\n/**\n * @external APIMessage\n * @see {@link https://discord.com/developers/docs/resources/channel#message-object}\n */\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/MessagePayload.js?")},"./node_modules/@citizenfx/discord.js/src/structures/MessageReaction.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/MessageReaction.js ***!
  \******************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst GuildEmoji = __webpack_require__(/*! ./GuildEmoji */ \"./node_modules/@citizenfx/discord.js/src/structures/GuildEmoji.js\");\nconst ReactionEmoji = __webpack_require__(/*! ./ReactionEmoji */ \"./node_modules/@citizenfx/discord.js/src/structures/ReactionEmoji.js\");\nconst ReactionUserManager = __webpack_require__(/*! ../managers/ReactionUserManager */ \"./node_modules/@citizenfx/discord.js/src/managers/ReactionUserManager.js\");\nconst Util = __webpack_require__(/*! ../util/Util */ \"./node_modules/@citizenfx/discord.js/src/util/Util.js\");\n\n/**\n * Represents a reaction to a message.\n */\nclass MessageReaction {\n  constructor(client, data, message) {\n    /**\n     * The client that instantiated this message reaction\n     * @name MessageReaction#client\n     * @type {Client}\n     * @readonly\n     */\n    Object.defineProperty(this, 'client', { value: client });\n\n    /**\n     * The message that this reaction refers to\n     * @type {Message}\n     */\n    this.message = message;\n\n    /**\n     * Whether the client has given this reaction\n     * @type {boolean}\n     */\n    this.me = data.me;\n\n    /**\n     * A manager of the users that have given this reaction\n     * @type {ReactionUserManager}\n     */\n    this.users = new ReactionUserManager(this, this.me ? [client.user] : []);\n\n    this._emoji = new ReactionEmoji(this, data.emoji);\n\n    this._patch(data);\n  }\n\n  _patch(data) {\n    if ('count' in data) {\n      /**\n       * The number of people that have given the same reaction\n       * @type {?number}\n       */\n      this.count ??= data.count;\n    }\n  }\n\n  /**\n   * Removes all users from this reaction.\n   * @returns {Promise<MessageReaction>}\n   */\n  async remove() {\n    await this.client.api\n      .channels(this.message.channelId)\n      .messages(this.message.id)\n      .reactions(this._emoji.identifier)\n      .delete();\n    return this;\n  }\n\n  /**\n   * The emoji of this reaction. Either a {@link GuildEmoji} object for known custom emojis, or a {@link ReactionEmoji}\n   * object which has fewer properties. Whatever the prototype of the emoji, it will still have\n   * `name`, `id`, `identifier` and `toString()`\n   * @type {GuildEmoji|ReactionEmoji}\n   * @readonly\n   */\n  get emoji() {\n    if (this._emoji instanceof GuildEmoji) return this._emoji;\n    // Check to see if the emoji has become known to the client\n    if (this._emoji.id) {\n      const emojis = this.message.client.emojis.cache;\n      if (emojis.has(this._emoji.id)) {\n        const emoji = emojis.get(this._emoji.id);\n        this._emoji = emoji;\n        return emoji;\n      }\n    }\n    return this._emoji;\n  }\n\n  /**\n   * Whether or not this reaction is a partial\n   * @type {boolean}\n   * @readonly\n   */\n  get partial() {\n    return this.count === null;\n  }\n\n  /**\n   * Fetch this reaction.\n   * @returns {Promise<MessageReaction>}\n   */\n  async fetch() {\n    const message = await this.message.fetch();\n    const existing = message.reactions.cache.get(this.emoji.id ?? this.emoji.name);\n    // The reaction won't get set when it has been completely removed\n    this._patch(existing ?? { count: 0 });\n    return this;\n  }\n\n  toJSON() {\n    return Util.flatten(this, { emoji: 'emojiId', message: 'messageId' });\n  }\n\n  _add(user) {\n    if (this.partial) return;\n    this.users.cache.set(user.id, user);\n    if (!this.me || user.id !== this.message.client.user.id || this.count === 0) this.count++;\n    this.me ??= user.id === this.message.client.user.id;\n  }\n\n  _remove(user) {\n    if (this.partial) return;\n    this.users.cache.delete(user.id);\n    if (!this.me || user.id !== this.message.client.user.id) this.count--;\n    if (user.id === this.message.client.user.id) this.me = false;\n    if (this.count <= 0 && this.users.cache.size === 0) {\n      this.message.reactions.cache.delete(this.emoji.id ?? this.emoji.name);\n    }\n  }\n}\n\nmodule.exports = MessageReaction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/MessageReaction.js?")},"./node_modules/@citizenfx/discord.js/src/structures/MessageSelectMenu.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/MessageSelectMenu.js ***!
  \********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst BaseMessageComponent = __webpack_require__(/*! ./BaseMessageComponent */ \"./node_modules/@citizenfx/discord.js/src/structures/BaseMessageComponent.js\");\nconst { MessageComponentTypes } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst Util = __webpack_require__(/*! ../util/Util */ \"./node_modules/@citizenfx/discord.js/src/util/Util.js\");\n\n/**\n * Represents a select menu message component\n * @extends {BaseMessageComponent}\n */\nclass MessageSelectMenu extends BaseMessageComponent {\n  /**\n   * @typedef {BaseMessageComponentOptions} MessageSelectMenuOptions\n   * @property {string} [customId] A unique string to be sent in the interaction when clicked\n   * @property {string} [placeholder] Custom placeholder text to display when nothing is selected\n   * @property {number} [minValues] The minimum number of selections required\n   * @property {number} [maxValues] The maximum number of selections allowed\n   * @property {MessageSelectOption[]} [options] Options for the select menu\n   * @property {boolean} [disabled=false] Disables the select menu to prevent interactions\n   */\n\n  /**\n   * @typedef {Object} MessageSelectOption\n   * @property {string} label The text to be displayed on this option\n   * @property {string} value The value to be sent for this option\n   * @property {?string} description Optional description to show for this option\n   * @property {?RawEmoji} emoji Emoji to display for this option\n   * @property {boolean} default Render this option as the default selection\n   */\n\n  /**\n   * @typedef {Object} MessageSelectOptionData\n   * @property {string} label The text to be displayed on this option\n   * @property {string} value The value to be sent for this option\n   * @property {string} [description] Optional description to show for this option\n   * @property {EmojiIdentifierResolvable} [emoji] Emoji to display for this option\n   * @property {boolean} [default] Render this option as the default selection\n   */\n\n  /**\n   * @param {MessageSelectMenu|MessageSelectMenuOptions} [data={}] MessageSelectMenu to clone or raw data\n   */\n  constructor(data = {}) {\n    super({ type: 'SELECT_MENU' });\n\n    this.setup(data);\n  }\n\n  setup(data) {\n    /**\n     * A unique string to be sent in the interaction when clicked\n     * @type {?string}\n     */\n    this.customId = data.custom_id ?? data.customId ?? null;\n\n    /**\n     * Custom placeholder text to display when nothing is selected\n     * @type {?string}\n     */\n    this.placeholder = data.placeholder ?? null;\n\n    /**\n     * The minimum number of selections required\n     * @type {?number}\n     */\n    this.minValues = data.min_values ?? data.minValues ?? null;\n\n    /**\n     * The maximum number of selections allowed\n     * @type {?number}\n     */\n    this.maxValues = data.max_values ?? data.maxValues ?? null;\n\n    /**\n     * Options for the select menu\n     * @type {MessageSelectOption[]}\n     */\n    this.options = this.constructor.normalizeOptions(data.options ?? []);\n\n    /**\n     * Whether this select menu is currently disabled\n     * @type {boolean}\n     */\n    this.disabled = data.disabled ?? false;\n  }\n\n  /**\n   * Sets the custom id of this select menu\n   * @param {string} customId A unique string to be sent in the interaction when clicked\n   * @returns {MessageSelectMenu}\n   */\n  setCustomId(customId) {\n    this.customId = Util.verifyString(customId, RangeError, 'SELECT_MENU_CUSTOM_ID');\n    return this;\n  }\n\n  /**\n   * Sets the interactive status of the select menu\n   * @param {boolean} [disabled=true] Whether this select menu should be disabled\n   * @returns {MessageSelectMenu}\n   */\n  setDisabled(disabled = true) {\n    this.disabled = disabled;\n    return this;\n  }\n\n  /**\n   * Sets the maximum number of selections allowed for this select menu\n   * @param {number} maxValues Number of selections to be allowed\n   * @returns {MessageSelectMenu}\n   */\n  setMaxValues(maxValues) {\n    this.maxValues = maxValues;\n    return this;\n  }\n\n  /**\n   * Sets the minimum number of selections required for this select menu\n   * <info>This will default the maxValues to the number of options, unless manually set</info>\n   * @param {number} minValues Number of selections to be required\n   * @returns {MessageSelectMenu}\n   */\n  setMinValues(minValues) {\n    this.minValues = minValues;\n    return this;\n  }\n\n  /**\n   * Sets the placeholder of this select menu\n   * @param {string} placeholder Custom placeholder text to display when nothing is selected\n   * @returns {MessageSelectMenu}\n   */\n  setPlaceholder(placeholder) {\n    this.placeholder = Util.verifyString(placeholder, RangeError, 'SELECT_MENU_PLACEHOLDER');\n    return this;\n  }\n\n  /**\n   * Adds options to the select menu.\n   * @param {...MessageSelectOptionData|MessageSelectOptionData[]} options The options to add\n   * @returns {MessageSelectMenu}\n   */\n  addOptions(...options) {\n    this.options.push(...this.constructor.normalizeOptions(options));\n    return this;\n  }\n\n  /**\n   * Sets the options of the select menu.\n   * @param {...MessageSelectOptionData|MessageSelectOptionData[]} options The options to set\n   * @returns {MessageSelectMenu}\n   */\n  setOptions(...options) {\n    this.spliceOptions(0, this.options.length, options);\n    return this;\n  }\n\n  /**\n   * Removes, replaces, and inserts options in the select menu.\n   * @param {number} index The index to start at\n   * @param {number} deleteCount The number of options to remove\n   * @param {...MessageSelectOptionData|MessageSelectOptionData[]} [options] The replacing option objects\n   * @returns {MessageSelectMenu}\n   */\n  spliceOptions(index, deleteCount, ...options) {\n    this.options.splice(index, deleteCount, ...this.constructor.normalizeOptions(...options));\n    return this;\n  }\n\n  /**\n   * Transforms the select menu into a plain object\n   * @returns {APIMessageSelectMenu} The raw data of this select menu\n   */\n  toJSON() {\n    return {\n      custom_id: this.customId,\n      disabled: this.disabled,\n      placeholder: this.placeholder,\n      min_values: this.minValues,\n      max_values: this.maxValues ?? (this.minValues ? this.options.length : undefined),\n      options: this.options,\n      type: typeof this.type === 'string' ? MessageComponentTypes[this.type] : this.type,\n    };\n  }\n\n  /**\n   * Normalizes option input and resolves strings and emojis.\n   * @param {MessageSelectOptionData} option The select menu option to normalize\n   * @returns {MessageSelectOption}\n   */\n  static normalizeOption(option) {\n    let { label, value, description, emoji } = option;\n\n    label = Util.verifyString(label, RangeError, 'SELECT_OPTION_LABEL');\n    value = Util.verifyString(value, RangeError, 'SELECT_OPTION_VALUE');\n    emoji = emoji ? Util.resolvePartialEmoji(emoji) : null;\n    description = description ? Util.verifyString(description, RangeError, 'SELECT_OPTION_DESCRIPTION', true) : null;\n\n    return { label, value, description, emoji, default: option.default ?? false };\n  }\n\n  /**\n   * Normalizes option input and resolves strings and emojis.\n   * @param {...MessageSelectOptionData|MessageSelectOptionData[]} options The select menu options to normalize\n   * @returns {MessageSelectOption[]}\n   */\n  static normalizeOptions(...options) {\n    return options.flat(Infinity).map(option => this.normalizeOption(option));\n  }\n}\n\nmodule.exports = MessageSelectMenu;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/MessageSelectMenu.js?")},"./node_modules/@citizenfx/discord.js/src/structures/NewsChannel.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/NewsChannel.js ***!
  \**************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst BaseGuildTextChannel = __webpack_require__(/*! ./BaseGuildTextChannel */ \"./node_modules/@citizenfx/discord.js/src/structures/BaseGuildTextChannel.js\");\nconst { Error } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\n\n/**\n * Represents a guild news channel on Discord.\n * @extends {BaseGuildTextChannel}\n */\nclass NewsChannel extends BaseGuildTextChannel {\n  /**\n   * Adds the target to this channel's followers.\n   * @param {TextChannelResolvable} channel The channel where the webhook should be created\n   * @param {string} [reason] Reason for creating the webhook\n   * @returns {Promise<NewsChannel>}\n   * @example\n   * if (channel.type === 'GUILD_NEWS') {\n   *   channel.addFollower('222197033908436994', 'Important announcements')\n   *     .then(() => console.log('Added follower'))\n   *     .catch(console.error);\n   * }\n   */\n  async addFollower(channel, reason) {\n    const channelId = this.guild.channels.resolveId(channel);\n    if (!channelId) throw new Error('GUILD_CHANNEL_RESOLVE');\n    await this.client.api.channels(this.id).followers.post({ data: { webhook_channel_id: channelId }, reason });\n    return this;\n  }\n}\n\nmodule.exports = NewsChannel;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/NewsChannel.js?")},"./node_modules/@citizenfx/discord.js/src/structures/OAuth2Guild.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/OAuth2Guild.js ***!
  \**************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst BaseGuild = __webpack_require__(/*! ./BaseGuild */ "./node_modules/@citizenfx/discord.js/src/structures/BaseGuild.js");\nconst Permissions = __webpack_require__(/*! ../util/Permissions */ "./node_modules/@citizenfx/discord.js/src/util/Permissions.js");\n\n/**\n * A partial guild received when using {@link GuildManager#fetch} to fetch multiple guilds.\n * @extends {BaseGuild}\n */\nclass OAuth2Guild extends BaseGuild {\n  constructor(client, data) {\n    super(client, data);\n\n    /**\n     * Whether the client user is the owner of the guild\n     * @type {boolean}\n     */\n    this.owner = data.owner;\n\n    /**\n     * The permissions that the client user has in this guild\n     * @type {Readonly<Permissions>}\n     */\n    this.permissions = new Permissions(BigInt(data.permissions)).freeze();\n  }\n}\n\nmodule.exports = OAuth2Guild;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/OAuth2Guild.js?')},"./node_modules/@citizenfx/discord.js/src/structures/PartialGroupDMChannel.js":
/*!************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/PartialGroupDMChannel.js ***!
  \************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Channel } = __webpack_require__(/*! ./Channel */ \"./node_modules/@citizenfx/discord.js/src/structures/Channel.js\");\nconst { Error } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\n\n/**\n * Represents a Partial Group DM Channel on Discord.\n * @extends {Channel}\n */\nclass PartialGroupDMChannel extends Channel {\n  constructor(client, data) {\n    super(client, data);\n\n    /**\n     * The name of this Group DM Channel\n     * @type {?string}\n     */\n    this.name = data.name;\n\n    /**\n     * The hash of the channel icon\n     * @type {?string}\n     */\n    this.icon = data.icon;\n\n    /**\n     * Recipient data received in a {@link PartialGroupDMChannel}.\n     * @typedef {Object} PartialRecipient\n     * @property {string} username The username of the recipient\n     */\n\n    /**\n     * The recipients of this Group DM Channel.\n     * @type {PartialRecipient[]}\n     */\n    this.recipients = data.recipients;\n  }\n\n  /**\n   * The URL to this channel's icon.\n   * @param {StaticImageURLOptions} [options={}] Options for the Image URL\n   * @returns {?string}\n   */\n  iconURL({ format, size } = {}) {\n    return this.icon && this.client.rest.cdn.GDMIcon(this.id, this.icon, format, size);\n  }\n\n  delete() {\n    return Promise.reject(new Error('DELETE_GROUP_DM_CHANNEL'));\n  }\n\n  fetch() {\n    return Promise.reject(new Error('FETCH_GROUP_DM_CHANNEL'));\n  }\n}\n\nmodule.exports = PartialGroupDMChannel;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/PartialGroupDMChannel.js?")},"./node_modules/@citizenfx/discord.js/src/structures/PermissionOverwrites.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/PermissionOverwrites.js ***!
  \***********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Base = __webpack_require__(/*! ./Base */ \"./node_modules/@citizenfx/discord.js/src/structures/Base.js\");\nconst { Role } = __webpack_require__(/*! ./Role */ \"./node_modules/@citizenfx/discord.js/src/structures/Role.js\");\nconst { TypeError } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst { OverwriteTypes } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst Permissions = __webpack_require__(/*! ../util/Permissions */ \"./node_modules/@citizenfx/discord.js/src/util/Permissions.js\");\n\n/**\n * Represents a permission overwrite for a role or member in a guild channel.\n * @extends {Base}\n */\nclass PermissionOverwrites extends Base {\n  constructor(client, data, channel) {\n    super(client);\n\n    /**\n     * The GuildChannel this overwrite is for\n     * @name PermissionOverwrites#channel\n     * @type {GuildChannel}\n     * @readonly\n     */\n    Object.defineProperty(this, 'channel', { value: channel });\n\n    if (data) this._patch(data);\n  }\n\n  _patch(data) {\n    /**\n     * The overwrite's id, either a {@link User} or a {@link Role} id\n     * @type {Snowflake}\n     */\n    this.id = data.id;\n\n    if ('type' in data) {\n      /**\n       * The type of this overwrite\n       * @type {OverwriteType}\n       */\n      this.type = typeof data.type === 'number' ? OverwriteTypes[data.type] : data.type;\n    }\n\n    if ('deny' in data) {\n      /**\n       * The permissions that are denied for the user or role.\n       * @type {Readonly<Permissions>}\n       */\n      this.deny = new Permissions(BigInt(data.deny)).freeze();\n    }\n\n    if ('allow' in data) {\n      /**\n       * The permissions that are allowed for the user or role.\n       * @type {Readonly<Permissions>}\n       */\n      this.allow = new Permissions(BigInt(data.allow)).freeze();\n    }\n  }\n\n  /**\n   * Edits this Permission Overwrite.\n   * @param {PermissionOverwriteOptions} options The options for the update\n   * @param {string} [reason] Reason for creating/editing this overwrite\n   * @returns {Promise<PermissionOverwrites>}\n   * @example\n   * // Update permission overwrites\n   * permissionOverwrites.edit({\n   *   SEND_MESSAGES: false\n   * })\n   *   .then(channel => console.log(channel.permissionOverwrites.get(message.author.id)))\n   *   .catch(console.error);\n   */\n  async edit(options, reason) {\n    await this.channel.permissionOverwrites.upsert(this.id, options, { type: OverwriteTypes[this.type], reason }, this);\n    return this;\n  }\n\n  /**\n   * Deletes this Permission Overwrite.\n   * @param {string} [reason] Reason for deleting this overwrite\n   * @returns {Promise<PermissionOverwrites>}\n   */\n  async delete(reason) {\n    await this.channel.permissionOverwrites.delete(this.id, reason);\n    return this;\n  }\n\n  toJSON() {\n    return {\n      id: this.id,\n      type: OverwriteTypes[this.type],\n      allow: this.allow,\n      deny: this.deny,\n    };\n  }\n\n  /**\n   * An object mapping permission flags to `true` (enabled), `null` (unset) or `false` (disabled).\n   * ```js\n   * {\n   *  'SEND_MESSAGES': true,\n   *  'EMBED_LINKS': null,\n   *  'ATTACH_FILES': false,\n   * }\n   * ```\n   * @typedef {Object} PermissionOverwriteOptions\n   */\n\n  /**\n   * @typedef {Object} ResolvedOverwriteOptions\n   * @property {Permissions} allow The allowed permissions\n   * @property {Permissions} deny The denied permissions\n   */\n\n  /**\n   * Resolves bitfield permissions overwrites from an object.\n   * @param {PermissionOverwriteOptions} options The options for the update\n   * @param {ResolvedOverwriteOptions} initialPermissions The initial permissions\n   * @returns {ResolvedOverwriteOptions}\n   */\n  static resolveOverwriteOptions(options, { allow, deny } = {}) {\n    allow = new Permissions(allow);\n    deny = new Permissions(deny);\n\n    for (const [perm, value] of Object.entries(options)) {\n      if (value === true) {\n        allow.add(perm);\n        deny.remove(perm);\n      } else if (value === false) {\n        allow.remove(perm);\n        deny.add(perm);\n      } else if (value === null) {\n        allow.remove(perm);\n        deny.remove(perm);\n      }\n    }\n\n    return { allow, deny };\n  }\n\n  /**\n   * The raw data for a permission overwrite\n   * @typedef {Object} RawOverwriteData\n   * @property {Snowflake} id The id of the {@link Role} or {@link User} this overwrite belongs to\n   * @property {string} allow The permissions to allow\n   * @property {string} deny The permissions to deny\n   * @property {number} type The type of this OverwriteData\n   */\n\n  /**\n   * Data that can be resolved into {@link RawOverwriteData}. This can be:\n   * * PermissionOverwrites\n   * * OverwriteData\n   * @typedef {PermissionOverwrites|OverwriteData} OverwriteResolvable\n   */\n\n  /**\n   * Data that can be used for a permission overwrite\n   * @typedef {Object} OverwriteData\n   * @property {GuildMemberResolvable|RoleResolvable} id Member or role this overwrite is for\n   * @property {PermissionResolvable} [allow] The permissions to allow\n   * @property {PermissionResolvable} [deny] The permissions to deny\n   * @property {OverwriteType} [type] The type of this OverwriteData\n   */\n\n  /**\n   * Resolves an overwrite into {@link RawOverwriteData}.\n   * @param {OverwriteResolvable} overwrite The overwrite-like data to resolve\n   * @param {Guild} [guild] The guild to resolve from\n   * @returns {RawOverwriteData}\n   */\n  static resolve(overwrite, guild) {\n    if (overwrite instanceof this) return overwrite.toJSON();\n    if (typeof overwrite.id === 'string' && overwrite.type in OverwriteTypes) {\n      return {\n        id: overwrite.id,\n        type: OverwriteTypes[overwrite.type],\n        allow: Permissions.resolve(overwrite.allow ?? Permissions.defaultBit).toString(),\n        deny: Permissions.resolve(overwrite.deny ?? Permissions.defaultBit).toString(),\n      };\n    }\n\n    const userOrRole = guild.roles.resolve(overwrite.id) ?? guild.client.users.resolve(overwrite.id);\n    if (!userOrRole) throw new TypeError('INVALID_TYPE', 'parameter', 'User nor a Role');\n    const type = userOrRole instanceof Role ? OverwriteTypes.role : OverwriteTypes.member;\n\n    return {\n      id: userOrRole.id,\n      type,\n      allow: Permissions.resolve(overwrite.allow ?? Permissions.defaultBit).toString(),\n      deny: Permissions.resolve(overwrite.deny ?? Permissions.defaultBit).toString(),\n    };\n  }\n}\n\nmodule.exports = PermissionOverwrites;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/PermissionOverwrites.js?")},"./node_modules/@citizenfx/discord.js/src/structures/Presence.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/Presence.js ***!
  \***********************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nconst Base = __webpack_require__(/*! ./Base */ \"./node_modules/@citizenfx/discord.js/src/structures/Base.js\");\nconst { Emoji } = __webpack_require__(/*! ./Emoji */ \"./node_modules/@citizenfx/discord.js/src/structures/Emoji.js\");\nconst ActivityFlags = __webpack_require__(/*! ../util/ActivityFlags */ \"./node_modules/@citizenfx/discord.js/src/util/ActivityFlags.js\");\nconst { ActivityTypes } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst Util = __webpack_require__(/*! ../util/Util */ \"./node_modules/@citizenfx/discord.js/src/util/Util.js\");\n\n/**\n * Activity sent in a message.\n * @typedef {Object} MessageActivity\n * @property {string} [partyId] Id of the party represented in activity\n * @property {number} [type] Type of activity sent\n */\n\n/**\n * The status of this presence:\n * * **`online`** - user is online\n * * **`idle`** - user is AFK\n * * **`offline`** - user is offline or invisible\n * * **`dnd`** - user is in Do Not Disturb\n * @typedef {string} PresenceStatus\n */\n\n/**\n * The status of this presence:\n * * **`online`** - user is online\n * * **`idle`** - user is AFK\n * * **`dnd`** - user is in Do Not Disturb\n * @typedef {string} ClientPresenceStatus\n */\n\n/**\n * Represents a user's presence.\n * @extends {Base}\n */\nclass Presence extends Base {\n  constructor(client, data = {}) {\n    super(client);\n\n    /**\n     * The presence's user id\n     * @type {Snowflake}\n     */\n    this.userId = data.user.id;\n\n    /**\n     * The guild this presence is in\n     * @type {?Guild}\n     */\n    this.guild = data.guild ?? null;\n\n    this._patch(data);\n  }\n\n  /**\n   * The user of this presence\n   * @type {?User}\n   * @readonly\n   */\n  get user() {\n    return this.client.users.resolve(this.userId);\n  }\n\n  /**\n   * The member of this presence\n   * @type {?GuildMember}\n   * @readonly\n   */\n  get member() {\n    return this.guild.members.resolve(this.userId);\n  }\n\n  _patch(data) {\n    if ('status' in data) {\n      /**\n       * The status of this presence\n       * @type {PresenceStatus}\n       */\n      this.status = data.status;\n    } else {\n      this.status ??= 'offline';\n    }\n\n    if ('activities' in data) {\n      /**\n       * The activities of this presence\n       * @type {Activity[]}\n       */\n      this.activities = data.activities.map(activity => new Activity(this, activity));\n    } else {\n      this.activities ??= [];\n    }\n\n    if ('client_status' in data) {\n      /**\n       * The devices this presence is on\n       * @type {?Object}\n       * @property {?ClientPresenceStatus} web The current presence in the web application\n       * @property {?ClientPresenceStatus} mobile The current presence in the mobile application\n       * @property {?ClientPresenceStatus} desktop The current presence in the desktop application\n       */\n      this.clientStatus = data.client_status;\n    } else {\n      this.clientStatus ??= null;\n    }\n\n    return this;\n  }\n\n  _clone() {\n    const clone = Object.assign(Object.create(this), this);\n    clone.activities = this.activities.map(activity => activity._clone());\n    return clone;\n  }\n\n  /**\n   * Whether this presence is equal to another.\n   * @param {Presence} presence The presence to compare with\n   * @returns {boolean}\n   */\n  equals(presence) {\n    return (\n      this === presence ||\n      (presence &&\n        this.status === presence.status &&\n        this.activities.length === presence.activities.length &&\n        this.activities.every((activity, index) => activity.equals(presence.activities[index])) &&\n        this.clientStatus?.web === presence.clientStatus?.web &&\n        this.clientStatus?.mobile === presence.clientStatus?.mobile &&\n        this.clientStatus?.desktop === presence.clientStatus?.desktop)\n    );\n  }\n\n  toJSON() {\n    return Util.flatten(this);\n  }\n}\n\n/**\n * The platform of this activity:\n * * **`desktop`**\n * * **`samsung`** - playing on Samsung Galaxy\n * * **`xbox`** - playing on Xbox Live\n * @typedef {string} ActivityPlatform\n */\n\n/**\n * Represents an activity that is part of a user's presence.\n */\nclass Activity {\n  constructor(presence, data) {\n    Object.defineProperty(this, 'presence', { value: presence });\n\n    /**\n     * The activity's id\n     * @type {string}\n     */\n    this.id = data.id;\n\n    /**\n     * The activity's name\n     * @type {string}\n     */\n    this.name = data.name;\n\n    /**\n     * The activity status's type\n     * @type {ActivityType}\n     */\n    this.type = typeof data.type === 'number' ? ActivityTypes[data.type] : data.type;\n\n    /**\n     * If the activity is being streamed, a link to the stream\n     * @type {?string}\n     */\n    this.url = data.url ?? null;\n\n    /**\n     * Details about the activity\n     * @type {?string}\n     */\n    this.details = data.details ?? null;\n\n    /**\n     * State of the activity\n     * @type {?string}\n     */\n    this.state = data.state ?? null;\n\n    /**\n     * The id of the application associated with this activity\n     * @type {?Snowflake}\n     */\n    this.applicationId = data.application_id ?? null;\n\n    /**\n     * Represents timestamps of an activity\n     * @typedef {Object} ActivityTimestamps\n     * @property {?Date} start When the activity started\n     * @property {?Date} end When the activity will end\n     */\n\n    /**\n     * Timestamps for the activity\n     * @type {?ActivityTimestamps}\n     */\n    this.timestamps = data.timestamps\n      ? {\n          start: data.timestamps.start ? new Date(Number(data.timestamps.start)) : null,\n          end: data.timestamps.end ? new Date(Number(data.timestamps.end)) : null,\n        }\n      : null;\n\n    /**\n     * The Spotify song's id\n     * @type {?string}\n     */\n    this.syncId = data.sync_id ?? null;\n\n    /**\n     * The platform the game is being played on\n     * @type {?ActivityPlatform}\n     */\n    this.platform = data.platform ?? null;\n\n    /**\n     * Represents a party of an activity\n     * @typedef {Object} ActivityParty\n     * @property {?string} id The party's id\n     * @property {number[]} size Size of the party as `[current, max]`\n     */\n\n    /**\n     * Party of the activity\n     * @type {?ActivityParty}\n     */\n    this.party = data.party ?? null;\n\n    /**\n     * Assets for rich presence\n     * @type {?RichPresenceAssets}\n     */\n    this.assets = data.assets ? new RichPresenceAssets(this, data.assets) : null;\n\n    /**\n     * Flags that describe the activity\n     * @type {Readonly<ActivityFlags>}\n     */\n    this.flags = new ActivityFlags(data.flags).freeze();\n\n    /**\n     * Emoji for a custom activity\n     * @type {?Emoji}\n     */\n    this.emoji = data.emoji ? new Emoji(presence.client, data.emoji) : null;\n\n    /**\n     * The game's or Spotify session's id\n     * @type {?string}\n     */\n    this.sessionId = data.session_id ?? null;\n\n    /**\n     * The labels of the buttons of this rich presence\n     * @type {string[]}\n     */\n    this.buttons = data.buttons ?? [];\n\n    /**\n     * Creation date of the activity\n     * @type {number}\n     */\n    this.createdTimestamp = new Date(data.created_at).getTime();\n  }\n\n  /**\n   * Whether this activity is equal to another activity.\n   * @param {Activity} activity The activity to compare with\n   * @returns {boolean}\n   */\n  equals(activity) {\n    return (\n      this === activity ||\n      (activity &&\n        this.name === activity.name &&\n        this.type === activity.type &&\n        this.url === activity.url &&\n        this.state === activity.state &&\n        this.details === activity.details)\n    );\n  }\n\n  /**\n   * The time the activity was created at\n   * @type {Date}\n   * @readonly\n   */\n  get createdAt() {\n    return new Date(this.createdTimestamp);\n  }\n\n  /**\n   * When concatenated with a string, this automatically returns the activities' name instead of the Activity object.\n   * @returns {string}\n   */\n  toString() {\n    return this.name;\n  }\n\n  _clone() {\n    return Object.assign(Object.create(this), this);\n  }\n}\n\n/**\n * Assets for a rich presence\n */\nclass RichPresenceAssets {\n  constructor(activity, assets) {\n    Object.defineProperty(this, 'activity', { value: activity });\n\n    /**\n     * Hover text for the large image\n     * @type {?string}\n     */\n    this.largeText = assets.large_text ?? null;\n\n    /**\n     * Hover text for the small image\n     * @type {?string}\n     */\n    this.smallText = assets.small_text ?? null;\n\n    /**\n     * The large image asset's id\n     * @type {?Snowflake}\n     */\n    this.largeImage = assets.large_image ?? null;\n\n    /**\n     * The small image asset's id\n     * @type {?Snowflake}\n     */\n    this.smallImage = assets.small_image ?? null;\n  }\n\n  /**\n   * Gets the URL of the small image asset\n   * @param {StaticImageURLOptions} [options] Options for the image URL\n   * @returns {?string}\n   */\n  smallImageURL({ format, size } = {}) {\n    return (\n      this.smallImage &&\n      this.activity.presence.client.rest.cdn.AppAsset(this.activity.applicationId, this.smallImage, {\n        format,\n        size,\n      })\n    );\n  }\n\n  /**\n   * Gets the URL of the large image asset\n   * @param {StaticImageURLOptions} [options] Options for the image URL\n   * @returns {?string}\n   */\n  largeImageURL({ format, size } = {}) {\n    if (!this.largeImage) return null;\n    if (/^spotify:/.test(this.largeImage)) {\n      return `https://i.scdn.co/image/${this.largeImage.slice(8)}`;\n    } else if (/^twitch:/.test(this.largeImage)) {\n      return `https://static-cdn.jtvnw.net/previews-ttv/live_user_${this.largeImage.slice(7)}.png`;\n    }\n    return this.activity.presence.client.rest.cdn.AppAsset(this.activity.applicationId, this.largeImage, {\n      format,\n      size,\n    });\n  }\n}\n\nexports.Presence = Presence;\nexports.Activity = Activity;\nexports.RichPresenceAssets = RichPresenceAssets;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/Presence.js?")},"./node_modules/@citizenfx/discord.js/src/structures/ReactionCollector.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/ReactionCollector.js ***!
  \********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst Collector = __webpack_require__(/*! ./interfaces/Collector */ \"./node_modules/@citizenfx/discord.js/src/structures/interfaces/Collector.js\");\nconst { Events } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\n\n/**\n * @typedef {CollectorOptions} ReactionCollectorOptions\n * @property {number} max The maximum total amount of reactions to collect\n * @property {number} maxEmojis The maximum number of emojis to collect\n * @property {number} maxUsers The maximum number of users to react\n */\n\n/**\n * Collects reactions on messages.\n * Will automatically stop if the message ({@link Client#event:messageDelete messageDelete} or\n * {@link Client#event:messageDeleteBulk messageDeleteBulk}),\n * channel ({@link Client#event:channelDelete channelDelete}),\n * thread ({@link Client#event:threadDelete threadDelete}), or\n * guild ({@link Client#event:guildDelete guildDelete}) is deleted.\n * @extends {Collector}\n */\nclass ReactionCollector extends Collector {\n  /**\n   * @param {Message} message The message upon which to collect reactions\n   * @param {ReactionCollectorOptions} [options={}] The options to apply to this collector\n   */\n  constructor(message, options = {}) {\n    super(message.client, options);\n\n    /**\n     * The message upon which to collect reactions\n     * @type {Message}\n     */\n    this.message = message;\n\n    /**\n     * The users that have reacted to this message\n     * @type {Collection}\n     */\n    this.users = new Collection();\n\n    /**\n     * The total number of reactions collected\n     * @type {number}\n     */\n    this.total = 0;\n\n    this.empty = this.empty.bind(this);\n    this._handleChannelDeletion = this._handleChannelDeletion.bind(this);\n    this._handleThreadDeletion = this._handleThreadDeletion.bind(this);\n    this._handleGuildDeletion = this._handleGuildDeletion.bind(this);\n    this._handleMessageDeletion = this._handleMessageDeletion.bind(this);\n\n    const bulkDeleteListener = messages => {\n      if (messages.has(this.message.id)) this.stop('messageDelete');\n    };\n\n    this.client.incrementMaxListeners();\n    this.client.on(Events.MESSAGE_REACTION_ADD, this.handleCollect);\n    this.client.on(Events.MESSAGE_REACTION_REMOVE, this.handleDispose);\n    this.client.on(Events.MESSAGE_REACTION_REMOVE_ALL, this.empty);\n    this.client.on(Events.MESSAGE_DELETE, this._handleMessageDeletion);\n    this.client.on(Events.MESSAGE_BULK_DELETE, bulkDeleteListener);\n    this.client.on(Events.CHANNEL_DELETE, this._handleChannelDeletion);\n    this.client.on(Events.THREAD_DELETE, this._handleThreadDeletion);\n    this.client.on(Events.GUILD_DELETE, this._handleGuildDeletion);\n\n    this.once('end', () => {\n      this.client.removeListener(Events.MESSAGE_REACTION_ADD, this.handleCollect);\n      this.client.removeListener(Events.MESSAGE_REACTION_REMOVE, this.handleDispose);\n      this.client.removeListener(Events.MESSAGE_REACTION_REMOVE_ALL, this.empty);\n      this.client.removeListener(Events.MESSAGE_DELETE, this._handleMessageDeletion);\n      this.client.removeListener(Events.MESSAGE_BULK_DELETE, bulkDeleteListener);\n      this.client.removeListener(Events.CHANNEL_DELETE, this._handleChannelDeletion);\n      this.client.removeListener(Events.THREAD_DELETE, this._handleThreadDeletion);\n      this.client.removeListener(Events.GUILD_DELETE, this._handleGuildDeletion);\n      this.client.decrementMaxListeners();\n    });\n\n    this.on('collect', (reaction, user) => {\n      /**\n       * Emitted whenever a reaction is newly created on a message. Will emit only when a new reaction is\n       * added to the message, as opposed to {@link Collector#collect} which will\n       * be emitted even when a reaction has already been added to the message.\n       * @event ReactionCollector#create\n       * @param {MessageReaction} reaction The reaction that was added\n       * @param {User} user The user that added the reaction\n       */\n      if (reaction.count === 1) {\n        this.emit('create', reaction, user);\n      }\n      this.total++;\n      this.users.set(user.id, user);\n    });\n\n    this.on('remove', (reaction, user) => {\n      this.total--;\n      if (!this.collected.some(r => r.users.cache.has(user.id))) this.users.delete(user.id);\n    });\n  }\n\n  /**\n   * Handles an incoming reaction for possible collection.\n   * @param {MessageReaction} reaction The reaction to possibly collect\n   * @param {User} user The user that added the reaction\n   * @returns {?(Snowflake|string)}\n   * @private\n   */\n  collect(reaction) {\n    /**\n     * Emitted whenever a reaction is collected.\n     * @event ReactionCollector#collect\n     * @param {MessageReaction} reaction The reaction that was collected\n     * @param {User} user The user that added the reaction\n     */\n    if (reaction.message.id !== this.message.id) return null;\n\n    return ReactionCollector.key(reaction);\n  }\n\n  /**\n   * Handles a reaction deletion for possible disposal.\n   * @param {MessageReaction} reaction The reaction to possibly dispose of\n   * @param {User} user The user that removed the reaction\n   * @returns {?(Snowflake|string)}\n   */\n  dispose(reaction, user) {\n    /**\n     * Emitted when the reaction had all the users removed and the `dispose` option is set to true.\n     * @event ReactionCollector#dispose\n     * @param {MessageReaction} reaction The reaction that was disposed of\n     * @param {User} user The user that removed the reaction\n     */\n    if (reaction.message.id !== this.message.id) return null;\n\n    /**\n     * Emitted when the reaction had one user removed and the `dispose` option is set to true.\n     * @event ReactionCollector#remove\n     * @param {MessageReaction} reaction The reaction that was removed\n     * @param {User} user The user that removed the reaction\n     */\n    if (this.collected.has(ReactionCollector.key(reaction)) && this.users.has(user.id)) {\n      this.emit('remove', reaction, user);\n    }\n    return reaction.count ? null : ReactionCollector.key(reaction);\n  }\n\n  /**\n   * Empties this reaction collector.\n   */\n  empty() {\n    this.total = 0;\n    this.collected.clear();\n    this.users.clear();\n    this.checkEnd();\n  }\n\n  /**\n   * The reason this collector has ended with, or null if it hasn't ended yet\n   * @type {?string}\n   * @readonly\n   */\n  get endReason() {\n    if (this.options.max && this.total >= this.options.max) return 'limit';\n    if (this.options.maxEmojis && this.collected.size >= this.options.maxEmojis) return 'emojiLimit';\n    if (this.options.maxUsers && this.users.size >= this.options.maxUsers) return 'userLimit';\n    return null;\n  }\n\n  /**\n   * Handles checking if the message has been deleted, and if so, stops the collector with the reason 'messageDelete'.\n   * @private\n   * @param {Message} message The message that was deleted\n   * @returns {void}\n   */\n  _handleMessageDeletion(message) {\n    if (message.id === this.message.id) {\n      this.stop('messageDelete');\n    }\n  }\n\n  /**\n   * Handles checking if the channel has been deleted, and if so, stops the collector with the reason 'channelDelete'.\n   * @private\n   * @param {GuildChannel} channel The channel that was deleted\n   * @returns {void}\n   */\n  _handleChannelDeletion(channel) {\n    if (channel.id === this.message.channelId || channel.threads?.cache.has(this.message.channelId)) {\n      this.stop('channelDelete');\n    }\n  }\n\n  /**\n   * Handles checking if the thread has been deleted, and if so, stops the collector with the reason 'threadDelete'.\n   * @private\n   * @param {ThreadChannel} thread The thread that was deleted\n   * @returns {void}\n   */\n  _handleThreadDeletion(thread) {\n    if (thread.id === this.message.channelId) {\n      this.stop('threadDelete');\n    }\n  }\n\n  /**\n   * Handles checking if the guild has been deleted, and if so, stops the collector with the reason 'guildDelete'.\n   * @private\n   * @param {Guild} guild The guild that was deleted\n   * @returns {void}\n   */\n  _handleGuildDeletion(guild) {\n    if (guild.id === this.message.guild?.id) {\n      this.stop('guildDelete');\n    }\n  }\n\n  /**\n   * Gets the collector key for a reaction.\n   * @param {MessageReaction} reaction The message reaction to get the key for\n   * @returns {Snowflake|string}\n   */\n  static key(reaction) {\n    return reaction.emoji.id ?? reaction.emoji.name;\n  }\n}\n\nmodule.exports = ReactionCollector;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/ReactionCollector.js?")},"./node_modules/@citizenfx/discord.js/src/structures/ReactionEmoji.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/ReactionEmoji.js ***!
  \****************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst { Emoji } = __webpack_require__(/*! ./Emoji */ "./node_modules/@citizenfx/discord.js/src/structures/Emoji.js");\nconst Util = __webpack_require__(/*! ../util/Util */ "./node_modules/@citizenfx/discord.js/src/util/Util.js");\n\n/**\n * Represents a limited emoji set used for both custom and unicode emojis. Custom emojis\n * will use this class opposed to the Emoji class when the client doesn\'t know enough\n * information about them.\n * @extends {Emoji}\n */\nclass ReactionEmoji extends Emoji {\n  constructor(reaction, emoji) {\n    super(reaction.message.client, emoji);\n    /**\n     * The message reaction this emoji refers to\n     * @type {MessageReaction}\n     */\n    this.reaction = reaction;\n  }\n\n  toJSON() {\n    return Util.flatten(this, { identifier: true });\n  }\n\n  valueOf() {\n    return this.id;\n  }\n}\n\nmodule.exports = ReactionEmoji;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/ReactionEmoji.js?')},"./node_modules/@citizenfx/discord.js/src/structures/Role.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/Role.js ***!
  \*******************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nconst process = __webpack_require__(/*! node:process */ \"node:process\");\nconst Base = __webpack_require__(/*! ./Base */ \"./node_modules/@citizenfx/discord.js/src/structures/Base.js\");\nconst { Error } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst Permissions = __webpack_require__(/*! ../util/Permissions */ \"./node_modules/@citizenfx/discord.js/src/util/Permissions.js\");\nconst SnowflakeUtil = __webpack_require__(/*! ../util/SnowflakeUtil */ \"./node_modules/@citizenfx/discord.js/src/util/SnowflakeUtil.js\");\nconst Util = __webpack_require__(/*! ../util/Util */ \"./node_modules/@citizenfx/discord.js/src/util/Util.js\");\n\nlet deprecationEmittedForComparePositions = false;\n\n/**\n * @type {WeakSet<Role>}\n * @private\n * @internal\n */\nconst deletedRoles = new WeakSet();\nlet deprecationEmittedForDeleted = false;\n\n/**\n * Represents a role on Discord.\n * @extends {Base}\n */\nclass Role extends Base {\n  constructor(client, data, guild) {\n    super(client);\n\n    /**\n     * The guild that the role belongs to\n     * @type {Guild}\n     */\n    this.guild = guild;\n\n    /**\n     * The icon hash of the role\n     * @type {?string}\n     */\n    this.icon = null;\n\n    /**\n     * The unicode emoji for the role\n     * @type {?string}\n     */\n    this.unicodeEmoji = null;\n\n    if (data) this._patch(data);\n  }\n\n  _patch(data) {\n    /**\n     * The role's id (unique to the guild it is part of)\n     * @type {Snowflake}\n     */\n    this.id = data.id;\n    if ('name' in data) {\n      /**\n       * The name of the role\n       * @type {string}\n       */\n      this.name = data.name;\n    }\n\n    if ('color' in data) {\n      /**\n       * The base 10 color of the role\n       * @type {number}\n       */\n      this.color = data.color;\n    }\n\n    if ('hoist' in data) {\n      /**\n       * If true, users that are part of this role will appear in a separate category in the users list\n       * @type {boolean}\n       */\n      this.hoist = data.hoist;\n    }\n\n    if ('position' in data) {\n      /**\n       * The raw position of the role from the API\n       * @type {number}\n       */\n      this.rawPosition = data.position;\n    }\n\n    if ('permissions' in data) {\n      /**\n       * The permissions of the role\n       * @type {Readonly<Permissions>}\n       */\n      this.permissions = new Permissions(BigInt(data.permissions)).freeze();\n    }\n\n    if ('managed' in data) {\n      /**\n       * Whether or not the role is managed by an external service\n       * @type {boolean}\n       */\n      this.managed = data.managed;\n    }\n\n    if ('mentionable' in data) {\n      /**\n       * Whether or not the role can be mentioned by anyone\n       * @type {boolean}\n       */\n      this.mentionable = data.mentionable;\n    }\n\n    if ('icon' in data) this.icon = data.icon;\n\n    if ('unicode_emoji' in data) this.unicodeEmoji = data.unicode_emoji;\n\n    /**\n     * The tags this role has\n     * @type {?Object}\n     * @property {Snowflake} [botId] The id of the bot this role belongs to\n     * @property {Snowflake|string} [integrationId] The id of the integration this role belongs to\n     * @property {true} [premiumSubscriberRole] Whether this is the guild's premium subscription role\n     */\n    this.tags = data.tags ? {} : null;\n    if (data.tags) {\n      if ('bot_id' in data.tags) {\n        this.tags.botId = data.tags.bot_id;\n      }\n      if ('integration_id' in data.tags) {\n        this.tags.integrationId = data.tags.integration_id;\n      }\n      if ('premium_subscriber' in data.tags) {\n        this.tags.premiumSubscriberRole = true;\n      }\n    }\n  }\n\n  /**\n   * The timestamp the role was created at\n   * @type {number}\n   * @readonly\n   */\n  get createdTimestamp() {\n    return SnowflakeUtil.timestampFrom(this.id);\n  }\n\n  /**\n   * The time the role was created at\n   * @type {Date}\n   * @readonly\n   */\n  get createdAt() {\n    return new Date(this.createdTimestamp);\n  }\n\n  /**\n   * Whether or not the role has been deleted\n   * @type {boolean}\n   * @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091\n   */\n  get deleted() {\n    if (!deprecationEmittedForDeleted) {\n      deprecationEmittedForDeleted = true;\n      process.emitWarning(\n        'Role#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.',\n        'DeprecationWarning',\n      );\n    }\n\n    return deletedRoles.has(this);\n  }\n\n  set deleted(value) {\n    if (!deprecationEmittedForDeleted) {\n      deprecationEmittedForDeleted = true;\n      process.emitWarning(\n        'Role#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.',\n        'DeprecationWarning',\n      );\n    }\n\n    if (value) deletedRoles.add(this);\n    else deletedRoles.delete(this);\n  }\n\n  /**\n   * The hexadecimal version of the role color, with a leading hashtag\n   * @type {string}\n   * @readonly\n   */\n  get hexColor() {\n    return `#${this.color.toString(16).padStart(6, '0')}`;\n  }\n\n  /**\n   * The cached guild members that have this role\n   * @type {Collection<Snowflake, GuildMember>}\n   * @readonly\n   */\n  get members() {\n    return this.guild.members.cache.filter(m => m.roles.cache.has(this.id));\n  }\n\n  /**\n   * Whether the role is editable by the client user\n   * @type {boolean}\n   * @readonly\n   */\n  get editable() {\n    if (this.managed) return false;\n    const clientMember = this.guild.members.resolve(this.client.user);\n    if (!clientMember.permissions.has(Permissions.FLAGS.MANAGE_ROLES)) return false;\n    return clientMember.roles.highest.comparePositionTo(this) > 0;\n  }\n\n  /**\n   * The position of the role in the role manager\n   * @type {number}\n   * @readonly\n   */\n  get position() {\n    const sorted = this.guild._sortedRoles();\n    return [...sorted.values()].indexOf(sorted.get(this.id));\n  }\n\n  /**\n   * Compares this role's position to another role's.\n   * @param {RoleResolvable} role Role to compare to this one\n   * @returns {number} Negative number if this role's position is lower (other role's is higher),\n   * positive number if this one is higher (other's is lower), 0 if equal\n   */\n  comparePositionTo(role) {\n    return this.guild.roles.comparePositions(this, role);\n  }\n\n  /**\n   * The data for a role.\n   * @typedef {Object} RoleData\n   * @property {string} [name] The name of the role\n   * @property {ColorResolvable} [color] The color of the role, either a hex string or a base 10 number\n   * @property {boolean} [hoist] Whether or not the role should be hoisted\n   * @property {number} [position] The position of the role\n   * @property {PermissionResolvable} [permissions] The permissions of the role\n   * @property {boolean} [mentionable] Whether or not the role should be mentionable\n   * @property {?(BufferResolvable|Base64Resolvable|EmojiResolvable)} [icon] The icon for the role\n   * <warn>The `EmojiResolvable` should belong to the same guild as the role.\n   * If not, pass the emoji's URL directly</warn>\n   * @property {?string} [unicodeEmoji] The unicode emoji for the role\n   */\n\n  /**\n   * Edits the role.\n   * @param {RoleData} data The new data for the role\n   * @param {string} [reason] Reason for editing this role\n   * @returns {Promise<Role>}\n   * @example\n   * // Edit a role\n   * role.edit({ name: 'new role' })\n   *   .then(updated => console.log(`Edited role name to ${updated.name}`))\n   *   .catch(console.error);\n   */\n  edit(data, reason) {\n    return this.guild.roles.edit(this, data, reason);\n  }\n\n  /**\n   * Returns `channel.permissionsFor(role)`. Returns permissions for a role in a guild channel,\n   * taking into account permission overwrites.\n   * @param {GuildChannel|Snowflake} channel The guild channel to use as context\n   * @param {boolean} [checkAdmin=true] Whether having `ADMINISTRATOR` will return all permissions\n   * @returns {Readonly<Permissions>}\n   */\n  permissionsIn(channel, checkAdmin = true) {\n    channel = this.guild.channels.resolve(channel);\n    if (!channel) throw new Error('GUILD_CHANNEL_RESOLVE');\n    return channel.rolePermissions(this, checkAdmin);\n  }\n\n  /**\n   * Sets a new name for the role.\n   * @param {string} name The new name of the role\n   * @param {string} [reason] Reason for changing the role's name\n   * @returns {Promise<Role>}\n   * @example\n   * // Set the name of the role\n   * role.setName('new role')\n   *   .then(updated => console.log(`Updated role name to ${updated.name}`))\n   *   .catch(console.error);\n   */\n  setName(name, reason) {\n    return this.edit({ name }, reason);\n  }\n\n  /**\n   * Sets a new color for the role.\n   * @param {ColorResolvable} color The color of the role\n   * @param {string} [reason] Reason for changing the role's color\n   * @returns {Promise<Role>}\n   * @example\n   * // Set the color of a role\n   * role.setColor('#FF0000')\n   *   .then(updated => console.log(`Set color of role to ${updated.color}`))\n   *   .catch(console.error);\n   */\n  setColor(color, reason) {\n    return this.edit({ color }, reason);\n  }\n\n  /**\n   * Sets whether or not the role should be hoisted.\n   * @param {boolean} [hoist=true] Whether or not to hoist the role\n   * @param {string} [reason] Reason for setting whether or not the role should be hoisted\n   * @returns {Promise<Role>}\n   * @example\n   * // Set the hoist of the role\n   * role.setHoist(true)\n   *   .then(updated => console.log(`Role hoisted: ${updated.hoist}`))\n   *   .catch(console.error);\n   */\n  setHoist(hoist = true, reason) {\n    return this.edit({ hoist }, reason);\n  }\n\n  /**\n   * Sets the permissions of the role.\n   * @param {PermissionResolvable} permissions The permissions of the role\n   * @param {string} [reason] Reason for changing the role's permissions\n   * @returns {Promise<Role>}\n   * @example\n   * // Set the permissions of the role\n   * role.setPermissions([Permissions.FLAGS.KICK_MEMBERS, Permissions.FLAGS.BAN_MEMBERS])\n   *   .then(updated => console.log(`Updated permissions to ${updated.permissions.bitfield}`))\n   *   .catch(console.error);\n   * @example\n   * // Remove all permissions from a role\n   * role.setPermissions(0n)\n   *   .then(updated => console.log(`Updated permissions to ${updated.permissions.bitfield}`))\n   *   .catch(console.error);\n   */\n  setPermissions(permissions, reason) {\n    return this.edit({ permissions }, reason);\n  }\n\n  /**\n   * Sets whether this role is mentionable.\n   * @param {boolean} [mentionable=true] Whether this role should be mentionable\n   * @param {string} [reason] Reason for setting whether or not this role should be mentionable\n   * @returns {Promise<Role>}\n   * @example\n   * // Make the role mentionable\n   * role.setMentionable(true)\n   *   .then(updated => console.log(`Role updated ${updated.name}`))\n   *   .catch(console.error);\n   */\n  setMentionable(mentionable = true, reason) {\n    return this.edit({ mentionable }, reason);\n  }\n\n  /**\n   * Sets a new icon for the role.\n   * @param {?(BufferResolvable|Base64Resolvable|EmojiResolvable)} icon The icon for the role\n   * <warn>The `EmojiResolvable` should belong to the same guild as the role.\n   * If not, pass the emoji's URL directly</warn>\n   * @param {string} [reason] Reason for changing the role's icon\n   * @returns {Promise<Role>}\n   */\n  setIcon(icon, reason) {\n    return this.edit({ icon }, reason);\n  }\n\n  /**\n   * Sets a new unicode emoji for the role.\n   * @param {?string} unicodeEmoji The new unicode emoji for the role\n   * @param {string} [reason] Reason for changing the role's unicode emoji\n   * @returns {Promise<Role>}\n   * @example\n   * // Set a new unicode emoji for the role\n   * role.setUnicodeEmoji('🤖')\n   *   .then(updated => console.log(`Set unicode emoji for the role to ${updated.unicodeEmoji}`))\n   *   .catch(console.error);\n   */\n  setUnicodeEmoji(unicodeEmoji, reason) {\n    return this.edit({ unicodeEmoji }, reason);\n  }\n\n  /**\n   * Options used to set the position of a role.\n   * @typedef {Object} SetRolePositionOptions\n   * @property {boolean} [relative=false] Whether to change the position relative to its current value or not\n   * @property {string} [reason] The reason for changing the position\n   */\n\n  /**\n   * Sets the new position of the role.\n   * @param {number} position The new position for the role\n   * @param {SetRolePositionOptions} [options] Options for setting the position\n   * @returns {Promise<Role>}\n   * @example\n   * // Set the position of the role\n   * role.setPosition(1)\n   *   .then(updated => console.log(`Role position: ${updated.position}`))\n   *   .catch(console.error);\n   */\n  async setPosition(position, { relative, reason } = {}) {\n    const updatedRoles = await Util.setPosition(\n      this,\n      position,\n      relative,\n      this.guild._sortedRoles(),\n      this.client.api.guilds(this.guild.id).roles,\n      reason,\n    );\n    this.client.actions.GuildRolesPositionUpdate.handle({\n      guild_id: this.guild.id,\n      roles: updatedRoles,\n    });\n    return this;\n  }\n\n  /**\n   * Deletes the role.\n   * @param {string} [reason] Reason for deleting this role\n   * @returns {Promise<Role>}\n   * @example\n   * // Delete a role\n   * role.delete('The role needed to go')\n   *   .then(deleted => console.log(`Deleted role ${deleted.name}`))\n   *   .catch(console.error);\n   */\n  async delete(reason) {\n    await this.guild.roles.delete(this.id, reason);\n    return this;\n  }\n\n  /**\n   * A link to the role's icon\n   * @param {StaticImageURLOptions} [options={}] Options for the image URL\n   * @returns {?string}\n   */\n  iconURL({ format, size } = {}) {\n    if (!this.icon) return null;\n    return this.client.rest.cdn.RoleIcon(this.id, this.icon, format, size);\n  }\n\n  /**\n   * Whether this role equals another role. It compares all properties, so for most operations\n   * it is advisable to just compare `role.id === role2.id` as it is much faster and is often\n   * what most users need.\n   * @param {Role} role Role to compare with\n   * @returns {boolean}\n   */\n  equals(role) {\n    return (\n      role &&\n      this.id === role.id &&\n      this.name === role.name &&\n      this.color === role.color &&\n      this.hoist === role.hoist &&\n      this.position === role.position &&\n      this.permissions.bitfield === role.permissions.bitfield &&\n      this.managed === role.managed &&\n      this.icon === role.icon &&\n      this.unicodeEmoji === role.unicodeEmoji\n    );\n  }\n\n  /**\n   * When concatenated with a string, this automatically returns the role's mention instead of the Role object.\n   * @returns {string}\n   * @example\n   * // Logs: Role: <@&123456789012345678>\n   * console.log(`Role: ${role}`);\n   */\n  toString() {\n    if (this.id === this.guild.id) return '@everyone';\n    return `<@&${this.id}>`;\n  }\n\n  toJSON() {\n    return {\n      ...super.toJSON({ createdTimestamp: true }),\n      permissions: this.permissions.toJSON(),\n    };\n  }\n\n  /**\n   * Compares the positions of two roles.\n   * @param {Role} role1 First role to compare\n   * @param {Role} role2 Second role to compare\n   * @returns {number} Negative number if the first role's position is lower (second role's is higher),\n   * positive number if the first's is higher (second's is lower), 0 if equal\n   * @deprecated Use {@link RoleManager#comparePositions} instead.\n   */\n  static comparePositions(role1, role2) {\n    if (!deprecationEmittedForComparePositions) {\n      process.emitWarning(\n        'The Role.comparePositions method is deprecated. Use RoleManager#comparePositions instead.',\n        'DeprecationWarning',\n      );\n\n      deprecationEmittedForComparePositions = true;\n    }\n\n    return role1.guild.roles.comparePositions(role1, role2);\n  }\n}\n\nexports.Role = Role;\nexports.deletedRoles = deletedRoles;\n\n/**\n * @external APIRole\n * @see {@link https://discord.com/developers/docs/topics/permissions#role-object}\n */\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/Role.js?")},"./node_modules/@citizenfx/discord.js/src/structures/SelectMenuInteraction.js":
/*!************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/SelectMenuInteraction.js ***!
  \************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst MessageComponentInteraction = __webpack_require__(/*! ./MessageComponentInteraction */ "./node_modules/@citizenfx/discord.js/src/structures/MessageComponentInteraction.js");\n\n/**\n * Represents a select menu interaction.\n * @extends {MessageComponentInteraction}\n */\nclass SelectMenuInteraction extends MessageComponentInteraction {\n  constructor(client, data) {\n    super(client, data);\n\n    /**\n     * The values selected, if the component which was interacted with was a select menu\n     * @type {string[]}\n     */\n    this.values = data.data.values ?? [];\n  }\n}\n\nmodule.exports = SelectMenuInteraction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/SelectMenuInteraction.js?')},"./node_modules/@citizenfx/discord.js/src/structures/StageChannel.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/StageChannel.js ***!
  \***************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst BaseGuildVoiceChannel = __webpack_require__(/*! ./BaseGuildVoiceChannel */ \"./node_modules/@citizenfx/discord.js/src/structures/BaseGuildVoiceChannel.js\");\n\n/**\n * Represents a guild stage channel on Discord.\n * @extends {BaseGuildVoiceChannel}\n */\nclass StageChannel extends BaseGuildVoiceChannel {\n  _patch(data) {\n    super._patch(data);\n\n    if ('topic' in data) {\n      /**\n       * The topic of the stage channel\n       * @type {?string}\n       */\n      this.topic = data.topic;\n    }\n  }\n\n  /**\n   * The stage instance of this stage channel, if it exists\n   * @type {?StageInstance}\n   * @readonly\n   */\n  get stageInstance() {\n    return this.guild.stageInstances.cache.find(stageInstance => stageInstance.channelId === this.id) ?? null;\n  }\n\n  /**\n   * Creates a stage instance associated with this stage channel.\n   * @param {StageInstanceCreateOptions} options The options to create the stage instance\n   * @returns {Promise<StageInstance>}\n   */\n  createStageInstance(options) {\n    return this.guild.stageInstances.create(this.id, options);\n  }\n\n  /**\n   * Sets a new topic for the guild channel.\n   * @param {?string} topic The new topic for the guild channel\n   * @param {string} [reason] Reason for changing the guild channel's topic\n   * @returns {Promise<GuildChannel>}\n   * @example\n   * // Set a new channel topic\n   * channel.setTopic('needs more rate limiting')\n   *   .then(newChannel => console.log(`Channel's new topic is ${newChannel.topic}`))\n   *   .catch(console.error);\n   */\n  setTopic(topic, reason) {\n    return this.edit({ topic }, reason);\n  }\n\n  /**\n   * Sets the RTC region of the channel.\n   * @name StageChannel#setRTCRegion\n   * @param {?string} region The new region of the channel. Set to `null` to remove a specific region for the channel\n   * @returns {Promise<StageChannel>}\n   * @example\n   * // Set the RTC region to europe\n   * stageChannel.setRTCRegion('europe');\n   * @example\n   * // Remove a fixed region for this channel - let Discord decide automatically\n   * stageChannel.setRTCRegion(null);\n   */\n}\n\nmodule.exports = StageChannel;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/StageChannel.js?")},"./node_modules/@citizenfx/discord.js/src/structures/StageInstance.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/StageInstance.js ***!
  \****************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nconst process = __webpack_require__(/*! node:process */ \"node:process\");\nconst Base = __webpack_require__(/*! ./Base */ \"./node_modules/@citizenfx/discord.js/src/structures/Base.js\");\nconst { PrivacyLevels } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst SnowflakeUtil = __webpack_require__(/*! ../util/SnowflakeUtil */ \"./node_modules/@citizenfx/discord.js/src/util/SnowflakeUtil.js\");\n\n/**\n * @type {WeakSet<StageInstance>}\n * @private\n * @internal\n */\nconst deletedStageInstances = new WeakSet();\nlet deprecationEmittedForDeleted = false;\n\n/**\n * Represents a stage instance.\n * @extends {Base}\n */\nclass StageInstance extends Base {\n  constructor(client, data) {\n    super(client);\n\n    /**\n     * The stage instance's id\n     * @type {Snowflake}\n     */\n    this.id = data.id;\n\n    this._patch(data);\n  }\n\n  _patch(data) {\n    if ('guild_id' in data) {\n      /**\n       * The id of the guild associated with the stage channel\n       * @type {Snowflake}\n       */\n      this.guildId = data.guild_id;\n    }\n\n    if ('channel_id' in data) {\n      /**\n       * The id of the channel associated with the stage channel\n       * @type {Snowflake}\n       */\n      this.channelId = data.channel_id;\n    }\n\n    if ('topic' in data) {\n      /**\n       * The topic of the stage instance\n       * @type {string}\n       */\n      this.topic = data.topic;\n    }\n\n    if ('privacy_level' in data) {\n      /**\n       * The privacy level of the stage instance\n       * @type {PrivacyLevel}\n       */\n      this.privacyLevel = PrivacyLevels[data.privacy_level];\n    }\n\n    if ('discoverable_disabled' in data) {\n      /**\n       * Whether or not stage discovery is disabled\n       * @type {?boolean}\n       */\n      this.discoverableDisabled = data.discoverable_disabled;\n    } else {\n      this.discoverableDisabled ??= null;\n    }\n  }\n\n  /**\n   * The stage channel associated with this stage instance\n   * @type {?StageChannel}\n   * @readonly\n   */\n  get channel() {\n    return this.client.channels.resolve(this.channelId);\n  }\n\n  /**\n   * Whether or not the stage instance has been deleted\n   * @type {boolean}\n   * @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091\n   */\n  get deleted() {\n    if (!deprecationEmittedForDeleted) {\n      deprecationEmittedForDeleted = true;\n      process.emitWarning(\n        'StageInstance#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.',\n        'DeprecationWarning',\n      );\n    }\n\n    return deletedStageInstances.has(this);\n  }\n\n  set deleted(value) {\n    if (!deprecationEmittedForDeleted) {\n      deprecationEmittedForDeleted = true;\n      process.emitWarning(\n        'StageInstance#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.',\n        'DeprecationWarning',\n      );\n    }\n\n    if (value) deletedStageInstances.add(this);\n    else deletedStageInstances.delete(this);\n  }\n\n  /**\n   * The guild this stage instance belongs to\n   * @type {?Guild}\n   * @readonly\n   */\n  get guild() {\n    return this.client.guilds.resolve(this.guildId);\n  }\n\n  /**\n   * Edits this stage instance.\n   * @param {StageInstanceEditOptions} options The options to edit the stage instance\n   * @returns {Promise<StageInstance>}\n   * @example\n   * // Edit a stage instance\n   * stageInstance.edit({ topic: 'new topic' })\n   *  .then(stageInstance => console.log(stageInstance))\n   *  .catch(console.error)\n   */\n  edit(options) {\n    return this.guild.stageInstances.edit(this.channelId, options);\n  }\n\n  /**\n   * Deletes this stage instance.\n   * @returns {Promise<StageInstance>}\n   * @example\n   * // Delete a stage instance\n   * stageInstance.delete()\n   *  .then(stageInstance => console.log(stageInstance))\n   *  .catch(console.error);\n   */\n  async delete() {\n    await this.guild.stageInstances.delete(this.channelId);\n    const clone = this._clone();\n    deletedStageInstances.add(clone);\n    return clone;\n  }\n\n  /**\n   * Sets the topic of this stage instance.\n   * @param {string} topic The topic for the stage instance\n   * @returns {Promise<StageInstance>}\n   * @example\n   * // Set topic of a stage instance\n   * stageInstance.setTopic('new topic')\n   *  .then(stageInstance => console.log(`Set the topic to: ${stageInstance.topic}`))\n   *  .catch(console.error);\n   */\n  setTopic(topic) {\n    return this.guild.stageInstances.edit(this.channelId, { topic });\n  }\n\n  /**\n   * The timestamp this stage instances was created at\n   * @type {number}\n   * @readonly\n   */\n  get createdTimestamp() {\n    return SnowflakeUtil.timestampFrom(this.id);\n  }\n\n  /**\n   * The time this stage instance was created at\n   * @type {Date}\n   * @readonly\n   */\n  get createdAt() {\n    return new Date(this.createdTimestamp);\n  }\n}\n\nexports.StageInstance = StageInstance;\nexports.deletedStageInstances = deletedStageInstances;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/StageInstance.js?")},"./node_modules/@citizenfx/discord.js/src/structures/Sticker.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/Sticker.js ***!
  \**********************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nconst process = __webpack_require__(/*! node:process */ \"node:process\");\nconst Base = __webpack_require__(/*! ./Base */ \"./node_modules/@citizenfx/discord.js/src/structures/Base.js\");\nconst { StickerFormatTypes, StickerTypes } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst SnowflakeUtil = __webpack_require__(/*! ../util/SnowflakeUtil */ \"./node_modules/@citizenfx/discord.js/src/util/SnowflakeUtil.js\");\n\n/**\n * @type {WeakSet<StageInstance>}\n * @private\n * @internal\n */\nconst deletedStickers = new WeakSet();\nlet deprecationEmittedForDeleted = false;\n\n/**\n * Represents a Sticker.\n * @extends {Base}\n */\nclass Sticker extends Base {\n  constructor(client, sticker) {\n    super(client);\n\n    this._patch(sticker);\n  }\n\n  _patch(sticker) {\n    /**\n     * The sticker's id\n     * @type {Snowflake}\n     */\n    this.id = sticker.id;\n\n    if ('description' in sticker) {\n      /**\n       * The description of the sticker\n       * @type {?string}\n       */\n      this.description = sticker.description;\n    } else {\n      this.description ??= null;\n    }\n\n    if ('type' in sticker) {\n      /**\n       * The type of the sticker\n       * @type {?StickerType}\n       */\n      this.type = StickerTypes[sticker.type];\n    } else {\n      this.type ??= null;\n    }\n\n    if ('format_type' in sticker) {\n      /**\n       * The format of the sticker\n       * @type {StickerFormatType}\n       */\n      this.format = StickerFormatTypes[sticker.format_type];\n    }\n\n    if ('name' in sticker) {\n      /**\n       * The name of the sticker\n       * @type {string}\n       */\n      this.name = sticker.name;\n    }\n\n    if ('pack_id' in sticker) {\n      /**\n       * The id of the pack the sticker is from, for standard stickers\n       * @type {?Snowflake}\n       */\n      this.packId = sticker.pack_id;\n    } else {\n      this.packId ??= null;\n    }\n\n    if ('tags' in sticker) {\n      /**\n       * An array of tags for the sticker\n       * @type {?string[]}\n       */\n      this.tags = sticker.tags.split(', ');\n    } else {\n      this.tags ??= null;\n    }\n\n    if ('available' in sticker) {\n      /**\n       * Whether or not the guild sticker is available\n       * @type {?boolean}\n       */\n      this.available = sticker.available;\n    } else {\n      this.available ??= null;\n    }\n\n    if ('guild_id' in sticker) {\n      /**\n       * The id of the guild that owns this sticker\n       * @type {?Snowflake}\n       */\n      this.guildId = sticker.guild_id;\n    } else {\n      this.guildId ??= null;\n    }\n\n    if ('user' in sticker) {\n      /**\n       * The user that uploaded the guild sticker\n       * @type {?User}\n       */\n      this.user = this.client.users._add(sticker.user);\n    } else {\n      this.user ??= null;\n    }\n\n    if ('sort_value' in sticker) {\n      /**\n       * The standard sticker's sort order within its pack\n       * @type {?number}\n       */\n      this.sortValue = sticker.sort_value;\n    } else {\n      this.sortValue ??= null;\n    }\n  }\n\n  /**\n   * The timestamp the sticker was created at\n   * @type {number}\n   * @readonly\n   */\n  get createdTimestamp() {\n    return SnowflakeUtil.timestampFrom(this.id);\n  }\n\n  /**\n   * The time the sticker was created at\n   * @type {Date}\n   * @readonly\n   */\n  get createdAt() {\n    return new Date(this.createdTimestamp);\n  }\n\n  /**\n   * Whether or not the sticker has been deleted\n   * @type {boolean}\n   * @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091\n   */\n  get deleted() {\n    if (!deprecationEmittedForDeleted) {\n      deprecationEmittedForDeleted = true;\n      process.emitWarning(\n        'Sticker#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.',\n        'DeprecationWarning',\n      );\n    }\n\n    return deletedStickers.has(this);\n  }\n\n  set deleted(value) {\n    if (!deprecationEmittedForDeleted) {\n      deprecationEmittedForDeleted = true;\n      process.emitWarning(\n        'Sticker#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.',\n        'DeprecationWarning',\n      );\n    }\n\n    if (value) deletedStickers.add(this);\n    else deletedStickers.delete(this);\n  }\n\n  /**\n   * Whether this sticker is partial\n   * @type {boolean}\n   * @readonly\n   */\n  get partial() {\n    return !this.type;\n  }\n\n  /**\n   * The guild that owns this sticker\n   * @type {?Guild}\n   * @readonly\n   */\n  get guild() {\n    return this.client.guilds.resolve(this.guildId);\n  }\n\n  /**\n   * A link to the sticker\n   * <info>If the sticker's format is LOTTIE, it returns the URL of the Lottie JSON file.</info>\n   * @type {string}\n   */\n  get url() {\n    return this.client.rest.cdn.Sticker(this.id, this.format);\n  }\n\n  /**\n   * Fetches this sticker.\n   * @returns {Promise<Sticker>}\n   */\n  async fetch() {\n    const data = await this.client.api.stickers(this.id).get();\n    this._patch(data);\n    return this;\n  }\n\n  /**\n   * Fetches the pack this sticker is part of from Discord, if this is a Nitro sticker.\n   * @returns {Promise<?StickerPack>}\n   */\n  async fetchPack() {\n    return (this.packId && (await this.client.fetchPremiumStickerPacks()).get(this.packId)) ?? null;\n  }\n\n  /**\n   * Fetches the user who uploaded this sticker, if this is a guild sticker.\n   * @returns {Promise<?User>}\n   */\n  async fetchUser() {\n    if (this.partial) await this.fetch();\n    if (!this.guildId) throw new Error('NOT_GUILD_STICKER');\n\n    const data = await this.client.api.guilds(this.guildId).stickers(this.id).get();\n    this._patch(data);\n    return this.user;\n  }\n\n  /**\n   * Data for editing a sticker.\n   * @typedef {Object} GuildStickerEditData\n   * @property {string} [name] The name of the sticker\n   * @property {?string} [description] The description of the sticker\n   * @property {string} [tags] The Discord name of a unicode emoji representing the sticker's expression\n   */\n\n  /**\n   * Edits the sticker.\n   * @param {GuildStickerEditData} [data] The new data for the sticker\n   * @param {string} [reason] Reason for editing this sticker\n   * @returns {Promise<Sticker>}\n   * @example\n   * // Update the name of a sticker\n   * sticker.edit({ name: 'new name' })\n   *   .then(s => console.log(`Updated the name of the sticker to ${s.name}`))\n   *   .catch(console.error);\n   */\n  edit(data, reason) {\n    return this.guild.stickers.edit(this, data, reason);\n  }\n\n  /**\n   * Deletes the sticker.\n   * @returns {Promise<Sticker>}\n   * @param {string} [reason] Reason for deleting this sticker\n   * @example\n   * // Delete a message\n   * sticker.delete()\n   *   .then(s => console.log(`Deleted sticker ${s.name}`))\n   *   .catch(console.error);\n   */\n  async delete(reason) {\n    await this.guild.stickers.delete(this, reason);\n    return this;\n  }\n\n  /**\n   * Whether this sticker is the same as another one.\n   * @param {Sticker|APISticker} other The sticker to compare it to\n   * @returns {boolean}\n   */\n  equals(other) {\n    if (other instanceof Sticker) {\n      return (\n        other.id === this.id &&\n        other.description === this.description &&\n        other.type === this.type &&\n        other.format === this.format &&\n        other.name === this.name &&\n        other.packId === this.packId &&\n        other.tags.length === this.tags.length &&\n        other.tags.every(tag => this.tags.includes(tag)) &&\n        other.available === this.available &&\n        other.guildId === this.guildId &&\n        other.sortValue === this.sortValue\n      );\n    } else {\n      return (\n        other.id === this.id &&\n        other.description === this.description &&\n        other.name === this.name &&\n        other.tags === this.tags.join(', ')\n      );\n    }\n  }\n}\n\nexports.Sticker = Sticker;\nexports.deletedStickers = deletedStickers;\n\n/**\n * @external APISticker\n * @see {@link https://discord.com/developers/docs/resources/sticker#sticker-object}\n */\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/Sticker.js?")},"./node_modules/@citizenfx/discord.js/src/structures/StickerPack.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/StickerPack.js ***!
  \**************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ "./node_modules/@discordjs/collection/dist/index.js");\nconst Base = __webpack_require__(/*! ./Base */ "./node_modules/@citizenfx/discord.js/src/structures/Base.js");\nconst { Sticker } = __webpack_require__(/*! ./Sticker */ "./node_modules/@citizenfx/discord.js/src/structures/Sticker.js");\nconst SnowflakeUtil = __webpack_require__(/*! ../util/SnowflakeUtil */ "./node_modules/@citizenfx/discord.js/src/util/SnowflakeUtil.js");\n\n/**\n * Represents a pack of standard stickers.\n * @extends {Base}\n */\nclass StickerPack extends Base {\n  constructor(client, pack) {\n    super(client);\n    /**\n     * The Sticker pack\'s id\n     * @type {Snowflake}\n     */\n    this.id = pack.id;\n\n    /**\n     * The stickers in the pack\n     * @type {Collection<Snowflake, Sticker>}\n     */\n    this.stickers = new Collection(pack.stickers.map(s => [s.id, new Sticker(client, s)]));\n\n    /**\n     * The name of the sticker pack\n     * @type {string}\n     */\n    this.name = pack.name;\n\n    /**\n     * The id of the pack\'s SKU\n     * @type {Snowflake}\n     */\n    this.skuId = pack.sku_id;\n\n    /**\n     * The id of a sticker in the pack which is shown as the pack\'s icon\n     * @type {?Snowflake}\n     */\n    this.coverStickerId = pack.cover_sticker_id ?? null;\n\n    /**\n     * The description of the sticker pack\n     * @type {string}\n     */\n    this.description = pack.description;\n\n    /**\n     * The id of the sticker pack\'s banner image\n     * @type {?Snowflake}\n     */\n    this.bannerId = pack.banner_asset_id ?? null;\n  }\n\n  /**\n   * The timestamp the sticker was created at\n   * @type {number}\n   * @readonly\n   */\n  get createdTimestamp() {\n    return SnowflakeUtil.timestampFrom(this.id);\n  }\n\n  /**\n   * The time the sticker was created at\n   * @type {Date}\n   * @readonly\n   */\n  get createdAt() {\n    return new Date(this.createdTimestamp);\n  }\n\n  /**\n   * The sticker which is shown as the pack\'s icon\n   * @type {?Sticker}\n   * @readonly\n   */\n  get coverSticker() {\n    return this.coverStickerId && this.stickers.get(this.coverStickerId);\n  }\n\n  /**\n   * The URL to this sticker pack\'s banner.\n   * @param {StaticImageURLOptions} [options={}] Options for the Image URL\n   * @returns {?string}\n   */\n  bannerURL({ format, size } = {}) {\n    return this.bannerId && this.client.rest.cdn.StickerPackBanner(this.bannerId, format, size);\n  }\n}\n\nmodule.exports = StickerPack;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/StickerPack.js?')},"./node_modules/@citizenfx/discord.js/src/structures/StoreChannel.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/StoreChannel.js ***!
  \***************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst GuildChannel = __webpack_require__(/*! ./GuildChannel */ \"./node_modules/@citizenfx/discord.js/src/structures/GuildChannel.js\");\n\n/**\n * Represents a guild store channel on Discord.\n * <warn>Store channels are deprecated and will be removed from Discord in March 2022. See\n * [Self-serve Game Selling Deprecation](https://support-dev.discord.com/hc/en-us/articles/4414590563479)\n * for more information.</warn>\n * @extends {GuildChannel}\n */\nclass StoreChannel extends GuildChannel {\n  constructor(guild, data, client) {\n    super(guild, data, client);\n\n    /**\n     * If the guild considers this channel NSFW\n     * @type {boolean}\n     */\n    this.nsfw = Boolean(data.nsfw);\n  }\n\n  _patch(data) {\n    super._patch(data);\n\n    if ('nsfw' in data) {\n      this.nsfw = Boolean(data.nsfw);\n    }\n  }\n\n  /**\n   * Creates an invite to this guild channel.\n   * @param {CreateInviteOptions} [options={}] The options for creating the invite\n   * @returns {Promise<Invite>}\n   * @example\n   * // Create an invite to a channel\n   * channel.createInvite()\n   *   .then(invite => console.log(`Created an invite with a code of ${invite.code}`))\n   *   .catch(console.error);\n   */\n  createInvite(options) {\n    return this.guild.invites.create(this.id, options);\n  }\n\n  /**\n   * Fetches a collection of invites to this guild channel.\n   * Resolves with a collection mapping invites by their codes.\n   * @param {boolean} [cache=true] Whether or not to cache the fetched invites\n   * @returns {Promise<Collection<string, Invite>>}\n   */\n  fetchInvites(cache = true) {\n    return this.guild.invites.fetch({ channelId: this.id, cache });\n  }\n}\n\nmodule.exports = StoreChannel;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/StoreChannel.js?")},"./node_modules/@citizenfx/discord.js/src/structures/Team.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/Team.js ***!
  \*******************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst Base = __webpack_require__(/*! ./Base */ \"./node_modules/@citizenfx/discord.js/src/structures/Base.js\");\nconst TeamMember = __webpack_require__(/*! ./TeamMember */ \"./node_modules/@citizenfx/discord.js/src/structures/TeamMember.js\");\nconst SnowflakeUtil = __webpack_require__(/*! ../util/SnowflakeUtil */ \"./node_modules/@citizenfx/discord.js/src/util/SnowflakeUtil.js\");\n\n/**\n * Represents a Client OAuth2 Application Team.\n * @extends {Base}\n */\nclass Team extends Base {\n  constructor(client, data) {\n    super(client);\n    this._patch(data);\n  }\n\n  _patch(data) {\n    /**\n     * The Team's id\n     * @type {Snowflake}\n     */\n    this.id = data.id;\n\n    if ('name' in data) {\n      /**\n       * The name of the Team\n       * @type {string}\n       */\n      this.name = data.name;\n    }\n\n    if ('icon' in data) {\n      /**\n       * The Team's icon hash\n       * @type {?string}\n       */\n      this.icon = data.icon;\n    } else {\n      this.icon ??= null;\n    }\n\n    if ('owner_user_id' in data) {\n      /**\n       * The Team's owner id\n       * @type {?Snowflake}\n       */\n      this.ownerId = data.owner_user_id;\n    } else {\n      this.ownerId ??= null;\n    }\n    /**\n     * The Team's members\n     * @type {Collection<Snowflake, TeamMember>}\n     */\n    this.members = new Collection();\n\n    for (const memberData of data.members) {\n      const member = new TeamMember(this, memberData);\n      this.members.set(member.id, member);\n    }\n  }\n\n  /**\n   * The owner of this team\n   * @type {?TeamMember}\n   * @readonly\n   */\n  get owner() {\n    return this.members.get(this.ownerId) ?? null;\n  }\n\n  /**\n   * The timestamp the team was created at\n   * @type {number}\n   * @readonly\n   */\n  get createdTimestamp() {\n    return SnowflakeUtil.timestampFrom(this.id);\n  }\n\n  /**\n   * The time the team was created at\n   * @type {Date}\n   * @readonly\n   */\n  get createdAt() {\n    return new Date(this.createdTimestamp);\n  }\n\n  /**\n   * A link to the team's icon.\n   * @param {StaticImageURLOptions} [options={}] Options for the Image URL\n   * @returns {?string}\n   */\n  iconURL({ format, size } = {}) {\n    if (!this.icon) return null;\n    return this.client.rest.cdn.TeamIcon(this.id, this.icon, { format, size });\n  }\n\n  /**\n   * When concatenated with a string, this automatically returns the Team's name instead of the\n   * Team object.\n   * @returns {string}\n   * @example\n   * // Logs: Team name: My Team\n   * console.log(`Team name: ${team}`);\n   */\n  toString() {\n    return this.name;\n  }\n\n  toJSON() {\n    return super.toJSON({ createdTimestamp: true });\n  }\n}\n\nmodule.exports = Team;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/Team.js?")},"./node_modules/@citizenfx/discord.js/src/structures/TeamMember.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/TeamMember.js ***!
  \*************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Base = __webpack_require__(/*! ./Base */ \"./node_modules/@citizenfx/discord.js/src/structures/Base.js\");\nconst { MembershipStates } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\n\n/**\n * Represents a Client OAuth2 Application Team Member.\n * @extends {Base}\n */\nclass TeamMember extends Base {\n  constructor(team, data) {\n    super(team.client);\n\n    /**\n     * The Team this member is part of\n     * @type {Team}\n     */\n    this.team = team;\n\n    this._patch(data);\n  }\n\n  _patch(data) {\n    if ('permissions' in data) {\n      /**\n       * The permissions this Team Member has with regard to the team\n       * @type {string[]}\n       */\n      this.permissions = data.permissions;\n    }\n\n    if ('membership_state' in data) {\n      /**\n       * The permissions this Team Member has with regard to the team\n       * @type {MembershipState}\n       */\n      this.membershipState = MembershipStates[data.membership_state];\n    }\n\n    if ('user' in data) {\n      /**\n       * The user for this Team Member\n       * @type {User}\n       */\n      this.user = this.client.users._add(data.user);\n    }\n  }\n\n  /**\n   * The Team Member's id\n   * @type {Snowflake}\n   * @readonly\n   */\n  get id() {\n    return this.user.id;\n  }\n\n  /**\n   * When concatenated with a string, this automatically returns the team member's mention instead of the\n   * TeamMember object.\n   * @returns {string}\n   * @example\n   * // Logs: Team Member's mention: <@123456789012345678>\n   * console.log(`Team Member's mention: ${teamMember}`);\n   */\n  toString() {\n    return this.user.toString();\n  }\n}\n\nmodule.exports = TeamMember;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/TeamMember.js?")},"./node_modules/@citizenfx/discord.js/src/structures/TextChannel.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/TextChannel.js ***!
  \**************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst BaseGuildTextChannel = __webpack_require__(/*! ./BaseGuildTextChannel */ \"./node_modules/@citizenfx/discord.js/src/structures/BaseGuildTextChannel.js\");\n\n/**\n * Represents a guild text channel on Discord.\n * @extends {BaseGuildTextChannel}\n */\nclass TextChannel extends BaseGuildTextChannel {\n  _patch(data) {\n    super._patch(data);\n\n    if ('rate_limit_per_user' in data) {\n      /**\n       * The rate limit per user (slowmode) for this channel in seconds\n       * @type {number}\n       */\n      this.rateLimitPerUser = data.rate_limit_per_user;\n    }\n  }\n\n  /**\n   * Sets the rate limit per user (slowmode) for this channel.\n   * @param {number} rateLimitPerUser The new rate limit in seconds\n   * @param {string} [reason] Reason for changing the channel's rate limit\n   * @returns {Promise<TextChannel>}\n   */\n  setRateLimitPerUser(rateLimitPerUser, reason) {\n    return this.edit({ rateLimitPerUser }, reason);\n  }\n}\n\nmodule.exports = TextChannel;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/TextChannel.js?")},"./node_modules/@citizenfx/discord.js/src/structures/ThreadChannel.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/ThreadChannel.js ***!
  \****************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Channel } = __webpack_require__(/*! ./Channel */ \"./node_modules/@citizenfx/discord.js/src/structures/Channel.js\");\nconst TextBasedChannel = __webpack_require__(/*! ./interfaces/TextBasedChannel */ \"./node_modules/@citizenfx/discord.js/src/structures/interfaces/TextBasedChannel.js\");\nconst { RangeError } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst MessageManager = __webpack_require__(/*! ../managers/MessageManager */ \"./node_modules/@citizenfx/discord.js/src/managers/MessageManager.js\");\nconst ThreadMemberManager = __webpack_require__(/*! ../managers/ThreadMemberManager */ \"./node_modules/@citizenfx/discord.js/src/managers/ThreadMemberManager.js\");\nconst Permissions = __webpack_require__(/*! ../util/Permissions */ \"./node_modules/@citizenfx/discord.js/src/util/Permissions.js\");\n\n/**\n * Represents a thread channel on Discord.\n * @extends {Channel}\n * @implements {TextBasedChannel}\n */\nclass ThreadChannel extends Channel {\n  constructor(guild, data, client, fromInteraction = false) {\n    super(guild?.client ?? client, data, false);\n\n    /**\n     * The guild the thread is in\n     * @type {Guild}\n     */\n    this.guild = guild;\n\n    /**\n     * The id of the guild the channel is in\n     * @type {Snowflake}\n     */\n    this.guildId = guild?.id ?? data.guild_id;\n\n    /**\n     * A manager of the messages sent to this thread\n     * @type {MessageManager}\n     */\n    this.messages = new MessageManager(this);\n\n    /**\n     * A manager of the members that are part of this thread\n     * @type {ThreadMemberManager}\n     */\n    this.members = new ThreadMemberManager(this);\n    if (data) this._patch(data, fromInteraction);\n  }\n\n  _patch(data, partial = false) {\n    super._patch(data);\n\n    if ('name' in data) {\n      /**\n       * The name of the thread\n       * @type {string}\n       */\n      this.name = data.name;\n    }\n\n    if ('guild_id' in data) {\n      this.guildId = data.guild_id;\n    }\n\n    if ('parent_id' in data) {\n      /**\n       * The id of the parent channel of this thread\n       * @type {?Snowflake}\n       */\n      this.parentId = data.parent_id;\n    } else {\n      this.parentId ??= null;\n    }\n\n    if ('thread_metadata' in data) {\n      /**\n       * Whether the thread is locked\n       * @type {?boolean}\n       */\n      this.locked = data.thread_metadata.locked ?? false;\n\n      /**\n       * Whether members without `MANAGE_THREADS` can invite other members without `MANAGE_THREADS`\n       * <info>Always `null` in public threads</info>\n       * @type {?boolean}\n       */\n      this.invitable = this.type === 'GUILD_PRIVATE_THREAD' ? data.thread_metadata.invitable ?? false : null;\n\n      /**\n       * Whether the thread is archived\n       * @type {?boolean}\n       */\n      this.archived = data.thread_metadata.archived;\n\n      /**\n       * The amount of time (in minutes) after which the thread will automatically archive in case of no recent activity\n       * @type {?number}\n       */\n      this.autoArchiveDuration = data.thread_metadata.auto_archive_duration;\n\n      /**\n       * The timestamp when the thread's archive status was last changed\n       * <info>If the thread was never archived or unarchived, this is the timestamp at which the thread was\n       * created</info>\n       * @type {?number}\n       */\n      this.archiveTimestamp = new Date(data.thread_metadata.archive_timestamp).getTime();\n    } else {\n      this.locked ??= null;\n      this.archived ??= null;\n      this.autoArchiveDuration ??= null;\n      this.archiveTimestamp ??= null;\n      this.invitable ??= null;\n    }\n\n    if ('owner_id' in data) {\n      /**\n       * The id of the member who created this thread\n       * @type {?Snowflake}\n       */\n      this.ownerId = data.owner_id;\n    } else {\n      this.ownerId ??= null;\n    }\n\n    if ('last_message_id' in data) {\n      /**\n       * The last message id sent in this thread, if one was sent\n       * @type {?Snowflake}\n       */\n      this.lastMessageId = data.last_message_id;\n    } else {\n      this.lastMessageId ??= null;\n    }\n\n    if ('last_pin_timestamp' in data) {\n      /**\n       * The timestamp when the last pinned message was pinned, if there was one\n       * @type {?number}\n       */\n      this.lastPinTimestamp = data.last_pin_timestamp ? new Date(data.last_pin_timestamp).getTime() : null;\n    } else {\n      this.lastPinTimestamp ??= null;\n    }\n\n    if ('rate_limit_per_user' in data || !partial) {\n      /**\n       * The rate limit per user (slowmode) for this thread in seconds\n       * @type {?number}\n       */\n      this.rateLimitPerUser = data.rate_limit_per_user ?? 0;\n    } else {\n      this.rateLimitPerUser ??= null;\n    }\n\n    if ('message_count' in data) {\n      /**\n       * The approximate count of messages in this thread\n       * <info>This stops counting at 50. If you need an approximate value higher than that, use\n       * `ThreadChannel#messages.cache.size`</info>\n       * @type {?number}\n       */\n      this.messageCount = data.message_count;\n    } else {\n      this.messageCount ??= null;\n    }\n\n    if ('member_count' in data) {\n      /**\n       * The approximate count of users in this thread\n       * <info>This stops counting at 50. If you need an approximate value higher than that, use\n       * `ThreadChannel#members.cache.size`</info>\n       * @type {?number}\n       */\n      this.memberCount = data.member_count;\n    } else {\n      this.memberCount ??= null;\n    }\n\n    if (data.member && this.client.user) this.members._add({ user_id: this.client.user.id, ...data.member });\n    if (data.messages) for (const message of data.messages) this.messages._add(message);\n  }\n\n  /**\n   * A collection of associated guild member objects of this thread's members\n   * @type {Collection<Snowflake, GuildMember>}\n   * @readonly\n   */\n  get guildMembers() {\n    return this.members.cache.mapValues(member => member.guildMember);\n  }\n\n  /**\n   * The time at which this thread's archive status was last changed\n   * <info>If the thread was never archived or unarchived, this is the time at which the thread was created</info>\n   * @type {?Date}\n   * @readonly\n   */\n  get archivedAt() {\n    if (!this.archiveTimestamp) return null;\n    return new Date(this.archiveTimestamp);\n  }\n\n  /**\n   * The parent channel of this thread\n   * @type {?(NewsChannel|TextChannel)}\n   * @readonly\n   */\n  get parent() {\n    return this.guild.channels.resolve(this.parentId);\n  }\n\n  /**\n   * Makes the client user join the thread.\n   * @returns {Promise<ThreadChannel>}\n   */\n  async join() {\n    await this.members.add('@me');\n    return this;\n  }\n\n  /**\n   * Makes the client user leave the thread.\n   * @returns {Promise<ThreadChannel>}\n   */\n  async leave() {\n    await this.members.remove('@me');\n    return this;\n  }\n\n  /**\n   * Gets the overall set of permissions for a member or role in this thread's parent channel, taking overwrites into\n   * account.\n   * @param {GuildMemberResolvable|RoleResolvable} memberOrRole The member or role to obtain the overall permissions for\n   * @param {boolean} [checkAdmin=true] Whether having `ADMINISTRATOR` will return all permissions\n   * @returns {?Readonly<Permissions>}\n   */\n  permissionsFor(memberOrRole, checkAdmin) {\n    return this.parent?.permissionsFor(memberOrRole, checkAdmin) ?? null;\n  }\n\n  /**\n   * Fetches the owner of this thread. If the thread member object isn't needed,\n   * use {@link ThreadChannel#ownerId} instead.\n   * @param {BaseFetchOptions} [options] The options for fetching the member\n   * @returns {Promise<?ThreadMember>}\n   */\n  async fetchOwner({ cache = true, force = false } = {}) {\n    if (!force) {\n      const existing = this.members.cache.get(this.ownerId);\n      if (existing) return existing;\n    }\n\n    // We cannot fetch a single thread member, as of this commit's date, Discord API responds with 405\n    const members = await this.members.fetch(cache);\n    return members.get(this.ownerId) ?? null;\n  }\n\n  /**\n   * Fetches the message that started this thread, if any.\n   * <info>This only works when the thread started from a message in the parent channel, otherwise the promise will\n   * reject. If you just need the id of that message, use {@link ThreadChannel#id} instead.</info>\n   * @param {BaseFetchOptions} [options] Additional options for this fetch\n   * @returns {Promise<Message>}\n   */\n  fetchStarterMessage(options) {\n    return this.parent.messages.fetch(this.id, options);\n  }\n\n  /**\n   * The options used to edit a thread channel\n   * @typedef {Object} ThreadEditData\n   * @property {string} [name] The new name for the thread\n   * @property {boolean} [archived] Whether the thread is archived\n   * @property {ThreadAutoArchiveDuration} [autoArchiveDuration] The amount of time (in minutes) after which the thread\n   * should automatically archive in case of no recent activity\n   * @property {number} [rateLimitPerUser] The rate limit per user (slowmode) for the thread in seconds\n   * @property {boolean} [locked] Whether the thread is locked\n   * @property {boolean} [invitable] Whether non-moderators can add other non-moderators to a thread\n   * <info>Can only be edited on `GUILD_PRIVATE_THREAD`</info>\n   */\n\n  /**\n   * Edits this thread.\n   * @param {ThreadEditData} data The new data for this thread\n   * @param {string} [reason] Reason for editing this thread\n   * @returns {Promise<ThreadChannel>}\n   * @example\n   * // Edit a thread\n   * thread.edit({ name: 'new-thread' })\n   *   .then(editedThread => console.log(editedThread))\n   *   .catch(console.error);\n   */\n  async edit(data, reason) {\n    let autoArchiveDuration = data.autoArchiveDuration;\n    if (data.autoArchiveDuration === 'MAX') {\n      autoArchiveDuration = 1440;\n      if (this.guild.features.includes('SEVEN_DAY_THREAD_ARCHIVE')) {\n        autoArchiveDuration = 10080;\n      } else if (this.guild.features.includes('THREE_DAY_THREAD_ARCHIVE')) {\n        autoArchiveDuration = 4320;\n      }\n    }\n    const newData = await this.client.api.channels(this.id).patch({\n      data: {\n        name: (data.name ?? this.name).trim(),\n        archived: data.archived,\n        auto_archive_duration: autoArchiveDuration,\n        rate_limit_per_user: data.rateLimitPerUser,\n        locked: data.locked,\n        invitable: this.type === 'GUILD_PRIVATE_THREAD' ? data.invitable : undefined,\n      },\n      reason,\n    });\n\n    return this.client.actions.ChannelUpdate.handle(newData).updated;\n  }\n\n  /**\n   * Sets whether the thread is archived.\n   * @param {boolean} [archived=true] Whether the thread is archived\n   * @param {string} [reason] Reason for archiving or unarchiving\n   * @returns {Promise<ThreadChannel>}\n   * @example\n   * // Archive the thread\n   * thread.setArchived(true)\n   *   .then(newThread => console.log(`Thread is now ${newThread.archived ? 'archived' : 'active'}`))\n   *   .catch(console.error);\n   */\n  setArchived(archived = true, reason) {\n    return this.edit({ archived }, reason);\n  }\n\n  /**\n   * Sets the duration after which the thread will automatically archive in case of no recent activity.\n   * @param {ThreadAutoArchiveDuration} autoArchiveDuration The amount of time (in minutes) after which the thread\n   * should automatically archive in case of no recent activity\n   * @param {string} [reason] Reason for changing the auto archive duration\n   * @returns {Promise<ThreadChannel>}\n   * @example\n   * // Set the thread's auto archive time to 1 hour\n   * thread.setAutoArchiveDuration(60)\n   *   .then(newThread => {\n   *     console.log(`Thread will now archive after ${newThread.autoArchiveDuration} minutes of inactivity`);\n   *    });\n   *   .catch(console.error);\n   */\n  setAutoArchiveDuration(autoArchiveDuration, reason) {\n    return this.edit({ autoArchiveDuration }, reason);\n  }\n\n  /**\n   * Sets whether members without the `MANAGE_THREADS` permission can invite other members without the\n   * `MANAGE_THREADS` permission to this thread.\n   * @param {boolean} [invitable=true] Whether non-moderators can invite non-moderators to this thread\n   * @param {string} [reason] Reason for changing invite\n   * @returns {Promise<ThreadChannel>}\n   */\n  setInvitable(invitable = true, reason) {\n    if (this.type !== 'GUILD_PRIVATE_THREAD') return Promise.reject(new RangeError('THREAD_INVITABLE_TYPE', this.type));\n    return this.edit({ invitable }, reason);\n  }\n\n  /**\n   * Sets whether the thread can be **unarchived** by anyone with `SEND_MESSAGES` permission.\n   * When a thread is locked only members with `MANAGE_THREADS` can unarchive it.\n   * @param {boolean} [locked=true] Whether the thread is locked\n   * @param {string} [reason] Reason for locking or unlocking the thread\n   * @returns {Promise<ThreadChannel>}\n   * @example\n   * // Set the thread to locked\n   * thread.setLocked(true)\n   *   .then(newThread => console.log(`Thread is now ${newThread.locked ? 'locked' : 'unlocked'}`))\n   *   .catch(console.error);\n   */\n  setLocked(locked = true, reason) {\n    return this.edit({ locked }, reason);\n  }\n\n  /**\n   * Sets a new name for this thread.\n   * @param {string} name The new name for the thread\n   * @param {string} [reason] Reason for changing the thread's name\n   * @returns {Promise<ThreadChannel>}\n   * @example\n   * // Change the thread's name\n   * thread.setName('not_general')\n   *   .then(newThread => console.log(`Thread's new name is ${newThread.name}`))\n   *   .catch(console.error);\n   */\n  setName(name, reason) {\n    return this.edit({ name }, reason);\n  }\n\n  /**\n   * Sets the rate limit per user (slowmode) for this thread.\n   * @param {number} rateLimitPerUser The new rate limit in seconds\n   * @param {string} [reason] Reason for changing the thread's rate limit\n   * @returns {Promise<ThreadChannel>}\n   */\n  setRateLimitPerUser(rateLimitPerUser, reason) {\n    return this.edit({ rateLimitPerUser }, reason);\n  }\n\n  /**\n   * Whether the client user is a member of the thread.\n   * @type {boolean}\n   * @readonly\n   */\n  get joined() {\n    return this.members.cache.has(this.client.user?.id);\n  }\n\n  /**\n   * Whether the thread is editable by the client user (name, archived, autoArchiveDuration)\n   * @type {boolean}\n   * @readonly\n   */\n  get editable() {\n    return (\n      (this.ownerId === this.client.user.id && (this.type !== 'GUILD_PRIVATE_THREAD' || this.joined)) || this.manageable\n    );\n  }\n\n  /**\n   * Whether the thread is joinable by the client user\n   * @type {boolean}\n   * @readonly\n   */\n  get joinable() {\n    return (\n      !this.archived &&\n      !this.joined &&\n      this.permissionsFor(this.client.user)?.has(\n        this.type === 'GUILD_PRIVATE_THREAD' ? Permissions.FLAGS.MANAGE_THREADS : Permissions.FLAGS.VIEW_CHANNEL,\n        false,\n      )\n    );\n  }\n\n  /**\n   * Whether the thread is manageable by the client user, for deleting or editing rateLimitPerUser or locked.\n   * @type {boolean}\n   * @readonly\n   */\n  get manageable() {\n    const permissions = this.permissionsFor(this.client.user);\n    if (!permissions) return false;\n    // This flag allows managing even if timed out\n    if (permissions.has(Permissions.FLAGS.ADMINISTRATOR, false)) return true;\n\n    return (\n      this.guild.me.communicationDisabledUntilTimestamp < Date.now() &&\n      permissions.has(Permissions.FLAGS.MANAGE_THREADS, false)\n    );\n  }\n\n  /**\n   * Whether the thread is viewable by the client user\n   * @type {boolean}\n   * @readonly\n   */\n  get viewable() {\n    if (this.client.user.id === this.guild.ownerId) return true;\n    const permissions = this.permissionsFor(this.client.user);\n    if (!permissions) return false;\n    return permissions.has(Permissions.FLAGS.VIEW_CHANNEL, false);\n  }\n\n  /**\n   * Whether the client user can send messages in this thread\n   * @type {boolean}\n   * @readonly\n   */\n  get sendable() {\n    const permissions = this.permissionsFor(this.client.user);\n    if (!permissions) return false;\n    // This flag allows sending even if timed out\n    if (permissions.has(Permissions.FLAGS.ADMINISTRATOR, false)) return true;\n\n    return (\n      !(this.archived && this.locked && !this.manageable) &&\n      (this.type !== 'GUILD_PRIVATE_THREAD' || this.joined || this.manageable) &&\n      permissions.has(Permissions.FLAGS.SEND_MESSAGES_IN_THREADS, false) &&\n      this.guild.me.communicationDisabledUntilTimestamp < Date.now()\n    );\n  }\n\n  /**\n   * Whether the thread is unarchivable by the client user\n   * @type {boolean}\n   * @readonly\n   */\n  get unarchivable() {\n    return this.archived && (this.locked ? this.manageable : this.sendable);\n  }\n\n  /**\n   * Deletes this thread.\n   * @param {string} [reason] Reason for deleting this thread\n   * @returns {Promise<ThreadChannel>}\n   * @example\n   * // Delete the thread\n   * thread.delete('cleaning out old threads')\n   *   .then(deletedThread => console.log(deletedThread))\n   *   .catch(console.error);\n   */\n  async delete(reason) {\n    await this.client.api.channels(this.id).delete({ reason });\n    return this;\n  }\n\n  // These are here only for documentation purposes - they are implemented by TextBasedChannel\n  /* eslint-disable no-empty-function */\n  get lastMessage() {}\n  get lastPinAt() {}\n  send() {}\n  sendTyping() {}\n  createMessageCollector() {}\n  awaitMessages() {}\n  createMessageComponentCollector() {}\n  awaitMessageComponent() {}\n  bulkDelete() {}\n}\n\nTextBasedChannel.applyToClass(ThreadChannel, true);\n\nmodule.exports = ThreadChannel;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/ThreadChannel.js?")},"./node_modules/@citizenfx/discord.js/src/structures/ThreadMember.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/ThreadMember.js ***!
  \***************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Base = __webpack_require__(/*! ./Base */ \"./node_modules/@citizenfx/discord.js/src/structures/Base.js\");\nconst ThreadMemberFlags = __webpack_require__(/*! ../util/ThreadMemberFlags */ \"./node_modules/@citizenfx/discord.js/src/util/ThreadMemberFlags.js\");\n\n/**\n * Represents a Member for a Thread.\n * @extends {Base}\n */\nclass ThreadMember extends Base {\n  constructor(thread, data) {\n    super(thread.client);\n\n    /**\n     * The thread that this member is a part of\n     * @type {ThreadChannel}\n     */\n    this.thread = thread;\n\n    /**\n     * The timestamp the member last joined the thread at\n     * @type {?number}\n     */\n    this.joinedTimestamp = null;\n\n    /**\n     * The id of the thread member\n     * @type {Snowflake}\n     */\n    this.id = data.user_id;\n\n    this._patch(data);\n  }\n\n  _patch(data) {\n    if ('join_timestamp' in data) this.joinedTimestamp = new Date(data.join_timestamp).getTime();\n\n    if ('flags' in data) {\n      /**\n       * The flags for this thread member\n       * @type {ThreadMemberFlags}\n       */\n      this.flags = new ThreadMemberFlags(data.flags).freeze();\n    }\n  }\n\n  /**\n   * The guild member associated with this thread member\n   * @type {?GuildMember}\n   * @readonly\n   */\n  get guildMember() {\n    return this.thread.guild.members.resolve(this.id);\n  }\n\n  /**\n   * The last time this member joined the thread\n   * @type {?Date}\n   * @readonly\n   */\n  get joinedAt() {\n    return this.joinedTimestamp ? new Date(this.joinedTimestamp) : null;\n  }\n\n  /**\n   * The user associated with this thread member\n   * @type {?User}\n   * @readonly\n   */\n  get user() {\n    return this.client.users.resolve(this.id);\n  }\n\n  /**\n   * Whether the client user can manage this thread member\n   * @type {boolean}\n   * @readonly\n   */\n  get manageable() {\n    return !this.thread.archived && this.thread.editable;\n  }\n\n  /**\n   * Removes this member from the thread.\n   * @param {string} [reason] Reason for removing the member\n   * @returns {ThreadMember}\n   */\n  async remove(reason) {\n    await this.thread.members.remove(this.id, reason);\n    return this;\n  }\n}\n\nmodule.exports = ThreadMember;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/ThreadMember.js?")},"./node_modules/@citizenfx/discord.js/src/structures/Typing.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/Typing.js ***!
  \*********************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Base = __webpack_require__(/*! ./Base */ \"./node_modules/@citizenfx/discord.js/src/structures/Base.js\");\n\n/**\n * Represents a typing state for a user in a channel.\n * @extends {Base}\n */\nclass Typing extends Base {\n  constructor(channel, user, data) {\n    super(channel.client);\n\n    /**\n     * The channel the status is from\n     * @type {TextBasedChannels}\n     */\n    this.channel = channel;\n\n    /**\n     * The user who is typing\n     * @type {User}\n     */\n    this.user = user;\n\n    this._patch(data);\n  }\n\n  _patch(data) {\n    if ('timestamp' in data) {\n      /**\n       * The UNIX timestamp in milliseconds the user started typing at\n       * @type {number}\n       */\n      this.startedTimestamp = data.timestamp * 1_000;\n    }\n  }\n\n  /**\n   * Indicates whether the status is received from a guild.\n   * @returns {boolean}\n   */\n  inGuild() {\n    return this.guild !== null;\n  }\n\n  /**\n   * The time the user started typing at\n   * @type {Date}\n   * @readonly\n   */\n  get startedAt() {\n    return new Date(this.startedTimestamp);\n  }\n\n  /**\n   * The guild the status is from\n   * @type {?Guild}\n   * @readonly\n   */\n  get guild() {\n    return this.channel.guild ?? null;\n  }\n\n  /**\n   * The member who is typing\n   * @type {?GuildMember}\n   * @readonly\n   */\n  get member() {\n    return this.guild?.members.resolve(this.user) ?? null;\n  }\n}\n\nmodule.exports = Typing;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/Typing.js?")},"./node_modules/@citizenfx/discord.js/src/structures/User.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/User.js ***!
  \*******************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Base = __webpack_require__(/*! ./Base */ \"./node_modules/@citizenfx/discord.js/src/structures/Base.js\");\nconst TextBasedChannel = __webpack_require__(/*! ./interfaces/TextBasedChannel */ \"./node_modules/@citizenfx/discord.js/src/structures/interfaces/TextBasedChannel.js\");\nconst { Error } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst SnowflakeUtil = __webpack_require__(/*! ../util/SnowflakeUtil */ \"./node_modules/@citizenfx/discord.js/src/util/SnowflakeUtil.js\");\nconst UserFlags = __webpack_require__(/*! ../util/UserFlags */ \"./node_modules/@citizenfx/discord.js/src/util/UserFlags.js\");\n\n/**\n * Represents a user on Discord.\n * @implements {TextBasedChannel}\n * @extends {Base}\n */\nclass User extends Base {\n  constructor(client, data) {\n    super(client);\n\n    /**\n     * The user's id\n     * @type {Snowflake}\n     */\n    this.id = data.id;\n\n    this.bot = null;\n\n    this.system = null;\n\n    this.flags = null;\n\n    this._patch(data);\n  }\n\n  _patch(data) {\n    if ('username' in data) {\n      /**\n       * The username of the user\n       * @type {?string}\n       */\n      this.username = data.username;\n    } else {\n      this.username ??= null;\n    }\n\n    if ('bot' in data) {\n      /**\n       * Whether or not the user is a bot\n       * @type {?boolean}\n       */\n      this.bot = Boolean(data.bot);\n    } else if (!this.partial && typeof this.bot !== 'boolean') {\n      this.bot = false;\n    }\n\n    if ('discriminator' in data) {\n      /**\n       * A discriminator based on username for the user\n       * @type {?string}\n       */\n      this.discriminator = data.discriminator;\n    } else {\n      this.discriminator ??= null;\n    }\n\n    if ('avatar' in data) {\n      /**\n       * The user avatar's hash\n       * @type {?string}\n       */\n      this.avatar = data.avatar;\n    } else {\n      this.avatar ??= null;\n    }\n\n    if ('banner' in data) {\n      /**\n       * The user banner's hash\n       * <info>The user must be force fetched for this property to be present or be updated</info>\n       * @type {?string}\n       */\n      this.banner = data.banner;\n    } else if (this.banner !== null) {\n      this.banner ??= undefined;\n    }\n\n    if ('accent_color' in data) {\n      /**\n       * The base 10 accent color of the user's banner\n       * <info>The user must be force fetched for this property to be present or be updated</info>\n       * @type {?number}\n       */\n      this.accentColor = data.accent_color;\n    } else if (this.accentColor !== null) {\n      this.accentColor ??= undefined;\n    }\n\n    if ('system' in data) {\n      /**\n       * Whether the user is an Official Discord System user (part of the urgent message system)\n       * @type {?boolean}\n       */\n      this.system = Boolean(data.system);\n    } else if (!this.partial && typeof this.system !== 'boolean') {\n      this.system = false;\n    }\n\n    if ('public_flags' in data) {\n      /**\n       * The flags for this user\n       * @type {?UserFlags}\n       */\n      this.flags = new UserFlags(data.public_flags);\n    }\n  }\n\n  /**\n   * Whether this User is a partial\n   * @type {boolean}\n   * @readonly\n   */\n  get partial() {\n    return typeof this.username !== 'string';\n  }\n\n  /**\n   * The timestamp the user was created at\n   * @type {number}\n   * @readonly\n   */\n  get createdTimestamp() {\n    return SnowflakeUtil.timestampFrom(this.id);\n  }\n\n  /**\n   * The time the user was created at\n   * @type {Date}\n   * @readonly\n   */\n  get createdAt() {\n    return new Date(this.createdTimestamp);\n  }\n\n  /**\n   * A link to the user's avatar.\n   * @param {ImageURLOptions} [options={}] Options for the Image URL\n   * @returns {?string}\n   */\n  avatarURL({ format, size, dynamic } = {}) {\n    if (!this.avatar) return null;\n    return this.client.rest.cdn.Avatar(this.id, this.avatar, format, size, dynamic);\n  }\n\n  /**\n   * A link to the user's default avatar\n   * @type {string}\n   * @readonly\n   */\n  get defaultAvatarURL() {\n    return this.client.rest.cdn.DefaultAvatar(this.discriminator % 5);\n  }\n\n  /**\n   * A link to the user's avatar if they have one.\n   * Otherwise a link to their default avatar will be returned.\n   * @param {ImageURLOptions} [options={}] Options for the Image URL\n   * @returns {string}\n   */\n  displayAvatarURL(options) {\n    return this.avatarURL(options) ?? this.defaultAvatarURL;\n  }\n\n  /**\n   * The hexadecimal version of the user accent color, with a leading hash\n   * <info>The user must be force fetched for this property to be present</info>\n   * @type {?string}\n   * @readonly\n   */\n  get hexAccentColor() {\n    if (typeof this.accentColor !== 'number') return this.accentColor;\n    return `#${this.accentColor.toString(16).padStart(6, '0')}`;\n  }\n\n  /**\n   * A link to the user's banner.\n   * <info>This method will throw an error if called before the user is force fetched.\n   * See {@link User#banner} for more info</info>\n   * @param {ImageURLOptions} [options={}] Options for the Image URL\n   * @returns {?string}\n   */\n  bannerURL({ format, size, dynamic } = {}) {\n    if (typeof this.banner === 'undefined') throw new Error('USER_BANNER_NOT_FETCHED');\n    if (!this.banner) return null;\n    return this.client.rest.cdn.Banner(this.id, this.banner, format, size, dynamic);\n  }\n\n  /**\n   * The Discord \"tag\" (e.g. `hydrabolt#0001`) for this user\n   * @type {?string}\n   * @readonly\n   */\n  get tag() {\n    return typeof this.username === 'string' ? `${this.username}#${this.discriminator}` : null;\n  }\n\n  /**\n   * The DM between the client's user and this user\n   * @type {?DMChannel}\n   * @readonly\n   */\n  get dmChannel() {\n    return this.client.users.dmChannel(this.id);\n  }\n\n  /**\n   * Creates a DM channel between the client and the user.\n   * @param {boolean} [force=false] Whether to skip the cache check and request the API\n   * @returns {Promise<DMChannel>}\n   */\n  createDM(force = false) {\n    return this.client.users.createDM(this.id, force);\n  }\n\n  /**\n   * Deletes a DM channel (if one exists) between the client and the user. Resolves with the channel if successful.\n   * @returns {Promise<DMChannel>}\n   */\n  deleteDM() {\n    return this.client.users.deleteDM(this.id);\n  }\n\n  /**\n   * Checks if the user is equal to another.\n   * It compares id, username, discriminator, avatar, banner, accent color, and bot flags.\n   * It is recommended to compare equality by using `user.id === user2.id` unless you want to compare all properties.\n   * @param {User} user User to compare with\n   * @returns {boolean}\n   */\n  equals(user) {\n    return (\n      user &&\n      this.id === user.id &&\n      this.username === user.username &&\n      this.discriminator === user.discriminator &&\n      this.avatar === user.avatar &&\n      this.flags?.bitfield === user.flags?.bitfield &&\n      this.banner === user.banner &&\n      this.accentColor === user.accentColor\n    );\n  }\n\n  /**\n   * Compares the user with an API user object\n   * @param {APIUser} user The API user object to compare\n   * @returns {boolean}\n   * @private\n   */\n  _equals(user) {\n    return (\n      user &&\n      this.id === user.id &&\n      this.username === user.username &&\n      this.discriminator === user.discriminator &&\n      this.avatar === user.avatar &&\n      this.flags?.bitfield === user.public_flags &&\n      ('banner' in user ? this.banner === user.banner : true) &&\n      ('accent_color' in user ? this.accentColor === user.accent_color : true)\n    );\n  }\n\n  /**\n   * Fetches this user's flags.\n   * @param {boolean} [force=false] Whether to skip the cache check and request the API\n   * @returns {Promise<UserFlags>}\n   */\n  fetchFlags(force = false) {\n    return this.client.users.fetchFlags(this.id, { force });\n  }\n\n  /**\n   * Fetches this user.\n   * @param {boolean} [force=true] Whether to skip the cache check and request the API\n   * @returns {Promise<User>}\n   */\n  fetch(force = true) {\n    return this.client.users.fetch(this.id, { force });\n  }\n\n  /**\n   * When concatenated with a string, this automatically returns the user's mention instead of the User object.\n   * @returns {string}\n   * @example\n   * // Logs: Hello from <@123456789012345678>!\n   * console.log(`Hello from ${user}!`);\n   */\n  toString() {\n    return `<@${this.id}>`;\n  }\n\n  toJSON(...props) {\n    const json = super.toJSON(\n      {\n        createdTimestamp: true,\n        defaultAvatarURL: true,\n        hexAccentColor: true,\n        tag: true,\n      },\n      ...props,\n    );\n    json.avatarURL = this.avatarURL();\n    json.displayAvatarURL = this.displayAvatarURL();\n    json.bannerURL = this.banner ? this.bannerURL() : this.banner;\n    return json;\n  }\n\n  // These are here only for documentation purposes - they are implemented by TextBasedChannel\n  /* eslint-disable no-empty-function */\n  send() {}\n}\n\nTextBasedChannel.applyToClass(User);\n\nmodule.exports = User;\n\n/**\n * @external APIUser\n * @see {@link https://discord.com/developers/docs/resources/user#user-object}\n */\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/User.js?")},"./node_modules/@citizenfx/discord.js/src/structures/UserContextMenuInteraction.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/UserContextMenuInteraction.js ***!
  \*****************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst ContextMenuInteraction = __webpack_require__(/*! ./ContextMenuInteraction */ \"./node_modules/@citizenfx/discord.js/src/structures/ContextMenuInteraction.js\");\n\n/**\n * Represents a user context menu interaction.\n * @extends {ContextMenuInteraction}\n */\nclass UserContextMenuInteraction extends ContextMenuInteraction {\n  /**\n   * The user this interaction was sent from\n   * @type {User}\n   * @readonly\n   */\n  get targetUser() {\n    return this.options.getUser('user');\n  }\n\n  /**\n   * The member this interaction was sent from\n   * @type {?(GuildMember|APIGuildMember)}\n   * @readonly\n   */\n  get targetMember() {\n    return this.options.getMember('user');\n  }\n}\n\nmodule.exports = UserContextMenuInteraction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/UserContextMenuInteraction.js?")},"./node_modules/@citizenfx/discord.js/src/structures/VoiceChannel.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/VoiceChannel.js ***!
  \***************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst process = __webpack_require__(/*! node:process */ \"node:process\");\nconst BaseGuildVoiceChannel = __webpack_require__(/*! ./BaseGuildVoiceChannel */ \"./node_modules/@citizenfx/discord.js/src/structures/BaseGuildVoiceChannel.js\");\nconst Permissions = __webpack_require__(/*! ../util/Permissions */ \"./node_modules/@citizenfx/discord.js/src/util/Permissions.js\");\n\nlet deprecationEmittedForEditable = false;\n\n/**\n * Represents a guild voice channel on Discord.\n * @extends {BaseGuildVoiceChannel}\n */\nclass VoiceChannel extends BaseGuildVoiceChannel {\n  /**\n   * Whether the channel is editable by the client user\n   * @type {boolean}\n   * @readonly\n   * @deprecated Use {@link VoiceChannel#manageable} instead\n   */\n  get editable() {\n    if (!deprecationEmittedForEditable) {\n      process.emitWarning(\n        'The VoiceChannel#editable getter is deprecated. Use VoiceChannel#manageable instead.',\n        'DeprecationWarning',\n      );\n\n      deprecationEmittedForEditable = true;\n    }\n\n    return this.manageable;\n  }\n\n  /**\n   * Whether the channel is joinable by the client user\n   * @type {boolean}\n   * @readonly\n   */\n  get joinable() {\n    if (!super.joinable) return false;\n    if (this.full && !this.permissionsFor(this.client.user).has(Permissions.FLAGS.MOVE_MEMBERS, false)) return false;\n    return true;\n  }\n\n  /**\n   * Checks if the client has permission to send audio to the voice channel\n   * @type {boolean}\n   * @readonly\n   */\n  get speakable() {\n    const permissions = this.permissionsFor(this.client.user);\n    if (!permissions) return false;\n    // This flag allows speaking even if timed out\n    if (permissions.has(Permissions.FLAGS.ADMINISTRATOR, false)) return true;\n\n    return (\n      this.guild.me.communicationDisabledUntilTimestamp < Date.now() && permissions.has(Permissions.FLAGS.SPEAK, false)\n    );\n  }\n\n  /**\n   * Sets the bitrate of the channel.\n   * @param {number} bitrate The new bitrate\n   * @param {string} [reason] Reason for changing the channel's bitrate\n   * @returns {Promise<VoiceChannel>}\n   * @example\n   * // Set the bitrate of a voice channel\n   * voiceChannel.setBitrate(48_000)\n   *   .then(vc => console.log(`Set bitrate to ${vc.bitrate}bps for ${vc.name}`))\n   *   .catch(console.error);\n   */\n  setBitrate(bitrate, reason) {\n    return this.edit({ bitrate }, reason);\n  }\n\n  /**\n   * Sets the user limit of the channel.\n   * @param {number} userLimit The new user limit\n   * @param {string} [reason] Reason for changing the user limit\n   * @returns {Promise<VoiceChannel>}\n   * @example\n   * // Set the user limit of a voice channel\n   * voiceChannel.setUserLimit(42)\n   *   .then(vc => console.log(`Set user limit to ${vc.userLimit} for ${vc.name}`))\n   *   .catch(console.error);\n   */\n  setUserLimit(userLimit, reason) {\n    return this.edit({ userLimit }, reason);\n  }\n\n  /**\n   * Sets the RTC region of the channel.\n   * @name VoiceChannel#setRTCRegion\n   * @param {?string} region The new region of the channel. Set to `null` to remove a specific region for the channel\n   * @returns {Promise<VoiceChannel>}\n   * @example\n   * // Set the RTC region to europe\n   * voiceChannel.setRTCRegion('europe');\n   * @example\n   * // Remove a fixed region for this channel - let Discord decide automatically\n   * voiceChannel.setRTCRegion(null);\n   */\n}\n\nmodule.exports = VoiceChannel;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/VoiceChannel.js?")},"./node_modules/@citizenfx/discord.js/src/structures/VoiceRegion.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/VoiceRegion.js ***!
  \**************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Util = __webpack_require__(/*! ../util/Util */ "./node_modules/@citizenfx/discord.js/src/util/Util.js");\n\n/**\n * Represents a Discord voice region for guilds.\n */\nclass VoiceRegion {\n  constructor(data) {\n    /**\n     * The region\'s id\n     * @type {string}\n     */\n    this.id = data.id;\n\n    /**\n     * Name of the region\n     * @type {string}\n     */\n    this.name = data.name;\n\n    /**\n     * Whether the region is VIP-only\n     * @type {boolean}\n     */\n    this.vip = data.vip;\n\n    /**\n     * Whether the region is deprecated\n     * @type {boolean}\n     */\n    this.deprecated = data.deprecated;\n\n    /**\n     * Whether the region is optimal\n     * @type {boolean}\n     */\n    this.optimal = data.optimal;\n\n    /**\n     * Whether the region is custom\n     * @type {boolean}\n     */\n    this.custom = data.custom;\n  }\n\n  toJSON() {\n    return Util.flatten(this);\n  }\n}\n\nmodule.exports = VoiceRegion;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/VoiceRegion.js?')},"./node_modules/@citizenfx/discord.js/src/structures/VoiceState.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/VoiceState.js ***!
  \*************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Base = __webpack_require__(/*! ./Base */ \"./node_modules/@citizenfx/discord.js/src/structures/Base.js\");\nconst { Error, TypeError } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\n\n/**\n * Represents the voice state for a Guild Member.\n */\nclass VoiceState extends Base {\n  constructor(guild, data) {\n    super(guild.client);\n    /**\n     * The guild of this voice state\n     * @type {Guild}\n     */\n    this.guild = guild;\n    /**\n     * The id of the member of this voice state\n     * @type {Snowflake}\n     */\n    this.id = data.user_id;\n    this._patch(data);\n  }\n\n  _patch(data) {\n    if ('deaf' in data) {\n      /**\n       * Whether this member is deafened server-wide\n       * @type {?boolean}\n       */\n      this.serverDeaf = data.deaf;\n    } else {\n      this.serverDeaf ??= null;\n    }\n\n    if ('mute' in data) {\n      /**\n       * Whether this member is muted server-wide\n       * @type {?boolean}\n       */\n      this.serverMute = data.mute;\n    } else {\n      this.serverMute ??= null;\n    }\n\n    if ('self_deaf' in data) {\n      /**\n       * Whether this member is self-deafened\n       * @type {?boolean}\n       */\n      this.selfDeaf = data.self_deaf;\n    } else {\n      this.selfDeaf ??= null;\n    }\n\n    if ('self_mute' in data) {\n      /**\n       * Whether this member is self-muted\n       * @type {?boolean}\n       */\n      this.selfMute = data.self_mute;\n    } else {\n      this.selfMute ??= null;\n    }\n\n    if ('self_video' in data) {\n      /**\n       * Whether this member's camera is enabled\n       * @type {?boolean}\n       */\n      this.selfVideo = data.self_video;\n    } else {\n      this.selfVideo ??= null;\n    }\n\n    if ('session_id' in data) {\n      /**\n       * The session id for this member's connection\n       * @type {?string}\n       */\n      this.sessionId = data.session_id;\n    } else {\n      this.sessionId ??= null;\n    }\n\n    // The self_stream is property is omitted if false, check for another property\n    // here to avoid incorrectly clearing this when partial data is specified\n    if ('self_video' in data) {\n      /**\n       * Whether this member is streaming using \"Screen Share\"\n       * @type {boolean}\n       */\n      this.streaming = data.self_stream ?? false;\n    } else {\n      this.streaming ??= null;\n    }\n\n    if ('channel_id' in data) {\n      /**\n       * The {@link VoiceChannel} or {@link StageChannel} id the member is in\n       * @type {?Snowflake}\n       */\n      this.channelId = data.channel_id;\n    } else {\n      this.channelId ??= null;\n    }\n\n    if ('suppress' in data) {\n      /**\n       * Whether this member is suppressed from speaking. This property is specific to stage channels only.\n       * @type {boolean}\n       */\n      this.suppress = data.suppress;\n    }\n\n    if ('request_to_speak_timestamp' in data) {\n      /**\n       * The time at which the member requested to speak. This property is specific to stage channels only.\n       * @type {?number}\n       */\n      this.requestToSpeakTimestamp = new Date(data.request_to_speak_timestamp).getTime();\n    } else {\n      this.requestToSpeakTimestamp ??= null;\n    }\n\n    return this;\n  }\n\n  /**\n   * The member that this voice state belongs to\n   * @type {?GuildMember}\n   * @readonly\n   */\n  get member() {\n    return this.guild.members.cache.get(this.id) ?? null;\n  }\n\n  /**\n   * The channel that the member is connected to\n   * @type {?(VoiceChannel|StageChannel)}\n   * @readonly\n   */\n  get channel() {\n    return this.guild.channels.cache.get(this.channelId) ?? null;\n  }\n\n  /**\n   * Whether this member is either self-deafened or server-deafened\n   * @type {?boolean}\n   * @readonly\n   */\n  get deaf() {\n    return this.serverDeaf || this.selfDeaf;\n  }\n\n  /**\n   * Whether this member is either self-muted or server-muted\n   * @type {?boolean}\n   * @readonly\n   */\n  get mute() {\n    return this.serverMute || this.selfMute;\n  }\n\n  /**\n   * Mutes/unmutes the member of this voice state.\n   * @param {boolean} [mute=true] Whether or not the member should be muted\n   * @param {string} [reason] Reason for muting or unmuting\n   * @returns {Promise<GuildMember>}\n   */\n  setMute(mute = true, reason) {\n    return this.guild.members.edit(this.id, { mute }, reason);\n  }\n\n  /**\n   * Deafens/undeafens the member of this voice state.\n   * @param {boolean} [deaf=true] Whether or not the member should be deafened\n   * @param {string} [reason] Reason for deafening or undeafening\n   * @returns {Promise<GuildMember>}\n   */\n  setDeaf(deaf = true, reason) {\n    return this.guild.members.edit(this.id, { deaf }, reason);\n  }\n\n  /**\n   * Disconnects the member from the channel.\n   * @param {string} [reason] Reason for disconnecting the member from the channel\n   * @returns {Promise<GuildMember>}\n   */\n  disconnect(reason) {\n    return this.setChannel(null, reason);\n  }\n\n  /**\n   * Moves the member to a different channel, or disconnects them from the one they're in.\n   * @param {GuildVoiceChannelResolvable|null} channel Channel to move the member to, or `null` if you want to\n   * disconnect them from voice.\n   * @param {string} [reason] Reason for moving member to another channel or disconnecting\n   * @returns {Promise<GuildMember>}\n   */\n  setChannel(channel, reason) {\n    return this.guild.members.edit(this.id, { channel }, reason);\n  }\n\n  /**\n   * Toggles the request to speak in the channel.\n   * Only applicable for stage channels and for the client's own voice state.\n   * @param {boolean} [request=true] Whether or not the client is requesting to become a speaker.\n   * @example\n   * // Making the client request to speak in a stage channel (raise its hand)\n   * guild.me.voice.setRequestToSpeak(true);\n   * @example\n   * // Making the client cancel a request to speak\n   * guild.me.voice.setRequestToSpeak(false);\n   * @returns {Promise<void>}\n   */\n  async setRequestToSpeak(request = true) {\n    if (this.channel?.type !== 'GUILD_STAGE_VOICE') throw new Error('VOICE_NOT_STAGE_CHANNEL');\n\n    if (this.client.user.id !== this.id) throw new Error('VOICE_STATE_NOT_OWN');\n\n    await this.client.api.guilds(this.guild.id, 'voice-states', '@me').patch({\n      data: {\n        channel_id: this.channelId,\n        request_to_speak_timestamp: request ? new Date().toISOString() : null,\n      },\n    });\n  }\n\n  /**\n   * Suppress/unsuppress the user. Only applicable for stage channels.\n   * @param {boolean} [suppressed=true] Whether or not the user should be suppressed.\n   * @example\n   * // Making the client a speaker\n   * guild.me.voice.setSuppressed(false);\n   * @example\n   * // Making the client an audience member\n   * guild.me.voice.setSuppressed(true);\n   * @example\n   * // Inviting another user to speak\n   * voiceState.setSuppressed(false);\n   * @example\n   * // Moving another user to the audience, or cancelling their invite to speak\n   * voiceState.setSuppressed(true);\n   * @returns {Promise<void>}\n   */\n  async setSuppressed(suppressed = true) {\n    if (typeof suppressed !== 'boolean') throw new TypeError('VOICE_STATE_INVALID_TYPE', 'suppressed');\n\n    if (this.channel?.type !== 'GUILD_STAGE_VOICE') throw new Error('VOICE_NOT_STAGE_CHANNEL');\n\n    const target = this.client.user.id === this.id ? '@me' : this.id;\n\n    await this.client.api.guilds(this.guild.id, 'voice-states', target).patch({\n      data: {\n        channel_id: this.channelId,\n        suppress: suppressed,\n      },\n    });\n  }\n\n  toJSON() {\n    return super.toJSON({\n      id: true,\n      serverDeaf: true,\n      serverMute: true,\n      selfDeaf: true,\n      selfMute: true,\n      sessionId: true,\n      channelId: 'channel',\n    });\n  }\n}\n\nmodule.exports = VoiceState;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/VoiceState.js?")},"./node_modules/@citizenfx/discord.js/src/structures/Webhook.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/Webhook.js ***!
  \**********************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst process = __webpack_require__(/*! node:process */ \"node:process\");\nconst MessagePayload = __webpack_require__(/*! ./MessagePayload */ \"./node_modules/@citizenfx/discord.js/src/structures/MessagePayload.js\");\nconst { Error } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst { WebhookTypes } = __webpack_require__(/*! ../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst DataResolver = __webpack_require__(/*! ../util/DataResolver */ \"./node_modules/@citizenfx/discord.js/src/util/DataResolver.js\");\nconst SnowflakeUtil = __webpack_require__(/*! ../util/SnowflakeUtil */ \"./node_modules/@citizenfx/discord.js/src/util/SnowflakeUtil.js\");\n\nlet deprecationEmittedForFetchMessage = false;\n\n/**\n * Represents a webhook.\n */\nclass Webhook {\n  constructor(client, data) {\n    /**\n     * The client that instantiated the webhook\n     * @name Webhook#client\n     * @type {Client}\n     * @readonly\n     */\n    Object.defineProperty(this, 'client', { value: client });\n    if (data) this._patch(data);\n  }\n\n  _patch(data) {\n    if ('name' in data) {\n      /**\n       * The name of the webhook\n       * @type {string}\n       */\n      this.name = data.name;\n    }\n\n    /**\n     * The token for the webhook, unavailable for follower webhooks and webhooks owned by another application.\n     * @name Webhook#token\n     * @type {?string}\n     */\n    Object.defineProperty(this, 'token', { value: data.token ?? null, writable: true, configurable: true });\n\n    if ('avatar' in data) {\n      /**\n       * The avatar for the webhook\n       * @type {?string}\n       */\n      this.avatar = data.avatar;\n    }\n\n    /**\n     * The webhook's id\n     * @type {Snowflake}\n     */\n    this.id = data.id;\n\n    if ('type' in data) {\n      /**\n       * The type of the webhook\n       * @type {WebhookType}\n       */\n      this.type = WebhookTypes[data.type];\n    }\n\n    if ('guild_id' in data) {\n      /**\n       * The guild the webhook belongs to\n       * @type {Snowflake}\n       */\n      this.guildId = data.guild_id;\n    }\n\n    if ('channel_id' in data) {\n      /**\n       * The channel the webhook belongs to\n       * @type {Snowflake}\n       */\n      this.channelId = data.channel_id;\n    }\n\n    if ('user' in data) {\n      /**\n       * The owner of the webhook\n       * @type {?(User|APIUser)}\n       */\n      this.owner = this.client.users?._add(data.user) ?? data.user;\n    } else {\n      this.owner ??= null;\n    }\n\n    if ('source_guild' in data) {\n      /**\n       * The source guild of the webhook\n       * @type {?(Guild|APIGuild)}\n       */\n      this.sourceGuild = this.client.guilds?.resolve(data.source_guild.id) ?? data.source_guild;\n    } else {\n      this.sourceGuild ??= null;\n    }\n\n    if ('source_channel' in data) {\n      /**\n       * The source channel of the webhook\n       * @type {?(NewsChannel|APIChannel)}\n       */\n      this.sourceChannel = this.client.channels?.resolve(data.source_channel?.id) ?? data.source_channel;\n    } else {\n      this.sourceChannel ??= null;\n    }\n  }\n\n  /**\n   * Options that can be passed into send.\n   * @typedef {BaseMessageOptions} WebhookMessageOptions\n   * @property {string} [username=this.name] Username override for the message\n   * @property {string} [avatarURL] Avatar URL override for the message\n   * @property {Snowflake} [threadId] The id of the thread in the channel to send to.\n   * <info>For interaction webhooks, this property is ignored</info>\n   */\n\n  /**\n   * Options that can be passed into editMessage.\n   * @typedef {Object} WebhookEditMessageOptions\n   * @property {MessageEmbed[]|APIEmbed[]} [embeds] See {@link WebhookMessageOptions#embeds}\n   * @property {string} [content] See {@link BaseMessageOptions#content}\n   * @property {FileOptions[]|BufferResolvable[]|MessageAttachment[]} [files] See {@link BaseMessageOptions#files}\n   * @property {MessageMentionOptions} [allowedMentions] See {@link BaseMessageOptions#allowedMentions}\n   * @property {MessageAttachment[]} [attachments] Attachments to send with the message\n   * @property {MessageActionRow[]|MessageActionRowOptions[]} [components]\n   * Action rows containing interactive components for the message (buttons, select menus)\n   * @property {Snowflake} [threadId] The id of the thread this message belongs to\n   * <info>For interaction webhooks, this property is ignored</info>\n   */\n\n  /**\n   * Sends a message with this webhook.\n   * @param {string|MessagePayload|WebhookMessageOptions} options The options to provide\n   * @returns {Promise<Message|APIMessage>}\n   * @example\n   * // Send a basic message\n   * webhook.send('hello!')\n   *   .then(message => console.log(`Sent message: ${message.content}`))\n   *   .catch(console.error);\n   * @example\n   * // Send a basic message in a thread\n   * webhook.send({ content: 'hello!', threadId: '836856309672348295' })\n   *   .then(message => console.log(`Sent message: ${message.content}`))\n   *   .catch(console.error);\n   * @example\n   * // Send a remote file\n   * webhook.send({\n   *   files: ['https://cdn.discordapp.com/icons/222078108977594368/6e1019b3179d71046e463a75915e7244.png?size=2048']\n   * })\n   *   .then(console.log)\n   *   .catch(console.error);\n   * @example\n   * // Send a local file\n   * webhook.send({\n   *   files: [{\n   *     attachment: 'entire/path/to/file.jpg',\n   *     name: 'file.jpg'\n   *   }]\n   * })\n   *   .then(console.log)\n   *   .catch(console.error);\n   * @example\n   * // Send an embed with a local image inside\n   * webhook.send({\n   *   content: 'This is an embed',\n   *   embeds: [{\n   *     thumbnail: {\n   *          url: 'attachment://file.jpg'\n   *       }\n   *    }],\n   *    files: [{\n   *       attachment: 'entire/path/to/file.jpg',\n   *       name: 'file.jpg'\n   *    }]\n   * })\n   *   .then(console.log)\n   *   .catch(console.error);\n   */\n  async send(options) {\n    if (!this.token) throw new Error('WEBHOOK_TOKEN_UNAVAILABLE');\n\n    let messagePayload;\n\n    if (options instanceof MessagePayload) {\n      messagePayload = options.resolveData();\n    } else {\n      messagePayload = MessagePayload.create(this, options).resolveData();\n    }\n\n    const { data, files } = await messagePayload.resolveFiles();\n    const d = await this.client.api.webhooks(this.id, this.token).post({\n      data,\n      files,\n      query: { thread_id: messagePayload.options.threadId, wait: true },\n      auth: false,\n    });\n    return this.client.channels?.cache.get(d.channel_id)?.messages._add(d, false) ?? d;\n  }\n\n  /**\n   * Sends a raw slack message with this webhook.\n   * @param {Object} body The raw body to send\n   * @returns {Promise<boolean>}\n   * @example\n   * // Send a slack message\n   * webhook.sendSlackMessage({\n   *   'username': 'Wumpus',\n   *   'attachments': [{\n   *     'pretext': 'this looks pretty cool',\n   *     'color': '#F0F',\n   *     'footer_icon': 'http://snek.s3.amazonaws.com/topSnek.png',\n   *     'footer': 'Powered by sneks',\n   *     'ts': Date.now() / 1_000\n   *   }]\n   * }).catch(console.error);\n   * @see {@link https://api.slack.com/messaging/webhooks}\n   */\n  async sendSlackMessage(body) {\n    if (!this.token) throw new Error('WEBHOOK_TOKEN_UNAVAILABLE');\n\n    const data = await this.client.api.webhooks(this.id, this.token).slack.post({\n      query: { wait: true },\n      auth: false,\n      data: body,\n    });\n    return data.toString() === 'ok';\n  }\n\n  /**\n   * Options used to edit a {@link Webhook}.\n   * @typedef {Object} WebhookEditData\n   * @property {string} [name=this.name] The new name for the webhook\n   * @property {?(BufferResolvable)} [avatar] The new avatar for the webhook\n   * @property {GuildTextChannelResolvable} [channel] The new channel for the webhook\n   */\n\n  /**\n   * Edits this webhook.\n   * @param {WebhookEditData} options Options for editing the webhook\n   * @param {string} [reason] Reason for editing the webhook\n   * @returns {Promise<Webhook>}\n   */\n  async edit({ name = this.name, avatar, channel }, reason) {\n    if (avatar && !(typeof avatar === 'string' && avatar.startsWith('data:'))) {\n      avatar = await DataResolver.resolveImage(avatar);\n    }\n    channel &&= channel.id ?? channel;\n    const data = await this.client.api.webhooks(this.id, channel ? undefined : this.token).patch({\n      data: { name, avatar, channel_id: channel },\n      reason,\n      auth: !this.token || Boolean(channel),\n    });\n\n    this.name = data.name;\n    this.avatar = data.avatar;\n    this.channelId = data.channel_id;\n    return this;\n  }\n\n  /**\n   * Options that can be passed into fetchMessage.\n   * @typedef {options} WebhookFetchMessageOptions\n   * @property {boolean} [cache=true] Whether to cache the message.\n   * @property {Snowflake} [threadId] The id of the thread this message belongs to.\n   * <info>For interaction webhooks, this property is ignored</info>\n   */\n\n  /**\n   * Gets a message that was sent by this webhook.\n   * @param {Snowflake|'@original'} message The id of the message to fetch\n   * @param {WebhookFetchMessageOptions|boolean} [cacheOrOptions={}] The options to provide to fetch the message.\n   * <warn>A **deprecated** boolean may be passed instead to specify whether to cache the message.</warn>\n   * @returns {Promise<Message|APIMessage>} Returns the raw message data if the webhook was instantiated as a\n   * {@link WebhookClient} or if the channel is uncached, otherwise a {@link Message} will be returned\n   */\n  async fetchMessage(message, cacheOrOptions = { cache: true }) {\n    if (typeof cacheOrOptions === 'boolean') {\n      if (!deprecationEmittedForFetchMessage) {\n        process.emitWarning(\n          'Passing a boolean to cache the message in Webhook#fetchMessage is deprecated. Pass an object instead.',\n          'DeprecationWarning',\n        );\n\n        deprecationEmittedForFetchMessage = true;\n      }\n\n      cacheOrOptions = { cache: cacheOrOptions };\n    }\n\n    if (!this.token) throw new Error('WEBHOOK_TOKEN_UNAVAILABLE');\n\n    const data = await this.client.api\n      .webhooks(this.id, this.token)\n      .messages(message)\n      .get({\n        query: {\n          thread_id: cacheOrOptions.threadId,\n        },\n        auth: false,\n      });\n    return this.client.channels?.cache.get(data.channel_id)?.messages._add(data, cacheOrOptions.cache) ?? data;\n  }\n\n  /**\n   * Edits a message that was sent by this webhook.\n   * @param {MessageResolvable|'@original'} message The message to edit\n   * @param {string|MessagePayload|WebhookEditMessageOptions} options The options to provide\n   * @returns {Promise<Message|APIMessage>} Returns the raw message data if the webhook was instantiated as a\n   * {@link WebhookClient} or if the channel is uncached, otherwise a {@link Message} will be returned\n   */\n  async editMessage(message, options) {\n    if (!this.token) throw new Error('WEBHOOK_TOKEN_UNAVAILABLE');\n\n    let messagePayload;\n\n    if (options instanceof MessagePayload) messagePayload = options;\n    else messagePayload = MessagePayload.create(this, options);\n\n    const { data, files } = await messagePayload.resolveData().resolveFiles();\n\n    const d = await this.client.api\n      .webhooks(this.id, this.token)\n      .messages(typeof message === 'string' ? message : message.id)\n      .patch({\n        data,\n        files,\n        query: {\n          thread_id: messagePayload.options.threadId,\n        },\n        auth: false,\n      });\n\n    const messageManager = this.client.channels?.cache.get(d.channel_id)?.messages;\n    if (!messageManager) return d;\n\n    const existing = messageManager.cache.get(d.id);\n    if (!existing) return messageManager._add(d);\n\n    const clone = existing._clone();\n    clone._patch(d);\n    return clone;\n  }\n\n  /**\n   * Deletes the webhook.\n   * @param {string} [reason] Reason for deleting this webhook\n   * @returns {Promise<void>}\n   */\n  async delete(reason) {\n    await this.client.api.webhooks(this.id, this.token).delete({ reason, auth: !this.token });\n  }\n\n  /**\n   * Delete a message that was sent by this webhook.\n   * @param {MessageResolvable|'@original'} message The message to delete\n   * @param {Snowflake} [threadId] The id of the thread this message belongs to\n   * @returns {Promise<void>}\n   */\n  async deleteMessage(message, threadId) {\n    if (!this.token) throw new Error('WEBHOOK_TOKEN_UNAVAILABLE');\n\n    await this.client.api\n      .webhooks(this.id, this.token)\n      .messages(typeof message === 'string' ? message : message.id)\n      .delete({\n        query: {\n          thread_id: threadId,\n        },\n        auth: false,\n      });\n  }\n\n  /**\n   * The timestamp the webhook was created at\n   * @type {number}\n   * @readonly\n   */\n  get createdTimestamp() {\n    return SnowflakeUtil.timestampFrom(this.id);\n  }\n\n  /**\n   * The time the webhook was created at\n   * @type {Date}\n   * @readonly\n   */\n  get createdAt() {\n    return new Date(this.createdTimestamp);\n  }\n\n  /**\n   * The URL of this webhook\n   * @type {string}\n   * @readonly\n   */\n  get url() {\n    return this.client.options.http.api + this.client.api.webhooks(this.id, this.token);\n  }\n\n  /**\n   * A link to the webhook's avatar.\n   * @param {StaticImageURLOptions} [options={}] Options for the Image URL\n   * @returns {?string}\n   */\n  avatarURL({ format, size } = {}) {\n    if (!this.avatar) return null;\n    return this.client.rest.cdn.Avatar(this.id, this.avatar, format, size);\n  }\n\n  /**\n   * Whether or not this webhook is a channel follower webhook.\n   * @returns {boolean}\n   */\n  isChannelFollower() {\n    return this.type === 'Channel Follower';\n  }\n\n  /**\n   * Whether or not this webhook is an incoming webhook.\n   * @returns {boolean}\n   */\n  isIncoming() {\n    return this.type === 'Incoming';\n  }\n\n  static applyToClass(structure, ignore = []) {\n    for (const prop of [\n      'send',\n      'sendSlackMessage',\n      'fetchMessage',\n      'edit',\n      'editMessage',\n      'delete',\n      'deleteMessage',\n      'createdTimestamp',\n      'createdAt',\n      'url',\n    ]) {\n      if (ignore.includes(prop)) continue;\n      Object.defineProperty(structure.prototype, prop, Object.getOwnPropertyDescriptor(Webhook.prototype, prop));\n    }\n  }\n}\n\nmodule.exports = Webhook;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/Webhook.js?")},"./node_modules/@citizenfx/discord.js/src/structures/WelcomeChannel.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/WelcomeChannel.js ***!
  \*****************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Base = __webpack_require__(/*! ./Base */ "./node_modules/@citizenfx/discord.js/src/structures/Base.js");\nconst { Emoji } = __webpack_require__(/*! ./Emoji */ "./node_modules/@citizenfx/discord.js/src/structures/Emoji.js");\n\n/**\n * Represents a channel link in a guild\'s welcome screen.\n * @extends {Base}\n */\nclass WelcomeChannel extends Base {\n  constructor(guild, data) {\n    super(guild.client);\n\n    /**\n     * The guild for this welcome channel\n     * @type {Guild|InviteGuild}\n     */\n    this.guild = guild;\n\n    /**\n     * The description of this welcome channel\n     * @type {string}\n     */\n    this.description = data.description;\n\n    /**\n     * The raw emoji data\n     * @type {Object}\n     * @private\n     */\n    this._emoji = {\n      name: data.emoji_name,\n      id: data.emoji_id,\n    };\n\n    /**\n     * The id of this welcome channel\n     * @type {Snowflake}\n     */\n    this.channelId = data.channel_id;\n  }\n\n  /**\n   * The channel of this welcome channel\n   * @type {?(TextChannel|NewsChannel|StoreChannel)}\n   */\n  get channel() {\n    return this.client.channels.resolve(this.channelId);\n  }\n\n  /**\n   * The emoji of this welcome channel\n   * @type {GuildEmoji|Emoji}\n   */\n  get emoji() {\n    return this.client.emojis.resolve(this._emoji.id) ?? new Emoji(this.client, this._emoji);\n  }\n}\n\nmodule.exports = WelcomeChannel;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/WelcomeChannel.js?')},"./node_modules/@citizenfx/discord.js/src/structures/WelcomeScreen.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/WelcomeScreen.js ***!
  \****************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ "./node_modules/@discordjs/collection/dist/index.js");\nconst Base = __webpack_require__(/*! ./Base */ "./node_modules/@citizenfx/discord.js/src/structures/Base.js");\nconst WelcomeChannel = __webpack_require__(/*! ./WelcomeChannel */ "./node_modules/@citizenfx/discord.js/src/structures/WelcomeChannel.js");\n\n/**\n * Represents a welcome screen.\n * @extends {Base}\n */\nclass WelcomeScreen extends Base {\n  constructor(guild, data) {\n    super(guild.client);\n\n    /**\n     * The guild for this welcome screen\n     * @type {Guild}\n     */\n    this.guild = guild;\n\n    /**\n     * The description of this welcome screen\n     * @type {?string}\n     */\n    this.description = data.description ?? null;\n\n    /**\n     * Collection of welcome channels belonging to this welcome screen\n     * @type {Collection<Snowflake, WelcomeChannel>}\n     */\n    this.welcomeChannels = new Collection();\n\n    for (const channel of data.welcome_channels) {\n      const welcomeChannel = new WelcomeChannel(this.guild, channel);\n      this.welcomeChannels.set(welcomeChannel.channelId, welcomeChannel);\n    }\n  }\n\n  /**\n   * Whether the welcome screen is enabled on the guild or not\n   * @type {boolean}\n   */\n  get enabled() {\n    return this.guild.features.includes(\'WELCOME_SCREEN_ENABLED\');\n  }\n}\n\nmodule.exports = WelcomeScreen;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/WelcomeScreen.js?')},"./node_modules/@citizenfx/discord.js/src/structures/Widget.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/Widget.js ***!
  \*********************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst Base = __webpack_require__(/*! ./Base */ \"./node_modules/@citizenfx/discord.js/src/structures/Base.js\");\nconst WidgetMember = __webpack_require__(/*! ./WidgetMember */ \"./node_modules/@citizenfx/discord.js/src/structures/WidgetMember.js\");\n\n/**\n * Represents a Widget.\n */\nclass Widget extends Base {\n  constructor(client, data) {\n    super(client);\n    this._patch(data);\n  }\n\n  /**\n   * Represents a channel in a Widget\n   * @typedef {Object} WidgetChannel\n   * @property {Snowflake} id Id of the channel\n   * @property {string} name Name of the channel\n   * @property {number} position Position of the channel\n   */\n\n  _patch(data) {\n    /**\n     * The id of the guild.\n     * @type {Snowflake}\n     */\n    this.id = data.id;\n\n    if ('name' in data) {\n      /**\n       * The name of the guild.\n       * @type {string}\n       */\n      this.name = data.name;\n    }\n\n    if ('instant_invite' in data) {\n      /**\n       * The invite of the guild.\n       * @type {?string}\n       */\n      this.instantInvite = data.instant_invite;\n    }\n\n    /**\n     * The list of channels in the guild.\n     * @type {Collection<Snowflake, WidgetChannel>}\n     */\n    this.channels = new Collection();\n    for (const channel of data.channels) {\n      this.channels.set(channel.id, channel);\n    }\n\n    /**\n     * The list of members in the guild.\n     * These strings are just arbitrary numbers, they aren't Snowflakes.\n     * @type {Collection<string, WidgetMember>}\n     */\n    this.members = new Collection();\n    for (const member of data.members) {\n      this.members.set(member.id, new WidgetMember(this.client, member));\n    }\n\n    if ('presence_count' in data) {\n      /**\n       * The number of members online.\n       * @type {number}\n       */\n      this.presenceCount = data.presence_count;\n    }\n  }\n\n  /**\n   * Update the Widget.\n   * @returns {Promise<Widget>}\n   */\n  async fetch() {\n    const data = await this.client.api.guilds(this.id, 'widget.json').get();\n    this._patch(data);\n    return this;\n  }\n}\n\nmodule.exports = Widget;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/Widget.js?")},"./node_modules/@citizenfx/discord.js/src/structures/WidgetMember.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/WidgetMember.js ***!
  \***************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Base = __webpack_require__(/*! ./Base */ "./node_modules/@citizenfx/discord.js/src/structures/Base.js");\n\n/**\n * Represents a WidgetMember.\n */\nclass WidgetMember extends Base {\n  /**\n   * Activity sent in a {@link WidgetMember}.\n   * @typedef {Object} WidgetActivity\n   * @property {string} name The name of the activity\n   */\n\n  constructor(client, data) {\n    super(client);\n\n    /**\n     * The id of the user. It\'s an arbitrary number.\n     * @type {string}\n     */\n    this.id = data.id;\n\n    /**\n     * The username of the member.\n     * @type {string}\n     */\n    this.username = data.username;\n\n    /**\n     * The discriminator of the member.\n     * @type {string}\n     */\n    this.discriminator = data.discriminator;\n\n    /**\n     * The avatar of the member.\n     * @type {?string}\n     */\n    this.avatar = data.avatar;\n\n    /**\n     * The status of the member.\n     * @type {PresenceStatus}\n     */\n    this.status = data.status;\n\n    /**\n     * If the member is server deafened\n     * @type {?boolean}\n     */\n    this.deaf = data.deaf ?? null;\n\n    /**\n     * If the member is server muted\n     * @type {?boolean}\n     */\n    this.mute = data.mute ?? null;\n\n    /**\n     * If the member is self deafened\n     * @type {?boolean}\n     */\n    this.selfDeaf = data.self_deaf ?? null;\n\n    /**\n     * If the member is self muted\n     * @type {?boolean}\n     */\n    this.selfMute = data.self_mute ?? null;\n\n    /**\n     * If the member is suppressed\n     * @type {?boolean}\n     */\n    this.suppress = data.suppress ?? null;\n\n    /**\n     * The id of the voice channel the member is in, if any\n     * @type {?Snowflake}\n     */\n    this.channelId = data.channel_id ?? null;\n\n    /**\n     * The avatar URL of the member.\n     * @type {string}\n     */\n    this.avatarURL = data.avatar_url;\n\n    /**\n     * The activity of the member.\n     * @type {?WidgetActivity}\n     */\n    this.activity = data.activity ?? null;\n  }\n}\n\nmodule.exports = WidgetMember;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/WidgetMember.js?')},"./node_modules/@citizenfx/discord.js/src/structures/interfaces/Application.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/interfaces/Application.js ***!
  \*************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { ClientApplicationAssetTypes, Endpoints } = __webpack_require__(/*! ../../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst SnowflakeUtil = __webpack_require__(/*! ../../util/SnowflakeUtil */ \"./node_modules/@citizenfx/discord.js/src/util/SnowflakeUtil.js\");\nconst Base = __webpack_require__(/*! ../Base */ \"./node_modules/@citizenfx/discord.js/src/structures/Base.js\");\n\nconst AssetTypes = Object.keys(ClientApplicationAssetTypes);\n\n/**\n * Represents an OAuth2 Application.\n * @abstract\n */\nclass Application extends Base {\n  constructor(client, data) {\n    super(client);\n    this._patch(data);\n  }\n\n  _patch(data) {\n    /**\n     * The application's id\n     * @type {Snowflake}\n     */\n    this.id = data.id;\n\n    if ('name' in data) {\n      /**\n       * The name of the application\n       * @type {?string}\n       */\n      this.name = data.name;\n    } else {\n      this.name ??= null;\n    }\n\n    if ('description' in data) {\n      /**\n       * The application's description\n       * @type {?string}\n       */\n      this.description = data.description;\n    } else {\n      this.description ??= null;\n    }\n\n    if ('icon' in data) {\n      /**\n       * The application's icon hash\n       * @type {?string}\n       */\n      this.icon = data.icon;\n    } else {\n      this.icon ??= null;\n    }\n  }\n\n  /**\n   * The timestamp the application was created at\n   * @type {number}\n   * @readonly\n   */\n  get createdTimestamp() {\n    return SnowflakeUtil.timestampFrom(this.id);\n  }\n\n  /**\n   * The time the application was created at\n   * @type {Date}\n   * @readonly\n   */\n  get createdAt() {\n    return new Date(this.createdTimestamp);\n  }\n\n  /**\n   * A link to the application's icon.\n   * @param {StaticImageURLOptions} [options={}] Options for the Image URL\n   * @returns {?string}\n   */\n  iconURL({ format, size } = {}) {\n    if (!this.icon) return null;\n    return this.client.rest.cdn.AppIcon(this.id, this.icon, { format, size });\n  }\n\n  /**\n   * A link to this application's cover image.\n   * @param {StaticImageURLOptions} [options={}] Options for the Image URL\n   * @returns {?string}\n   */\n  coverURL({ format, size } = {}) {\n    if (!this.cover) return null;\n    return Endpoints.CDN(this.client.options.http.cdn).AppIcon(this.id, this.cover, { format, size });\n  }\n\n  /**\n   * Asset data.\n   * @typedef {Object} ApplicationAsset\n   * @property {Snowflake} id The asset's id\n   * @property {string} name The asset's name\n   * @property {string} type The asset's type\n   */\n\n  /**\n   * Gets the application's rich presence assets.\n   * @returns {Promise<Array<ApplicationAsset>>}\n   */\n  async fetchAssets() {\n    const assets = await this.client.api.oauth2.applications(this.id).assets.get();\n    return assets.map(a => ({\n      id: a.id,\n      name: a.name,\n      type: AssetTypes[a.type - 1],\n    }));\n  }\n\n  /**\n   * When concatenated with a string, this automatically returns the application's name instead of the\n   * Application object.\n   * @returns {?string}\n   * @example\n   * // Logs: Application name: My App\n   * console.log(`Application name: ${application}`);\n   */\n  toString() {\n    return this.name;\n  }\n\n  toJSON() {\n    return super.toJSON({ createdTimestamp: true });\n  }\n}\n\nmodule.exports = Application;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/interfaces/Application.js?")},"./node_modules/@citizenfx/discord.js/src/structures/interfaces/Collector.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/interfaces/Collector.js ***!
  \***********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst EventEmitter = __webpack_require__(/*! node:events */ \"node:events\");\nconst { setTimeout, clearTimeout } = __webpack_require__(/*! node:timers */ \"node:timers\");\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst { TypeError } = __webpack_require__(/*! ../../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst Util = __webpack_require__(/*! ../../util/Util */ \"./node_modules/@citizenfx/discord.js/src/util/Util.js\");\n\n/**\n * Filter to be applied to the collector.\n * @typedef {Function} CollectorFilter\n * @param {...*} args Any arguments received by the listener\n * @param {Collection} collection The items collected by this collector\n * @returns {boolean|Promise<boolean>}\n */\n\n/**\n * Options to be applied to the collector.\n * @typedef {Object} CollectorOptions\n * @property {CollectorFilter} [filter] The filter applied to this collector\n * @property {number} [time] How long to run the collector for in milliseconds\n * @property {number} [idle] How long to stop the collector after inactivity in milliseconds\n * @property {boolean} [dispose=false] Whether to dispose data when it's deleted\n */\n\n/**\n * Abstract class for defining a new Collector.\n * @abstract\n */\nclass Collector extends EventEmitter {\n  constructor(client, options = {}) {\n    super();\n\n    /**\n     * The client that instantiated this Collector\n     * @name Collector#client\n     * @type {Client}\n     * @readonly\n     */\n    Object.defineProperty(this, 'client', { value: client });\n\n    /**\n     * The filter applied to this collector\n     * @type {CollectorFilter}\n     * @returns {boolean|Promise<boolean>}\n     */\n    this.filter = options.filter ?? (() => true);\n\n    /**\n     * The options of this collector\n     * @type {CollectorOptions}\n     */\n    this.options = options;\n\n    /**\n     * The items collected by this collector\n     * @type {Collection}\n     */\n    this.collected = new Collection();\n\n    /**\n     * Whether this collector has finished collecting\n     * @type {boolean}\n     */\n    this.ended = false;\n\n    /**\n     * Timeout for cleanup\n     * @type {?Timeout}\n     * @private\n     */\n    this._timeout = null;\n\n    /**\n     * Timeout for cleanup due to inactivity\n     * @type {?Timeout}\n     * @private\n     */\n    this._idletimeout = null;\n\n    if (typeof this.filter !== 'function') {\n      throw new TypeError('INVALID_TYPE', 'options.filter', 'function');\n    }\n\n    this.handleCollect = this.handleCollect.bind(this);\n    this.handleDispose = this.handleDispose.bind(this);\n\n    if (options.time) this._timeout = setTimeout(() => this.stop('time'), options.time).unref();\n    if (options.idle) this._idletimeout = setTimeout(() => this.stop('idle'), options.idle).unref();\n  }\n\n  /**\n   * Call this to handle an event as a collectable element. Accepts any event data as parameters.\n   * @param {...*} args The arguments emitted by the listener\n   * @returns {Promise<void>}\n   * @emits Collector#collect\n   */\n  async handleCollect(...args) {\n    const collect = await this.collect(...args);\n\n    if (collect && (await this.filter(...args, this.collected))) {\n      this.collected.set(collect, args[0]);\n\n      /**\n       * Emitted whenever an element is collected.\n       * @event Collector#collect\n       * @param {...*} args The arguments emitted by the listener\n       */\n      this.emit('collect', ...args);\n\n      if (this._idletimeout) {\n        clearTimeout(this._idletimeout);\n        this._idletimeout = setTimeout(() => this.stop('idle'), this.options.idle).unref();\n      }\n    }\n    this.checkEnd();\n  }\n\n  /**\n   * Call this to remove an element from the collection. Accepts any event data as parameters.\n   * @param {...*} args The arguments emitted by the listener\n   * @returns {Promise<void>}\n   * @emits Collector#dispose\n   */\n  async handleDispose(...args) {\n    if (!this.options.dispose) return;\n\n    const dispose = this.dispose(...args);\n    if (!dispose || !(await this.filter(...args)) || !this.collected.has(dispose)) return;\n    this.collected.delete(dispose);\n\n    /**\n     * Emitted whenever an element is disposed of.\n     * @event Collector#dispose\n     * @param {...*} args The arguments emitted by the listener\n     */\n    this.emit('dispose', ...args);\n    this.checkEnd();\n  }\n\n  /**\n   * Returns a promise that resolves with the next collected element;\n   * rejects with collected elements if the collector finishes without receiving a next element\n   * @type {Promise}\n   * @readonly\n   */\n  get next() {\n    return new Promise((resolve, reject) => {\n      if (this.ended) {\n        reject(this.collected);\n        return;\n      }\n\n      const cleanup = () => {\n        this.removeListener('collect', onCollect);\n        this.removeListener('end', onEnd);\n      };\n\n      const onCollect = item => {\n        cleanup();\n        resolve(item);\n      };\n\n      const onEnd = () => {\n        cleanup();\n        reject(this.collected); // eslint-disable-line prefer-promise-reject-errors\n      };\n\n      this.on('collect', onCollect);\n      this.on('end', onEnd);\n    });\n  }\n\n  /**\n   * Stops this collector and emits the `end` event.\n   * @param {string} [reason='user'] The reason this collector is ending\n   * @emits Collector#end\n   */\n  stop(reason = 'user') {\n    if (this.ended) return;\n\n    if (this._timeout) {\n      clearTimeout(this._timeout);\n      this._timeout = null;\n    }\n    if (this._idletimeout) {\n      clearTimeout(this._idletimeout);\n      this._idletimeout = null;\n    }\n    this.ended = true;\n\n    /**\n     * Emitted when the collector is finished collecting.\n     * @event Collector#end\n     * @param {Collection} collected The elements collected by the collector\n     * @param {string} reason The reason the collector ended\n     */\n    this.emit('end', this.collected, reason);\n  }\n\n  /**\n   * Options used to reset the timeout and idle timer of a {@link Collector}.\n   * @typedef {Object} CollectorResetTimerOptions\n   * @property {number} [time] How long to run the collector for (in milliseconds)\n   * @property {number} [idle] How long to wait to stop the collector after inactivity (in milliseconds)\n   */\n\n  /**\n   * Resets the collector's timeout and idle timer.\n   * @param {CollectorResetTimerOptions} [options] Options for resetting\n   */\n  resetTimer({ time, idle } = {}) {\n    if (this._timeout) {\n      clearTimeout(this._timeout);\n      this._timeout = setTimeout(() => this.stop('time'), time ?? this.options.time).unref();\n    }\n    if (this._idletimeout) {\n      clearTimeout(this._idletimeout);\n      this._idletimeout = setTimeout(() => this.stop('idle'), idle ?? this.options.idle).unref();\n    }\n  }\n\n  /**\n   * Checks whether the collector should end, and if so, ends it.\n   * @returns {boolean} Whether the collector ended or not\n   */\n  checkEnd() {\n    const reason = this.endReason;\n    if (reason) this.stop(reason);\n    return Boolean(reason);\n  }\n\n  /**\n   * Allows collectors to be consumed with for-await-of loops\n   * @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of}\n   */\n  async *[Symbol.asyncIterator]() {\n    const queue = [];\n    const onCollect = item => queue.push(item);\n    this.on('collect', onCollect);\n\n    try {\n      while (queue.length || !this.ended) {\n        if (queue.length) {\n          yield queue.shift();\n        } else {\n          // eslint-disable-next-line no-await-in-loop\n          await new Promise(resolve => {\n            const tick = () => {\n              this.removeListener('collect', tick);\n              this.removeListener('end', tick);\n              return resolve();\n            };\n            this.on('collect', tick);\n            this.on('end', tick);\n          });\n        }\n      }\n    } finally {\n      this.removeListener('collect', onCollect);\n    }\n  }\n\n  toJSON() {\n    return Util.flatten(this);\n  }\n\n  /* eslint-disable no-empty-function */\n  /**\n   * The reason this collector has ended with, or null if it hasn't ended yet\n   * @type {?string}\n   * @readonly\n   * @abstract\n   */\n  get endReason() {}\n\n  /**\n   * Handles incoming events from the `handleCollect` function. Returns null if the event should not\n   * be collected, or returns an object describing the data that should be stored.\n   * @see Collector#handleCollect\n   * @param {...*} args Any args the event listener emits\n   * @returns {?(*|Promise<?*>)} Data to insert into collection, if any\n   * @abstract\n   */\n  collect() {}\n\n  /**\n   * Handles incoming events from the `handleDispose`. Returns null if the event should not\n   * be disposed, or returns the key that should be removed.\n   * @see Collector#handleDispose\n   * @param {...*} args Any args the event listener emits\n   * @returns {?*} Key to remove from the collection, if any\n   * @abstract\n   */\n  dispose() {}\n  /* eslint-enable no-empty-function */\n}\n\nmodule.exports = Collector;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/interfaces/Collector.js?")},"./node_modules/@citizenfx/discord.js/src/structures/interfaces/InteractionResponses.js":
/*!**********************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/interfaces/InteractionResponses.js ***!
  \**********************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Error } = __webpack_require__(/*! ../../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst { InteractionResponseTypes } = __webpack_require__(/*! ../../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst MessageFlags = __webpack_require__(/*! ../../util/MessageFlags */ \"./node_modules/@citizenfx/discord.js/src/util/MessageFlags.js\");\nconst MessagePayload = __webpack_require__(/*! ../MessagePayload */ \"./node_modules/@citizenfx/discord.js/src/structures/MessagePayload.js\");\n\n/**\n * Interface for classes that support shared interaction response types.\n * @interface\n */\nclass InteractionResponses {\n  /**\n   * Options for deferring the reply to an {@link Interaction}.\n   * @typedef {Object} InteractionDeferReplyOptions\n   * @property {boolean} [ephemeral] Whether the reply should be ephemeral\n   * @property {boolean} [fetchReply] Whether to fetch the reply\n   */\n\n  /**\n   * Options for deferring and updating the reply to a {@link MessageComponentInteraction}.\n   * @typedef {Object} InteractionDeferUpdateOptions\n   * @property {boolean} [fetchReply] Whether to fetch the reply\n   */\n\n  /**\n   * Options for a reply to an {@link Interaction}.\n   * @typedef {BaseMessageOptions} InteractionReplyOptions\n   * @property {boolean} [ephemeral] Whether the reply should be ephemeral\n   * @property {boolean} [fetchReply] Whether to fetch the reply\n   */\n\n  /**\n   * Options for updating the message received from a {@link MessageComponentInteraction}.\n   * @typedef {MessageEditOptions} InteractionUpdateOptions\n   * @property {boolean} [fetchReply] Whether to fetch the reply\n   */\n\n  /**\n   * Defers the reply to this interaction.\n   * @param {InteractionDeferReplyOptions} [options] Options for deferring the reply to this interaction\n   * @returns {Promise<Message|APIMessage|void>}\n   * @example\n   * // Defer the reply to this interaction\n   * interaction.deferReply()\n   *   .then(console.log)\n   *   .catch(console.error)\n   * @example\n   * // Defer to send an ephemeral reply later\n   * interaction.deferReply({ ephemeral: true })\n   *   .then(console.log)\n   *   .catch(console.error);\n   */\n  async deferReply(options = {}) {\n    if (this.deferred || this.replied) throw new Error('INTERACTION_ALREADY_REPLIED');\n    this.ephemeral = options.ephemeral ?? false;\n    await this.client.api.interactions(this.id, this.token).callback.post({\n      data: {\n        type: InteractionResponseTypes.DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE,\n        data: {\n          flags: options.ephemeral ? MessageFlags.FLAGS.EPHEMERAL : undefined,\n        },\n      },\n      auth: false,\n    });\n    this.deferred = true;\n\n    return options.fetchReply ? this.fetchReply() : undefined;\n  }\n\n  /**\n   * Creates a reply to this interaction.\n   * <info>Use the `fetchReply` option to get the bot's reply message.</info>\n   * @param {string|MessagePayload|InteractionReplyOptions} options The options for the reply\n   * @returns {Promise<Message|APIMessage|void>}\n   * @example\n   * // Reply to the interaction and fetch the response\n   * interaction.reply({ content: 'Pong!', fetchReply: true })\n   *   .then((message) => console.log(`Reply sent with content ${message.content}`))\n   *   .catch(console.error);\n   * @example\n   * // Create an ephemeral reply with an embed\n   * const embed = new MessageEmbed().setDescription('Pong!');\n   *\n   * interaction.reply({ embeds: [embed], ephemeral: true })\n   *   .then(() => console.log('Reply sent.'))\n   *   .catch(console.error);\n   */\n  async reply(options) {\n    if (this.deferred || this.replied) throw new Error('INTERACTION_ALREADY_REPLIED');\n    this.ephemeral = options.ephemeral ?? false;\n\n    let messagePayload;\n    if (options instanceof MessagePayload) messagePayload = options;\n    else messagePayload = MessagePayload.create(this, options);\n\n    const { data, files } = await messagePayload.resolveData().resolveFiles();\n\n    await this.client.api.interactions(this.id, this.token).callback.post({\n      data: {\n        type: InteractionResponseTypes.CHANNEL_MESSAGE_WITH_SOURCE,\n        data,\n      },\n      files,\n      auth: false,\n    });\n    this.replied = true;\n\n    return options.fetchReply ? this.fetchReply() : undefined;\n  }\n\n  /**\n   * Fetches the initial reply to this interaction.\n   * @see Webhook#fetchMessage\n   * @returns {Promise<Message|APIMessage>}\n   * @example\n   * // Fetch the reply to this interaction\n   * interaction.fetchReply()\n   *   .then(reply => console.log(`Replied with ${reply.content}`))\n   *   .catch(console.error);\n   */\n  fetchReply() {\n    return this.webhook.fetchMessage('@original');\n  }\n\n  /**\n   * Edits the initial reply to this interaction.\n   * @see Webhook#editMessage\n   * @param {string|MessagePayload|WebhookEditMessageOptions} options The new options for the message\n   * @returns {Promise<Message|APIMessage>}\n   * @example\n   * // Edit the reply to this interaction\n   * interaction.editReply('New content')\n   *   .then(console.log)\n   *   .catch(console.error);\n   */\n  async editReply(options) {\n    if (!this.deferred && !this.replied) throw new Error('INTERACTION_NOT_REPLIED');\n    const message = await this.webhook.editMessage('@original', options);\n    this.replied = true;\n    return message;\n  }\n\n  /**\n   * Deletes the initial reply to this interaction.\n   * @see Webhook#deleteMessage\n   * @returns {Promise<void>}\n   * @example\n   * // Delete the reply to this interaction\n   * interaction.deleteReply()\n   *   .then(console.log)\n   *   .catch(console.error);\n   */\n  async deleteReply() {\n    if (this.ephemeral) throw new Error('INTERACTION_EPHEMERAL_REPLIED');\n    await this.webhook.deleteMessage('@original');\n  }\n\n  /**\n   * Send a follow-up message to this interaction.\n   * @param {string|MessagePayload|InteractionReplyOptions} options The options for the reply\n   * @returns {Promise<Message|APIMessage>}\n   */\n  followUp(options) {\n    if (!this.deferred && !this.replied) return Promise.reject(new Error('INTERACTION_NOT_REPLIED'));\n    return this.webhook.send(options);\n  }\n\n  /**\n   * Defers an update to the message to which the component was attached.\n   * @param {InteractionDeferUpdateOptions} [options] Options for deferring the update to this interaction\n   * @returns {Promise<Message|APIMessage|void>}\n   * @example\n   * // Defer updating and reset the component's loading state\n   * interaction.deferUpdate()\n   *   .then(console.log)\n   *   .catch(console.error);\n   */\n  async deferUpdate(options = {}) {\n    if (this.deferred || this.replied) throw new Error('INTERACTION_ALREADY_REPLIED');\n    await this.client.api.interactions(this.id, this.token).callback.post({\n      data: {\n        type: InteractionResponseTypes.DEFERRED_MESSAGE_UPDATE,\n      },\n      auth: false,\n    });\n    this.deferred = true;\n\n    return options.fetchReply ? this.fetchReply() : undefined;\n  }\n\n  /**\n   * Updates the original message of the component on which the interaction was received on.\n   * @param {string|MessagePayload|InteractionUpdateOptions} options The options for the updated message\n   * @returns {Promise<Message|APIMessage|void>}\n   * @example\n   * // Remove the components from the message\n   * interaction.update({\n   *   content: \"A component interaction was received\",\n   *   components: []\n   * })\n   *   .then(console.log)\n   *   .catch(console.error);\n   */\n  async update(options) {\n    if (this.deferred || this.replied) throw new Error('INTERACTION_ALREADY_REPLIED');\n\n    let messagePayload;\n    if (options instanceof MessagePayload) messagePayload = options;\n    else messagePayload = MessagePayload.create(this, options);\n\n    const { data, files } = await messagePayload.resolveData().resolveFiles();\n\n    await this.client.api.interactions(this.id, this.token).callback.post({\n      data: {\n        type: InteractionResponseTypes.UPDATE_MESSAGE,\n        data,\n      },\n      files,\n      auth: false,\n    });\n    this.replied = true;\n\n    return options.fetchReply ? this.fetchReply() : undefined;\n  }\n\n  static applyToClass(structure, ignore = []) {\n    const props = [\n      'deferReply',\n      'reply',\n      'fetchReply',\n      'editReply',\n      'deleteReply',\n      'followUp',\n      'deferUpdate',\n      'update',\n    ];\n\n    for (const prop of props) {\n      if (ignore.includes(prop)) continue;\n      Object.defineProperty(\n        structure.prototype,\n        prop,\n        Object.getOwnPropertyDescriptor(InteractionResponses.prototype, prop),\n      );\n    }\n  }\n}\n\nmodule.exports = InteractionResponses;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/interfaces/InteractionResponses.js?")},"./node_modules/@citizenfx/discord.js/src/structures/interfaces/TextBasedChannel.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/structures/interfaces/TextBasedChannel.js ***!
  \******************************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n/* eslint-disable import/order */\nconst MessageCollector = __webpack_require__(/*! ../MessageCollector */ \"./node_modules/@citizenfx/discord.js/src/structures/MessageCollector.js\");\nconst MessagePayload = __webpack_require__(/*! ../MessagePayload */ \"./node_modules/@citizenfx/discord.js/src/structures/MessagePayload.js\");\nconst SnowflakeUtil = __webpack_require__(/*! ../../util/SnowflakeUtil */ \"./node_modules/@citizenfx/discord.js/src/util/SnowflakeUtil.js\");\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst { InteractionTypes } = __webpack_require__(/*! ../../util/Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst { TypeError, Error } = __webpack_require__(/*! ../../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst InteractionCollector = __webpack_require__(/*! ../InteractionCollector */ \"./node_modules/@citizenfx/discord.js/src/structures/InteractionCollector.js\");\n\n/**\n * Interface for classes that have text-channel-like features.\n * @interface\n */\nclass TextBasedChannel {\n  constructor() {\n    /**\n     * A manager of the messages sent to this channel\n     * @type {MessageManager}\n     */\n    this.messages = new MessageManager(this);\n\n    /**\n     * The channel's last message id, if one was sent\n     * @type {?Snowflake}\n     */\n    this.lastMessageId = null;\n\n    /**\n     * The timestamp when the last pinned message was pinned, if there was one\n     * @type {?number}\n     */\n    this.lastPinTimestamp = null;\n  }\n\n  /**\n   * The Message object of the last message in the channel, if one was sent\n   * @type {?Message}\n   * @readonly\n   */\n  get lastMessage() {\n    return this.messages.resolve(this.lastMessageId);\n  }\n\n  /**\n   * The date when the last pinned message was pinned, if there was one\n   * @type {?Date}\n   * @readonly\n   */\n  get lastPinAt() {\n    return this.lastPinTimestamp ? new Date(this.lastPinTimestamp) : null;\n  }\n\n  /**\n   * Base options provided when sending.\n   * @typedef {Object} BaseMessageOptions\n   * @property {boolean} [tts=false] Whether or not the message should be spoken aloud\n   * @property {string} [nonce=''] The nonce for the message\n   * @property {string} [content=''] The content for the message\n   * @property {MessageEmbed[]|APIEmbed[]} [embeds] The embeds for the message\n   * (see [here](https://discord.com/developers/docs/resources/channel#embed-object) for more details)\n   * @property {MessageMentionOptions} [allowedMentions] Which mentions should be parsed from the message content\n   * (see [here](https://discord.com/developers/docs/resources/channel#allowed-mentions-object) for more details)\n   * @property {FileOptions[]|BufferResolvable[]|MessageAttachment[]} [files] Files to send with the message\n   * @property {MessageActionRow[]|MessageActionRowOptions[]} [components]\n   * Action rows containing interactive components for the message (buttons, select menus)\n   * @property {MessageAttachment[]} [attachments] Attachments to send in the message\n   */\n\n  /**\n   * Options provided when sending or editing a message.\n   * @typedef {BaseMessageOptions} MessageOptions\n   * @property {ReplyOptions} [reply] The options for replying to a message\n   * @property {StickerResolvable[]} [stickers=[]] Stickers to send in the message\n   */\n\n  /**\n   * Options provided to control parsing of mentions by Discord\n   * @typedef {Object} MessageMentionOptions\n   * @property {MessageMentionTypes[]} [parse] Types of mentions to be parsed\n   * @property {Snowflake[]} [users] Snowflakes of Users to be parsed as mentions\n   * @property {Snowflake[]} [roles] Snowflakes of Roles to be parsed as mentions\n   * @property {boolean} [repliedUser=true] Whether the author of the Message being replied to should be pinged\n   */\n\n  /**\n   * Types of mentions to enable in MessageMentionOptions.\n   * - `roles`\n   * - `users`\n   * - `everyone`\n   * @typedef {string} MessageMentionTypes\n   */\n\n  /**\n   * @typedef {Object} FileOptions\n   * @property {BufferResolvable} attachment File to attach\n   * @property {string} [name='file.jpg'] Filename of the attachment\n   * @property {string} description The description of the file\n   */\n\n  /**\n   * Options for sending a message with a reply.\n   * @typedef {Object} ReplyOptions\n   * @property {MessageResolvable} messageReference The message to reply to (must be in the same channel and not system)\n   * @property {boolean} [failIfNotExists=true] Whether to error if the referenced message\n   * does not exist (creates a standard message in this case when false)\n   */\n\n  /**\n   * Sends a message to this channel.\n   * @param {string|MessagePayload|MessageOptions} options The options to provide\n   * @returns {Promise<Message>}\n   * @example\n   * // Send a basic message\n   * channel.send('hello!')\n   *   .then(message => console.log(`Sent message: ${message.content}`))\n   *   .catch(console.error);\n   * @example\n   * // Send a remote file\n   * channel.send({\n   *   files: ['https://cdn.discordapp.com/icons/222078108977594368/6e1019b3179d71046e463a75915e7244.png?size=2048']\n   * })\n   *   .then(console.log)\n   *   .catch(console.error);\n   * @example\n   * // Send a local file\n   * channel.send({\n   *   files: [{\n   *     attachment: 'entire/path/to/file.jpg',\n   *     name: 'file.jpg'\n   *     description: 'A description of the file'\n   *   }]\n   * })\n   *   .then(console.log)\n   *   .catch(console.error);\n   * @example\n   * // Send an embed with a local image inside\n   * channel.send({\n   *   content: 'This is an embed',\n   *   embeds: [\n   *     {\n   *       thumbnail: {\n   *         url: 'attachment://file.jpg'\n   *       }\n   *     }\n   *   ],\n   *   files: [{\n   *     attachment: 'entire/path/to/file.jpg',\n   *     name: 'file.jpg'\n   *     description: 'A description of the file'\n   *   }]\n   * })\n   *   .then(console.log)\n   *   .catch(console.error);\n   */\n  async send(options) {\n    const User = __webpack_require__(/*! ../User */ \"./node_modules/@citizenfx/discord.js/src/structures/User.js\");\n    const { GuildMember } = __webpack_require__(/*! ../GuildMember */ \"./node_modules/@citizenfx/discord.js/src/structures/GuildMember.js\");\n\n    if (this instanceof User || this instanceof GuildMember) {\n      const dm = await this.createDM();\n      return dm.send(options);\n    }\n\n    let messagePayload;\n\n    if (options instanceof MessagePayload) {\n      messagePayload = options.resolveData();\n    } else {\n      messagePayload = MessagePayload.create(this, options).resolveData();\n    }\n\n    const { data, files } = await messagePayload.resolveFiles();\n    const d = await this.client.api.channels[this.id].messages.post({ data, files });\n\n    return this.messages.cache.get(d.id) ?? this.messages._add(d);\n  }\n\n  /**\n   * Sends a typing indicator in the channel.\n   * @returns {Promise<void>} Resolves upon the typing status being sent\n   * @example\n   * // Start typing in a channel\n   * channel.sendTyping();\n   */\n  async sendTyping() {\n    await this.client.api.channels(this.id).typing.post();\n  }\n\n  /**\n   * Creates a Message Collector.\n   * @param {MessageCollectorOptions} [options={}] The options to pass to the collector\n   * @returns {MessageCollector}\n   * @example\n   * // Create a message collector\n   * const filter = m => m.content.includes('discord');\n   * const collector = channel.createMessageCollector({ filter, time: 15_000 });\n   * collector.on('collect', m => console.log(`Collected ${m.content}`));\n   * collector.on('end', collected => console.log(`Collected ${collected.size} items`));\n   */\n  createMessageCollector(options = {}) {\n    return new MessageCollector(this, options);\n  }\n\n  /**\n   * An object containing the same properties as CollectorOptions, but a few more:\n   * @typedef {MessageCollectorOptions} AwaitMessagesOptions\n   * @property {string[]} [errors] Stop/end reasons that cause the promise to reject\n   */\n\n  /**\n   * Similar to createMessageCollector but in promise form.\n   * Resolves with a collection of messages that pass the specified filter.\n   * @param {AwaitMessagesOptions} [options={}] Optional options to pass to the internal collector\n   * @returns {Promise<Collection<Snowflake, Message>>}\n   * @example\n   * // Await !vote messages\n   * const filter = m => m.content.startsWith('!vote');\n   * // Errors: ['time'] treats ending because of the time limit as an error\n   * channel.awaitMessages({ filter, max: 4, time: 60_000, errors: ['time'] })\n   *   .then(collected => console.log(collected.size))\n   *   .catch(collected => console.log(`After a minute, only ${collected.size} out of 4 voted.`));\n   */\n  awaitMessages(options = {}) {\n    return new Promise((resolve, reject) => {\n      const collector = this.createMessageCollector(options);\n      collector.once('end', (collection, reason) => {\n        if (options.errors?.includes(reason)) {\n          reject(collection);\n        } else {\n          resolve(collection);\n        }\n      });\n    });\n  }\n\n  /**\n   * Creates a button interaction collector.\n   * @param {MessageComponentCollectorOptions} [options={}] Options to send to the collector\n   * @returns {InteractionCollector}\n   * @example\n   * // Create a button interaction collector\n   * const filter = (interaction) => interaction.customId === 'button' && interaction.user.id === 'someId';\n   * const collector = channel.createMessageComponentCollector({ filter, time: 15_000 });\n   * collector.on('collect', i => console.log(`Collected ${i.customId}`));\n   * collector.on('end', collected => console.log(`Collected ${collected.size} items`));\n   */\n  createMessageComponentCollector(options = {}) {\n    return new InteractionCollector(this.client, {\n      ...options,\n      interactionType: InteractionTypes.MESSAGE_COMPONENT,\n      channel: this,\n    });\n  }\n\n  /**\n   * Collects a single component interaction that passes the filter.\n   * The Promise will reject if the time expires.\n   * @param {AwaitMessageComponentOptions} [options={}] Options to pass to the internal collector\n   * @returns {Promise<MessageComponentInteraction>}\n   * @example\n   * // Collect a message component interaction\n   * const filter = (interaction) => interaction.customId === 'button' && interaction.user.id === 'someId';\n   * channel.awaitMessageComponent({ filter, time: 15_000 })\n   *   .then(interaction => console.log(`${interaction.customId} was clicked!`))\n   *   .catch(console.error);\n   */\n  awaitMessageComponent(options = {}) {\n    const _options = { ...options, max: 1 };\n    return new Promise((resolve, reject) => {\n      const collector = this.createMessageComponentCollector(_options);\n      collector.once('end', (interactions, reason) => {\n        const interaction = interactions.first();\n        if (interaction) resolve(interaction);\n        else reject(new Error('INTERACTION_COLLECTOR_ERROR', reason));\n      });\n    });\n  }\n\n  /**\n   * Bulk deletes given messages that are newer than two weeks.\n   * @param {Collection<Snowflake, Message>|MessageResolvable[]|number} messages\n   * Messages or number of messages to delete\n   * @param {boolean} [filterOld=false] Filter messages to remove those which are older than two weeks automatically\n   * @returns {Promise<Collection<Snowflake, Message>>} Returns the deleted messages\n   * @example\n   * // Bulk delete messages\n   * channel.bulkDelete(5)\n   *   .then(messages => console.log(`Bulk deleted ${messages.size} messages`))\n   *   .catch(console.error);\n   */\n  async bulkDelete(messages, filterOld = false) {\n    if (Array.isArray(messages) || messages instanceof Collection) {\n      let messageIds = messages instanceof Collection ? [...messages.keys()] : messages.map(m => m.id ?? m);\n      if (filterOld) {\n        messageIds = messageIds.filter(id => Date.now() - SnowflakeUtil.timestampFrom(id) < 1_209_600_000);\n      }\n      if (messageIds.length === 0) return new Collection();\n      if (messageIds.length === 1) {\n        await this.client.api.channels(this.id).messages(messageIds[0]).delete();\n        const message = this.client.actions.MessageDelete.getMessage(\n          {\n            message_id: messageIds[0],\n          },\n          this,\n        );\n        return message ? new Collection([[message.id, message]]) : new Collection();\n      }\n      await this.client.api.channels[this.id].messages['bulk-delete'].post({ data: { messages: messageIds } });\n      return messageIds.reduce(\n        (col, id) =>\n          col.set(\n            id,\n            this.client.actions.MessageDeleteBulk.getMessage(\n              {\n                message_id: id,\n              },\n              this,\n            ),\n          ),\n        new Collection(),\n      );\n    }\n    if (!isNaN(messages)) {\n      const msgs = await this.messages.fetch({ limit: messages });\n      return this.bulkDelete(msgs, filterOld);\n    }\n    throw new TypeError('MESSAGE_BULK_DELETE_TYPE');\n  }\n\n  static applyToClass(structure, full = false, ignore = []) {\n    const props = ['send'];\n    if (full) {\n      props.push(\n        'lastMessage',\n        'lastPinAt',\n        'bulkDelete',\n        'sendTyping',\n        'createMessageCollector',\n        'awaitMessages',\n        'createMessageComponentCollector',\n        'awaitMessageComponent',\n      );\n    }\n    for (const prop of props) {\n      if (ignore.includes(prop)) continue;\n      Object.defineProperty(\n        structure.prototype,\n        prop,\n        Object.getOwnPropertyDescriptor(TextBasedChannel.prototype, prop),\n      );\n    }\n  }\n}\n\nmodule.exports = TextBasedChannel;\n\n// Fixes Circular\nconst MessageManager = __webpack_require__(/*! ../../managers/MessageManager */ \"./node_modules/@citizenfx/discord.js/src/managers/MessageManager.js\");\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/structures/interfaces/TextBasedChannel.js?")},"./node_modules/@citizenfx/discord.js/src/util/ActivityFlags.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/util/ActivityFlags.js ***!
  \**********************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst BitField = __webpack_require__(/*! ./BitField */ "./node_modules/@citizenfx/discord.js/src/util/BitField.js");\n\n/**\n * Data structure that makes it easy to interact with an {@link Activity#flags} bitfield.\n * @extends {BitField}\n */\nclass ActivityFlags extends BitField {}\n\n/**\n * @name ActivityFlags\n * @kind constructor\n * @memberof ActivityFlags\n * @param {BitFieldResolvable} [bits=0] Bit(s) to read from\n */\n\n/**\n * Numeric activity flags. All available properties:\n * * `INSTANCE`\n * * `JOIN`\n * * `SPECTATE`\n * * `JOIN_REQUEST`\n * * `SYNC`\n * * `PLAY`\n * * `PARTY_PRIVACY_FRIENDS`\n * * `PARTY_PRIVACY_VOICE_CHANNEL`\n * * `EMBEDDED`\n * @type {Object}\n * @see {@link https://discord.com/developers/docs/topics/gateway#activity-object-activity-flags}\n */\nActivityFlags.FLAGS = {\n  INSTANCE: 1 << 0,\n  JOIN: 1 << 1,\n  SPECTATE: 1 << 2,\n  JOIN_REQUEST: 1 << 3,\n  SYNC: 1 << 4,\n  PLAY: 1 << 5,\n  PARTY_PRIVACY_FRIENDS: 1 << 6,\n  PARTY_PRIVACY_VOICE_CHANNEL: 1 << 7,\n  EMBEDDED: 1 << 8,\n};\n\nmodule.exports = ActivityFlags;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/util/ActivityFlags.js?')},"./node_modules/@citizenfx/discord.js/src/util/ApplicationFlags.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/util/ApplicationFlags.js ***!
  \*************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst BitField = __webpack_require__(/*! ./BitField */ "./node_modules/@citizenfx/discord.js/src/util/BitField.js");\n\n/**\n * Data structure that makes it easy to interact with a {@link ClientApplication#flags} bitfield.\n * @extends {BitField}\n */\nclass ApplicationFlags extends BitField {}\n\n/**\n * @name ApplicationFlags\n * @kind constructor\n * @memberof ApplicationFlags\n * @param {BitFieldResolvable} [bits=0] Bit(s) to read from\n */\n\n/**\n * Bitfield of the packed bits\n * @type {number}\n * @name ApplicationFlags#bitfield\n */\n\n/**\n * Numeric application flags. All available properties:\n * * `GATEWAY_PRESENCE`\n * * `GATEWAY_PRESENCE_LIMITED`\n * * `GATEWAY_GUILD_MEMBERS`\n * * `GATEWAY_GUILD_MEMBERS_LIMITED`\n * * `VERIFICATION_PENDING_GUILD_LIMIT`\n * * `EMBEDDED`\n * * `GATEWAY_MESSAGE_CONTENT`\n * * `GATEWAY_MESSAGE_CONTENT_LIMITED`\n * @type {Object}\n * @see {@link https://discord.com/developers/docs/resources/application#application-object-application-flags}\n */\nApplicationFlags.FLAGS = {\n  GATEWAY_PRESENCE: 1 << 12,\n  GATEWAY_PRESENCE_LIMITED: 1 << 13,\n  GATEWAY_GUILD_MEMBERS: 1 << 14,\n  GATEWAY_GUILD_MEMBERS_LIMITED: 1 << 15,\n  VERIFICATION_PENDING_GUILD_LIMIT: 1 << 16,\n  EMBEDDED: 1 << 17,\n  GATEWAY_MESSAGE_CONTENT: 1 << 18,\n  GATEWAY_MESSAGE_CONTENT_LIMITED: 1 << 19,\n};\n\nmodule.exports = ApplicationFlags;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/util/ApplicationFlags.js?')},"./node_modules/@citizenfx/discord.js/src/util/BitField.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/util/BitField.js ***!
  \*****************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { RangeError } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\n\n/**\n * Data structure that makes it easy to interact with a bitfield.\n */\nclass BitField {\n  /**\n   * @param {BitFieldResolvable} [bits=this.constructor.defaultBit] Bit(s) to read from\n   */\n  constructor(bits = this.constructor.defaultBit) {\n    /**\n     * Bitfield of the packed bits\n     * @type {number|bigint}\n     */\n    this.bitfield = this.constructor.resolve(bits);\n  }\n\n  /**\n   * Checks whether the bitfield has a bit, or any of multiple bits.\n   * @param {BitFieldResolvable} bit Bit(s) to check for\n   * @returns {boolean}\n   */\n  any(bit) {\n    return (this.bitfield & this.constructor.resolve(bit)) !== this.constructor.defaultBit;\n  }\n\n  /**\n   * Checks if this bitfield equals another\n   * @param {BitFieldResolvable} bit Bit(s) to check for\n   * @returns {boolean}\n   */\n  equals(bit) {\n    return this.bitfield === this.constructor.resolve(bit);\n  }\n\n  /**\n   * Checks whether the bitfield has a bit, or multiple bits.\n   * @param {BitFieldResolvable} bit Bit(s) to check for\n   * @returns {boolean}\n   */\n  has(bit) {\n    bit = this.constructor.resolve(bit);\n    return (this.bitfield & bit) === bit;\n  }\n\n  /**\n   * Gets all given bits that are missing from the bitfield.\n   * @param {BitFieldResolvable} bits Bit(s) to check for\n   * @param {...*} hasParams Additional parameters for the has method, if any\n   * @returns {string[]}\n   */\n  missing(bits, ...hasParams) {\n    return new this.constructor(bits).remove(this).toArray(...hasParams);\n  }\n\n  /**\n   * Freezes these bits, making them immutable.\n   * @returns {Readonly<BitField>}\n   */\n  freeze() {\n    return Object.freeze(this);\n  }\n\n  /**\n   * Adds bits to these ones.\n   * @param {...BitFieldResolvable} [bits] Bits to add\n   * @returns {BitField} These bits or new BitField if the instance is frozen.\n   */\n  add(...bits) {\n    let total = this.constructor.defaultBit;\n    for (const bit of bits) {\n      total |= this.constructor.resolve(bit);\n    }\n    if (Object.isFrozen(this)) return new this.constructor(this.bitfield | total);\n    this.bitfield |= total;\n    return this;\n  }\n\n  /**\n   * Removes bits from these.\n   * @param {...BitFieldResolvable} [bits] Bits to remove\n   * @returns {BitField} These bits or new BitField if the instance is frozen.\n   */\n  remove(...bits) {\n    let total = this.constructor.defaultBit;\n    for (const bit of bits) {\n      total |= this.constructor.resolve(bit);\n    }\n    if (Object.isFrozen(this)) return new this.constructor(this.bitfield & ~total);\n    this.bitfield &= ~total;\n    return this;\n  }\n\n  /**\n   * Gets an object mapping field names to a {@link boolean} indicating whether the\n   * bit is available.\n   * @param {...*} hasParams Additional parameters for the has method, if any\n   * @returns {Object}\n   */\n  serialize(...hasParams) {\n    const serialized = {};\n    for (const [flag, bit] of Object.entries(this.constructor.FLAGS)) serialized[flag] = this.has(bit, ...hasParams);\n    return serialized;\n  }\n\n  /**\n   * Gets an {@link Array} of bitfield names based on the bits available.\n   * @param {...*} hasParams Additional parameters for the has method, if any\n   * @returns {string[]}\n   */\n  toArray(...hasParams) {\n    return Object.keys(this.constructor.FLAGS).filter(bit => this.has(bit, ...hasParams));\n  }\n\n  toJSON() {\n    return typeof this.bitfield === 'number' ? this.bitfield : this.bitfield.toString();\n  }\n\n  valueOf() {\n    return this.bitfield;\n  }\n\n  *[Symbol.iterator]() {\n    yield* this.toArray();\n  }\n\n  /**\n   * Data that can be resolved to give a bitfield. This can be:\n   * * A bit number (this can be a number literal or a value taken from {@link BitField.FLAGS})\n   * * A string bit number\n   * * An instance of BitField\n   * * An Array of BitFieldResolvable\n   * @typedef {number|string|bigint|BitField|BitFieldResolvable[]} BitFieldResolvable\n   */\n\n  /**\n   * Resolves bitfields to their numeric form.\n   * @param {BitFieldResolvable} [bit] bit(s) to resolve\n   * @returns {number|bigint}\n   */\n  static resolve(bit) {\n    const { defaultBit } = this;\n    if (typeof defaultBit === typeof bit && bit >= defaultBit) return bit;\n    if (bit instanceof BitField) return bit.bitfield;\n    if (Array.isArray(bit)) return bit.map(p => this.resolve(p)).reduce((prev, p) => prev | p, defaultBit);\n    if (typeof bit === 'string') {\n      if (typeof this.FLAGS[bit] !== 'undefined') return this.FLAGS[bit];\n      if (!isNaN(bit)) return typeof defaultBit === 'bigint' ? BigInt(bit) : Number(bit);\n    }\n    throw new RangeError('BITFIELD_INVALID', bit);\n  }\n}\n\n/**\n * Numeric bitfield flags.\n * <info>Defined in extension classes</info>\n * @type {Object}\n * @abstract\n */\nBitField.FLAGS = {};\n\n/**\n * @type {number|bigint}\n * @private\n */\nBitField.defaultBit = 0;\n\nmodule.exports = BitField;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/util/BitField.js?")},"./node_modules/@citizenfx/discord.js/src/util/Constants.js":
/*!******************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/util/Constants.js ***!
  \******************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nconst process = __webpack_require__(/*! node:process */ \"node:process\");\nconst Package = (exports.Package = __webpack_require__(/*! ../../package.json */ \"./node_modules/@citizenfx/discord.js/package.json\"));\nconst { Error, RangeError, TypeError } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\n\nexports.UserAgent = `DiscordBot (${Package.homepage}, ${Package.version}) Node.js/${process.version}`;\n\nexports.WSCodes = {\n  1000: 'WS_CLOSE_REQUESTED',\n  4004: 'TOKEN_INVALID',\n  4010: 'SHARDING_INVALID',\n  4011: 'SHARDING_REQUIRED',\n  4013: 'INVALID_INTENTS',\n  4014: 'DISALLOWED_INTENTS',\n};\n\nconst AllowedImageFormats = ['webp', 'png', 'jpg', 'jpeg', 'gif'];\n\nconst AllowedImageSizes = [16, 32, 56, 64, 96, 128, 256, 300, 512, 600, 1024, 2048, 4096];\n\nfunction makeImageUrl(root, { format = 'webp', size } = {}) {\n  if (!['undefined', 'number'].includes(typeof size)) throw new TypeError('INVALID_TYPE', 'size', 'number');\n  if (format && !AllowedImageFormats.includes(format)) throw new Error('IMAGE_FORMAT', format);\n  if (size && !AllowedImageSizes.includes(size)) throw new RangeError('IMAGE_SIZE', size);\n  return `${root}.${format}${size ? `?size=${size}` : ''}`;\n}\n\n/**\n * Options for Image URLs.\n * @typedef {StaticImageURLOptions} ImageURLOptions\n * @property {boolean} [dynamic=false] If true, the format will dynamically change to `gif` for animated avatars.\n */\n\n/**\n * Options for static Image URLs.\n * @typedef {Object} StaticImageURLOptions\n * @property {string} [format='webp'] One of `webp`, `png`, `jpg`, `jpeg`.\n * @property {number} [size] One of `16`, `32`, `56`, `64`, `96`, `128`, `256`, `300`, `512`, `600`, `1024`, `2048`,\n * `4096`\n */\n\n// https://discord.com/developers/docs/reference#image-formatting-cdn-endpoints\nexports.Endpoints = {\n  CDN(root) {\n    return {\n      Emoji: (emojiId, format = 'webp') => `${root}/emojis/${emojiId}.${format}`,\n      Asset: name => `${root}/assets/${name}`,\n      DefaultAvatar: discriminator => `${root}/embed/avatars/${discriminator}.png`,\n      Avatar: (userId, hash, format, size, dynamic = false) => {\n        if (dynamic && hash.startsWith('a_')) format = 'gif';\n        return makeImageUrl(`${root}/avatars/${userId}/${hash}`, { format, size });\n      },\n      GuildMemberAvatar: (guildId, memberId, hash, format = 'webp', size, dynamic = false) => {\n        if (dynamic && hash.startsWith('a_')) format = 'gif';\n        return makeImageUrl(`${root}/guilds/${guildId}/users/${memberId}/avatars/${hash}`, { format, size });\n      },\n      Banner: (id, hash, format, size, dynamic = false) => {\n        if (dynamic && hash.startsWith('a_')) format = 'gif';\n        return makeImageUrl(`${root}/banners/${id}/${hash}`, { format, size });\n      },\n      Icon: (guildId, hash, format, size, dynamic = false) => {\n        if (dynamic && hash.startsWith('a_')) format = 'gif';\n        return makeImageUrl(`${root}/icons/${guildId}/${hash}`, { format, size });\n      },\n      AppIcon: (appId, hash, options) => makeImageUrl(`${root}/app-icons/${appId}/${hash}`, options),\n      AppAsset: (appId, hash, options) => makeImageUrl(`${root}/app-assets/${appId}/${hash}`, options),\n      StickerPackBanner: (bannerId, format, size) =>\n        makeImageUrl(`${root}/app-assets/710982414301790216/store/${bannerId}`, { size, format }),\n      GDMIcon: (channelId, hash, format, size) =>\n        makeImageUrl(`${root}/channel-icons/${channelId}/${hash}`, { size, format }),\n      Splash: (guildId, hash, format, size) => makeImageUrl(`${root}/splashes/${guildId}/${hash}`, { size, format }),\n      DiscoverySplash: (guildId, hash, format, size) =>\n        makeImageUrl(`${root}/discovery-splashes/${guildId}/${hash}`, { size, format }),\n      TeamIcon: (teamId, hash, options) => makeImageUrl(`${root}/team-icons/${teamId}/${hash}`, options),\n      Sticker: (stickerId, stickerFormat) =>\n        `${root}/stickers/${stickerId}.${stickerFormat === 'LOTTIE' ? 'json' : 'png'}`,\n      RoleIcon: (roleId, hash, format = 'webp', size) =>\n        makeImageUrl(`${root}/role-icons/${roleId}/${hash}`, { size, format }),\n    };\n  },\n  invite: (root, code, eventId) => (eventId ? `${root}/${code}?event=${eventId}` : `${root}/${code}`),\n  scheduledEvent: (root, guildId, eventId) => `${root}/${guildId}/${eventId}`,\n  botGateway: '/gateway/bot',\n};\n\n/**\n * The current status of the client. Here are the available statuses:\n * * READY: 0\n * * CONNECTING: 1\n * * RECONNECTING: 2\n * * IDLE: 3\n * * NEARLY: 4\n * * DISCONNECTED: 5\n * * WAITING_FOR_GUILDS: 6\n * * IDENTIFYING: 7\n * * RESUMING: 8\n * @typedef {number} Status\n */\nexports.Status = {\n  READY: 0,\n  CONNECTING: 1,\n  RECONNECTING: 2,\n  IDLE: 3,\n  NEARLY: 4,\n  DISCONNECTED: 5,\n  WAITING_FOR_GUILDS: 6,\n  IDENTIFYING: 7,\n  RESUMING: 8,\n};\n\nexports.Opcodes = {\n  DISPATCH: 0,\n  HEARTBEAT: 1,\n  IDENTIFY: 2,\n  STATUS_UPDATE: 3,\n  VOICE_STATE_UPDATE: 4,\n  VOICE_GUILD_PING: 5,\n  RESUME: 6,\n  RECONNECT: 7,\n  REQUEST_GUILD_MEMBERS: 8,\n  INVALID_SESSION: 9,\n  HELLO: 10,\n  HEARTBEAT_ACK: 11,\n};\n\nexports.Events = {\n  RATE_LIMIT: 'rateLimit',\n  INVALID_REQUEST_WARNING: 'invalidRequestWarning',\n  API_RESPONSE: 'apiResponse',\n  API_REQUEST: 'apiRequest',\n  CLIENT_READY: 'ready',\n  /**\n   * @deprecated See {@link https://github.com/discord/discord-api-docs/issues/3690 this issue} for more information.\n   */\n  APPLICATION_COMMAND_CREATE: 'applicationCommandCreate',\n  /**\n   * @deprecated See {@link https://github.com/discord/discord-api-docs/issues/3690 this issue} for more information.\n   */\n  APPLICATION_COMMAND_DELETE: 'applicationCommandDelete',\n  /**\n   * @deprecated See {@link https://github.com/discord/discord-api-docs/issues/3690 this issue} for more information.\n   */\n  APPLICATION_COMMAND_UPDATE: 'applicationCommandUpdate',\n  GUILD_CREATE: 'guildCreate',\n  GUILD_DELETE: 'guildDelete',\n  GUILD_UPDATE: 'guildUpdate',\n  GUILD_UNAVAILABLE: 'guildUnavailable',\n  GUILD_MEMBER_ADD: 'guildMemberAdd',\n  GUILD_MEMBER_REMOVE: 'guildMemberRemove',\n  GUILD_MEMBER_UPDATE: 'guildMemberUpdate',\n  GUILD_MEMBER_AVAILABLE: 'guildMemberAvailable',\n  GUILD_MEMBERS_CHUNK: 'guildMembersChunk',\n  GUILD_INTEGRATIONS_UPDATE: 'guildIntegrationsUpdate',\n  GUILD_ROLE_CREATE: 'roleCreate',\n  GUILD_ROLE_DELETE: 'roleDelete',\n  INVITE_CREATE: 'inviteCreate',\n  INVITE_DELETE: 'inviteDelete',\n  GUILD_ROLE_UPDATE: 'roleUpdate',\n  GUILD_EMOJI_CREATE: 'emojiCreate',\n  GUILD_EMOJI_DELETE: 'emojiDelete',\n  GUILD_EMOJI_UPDATE: 'emojiUpdate',\n  GUILD_BAN_ADD: 'guildBanAdd',\n  GUILD_BAN_REMOVE: 'guildBanRemove',\n  CHANNEL_CREATE: 'channelCreate',\n  CHANNEL_DELETE: 'channelDelete',\n  CHANNEL_UPDATE: 'channelUpdate',\n  CHANNEL_PINS_UPDATE: 'channelPinsUpdate',\n  MESSAGE_CREATE: 'messageCreate',\n  MESSAGE_DELETE: 'messageDelete',\n  MESSAGE_UPDATE: 'messageUpdate',\n  MESSAGE_BULK_DELETE: 'messageDeleteBulk',\n  MESSAGE_REACTION_ADD: 'messageReactionAdd',\n  MESSAGE_REACTION_REMOVE: 'messageReactionRemove',\n  MESSAGE_REACTION_REMOVE_ALL: 'messageReactionRemoveAll',\n  MESSAGE_REACTION_REMOVE_EMOJI: 'messageReactionRemoveEmoji',\n  THREAD_CREATE: 'threadCreate',\n  THREAD_DELETE: 'threadDelete',\n  THREAD_UPDATE: 'threadUpdate',\n  THREAD_LIST_SYNC: 'threadListSync',\n  THREAD_MEMBER_UPDATE: 'threadMemberUpdate',\n  THREAD_MEMBERS_UPDATE: 'threadMembersUpdate',\n  USER_UPDATE: 'userUpdate',\n  PRESENCE_UPDATE: 'presenceUpdate',\n  VOICE_SERVER_UPDATE: 'voiceServerUpdate',\n  VOICE_STATE_UPDATE: 'voiceStateUpdate',\n  TYPING_START: 'typingStart',\n  WEBHOOKS_UPDATE: 'webhookUpdate',\n  INTERACTION_CREATE: 'interactionCreate',\n  ERROR: 'error',\n  WARN: 'warn',\n  DEBUG: 'debug',\n  CACHE_SWEEP: 'cacheSweep',\n  SHARD_DISCONNECT: 'shardDisconnect',\n  SHARD_ERROR: 'shardError',\n  SHARD_RECONNECTING: 'shardReconnecting',\n  SHARD_READY: 'shardReady',\n  SHARD_RESUME: 'shardResume',\n  INVALIDATED: 'invalidated',\n  RAW: 'raw',\n  STAGE_INSTANCE_CREATE: 'stageInstanceCreate',\n  STAGE_INSTANCE_UPDATE: 'stageInstanceUpdate',\n  STAGE_INSTANCE_DELETE: 'stageInstanceDelete',\n  GUILD_STICKER_CREATE: 'stickerCreate',\n  GUILD_STICKER_DELETE: 'stickerDelete',\n  GUILD_STICKER_UPDATE: 'stickerUpdate',\n  GUILD_SCHEDULED_EVENT_CREATE: 'guildScheduledEventCreate',\n  GUILD_SCHEDULED_EVENT_UPDATE: 'guildScheduledEventUpdate',\n  GUILD_SCHEDULED_EVENT_DELETE: 'guildScheduledEventDelete',\n  GUILD_SCHEDULED_EVENT_USER_ADD: 'guildScheduledEventUserAdd',\n  GUILD_SCHEDULED_EVENT_USER_REMOVE: 'guildScheduledEventUserRemove',\n};\n\nexports.ShardEvents = {\n  CLOSE: 'close',\n  DESTROYED: 'destroyed',\n  INVALID_SESSION: 'invalidSession',\n  READY: 'ready',\n  RESUMED: 'resumed',\n  ALL_READY: 'allReady',\n};\n\n/**\n * The type of Structure allowed to be a partial:\n * * USER\n * * CHANNEL (only affects DMChannels)\n * * GUILD_MEMBER\n * * MESSAGE\n * * REACTION\n * * GUILD_SCHEDULED_EVENT\n * <warn>Partials require you to put checks in place when handling data. See the \"Partial Structures\" topic on the\n * [guide](https://discordjs.guide/popular-topics/partials.html) for more information.</warn>\n * @typedef {string} PartialType\n */\nexports.PartialTypes = keyMirror(['USER', 'CHANNEL', 'GUILD_MEMBER', 'MESSAGE', 'REACTION', 'GUILD_SCHEDULED_EVENT']);\n\n/**\n * The type of a WebSocket message event, e.g. `MESSAGE_CREATE`. Here are the available events:\n * * READY\n * * RESUMED\n * * APPLICATION_COMMAND_CREATE (deprecated)\n * * APPLICATION_COMMAND_DELETE (deprecated)\n * * APPLICATION_COMMAND_UPDATE (deprecated)\n * * GUILD_CREATE\n * * GUILD_DELETE\n * * GUILD_UPDATE\n * * INVITE_CREATE\n * * INVITE_DELETE\n * * GUILD_MEMBER_ADD\n * * GUILD_MEMBER_REMOVE\n * * GUILD_MEMBER_UPDATE\n * * GUILD_MEMBERS_CHUNK\n * * GUILD_INTEGRATIONS_UPDATE\n * * GUILD_ROLE_CREATE\n * * GUILD_ROLE_DELETE\n * * GUILD_ROLE_UPDATE\n * * GUILD_BAN_ADD\n * * GUILD_BAN_REMOVE\n * * GUILD_EMOJIS_UPDATE\n * * CHANNEL_CREATE\n * * CHANNEL_DELETE\n * * CHANNEL_UPDATE\n * * CHANNEL_PINS_UPDATE\n * * MESSAGE_CREATE\n * * MESSAGE_DELETE\n * * MESSAGE_UPDATE\n * * MESSAGE_DELETE_BULK\n * * MESSAGE_REACTION_ADD\n * * MESSAGE_REACTION_REMOVE\n * * MESSAGE_REACTION_REMOVE_ALL\n * * MESSAGE_REACTION_REMOVE_EMOJI\n * * THREAD_CREATE\n * * THREAD_UPDATE\n * * THREAD_DELETE\n * * THREAD_LIST_SYNC\n * * THREAD_MEMBER_UPDATE\n * * THREAD_MEMBERS_UPDATE\n * * USER_UPDATE\n * * PRESENCE_UPDATE\n * * TYPING_START\n * * VOICE_STATE_UPDATE\n * * VOICE_SERVER_UPDATE\n * * WEBHOOKS_UPDATE\n * * INTERACTION_CREATE\n * * STAGE_INSTANCE_CREATE\n * * STAGE_INSTANCE_UPDATE\n * * STAGE_INSTANCE_DELETE\n * * GUILD_STICKERS_UPDATE\n * * GUILD_SCHEDULED_EVENT_CREATE\n * * GUILD_SCHEDULED_EVENT_UPDATE\n * * GUILD_SCHEDULED_EVENT_DELETE\n * * GUILD_SCHEDULED_EVENT_USER_ADD\n * * GUILD_SCHEDULED_EVENT_USER_REMOVE\n * @typedef {string} WSEventType\n * @see {@link https://discord.com/developers/docs/topics/gateway#commands-and-events-gateway-events}\n */\nexports.WSEvents = keyMirror([\n  'READY',\n  'RESUMED',\n  'APPLICATION_COMMAND_CREATE',\n  'APPLICATION_COMMAND_DELETE',\n  'APPLICATION_COMMAND_UPDATE',\n  'GUILD_CREATE',\n  'GUILD_DELETE',\n  'GUILD_UPDATE',\n  'INVITE_CREATE',\n  'INVITE_DELETE',\n  'GUILD_MEMBER_ADD',\n  'GUILD_MEMBER_REMOVE',\n  'GUILD_MEMBER_UPDATE',\n  'GUILD_MEMBERS_CHUNK',\n  'GUILD_INTEGRATIONS_UPDATE',\n  'GUILD_ROLE_CREATE',\n  'GUILD_ROLE_DELETE',\n  'GUILD_ROLE_UPDATE',\n  'GUILD_BAN_ADD',\n  'GUILD_BAN_REMOVE',\n  'GUILD_EMOJIS_UPDATE',\n  'CHANNEL_CREATE',\n  'CHANNEL_DELETE',\n  'CHANNEL_UPDATE',\n  'CHANNEL_PINS_UPDATE',\n  'MESSAGE_CREATE',\n  'MESSAGE_DELETE',\n  'MESSAGE_UPDATE',\n  'MESSAGE_DELETE_BULK',\n  'MESSAGE_REACTION_ADD',\n  'MESSAGE_REACTION_REMOVE',\n  'MESSAGE_REACTION_REMOVE_ALL',\n  'MESSAGE_REACTION_REMOVE_EMOJI',\n  'THREAD_CREATE',\n  'THREAD_UPDATE',\n  'THREAD_DELETE',\n  'THREAD_LIST_SYNC',\n  'THREAD_MEMBER_UPDATE',\n  'THREAD_MEMBERS_UPDATE',\n  'USER_UPDATE',\n  'PRESENCE_UPDATE',\n  'TYPING_START',\n  'VOICE_STATE_UPDATE',\n  'VOICE_SERVER_UPDATE',\n  'WEBHOOKS_UPDATE',\n  'INTERACTION_CREATE',\n  'STAGE_INSTANCE_CREATE',\n  'STAGE_INSTANCE_UPDATE',\n  'STAGE_INSTANCE_DELETE',\n  'GUILD_STICKERS_UPDATE',\n  'GUILD_SCHEDULED_EVENT_CREATE',\n  'GUILD_SCHEDULED_EVENT_UPDATE',\n  'GUILD_SCHEDULED_EVENT_DELETE',\n  'GUILD_SCHEDULED_EVENT_USER_ADD',\n  'GUILD_SCHEDULED_EVENT_USER_REMOVE',\n]);\n\n/**\n * A valid scope to request when generating an invite link.\n * <warn>Scopes that require whitelist are not considered valid for this generator</warn>\n * * `applications.builds.read`: allows reading build data for a users applications\n * * `applications.commands`: allows this bot to create commands in the server\n * * `applications.entitlements`: allows reading entitlements for a users applications\n * * `applications.store.update`: allows reading and updating of store data for a users applications\n * * `bot`: makes the bot join the selected guild\n * * `connections`: makes the endpoint for getting a users connections available\n * * `email`: allows the `/users/@me` endpoint return with an email\n * * `identify`: allows the `/users/@me` endpoint without an email\n * * `guilds`: makes the `/users/@me/guilds` endpoint available for a user\n * * `guilds.join`: allows the bot to join the user to any guild it is in using Guild#addMember\n * * `gdm.join`: allows joining the user to a group dm\n * * `webhook.incoming`: generates a webhook to a channel\n * @typedef {string} InviteScope\n * @see {@link https://discord.com/developers/docs/topics/oauth2#shared-resources-oauth2-scopes}\n */\nexports.InviteScopes = [\n  'applications.builds.read',\n  'applications.commands',\n  'applications.entitlements',\n  'applications.store.update',\n  'bot',\n  'connections',\n  'email',\n  'identify',\n  'guilds',\n  'guilds.join',\n  'gdm.join',\n  'webhook.incoming',\n];\n\n// TODO: change Integration#expireBehavior to this and clean up Integration\n/**\n * The behavior of expiring subscribers for Integrations. This can be:\n * * REMOVE_ROLE\n * * KICK\n * @typedef {string} IntegrationExpireBehavior\n * @see {@link https://discord.com/developers/docs/resources/guild#integration-object-integration-expire-behaviors}\n */\nexports.IntegrationExpireBehaviors = createEnum(['REMOVE_ROLE', 'KICK']);\n\n/**\n * The type of a message, e.g. `DEFAULT`. Here are the available types:\n * * DEFAULT\n * * RECIPIENT_ADD\n * * RECIPIENT_REMOVE\n * * CALL\n * * CHANNEL_NAME_CHANGE\n * * CHANNEL_ICON_CHANGE\n * * CHANNEL_PINNED_MESSAGE\n * * GUILD_MEMBER_JOIN\n * * USER_PREMIUM_GUILD_SUBSCRIPTION\n * * USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_1\n * * USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_2\n * * USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_3\n * * CHANNEL_FOLLOW_ADD\n * * GUILD_DISCOVERY_DISQUALIFIED\n * * GUILD_DISCOVERY_REQUALIFIED\n * * GUILD_DISCOVERY_GRACE_PERIOD_INITIAL_WARNING\n * * GUILD_DISCOVERY_GRACE_PERIOD_FINAL_WARNING\n * * THREAD_CREATED\n * * REPLY\n * * APPLICATION_COMMAND\n * * THREAD_STARTER_MESSAGE\n * * GUILD_INVITE_REMINDER\n * * CONTEXT_MENU_COMMAND\n * @typedef {string} MessageType\n * @see {@link https://discord.com/developers/docs/resources/channel#message-object-message-types}\n */\nexports.MessageTypes = [\n  'DEFAULT',\n  'RECIPIENT_ADD',\n  'RECIPIENT_REMOVE',\n  'CALL',\n  'CHANNEL_NAME_CHANGE',\n  'CHANNEL_ICON_CHANGE',\n  'CHANNEL_PINNED_MESSAGE',\n  'GUILD_MEMBER_JOIN',\n  'USER_PREMIUM_GUILD_SUBSCRIPTION',\n  'USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_1',\n  'USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_2',\n  'USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_3',\n  'CHANNEL_FOLLOW_ADD',\n  null,\n  'GUILD_DISCOVERY_DISQUALIFIED',\n  'GUILD_DISCOVERY_REQUALIFIED',\n  'GUILD_DISCOVERY_GRACE_PERIOD_INITIAL_WARNING',\n  'GUILD_DISCOVERY_GRACE_PERIOD_FINAL_WARNING',\n  'THREAD_CREATED',\n  'REPLY',\n  'APPLICATION_COMMAND',\n  'THREAD_STARTER_MESSAGE',\n  'GUILD_INVITE_REMINDER',\n  'CONTEXT_MENU_COMMAND',\n];\n\n/**\n * The name of an item to be swept in Sweepers\n * * `applicationCommands` - both global and guild commands\n * * `bans`\n * * `emojis`\n * * `invites` - accepts the `lifetime` property, using it will sweep based on expires timestamp\n * * `guildMembers`\n * * `messages` - accepts the `lifetime` property, using it will sweep based on edited or created timestamp\n * * `presences`\n * * `reactions`\n * * `stageInstances`\n * * `stickers`\n * * `threadMembers`\n * * `threads` - accepts the `lifetime` property, using it will sweep archived threads based on archived timestamp\n * * `users`\n * * `voiceStates`\n * @typedef {string} SweeperKey\n */\nexports.SweeperKeys = [\n  'applicationCommands',\n  'bans',\n  'emojis',\n  'invites',\n  'guildMembers',\n  'messages',\n  'presences',\n  'reactions',\n  'stageInstances',\n  'stickers',\n  'threadMembers',\n  'threads',\n  'users',\n  'voiceStates',\n];\n\n/**\n * The types of messages that are `System`. The available types are `MessageTypes` excluding:\n * * DEFAULT\n * * REPLY\n * * APPLICATION_COMMAND\n * * CONTEXT_MENU_COMMAND\n * @typedef {string} SystemMessageType\n */\nexports.SystemMessageTypes = exports.MessageTypes.filter(\n  type => type && !['DEFAULT', 'REPLY', 'APPLICATION_COMMAND', 'CONTEXT_MENU_COMMAND'].includes(type),\n);\n\n/**\n * <info>Bots cannot set a `CUSTOM` activity type, it is only for custom statuses received from users</info>\n * The type of an activity of a user's presence. Here are the available types:\n * * PLAYING\n * * STREAMING\n * * LISTENING\n * * WATCHING\n * * CUSTOM\n * * COMPETING\n * @typedef {string} ActivityType\n * @see {@link https://discord.com/developers/docs/game-sdk/activities#data-models-activitytype-enum}\n */\nexports.ActivityTypes = createEnum(['PLAYING', 'STREAMING', 'LISTENING', 'WATCHING', 'CUSTOM', 'COMPETING']);\n\n/**\n * All available channel types:\n * * `GUILD_TEXT` - a guild text channel\n * * `DM` - a DM channel\n * * `GUILD_VOICE` - a guild voice channel\n * * `GROUP_DM` - a group DM channel\n * * `GUILD_CATEGORY` - a guild category channel\n * * `GUILD_NEWS` - a guild news channel\n * * `GUILD_STORE` - a guild store channel\n * <warn>Store channels are deprecated and will be removed from Discord in March 2022. See\n * [Self-serve Game Selling Deprecation](https://support-dev.discord.com/hc/en-us/articles/4414590563479)\n * for more information.</warn>\n * * `GUILD_NEWS_THREAD` - a guild news channel's public thread channel\n * * `GUILD_PUBLIC_THREAD` - a guild text channel's public thread channel\n * * `GUILD_PRIVATE_THREAD` - a guild text channel's private thread channel\n * * `GUILD_STAGE_VOICE` - a guild stage voice channel\n * * `UNKNOWN` - a generic channel of unknown type, could be Channel or GuildChannel\n * @typedef {string} ChannelType\n * @see {@link https://discord.com/developers/docs/resources/channel#channel-object-channel-types}\n */\nexports.ChannelTypes = createEnum([\n  'GUILD_TEXT',\n  'DM',\n  'GUILD_VOICE',\n  'GROUP_DM',\n  'GUILD_CATEGORY',\n  'GUILD_NEWS',\n  'GUILD_STORE',\n  ...Array(3).fill(null),\n  // 10\n  'GUILD_NEWS_THREAD',\n  'GUILD_PUBLIC_THREAD',\n  'GUILD_PRIVATE_THREAD',\n  'GUILD_STAGE_VOICE',\n]);\n\n/**\n * The channels that are text-based.\n * * DMChannel\n * * TextChannel\n * * NewsChannel\n * * ThreadChannel\n * @typedef {DMChannel|TextChannel|NewsChannel|ThreadChannel} TextBasedChannels\n */\n\n/**\n * The types of channels that are text-based. The available types are:\n * * DM\n * * GUILD_TEXT\n * * GUILD_NEWS\n * * GUILD_NEWS_THREAD\n * * GUILD_PUBLIC_THREAD\n * * GUILD_PRIVATE_THREAD\n * @typedef {string} TextBasedChannelTypes\n */\nexports.TextBasedChannelTypes = [\n  'DM',\n  'GUILD_TEXT',\n  'GUILD_NEWS',\n  'GUILD_NEWS_THREAD',\n  'GUILD_PUBLIC_THREAD',\n  'GUILD_PRIVATE_THREAD',\n];\n\n/**\n * The types of channels that are threads. The available types are:\n * * GUILD_NEWS_THREAD\n * * GUILD_PUBLIC_THREAD\n * * GUILD_PRIVATE_THREAD\n * @typedef {string} ThreadChannelTypes\n */\nexports.ThreadChannelTypes = ['GUILD_NEWS_THREAD', 'GUILD_PUBLIC_THREAD', 'GUILD_PRIVATE_THREAD'];\n\n/**\n * The types of channels that are voice-based. The available types are:\n * * GUILD_VOICE\n * * GUILD_STAGE_VOICE\n * @typedef {string} VoiceBasedChannelTypes\n */\nexports.VoiceBasedChannelTypes = ['GUILD_VOICE', 'GUILD_STAGE_VOICE'];\n\nexports.ClientApplicationAssetTypes = {\n  SMALL: 1,\n  BIG: 2,\n};\n\nexports.Colors = {\n  DEFAULT: 0x000000,\n  WHITE: 0xffffff,\n  AQUA: 0x1abc9c,\n  GREEN: 0x57f287,\n  BLUE: 0x3498db,\n  YELLOW: 0xfee75c,\n  PURPLE: 0x9b59b6,\n  LUMINOUS_VIVID_PINK: 0xe91e63,\n  FUCHSIA: 0xeb459e,\n  GOLD: 0xf1c40f,\n  ORANGE: 0xe67e22,\n  RED: 0xed4245,\n  GREY: 0x95a5a6,\n  NAVY: 0x34495e,\n  DARK_AQUA: 0x11806a,\n  DARK_GREEN: 0x1f8b4c,\n  DARK_BLUE: 0x206694,\n  DARK_PURPLE: 0x71368a,\n  DARK_VIVID_PINK: 0xad1457,\n  DARK_GOLD: 0xc27c0e,\n  DARK_ORANGE: 0xa84300,\n  DARK_RED: 0x992d22,\n  DARK_GREY: 0x979c9f,\n  DARKER_GREY: 0x7f8c8d,\n  LIGHT_GREY: 0xbcc0c0,\n  DARK_NAVY: 0x2c3e50,\n  BLURPLE: 0x5865f2,\n  GREYPLE: 0x99aab5,\n  DARK_BUT_NOT_BLACK: 0x2c2f33,\n  NOT_QUITE_BLACK: 0x23272a,\n};\n\n/**\n * The value set for the explicit content filter levels for a guild:\n * * DISABLED\n * * MEMBERS_WITHOUT_ROLES\n * * ALL_MEMBERS\n * @typedef {string} ExplicitContentFilterLevel\n * @see {@link https://discord.com/developers/docs/resources/guild#guild-object-explicit-content-filter-level}\n */\nexports.ExplicitContentFilterLevels = createEnum(['DISABLED', 'MEMBERS_WITHOUT_ROLES', 'ALL_MEMBERS']);\n\n/**\n * The value set for the verification levels for a guild:\n * * NONE\n * * LOW\n * * MEDIUM\n * * HIGH\n * * VERY_HIGH\n * @typedef {string} VerificationLevel\n * @see {@link https://discord.com/developers/docs/resources/guild#guild-object-verification-level}\n */\nexports.VerificationLevels = createEnum(['NONE', 'LOW', 'MEDIUM', 'HIGH', 'VERY_HIGH']);\n\n/**\n * An error encountered while performing an API request. Here are the potential errors:\n * * UNKNOWN_ACCOUNT\n * * UNKNOWN_APPLICATION\n * * UNKNOWN_CHANNEL\n * * UNKNOWN_GUILD\n * * UNKNOWN_INTEGRATION\n * * UNKNOWN_INVITE\n * * UNKNOWN_MEMBER\n * * UNKNOWN_MESSAGE\n * * UNKNOWN_OVERWRITE\n * * UNKNOWN_PROVIDER\n * * UNKNOWN_ROLE\n * * UNKNOWN_TOKEN\n * * UNKNOWN_USER\n * * UNKNOWN_EMOJI\n * * UNKNOWN_WEBHOOK\n * * UNKNOWN_WEBHOOK_SERVICE\n * * UNKNOWN_SESSION\n * * UNKNOWN_BAN\n * * UNKNOWN_SKU\n * * UNKNOWN_STORE_LISTING\n * * UNKNOWN_ENTITLEMENT\n * * UNKNOWN_BUILD\n * * UNKNOWN_LOBBY\n * * UNKNOWN_BRANCH\n * * UNKNOWN_STORE_DIRECTORY_LAYOUT\n * * UNKNOWN_REDISTRIBUTABLE\n * * UNKNOWN_GIFT_CODE\n * * UNKNOWN_STREAM\n * * UNKNOWN_PREMIUM_SERVER_SUBSCRIBE_COOLDOWN\n * * UNKNOWN_GUILD_TEMPLATE\n * * UNKNOWN_DISCOVERABLE_SERVER_CATEGORY\n * * UNKNOWN_STICKER\n * * UNKNOWN_INTERACTION\n * * UNKNOWN_APPLICATION_COMMAND\n * * UNKNOWN_APPLICATION_COMMAND_PERMISSIONS\n * * UNKNOWN_STAGE_INSTANCE\n * * UNKNOWN_GUILD_MEMBER_VERIFICATION_FORM\n * * UNKNOWN_GUILD_WELCOME_SCREEN\n * * UNKNOWN_GUILD_SCHEDULED_EVENT\n * * UNKNOWN_GUILD_SCHEDULED_EVENT_USER\n * * BOT_PROHIBITED_ENDPOINT\n * * BOT_ONLY_ENDPOINT\n * * CANNOT_SEND_EXPLICIT_CONTENT\n * * NOT_AUTHORIZED\n * * SLOWMODE_RATE_LIMIT\n * * ACCOUNT_OWNER_ONLY\n * * ANNOUNCEMENT_EDIT_LIMIT_EXCEEDED\n * * CHANNEL_HIT_WRITE_RATELIMIT\n * * SERVER_HIT_WRITE_RATELIMIT\n * * CONTENT_NOT_ALLOWED\n * * GUILD_PREMIUM_LEVEL_TOO_LOW\n * * MAXIMUM_GUILDS\n * * MAXIMUM_FRIENDS\n * * MAXIMUM_PINS\n * * MAXIMUM_RECIPIENTS\n * * MAXIMUM_ROLES\n * * MAXIMUM_WEBHOOKS\n * * MAXIMUM_EMOJIS\n * * MAXIMUM_REACTIONS\n * * MAXIMUM_CHANNELS\n * * MAXIMUM_ATTACHMENTS\n * * MAXIMUM_INVITES\n * * MAXIMUM_ANIMATED_EMOJIS\n * * MAXIMUM_SERVER_MEMBERS\n * * MAXIMUM_NUMBER_OF_SERVER_CATEGORIES\n * * GUILD_ALREADY_HAS_TEMPLATE\n * * MAXIMUM_THREAD_PARTICIPANTS\n * * MAXIMUM_NON_GUILD_MEMBERS_BANS\n * * MAXIMUM_BAN_FETCHES\n * * MAXIMUM_NUMBER_OF_UNCOMPLETED_GUILD_SCHEDULED_EVENTS_REACHED\n * * MAXIMUM_NUMBER_OF_STICKERS_REACHED\n * * MAXIMUM_PRUNE_REQUESTS\n * * MAXIMUM_GUILD_WIDGET_SETTINGS_UPDATE\n * * UNAUTHORIZED\n * * ACCOUNT_VERIFICATION_REQUIRED\n * * DIRECT_MESSAGES_TOO_FAST\n * * REQUEST_ENTITY_TOO_LARGE\n * * FEATURE_TEMPORARILY_DISABLED\n * * USER_BANNED\n * * TARGET_USER_NOT_CONNECTED_TO_VOICE\n * * ALREADY_CROSSPOSTED\n * * MISSING_ACCESS\n * * INVALID_ACCOUNT_TYPE\n * * CANNOT_EXECUTE_ON_DM\n * * EMBED_DISABLED\n * * CANNOT_EDIT_MESSAGE_BY_OTHER\n * * CANNOT_SEND_EMPTY_MESSAGE\n * * CANNOT_MESSAGE_USER\n * * CANNOT_SEND_MESSAGES_IN_VOICE_CHANNEL\n * * CHANNEL_VERIFICATION_LEVEL_TOO_HIGH\n * * OAUTH2_APPLICATION_BOT_ABSENT\n * * MAXIMUM_OAUTH2_APPLICATIONS\n * * INVALID_OAUTH_STATE\n * * MISSING_PERMISSIONS\n * * INVALID_AUTHENTICATION_TOKEN\n * * NOTE_TOO_LONG\n * * INVALID_BULK_DELETE_QUANTITY\n * * CANNOT_PIN_MESSAGE_IN_OTHER_CHANNEL\n * * INVALID_OR_TAKEN_INVITE_CODE\n * * CANNOT_EXECUTE_ON_SYSTEM_MESSAGE\n * * CANNOT_EXECUTE_ON_CHANNEL_TYPE\n * * INVALID_OAUTH_TOKEN\n * * MISSING_OAUTH_SCOPE\n * * INVALID_WEBHOOK_TOKEN\n * * INVALID_ROLE\n * * INVALID_RECIPIENTS\n * * BULK_DELETE_MESSAGE_TOO_OLD\n * * INVALID_FORM_BODY\n * * INVITE_ACCEPTED_TO_GUILD_NOT_CONTAINING_BOT\n * * INVALID_API_VERSION\n * * FILE_UPLOADED_EXCEEDS_MAXIMUM_SIZE\n * * INVALID_FILE_UPLOADED\n * * CANNOT_SELF_REDEEM_GIFT\n * * INVALID_GUILD\n * * PAYMENT_SOURCE_REQUIRED\n * * CANNOT_DELETE_COMMUNITY_REQUIRED_CHANNEL\n * * INVALID_STICKER_SENT\n * * INVALID_OPERATION_ON_ARCHIVED_THREAD\n * * INVALID_THREAD_NOTIFICATION_SETTINGS\n * * PARAMETER_EARLIER_THAN_CREATION\n * * GUILD_NOT_AVAILABLE_IN_LOCATION\n * * GUILD_MONETIZATION_REQUIRED\n * * INSUFFICIENT_BOOSTS\n * * INVALID_JSON\n * * TWO_FACTOR_REQUIRED\n * * NO_USERS_WITH_DISCORDTAG_EXIST\n * * REACTION_BLOCKED\n * * RESOURCE_OVERLOADED\n * * STAGE_ALREADY_OPEN\n * * CANNOT_REPLY_WITHOUT_READ_MESSAGE_HISTORY_PERMISSION\n * * MESSAGE_ALREADY_HAS_THREAD\n * * THREAD_LOCKED\n * * MAXIMUM_ACTIVE_THREADS\n * * MAXIMUM_ACTIVE_ANNOUNCEMENT_THREAD\n * * INVALID_JSON_FOR_UPLOADED_LOTTIE_FILE\n * * UPLOADED_LOTTIES_CANNOT_CONTAIN_RASTERIZED_IMAGES\n * * STICKER_MAXIMUM_FRAMERATE_EXCEEDED\n * * STICKER_FRAME_COUNT_EXCEEDS_MAXIMUM_OF_1000_FRAMES\n * * LOTTIE_ANIMATION_MAXIMUM_DIMENSIONS_EXCEEDED\n * * STICKER_FRAME_RATE_IS_TOO_SMALL_OR_TOO_LARGE\n * * STICKER_ANIMATION_DURATION_EXCEEDS_MAXIMUM_OF_5_SECONDS\n * * CANNOT_UPDATE_A_FINISHED_EVENT\n * * FAILED_TO_CREATE_STAGE_NEEDED_FOR_STAGE_EVENT\n * @typedef {string} APIError\n * @see {@link https://discord.com/developers/docs/topics/opcodes-and-status-codes#json-json-error-codes}\n */\nexports.APIErrors = {\n  UNKNOWN_ACCOUNT: 10001,\n  UNKNOWN_APPLICATION: 10002,\n  UNKNOWN_CHANNEL: 10003,\n  UNKNOWN_GUILD: 10004,\n  UNKNOWN_INTEGRATION: 10005,\n  UNKNOWN_INVITE: 10006,\n  UNKNOWN_MEMBER: 10007,\n  UNKNOWN_MESSAGE: 10008,\n  UNKNOWN_OVERWRITE: 10009,\n  UNKNOWN_PROVIDER: 10010,\n  UNKNOWN_ROLE: 10011,\n  UNKNOWN_TOKEN: 10012,\n  UNKNOWN_USER: 10013,\n  UNKNOWN_EMOJI: 10014,\n  UNKNOWN_WEBHOOK: 10015,\n  UNKNOWN_WEBHOOK_SERVICE: 10016,\n  UNKNOWN_SESSION: 10020,\n  UNKNOWN_BAN: 10026,\n  UNKNOWN_SKU: 10027,\n  UNKNOWN_STORE_LISTING: 10028,\n  UNKNOWN_ENTITLEMENT: 10029,\n  UNKNOWN_BUILD: 10030,\n  UNKNOWN_LOBBY: 10031,\n  UNKNOWN_BRANCH: 10032,\n  UNKNOWN_STORE_DIRECTORY_LAYOUT: 10033,\n  UNKNOWN_REDISTRIBUTABLE: 10036,\n  UNKNOWN_GIFT_CODE: 10038,\n  UNKNOWN_STREAM: 10049,\n  UNKNOWN_PREMIUM_SERVER_SUBSCRIBE_COOLDOWN: 10050,\n  UNKNOWN_GUILD_TEMPLATE: 10057,\n  UNKNOWN_DISCOVERABLE_SERVER_CATEGORY: 10059,\n  UNKNOWN_STICKER: 10060,\n  UNKNOWN_INTERACTION: 10062,\n  UNKNOWN_APPLICATION_COMMAND: 10063,\n  UNKNOWN_APPLICATION_COMMAND_PERMISSIONS: 10066,\n  UNKNOWN_STAGE_INSTANCE: 10067,\n  UNKNOWN_GUILD_MEMBER_VERIFICATION_FORM: 10068,\n  UNKNOWN_GUILD_WELCOME_SCREEN: 10069,\n  UNKNOWN_GUILD_SCHEDULED_EVENT: 10070,\n  UNKNOWN_GUILD_SCHEDULED_EVENT_USER: 10071,\n  BOT_PROHIBITED_ENDPOINT: 20001,\n  BOT_ONLY_ENDPOINT: 20002,\n  CANNOT_SEND_EXPLICIT_CONTENT: 20009,\n  NOT_AUTHORIZED: 20012,\n  SLOWMODE_RATE_LIMIT: 20016,\n  ACCOUNT_OWNER_ONLY: 20018,\n  ANNOUNCEMENT_EDIT_LIMIT_EXCEEDED: 20022,\n  CHANNEL_HIT_WRITE_RATELIMIT: 20028,\n  SERVER_HIT_WRITE_RATELIMIT: 20029,\n  CONTENT_NOT_ALLOWED: 20031,\n  GUILD_PREMIUM_LEVEL_TOO_LOW: 20035,\n  MAXIMUM_GUILDS: 30001,\n  MAXIMUM_FRIENDS: 30002,\n  MAXIMUM_PINS: 30003,\n  MAXIMUM_RECIPIENTS: 30004,\n  MAXIMUM_ROLES: 30005,\n  MAXIMUM_WEBHOOKS: 30007,\n  MAXIMUM_EMOJIS: 30008,\n  MAXIMUM_REACTIONS: 30010,\n  MAXIMUM_CHANNELS: 30013,\n  MAXIMUM_ATTACHMENTS: 30015,\n  MAXIMUM_INVITES: 30016,\n  MAXIMUM_ANIMATED_EMOJIS: 30018,\n  MAXIMUM_SERVER_MEMBERS: 30019,\n  MAXIMUM_NUMBER_OF_SERVER_CATEGORIES: 30030,\n  GUILD_ALREADY_HAS_TEMPLATE: 30031,\n  MAXIMUM_THREAD_PARTICIPANTS: 30033,\n  MAXIMUM_NON_GUILD_MEMBERS_BANS: 30035,\n  MAXIMUM_BAN_FETCHES: 30037,\n  MAXIMUM_NUMBER_OF_UNCOMPLETED_GUILD_SCHEDULED_EVENTS_REACHED: 30038,\n  MAXIMUM_NUMBER_OF_STICKERS_REACHED: 30039,\n  MAXIMUM_PRUNE_REQUESTS: 30040,\n  MAXIMUM_GUILD_WIDGET_SETTINGS_UPDATE: 30042,\n  UNAUTHORIZED: 40001,\n  ACCOUNT_VERIFICATION_REQUIRED: 40002,\n  DIRECT_MESSAGES_TOO_FAST: 40003,\n  REQUEST_ENTITY_TOO_LARGE: 40005,\n  FEATURE_TEMPORARILY_DISABLED: 40006,\n  USER_BANNED: 40007,\n  TARGET_USER_NOT_CONNECTED_TO_VOICE: 40032,\n  ALREADY_CROSSPOSTED: 40033,\n  MISSING_ACCESS: 50001,\n  INVALID_ACCOUNT_TYPE: 50002,\n  CANNOT_EXECUTE_ON_DM: 50003,\n  EMBED_DISABLED: 50004,\n  CANNOT_EDIT_MESSAGE_BY_OTHER: 50005,\n  CANNOT_SEND_EMPTY_MESSAGE: 50006,\n  CANNOT_MESSAGE_USER: 50007,\n  CANNOT_SEND_MESSAGES_IN_VOICE_CHANNEL: 50008,\n  CHANNEL_VERIFICATION_LEVEL_TOO_HIGH: 50009,\n  OAUTH2_APPLICATION_BOT_ABSENT: 50010,\n  MAXIMUM_OAUTH2_APPLICATIONS: 50011,\n  INVALID_OAUTH_STATE: 50012,\n  MISSING_PERMISSIONS: 50013,\n  INVALID_AUTHENTICATION_TOKEN: 50014,\n  NOTE_TOO_LONG: 50015,\n  INVALID_BULK_DELETE_QUANTITY: 50016,\n  CANNOT_PIN_MESSAGE_IN_OTHER_CHANNEL: 50019,\n  INVALID_OR_TAKEN_INVITE_CODE: 50020,\n  CANNOT_EXECUTE_ON_SYSTEM_MESSAGE: 50021,\n  CANNOT_EXECUTE_ON_CHANNEL_TYPE: 50024,\n  INVALID_OAUTH_TOKEN: 50025,\n  MISSING_OAUTH_SCOPE: 50026,\n  INVALID_WEBHOOK_TOKEN: 50027,\n  INVALID_ROLE: 50028,\n  INVALID_RECIPIENTS: 50033,\n  BULK_DELETE_MESSAGE_TOO_OLD: 50034,\n  INVALID_FORM_BODY: 50035,\n  INVITE_ACCEPTED_TO_GUILD_NOT_CONTAINING_BOT: 50036,\n  INVALID_API_VERSION: 50041,\n  FILE_UPLOADED_EXCEEDS_MAXIMUM_SIZE: 50045,\n  INVALID_FILE_UPLOADED: 50046,\n  CANNOT_SELF_REDEEM_GIFT: 50054,\n  INVALID_GUILD: 50055,\n  PAYMENT_SOURCE_REQUIRED: 50070,\n  CANNOT_DELETE_COMMUNITY_REQUIRED_CHANNEL: 50074,\n  INVALID_STICKER_SENT: 50081,\n  INVALID_OPERATION_ON_ARCHIVED_THREAD: 50083,\n  INVALID_THREAD_NOTIFICATION_SETTINGS: 50084,\n  PARAMETER_EARLIER_THAN_CREATION: 50085,\n  GUILD_NOT_AVAILABLE_IN_LOCATION: 50095,\n  GUILD_MONETIZATION_REQUIRED: 50097,\n  INSUFFICIENT_BOOSTS: 50101,\n  INVALID_JSON: 50109,\n  TWO_FACTOR_REQUIRED: 60003,\n  NO_USERS_WITH_DISCORDTAG_EXIST: 80004,\n  REACTION_BLOCKED: 90001,\n  RESOURCE_OVERLOADED: 130000,\n  STAGE_ALREADY_OPEN: 150006,\n  CANNOT_REPLY_WITHOUT_READ_MESSAGE_HISTORY_PERMISSION: 160002,\n  MESSAGE_ALREADY_HAS_THREAD: 160004,\n  THREAD_LOCKED: 160005,\n  MAXIMUM_ACTIVE_THREADS: 160006,\n  MAXIMUM_ACTIVE_ANNOUNCEMENT_THREADS: 160007,\n  INVALID_JSON_FOR_UPLOADED_LOTTIE_FILE: 170001,\n  UPLOADED_LOTTIES_CANNOT_CONTAIN_RASTERIZED_IMAGES: 170002,\n  STICKER_MAXIMUM_FRAMERATE_EXCEEDED: 170003,\n  STICKER_FRAME_COUNT_EXCEEDS_MAXIMUM_OF_1000_FRAMES: 170004,\n  LOTTIE_ANIMATION_MAXIMUM_DIMENSIONS_EXCEEDED: 170005,\n  STICKER_FRAME_RATE_IS_TOO_SMALL_OR_TOO_LARGE: 170006,\n  STICKER_ANIMATION_DURATION_EXCEEDS_MAXIMUM_OF_5_SECONDS: 170007,\n  CANNOT_UPDATE_A_FINISHED_EVENT: 180000,\n  FAILED_TO_CREATE_STAGE_NEEDED_FOR_STAGE_EVENT: 180002,\n};\n\n/**\n * The value set for a guild's default message notifications, e.g. `ALL_MESSAGES`. Here are the available types:\n * * ALL_MESSAGES\n * * ONLY_MENTIONS\n * @typedef {string} DefaultMessageNotificationLevel\n * @see {@link https://discord.com/developers/docs/resources/guild#guild-object-default-message-notification-level}\n */\nexports.DefaultMessageNotificationLevels = createEnum(['ALL_MESSAGES', 'ONLY_MENTIONS']);\n\n/**\n * The value set for a team member's membership state:\n * * INVITED\n * * ACCEPTED\n * @typedef {string} MembershipState\n * @see {@link https://discord.com/developers/docs/topics/teams#data-models-membership-state-enum}\n */\nexports.MembershipStates = createEnum([null, 'INVITED', 'ACCEPTED']);\n\n/**\n * The value set for a webhook's type:\n * * Incoming\n * * Channel Follower\n * * Application\n * @typedef {string} WebhookType\n * @see {@link https://discord.com/developers/docs/resources/webhook#webhook-object-webhook-types}\n */\nexports.WebhookTypes = createEnum([null, 'Incoming', 'Channel Follower', 'Application']);\n\n/**\n * The value set for a sticker's type:\n * * STANDARD\n * * GUILD\n * @typedef {string} StickerType\n * @see {@link https://discord.com/developers/docs/resources/sticker#sticker-object-sticker-types}\n */\nexports.StickerTypes = createEnum([null, 'STANDARD', 'GUILD']);\n\n/**\n * The value set for a sticker's format type:\n * * PNG\n * * APNG\n * * LOTTIE\n * @typedef {string} StickerFormatType\n * @see {@link https://discord.com/developers/docs/resources/sticker#sticker-object-sticker-format-types}\n */\nexports.StickerFormatTypes = createEnum([null, 'PNG', 'APNG', 'LOTTIE']);\n\n/**\n * An overwrite type:\n * * role\n * * member\n * @typedef {string} OverwriteType\n * @see {@link https://discord.com/developers/docs/resources/channel#overwrite-object-overwrite-structure}\n */\nexports.OverwriteTypes = createEnum(['role', 'member']);\n\n/* eslint-disable max-len */\n/**\n * The type of an {@link ApplicationCommand} object:\n * * CHAT_INPUT\n * * USER\n * * MESSAGE\n * @typedef {string} ApplicationCommandType\n * @see {@link https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-types}\n */\nexports.ApplicationCommandTypes = createEnum([null, 'CHAT_INPUT', 'USER', 'MESSAGE']);\n\n/**\n * The type of an {@link ApplicationCommandOption} object:\n * * SUB_COMMAND\n * * SUB_COMMAND_GROUP\n * * STRING\n * * INTEGER\n * * BOOLEAN\n * * USER\n * * CHANNEL\n * * ROLE\n * * MENTIONABLE\n * * NUMBER\n * @typedef {string} ApplicationCommandOptionType\n * @see {@link https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-option-type}\n */\nexports.ApplicationCommandOptionTypes = createEnum([\n  null,\n  'SUB_COMMAND',\n  'SUB_COMMAND_GROUP',\n  'STRING',\n  'INTEGER',\n  'BOOLEAN',\n  'USER',\n  'CHANNEL',\n  'ROLE',\n  'MENTIONABLE',\n  'NUMBER',\n]);\n\n/**\n * The type of an {@link ApplicationCommandPermissions} object:\n * * ROLE\n * * USER\n * @typedef {string} ApplicationCommandPermissionType\n * @see {@link https://discord.com/developers/docs/interactions/application-commands#application-command-permissions-object-application-command-permission-type}\n */\nexports.ApplicationCommandPermissionTypes = createEnum([null, 'ROLE', 'USER']);\n\n/**\n * The type of an {@link Interaction} object:\n * * PING\n * * APPLICATION_COMMAND\n * * MESSAGE_COMPONENT\n * * APPLICATION_COMMAND_AUTOCOMPLETE\n * @typedef {string} InteractionType\n * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-type}\n */\nexports.InteractionTypes = createEnum([\n  null,\n  'PING',\n  'APPLICATION_COMMAND',\n  'MESSAGE_COMPONENT',\n  'APPLICATION_COMMAND_AUTOCOMPLETE',\n]);\n\n/**\n * The type of an interaction response:\n * * PONG\n * * CHANNEL_MESSAGE_WITH_SOURCE\n * * DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE\n * * DEFERRED_MESSAGE_UPDATE\n * * UPDATE_MESSAGE\n * * APPLICATION_COMMAND_AUTOCOMPLETE_RESULT\n * @typedef {string} InteractionResponseType\n * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-response-object-interaction-callback-type}\n */\nexports.InteractionResponseTypes = createEnum([\n  null,\n  'PONG',\n  null,\n  null,\n  'CHANNEL_MESSAGE_WITH_SOURCE',\n  'DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE',\n  'DEFERRED_MESSAGE_UPDATE',\n  'UPDATE_MESSAGE',\n  'APPLICATION_COMMAND_AUTOCOMPLETE_RESULT',\n]);\n\n/**\n * The type of a message component\n * * ACTION_ROW\n * * BUTTON\n * * SELECT_MENU\n * @typedef {string} MessageComponentType\n * @see {@link https://discord.com/developers/docs/interactions/message-components#component-object-component-types}\n */\nexports.MessageComponentTypes = createEnum([null, 'ACTION_ROW', 'BUTTON', 'SELECT_MENU']);\n\n/**\n * The style of a message button\n * * PRIMARY\n * * SECONDARY\n * * SUCCESS\n * * DANGER\n * * LINK\n * @typedef {string} MessageButtonStyle\n * @see {@link https://discord.com/developers/docs/interactions/message-components#button-object-button-styles}\n */\nexports.MessageButtonStyles = createEnum([null, 'PRIMARY', 'SECONDARY', 'SUCCESS', 'DANGER', 'LINK']);\n\n/**\n * The required MFA level for a guild\n * * NONE\n * * ELEVATED\n * @typedef {string} MFALevel\n * @see {@link https://discord.com/developers/docs/resources/guild#guild-object-mfa-level}\n */\nexports.MFALevels = createEnum(['NONE', 'ELEVATED']);\n\n/**\n * NSFW level of a Guild:\n * * DEFAULT\n * * EXPLICIT\n * * SAFE\n * * AGE_RESTRICTED\n * @typedef {string} NSFWLevel\n * @see {@link https://discord.com/developers/docs/resources/guild#guild-object-guild-nsfw-level}\n */\nexports.NSFWLevels = createEnum(['DEFAULT', 'EXPLICIT', 'SAFE', 'AGE_RESTRICTED']);\n\n/**\n * Privacy level of a {@link StageInstance} object:\n * * PUBLIC\n * * GUILD_ONLY\n * @typedef {string} PrivacyLevel\n * @see {@link https://discord.com/developers/docs/resources/stage-instance#stage-instance-object-privacy-level}\n */\nexports.PrivacyLevels = createEnum([null, 'PUBLIC', 'GUILD_ONLY']);\n\n/**\n * Privacy level of a {@link GuildScheduledEvent} object:\n * * GUILD_ONLY\n * @typedef {string} GuildScheduledEventPrivacyLevel\n * @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-privacy-level}\n */\nexports.GuildScheduledEventPrivacyLevels = createEnum([null, null, 'GUILD_ONLY']);\n\n/**\n * The premium tier (Server Boost level) of a guild:\n * * NONE\n * * TIER_1\n * * TIER_2\n * * TIER_3\n * @typedef {string} PremiumTier\n * @see {@link https://discord.com/developers/docs/resources/guild#guild-object-premium-tier}\n */\nexports.PremiumTiers = createEnum(['NONE', 'TIER_1', 'TIER_2', 'TIER_3']);\n\n/**\n * The status of a {@link GuildScheduledEvent}:\n * * SCHEDULED\n * * ACTIVE\n * * COMPLETED\n * * CANCELED\n * @typedef {string} GuildScheduledEventStatus\n * @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-status}\n */\nexports.GuildScheduledEventStatuses = createEnum([null, 'SCHEDULED', 'ACTIVE', 'COMPLETED', 'CANCELED']);\n\n/**\n * The entity type of a {@link GuildScheduledEvent}:\n * * NONE\n * * STAGE_INSTANCE\n * * VOICE\n * * EXTERNAL\n * @typedef {string} GuildScheduledEventEntityType\n * @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-types}\n */\nexports.GuildScheduledEventEntityTypes = createEnum([null, 'STAGE_INSTANCE', 'VOICE', 'EXTERNAL']);\n/* eslint-enable max-len */\n\nexports._cleanupSymbol = Symbol('djsCleanup');\n\nfunction keyMirror(arr) {\n  let tmp = Object.create(null);\n  for (const value of arr) tmp[value] = value;\n  return tmp;\n}\n\nfunction createEnum(keys) {\n  const obj = {};\n  for (const [index, key] of keys.entries()) {\n    if (key === null) continue;\n    obj[key] = index;\n    obj[index] = key;\n  }\n  return obj;\n}\n\n/**\n * @typedef {Object} Constants Constants that can be used in an enum or object-like way.\n * @property {ActivityType} ActivityTypes The type of an activity of a users presence.\n * @property {APIError} APIErrors An error encountered while performing an API request.\n * @property {ApplicationCommandOptionType} ApplicationCommandOptionTypes\n * The type of an {@link ApplicationCommandOption} object.\n * @property {ApplicationCommandPermissionType} ApplicationCommandPermissionTypes\n * The type of an {@link ApplicationCommandPermissions} object.\n * @property {ChannelType} ChannelTypes All available channel types.\n * @property {DefaultMessageNotificationLevel} DefaultMessageNotificationLevels\n * The value set for a guild's default message notifications.\n * @property {ExplicitContentFilterLevel} ExplicitContentFilterLevels\n * The value set for the explicit content filter levels for a guild.\n * @property {GuildScheduledEventStatus} GuildScheduledEventStatuses The status of a {@link GuildScheduledEvent} object.\n * @property {GuildScheduledEventEntityType} GuildScheduledEventEntityTypes The entity type of a\n * {@link GuildScheduledEvent} object.\n * @property {GuildScheduledEventPrivacyLevel} GuildScheduledEventPrivacyLevels Privacy level of a\n * {@link GuildScheduledEvent} object.\n * @property {InteractionResponseType} InteractionResponseTypes The type of an interaction response.\n * @property {InteractionType} InteractionTypes The type of an {@link Interaction} object.\n * @property {MembershipState} MembershipStates The value set for a team member's membership state.\n * @property {MessageButtonStyle} MessageButtonStyles The style of a message button.\n * @property {MessageComponentType} MessageComponentTypes The type of a message component.\n * @property {MFALevel} MFALevels The required MFA level for a guild.\n * @property {NSFWLevel} NSFWLevels NSFW level of a guild.\n * @property {OverwriteType} OverwriteTypes An overwrite type.\n * @property {PartialType} PartialTypes The type of Structure allowed to be a partial.\n * @property {PremiumTier} PremiumTiers The premium tier (Server Boost level) of a guild.\n * @property {PrivacyLevel} PrivacyLevels Privacy level of a {@link StageInstance} object.\n * @property {Status} Status The available statuses of the client.\n * @property {StickerFormatType} StickerFormatTypes The value set for a sticker's format type.\n * @property {StickerType} StickerTypes The value set for a sticker's type.\n * @property {VerificationLevel} VerificationLevels The value set for the verification levels for a guild.\n * @property {WebhookType} WebhookTypes The value set for a webhook's type.\n * @property {WSEventType} WSEvents The type of a WebSocket message event.\n */\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/util/Constants.js?")},"./node_modules/@citizenfx/discord.js/src/util/DataResolver.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/util/DataResolver.js ***!
  \*********************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst { Buffer } = __webpack_require__(/*! node:buffer */ "node:buffer");\nconst fs = __webpack_require__(/*! node:fs */ "node:fs");\nconst path = __webpack_require__(/*! node:path */ "node:path");\nconst stream = __webpack_require__(/*! node:stream */ "node:stream");\nconst fetch = __webpack_require__(/*! node-fetch */ "./node_modules/node-fetch/lib/index.js");\nconst { Error: DiscordError, TypeError } = __webpack_require__(/*! ../errors */ "./node_modules/@citizenfx/discord.js/src/errors/index.js");\nconst Invite = __webpack_require__(/*! ../structures/Invite */ "./node_modules/@citizenfx/discord.js/src/structures/Invite.js");\n\n/**\n * The DataResolver identifies different objects and tries to resolve a specific piece of information from them.\n * @private\n */\nclass DataResolver extends null {\n  /**\n   * Data that can be resolved to give an invite code. This can be:\n   * * An invite code\n   * * An invite URL\n   * @typedef {string} InviteResolvable\n   */\n\n  /**\n   * Data that can be resolved to give a template code. This can be:\n   * * A template code\n   * * A template URL\n   * @typedef {string} GuildTemplateResolvable\n   */\n\n  /**\n   * Resolves the string to a code based on the passed regex.\n   * @param {string} data The string to resolve\n   * @param {RegExp} regex The RegExp used to extract the code\n   * @returns {string}\n   */\n  static resolveCode(data, regex) {\n    return data.matchAll(regex).next().value?.[1] ?? data;\n  }\n\n  /**\n   * Resolves InviteResolvable to an invite code.\n   * @param {InviteResolvable} data The invite resolvable to resolve\n   * @returns {string}\n   */\n  static resolveInviteCode(data) {\n    return this.resolveCode(data, Invite.INVITES_PATTERN);\n  }\n\n  /**\n   * Resolves GuildTemplateResolvable to a template code.\n   * @param {GuildTemplateResolvable} data The template resolvable to resolve\n   * @returns {string}\n   */\n  static resolveGuildTemplateCode(data) {\n    const GuildTemplate = __webpack_require__(/*! ../structures/GuildTemplate */ "./node_modules/@citizenfx/discord.js/src/structures/GuildTemplate.js");\n    return this.resolveCode(data, GuildTemplate.GUILD_TEMPLATES_PATTERN);\n  }\n\n  /**\n   * Resolves a Base64Resolvable, a string, or a BufferResolvable to a Base 64 image.\n   * @param {BufferResolvable|Base64Resolvable} image The image to be resolved\n   * @returns {Promise<?string>}\n   */\n  static async resolveImage(image) {\n    if (!image) return null;\n    if (typeof image === \'string\' && image.startsWith(\'data:\')) {\n      return image;\n    }\n    const file = await this.resolveFileAsBuffer(image);\n    return DataResolver.resolveBase64(file);\n  }\n\n  /**\n   * Data that resolves to give a Base64 string, typically for image uploading. This can be:\n   * * A Buffer\n   * * A base64 string\n   * @typedef {Buffer|string} Base64Resolvable\n   */\n\n  /**\n   * Resolves a Base64Resolvable to a Base 64 image.\n   * @param {Base64Resolvable} data The base 64 resolvable you want to resolve\n   * @returns {?string}\n   */\n  static resolveBase64(data) {\n    if (Buffer.isBuffer(data)) return `data:image/jpg;base64,${data.toString(\'base64\')}`;\n    return data;\n  }\n\n  /**\n   * Data that can be resolved to give a Buffer. This can be:\n   * * A Buffer\n   * * The path to a local file\n   * * A URL <warn>When provided a URL, discord.js will fetch the URL internally in order to create a Buffer.\n   * This can pose a security risk when the URL has not been sanitized</warn>\n   * @typedef {string|Buffer} BufferResolvable\n   */\n\n  /**\n   * @external Stream\n   * @see {@link https://nodejs.org/api/stream.html}\n   */\n\n  /**\n   * Resolves a BufferResolvable to a Buffer or a Stream.\n   * @param {BufferResolvable|Stream} resource The buffer or stream resolvable to resolve\n   * @returns {Promise<Buffer|Stream>}\n   */\n  static async resolveFile(resource) {\n    if (Buffer.isBuffer(resource) || resource instanceof stream.Readable) return resource;\n    if (typeof resource === \'string\') {\n      if (/^https?:\\/\\//.test(resource)) {\n        const res = await fetch(resource);\n        return res.body;\n      }\n\n      return new Promise((resolve, reject) => {\n        const file = path.resolve(resource);\n        fs.stat(file, (err, stats) => {\n          if (err) return reject(err);\n          if (!stats.isFile()) return reject(new DiscordError(\'FILE_NOT_FOUND\', file));\n          return resolve(fs.createReadStream(file));\n        });\n      });\n    }\n\n    throw new TypeError(\'REQ_RESOURCE_TYPE\');\n  }\n\n  /**\n   * Resolves a BufferResolvable to a Buffer.\n   * @param {BufferResolvable|Stream} resource The buffer or stream resolvable to resolve\n   * @returns {Promise<Buffer>}\n   */\n  static async resolveFileAsBuffer(resource) {\n    const file = await this.resolveFile(resource);\n    if (Buffer.isBuffer(file)) return file;\n\n    const buffers = [];\n    for await (const data of file) buffers.push(data);\n    return Buffer.concat(buffers);\n  }\n}\n\nmodule.exports = DataResolver;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/util/DataResolver.js?')},"./node_modules/@citizenfx/discord.js/src/util/Formatters.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/util/Formatters.js ***!
  \*******************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst {\n  blockQuote,\n  bold,\n  channelMention,\n  codeBlock,\n  formatEmoji,\n  hideLinkEmbed,\n  hyperlink,\n  inlineCode,\n  italic,\n  memberNicknameMention,\n  quote,\n  roleMention,\n  spoiler,\n  strikethrough,\n  time,\n  TimestampStyles,\n  underscore,\n  userMention,\n} = __webpack_require__(/*! @discordjs/builders */ "./node_modules/@discordjs/builders/dist/index.js");\n\n/**\n * Contains various Discord-specific functions for formatting messages.\n */\nclass Formatters extends null {}\n\n/**\n * Formats the content into a block quote. This needs to be at the start of the line for Discord to format it.\n * @method blockQuote\n * @memberof Formatters\n * @param {string} content The content to wrap.\n * @returns {string}\n */\nFormatters.blockQuote = blockQuote;\n\n/**\n * Formats the content into bold text.\n * @method bold\n * @memberof Formatters\n * @param {string} content The content to wrap.\n * @returns {string}\n */\nFormatters.bold = bold;\n\n/**\n * Formats a channel id into a channel mention.\n * @method channelMention\n * @memberof Formatters\n * @param {string} channelId The channel id to format.\n * @returns {string}\n */\nFormatters.channelMention = channelMention;\n\n/**\n * Wraps the content inside a code block with an optional language.\n * @method codeBlock\n * @memberof Formatters\n * @param {string} contentOrLanguage The language to use, content if a second parameter isn\'t provided.\n * @param {string} [content] The content to wrap.\n * @returns {string}\n */\nFormatters.codeBlock = codeBlock;\n\n/**\n * Formats an emoji id into a fully qualified emoji identifier\n * @method formatEmoji\n * @memberof Formatters\n * @param {string} emojiId The emoji id to format.\n * @param {boolean} [animated] Whether the emoji is animated or not. Defaults to `false`\n * @returns {string}\n */\nFormatters.formatEmoji = formatEmoji;\n\n/**\n * Wraps the URL into `<>`, which stops it from embedding.\n * @method hideLinkEmbed\n * @memberof Formatters\n * @param {string} content The content to wrap.\n * @returns {string}\n */\nFormatters.hideLinkEmbed = hideLinkEmbed;\n\n/**\n * Formats the content and the URL into a masked URL with an optional title.\n * @method hyperlink\n * @memberof Formatters\n * @param {string} content The content to display.\n * @param {string} url The URL the content links to.\n * @param {string} [title] The title shown when hovering on the masked link.\n * @returns {string}\n */\nFormatters.hyperlink = hyperlink;\n\n/**\n * Wraps the content inside \\`backticks\\`, which formats it as inline code.\n * @method inlineCode\n * @memberof Formatters\n * @param {string} content The content to wrap.\n * @returns {string}\n */\nFormatters.inlineCode = inlineCode;\n\n/**\n * Formats the content into italic text.\n * @method italic\n * @memberof Formatters\n * @param {string} content The content to wrap.\n * @returns {string}\n */\nFormatters.italic = italic;\n\n/**\n * Formats a user id into a member-nickname mention.\n * @method memberNicknameMention\n * @memberof Formatters\n * @param {string} memberId The user id to format.\n * @returns {string}\n */\nFormatters.memberNicknameMention = memberNicknameMention;\n\n/**\n * Formats the content into a quote. This needs to be at the start of the line for Discord to format it.\n * @method quote\n * @memberof Formatters\n * @param {string} content The content to wrap.\n * @returns {string}\n */\nFormatters.quote = quote;\n\n/**\n * Formats a role id into a role mention.\n * @method roleMention\n * @memberof Formatters\n * @param {string} roleId The role id to format.\n * @returns {string}\n */\nFormatters.roleMention = roleMention;\n\n/**\n * Formats the content into spoiler text.\n * @method spoiler\n * @memberof Formatters\n * @param {string} content The content to spoiler.\n * @returns {string}\n */\nFormatters.spoiler = spoiler;\n\n/**\n * Formats the content into strike-through text.\n * @method strikethrough\n * @memberof Formatters\n * @param {string} content The content to wrap.\n * @returns {string}\n */\nFormatters.strikethrough = strikethrough;\n\n/**\n * Formats a date into a short date-time string.\n * @method time\n * @memberof Formatters\n * @param {number|Date} [date] The date to format.\n * @param {TimestampStylesString} [style] The style to use.\n * @returns {string}\n */\nFormatters.time = time;\n\n/**\n * A message formatting timestamp style, as defined in\n * [here](https://discord.com/developers/docs/reference#message-formatting-timestamp-styles).\n * * `t` Short time format, consisting of hours and minutes, e.g. 16:20.\n * * `T` Long time format, consisting of hours, minutes, and seconds, e.g. 16:20:30.\n * * `d` Short date format, consisting of day, month, and year, e.g. 20/04/2021.\n * * `D` Long date format, consisting of day, month, and year, e.g. 20 April 2021.\n * * `f` Short date-time format, consisting of short date and short time formats, e.g. 20 April 2021 16:20.\n * * `F` Long date-time format, consisting of long date and short time formats, e.g. Tuesday, 20 April 2021 16:20.\n * * `R` Relative time format, consisting of a relative duration format, e.g. 2 months ago.\n * @typedef {string} TimestampStylesString\n */\n\n/**\n * The message formatting timestamp\n * [styles](https://discord.com/developers/docs/reference#message-formatting-timestamp-styles) supported by Discord.\n * @memberof Formatters\n * @type {Object<string, TimestampStylesString>}\n */\nFormatters.TimestampStyles = TimestampStyles;\n\n/**\n * Formats the content into underscored text.\n * @method underscore\n * @memberof Formatters\n * @param {string} content The content to wrap.\n * @returns {string}\n */\nFormatters.underscore = underscore;\n\n/**\n * Formats a user id into a user mention.\n * @method userMention\n * @memberof Formatters\n * @param {string} userId The user id to format.\n * @returns {string}\n */\nFormatters.userMention = userMention;\n\nmodule.exports = Formatters;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/util/Formatters.js?')},"./node_modules/@citizenfx/discord.js/src/util/Intents.js":
/*!****************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/util/Intents.js ***!
  \****************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\nconst BitField = __webpack_require__(/*! ./BitField */ "./node_modules/@citizenfx/discord.js/src/util/BitField.js");\n\n/**\n * Data structure that makes it easy to calculate intents.\n * @extends {BitField}\n */\nclass Intents extends BitField {}\n\n/**\n * @name Intents\n * @kind constructor\n * @memberof Intents\n * @param {IntentsResolvable} [bits=0] Bit(s) to read from\n */\n\n/**\n * Data that can be resolved to give a permission number. This can be:\n * * A string (see {@link Intents.FLAGS})\n * * An intents flag\n * * An instance of Intents\n * * An array of IntentsResolvable\n * @typedef {string|number|Intents|IntentsResolvable[]} IntentsResolvable\n */\n\n/**\n * Numeric WebSocket intents. All available properties:\n * * `GUILDS`\n * * `GUILD_MEMBERS`\n * * `GUILD_BANS`\n * * `GUILD_EMOJIS_AND_STICKERS`\n * * `GUILD_INTEGRATIONS`\n * * `GUILD_WEBHOOKS`\n * * `GUILD_INVITES`\n * * `GUILD_VOICE_STATES`\n * * `GUILD_PRESENCES`\n * * `GUILD_MESSAGES`\n * * `GUILD_MESSAGE_REACTIONS`\n * * `GUILD_MESSAGE_TYPING`\n * * `DIRECT_MESSAGES`\n * * `DIRECT_MESSAGE_REACTIONS`\n * * `DIRECT_MESSAGE_TYPING`\n * * `GUILD_SCHEDULED_EVENTS`\n * @type {Object}\n * @see {@link https://discord.com/developers/docs/topics/gateway#list-of-intents}\n */\nIntents.FLAGS = {\n  GUILDS: 1 << 0,\n  GUILD_MEMBERS: 1 << 1,\n  GUILD_BANS: 1 << 2,\n  GUILD_EMOJIS_AND_STICKERS: 1 << 3,\n  GUILD_INTEGRATIONS: 1 << 4,\n  GUILD_WEBHOOKS: 1 << 5,\n  GUILD_INVITES: 1 << 6,\n  GUILD_VOICE_STATES: 1 << 7,\n  GUILD_PRESENCES: 1 << 8,\n  GUILD_MESSAGES: 1 << 9,\n  GUILD_MESSAGE_REACTIONS: 1 << 10,\n  GUILD_MESSAGE_TYPING: 1 << 11,\n  DIRECT_MESSAGES: 1 << 12,\n  DIRECT_MESSAGE_REACTIONS: 1 << 13,\n  DIRECT_MESSAGE_TYPING: 1 << 14,\n  GUILD_SCHEDULED_EVENTS: 1 << 16,\n};\n\nmodule.exports = Intents;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/util/Intents.js?')},"./node_modules/@citizenfx/discord.js/src/util/LimitedCollection.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/util/LimitedCollection.js ***!
  \**************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { setInterval, clearInterval } = __webpack_require__(/*! node:timers */ \"node:timers\");\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst { _cleanupSymbol } = __webpack_require__(/*! ./Constants.js */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst Sweepers = __webpack_require__(/*! ./Sweepers.js */ \"./node_modules/@citizenfx/discord.js/src/util/Sweepers.js\");\nconst { TypeError } = __webpack_require__(/*! ../errors/DJSError.js */ \"./node_modules/@citizenfx/discord.js/src/errors/DJSError.js\");\n\n/**\n * @typedef {Function} SweepFilter\n * @param {LimitedCollection} collection The collection being swept\n * @returns {Function|null} Return `null` to skip sweeping, otherwise a function passed to `sweep()`,\n * See {@link [Collection#sweep](https://discord.js.org/#/docs/collection/main/class/Collection?scrollTo=sweep)}\n * for the definition of this function.\n */\n\n/**\n * Options for defining the behavior of a LimitedCollection\n * @typedef {Object} LimitedCollectionOptions\n * @property {?number} [maxSize=Infinity] The maximum size of the Collection\n * @property {?Function} [keepOverLimit=null] A function, which is passed the value and key of an entry, ran to decide\n * to keep an entry past the maximum size\n * @property {?SweepFilter} [sweepFilter=null] DEPRECATED: There is no direct alternative to this,\n * however most of its purpose is fulfilled by {@link Client#sweepers}\n * A function ran every `sweepInterval` to determine how to sweep\n * @property {?number} [sweepInterval=0] DEPRECATED: There is no direct alternative to this,\n * however most of its purpose is fulfilled by {@link Client#sweepers}\n * How frequently, in seconds, to sweep the collection.\n */\n\n/**\n * A Collection which holds a max amount of entries and sweeps periodically.\n * @extends {Collection}\n * @param {LimitedCollectionOptions} [options={}] Options for constructing the Collection.\n * @param {Iterable} [iterable=null] Optional entries passed to the Map constructor.\n */\nclass LimitedCollection extends Collection {\n  constructor(options = {}, iterable) {\n    if (typeof options !== 'object' || options === null) {\n      throw new TypeError('INVALID_TYPE', 'options', 'object', true);\n    }\n    const { maxSize = Infinity, keepOverLimit = null, sweepInterval = 0, sweepFilter = null } = options;\n\n    if (typeof maxSize !== 'number') {\n      throw new TypeError('INVALID_TYPE', 'maxSize', 'number');\n    }\n    if (keepOverLimit !== null && typeof keepOverLimit !== 'function') {\n      throw new TypeError('INVALID_TYPE', 'keepOverLimit', 'function');\n    }\n    if (typeof sweepInterval !== 'number') {\n      throw new TypeError('INVALID_TYPE', 'sweepInterval', 'number');\n    }\n    if (sweepFilter !== null && typeof sweepFilter !== 'function') {\n      throw new TypeError('INVALID_TYPE', 'sweepFilter', 'function');\n    }\n\n    super(iterable);\n\n    /**\n     * The max size of the Collection.\n     * @type {number}\n     */\n    this.maxSize = maxSize;\n\n    /**\n     * A function called to check if an entry should be kept when the Collection is at max size.\n     * @type {?Function}\n     */\n    this.keepOverLimit = keepOverLimit;\n\n    /**\n     * A function called every sweep interval that returns a function passed to `sweep`.\n     * @deprecated in favor of {@link Client#sweepers}\n     * @type {?SweepFilter}\n     */\n    this.sweepFilter = sweepFilter;\n\n    /**\n     * The id of the interval being used to sweep.\n     * @deprecated in favor of {@link Client#sweepers}\n     * @type {?Timeout}\n     */\n    this.interval =\n      sweepInterval > 0 && sweepInterval !== Infinity && sweepFilter\n        ? setInterval(() => {\n            const sweepFn = this.sweepFilter(this);\n            if (sweepFn === null) return;\n            if (typeof sweepFn !== 'function') throw new TypeError('SWEEP_FILTER_RETURN');\n            this.sweep(sweepFn);\n          }, sweepInterval * 1_000).unref()\n        : null;\n  }\n\n  set(key, value) {\n    if (this.maxSize === 0) return this;\n    if (this.size >= this.maxSize && !this.has(key)) {\n      for (const [k, v] of this.entries()) {\n        const keep = this.keepOverLimit?.(v, k, this) ?? false;\n        if (!keep) {\n          this.delete(k);\n          break;\n        }\n      }\n    }\n    return super.set(key, value);\n  }\n\n  /**\n   * Create a sweepFilter function that uses a lifetime to determine sweepability.\n   * @param {LifetimeFilterOptions} [options={}] The options used to generate the filter function\n   * @deprecated Use {@link Sweepers.filterByLifetime} instead\n   * @returns {SweepFilter}\n   */\n  static filterByLifetime({\n    lifetime = 14400,\n    getComparisonTimestamp = e => e?.createdTimestamp,\n    excludeFromSweep = () => false,\n  } = {}) {\n    return Sweepers.filterByLifetime({ lifetime, getComparisonTimestamp, excludeFromSweep });\n  }\n\n  [_cleanupSymbol]() {\n    return this.interval ? () => clearInterval(this.interval) : null;\n  }\n\n  static get [Symbol.species]() {\n    return Collection;\n  }\n}\n\nmodule.exports = LimitedCollection;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/util/LimitedCollection.js?")},"./node_modules/@citizenfx/discord.js/src/util/MessageFlags.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/util/MessageFlags.js ***!
  \*********************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst BitField = __webpack_require__(/*! ./BitField */ "./node_modules/@citizenfx/discord.js/src/util/BitField.js");\n\n/**\n * Data structure that makes it easy to interact with a {@link Message#flags} bitfield.\n * @extends {BitField}\n */\nclass MessageFlags extends BitField {}\n\n/**\n * @name MessageFlags\n * @kind constructor\n * @memberof MessageFlags\n * @param {BitFieldResolvable} [bits=0] Bit(s) to read from\n */\n\n/**\n * Bitfield of the packed bits\n * @type {number}\n * @name MessageFlags#bitfield\n */\n\n/**\n * Numeric message flags. All available properties:\n * * `CROSSPOSTED`\n * * `IS_CROSSPOST`\n * * `SUPPRESS_EMBEDS`\n * * `SOURCE_MESSAGE_DELETED`\n * * `URGENT`\n * * `HAS_THREAD`\n * * `EPHEMERAL`\n * * `LOADING`\n * @type {Object}\n * @see {@link https://discord.com/developers/docs/resources/channel#message-object-message-flags}\n */\nMessageFlags.FLAGS = {\n  CROSSPOSTED: 1 << 0,\n  IS_CROSSPOST: 1 << 1,\n  SUPPRESS_EMBEDS: 1 << 2,\n  SOURCE_MESSAGE_DELETED: 1 << 3,\n  URGENT: 1 << 4,\n  HAS_THREAD: 1 << 5,\n  EPHEMERAL: 1 << 6,\n  LOADING: 1 << 7,\n};\n\nmodule.exports = MessageFlags;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/util/MessageFlags.js?')},"./node_modules/@citizenfx/discord.js/src/util/Options.js":
/*!****************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/util/Options.js ***!
  \****************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst process = __webpack_require__(/*! node:process */ \"node:process\");\n\n/**\n * Rate limit data\n * @typedef {Object} RateLimitData\n * @property {number} timeout Time until this rate limit ends, in ms\n * @property {number} limit The maximum amount of requests of this endpoint\n * @property {string} method The HTTP method of this request\n * @property {string} path The path of the request relative to the HTTP endpoint\n * @property {string} route The route of the request relative to the HTTP endpoint\n * @property {boolean} global Whether this is a global rate limit\n */\n\n/**\n * Whether this rate limit should throw an Error\n * @typedef {Function} RateLimitQueueFilter\n * @param {RateLimitData} rateLimitData The data of this rate limit\n * @returns {boolean|Promise<boolean>}\n */\n\n/**\n * @typedef {Function} CacheFactory\n * @param {Function} manager The manager class the cache is being requested from.\n * @param {Function} holds The class that the cache will hold.\n * @returns {Collection} A Collection used to store the cache of the manager.\n */\n\n/**\n * Options for a client.\n * @typedef {Object} ClientOptions\n * @property {number|number[]|string} [shards] The shard's id to run, or an array of shard ids. If not specified,\n * the client will spawn {@link ClientOptions#shardCount} shards. If set to `auto`, it will fetch the\n * recommended amount of shards from Discord and spawn that amount\n * @property {number} [shardCount=1] The total amount of shards used by all processes of this bot\n * (e.g. recommended shard count, shard count of the ShardingManager)\n * @property {CacheFactory} [makeCache] Function to create a cache.\n * You can use your own function, or the {@link Options} class to customize the Collection used for the cache.\n * <warn>Overriding the cache used in `GuildManager`, `ChannelManager`, `GuildChannelManager`, `RoleManager`,\n * and `PermissionOverwriteManager` is unsupported and **will** break functionality</warn>\n * @property {number} [messageCacheLifetime=0] DEPRECATED: Pass `lifetime` to `sweepers.messages` instead.\n * How long a message should stay in the cache until it is considered sweepable (in seconds, 0 for forever)\n * @property {number} [messageSweepInterval=0] DEPRECATED: Pass `interval` to `sweepers.messages` instead.\n * How frequently to remove messages from the cache that are older than the message cache lifetime\n * (in seconds, 0 for never)\n * @property {MessageMentionOptions} [allowedMentions] Default value for {@link MessageOptions#allowedMentions}\n * @property {number} [invalidRequestWarningInterval=0] The number of invalid REST requests (those that return\n * 401, 403, or 429) in a 10 minute window between emitted warnings (0 for no warnings). That is, if set to 500,\n * warnings will be emitted at invalid request number 500, 1000, 1500, and so on.\n * @property {PartialType[]} [partials] Structures allowed to be partial. This means events can be emitted even when\n * they're missing all the data for a particular structure. See the \"Partial Structures\" topic on the\n * [guide](https://discordjs.guide/popular-topics/partials.html) for some\n * important usage information, as partials require you to put checks in place when handling data.\n * @property {number} [restWsBridgeTimeout=5000] Maximum time permitted between REST responses and their\n * corresponding WebSocket events\n * @property {number} [restTimeOffset=500] Extra time in milliseconds to wait before continuing to make REST\n * requests (higher values will reduce rate-limiting errors on bad connections)\n * @property {number} [restRequestTimeout=15000] Time to wait before cancelling a REST request, in milliseconds\n * @property {number} [restSweepInterval=60] How frequently to delete inactive request buckets, in seconds\n * (or 0 for never)\n * @property {number} [restGlobalRateLimit=0] How many requests to allow sending per second (0 for unlimited, 50 for\n * the standard global limit used by Discord)\n * @property {string[]|RateLimitQueueFilter} [rejectOnRateLimit] Decides how rate limits and pre-emptive throttles\n * should be handled. If this option is an array containing the prefix of the request route (e.g. /channels to match any\n * route starting with /channels, such as /channels/222197033908436994/messages) or a function returning true, a\n * {@link RateLimitError} will be thrown. Otherwise the request will be queued for later\n * @property {number} [retryLimit=1] How many times to retry on 5XX errors\n * (Infinity for an indefinite amount of retries)\n * @property {boolean} [failIfNotExists=true] Default value for {@link ReplyMessageOptions#failIfNotExists}\n * @property {string[]} [userAgentSuffix] An array of additional bot info to be appended to the end of the required\n * [User Agent](https://discord.com/developers/docs/reference#user-agent) header\n * @property {PresenceData} [presence={}] Presence data to use upon login\n * @property {IntentsResolvable} intents Intents to enable for this connection\n * @property {number} [waitGuildTimeout=15_000] Time in milliseconds that Clients with the GUILDS intent should wait for\n * missing guilds to be recieved before starting the bot. If not specified, the default is 15 seconds.\n * @property {SweeperOptions} [sweepers={}] Options for cache sweeping\n * @property {WebsocketOptions} [ws] Options for the WebSocket\n * @property {HTTPOptions} [http] HTTP options\n */\n\n/**\n * Options for {@link Sweepers} defining the behavior of cache sweeping\n * @typedef {Object<SweeperKey, SweepOptions>} SweeperOptions\n */\n\n/**\n * Options for sweeping a single type of item from cache\n * @typedef {Object} SweepOptions\n * @property {number} interval The interval (in seconds) at which to perform sweeping of the item\n * @property {number} [lifetime] How long an item should stay in cache until it is considered sweepable.\n * <warn>This property is only valid for the `invites`, `messages`, and `threads` keys. The `filter` property\n * is mutually exclusive to this property and takes priority</warn>\n * @property {GlobalSweepFilter} filter The function used to determine the function passed to the sweep method\n * <info>This property is optional when the key is `invites`, `messages`, or `threads` and `lifetime` is set</info>\n */\n\n/**\n * WebSocket options (these are left as snake_case to match the API)\n * @typedef {Object} WebsocketOptions\n * @property {number} [large_threshold=50] Number of members in a guild after which offline users will no longer be\n * sent in the initial guild member list, must be between 50 and 250\n */\n\n/**\n * HTTPS Agent options.\n * @typedef {Object} AgentOptions\n * @see {@link https://nodejs.org/api/https.html#https_class_https_agent}\n * @see {@link https://nodejs.org/api/http.html#http_new_agent_options}\n */\n\n/**\n * HTTP options\n * @typedef {Object} HTTPOptions\n * @property {number} [version=9] API version to use\n * @property {AgentOptions} [agent={}] HTTPS Agent options\n * @property {string} [api='https://discord.com/api'] Base URL of the API\n * @property {string} [cdn='https://cdn.discordapp.com'] Base URL of the CDN\n * @property {string} [invite='https://discord.gg'] Base URL of invites\n * @property {string} [template='https://discord.new'] Base URL of templates\n * @property {Object} [headers] Additional headers to send for all API requests\n * @property {string} [scheduledEvent='https://discord.com/events'] Base URL of guild scheduled events\n */\n\n/**\n * Contains various utilities for client options.\n */\nclass Options extends null {\n  /**\n   * The default client options.\n   * @returns {ClientOptions}\n   */\n  static createDefault() {\n    return {\n      waitGuildTimeout: 15_000,\n      shardCount: 1,\n      makeCache: this.cacheWithLimits(this.defaultMakeCacheSettings),\n      messageCacheLifetime: 0,\n      messageSweepInterval: 0,\n      invalidRequestWarningInterval: 0,\n      partials: [],\n      restWsBridgeTimeout: 5_000,\n      restRequestTimeout: 15_000,\n      restGlobalRateLimit: 0,\n      retryLimit: 1,\n      restTimeOffset: 500,\n      restSweepInterval: 60,\n      failIfNotExists: true,\n      userAgentSuffix: [],\n      presence: {},\n      sweepers: {},\n      ws: {\n        large_threshold: 50,\n        compress: false,\n        properties: {\n          $os: process.platform,\n          $browser: 'discord.js',\n          $device: 'discord.js',\n        },\n        version: 9,\n      },\n      http: {\n        agent: {},\n        version: 9,\n        api: 'https://discord.com/api',\n        cdn: 'https://cdn.discordapp.com',\n        invite: 'https://discord.gg',\n        template: 'https://discord.new',\n        scheduledEvent: 'https://discord.com/events',\n      },\n    };\n  }\n\n  /**\n   * Create a cache factory using predefined settings to sweep or limit.\n   * @param {Object<string, LimitedCollectionOptions|number>} [settings={}] Settings passed to the relevant constructor.\n   * If no setting is provided for a manager, it uses Collection.\n   * If a number is provided for a manager, it uses that number as the max size for a LimitedCollection.\n   * If LimitedCollectionOptions are provided for a manager, it uses those settings to form a LimitedCollection.\n   * @returns {CacheFactory}\n   * @example\n   * // Store up to 200 messages per channel and discard archived threads if they were archived more than 4 hours ago.\n   * // Note archived threads will remain in the guild and client caches with these settings\n   * Options.cacheWithLimits({\n   *    MessageManager: 200,\n   *    ThreadManager: {\n   *      sweepInterval: 3600,\n   *      sweepFilter: LimitedCollection.filterByLifetime({\n   *        getComparisonTimestamp: e => e.archiveTimestamp,\n   *        excludeFromSweep: e => !e.archived,\n   *      }),\n   *    },\n   *  });\n   * @example\n   * // Sweep messages every 5 minutes, removing messages that have not been edited or created in the last 30 minutes\n   * Options.cacheWithLimits({\n   *   // Keep default thread sweeping behavior\n   *   ...Options.defaultMakeCacheSettings,\n   *   // Override MessageManager\n   *   MessageManager: {\n   *     sweepInterval: 300,\n   *     sweepFilter: LimitedCollection.filterByLifetime({\n   *       lifetime: 1800,\n   *       getComparisonTimestamp: e => e.editedTimestamp ?? e.createdTimestamp,\n   *     })\n   *   }\n   * });\n   */\n  static cacheWithLimits(settings = {}) {\n    const { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\n    const LimitedCollection = __webpack_require__(/*! ./LimitedCollection */ \"./node_modules/@citizenfx/discord.js/src/util/LimitedCollection.js\");\n\n    return manager => {\n      const setting = settings[manager.name];\n      /* eslint-disable-next-line eqeqeq */\n      if (setting == null) {\n        return new Collection();\n      }\n      if (typeof setting === 'number') {\n        if (setting === Infinity) {\n          return new Collection();\n        }\n        return new LimitedCollection({ maxSize: setting });\n      }\n      /* eslint-disable eqeqeq */\n      const noSweeping =\n        setting.sweepFilter == null ||\n        setting.sweepInterval == null ||\n        setting.sweepInterval <= 0 ||\n        setting.sweepInterval === Infinity;\n      const noLimit = setting.maxSize == null || setting.maxSize === Infinity;\n      /* eslint-enable eqeqeq */\n      if (noSweeping && noLimit) {\n        return new Collection();\n      }\n      return new LimitedCollection(setting);\n    };\n  }\n\n  /**\n   * Create a cache factory that always caches everything.\n   * @returns {CacheFactory}\n   */\n  static cacheEverything() {\n    const { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\n    return () => new Collection();\n  }\n\n  /**\n   * The default settings passed to {@link Options.cacheWithLimits}.\n   * The caches that this changes are:\n   * * `MessageManager` - Limit to 200 messages\n   * * `ChannelManager` - Sweep archived threads\n   * * `GuildChannelManager` - Sweep archived threads\n   * * `ThreadManager` - Sweep archived threads\n   * <info>If you want to keep default behavior and add on top of it you can use this object and add on to it, e.g.\n   * `makeCache: Options.cacheWithLimits({ ...Options.defaultMakeCacheSettings, ReactionManager: 0 })`</info>\n   * @type {Object<string, LimitedCollectionOptions|number>}\n   */\n  static get defaultMakeCacheSettings() {\n    return {\n      MessageManager: 200,\n      ChannelManager: {\n        sweepInterval: 3600,\n        sweepFilter: (__webpack_require__(/*! ./Util */ \"./node_modules/@citizenfx/discord.js/src/util/Util.js\").archivedThreadSweepFilter)(),\n      },\n      GuildChannelManager: {\n        sweepInterval: 3600,\n        sweepFilter: (__webpack_require__(/*! ./Util */ \"./node_modules/@citizenfx/discord.js/src/util/Util.js\").archivedThreadSweepFilter)(),\n      },\n      ThreadManager: {\n        sweepInterval: 3600,\n        sweepFilter: (__webpack_require__(/*! ./Util */ \"./node_modules/@citizenfx/discord.js/src/util/Util.js\").archivedThreadSweepFilter)(),\n      },\n    };\n  }\n}\n\n/**\n * The default settings passed to {@link Options.sweepers} (for v14).\n * The sweepers that this changes are:\n * * `threads` - Sweep archived threads every hour, removing those archived more than 4 hours ago\n * <info>If you want to keep default behavior and add on top of it you can use this object and add on to it, e.g.\n * `sweepers: { ...Options.defaultSweeperSettings, messages: { interval: 300, lifetime: 600 } })`</info>\n * @type {SweeperOptions}\n */\nOptions.defaultSweeperSettings = {\n  threads: {\n    interval: 3600,\n    lifetime: 14400,\n  },\n};\n\nmodule.exports = Options;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/util/Options.js?")},"./node_modules/@citizenfx/discord.js/src/util/Permissions.js":
/*!********************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/util/Permissions.js ***!
  \********************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst BitField = __webpack_require__(/*! ./BitField */ "./node_modules/@citizenfx/discord.js/src/util/BitField.js");\n\n/**\n * Data structure that makes it easy to interact with a permission bitfield. All {@link GuildMember}s have a set of\n * permissions in their guild, and each channel in the guild may also have {@link PermissionOverwrites} for the member\n * that override their default permissions.\n * @extends {BitField}\n */\nclass Permissions extends BitField {\n  /**\n   * Bitfield of the packed bits\n   * @type {bigint}\n   * @name Permissions#bitfield\n   */\n\n  /**\n   * Data that can be resolved to give a permission number. This can be:\n   * * A string (see {@link Permissions.FLAGS})\n   * * A permission number\n   * * An instance of Permissions\n   * * An Array of PermissionResolvable\n   * @typedef {string|bigint|Permissions|PermissionResolvable[]} PermissionResolvable\n   */\n\n  /**\n   * Gets all given bits that are missing from the bitfield.\n   * @param {BitFieldResolvable} bits Bit(s) to check for\n   * @param {boolean} [checkAdmin=true] Whether to allow the administrator permission to override\n   * @returns {string[]}\n   */\n  missing(bits, checkAdmin = true) {\n    return checkAdmin && this.has(this.constructor.FLAGS.ADMINISTRATOR) ? [] : super.missing(bits);\n  }\n\n  /**\n   * Checks whether the bitfield has a permission, or any of multiple permissions.\n   * @param {PermissionResolvable} permission Permission(s) to check for\n   * @param {boolean} [checkAdmin=true] Whether to allow the administrator permission to override\n   * @returns {boolean}\n   */\n  any(permission, checkAdmin = true) {\n    return (checkAdmin && super.has(this.constructor.FLAGS.ADMINISTRATOR)) || super.any(permission);\n  }\n\n  /**\n   * Checks whether the bitfield has a permission, or multiple permissions.\n   * @param {PermissionResolvable} permission Permission(s) to check for\n   * @param {boolean} [checkAdmin=true] Whether to allow the administrator permission to override\n   * @returns {boolean}\n   */\n  has(permission, checkAdmin = true) {\n    return (checkAdmin && super.has(this.constructor.FLAGS.ADMINISTRATOR)) || super.has(permission);\n  }\n\n  /**\n   * Gets an {@link Array} of bitfield names based on the permissions available.\n   * @returns {string[]}\n   */\n  toArray() {\n    return super.toArray(false);\n  }\n}\n\n/**\n * Numeric permission flags. All available properties:\n * * `CREATE_INSTANT_INVITE` (create invitations to the guild)\n * * `KICK_MEMBERS`\n * * `BAN_MEMBERS`\n * * `ADMINISTRATOR` (implicitly has *all* permissions, and bypasses all channel overwrites)\n * * `MANAGE_CHANNELS` (edit and reorder channels)\n * * `MANAGE_GUILD` (edit the guild information, region, etc.)\n * * `ADD_REACTIONS` (add new reactions to messages)\n * * `VIEW_AUDIT_LOG`\n * * `PRIORITY_SPEAKER`\n * * `STREAM`\n * * `VIEW_CHANNEL`\n * * `SEND_MESSAGES`\n * * `SEND_TTS_MESSAGES`\n * * `MANAGE_MESSAGES` (delete messages and reactions)\n * * `EMBED_LINKS` (links posted will have a preview embedded)\n * * `ATTACH_FILES`\n * * `READ_MESSAGE_HISTORY` (view messages that were posted prior to opening Discord)\n * * `MENTION_EVERYONE`\n * * `USE_EXTERNAL_EMOJIS` (use emojis from different guilds)\n * * `VIEW_GUILD_INSIGHTS`\n * * `CONNECT` (connect to a voice channel)\n * * `SPEAK` (speak in a voice channel)\n * * `MUTE_MEMBERS` (mute members across all voice channels)\n * * `DEAFEN_MEMBERS` (deafen members across all voice channels)\n * * `MOVE_MEMBERS` (move members between voice channels)\n * * `USE_VAD` (use voice activity detection)\n * * `CHANGE_NICKNAME`\n * * `MANAGE_NICKNAMES` (change other members\' nicknames)\n * * `MANAGE_ROLES`\n * * `MANAGE_WEBHOOKS`\n * * `MANAGE_EMOJIS_AND_STICKERS`\n * * `USE_APPLICATION_COMMANDS`\n * * `REQUEST_TO_SPEAK`\n * * `MANAGE_EVENTS`\n * * `MANAGE_THREADS`\n * * `USE_PUBLIC_THREADS` (deprecated)\n * * `CREATE_PUBLIC_THREADS`\n * * `USE_PRIVATE_THREADS` (deprecated)\n * * `CREATE_PRIVATE_THREADS`\n * * `USE_EXTERNAL_STICKERS` (use stickers from different guilds)\n * * `SEND_MESSAGES_IN_THREADS`\n * * `START_EMBEDDED_ACTIVITIES`\n * * `MODERATE_MEMBERS`\n * @type {Object<string, bigint>}\n * @see {@link https://discord.com/developers/docs/topics/permissions#permissions-bitwise-permission-flags}\n */\nPermissions.FLAGS = {\n  CREATE_INSTANT_INVITE: 1n << 0n,\n  KICK_MEMBERS: 1n << 1n,\n  BAN_MEMBERS: 1n << 2n,\n  ADMINISTRATOR: 1n << 3n,\n  MANAGE_CHANNELS: 1n << 4n,\n  MANAGE_GUILD: 1n << 5n,\n  ADD_REACTIONS: 1n << 6n,\n  VIEW_AUDIT_LOG: 1n << 7n,\n  PRIORITY_SPEAKER: 1n << 8n,\n  STREAM: 1n << 9n,\n  VIEW_CHANNEL: 1n << 10n,\n  SEND_MESSAGES: 1n << 11n,\n  SEND_TTS_MESSAGES: 1n << 12n,\n  MANAGE_MESSAGES: 1n << 13n,\n  EMBED_LINKS: 1n << 14n,\n  ATTACH_FILES: 1n << 15n,\n  READ_MESSAGE_HISTORY: 1n << 16n,\n  MENTION_EVERYONE: 1n << 17n,\n  USE_EXTERNAL_EMOJIS: 1n << 18n,\n  VIEW_GUILD_INSIGHTS: 1n << 19n,\n  CONNECT: 1n << 20n,\n  SPEAK: 1n << 21n,\n  MUTE_MEMBERS: 1n << 22n,\n  DEAFEN_MEMBERS: 1n << 23n,\n  MOVE_MEMBERS: 1n << 24n,\n  USE_VAD: 1n << 25n,\n  CHANGE_NICKNAME: 1n << 26n,\n  MANAGE_NICKNAMES: 1n << 27n,\n  MANAGE_ROLES: 1n << 28n,\n  MANAGE_WEBHOOKS: 1n << 29n,\n  MANAGE_EMOJIS_AND_STICKERS: 1n << 30n,\n  USE_APPLICATION_COMMANDS: 1n << 31n,\n  REQUEST_TO_SPEAK: 1n << 32n,\n  MANAGE_EVENTS: 1n << 33n,\n  MANAGE_THREADS: 1n << 34n,\n  // TODO: Remove deprecated USE_*_THREADS flags in v14\n  USE_PUBLIC_THREADS: 1n << 35n,\n  CREATE_PUBLIC_THREADS: 1n << 35n,\n  USE_PRIVATE_THREADS: 1n << 36n,\n  CREATE_PRIVATE_THREADS: 1n << 36n,\n  USE_EXTERNAL_STICKERS: 1n << 37n,\n  SEND_MESSAGES_IN_THREADS: 1n << 38n,\n  START_EMBEDDED_ACTIVITIES: 1n << 39n,\n  MODERATE_MEMBERS: 1n << 40n,\n};\n\n/**\n * Bitfield representing every permission combined\n * @type {bigint}\n */\nPermissions.ALL = Object.values(Permissions.FLAGS).reduce((all, p) => all | p, 0n);\n\n/**\n * Bitfield representing the default permissions for users\n * @type {bigint}\n */\nPermissions.DEFAULT = BigInt(104324673);\n\n/**\n * Bitfield representing the permissions required for moderators of stage channels\n * @type {bigint}\n */\nPermissions.STAGE_MODERATOR =\n  Permissions.FLAGS.MANAGE_CHANNELS | Permissions.FLAGS.MUTE_MEMBERS | Permissions.FLAGS.MOVE_MEMBERS;\n\nPermissions.defaultBit = BigInt(0);\n\nmodule.exports = Permissions;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/util/Permissions.js?')},"./node_modules/@citizenfx/discord.js/src/util/SnowflakeUtil.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/util/SnowflakeUtil.js ***!
  \**********************************************************************/module=>{"use strict";eval("\n\n// Discord epoch (2015-01-01T00:00:00.000Z)\nconst EPOCH = 1_420_070_400_000;\nlet INCREMENT = BigInt(0);\n\n/**\n * A container for useful snowflake-related methods.\n */\nclass SnowflakeUtil extends null {\n  /**\n   * A {@link https://developer.twitter.com/en/docs/twitter-ids Twitter snowflake},\n   * except the epoch is 2015-01-01T00:00:00.000Z.\n   *\n   * If we have a snowflake '266241948824764416' we can represent it as binary:\n   * ```\n   * 64                                          22     17     12          0\n   *  000000111011000111100001101001000101000000  00001  00000  000000000000\n   *       number of ms since Discord epoch       worker  pid    increment\n   * ```\n   * @typedef {string} Snowflake\n   */\n\n  /**\n   * Generates a Discord snowflake.\n   * <info>This hardcodes the worker's id as 1 and the process's id as 0.</info>\n   * @param {number|Date} [timestamp=Date.now()] Timestamp or date of the snowflake to generate\n   * @returns {Snowflake} The generated snowflake\n   */\n  static generate(timestamp = Date.now()) {\n    if (timestamp instanceof Date) timestamp = timestamp.getTime();\n    if (typeof timestamp !== 'number' || isNaN(timestamp)) {\n      throw new TypeError(\n        `\"timestamp\" argument must be a number (received ${isNaN(timestamp) ? 'NaN' : typeof timestamp})`,\n      );\n    }\n    if (INCREMENT >= 4095n) INCREMENT = BigInt(0);\n\n    // Assign WorkerId as 1 and ProcessId as 0:\n    return ((BigInt(timestamp - EPOCH) << 22n) | (1n << 17n) | INCREMENT++).toString();\n  }\n\n  /**\n   * A deconstructed snowflake.\n   * @typedef {Object} DeconstructedSnowflake\n   * @property {number} timestamp Timestamp the snowflake was created\n   * @property {Date} date Date the snowflake was created\n   * @property {number} workerId The worker's id in the snowflake\n   * @property {number} processId The process's id in the snowflake\n   * @property {number} increment Increment in the snowflake\n   * @property {string} binary Binary representation of the snowflake\n   */\n\n  /**\n   * Deconstructs a Discord snowflake.\n   * @param {Snowflake} snowflake Snowflake to deconstruct\n   * @returns {DeconstructedSnowflake}\n   */\n  static deconstruct(snowflake) {\n    const bigIntSnowflake = BigInt(snowflake);\n    return {\n      timestamp: Number(bigIntSnowflake >> 22n) + EPOCH,\n      get date() {\n        return new Date(this.timestamp);\n      },\n      workerId: Number((bigIntSnowflake >> 17n) & 0b11111n),\n      processId: Number((bigIntSnowflake >> 12n) & 0b11111n),\n      increment: Number(bigIntSnowflake & 0b111111111111n),\n      binary: bigIntSnowflake.toString(2).padStart(64, '0'),\n    };\n  }\n\n  /**\n   * Retrieves the timestamp field's value from a Discord snowflake.\n   * @param {Snowflake} snowflake Snowflake to get the timestamp value from\n   * @returns {number}\n   */\n  static timestampFrom(snowflake) {\n    return Number(BigInt(snowflake) >> 22n) + EPOCH;\n  }\n\n  /**\n   * Discord's epoch value (2015-01-01T00:00:00.000Z).\n   * @type {number}\n   * @readonly\n   */\n  static get EPOCH() {\n    return EPOCH;\n  }\n}\n\nmodule.exports = SnowflakeUtil;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/util/SnowflakeUtil.js?")},"./node_modules/@citizenfx/discord.js/src/util/Sweepers.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/util/Sweepers.js ***!
  \*****************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { setInterval, clearInterval } = __webpack_require__(/*! node:timers */ \"node:timers\");\nconst { Events, ThreadChannelTypes, SweeperKeys } = __webpack_require__(/*! ./Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst { TypeError } = __webpack_require__(/*! ../errors/DJSError.js */ \"./node_modules/@citizenfx/discord.js/src/errors/DJSError.js\");\n\n/**\n * @typedef {Function} GlobalSweepFilter\n * @returns {Function|null} Return `null` to skip sweeping, otherwise a function passed to `sweep()`,\n * See {@link [Collection#sweep](https://discord.js.org/#/docs/collection/main/class/Collection?scrollTo=sweep)}\n * for the definition of this function.\n */\n\n/**\n * A container for all cache sweeping intervals and their associated sweep methods.\n */\nclass Sweepers {\n  constructor(client, options) {\n    /**\n     * The client that instantiated this\n     * @type {Client}\n     * @readonly\n     */\n    Object.defineProperty(this, 'client', { value: client });\n\n    /**\n     * The options the sweepers were instantiated with\n     * @type {SweeperOptions}\n     */\n    this.options = options;\n\n    /**\n     * A record of interval timeout that is used to sweep the indicated items, or null if not being swept\n     * @type {Object<SweeperKey, ?Timeout>}\n     */\n    this.intervals = Object.fromEntries(SweeperKeys.map(key => [key, null]));\n\n    for (const key of SweeperKeys) {\n      if (!(key in options)) continue;\n\n      this._validateProperties(key);\n\n      const clonedOptions = { ...this.options[key] };\n\n      // Handle cases that have a \"lifetime\"\n      if (!('filter' in clonedOptions)) {\n        switch (key) {\n          case 'invites':\n            clonedOptions.filter = this.constructor.expiredInviteSweepFilter(clonedOptions.lifetime);\n            break;\n          case 'messages':\n            clonedOptions.filter = this.constructor.outdatedMessageSweepFilter(clonedOptions.lifetime);\n            break;\n          case 'threads':\n            clonedOptions.filter = this.constructor.archivedThreadSweepFilter(clonedOptions.lifetime);\n        }\n      }\n\n      this._initInterval(key, `sweep${key[0].toUpperCase()}${key.slice(1)}`, clonedOptions);\n    }\n  }\n\n  /**\n   * Sweeps all guild and global application commands and removes the ones which are indicated by the filter.\n   * @param {Function} filter The function used to determine which commands will be removed from the caches.\n   * @returns {number} Amount of commands that were removed from the caches\n   */\n  sweepApplicationCommands(filter) {\n    const { guilds, items: guildCommands } = this._sweepGuildDirectProp('commands', filter, { emit: false });\n\n    const globalCommands = this.client.application?.commands.cache.sweep(filter) ?? 0;\n\n    this.client.emit(\n      Events.CACHE_SWEEP,\n      `Swept ${globalCommands} global application commands and ${guildCommands} guild commands in ${guilds} guilds.`,\n    );\n    return guildCommands + globalCommands;\n  }\n\n  /**\n   * Sweeps all guild bans and removes the ones which are indicated by the filter.\n   * @param {Function} filter The function used to determine which bans will be removed from the caches.\n   * @returns {number} Amount of bans that were removed from the caches\n   */\n  sweepBans(filter) {\n    return this._sweepGuildDirectProp('bans', filter).items;\n  }\n\n  /**\n   * Sweeps all guild emojis and removes the ones which are indicated by the filter.\n   * @param {Function} filter The function used to determine which emojis will be removed from the caches.\n   * @returns {number} Amount of emojis that were removed from the caches\n   */\n  sweepEmojis(filter) {\n    return this._sweepGuildDirectProp('emojis', filter).items;\n  }\n\n  /**\n   * Sweeps all guild invites and removes the ones which are indicated by the filter.\n   * @param {Function} filter The function used to determine which invites will be removed from the caches.\n   * @returns {number} Amount of invites that were removed from the caches\n   */\n  sweepInvites(filter) {\n    return this._sweepGuildDirectProp('invites', filter).items;\n  }\n\n  /**\n   * Sweeps all guild members and removes the ones which are indicated by the filter.\n   * <info>It is highly recommended to keep the client guild member cached</info>\n   * @param {Function} filter The function used to determine which guild members will be removed from the caches.\n   * @returns {number} Amount of guild members that were removed from the caches\n   */\n  sweepGuildMembers(filter) {\n    return this._sweepGuildDirectProp('members', filter, { outputName: 'guild members' }).items;\n  }\n\n  /**\n   * Sweeps all text-based channels' messages and removes the ones which are indicated by the filter.\n   * @param {Function} filter The function used to determine which messages will be removed from the caches.\n   * @returns {number} Amount of messages that were removed from the caches\n   * @example\n   * // Remove all messages older than 1800 seconds from the messages cache\n   * const amount = sweepers.sweepMessages(\n   *   Sweepers.filterByLifetime({\n   *     lifetime: 1800,\n   *     getComparisonTimestamp: m => m.editedTimestamp ?? m.createdTimestamp,\n   *   })(),\n   * );\n   * console.log(`Successfully removed ${amount} messages from the cache.`);\n   */\n  sweepMessages(filter) {\n    if (typeof filter !== 'function') {\n      throw new TypeError('INVALID_TYPE', 'filter', 'function');\n    }\n    let channels = 0;\n    let messages = 0;\n\n    for (const channel of this.client.channels.cache.values()) {\n      if (!channel.isText()) continue;\n\n      channels++;\n      messages += channel.messages.cache.sweep(filter);\n    }\n    this.client.emit(Events.CACHE_SWEEP, `Swept ${messages} messages in ${channels} text-based channels.`);\n    return messages;\n  }\n\n  /**\n   * Sweeps all presences and removes the ones which are indicated by the filter.\n   * @param {Function} filter The function used to determine which presences will be removed from the caches.\n   * @returns {number} Amount of presences that were removed from the caches\n   */\n  sweepPresences(filter) {\n    return this._sweepGuildDirectProp('presences', filter).items;\n  }\n\n  /**\n   * Sweeps all message reactions and removes the ones which are indicated by the filter.\n   * @param {Function} filter The function used to determine which reactions will be removed from the caches.\n   * @returns {number} Amount of reactions that were removed from the caches\n   */\n  sweepReactions(filter) {\n    if (typeof filter !== 'function') {\n      throw new TypeError('INVALID_TYPE', 'filter', 'function');\n    }\n    let channels = 0;\n    let messages = 0;\n    let reactions = 0;\n\n    for (const channel of this.client.channels.cache.values()) {\n      if (!channel.isText()) continue;\n      channels++;\n\n      for (const message of channel.messages.cache.values()) {\n        messages++;\n        reactions += message.reactions.cache.sweep(filter);\n      }\n    }\n    this.client.emit(\n      Events.CACHE_SWEEP,\n      `Swept ${reactions} reactions on ${messages} messages in ${channels} text-based channels.`,\n    );\n    return reactions;\n  }\n\n  /**\n   * Sweeps all guild stage instances and removes the ones which are indicated by the filter.\n   * @param {Function} filter The function used to determine which stage instances will be removed from the caches.\n   * @returns {number} Amount of stage instances that were removed from the caches\n   */\n  sweepStageInstances(filter) {\n    return this._sweepGuildDirectProp('stageInstances', filter, { outputName: 'stage instances' }).items;\n  }\n\n  /**\n   * Sweeps all thread members and removes the ones which are indicated by the filter.\n   * <info>It is highly recommended to keep the client thread member cached</info>\n   * @param {Function} filter The function used to determine which thread members will be removed from the caches.\n   * @returns {number} Amount of thread members that were removed from the caches\n   */\n  sweepThreadMembers(filter) {\n    if (typeof filter !== 'function') {\n      throw new TypeError('INVALID_TYPE', 'filter', 'function');\n    }\n\n    let threads = 0;\n    let members = 0;\n    for (const channel of this.client.channels.cache.values()) {\n      if (!ThreadChannelTypes.includes(channel.type)) continue;\n      threads++;\n      members += channel.members.cache.sweep(filter);\n    }\n    this.client.emit(Events.CACHE_SWEEP, `Swept ${members} thread members in ${threads} threads.`);\n    return members;\n  }\n\n  /**\n   * Sweeps all threads and removes the ones which are indicated by the filter.\n   * @param {Function} filter The function used to determine which threads will be removed from the caches.\n   * @returns {number} filter Amount of threads that were removed from the caches\n   * @example\n   * // Remove all threads archived greater than 1 day ago from all the channel caches\n   * const amount = sweepers.sweepThreads(\n   *   Sweepers.filterByLifetime({\n   *     getComparisonTimestamp: t => t.archivedTimestamp,\n   *     excludeFromSweep: t => !t.archived,\n   *   })(),\n   * );\n   * console.log(`Successfully removed ${amount} threads from the cache.`);\n   */\n  sweepThreads(filter) {\n    if (typeof filter !== 'function') {\n      throw new TypeError('INVALID_TYPE', 'filter', 'function');\n    }\n\n    let threads = 0;\n    for (const [key, val] of this.client.channels.cache.entries()) {\n      if (!ThreadChannelTypes.includes(val.type)) continue;\n      if (filter(val, key, this.client.channels.cache)) {\n        threads++;\n        this.client.channels._remove(key);\n      }\n    }\n    this.client.emit(Events.CACHE_SWEEP, `Swept ${threads} threads.`);\n    return threads;\n  }\n\n  /**\n   * Sweeps all users and removes the ones which are indicated by the filter.\n   * @param {Function} filter The function used to determine which users will be removed from the caches.\n   * @returns {number} Amount of users that were removed from the caches\n   */\n  sweepUsers(filter) {\n    if (typeof filter !== 'function') {\n      throw new TypeError('INVALID_TYPE', 'filter', 'function');\n    }\n\n    const users = this.client.users.cache.sweep(filter);\n\n    this.client.emit(Events.CACHE_SWEEP, `Swept ${users} users.`);\n\n    return users;\n  }\n\n  /**\n   * Sweeps all guild voice states and removes the ones which are indicated by the filter.\n   * @param {Function} filter The function used to determine which voice states will be removed from the caches.\n   * @returns {number} Amount of voice states that were removed from the caches\n   */\n  sweepVoiceStates(filter) {\n    return this._sweepGuildDirectProp('voiceStates', filter, { outputName: 'voice states' }).items;\n  }\n\n  /**\n   * Cancels all sweeping intervals\n   * @returns {void}\n   */\n  destroy() {\n    for (const key of SweeperKeys) {\n      if (this.intervals[key]) clearInterval(this.intervals[key]);\n    }\n  }\n\n  /**\n   * Options for generating a filter function based on lifetime\n   * @typedef {Object} LifetimeFilterOptions\n   * @property {number} [lifetime=14400] How long, in seconds, an entry should stay in the collection\n   * before it is considered sweepable.\n   * @property {Function} [getComparisonTimestamp=e => e?.createdTimestamp] A function that takes an entry, key,\n   * and the collection and returns a timestamp to compare against in order to determine the lifetime of the entry.\n   * @property {Function} [excludeFromSweep=() => false] A function that takes an entry, key, and the collection\n   * and returns a boolean, `true` when the entry should not be checked for sweepability.\n   */\n\n  /**\n   * Create a sweepFilter function that uses a lifetime to determine sweepability.\n   * @param {LifetimeFilterOptions} [options={}] The options used to generate the filter function\n   * @returns {GlobalSweepFilter}\n   */\n  static filterByLifetime({\n    lifetime = 14400,\n    getComparisonTimestamp = e => e?.createdTimestamp,\n    excludeFromSweep = () => false,\n  } = {}) {\n    if (typeof lifetime !== 'number') {\n      throw new TypeError('INVALID_TYPE', 'lifetime', 'number');\n    }\n    if (typeof getComparisonTimestamp !== 'function') {\n      throw new TypeError('INVALID_TYPE', 'getComparisonTimestamp', 'function');\n    }\n    if (typeof excludeFromSweep !== 'function') {\n      throw new TypeError('INVALID_TYPE', 'excludeFromSweep', 'function');\n    }\n    return () => {\n      if (lifetime <= 0) return null;\n      const lifetimeMs = lifetime * 1_000;\n      const now = Date.now();\n      return (entry, key, coll) => {\n        if (excludeFromSweep(entry, key, coll)) {\n          return false;\n        }\n        const comparisonTimestamp = getComparisonTimestamp(entry, key, coll);\n        if (!comparisonTimestamp || typeof comparisonTimestamp !== 'number') return false;\n        return now - comparisonTimestamp > lifetimeMs;\n      };\n    };\n  }\n\n  /**\n   * Creates a sweep filter that sweeps archived threads\n   * @param {number} [lifetime=14400] How long a thread has to be archived to be valid for sweeping\n   * @returns {GlobalSweepFilter}\n   */\n  static archivedThreadSweepFilter(lifetime = 14400) {\n    return this.filterByLifetime({\n      lifetime,\n      getComparisonTimestamp: e => e.archiveTimestamp,\n      excludeFromSweep: e => !e.archived,\n    });\n  }\n\n  /**\n   * Creates a sweep filter that sweeps expired invites\n   * @param {number} [lifetime=14400] How long ago an invite has to have expired to be valid for sweeping\n   * @returns {GlobalSweepFilter}\n   */\n  static expiredInviteSweepFilter(lifetime = 14400) {\n    return this.filterByLifetime({\n      lifetime,\n      getComparisonTimestamp: i => i.expiresTimestamp,\n    });\n  }\n\n  /**\n   * Creates a sweep filter that sweeps outdated messages (edits taken into account)\n   * @param {number} [lifetime=3600] How long ago a message has to have been sent or edited to be valid for sweeping\n   * @returns {GlobalSweepFilter}\n   */\n  static outdatedMessageSweepFilter(lifetime = 3600) {\n    return this.filterByLifetime({\n      lifetime,\n      getComparisonTimestamp: m => m.editedTimestamp ?? m.createdTimestamp,\n    });\n  }\n\n  /**\n   * Configuration options for emitting the cache sweep client event\n   * @typedef {Object} SweepEventOptions\n   * @property {boolean} [emit=true] Whether to emit the client event in this method\n   * @property {string} [outputName] A name to output in the client event if it should differ from the key\n   * @private\n   */\n\n  /**\n   * Sweep a direct sub property of all guilds\n   * @param {string} key The name of the property\n   * @param {Function} filter Filter function passed to sweep\n   * @param {SweepEventOptions} [eventOptions={}] Options for the Client event emitted here\n   * @returns {Object} Object containing the number of guilds swept and the number of items swept\n   * @private\n   */\n  _sweepGuildDirectProp(key, filter, { emit = true, outputName } = {}) {\n    if (typeof filter !== 'function') {\n      throw new TypeError('INVALID_TYPE', 'filter', 'function');\n    }\n\n    let guilds = 0;\n    let items = 0;\n\n    for (const guild of this.client.guilds.cache.values()) {\n      const { cache } = guild[key];\n\n      guilds++;\n      items += cache.sweep(filter);\n    }\n\n    if (emit) {\n      this.client.emit(Events.CACHE_SWEEP, `Swept ${items} ${outputName ?? key} in ${guilds} guilds.`);\n    }\n\n    return { guilds, items };\n  }\n\n  /**\n   * Validates a set of properties\n   * @param {string} key Key of the options object to check\n   * @private\n   */\n  _validateProperties(key) {\n    const props = this.options[key];\n    if (typeof props !== 'object') {\n      throw new TypeError('INVALID_TYPE', `sweepers.${key}`, 'object', true);\n    }\n    if (typeof props.interval !== 'number') {\n      throw new TypeError('INVALID_TYPE', `sweepers.${key}.interval`, 'number');\n    }\n    // Invites, Messages, and Threads can be provided a lifetime parameter, which we use to generate the filter\n    if (['invites', 'messages', 'threads'].includes(key) && !('filter' in props)) {\n      if (typeof props.lifetime !== 'number') {\n        throw new TypeError('INVALID_TYPE', `sweepers.${key}.lifetime`, 'number');\n      }\n      return;\n    }\n    if (typeof props.filter !== 'function') {\n      throw new TypeError('INVALID_TYPE', `sweepers.${key}.filter`, 'function');\n    }\n  }\n\n  /**\n   * Initialize an interval for sweeping\n   * @param {string} intervalKey The name of the property that stores the interval for this sweeper\n   * @param {string} sweepKey The name of the function that sweeps the desired caches\n   * @param {Object} opts Validated options for a sweep\n   * @private\n   */\n  _initInterval(intervalKey, sweepKey, opts) {\n    if (opts.interval <= 0 || opts.interval === Infinity) return;\n    this.intervals[intervalKey] = setInterval(() => {\n      const sweepFn = opts.filter();\n      if (sweepFn === null) return;\n      if (typeof sweepFn !== 'function') throw new TypeError('SWEEP_FILTER_RETURN');\n      this[sweepKey](sweepFn);\n    }, opts.interval * 1_000).unref();\n  }\n}\n\nmodule.exports = Sweepers;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/util/Sweepers.js?")},"./node_modules/@citizenfx/discord.js/src/util/SystemChannelFlags.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/util/SystemChannelFlags.js ***!
  \***************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst BitField = __webpack_require__(/*! ./BitField */ "./node_modules/@citizenfx/discord.js/src/util/BitField.js");\n\n/**\n * Data structure that makes it easy to interact with a {@link Guild#systemChannelFlags} bitfield.\n * <info>Note that all event message types are enabled by default,\n * and by setting their corresponding flags you are disabling them</info>\n * @extends {BitField}\n */\nclass SystemChannelFlags extends BitField {}\n\n/**\n * @name SystemChannelFlags\n * @kind constructor\n * @memberof SystemChannelFlags\n * @param {SystemChannelFlagsResolvable} [bits=0] Bit(s) to read from\n */\n\n/**\n * Bitfield of the packed bits\n * @type {number}\n * @name SystemChannelFlags#bitfield\n */\n\n/**\n * Data that can be resolved to give a system channel flag bitfield. This can be:\n * * A string (see {@link SystemChannelFlags.FLAGS})\n * * A system channel flag\n * * An instance of SystemChannelFlags\n * * An Array of SystemChannelFlagsResolvable\n * @typedef {string|number|SystemChannelFlags|SystemChannelFlagsResolvable[]} SystemChannelFlagsResolvable\n */\n\n/**\n * Numeric system channel flags. All available properties:\n * * `SUPPRESS_JOIN_NOTIFICATIONS` (Suppress member join notifications)\n * * `SUPPRESS_PREMIUM_SUBSCRIPTIONS` (Suppress server boost notifications)\n * * `SUPPRESS_GUILD_REMINDER_NOTIFICATIONS` (Suppress server setup tips)\n * * `SUPPRESS_JOIN_NOTIFICATION_REPLIES` (Hide member join sticker reply buttons)\n * @type {Object}\n * @see {@link https://discord.com/developers/docs/resources/guild#guild-object-system-channel-flags}\n */\nSystemChannelFlags.FLAGS = {\n  SUPPRESS_JOIN_NOTIFICATIONS: 1 << 0,\n  SUPPRESS_PREMIUM_SUBSCRIPTIONS: 1 << 1,\n  SUPPRESS_GUILD_REMINDER_NOTIFICATIONS: 1 << 2,\n  SUPPRESS_JOIN_NOTIFICATION_REPLIES: 1 << 3,\n};\n\nmodule.exports = SystemChannelFlags;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/util/SystemChannelFlags.js?')},"./node_modules/@citizenfx/discord.js/src/util/ThreadMemberFlags.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/util/ThreadMemberFlags.js ***!
  \**************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst BitField = __webpack_require__(/*! ./BitField */ "./node_modules/@citizenfx/discord.js/src/util/BitField.js");\n\n/**\n * Data structure that makes it easy to interact with a {@link ThreadMember#flags} bitfield.\n * @extends {BitField}\n */\nclass ThreadMemberFlags extends BitField {}\n\n/**\n * @name ThreadMemberFlags\n * @kind constructor\n * @memberof ThreadMemberFlags\n * @param {BitFieldResolvable} [bits=0] Bit(s) to read from\n */\n\n/**\n * Bitfield of the packed bits\n * @type {number}\n * @name ThreadMemberFlags#bitfield\n */\n\n/**\n * Numeric thread member flags. There are currently no bitflags relevant to bots for this.\n * @type {Object<string, number>}\n */\nThreadMemberFlags.FLAGS = {};\n\nmodule.exports = ThreadMemberFlags;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/util/ThreadMemberFlags.js?')},"./node_modules/@citizenfx/discord.js/src/util/UserFlags.js":
/*!******************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/util/UserFlags.js ***!
  \******************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\nconst BitField = __webpack_require__(/*! ./BitField */ "./node_modules/@citizenfx/discord.js/src/util/BitField.js");\n\n/**\n * Data structure that makes it easy to interact with a {@link User#flags} bitfield.\n * @extends {BitField}\n */\nclass UserFlags extends BitField {}\n\n/**\n * @name UserFlags\n * @kind constructor\n * @memberof UserFlags\n * @param {BitFieldResolvable} [bits=0] Bit(s) to read from\n */\n\n/**\n * Bitfield of the packed bits\n * @type {number}\n * @name UserFlags#bitfield\n */\n\n/**\n * Numeric user flags. All available properties:\n * * `DISCORD_EMPLOYEE`\n * * `PARTNERED_SERVER_OWNER`\n * * `HYPESQUAD_EVENTS`\n * * `BUGHUNTER_LEVEL_1`\n * * `HOUSE_BRAVERY`\n * * `HOUSE_BRILLIANCE`\n * * `HOUSE_BALANCE`\n * * `EARLY_SUPPORTER`\n * * `TEAM_USER`\n * * `BUGHUNTER_LEVEL_2`\n * * `VERIFIED_BOT`\n * * `EARLY_VERIFIED_BOT_DEVELOPER`\n * * `DISCORD_CERTIFIED_MODERATOR`\n * * `BOT_HTTP_INTERACTIONS`\n * @type {Object}\n * @see {@link https://discord.com/developers/docs/resources/user#user-object-user-flags}\n */\nUserFlags.FLAGS = {\n  DISCORD_EMPLOYEE: 1 << 0,\n  PARTNERED_SERVER_OWNER: 1 << 1,\n  HYPESQUAD_EVENTS: 1 << 2,\n  BUGHUNTER_LEVEL_1: 1 << 3,\n  HOUSE_BRAVERY: 1 << 6,\n  HOUSE_BRILLIANCE: 1 << 7,\n  HOUSE_BALANCE: 1 << 8,\n  EARLY_SUPPORTER: 1 << 9,\n  TEAM_USER: 1 << 10,\n  BUGHUNTER_LEVEL_2: 1 << 14,\n  VERIFIED_BOT: 1 << 16,\n  EARLY_VERIFIED_BOT_DEVELOPER: 1 << 17,\n  DISCORD_CERTIFIED_MODERATOR: 1 << 18,\n  BOT_HTTP_INTERACTIONS: 1 << 19,\n};\n\nmodule.exports = UserFlags;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/util/UserFlags.js?')},"./node_modules/@citizenfx/discord.js/src/util/Util.js":
/*!*************************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/src/util/Util.js ***!
  \*************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { parse } = __webpack_require__(/*! node:path */ \"node:path\");\nconst process = __webpack_require__(/*! node:process */ \"node:process\");\nconst { Collection } = __webpack_require__(/*! @discordjs/collection */ \"./node_modules/@discordjs/collection/dist/index.js\");\nconst fetch = __webpack_require__(/*! node-fetch */ \"./node_modules/node-fetch/lib/index.js\");\nconst { Colors, Endpoints } = __webpack_require__(/*! ./Constants */ \"./node_modules/@citizenfx/discord.js/src/util/Constants.js\");\nconst Options = __webpack_require__(/*! ./Options */ \"./node_modules/@citizenfx/discord.js/src/util/Options.js\");\nconst { Error: DiscordError, RangeError, TypeError } = __webpack_require__(/*! ../errors */ \"./node_modules/@citizenfx/discord.js/src/errors/index.js\");\nconst has = (o, k) => Object.prototype.hasOwnProperty.call(o, k);\nconst isObject = d => typeof d === 'object' && d !== null;\n\nlet deprecationEmittedForRemoveMentions = false;\n\n/**\n * Contains various general-purpose utility methods.\n */\nclass Util extends null {\n  /**\n   * Flatten an object. Any properties that are collections will get converted to an array of keys.\n   * @param {Object} obj The object to flatten.\n   * @param {...Object<string, boolean|string>} [props] Specific properties to include/exclude.\n   * @returns {Object}\n   */\n  static flatten(obj, ...props) {\n    if (!isObject(obj)) return obj;\n\n    const objProps = Object.keys(obj)\n      .filter(k => !k.startsWith('_'))\n      .map(k => ({ [k]: true }));\n\n    props = objProps.length ? Object.assign(...objProps, ...props) : Object.assign({}, ...props);\n\n    const out = {};\n\n    for (let [prop, newProp] of Object.entries(props)) {\n      if (!newProp) continue;\n      newProp = newProp === true ? prop : newProp;\n\n      const element = obj[prop];\n      const elemIsObj = isObject(element);\n      const valueOf = elemIsObj && typeof element.valueOf === 'function' ? element.valueOf() : null;\n\n      // If it's a Collection, make the array of keys\n      if (element instanceof Collection) out[newProp] = Array.from(element.keys());\n      // If the valueOf is a Collection, use its array of keys\n      else if (valueOf instanceof Collection) out[newProp] = Array.from(valueOf.keys());\n      // If it's an array, flatten each element\n      else if (Array.isArray(element)) out[newProp] = element.map(e => Util.flatten(e));\n      // If it's an object with a primitive `valueOf`, use that value\n      else if (typeof valueOf !== 'object') out[newProp] = valueOf;\n      // If it's a primitive\n      else if (!elemIsObj) out[newProp] = element;\n    }\n\n    return out;\n  }\n\n  /**\n   * Options for splitting a message.\n   * @typedef {Object} SplitOptions\n   * @property {number} [maxLength=2000] Maximum character length per message piece\n   * @property {string|string[]|RegExp|RegExp[]} [char='\\n'] Character(s) or Regex(es) to split the message with,\n   * an array can be used to split multiple times\n   * @property {string} [prepend=''] Text to prepend to every piece except the first\n   * @property {string} [append=''] Text to append to every piece except the last\n   */\n\n  /**\n   * Splits a string into multiple chunks at a designated character that do not exceed a specific length.\n   * @param {string} text Content to split\n   * @param {SplitOptions} [options] Options controlling the behavior of the split\n   * @returns {string[]}\n   */\n  static splitMessage(text, { maxLength = 2_000, char = '\\n', prepend = '', append = '' } = {}) {\n    text = Util.verifyString(text);\n    if (text.length <= maxLength) return [text];\n    let splitText = [text];\n    if (Array.isArray(char)) {\n      while (char.length > 0 && splitText.some(elem => elem.length > maxLength)) {\n        const currentChar = char.shift();\n        if (currentChar instanceof RegExp) {\n          splitText = splitText.flatMap(chunk => chunk.match(currentChar));\n        } else {\n          splitText = splitText.flatMap(chunk => chunk.split(currentChar));\n        }\n      }\n    } else {\n      splitText = text.split(char);\n    }\n    if (splitText.some(elem => elem.length > maxLength)) throw new RangeError('SPLIT_MAX_LEN');\n    const messages = [];\n    let msg = '';\n    for (const chunk of splitText) {\n      if (msg && (msg + char + chunk + append).length > maxLength) {\n        messages.push(msg + append);\n        msg = prepend;\n      }\n      msg += (msg && msg !== prepend ? char : '') + chunk;\n    }\n    return messages.concat(msg).filter(m => m);\n  }\n\n  /**\n   * Options used to escape markdown.\n   * @typedef {Object} EscapeMarkdownOptions\n   * @property {boolean} [codeBlock=true] Whether to escape code blocks or not\n   * @property {boolean} [inlineCode=true] Whether to escape inline code or not\n   * @property {boolean} [bold=true] Whether to escape bolds or not\n   * @property {boolean} [italic=true] Whether to escape italics or not\n   * @property {boolean} [underline=true] Whether to escape underlines or not\n   * @property {boolean} [strikethrough=true] Whether to escape strikethroughs or not\n   * @property {boolean} [spoiler=true] Whether to escape spoilers or not\n   * @property {boolean} [codeBlockContent=true] Whether to escape text inside code blocks or not\n   * @property {boolean} [inlineCodeContent=true] Whether to escape text inside inline code or not\n   */\n\n  /**\n   * Escapes any Discord-flavour markdown in a string.\n   * @param {string} text Content to escape\n   * @param {EscapeMarkdownOptions} [options={}] Options for escaping the markdown\n   * @returns {string}\n   */\n  static escapeMarkdown(\n    text,\n    {\n      codeBlock = true,\n      inlineCode = true,\n      bold = true,\n      italic = true,\n      underline = true,\n      strikethrough = true,\n      spoiler = true,\n      codeBlockContent = true,\n      inlineCodeContent = true,\n    } = {},\n  ) {\n    if (!codeBlockContent) {\n      return text\n        .split('```')\n        .map((subString, index, array) => {\n          if (index % 2 && index !== array.length - 1) return subString;\n          return Util.escapeMarkdown(subString, {\n            inlineCode,\n            bold,\n            italic,\n            underline,\n            strikethrough,\n            spoiler,\n            inlineCodeContent,\n          });\n        })\n        .join(codeBlock ? '\\\\`\\\\`\\\\`' : '```');\n    }\n    if (!inlineCodeContent) {\n      return text\n        .split(/(?<=^|[^`])`(?=[^`]|$)/g)\n        .map((subString, index, array) => {\n          if (index % 2 && index !== array.length - 1) return subString;\n          return Util.escapeMarkdown(subString, {\n            codeBlock,\n            bold,\n            italic,\n            underline,\n            strikethrough,\n            spoiler,\n          });\n        })\n        .join(inlineCode ? '\\\\`' : '`');\n    }\n    if (inlineCode) text = Util.escapeInlineCode(text);\n    if (codeBlock) text = Util.escapeCodeBlock(text);\n    if (italic) text = Util.escapeItalic(text);\n    if (bold) text = Util.escapeBold(text);\n    if (underline) text = Util.escapeUnderline(text);\n    if (strikethrough) text = Util.escapeStrikethrough(text);\n    if (spoiler) text = Util.escapeSpoiler(text);\n    return text;\n  }\n\n  /**\n   * Escapes code block markdown in a string.\n   * @param {string} text Content to escape\n   * @returns {string}\n   */\n  static escapeCodeBlock(text) {\n    return text.replaceAll('```', '\\\\`\\\\`\\\\`');\n  }\n\n  /**\n   * Escapes inline code markdown in a string.\n   * @param {string} text Content to escape\n   * @returns {string}\n   */\n  static escapeInlineCode(text) {\n    return text.replace(/(?<=^|[^`])`(?=[^`]|$)/g, '\\\\`');\n  }\n\n  /**\n   * Escapes italic markdown in a string.\n   * @param {string} text Content to escape\n   * @returns {string}\n   */\n  static escapeItalic(text) {\n    let i = 0;\n    text = text.replace(/(?<=^|[^*])\\*([^*]|\\*\\*|$)/g, (_, match) => {\n      if (match === '**') return ++i % 2 ? `\\\\*${match}` : `${match}\\\\*`;\n      return `\\\\*${match}`;\n    });\n    i = 0;\n    return text.replace(/(?<=^|[^_])_([^_]|__|$)/g, (_, match) => {\n      if (match === '__') return ++i % 2 ? `\\\\_${match}` : `${match}\\\\_`;\n      return `\\\\_${match}`;\n    });\n  }\n\n  /**\n   * Escapes bold markdown in a string.\n   * @param {string} text Content to escape\n   * @returns {string}\n   */\n  static escapeBold(text) {\n    let i = 0;\n    return text.replace(/\\*\\*(\\*)?/g, (_, match) => {\n      if (match) return ++i % 2 ? `${match}\\\\*\\\\*` : `\\\\*\\\\*${match}`;\n      return '\\\\*\\\\*';\n    });\n  }\n\n  /**\n   * Escapes underline markdown in a string.\n   * @param {string} text Content to escape\n   * @returns {string}\n   */\n  static escapeUnderline(text) {\n    let i = 0;\n    return text.replace(/__(_)?/g, (_, match) => {\n      if (match) return ++i % 2 ? `${match}\\\\_\\\\_` : `\\\\_\\\\_${match}`;\n      return '\\\\_\\\\_';\n    });\n  }\n\n  /**\n   * Escapes strikethrough markdown in a string.\n   * @param {string} text Content to escape\n   * @returns {string}\n   */\n  static escapeStrikethrough(text) {\n    return text.replaceAll('~~', '\\\\~\\\\~');\n  }\n\n  /**\n   * Escapes spoiler markdown in a string.\n   * @param {string} text Content to escape\n   * @returns {string}\n   */\n  static escapeSpoiler(text) {\n    return text.replaceAll('||', '\\\\|\\\\|');\n  }\n\n  /**\n   * @typedef {Object} FetchRecommendedShardsOptions\n   * @property {number} [guildsPerShard=1000] Number of guilds assigned per shard\n   * @property {number} [multipleOf=1] The multiple the shard count should round up to. (16 for large bot sharding)\n   */\n\n  /**\n   * Gets the recommended shard count from Discord.\n   * @param {string} token Discord auth token\n   * @param {FetchRecommendedShardsOptions} [options] Options for fetching the recommended shard count\n   * @returns {Promise<number>} The recommended number of shards\n   */\n  static async fetchRecommendedShards(token, { guildsPerShard = 1_000, multipleOf = 1 } = {}) {\n    if (!token) throw new DiscordError('TOKEN_MISSING');\n    const defaults = Options.createDefault();\n    const response = await fetch(`${defaults.http.api}/v${defaults.http.version}${Endpoints.botGateway}`, {\n      method: 'GET',\n      headers: { Authorization: `Bot ${token.replace(/^Bot\\s*/i, '')}` },\n    });\n    if (!response.ok) {\n      if (response.status === 401) throw new DiscordError('TOKEN_INVALID');\n      throw response;\n    }\n    const { shards } = await response.json();\n    return Math.ceil((shards * (1_000 / guildsPerShard)) / multipleOf) * multipleOf;\n  }\n\n  /**\n   * Parses emoji info out of a string. The string must be one of:\n   * * A UTF-8 emoji (no id)\n   * * A URL-encoded UTF-8 emoji (no id)\n   * * A Discord custom emoji (`<:name:id>` or `<a:name:id>`)\n   * @param {string} text Emoji string to parse\n   * @returns {APIEmoji} Object with `animated`, `name`, and `id` properties\n   * @private\n   */\n  static parseEmoji(text) {\n    if (text.includes('%')) text = decodeURIComponent(text);\n    if (!text.includes(':')) return { animated: false, name: text, id: null };\n    const match = text.match(/<?(?:(a):)?(\\w{2,32}):(\\d{17,19})?>?/);\n    return match && { animated: Boolean(match[1]), name: match[2], id: match[3] ?? null };\n  }\n\n  /**\n   * Resolves a partial emoji object from an {@link EmojiIdentifierResolvable}, without checking a Client.\n   * @param {EmojiIdentifierResolvable} emoji Emoji identifier to resolve\n   * @returns {?RawEmoji}\n   * @private\n   */\n  static resolvePartialEmoji(emoji) {\n    if (!emoji) return null;\n    if (typeof emoji === 'string') return /^\\d{17,19}$/.test(emoji) ? { id: emoji } : Util.parseEmoji(emoji);\n    const { id, name, animated } = emoji;\n    if (!id && !name) return null;\n    return { id, name, animated: Boolean(animated) };\n  }\n\n  /**\n   * Shallow-copies an object with its class/prototype intact.\n   * @param {Object} obj Object to clone\n   * @returns {Object}\n   * @private\n   */\n  static cloneObject(obj) {\n    return Object.assign(Object.create(obj), obj);\n  }\n\n  /**\n   * Sets default properties on an object that aren't already specified.\n   * @param {Object} def Default properties\n   * @param {Object} given Object to assign defaults to\n   * @returns {Object}\n   * @private\n   */\n  static mergeDefault(def, given) {\n    if (!given) return def;\n    for (const key in def) {\n      if (!has(given, key) || given[key] === undefined) {\n        given[key] = def[key];\n      } else if (given[key] === Object(given[key])) {\n        given[key] = Util.mergeDefault(def[key], given[key]);\n      }\n    }\n\n    return given;\n  }\n\n  /**\n   * Options used to make an error object.\n   * @typedef {Object} MakeErrorOptions\n   * @property {string} name Error type\n   * @property {string} message Message for the error\n   * @property {string} stack Stack for the error\n   */\n\n  /**\n   * Makes an Error from a plain info object.\n   * @param {MakeErrorOptions} obj Error info\n   * @returns {Error}\n   * @private\n   */\n  static makeError(obj) {\n    const err = new Error(obj.message);\n    err.name = obj.name;\n    err.stack = obj.stack;\n    return err;\n  }\n\n  /**\n   * Makes a plain error info object from an Error.\n   * @param {Error} err Error to get info from\n   * @returns {MakeErrorOptions}\n   * @private\n   */\n  static makePlainError(err) {\n    return {\n      name: err.name,\n      message: err.message,\n      stack: err.stack,\n    };\n  }\n\n  /**\n   * Moves an element in an array *in place*.\n   * @param {Array<*>} array Array to modify\n   * @param {*} element Element to move\n   * @param {number} newIndex Index or offset to move the element to\n   * @param {boolean} [offset=false] Move the element by an offset amount rather than to a set index\n   * @returns {number}\n   * @private\n   */\n  static moveElementInArray(array, element, newIndex, offset = false) {\n    const index = array.indexOf(element);\n    newIndex = (offset ? index : 0) + newIndex;\n    if (newIndex > -1 && newIndex < array.length) {\n      const removedElement = array.splice(index, 1)[0];\n      array.splice(newIndex, 0, removedElement);\n    }\n    return array.indexOf(element);\n  }\n\n  /**\n   * Verifies the provided data is a string, otherwise throws provided error.\n   * @param {string} data The string resolvable to resolve\n   * @param {Function} [error] The Error constructor to instantiate. Defaults to Error\n   * @param {string} [errorMessage] The error message to throw with. Defaults to \"Expected string, got <data> instead.\"\n   * @param {boolean} [allowEmpty=true] Whether an empty string should be allowed\n   * @returns {string}\n   */\n  static verifyString(\n    data,\n    error = Error,\n    errorMessage = `Expected a string, got ${data} instead.`,\n    allowEmpty = true,\n  ) {\n    if (typeof data !== 'string') throw new error(errorMessage);\n    if (!allowEmpty && data.length === 0) throw new error(errorMessage);\n    return data;\n  }\n\n  /**\n   * Can be a number, hex string, an RGB array like:\n   * ```js\n   * [255, 0, 255] // purple\n   * ```\n   * or one of the following strings:\n   * - `DEFAULT`\n   * - `WHITE`\n   * - `AQUA`\n   * - `GREEN`\n   * - `BLUE`\n   * - `YELLOW`\n   * - `PURPLE`\n   * - `LUMINOUS_VIVID_PINK`\n   * - `FUCHSIA`\n   * - `GOLD`\n   * - `ORANGE`\n   * - `RED`\n   * - `GREY`\n   * - `NAVY`\n   * - `DARK_AQUA`\n   * - `DARK_GREEN`\n   * - `DARK_BLUE`\n   * - `DARK_PURPLE`\n   * - `DARK_VIVID_PINK`\n   * - `DARK_GOLD`\n   * - `DARK_ORANGE`\n   * - `DARK_RED`\n   * - `DARK_GREY`\n   * - `DARKER_GREY`\n   * - `LIGHT_GREY`\n   * - `DARK_NAVY`\n   * - `BLURPLE`\n   * - `GREYPLE`\n   * - `DARK_BUT_NOT_BLACK`\n   * - `NOT_QUITE_BLACK`\n   * - `RANDOM`\n   * @typedef {string|number|number[]} ColorResolvable\n   */\n\n  /**\n   * Resolves a ColorResolvable into a color number.\n   * @param {ColorResolvable} color Color to resolve\n   * @returns {number} A color\n   */\n  static resolveColor(color) {\n    if (typeof color === 'string') {\n      if (color === 'RANDOM') return Math.floor(Math.random() * (0xffffff + 1));\n      if (color === 'DEFAULT') return 0;\n      color = Colors[color] ?? parseInt(color.replace('#', ''), 16);\n    } else if (Array.isArray(color)) {\n      color = (color[0] << 16) + (color[1] << 8) + color[2];\n    }\n\n    if (color < 0 || color > 0xffffff) throw new RangeError('COLOR_RANGE');\n    else if (Number.isNaN(color)) throw new TypeError('COLOR_CONVERT');\n\n    return color;\n  }\n\n  /**\n   * Sorts by Discord's position and id.\n   * @param {Collection} collection Collection of objects to sort\n   * @returns {Collection}\n   */\n  static discordSort(collection) {\n    const isGuildChannel = collection.first() instanceof GuildChannel;\n    return collection.sorted(\n      isGuildChannel\n        ? (a, b) => a.rawPosition - b.rawPosition || Number(BigInt(a.id) - BigInt(b.id))\n        : (a, b) => a.rawPosition - b.rawPosition || Number(BigInt(b.id) - BigInt(a.id)),\n    );\n  }\n\n  /**\n   * Sets the position of a Channel or Role.\n   * @param {Channel|Role} item Object to set the position of\n   * @param {number} position New position for the object\n   * @param {boolean} relative Whether `position` is relative to its current position\n   * @param {Collection<string, Channel|Role>} sorted A collection of the objects sorted properly\n   * @param {APIRouter} route Route to call PATCH on\n   * @param {string} [reason] Reason for the change\n   * @returns {Promise<Channel[]|Role[]>} Updated item list, with `id` and `position` properties\n   * @private\n   */\n  static async setPosition(item, position, relative, sorted, route, reason) {\n    let updatedItems = [...sorted.values()];\n    Util.moveElementInArray(updatedItems, item, position, relative);\n    updatedItems = updatedItems.map((r, i) => ({ id: r.id, position: i }));\n    await route.patch({ data: updatedItems, reason });\n    return updatedItems;\n  }\n\n  /**\n   * Alternative to Node's `path.basename`, removing query string after the extension if it exists.\n   * @param {string} path Path to get the basename of\n   * @param {string} [ext] File extension to remove\n   * @returns {string} Basename of the path\n   * @private\n   */\n  static basename(path, ext) {\n    const res = parse(path);\n    return ext && res.ext.startsWith(ext) ? res.name : res.base.split('?')[0];\n  }\n\n  /**\n   * Breaks user, role and everyone/here mentions by adding a zero width space after every @ character\n   * @param {string} str The string to sanitize\n   * @returns {string}\n   * @deprecated Use {@link BaseMessageOptions#allowedMentions} instead.\n   */\n  static removeMentions(str) {\n    if (!deprecationEmittedForRemoveMentions) {\n      process.emitWarning(\n        'The Util.removeMentions method is deprecated. Use MessageOptions#allowedMentions instead.',\n        'DeprecationWarning',\n      );\n\n      deprecationEmittedForRemoveMentions = true;\n    }\n\n    return Util._removeMentions(str);\n  }\n\n  static _removeMentions(str) {\n    return str.replaceAll('@', '@\\u200b');\n  }\n\n  /**\n   * The content to have all mentions replaced by the equivalent text.\n   * <warn>When {@link Util.removeMentions} is removed, this method will no longer sanitize mentions.\n   * Use {@link BaseMessageOptions#allowedMentions} instead to prevent mentions when sending a message.</warn>\n   * @param {string} str The string to be converted\n   * @param {TextBasedChannels} channel The channel the string was sent in\n   * @returns {string}\n   */\n  static cleanContent(str, channel) {\n    str = str\n      .replace(/<@!?[0-9]+>/g, input => {\n        const id = input.replace(/<|!|>|@/g, '');\n        if (channel.type === 'DM') {\n          const user = channel.client.users.cache.get(id);\n          return user ? Util._removeMentions(`@${user.username}`) : input;\n        }\n\n        const member = channel.guild.members.cache.get(id);\n        if (member) {\n          return Util._removeMentions(`@${member.displayName}`);\n        } else {\n          const user = channel.client.users.cache.get(id);\n          return user ? Util._removeMentions(`@${user.username}`) : input;\n        }\n      })\n      .replace(/<#[0-9]+>/g, input => {\n        const mentionedChannel = channel.client.channels.cache.get(input.replace(/<|#|>/g, ''));\n        return mentionedChannel ? `#${mentionedChannel.name}` : input;\n      })\n      .replace(/<@&[0-9]+>/g, input => {\n        if (channel.type === 'DM') return input;\n        const role = channel.guild.roles.cache.get(input.replace(/<|@|>|&/g, ''));\n        return role ? `@${role.name}` : input;\n      });\n    return str;\n  }\n\n  /**\n   * The content to put in a code block with all code block fences replaced by the equivalent backticks.\n   * @param {string} text The string to be converted\n   * @returns {string}\n   */\n  static cleanCodeBlockContent(text) {\n    return text.replaceAll('```', '`\\u200b``');\n  }\n\n  /**\n   * Creates a sweep filter that sweeps archived threads\n   * @param {number} [lifetime=14400] How long a thread has to be archived to be valid for sweeping\n   * @deprecated When not using with `makeCache` use `Sweepers.archivedThreadSweepFilter` instead\n   * @returns {SweepFilter}\n   */\n  static archivedThreadSweepFilter(lifetime = 14400) {\n    const filter = (__webpack_require__(/*! ./Sweepers */ \"./node_modules/@citizenfx/discord.js/src/util/Sweepers.js\").archivedThreadSweepFilter)(lifetime);\n    filter.isDefault = true;\n    return filter;\n  }\n}\n\nmodule.exports = Util;\n\n// Fixes Circular\nconst GuildChannel = __webpack_require__(/*! ../structures/GuildChannel */ \"./node_modules/@citizenfx/discord.js/src/structures/GuildChannel.js\");\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/src/util/Util.js?")},"./node_modules/@citizenfx/http-wrapper/index.js":
/*!*******************************************************!*\
  !*** ./node_modules/@citizenfx/http-wrapper/index.js ***!
  \*******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { Readable, Writable } = __webpack_require__(/*! stream */ \"stream\");\r\nconst http = __webpack_require__(/*! http */ \"http\");\r\n\r\nconst objectify = (obj, [k, v]) => ({ ...obj, [k]: v });\r\n\r\nclass IncomingMessage extends Readable {\r\n    constructor(cfxReq, cfxRes) {\r\n        super();\r\n\r\n        this.headers = Object.entries(cfxReq.headers).map(([k, v]) => [k.toLowerCase(), v]).reduce(objectify, {});\r\n        this.httpVersion = '1.1';\r\n        this.httpVersionMajor = 1;\r\n        this.httpVersionMinor = 1;\r\n        this.method = cfxReq.method;\r\n        this.rawHeaders = Object.entries(this.headers).flatMap((x) => x);\r\n        this.rawTrailers = [];\r\n        this.setTimeout = (ms, cb) => {\r\n            global.setTimeout(cb, ms);\r\n            return this;\r\n        }\r\n        this.trailers = {};\r\n        this.url = cfxReq.path;\r\n        this.aborted = false;\r\n\r\n        //Setting Remote Address\r\n        try {\r\n            let addrParts = cfxReq.address.split(':');\r\n            if(addrParts.length != 2 || !addrParts[0].length || !addrParts[1].length){\r\n                throw new Error('Invalid IP:PORT');\r\n            }\r\n            this.connection = {\r\n                remoteAddress: addrParts[0],\r\n                remotePort: addrParts[1]\r\n            };\r\n        } catch (error) {\r\n            console.error(`requestHandler parsing ip:port error: ${error.message}`);\r\n            this.connection = {\r\n                remoteAddress: '0.0.0.0',\r\n                remotePort: 0\r\n            };\r\n        }\r\n        this.socket = this.connection;\r\n\r\n        cfxReq.setDataHandler((data) => {\r\n            if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) {\r\n                this.push(Buffer.from(data));\r\n            } else {\r\n                this.push(data, 'utf8');\r\n            }\r\n\r\n            this.push(null);\r\n        }, 'binary');\r\n    }\r\n\r\n    _read(len) {\r\n\r\n    }\r\n\r\n    destroy(err) {\r\n\r\n    }\r\n}\r\n\r\nclass ServerResponse extends Writable {\r\n    constructor(cfxReq, cfxRes) {\r\n        super();\r\n\r\n        this.cfxReq = cfxReq;\r\n        this.cfxRes = cfxRes;\r\n\r\n        this.connection = {\r\n            remoteAddress: cfxReq.address,\r\n            remotePort: 0,\r\n            writable: true,\r\n            on(...args) {\r\n\r\n            }\r\n        };\r\n        this.socket = this.connection;\r\n        this.finished = false;\r\n        this.headersSent = false;\r\n        this.sendDate = true;\r\n\r\n        this.statusCode = 200;\r\n        this.statusMessage = 'OK';\r\n\r\n        this.headers = {};\r\n    }\r\n\r\n    addTrailers(headers) {\r\n\r\n    }\r\n\r\n    end(chunk, encoding, callback) {\r\n        if (this.finished) {\r\n            return;\r\n        }\r\n\r\n        if (typeof chunk === 'function') {\r\n            callback = chunk;\r\n            chunk = null;\r\n        } else if (typeof encoding === 'function') {\r\n            callback = encoding;\r\n            encoding = null;\r\n        }\r\n\r\n        if (chunk) {\r\n            this.write(chunk, encoding);\r\n        }\r\n\r\n        this.cfxRes.send();\r\n\r\n        if (callback) {\r\n            callback();\r\n        }\r\n\r\n        this.finished = true;\r\n        this.cfxReq = null;\r\n        this.cfxRes = null;\r\n    }\r\n\r\n    getHeader(name) {\r\n        return this.headers[name.toLowerCase()];\r\n    }\r\n\r\n    getHeaderNames() {\r\n        return Object.entries(this.headers).map(([name]) => name);\r\n    }\r\n\r\n    getHeaders() {\r\n        // TODO: make shallow?\r\n        return Object.assign({}, this.headers);\r\n    }\r\n\r\n    hasHeader(name) {\r\n        return (this.headers[name.toLowerCase()] !== undefined);\r\n    }\r\n\r\n    removeHeader(name) {\r\n        delete this.headers[name.toLowerCase()];\r\n    }\r\n\r\n    setHeader(name, value) {\r\n        this.headers[name.toLowerCase()] = value;\r\n    }\r\n\r\n    setTimeout(ms, cb) {\r\n\r\n    }\r\n\r\n    _write(chunk, encoding, callback) {\r\n        if (!this.headersSent) {\r\n            this.writeHead(this.statusCode, this.statusMessage, this.headers);\r\n        }\r\n\r\n        this.cfxRes.write(chunk.buffer.slice(chunk.byteOffset, chunk.byteOffset + chunk.byteLength));\r\n\r\n        callback();\r\n    }\r\n\r\n    writeContinue() {\r\n\r\n    }\r\n\r\n    writeHead(statusCode, reason, obj) {\r\n        if (this.headersSent) {\r\n            return;\r\n        }\r\n\r\n        this.headersSent = true;\r\n\r\n        var originalStatusCode = statusCode;\r\n\r\n        statusCode |= 0;\r\n        if (statusCode < 100 || statusCode > 999) {\r\n            throw new Error(`invalid status code ${originalStatusCode}`);\r\n        }\r\n\r\n\r\n        if (typeof reason === 'string') {\r\n            // writeHead(statusCode, reasonPhrase[, headers])\r\n            this.statusMessage = reason;\r\n        } else {\r\n            // writeHead(statusCode[, headers])\r\n            if (!this.statusMessage)\r\n                this.statusMessage = http.STATUS_CODES[statusCode] || 'unknown';\r\n            obj = reason;\r\n        }\r\n        this.statusCode = statusCode;\r\n\r\n        let headers;\r\n        if (this._headers) {\r\n            var k;\r\n            if (obj) {\r\n                var keys = Object.keys(obj);\r\n                for (var i = 0; i < keys.length; i++) {\r\n                    k = keys[i];\r\n                    if (k) this.setHeader(k, obj[k]);\r\n                }\r\n            }\r\n            if (k === undefined && this._header) {\r\n                throw new Error(`invalid header`);\r\n            }\r\n\r\n            headers = this._headers;\r\n        } else {\r\n            headers = obj;\r\n        }\r\n\r\n        const headerList = {};\r\n\r\n        for (const [key, value] of Object.entries(headers)) {\r\n            if (Array.isArray(value)) {\r\n                headerList[key] = value.map(a => a.toString());\r\n            } else {\r\n                headerList[key] = value.toString();\r\n            }\r\n        }\r\n\r\n        this.cfxRes.writeHead(this.statusCode, headerList);\r\n    }\r\n\r\n    _final(callback) {\r\n\r\n    }\r\n}\r\n\r\nconst setHttpCallback = (requestHandler) => {\r\n    global.SetHttpHandler((req, res) => {\r\n        requestHandler(new IncomingMessage(req, res), new ServerResponse(req, res));\r\n    });\r\n};\r\n\r\nmodule.exports.IncomingMessage = IncomingMessage;\r\nmodule.exports.ServerResponse = ServerResponse;\r\nmodule.exports.setHttpCallback = setHttpCallback;\r\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/http-wrapper/index.js?")},"./node_modules/@discordjs/builders/dist/index.js":
/*!********************************************************!*\
  !*** ./node_modules/@discordjs/builders/dist/index.js ***!
  \********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var Ge=Object.create;var O=Object.defineProperty;var he=Object.getOwnPropertyDescriptor;var qe=Object.getOwnPropertyNames;var ze=Object.getPrototypeOf,We=Object.prototype.hasOwnProperty;var je=(t,e,i)=>e in t?O(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i;var Ce=t=>O(t,"__esModule",{value:!0});var w=(t,e)=>{for(var i in e)O(t,i,{get:e[i],enumerable:!0})},fe=(t,e,i,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of qe(e))!We.call(t,r)&&(i||r!=="default")&&O(t,r,{get:()=>e[r],enumerable:!(o=he(e,r))||o.enumerable});return t},Ze=(t,e)=>fe(Ce(O(t!=null?Ge(ze(t)):{},"default",!e&&t&&t.__esModule?{get:()=>t.default,enumerable:!0}:{value:t,enumerable:!0})),t),Ke=(t=>(e,i)=>t&&t.get(e)||(i=fe(Ce({}),e,1),t&&t.set(e,i),i))(typeof WeakMap!="undefined"?new WeakMap:0),p=(t,e,i,o)=>{for(var r=o>1?void 0:o?he(e,i):e,A=t.length-1,R;A>=0;A--)(R=t[A])&&(r=(o?R(e,i,r):R(r))||r);return o&&r&&O(e,i,r),r};var n=(t,e,i)=>(je(t,typeof e!="symbol"?e+"":e,i),i);var yt={};w(yt,{ContextMenuCommandAssertions:()=>ue,ContextMenuCommandBuilder:()=>Je,Embed:()=>M,EmbedAssertions:()=>ie,Faces:()=>Ae,SlashCommandAssertions:()=>re,SlashCommandBooleanOption:()=>J,SlashCommandBuilder:()=>j,SlashCommandChannelOption:()=>y,SlashCommandIntegerOption:()=>P,SlashCommandMentionableOption:()=>q,SlashCommandNumberOption:()=>T,SlashCommandRoleOption:()=>z,SlashCommandStringOption:()=>I,SlashCommandSubcommandBuilder:()=>c,SlashCommandSubcommandGroupBuilder:()=>x,SlashCommandUserOption:()=>W,TimestampStyles:()=>ut,blockQuote:()=>nt,bold:()=>Ye,channelMention:()=>mt,codeBlock:()=>Qe,formatEmoji:()=>dt,hideLinkEmbed:()=>ot,hyperlink:()=>rt,inlineCode:()=>He,italic:()=>Xe,memberNicknameMention:()=>pt,quote:()=>it,roleMention:()=>lt,spoiler:()=>at,strikethrough:()=>tt,time:()=>ct,underscore:()=>et,userMention:()=>st});var ie={};w(ie,{authorNamePredicate:()=>Q,colorPredicate:()=>H,descriptionPredicate:()=>X,embedFieldPredicate:()=>be,embedFieldsArrayPredicate:()=>_,fieldInlinePredicate:()=>k,fieldLengthPredicate:()=>xe,fieldNamePredicate:()=>S,fieldValuePredicate:()=>E,footerTextPredicate:()=>Y,timestampPredicate:()=>ee,titlePredicate:()=>te,urlPredicate:()=>u,validateFieldLength:()=>L});var m=__webpack_require__(/*! zod */ "./node_modules/zod/lib/index.js"),S=m.z.string().min(1).max(256),E=m.z.string().min(1).max(1024),k=m.z.boolean().optional(),be=m.z.object({name:S,value:E,inline:k}),_=be.array(),xe=m.z.number().lte(25);function L(t,e){xe.parse(t.length+e)}var Q=S.nullable(),u=m.z.string().url().nullish(),H=m.z.number().gte(0).lte(16777215).nullable(),X=m.z.string().min(1).max(4096).nullable(),Y=m.z.string().min(1).max(2048).nullable(),ee=m.z.union([m.z.number(),m.z.date()]).nullable(),te=S.nullable();var M=class{constructor(e={}){n(this,"fields");n(this,"title");n(this,"description");n(this,"url");n(this,"color");n(this,"timestamp");n(this,"thumbnail");n(this,"image");n(this,"video");n(this,"author");n(this,"provider");n(this,"footer");this.title=e.title,this.description=e.description,this.url=e.url,this.color=e.color,this.thumbnail=e.thumbnail,this.image=e.image,this.video=e.video,this.author=e.author,this.provider=e.provider,this.footer=e.footer,this.fields=e.fields??[],e.timestamp&&(this.timestamp=new Date(e.timestamp).toISOString())}get length(){return(this.title?.length??0)+(this.description?.length??0)+this.fields.reduce((e,i)=>e+i.name.length+i.value.length,0)+(this.footer?.text.length??0)+(this.author?.name.length??0)}addField(e){return this.addFields(e)}addFields(...e){return _.parse(e),L(this.fields,e.length),this.fields.push(...M.normalizeFields(...e)),this}spliceFields(e,i,...o){return _.parse(o),L(this.fields,o.length-i),this.fields.splice(e,i,...M.normalizeFields(...o)),this}setAuthor(e){if(e===null)return this.author=void 0,this;let{name:i,iconURL:o,url:r}=e;return Q.parse(i),u.parse(o),u.parse(r),this.author={name:i,url:r,icon_url:o},this}setColor(e){return H.parse(e),this.color=e??void 0,this}setDescription(e){return X.parse(e),this.description=e??void 0,this}setFooter(e){if(e===null)return this.footer=void 0,this;let{text:i,iconURL:o}=e;return Y.parse(i),u.parse(o),this.footer={text:i,icon_url:o},this}setImage(e){return u.parse(e),this.image=e?{url:e}:void 0,this}setThumbnail(e){return u.parse(e),this.thumbnail=e?{url:e}:void 0,this}setTimestamp(e=Date.now()){return ee.parse(e),this.timestamp=e?new Date(e).toISOString():void 0,this}setTitle(e){return te.parse(e),this.title=e??void 0,this}setURL(e){return u.parse(e),this.url=e??void 0,this}toJSON(){return{...this}}static normalizeFields(...e){return e.flat(1/0).map(i=>(S.parse(i.name),E.parse(i.value),k.parse(i.inline),{name:i.name,value:i.value,inline:i.inline??void 0}))}};function Qe(t,e){return typeof e=="undefined"?`\\`\\`\\`\n${t}\\`\\`\\``:`\\`\\`\\`${t}\n${e}\\`\\`\\``}function He(t){return`\\`${t}\\``}function Xe(t){return`_${t}_`}function Ye(t){return`**${t}**`}function et(t){return`__${t}__`}function tt(t){return`~~${t}~~`}function it(t){return`> ${t}`}function nt(t){return`>>> ${t}`}function ot(t){return`<${t}>`}function rt(t,e,i){return i?`[${t}](${e} "${i}")`:`[${t}](${e})`}function at(t){return`||${t}||`}function st(t){return`<@${t}>`}function pt(t){return`<@!${t}>`}function mt(t){return`<#${t}>`}function lt(t){return`<@&${t}>`}function dt(t,e=!1){return`<${e?"a":""}:_:${t}>`}function ct(t,e){return typeof t!="number"&&(t=Math.floor((t?.getTime()??Date.now())/1e3)),typeof e=="string"?`<t:${t}:${e}>`:`<t:${t}>`}var ut={ShortTime:"t",LongTime:"T",ShortDate:"d",LongDate:"D",ShortDateTime:"f",LongDateTime:"F",RelativeTime:"R"},Ae=(o=>(o.Shrug="\\xAF\\\\_(\\u30C4)\\\\_/\\xAF",o.Tableflip="(\\u256F\\xB0\\u25A1\\xB0\\uFF09\\u256F\\uFE35 \\u253B\\u2501\\u253B",o.Unflip="\\u252C\\u2500\\u252C \\u30CE( \\u309C-\\u309C\\u30CE)",o))(Ae||{});var re={};w(re,{assertReturnOfBuilder:()=>C,validateDefaultPermission:()=>ne,validateDescription:()=>D,validateMaxChoicesLength:()=>oe,validateMaxOptionsLength:()=>d,validateName:()=>U,validateRequired:()=>F,validateRequiredParameters:()=>h});var V=Ze(__webpack_require__(/*! @sindresorhus/is */ "./node_modules/@sindresorhus/is/dist/index.js")),v=__webpack_require__(/*! zod */ "./node_modules/zod/lib/index.js");function h(t,e,i){U(t),D(e),d(i)}var ht=v.z.string().min(1).max(32).regex(/^[\\P{Lu}\\p{N}_-]+$/u);function U(t){ht.parse(t)}var Ct=v.z.string().min(1).max(100);function D(t){Ct.parse(t)}var Oe=v.z.boolean();function ne(t){Oe.parse(t)}function F(t){Oe.parse(t)}var Se=v.z.unknown().array().max(25);function d(t){Se.parse(t)}function oe(t){Se.parse(t)}function C(t,e){let i=e.name;if(V.default.nullOrUndefined(t))throw new TypeError(`Expected to receive a ${i} builder, got ${t===null?"null":"undefined"} instead.`);if(V.default.primitive(t))throw new TypeError(`Expected to receive a ${i} builder, got a primitive (${typeof t}) instead.`);if(!(t instanceof e)){let o=t,r=V.default.function_(t)?t.name:o.constructor.name,A=Reflect.get(o,Symbol.toStringTag),R=A?`${r} [${A}]`:r;throw new TypeError(`Expected to receive a ${i} builder, got ${R} instead.`)}}var Fe=__webpack_require__(/*! ts-mixer */ "./node_modules/ts-mixer/dist/cjs/index.js");var ye=__webpack_require__(/*! discord-api-types/v9 */ "./node_modules/discord-api-types/v9.js");var f=class{constructor(){n(this,"name");n(this,"description")}setName(e){return U(e),Reflect.set(this,"name",e),this}setDescription(e){return D(e),Reflect.set(this,"description",e),this}};var s=class extends f{constructor(){super(...arguments);n(this,"required",!1)}setRequired(e){return F(e),Reflect.set(this,"required",e),this}runRequiredValidations(){h(this.name,this.description,[]),F(this.required)}};var J=class extends s{constructor(){super(...arguments);n(this,"type",ye.ApplicationCommandOptionType.Boolean)}toJSON(){return this.runRequiredValidations(),{...this}}};var ge=__webpack_require__(/*! discord-api-types/v9 */ "./node_modules/discord-api-types/v9.js"),Pe=__webpack_require__(/*! ts-mixer */ "./node_modules/ts-mixer/dist/cjs/index.js");var l=__webpack_require__(/*! discord-api-types/v9 */ "./node_modules/discord-api-types/v9.js"),ae=__webpack_require__(/*! zod */ "./node_modules/zod/lib/index.js"),ft=[l.ChannelType.GuildText,l.ChannelType.GuildVoice,l.ChannelType.GuildCategory,l.ChannelType.GuildNews,l.ChannelType.GuildStore,l.ChannelType.GuildNewsThread,l.ChannelType.GuildPublicThread,l.ChannelType.GuildPrivateThread,l.ChannelType.GuildStageVoice],bt=ae.z.union(ft.map(t=>ae.z.literal(t))),se=class{constructor(){n(this,"channel_types")}addChannelType(e){return this.channel_types===void 0&&Reflect.set(this,"channel_types",[]),bt.parse(e),this.channel_types.push(e),this}addChannelTypes(e){return e.forEach(i=>this.addChannelType(i)),this}};var y=class extends s{constructor(){super(...arguments);n(this,"type",ge.ApplicationCommandOptionType.Channel)}toJSON(){return this.runRequiredValidations(),{...this}}};y=p([(0,Pe.mix)(se)],y);var Re=__webpack_require__(/*! discord-api-types/v9 */ "./node_modules/discord-api-types/v9.js"),Me=__webpack_require__(/*! ts-mixer */ "./node_modules/ts-mixer/dist/cjs/index.js"),ve=__webpack_require__(/*! zod */ "./node_modules/zod/lib/index.js");var N=class{constructor(){n(this,"maxValue");n(this,"minValue")}};var Te=__webpack_require__(/*! discord-api-types/v9 */ "./node_modules/discord-api-types/v9.js"),g=__webpack_require__(/*! zod */ "./node_modules/zod/lib/index.js");var G=g.z.string().min(1).max(100),Ie=g.z.number().gt(-1/0).lt(1/0),$e=g.z.tuple([G,g.z.union([G,Ie])]).array(),xt=g.z.boolean(),b=class{constructor(){n(this,"choices");n(this,"autocomplete");n(this,"type")}addChoice(e,i){if(this.autocomplete)throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");return this.choices===void 0&&Reflect.set(this,"choices",[]),oe(this.choices),G.parse(e),this.type===Te.ApplicationCommandOptionType.String?G.parse(i):Ie.parse(i),this.choices.push({name:e,value:i}),this}addChoices(e){if(this.autocomplete)throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");$e.parse(e);for(let[i,o]of e)this.addChoice(i,o);return this}setChoices(e){if(e.length>0&&this.autocomplete)throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");$e.parse(e),Reflect.set(this,"choices",[]);for(let[i,o]of e)this.addChoice(i,o);return this}setAutocomplete(e){if(xt.parse(e),e&&Array.isArray(this.choices)&&this.choices.length>0)throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");return Reflect.set(this,"autocomplete",e),this}};var Ne=ve.z.number().int().nonnegative(),P=class extends s{constructor(){super(...arguments);n(this,"type",Re.ApplicationCommandOptionType.Integer)}setMaxValue(e){return Ne.parse(e),Reflect.set(this,"maxValue",e),this}setMinValue(e){return Ne.parse(e),Reflect.set(this,"minValue",e),this}toJSON(){if(this.runRequiredValidations(),this.autocomplete&&Array.isArray(this.choices)&&this.choices.length>0)throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");return{...this}}};P=p([(0,Me.mix)(N,b)],P);var Be=__webpack_require__(/*! discord-api-types/v9 */ "./node_modules/discord-api-types/v9.js");var q=class extends s{constructor(){super(...arguments);n(this,"type",Be.ApplicationCommandOptionType.Mentionable)}toJSON(){return this.runRequiredValidations(),{...this}}};var we=__webpack_require__(/*! discord-api-types/v9 */ "./node_modules/discord-api-types/v9.js"),Ee=__webpack_require__(/*! ts-mixer */ "./node_modules/ts-mixer/dist/cjs/index.js"),ke=__webpack_require__(/*! zod */ "./node_modules/zod/lib/index.js");var _e=ke.z.number().nonnegative(),T=class extends s{constructor(){super(...arguments);n(this,"type",we.ApplicationCommandOptionType.Number)}setMaxValue(e){return _e.parse(e),Reflect.set(this,"maxValue",e),this}setMinValue(e){return _e.parse(e),Reflect.set(this,"minValue",e),this}toJSON(){if(this.runRequiredValidations(),this.autocomplete&&Array.isArray(this.choices)&&this.choices.length>0)throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");return{...this}}};T=p([(0,Ee.mix)(N,b)],T);var Le=__webpack_require__(/*! discord-api-types/v9 */ "./node_modules/discord-api-types/v9.js");var z=class extends s{constructor(){super(...arguments);n(this,"type",Le.ApplicationCommandOptionType.Role)}toJSON(){return this.runRequiredValidations(),{...this}}};var Ve=__webpack_require__(/*! discord-api-types/v9 */ "./node_modules/discord-api-types/v9.js"),Ue=__webpack_require__(/*! ts-mixer */ "./node_modules/ts-mixer/dist/cjs/index.js");var I=class extends s{constructor(){super(...arguments);n(this,"type",Ve.ApplicationCommandOptionType.String)}toJSON(){if(this.runRequiredValidations(),this.autocomplete&&Array.isArray(this.choices)&&this.choices.length>0)throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");return{...this}}};I=p([(0,Ue.mix)(b)],I);var De=__webpack_require__(/*! discord-api-types/v9 */ "./node_modules/discord-api-types/v9.js");var W=class extends s{constructor(){super(...arguments);n(this,"type",De.ApplicationCommandOptionType.User)}toJSON(){return this.runRequiredValidations(),{...this}}};var B=class{constructor(){n(this,"options")}addBooleanOption(e){return this._sharedAddOptionMethod(e,J)}addUserOption(e){return this._sharedAddOptionMethod(e,W)}addChannelOption(e){return this._sharedAddOptionMethod(e,y)}addRoleOption(e){return this._sharedAddOptionMethod(e,z)}addMentionableOption(e){return this._sharedAddOptionMethod(e,q)}addStringOption(e){return this._sharedAddOptionMethod(e,I)}addIntegerOption(e){return this._sharedAddOptionMethod(e,P)}addNumberOption(e){return this._sharedAddOptionMethod(e,T)}_sharedAddOptionMethod(e,i){let{options:o}=this;d(o);let r=typeof e=="function"?e(new i):e;return C(r,i),o.push(r),this}};var pe=__webpack_require__(/*! discord-api-types/v9 */ "./node_modules/discord-api-types/v9.js"),me=__webpack_require__(/*! ts-mixer */ "./node_modules/ts-mixer/dist/cjs/index.js");var x=class{constructor(){n(this,"name");n(this,"description");n(this,"options",[])}addSubcommand(e){let{options:i}=this;d(i);let o=typeof e=="function"?e(new c):e;return C(o,c),i.push(o),this}toJSON(){return h(this.name,this.description,this.options),{type:pe.ApplicationCommandOptionType.SubcommandGroup,name:this.name,description:this.description,options:this.options.map(e=>e.toJSON())}}};x=p([(0,me.mix)(f)],x);var c=class{constructor(){n(this,"name");n(this,"description");n(this,"options",[])}toJSON(){return h(this.name,this.description,this.options),{type:pe.ApplicationCommandOptionType.Subcommand,name:this.name,description:this.description,options:this.options.map(e=>e.toJSON())}}};c=p([(0,me.mix)(f,B)],c);var j=class{constructor(){n(this,"name");n(this,"description");n(this,"options",[]);n(this,"defaultPermission")}toJSON(){return h(this.name,this.description,this.options),{name:this.name,description:this.description,options:this.options.map(e=>e.toJSON()),default_permission:this.defaultPermission}}setDefaultPermission(e){return ne(e),Reflect.set(this,"defaultPermission",e),this}addSubcommandGroup(e){let{options:i}=this;d(i);let o=typeof e=="function"?e(new x):e;return C(o,x),i.push(o),this}addSubcommand(e){let{options:i}=this;d(i);let o=typeof e=="function"?e(new c):e;return C(o,c),i.push(o),this}};j=p([(0,Fe.mix)(B,f)],j);var ue={};w(ue,{validateDefaultPermission:()=>ce,validateName:()=>Z,validateRequiredParameters:()=>de,validateType:()=>K});var $=__webpack_require__(/*! zod */ "./node_modules/zod/lib/index.js"),le=__webpack_require__(/*! discord-api-types/v9 */ "./node_modules/discord-api-types/v9.js");function de(t,e){Z(t),K(e)}var At=$.z.string().min(1).max(32).regex(/^( *[\\p{L}\\p{N}_-]+ *)+$/u);function Z(t){At.parse(t)}var Ot=$.z.union([$.z.literal(le.ApplicationCommandType.User),$.z.literal(le.ApplicationCommandType.Message)]);function K(t){Ot.parse(t)}var St=$.z.boolean();function ce(t){St.parse(t)}var Je=class{constructor(){n(this,"name");n(this,"type");n(this,"defaultPermission")}setName(e){return Z(e),Reflect.set(this,"name",e),this}setType(e){return K(e),Reflect.set(this,"type",e),this}setDefaultPermission(e){return ce(e),Reflect.set(this,"defaultPermission",e),this}toJSON(){return de(this.name,this.type),{name:this.name,type:this.type,default_permission:this.defaultPermission}}};module.exports=Ke(yt);0&&(0);\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/@discordjs/builders/dist/index.js?')},"./node_modules/@discordjs/collection/dist/index.js":
/*!**********************************************************!*\
  !*** ./node_modules/@discordjs/collection/dist/index.js ***!
  \**********************************************************/module=>{eval('var s=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var K=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var b=(l,e,i)=>e in l?s(l,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):l[e]=i;var V=l=>s(l,"__esModule",{value:!0}),h=(l,e)=>s(l,"name",{value:e,configurable:!0});var d=(l,e)=>{for(var i in e)s(l,i,{get:e[i],enumerable:!0})},y=(l,e,i,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of K(e))!p.call(l,n)&&(i||n!=="default")&&s(l,n,{get:()=>e[n],enumerable:!(t=f(e,n))||t.enumerable});return l};var v=(l=>(e,i)=>l&&l.get(e)||(i=y(V({}),e,1),l&&l.set(e,i),i))(typeof WeakMap!="undefined"?new WeakMap:0);var a=(l,e,i)=>(b(l,typeof e!="symbol"?e+"":e,i),i);var T={};d(T,{Collection:()=>c,default:()=>k});var r=class extends Map{ensure(e,i){if(this.has(e))return this.get(e);let t=i(e,this);return this.set(e,t),t}hasAll(...e){return e.every(i=>super.has(i))}hasAny(...e){return e.some(i=>super.has(i))}first(e){if(typeof e=="undefined")return this.values().next().value;if(e<0)return this.last(e*-1);e=Math.min(this.size,e);let i=this.values();return Array.from({length:e},()=>i.next().value)}firstKey(e){if(typeof e=="undefined")return this.keys().next().value;if(e<0)return this.lastKey(e*-1);e=Math.min(this.size,e);let i=this.keys();return Array.from({length:e},()=>i.next().value)}last(e){let i=[...this.values()];return typeof e=="undefined"?i[i.length-1]:e<0?this.first(e*-1):e?i.slice(-e):[]}lastKey(e){let i=[...this.keys()];return typeof e=="undefined"?i[i.length-1]:e<0?this.firstKey(e*-1):e?i.slice(-e):[]}at(e){return e=Math.floor(e),[...this.values()].at(e)}keyAt(e){return e=Math.floor(e),[...this.keys()].at(e)}random(e){let i=[...this.values()];return typeof e=="undefined"?i[Math.floor(Math.random()*i.length)]:!i.length||!e?[]:Array.from({length:Math.min(e,i.length)},()=>i.splice(Math.floor(Math.random()*i.length),1)[0])}randomKey(e){let i=[...this.keys()];return typeof e=="undefined"?i[Math.floor(Math.random()*i.length)]:!i.length||!e?[]:Array.from({length:Math.min(e,i.length)},()=>i.splice(Math.floor(Math.random()*i.length),1)[0])}reverse(){let e=[...this.entries()].reverse();this.clear();for(let[i,t]of e)this.set(i,t);return this}find(e,i){typeof i!="undefined"&&(e=e.bind(i));for(let[t,n]of this)if(e(n,t,this))return n}findKey(e,i){typeof i!="undefined"&&(e=e.bind(i));for(let[t,n]of this)if(e(n,t,this))return t}sweep(e,i){typeof i!="undefined"&&(e=e.bind(i));let t=this.size;for(let[n,o]of this)e(o,n,this)&&this.delete(n);return t-this.size}filter(e,i){typeof i!="undefined"&&(e=e.bind(i));let t=new this.constructor[Symbol.species];for(let[n,o]of this)e(o,n,this)&&t.set(n,o);return t}partition(e,i){typeof i!="undefined"&&(e=e.bind(i));let t=[new this.constructor[Symbol.species],new this.constructor[Symbol.species]];for(let[n,o]of this)e(o,n,this)?t[0].set(n,o):t[1].set(n,o);return t}flatMap(e,i){let t=this.map(e,i);return new this.constructor[Symbol.species]().concat(...t)}map(e,i){typeof i!="undefined"&&(e=e.bind(i));let t=this.entries();return Array.from({length:this.size},()=>{let[n,o]=t.next().value;return e(o,n,this)})}mapValues(e,i){typeof i!="undefined"&&(e=e.bind(i));let t=new this.constructor[Symbol.species];for(let[n,o]of this)t.set(n,e(o,n,this));return t}some(e,i){typeof i!="undefined"&&(e=e.bind(i));for(let[t,n]of this)if(e(n,t,this))return!0;return!1}every(e,i){typeof i!="undefined"&&(e=e.bind(i));for(let[t,n]of this)if(!e(n,t,this))return!1;return!0}reduce(e,i){let t;if(typeof i!="undefined"){t=i;for(let[o,u]of this)t=e(t,u,o,this);return t}let n=!0;for(let[o,u]of this){if(n){t=u,n=!1;continue}t=e(t,u,o,this)}if(n)throw new TypeError("Reduce of empty collection with no initial value");return t}each(e,i){return this.forEach(e,i),this}tap(e,i){return typeof i!="undefined"&&(e=e.bind(i)),e(this),this}clone(){return new this.constructor[Symbol.species](this)}concat(...e){let i=this.clone();for(let t of e)for(let[n,o]of t)i.set(n,o);return i}equals(e){if(!e)return!1;if(this===e)return!0;if(this.size!==e.size)return!1;for(let[i,t]of this)if(!e.has(i)||t!==e.get(i))return!1;return!0}sort(e=r.defaultSort){let i=[...this.entries()];i.sort((t,n)=>e(t[1],n[1],t[0],n[0])),super.clear();for(let[t,n]of i)super.set(t,n);return this}intersect(e){let i=new this.constructor[Symbol.species];for(let[t,n]of e)this.has(t)&&i.set(t,n);return i}difference(e){let i=new this.constructor[Symbol.species];for(let[t,n]of e)this.has(t)||i.set(t,n);for(let[t,n]of this)e.has(t)||i.set(t,n);return i}sorted(e=r.defaultSort){return new this.constructor[Symbol.species](this).sort((i,t,n,o)=>e(i,t,n,o))}toJSON(){return[...this.values()]}static defaultSort(e,i){return Number(e>i)||Number(e===i)-1}},c=r;h(c,"Collection"),a(c,"default",r);var k=c;module.exports=v(T);0&&(0);\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/@discordjs/collection/dist/index.js?')},"./node_modules/@koa/router/lib/layer.js":
/*!***********************************************!*\
  !*** ./node_modules/@koa/router/lib/layer.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { pathToRegexp, compile, parse } = __webpack_require__(/*! path-to-regexp */ \"./node_modules/path-to-regexp/dist/index.js\");\nconst { parse: parseUrl, format: formatUrl } = __webpack_require__(/*! url */ \"url\");\n\nmodule.exports = Layer;\n\n/**\n * Initialize a new routing Layer with given `method`, `path`, and `middleware`.\n *\n * @param {String|RegExp} path Path string or regular expression.\n * @param {Array} methods Array of HTTP verbs.\n * @param {Array} middleware Layer callback/middleware or series of.\n * @param {Object=} opts\n * @param {String=} opts.name route name\n * @param {String=} opts.sensitive case sensitive (default: false)\n * @param {String=} opts.strict require the trailing slash (default: false)\n * @returns {Layer}\n * @private\n */\n\nfunction Layer(path, methods, middleware, opts) {\n  this.opts = opts || {};\n  this.name = this.opts.name || null;\n  this.methods = [];\n  this.paramNames = [];\n  this.stack = Array.isArray(middleware) ? middleware : [middleware];\n\n  for (let i = 0; i < methods.length; i++) {\n    const l = this.methods.push(methods[i].toUpperCase());\n    if (this.methods[l - 1] === 'GET') this.methods.unshift('HEAD');\n  }\n\n  // ensure middleware is a function\n  for (let i = 0; i < this.stack.length; i++) {\n    const fn = this.stack[i];\n    const type = (typeof fn);\n    if (type !== 'function')\n      throw new Error(\n        `${methods.toString()} \\`${this.opts.name || path}\\`: \\`middleware\\` must be a function, not \\`${type}\\``\n      );\n  }\n\n  this.path = path;\n  this.regexp = pathToRegexp(path, this.paramNames, this.opts);\n};\n\n/**\n * Returns whether request `path` matches route.\n *\n * @param {String} path\n * @returns {Boolean}\n * @private\n */\n\nLayer.prototype.match = function (path) {\n  return this.regexp.test(path);\n};\n\n/**\n * Returns map of URL parameters for given `path` and `paramNames`.\n *\n * @param {String} path\n * @param {Array.<String>} captures\n * @param {Object=} existingParams\n * @returns {Object}\n * @private\n */\n\nLayer.prototype.params = function (path, captures, existingParams) {\n  const params = existingParams || {};\n\n  for (let len = captures.length, i = 0; i < len; i++) {\n    if (this.paramNames[i]) {\n      const c = captures[i];\n      if (c && c.length !== 0) params[this.paramNames[i].name] = c ? safeDecodeURIComponent(c) : c;\n    }\n  }\n\n  return params;\n};\n\n/**\n * Returns array of regexp url path captures.\n *\n * @param {String} path\n * @returns {Array.<String>}\n * @private\n */\n\nLayer.prototype.captures = function (path) {\n  return this.opts.ignoreCaptures ? [] : path.match(this.regexp).slice(1);\n};\n\n/**\n * Generate URL for route using given `params`.\n *\n * @example\n *\n * ```javascript\n * const route = new Layer('/users/:id', ['GET'], fn);\n *\n * route.url({ id: 123 }); // => \"/users/123\"\n * ```\n *\n * @param {Object} params url parameters\n * @returns {String}\n * @private\n */\n\nLayer.prototype.url = function (params, options) {\n  let args = params;\n  const url = this.path.replace(/\\(\\.\\*\\)/g, '');\n\n  if (typeof params != 'object') {\n    args = Array.prototype.slice.call(arguments);\n    if (typeof args[args.length - 1] == 'object') {\n      options = args[args.length - 1];\n      args = args.slice(0, args.length - 1);\n    }\n  }\n\n  const toPath = compile(url, options);\n  let replaced;\n\n  const tokens = parse(url);\n  let replace = {};\n\n  if (args instanceof Array) {\n    for (let len = tokens.length, i = 0, j = 0; i < len; i++) {\n      if (tokens[i].name) replace[tokens[i].name] = args[j++];\n    }\n  } else if (tokens.some(token => token.name)) {\n    replace = params;\n  } else if (!options) {\n    options = params;\n  }\n\n  replaced = toPath(replace);\n\n  if (options && options.query) {\n    replaced = parseUrl(replaced);\n    if (typeof options.query === 'string') {\n      replaced.search = options.query;\n    } else {\n      replaced.search = undefined;\n      replaced.query = options.query;\n    }\n    return formatUrl(replaced);\n  }\n\n  return replaced;\n};\n\n/**\n * Run validations on route named parameters.\n *\n * @example\n *\n * ```javascript\n * router\n *   .param('user', function (id, ctx, next) {\n *     ctx.user = users[id];\n *     if (!user) return ctx.status = 404;\n *     next();\n *   })\n *   .get('/users/:user', function (ctx, next) {\n *     ctx.body = ctx.user;\n *   });\n * ```\n *\n * @param {String} param\n * @param {Function} middleware\n * @returns {Layer}\n * @private\n */\n\nLayer.prototype.param = function (param, fn) {\n  const stack = this.stack;\n  const params = this.paramNames;\n  const middleware = function (ctx, next) {\n    return fn.call(this, ctx.params[param], ctx, next);\n  };\n  middleware.param = param;\n\n  const names = params.map(function (p) {\n    return p.name;\n  });\n\n  const x = names.indexOf(param);\n  if (x > -1) {\n    // iterate through the stack, to figure out where to place the handler fn\n    stack.some(function (fn, i) {\n      // param handlers are always first, so when we find an fn w/o a param property, stop here\n      // if the param handler at this part of the stack comes after the one we are adding, stop here\n      if (!fn.param || names.indexOf(fn.param) > x) {\n        // inject this param handler right before the current item\n        stack.splice(i, 0, middleware);\n        return true; // then break the loop\n      }\n    });\n  }\n\n  return this;\n};\n\n/**\n * Prefix route path.\n *\n * @param {String} prefix\n * @returns {Layer}\n * @private\n */\n\nLayer.prototype.setPrefix = function (prefix) {\n  if (this.path) {\n    this.path = (this.path !== '/' || this.opts.strict === true) ? `${prefix}${this.path}` : prefix\n    this.paramNames = [];\n    this.regexp = pathToRegexp(this.path, this.paramNames, this.opts);\n  }\n\n  return this;\n};\n\n/**\n * Safe decodeURIComponent, won't throw any error.\n * If `decodeURIComponent` error happen, just return the original value.\n *\n * @param {String} text\n * @returns {String} URL decode original string.\n * @private\n */\n\nfunction safeDecodeURIComponent(text) {\n  try {\n    return decodeURIComponent(text);\n  } catch (e) {\n    return text;\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@koa/router/lib/layer.js?")},"./node_modules/@koa/router/lib/router.js":
/*!************************************************!*\
  !*** ./node_modules/@koa/router/lib/router.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("/**\n * RESTful resource routing middleware for koa.\n *\n * @author Alex Mingoia <talk@alexmingoia.com>\n * @link https://github.com/alexmingoia/koa-router\n */\n\nconst debug = __webpack_require__(/*! debug */ \"./node_modules/debug/src/index.js\")('koa-router');\nconst compose = __webpack_require__(/*! koa-compose */ \"./node_modules/koa-compose/index.js\");\nconst HttpError = __webpack_require__(/*! http-errors */ \"./node_modules/http-errors/index.js\");\nconst methods = __webpack_require__(/*! methods */ \"./node_modules/methods/index.js\");\nconst Layer = __webpack_require__(/*! ./layer */ \"./node_modules/@koa/router/lib/layer.js\");\nconst { pathToRegexp } = __webpack_require__(/*! path-to-regexp */ \"./node_modules/path-to-regexp/dist/index.js\");\n\n/**\n * @module koa-router\n */\n\nmodule.exports = Router;\n\n/**\n * Create a new router.\n *\n * @example\n *\n * Basic usage:\n *\n * ```javascript\n * const Koa = require('koa');\n * const Router = require('@koa/router');\n *\n * const app = new Koa();\n * const router = new Router();\n *\n * router.get('/', (ctx, next) => {\n *   // ctx.router available\n * });\n *\n * app\n *   .use(router.routes())\n *   .use(router.allowedMethods());\n * ```\n *\n * @alias module:koa-router\n * @param {Object=} opts\n * @param {String=} opts.prefix prefix router paths\n * @constructor\n */\n\nfunction Router(opts) {\n  if (!(this instanceof Router)) return new Router(opts);\n\n  this.opts = opts || {};\n  this.methods = this.opts.methods || [\n    'HEAD',\n    'OPTIONS',\n    'GET',\n    'PUT',\n    'PATCH',\n    'POST',\n    'DELETE'\n  ];\n\n  this.params = {};\n  this.stack = [];\n};\n\n/**\n * Create `router.verb()` methods, where *verb* is one of the HTTP verbs such\n * as `router.get()` or `router.post()`.\n *\n * Match URL patterns to callback functions or controller actions using `router.verb()`,\n * where **verb** is one of the HTTP verbs such as `router.get()` or `router.post()`.\n *\n * Additionaly, `router.all()` can be used to match against all methods.\n *\n * ```javascript\n * router\n *   .get('/', (ctx, next) => {\n *     ctx.body = 'Hello World!';\n *   })\n *   .post('/users', (ctx, next) => {\n *     // ...\n *   })\n *   .put('/users/:id', (ctx, next) => {\n *     // ...\n *   })\n *   .del('/users/:id', (ctx, next) => {\n *     // ...\n *   })\n *   .all('/users/:id', (ctx, next) => {\n *     // ...\n *   });\n * ```\n *\n * When a route is matched, its path is available at `ctx._matchedRoute` and if named,\n * the name is available at `ctx._matchedRouteName`\n *\n * Route paths will be translated to regular expressions using\n * [path-to-regexp](https://github.com/pillarjs/path-to-regexp).\n *\n * Query strings will not be considered when matching requests.\n *\n * #### Named routes\n *\n * Routes can optionally have names. This allows generation of URLs and easy\n * renaming of URLs during development.\n *\n * ```javascript\n * router.get('user', '/users/:id', (ctx, next) => {\n *  // ...\n * });\n *\n * router.url('user', 3);\n * // => \"/users/3\"\n * ```\n *\n * #### Multiple middleware\n *\n * Multiple middleware may be given:\n *\n * ```javascript\n * router.get(\n *   '/users/:id',\n *   (ctx, next) => {\n *     return User.findOne(ctx.params.id).then(function(user) {\n *       ctx.user = user;\n *       next();\n *     });\n *   },\n *   ctx => {\n *     console.log(ctx.user);\n *     // => { id: 17, name: \"Alex\" }\n *   }\n * );\n * ```\n *\n * ### Nested routers\n *\n * Nesting routers is supported:\n *\n * ```javascript\n * const forums = new Router();\n * const posts = new Router();\n *\n * posts.get('/', (ctx, next) => {...});\n * posts.get('/:pid', (ctx, next) => {...});\n * forums.use('/forums/:fid/posts', posts.routes(), posts.allowedMethods());\n *\n * // responds to \"/forums/123/posts\" and \"/forums/123/posts/123\"\n * app.use(forums.routes());\n * ```\n *\n * #### Router prefixes\n *\n * Route paths can be prefixed at the router level:\n *\n * ```javascript\n * const router = new Router({\n *   prefix: '/users'\n * });\n *\n * router.get('/', ...); // responds to \"/users\"\n * router.get('/:id', ...); // responds to \"/users/:id\"\n * ```\n *\n * #### URL parameters\n *\n * Named route parameters are captured and added to `ctx.params`.\n *\n * ```javascript\n * router.get('/:category/:title', (ctx, next) => {\n *   console.log(ctx.params);\n *   // => { category: 'programming', title: 'how-to-node' }\n * });\n * ```\n *\n * The [path-to-regexp](https://github.com/pillarjs/path-to-regexp) module is\n * used to convert paths to regular expressions.\n *\n * @name get|put|post|patch|delete|del\n * @memberof module:koa-router.prototype\n * @param {String} path\n * @param {Function=} middleware route middleware(s)\n * @param {Function} callback route callback\n * @returns {Router}\n */\n\nfor (let i = 0; i < methods.length; i++) {\n  function setMethodVerb(method) {\n    Router.prototype[method] = function(name, path, middleware) {\n      if (typeof path === \"string\" || path instanceof RegExp) {\n        middleware = Array.prototype.slice.call(arguments, 2);\n      } else {\n        middleware = Array.prototype.slice.call(arguments, 1);\n        path = name;\n        name = null;\n      }\n\n      this.register(path, [method], middleware, {\n        name: name\n      });\n\n      return this;\n    };\n  }\n  setMethodVerb(methods[i]);\n}\n\n// Alias for `router.delete()` because delete is a reserved word\nRouter.prototype.del = Router.prototype['delete'];\n\n/**\n * Use given middleware.\n *\n * Middleware run in the order they are defined by `.use()`. They are invoked\n * sequentially, requests start at the first middleware and work their way\n * \"down\" the middleware stack.\n *\n * @example\n *\n * ```javascript\n * // session middleware will run before authorize\n * router\n *   .use(session())\n *   .use(authorize());\n *\n * // use middleware only with given path\n * router.use('/users', userAuth());\n *\n * // or with an array of paths\n * router.use(['/users', '/admin'], userAuth());\n *\n * app.use(router.routes());\n * ```\n *\n * @param {String=} path\n * @param {Function} middleware\n * @param {Function=} ...\n * @returns {Router}\n */\n\nRouter.prototype.use = function () {\n  const router = this;\n  const middleware = Array.prototype.slice.call(arguments);\n  let path;\n\n  // support array of paths\n  if (Array.isArray(middleware[0]) && typeof middleware[0][0] === 'string') {\n    let arrPaths = middleware[0];\n    for (let i = 0; i < arrPaths.length; i++) {\n      const p = arrPaths[i];\n      router.use.apply(router, [p].concat(middleware.slice(1)));\n    }\n\n    return this;\n  }\n\n  const hasPath = typeof middleware[0] === 'string';\n  if (hasPath) path = middleware.shift();\n\n  for (let i = 0; i < middleware.length; i++) {\n    const m = middleware[i];\n    if (m.router) {\n      const cloneRouter = Object.assign(Object.create(Router.prototype), m.router, {\n        stack: m.router.stack.slice(0)\n      });\n\n      for (let j = 0; j < cloneRouter.stack.length; j++) {\n        const nestedLayer = cloneRouter.stack[j];\n        const cloneLayer = Object.assign(\n          Object.create(Layer.prototype),\n          nestedLayer\n        );\n\n        if (path) cloneLayer.setPrefix(path);\n        if (router.opts.prefix) cloneLayer.setPrefix(router.opts.prefix);\n        router.stack.push(cloneLayer);\n        cloneRouter.stack[j] = cloneLayer;\n      }\n\n      if (router.params) {\n        function setRouterParams(paramArr) {\n          const routerParams = paramArr;\n          for (let j = 0; j < routerParams.length; j++) {\n            const key = routerParams[j];\n            cloneRouter.param(key, router.params[key]);\n          }\n        }\n        setRouterParams(Object.keys(router.params));\n      }\n    } else {\n      const keys = [];\n      pathToRegexp(router.opts.prefix || '', keys);\n      const routerPrefixHasParam = router.opts.prefix && keys.length;\n      router.register(path || '([^\\/]*)', [], m, { end: false, ignoreCaptures: !hasPath && !routerPrefixHasParam });\n    }\n  }\n\n  return this;\n};\n\n/**\n * Set the path prefix for a Router instance that was already initialized.\n *\n * @example\n *\n * ```javascript\n * router.prefix('/things/:thing_id')\n * ```\n *\n * @param {String} prefix\n * @returns {Router}\n */\n\nRouter.prototype.prefix = function (prefix) {\n  prefix = prefix.replace(/\\/$/, '');\n\n  this.opts.prefix = prefix;\n\n  for (let i = 0; i < this.stack.length; i++) {\n    const route = this.stack[i];\n    route.setPrefix(prefix);\n  }\n\n  return this;\n};\n\n/**\n * Returns router middleware which dispatches a route matching the request.\n *\n * @returns {Function}\n */\n\nRouter.prototype.routes = Router.prototype.middleware = function () {\n  const router = this;\n\n  let dispatch = function dispatch(ctx, next) {\n    debug('%s %s', ctx.method, ctx.path);\n\n    const path = router.opts.routerPath || ctx.routerPath || ctx.path;\n    const matched = router.match(path, ctx.method);\n    let layerChain;\n\n    if (ctx.matched) {\n      ctx.matched.push.apply(ctx.matched, matched.path);\n    } else {\n      ctx.matched = matched.path;\n    }\n\n    ctx.router = router;\n\n    if (!matched.route) return next();\n\n    const matchedLayers = matched.pathAndMethod\n    const mostSpecificLayer = matchedLayers[matchedLayers.length - 1]\n    ctx._matchedRoute = mostSpecificLayer.path;\n    if (mostSpecificLayer.name) {\n      ctx._matchedRouteName = mostSpecificLayer.name;\n    }\n\n    layerChain = matchedLayers.reduce(function(memo, layer) {\n      memo.push(function(ctx, next) {\n        ctx.captures = layer.captures(path, ctx.captures);\n        ctx.params = ctx.request.params = layer.params(path, ctx.captures, ctx.params);\n        ctx.routerPath = layer.path;\n        ctx.routerName = layer.name;\n        ctx._matchedRoute = layer.path;\n        if (layer.name) {\n          ctx._matchedRouteName = layer.name;\n        }\n        return next();\n      });\n      return memo.concat(layer.stack);\n    }, []);\n\n    return compose(layerChain)(ctx, next);\n  };\n\n  dispatch.router = this;\n\n  return dispatch;\n};\n\n/**\n * Returns separate middleware for responding to `OPTIONS` requests with\n * an `Allow` header containing the allowed methods, as well as responding\n * with `405 Method Not Allowed` and `501 Not Implemented` as appropriate.\n *\n * @example\n *\n * ```javascript\n * const Koa = require('koa');\n * const Router = require('@koa/router');\n *\n * const app = new Koa();\n * const router = new Router();\n *\n * app.use(router.routes());\n * app.use(router.allowedMethods());\n * ```\n *\n * **Example with [Boom](https://github.com/hapijs/boom)**\n *\n * ```javascript\n * const Koa = require('koa');\n * const Router = require('@koa/router');\n * const Boom = require('boom');\n *\n * const app = new Koa();\n * const router = new Router();\n *\n * app.use(router.routes());\n * app.use(router.allowedMethods({\n *   throw: true,\n *   notImplemented: () => new Boom.notImplemented(),\n *   methodNotAllowed: () => new Boom.methodNotAllowed()\n * }));\n * ```\n *\n * @param {Object=} options\n * @param {Boolean=} options.throw throw error instead of setting status and header\n * @param {Function=} options.notImplemented throw the returned value in place of the default NotImplemented error\n * @param {Function=} options.methodNotAllowed throw the returned value in place of the default MethodNotAllowed error\n * @returns {Function}\n */\n\nRouter.prototype.allowedMethods = function (options) {\n  options = options || {};\n  const implemented = this.methods;\n\n  return function allowedMethods(ctx, next) {\n    return next().then(function() {\n      const allowed = {};\n\n      if (!ctx.status || ctx.status === 404) {\n        for (let i = 0; i < ctx.matched.length; i++) {\n          const route = ctx.matched[i];\n          for (let j = 0; j < route.methods.length; j++) {\n            const method = route.methods[j];\n            allowed[method] = method;\n          }\n        }\n\n        const allowedArr = Object.keys(allowed);\n\n        if (!~implemented.indexOf(ctx.method)) {\n          if (options.throw) {\n            let notImplementedThrowable = (typeof options.notImplemented === 'function')\n            ? options.notImplemented()  // set whatever the user returns from their function\n            : new HttpError.NotImplemented();\n\n            throw notImplementedThrowable;\n          } else {\n            ctx.status = 501;\n            ctx.set('Allow', allowedArr.join(', '));\n          }\n        } else if (allowedArr.length) {\n          if (ctx.method === 'OPTIONS') {\n            ctx.status = 200;\n            ctx.body = '';\n            ctx.set('Allow', allowedArr.join(', '));\n          } else if (!allowed[ctx.method]) {\n            if (options.throw) {\n              let notAllowedThrowable = (typeof options.methodNotAllowed === 'function')\n              ? options.methodNotAllowed() // set whatever the user returns from their function\n              : new HttpError.MethodNotAllowed();\n\n              throw notAllowedThrowable;\n            } else {\n              ctx.status = 405;\n              ctx.set('Allow', allowedArr.join(', '));\n            }\n          }\n        }\n      }\n    });\n  };\n};\n\n/**\n * Register route with all methods.\n *\n * @param {String} name Optional.\n * @param {String} path\n * @param {Function=} middleware You may also pass multiple middleware.\n * @param {Function} callback\n * @returns {Router}\n * @private\n */\n\nRouter.prototype.all = function (name, path, middleware) {\n  if (typeof path === 'string') {\n    middleware = Array.prototype.slice.call(arguments, 2);\n  } else {\n    middleware = Array.prototype.slice.call(arguments, 1);\n    path = name;\n    name = null;\n  }\n\n  this.register(path, methods, middleware, { name });\n\n  return this;\n};\n\n/**\n * Redirect `source` to `destination` URL with optional 30x status `code`.\n *\n * Both `source` and `destination` can be route names.\n *\n * ```javascript\n * router.redirect('/login', 'sign-in');\n * ```\n *\n * This is equivalent to:\n *\n * ```javascript\n * router.all('/login', ctx => {\n *   ctx.redirect('/sign-in');\n *   ctx.status = 301;\n * });\n * ```\n *\n * @param {String} source URL or route name.\n * @param {String} destination URL or route name.\n * @param {Number=} code HTTP status code (default: 301).\n * @returns {Router}\n */\n\nRouter.prototype.redirect = function (source, destination, code) {\n  // lookup source route by name\n  if (source[0] !== '/') source = this.url(source);\n\n  // lookup destination route by name\n  if (destination[0] !== '/' && !destination.includes('://')) destination = this.url(destination);\n\n  return this.all(source, ctx => {\n    ctx.redirect(destination);\n    ctx.status = code || 301;\n  });\n};\n\n/**\n * Create and register a route.\n *\n * @param {String} path Path string.\n * @param {Array.<String>} methods Array of HTTP verbs.\n * @param {Function} middleware Multiple middleware also accepted.\n * @returns {Layer}\n * @private\n */\n\nRouter.prototype.register = function (path, methods, middleware, opts) {\n  opts = opts || {};\n\n  const router = this;\n  const stack = this.stack;\n\n  // support array of paths\n  if (Array.isArray(path)) {\n    for (let i = 0; i < path.length; i++) {\n      const curPath = path[i];\n      router.register.call(router, curPath, methods, middleware, opts);\n    }\n\n    return this;\n  }\n\n  // create route\n  const route = new Layer(path, methods, middleware, {\n    end: opts.end === false ? opts.end : true,\n    name: opts.name,\n    sensitive: opts.sensitive || this.opts.sensitive || false,\n    strict: opts.strict || this.opts.strict || false,\n    prefix: opts.prefix || this.opts.prefix || \"\",\n    ignoreCaptures: opts.ignoreCaptures\n  });\n\n  if (this.opts.prefix) {\n    route.setPrefix(this.opts.prefix);\n  }\n\n  // add parameter middleware\n  for (let i = 0; i < Object.keys(this.params).length; i++) {\n    const param = Object.keys(this.params)[i];\n    route.param(param, this.params[param]);\n  }\n\n  stack.push(route);\n\n  debug('defined route %s %s', route.methods, route.path);\n\n  return route;\n};\n\n/**\n * Lookup route with given `name`.\n *\n * @param {String} name\n * @returns {Layer|false}\n */\n\nRouter.prototype.route = function (name) {\n  const routes = this.stack;\n\n  for (let len = routes.length, i=0; i<len; i++) {\n    if (routes[i].name && routes[i].name === name) return routes[i];\n  }\n\n  return false;\n};\n\n/**\n * Generate URL for route. Takes a route name and map of named `params`.\n *\n * @example\n *\n * ```javascript\n * router.get('user', '/users/:id', (ctx, next) => {\n *   // ...\n * });\n *\n * router.url('user', 3);\n * // => \"/users/3\"\n *\n * router.url('user', { id: 3 });\n * // => \"/users/3\"\n *\n * router.use((ctx, next) => {\n *   // redirect to named route\n *   ctx.redirect(ctx.router.url('sign-in'));\n * })\n *\n * router.url('user', { id: 3 }, { query: { limit: 1 } });\n * // => \"/users/3?limit=1\"\n *\n * router.url('user', { id: 3 }, { query: \"limit=1\" });\n * // => \"/users/3?limit=1\"\n * ```\n *\n * @param {String} name route name\n * @param {Object} params url parameters\n * @param {Object} [options] options parameter\n * @param {Object|String} [options.query] query options\n * @returns {String|Error}\n */\n\nRouter.prototype.url = function (name, params) {\n  const route = this.route(name);\n\n  if (route) {\n    const args = Array.prototype.slice.call(arguments, 1);\n    return route.url.apply(route, args);\n  }\n\n  return new Error(`No route found for name: ${name}`);\n};\n\n/**\n * Match given `path` and return corresponding routes.\n *\n * @param {String} path\n * @param {String} method\n * @returns {Object.<path, pathAndMethod>} returns layers that matched path and\n * path and method.\n * @private\n */\n\nRouter.prototype.match = function (path, method) {\n  const layers = this.stack;\n  let layer;\n  const matched = {\n    path: [],\n    pathAndMethod: [],\n    route: false\n  };\n\n  for (let len = layers.length, i = 0; i < len; i++) {\n    layer = layers[i];\n\n    debug('test %s %s', layer.path, layer.regexp);\n\n    if (layer.match(path)) {\n      matched.path.push(layer);\n\n      if (layer.methods.length === 0 || ~layer.methods.indexOf(method)) {\n        matched.pathAndMethod.push(layer);\n        if (layer.methods.length) matched.route = true;\n      }\n    }\n  }\n\n  return matched;\n};\n\n/**\n * Run middleware for named route parameters. Useful for auto-loading or\n * validation.\n *\n * @example\n *\n * ```javascript\n * router\n *   .param('user', (id, ctx, next) => {\n *     ctx.user = users[id];\n *     if (!ctx.user) return ctx.status = 404;\n *     return next();\n *   })\n *   .get('/users/:user', ctx => {\n *     ctx.body = ctx.user;\n *   })\n *   .get('/users/:user/friends', ctx => {\n *     return ctx.user.getFriends().then(function(friends) {\n *       ctx.body = friends;\n *     });\n *   })\n *   // /users/3 => {\"id\": 3, \"name\": \"Alex\"}\n *   // /users/3/friends => [{\"id\": 4, \"name\": \"TJ\"}]\n * ```\n *\n * @param {String} param\n * @param {Function} middleware\n * @returns {Router}\n */\n\nRouter.prototype.param = function(param, middleware) {\n  this.params[param] = middleware;\n  for (let i = 0; i < this.stack.length; i++) {\n    const route = this.stack[i];\n    route.param(param, middleware);\n  }\n\n  return this;\n};\n\n/**\n * Generate URL from url pattern and given `params`.\n *\n * @example\n *\n * ```javascript\n * const url = Router.url('/users/:id', {id: 1});\n * // => \"/users/1\"\n * ```\n *\n * @param {String} path url pattern\n * @param {Object} params url parameters\n * @returns {String}\n */\nRouter.url = function (path) {\n  const args = Array.prototype.slice.call(arguments, 1);\n  return Layer.prototype.url.apply({ path }, args);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@koa/router/lib/router.js?")},"./node_modules/@panva/asn1.js/lib/asn1.js":
/*!*************************************************!*\
  !*** ./node_modules/@panva/asn1.js/lib/asn1.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const { define } = __webpack_require__(/*! ./asn1/api */ "./node_modules/@panva/asn1.js/lib/asn1/api.js")\nconst base = __webpack_require__(/*! ./asn1/base */ "./node_modules/@panva/asn1.js/lib/asn1/base/index.js")\nconst constants = __webpack_require__(/*! ./asn1/constants */ "./node_modules/@panva/asn1.js/lib/asn1/constants/index.js")\nconst decoders = __webpack_require__(/*! ./asn1/decoders */ "./node_modules/@panva/asn1.js/lib/asn1/decoders/index.js")\nconst encoders = __webpack_require__(/*! ./asn1/encoders */ "./node_modules/@panva/asn1.js/lib/asn1/encoders/index.js")\n\nmodule.exports = {\n  base,\n  constants,\n  decoders,\n  define,\n  encoders\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@panva/asn1.js/lib/asn1.js?')},"./node_modules/@panva/asn1.js/lib/asn1/api.js":
/*!*****************************************************!*\
  !*** ./node_modules/@panva/asn1.js/lib/asn1/api.js ***!
  \*****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const { inherits } = __webpack_require__(/*! util */ "util")\nconst encoders = __webpack_require__(/*! ./encoders */ "./node_modules/@panva/asn1.js/lib/asn1/encoders/index.js")\nconst decoders = __webpack_require__(/*! ./decoders */ "./node_modules/@panva/asn1.js/lib/asn1/decoders/index.js")\n\nmodule.exports.define = function define (name, body) {\n  return new Entity(name, body)\n}\n\nfunction Entity (name, body) {\n  this.name = name\n  this.body = body\n\n  this.decoders = {}\n  this.encoders = {}\n}\n\nEntity.prototype._createNamed = function createNamed (Base) {\n  const name = this.name\n\n  function Generated (entity) {\n    this._initNamed(entity, name)\n  }\n  inherits(Generated, Base)\n  Generated.prototype._initNamed = function _initNamed (entity, name) {\n    Base.call(this, entity, name)\n  }\n\n  return new Generated(this)\n}\n\nEntity.prototype._getDecoder = function _getDecoder (enc) {\n  enc = enc || \'der\'\n  // Lazily create decoder\n  if (!Object.prototype.hasOwnProperty.call(this.decoders, enc)) { this.decoders[enc] = this._createNamed(decoders[enc]) }\n  return this.decoders[enc]\n}\n\nEntity.prototype.decode = function decode (data, enc, options) {\n  return this._getDecoder(enc).decode(data, options)\n}\n\nEntity.prototype._getEncoder = function _getEncoder (enc) {\n  enc = enc || \'der\'\n  // Lazily create encoder\n  if (!Object.prototype.hasOwnProperty.call(this.encoders, enc)) { this.encoders[enc] = this._createNamed(encoders[enc]) }\n  return this.encoders[enc]\n}\n\nEntity.prototype.encode = function encode (data, enc, /* internal */ reporter) {\n  return this._getEncoder(enc).encode(data, reporter)\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@panva/asn1.js/lib/asn1/api.js?')},"./node_modules/@panva/asn1.js/lib/asn1/base/buffer.js":
/*!*************************************************************!*\
  !*** ./node_modules/@panva/asn1.js/lib/asn1/base/buffer.js ***!
  \*************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { inherits } = __webpack_require__(/*! util */ \"util\")\n\nconst { Reporter } = __webpack_require__(/*! ../base/reporter */ \"./node_modules/@panva/asn1.js/lib/asn1/base/reporter.js\")\n\nfunction DecoderBuffer (base, options) {\n  Reporter.call(this, options)\n  if (!Buffer.isBuffer(base)) {\n    this.error('Input not Buffer')\n    return\n  }\n\n  this.base = base\n  this.offset = 0\n  this.length = base.length\n}\ninherits(DecoderBuffer, Reporter)\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer (data) {\n  if (data instanceof DecoderBuffer) {\n    return true\n  }\n\n  // Or accept compatible API\n  const isCompatible = typeof data === 'object' &&\n    Buffer.isBuffer(data.base) &&\n    data.constructor.name === 'DecoderBuffer' &&\n    typeof data.offset === 'number' &&\n    typeof data.length === 'number' &&\n    typeof data.save === 'function' &&\n    typeof data.restore === 'function' &&\n    typeof data.isEmpty === 'function' &&\n    typeof data.readUInt8 === 'function' &&\n    typeof data.skip === 'function' &&\n    typeof data.raw === 'function'\n\n  return isCompatible\n}\n\nDecoderBuffer.prototype.save = function save () {\n  return { offset: this.offset, reporter: Reporter.prototype.save.call(this) }\n}\n\nDecoderBuffer.prototype.restore = function restore (save) {\n  // Return skipped data\n  const res = new DecoderBuffer(this.base)\n  res.offset = save.offset\n  res.length = this.offset\n\n  this.offset = save.offset\n  Reporter.prototype.restore.call(this, save.reporter)\n\n  return res\n}\n\nDecoderBuffer.prototype.isEmpty = function isEmpty () {\n  return this.offset === this.length\n}\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8 (fail) {\n  if (this.offset + 1 <= this.length) { return this.base.readUInt8(this.offset++, true) } else { return this.error(fail || 'DecoderBuffer overrun') }\n}\n\nDecoderBuffer.prototype.skip = function skip (bytes, fail) {\n  if (!(this.offset + bytes <= this.length)) { return this.error(fail || 'DecoderBuffer overrun') }\n\n  const res = new DecoderBuffer(this.base)\n\n  // Share reporter state\n  res._reporterState = this._reporterState\n\n  res.offset = this.offset\n  res.length = this.offset + bytes\n  this.offset += bytes\n  return res\n}\n\nDecoderBuffer.prototype.raw = function raw (save) {\n  return this.base.slice(save ? save.offset : this.offset, this.length)\n}\n\nfunction EncoderBuffer (value, reporter) {\n  if (Array.isArray(value)) {\n    this.length = 0\n    this.value = value.map(function (item) {\n      if (!EncoderBuffer.isEncoderBuffer(item)) { item = new EncoderBuffer(item, reporter) }\n      this.length += item.length\n      return item\n    }, this)\n  } else if (typeof value === 'number') {\n    if (!(value >= 0 && value <= 0xff)) { return reporter.error('non-byte EncoderBuffer value') }\n    this.value = value\n    this.length = 1\n  } else if (typeof value === 'string') {\n    this.value = value\n    this.length = Buffer.byteLength(value)\n  } else if (Buffer.isBuffer(value)) {\n    this.value = value\n    this.length = value.length\n  } else {\n    return reporter.error(`Unsupported type: ${typeof value}`)\n  }\n}\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer (data) {\n  if (data instanceof EncoderBuffer) {\n    return true\n  }\n\n  // Or accept compatible API\n  const isCompatible = typeof data === 'object' &&\n    data.constructor.name === 'EncoderBuffer' &&\n    typeof data.length === 'number' &&\n    typeof data.join === 'function'\n\n  return isCompatible\n}\n\nEncoderBuffer.prototype.join = function join (out, offset) {\n  if (!out) { out = Buffer.alloc(this.length) }\n  if (!offset) { offset = 0 }\n\n  if (this.length === 0) { return out }\n\n  if (Array.isArray(this.value)) {\n    this.value.forEach(function (item) {\n      item.join(out, offset)\n      offset += item.length\n    })\n  } else {\n    if (typeof this.value === 'number') { out[offset] = this.value } else if (typeof this.value === 'string') { out.write(this.value, offset) } else if (Buffer.isBuffer(this.value)) { this.value.copy(out, offset) }\n    offset += this.length\n  }\n\n  return out\n}\n\nmodule.exports = {\n  DecoderBuffer,\n  EncoderBuffer\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@panva/asn1.js/lib/asn1/base/buffer.js?")},"./node_modules/@panva/asn1.js/lib/asn1/base/index.js":
/*!************************************************************!*\
  !*** ./node_modules/@panva/asn1.js/lib/asn1/base/index.js ***!
  \************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const { Reporter } = __webpack_require__(/*! ./reporter */ "./node_modules/@panva/asn1.js/lib/asn1/base/reporter.js")\nconst { DecoderBuffer, EncoderBuffer } = __webpack_require__(/*! ./buffer */ "./node_modules/@panva/asn1.js/lib/asn1/base/buffer.js")\nconst Node = __webpack_require__(/*! ./node */ "./node_modules/@panva/asn1.js/lib/asn1/base/node.js")\n\nmodule.exports = {\n  DecoderBuffer,\n  EncoderBuffer,\n  Node,\n  Reporter\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@panva/asn1.js/lib/asn1/base/index.js?')},"./node_modules/@panva/asn1.js/lib/asn1/base/node.js":
/*!***********************************************************!*\
  !*** ./node_modules/@panva/asn1.js/lib/asn1/base/node.js ***!
  \***********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { strict: assert } = __webpack_require__(/*! assert */ \"assert\")\n\nconst { Reporter } = __webpack_require__(/*! ../base/reporter */ \"./node_modules/@panva/asn1.js/lib/asn1/base/reporter.js\")\nconst { DecoderBuffer, EncoderBuffer } = __webpack_require__(/*! ../base/buffer */ \"./node_modules/@panva/asn1.js/lib/asn1/base/buffer.js\")\n\n// Supported tags\nconst tags = [\n  'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n  'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n  'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n  'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n]\n\n// Public methods list\nconst methods = [\n  'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n  'any', 'contains'\n].concat(tags)\n\n// Overrided methods list\nconst overrided = [\n  '_peekTag', '_decodeTag', '_use',\n  '_decodeStr', '_decodeObjid', '_decodeTime',\n  '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n  '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n  '_encodeNull', '_encodeInt', '_encodeBool'\n]\n\nfunction Node (enc, parent, name) {\n  const state = {}\n  this._baseState = state\n\n  state.name = name\n  state.enc = enc\n\n  state.parent = parent || null\n  state.children = null\n\n  // State\n  state.tag = null\n  state.args = null\n  state.reverseArgs = null\n  state.choice = null\n  state.optional = false\n  state.any = false\n  state.obj = false\n  state.use = null\n  state.useDecoder = null\n  state.key = null\n  state.default = null\n  state.explicit = null\n  state.implicit = null\n  state.contains = null\n\n  // Should create new instance on each method\n  if (!state.parent) {\n    state.children = []\n    this._wrap()\n  }\n}\n\nconst stateProps = [\n  'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n  'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n  'implicit', 'contains'\n]\n\nNode.prototype.clone = function clone () {\n  const state = this._baseState\n  const cstate = {}\n  stateProps.forEach(function (prop) {\n    cstate[prop] = state[prop]\n  })\n  const res = new this.constructor(cstate.parent)\n  res._baseState = cstate\n  return res\n}\n\nNode.prototype._wrap = function wrap () {\n  const state = this._baseState\n  methods.forEach(function (method) {\n    this[method] = function _wrappedMethod () {\n      const clone = new this.constructor(this)\n      state.children.push(clone)\n      return clone[method].apply(clone, arguments)\n    }\n  }, this)\n}\n\nNode.prototype._init = function init (body) {\n  const state = this._baseState\n\n  assert(state.parent === null)\n  body.call(this)\n\n  // Filter children\n  state.children = state.children.filter(function (child) {\n    return child._baseState.parent === this\n  }, this)\n  assert.equal(state.children.length, 1, 'Root node can have only one child')\n}\n\nNode.prototype._useArgs = function useArgs (args) {\n  const state = this._baseState\n\n  // Filter children and args\n  const children = args.filter(function (arg) {\n    return arg instanceof this.constructor\n  }, this)\n  args = args.filter(function (arg) {\n    return !(arg instanceof this.constructor)\n  }, this)\n\n  if (children.length !== 0) {\n    assert(state.children === null)\n    state.children = children\n\n    // Replace parent to maintain backward link\n    children.forEach(function (child) {\n      child._baseState.parent = this\n    }, this)\n  }\n  if (args.length !== 0) {\n    assert(state.args === null)\n    state.args = args\n    state.reverseArgs = args.map(function (arg) {\n      if (typeof arg !== 'object' || arg.constructor !== Object) { return arg }\n\n      const res = {}\n      Object.keys(arg).forEach(function (key) {\n        if (key == (key | 0)) { key |= 0 } // eslint-disable-line eqeqeq\n        const value = arg[key]\n        res[value] = key\n      })\n      return res\n    })\n  }\n}\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function (method) {\n  Node.prototype[method] = function _overrided () {\n    const state = this._baseState\n    throw new Error(`${method} not implemented for encoding: ${state.enc}`)\n  }\n})\n\n//\n// Public methods\n//\n\ntags.forEach(function (tag) {\n  Node.prototype[tag] = function _tagMethod () {\n    const state = this._baseState\n    const args = Array.prototype.slice.call(arguments)\n\n    assert(state.tag === null)\n    state.tag = tag\n\n    this._useArgs(args)\n\n    return this\n  }\n})\n\nNode.prototype.use = function use (item) {\n  assert(item)\n  const state = this._baseState\n\n  assert(state.use === null)\n  state.use = item\n\n  return this\n}\n\nNode.prototype.optional = function optional () {\n  const state = this._baseState\n\n  state.optional = true\n\n  return this\n}\n\nNode.prototype.def = function def (val) {\n  const state = this._baseState\n\n  assert(state.default === null)\n  state.default = val\n  state.optional = true\n\n  return this\n}\n\nNode.prototype.explicit = function explicit (num) {\n  const state = this._baseState\n\n  assert(state.explicit === null && state.implicit === null)\n  state.explicit = num\n\n  return this\n}\n\nNode.prototype.implicit = function implicit (num) {\n  const state = this._baseState\n\n  assert(state.explicit === null && state.implicit === null)\n  state.implicit = num\n\n  return this\n}\n\nNode.prototype.obj = function obj () {\n  const state = this._baseState\n  const args = Array.prototype.slice.call(arguments)\n\n  state.obj = true\n\n  if (args.length !== 0) { this._useArgs(args) }\n\n  return this\n}\n\nNode.prototype.key = function key (newKey) {\n  const state = this._baseState\n\n  assert(state.key === null)\n  state.key = newKey\n\n  return this\n}\n\nNode.prototype.any = function any () {\n  const state = this._baseState\n\n  state.any = true\n\n  return this\n}\n\nNode.prototype.choice = function choice (obj) {\n  const state = this._baseState\n\n  assert(state.choice === null)\n  state.choice = obj\n  this._useArgs(Object.keys(obj).map(function (key) {\n    return obj[key]\n  }))\n\n  return this\n}\n\nNode.prototype.contains = function contains (item) {\n  const state = this._baseState\n\n  assert(state.use === null)\n  state.contains = item\n\n  return this\n}\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode (input, options) {\n  const state = this._baseState\n\n  // Decode root node\n  if (state.parent === null) { return input.wrapResult(state.children[0]._decode(input, options)) }\n\n  let result = state.default\n  let present = true\n\n  let prevKey = null\n  if (state.key !== null) { prevKey = input.enterKey(state.key) }\n\n  // Check if tag is there\n  if (state.optional) {\n    let tag = null\n    if (state.explicit !== null) { tag = state.explicit } else if (state.implicit !== null) { tag = state.implicit } else if (state.tag !== null) { tag = state.tag }\n\n    if (tag === null && !state.any) {\n      // Trial and Error\n      const save = input.save()\n      try {\n        if (state.choice === null) { this._decodeGeneric(state.tag, input, options) } else { this._decodeChoice(input, options) }\n        present = true\n      } catch (e) {\n        present = false\n      }\n      input.restore(save)\n    } else {\n      present = this._peekTag(input, tag, state.any)\n\n      if (input.isError(present)) { return present }\n    }\n  }\n\n  // Push object on stack\n  let prevObj\n  if (state.obj && present) { prevObj = input.enterObject() }\n\n  if (present) {\n    // Unwrap explicit values\n    if (state.explicit !== null) {\n      const explicit = this._decodeTag(input, state.explicit)\n      if (input.isError(explicit)) { return explicit }\n      input = explicit\n    }\n\n    const start = input.offset\n\n    // Unwrap implicit and normal values\n    if (state.use === null && state.choice === null) {\n      let save\n      if (state.any) { save = input.save() }\n      const body = this._decodeTag(\n        input,\n        state.implicit !== null ? state.implicit : state.tag,\n        state.any\n      )\n      if (input.isError(body)) { return body }\n\n      if (state.any) { result = input.raw(save) } else { input = body }\n    }\n\n    if (options && options.track && state.tag !== null) { options.track(input.path(), start, input.length, 'tagged') }\n\n    if (options && options.track && state.tag !== null) { options.track(input.path(), input.offset, input.length, 'content') }\n\n    // Select proper method for tag\n    if (state.any) {\n      // no-op\n    } else if (state.choice === null) {\n      result = this._decodeGeneric(state.tag, input, options)\n    } else {\n      result = this._decodeChoice(input, options)\n    }\n\n    if (input.isError(result)) { return result }\n\n    // Decode children\n    if (!state.any && state.choice === null && state.children !== null) {\n      state.children.forEach(function decodeChildren (child) {\n        // NOTE: We are ignoring errors here, to let parser continue with other\n        // parts of encoded data\n        child._decode(input, options)\n      })\n    }\n\n    // Decode contained/encoded by schema, only in bit or octet strings\n    if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n      const data = new DecoderBuffer(result)\n      result = this._getUse(state.contains, input._reporterState.obj)\n        ._decode(data, options)\n    }\n  }\n\n  // Pop object\n  if (state.obj && present) { result = input.leaveObject(prevObj) }\n\n  // Set key\n  if (state.key !== null && (result !== null || present === true)) { input.leaveKey(prevKey, state.key, result) } else if (prevKey !== null) { input.exitKey(prevKey) }\n\n  return result\n}\n\nNode.prototype._decodeGeneric = function decodeGeneric (tag, input, options) {\n  const state = this._baseState\n\n  if (tag === 'seq' || tag === 'set') { return null }\n  if (tag === 'seqof' || tag === 'setof') { return this._decodeList(input, tag, state.args[0], options) } else if (/str$/.test(tag)) { return this._decodeStr(input, tag, options) } else if (tag === 'objid' && state.args) { return this._decodeObjid(input, state.args[0], state.args[1], options) } else if (tag === 'objid') { return this._decodeObjid(input, null, null, options) } else if (tag === 'gentime' || tag === 'utctime') { return this._decodeTime(input, tag, options) } else if (tag === 'null_') { return this._decodeNull(input, options) } else if (tag === 'bool') { return this._decodeBool(input, options) } else if (tag === 'objDesc') { return this._decodeStr(input, tag, options) } else if (tag === 'int' || tag === 'enum') { return this._decodeInt(input, state.args && state.args[0], options) }\n\n  if (state.use !== null) {\n    return this._getUse(state.use, input._reporterState.obj)\n      ._decode(input, options)\n  } else {\n    return input.error(`unknown tag: ${tag}`)\n  }\n}\n\nNode.prototype._getUse = function _getUse (entity, obj) {\n  const state = this._baseState\n  // Create altered use decoder if implicit is set\n  state.useDecoder = this._use(entity, obj)\n  assert(state.useDecoder._baseState.parent === null)\n  state.useDecoder = state.useDecoder._baseState.children[0]\n  if (state.implicit !== state.useDecoder._baseState.implicit) {\n    state.useDecoder = state.useDecoder.clone()\n    state.useDecoder._baseState.implicit = state.implicit\n  }\n  return state.useDecoder\n}\n\nNode.prototype._decodeChoice = function decodeChoice (input, options) {\n  const state = this._baseState\n  let result = null\n  let match = false\n\n  Object.keys(state.choice).some(function (key) {\n    const save = input.save()\n    const node = state.choice[key]\n    try {\n      const value = node._decode(input, options)\n      if (input.isError(value)) { return false }\n\n      result = { type: key, value: value }\n      match = true\n    } catch (e) {\n      input.restore(save)\n      return false\n    }\n    return true\n  }, this)\n\n  if (!match) { return input.error('Choice not matched') }\n\n  return result\n}\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer (data) {\n  return new EncoderBuffer(data, this.reporter)\n}\n\nNode.prototype._encode = function encode (data, reporter, parent) {\n  const state = this._baseState\n  if (state.default !== null && state.default === data) { return }\n\n  const result = this._encodeValue(data, reporter, parent)\n  if (result === undefined) { return }\n\n  if (this._skipDefault(result, reporter, parent)) { return }\n\n  return result\n}\n\nNode.prototype._encodeValue = function encode (data, reporter, parent) {\n  const state = this._baseState\n\n  // Decode root node\n  if (state.parent === null) { return state.children[0]._encode(data, reporter || new Reporter()) }\n\n  let result = null\n\n  // Set reporter to share it with a child class\n  this.reporter = reporter\n\n  // Check if data is there\n  if (state.optional && data === undefined) {\n    if (state.default !== null) { data = state.default } else { return }\n  }\n\n  // Encode children first\n  let content = null\n  let primitive = false\n  if (state.any) {\n    // Anything that was given is translated to buffer\n    result = this._createEncoderBuffer(data)\n  } else if (state.choice) {\n    result = this._encodeChoice(data, reporter)\n  } else if (state.contains) {\n    content = this._getUse(state.contains, parent)._encode(data, reporter)\n    primitive = true\n  } else if (state.children) {\n    content = state.children.map(function (child) {\n      if (child._baseState.tag === 'null_') { return child._encode(null, reporter, data) }\n\n      if (child._baseState.key === null) { return reporter.error('Child should have a key') }\n      const prevKey = reporter.enterKey(child._baseState.key)\n\n      if (typeof data !== 'object') { return reporter.error('Child expected, but input is not object') }\n\n      const res = child._encode(data[child._baseState.key], reporter, data)\n      reporter.leaveKey(prevKey)\n\n      return res\n    }, this).filter(function (child) {\n      return child\n    })\n    content = this._createEncoderBuffer(content)\n  } else {\n    if (state.tag === 'seqof' || state.tag === 'setof') {\n      if (!(state.args && state.args.length === 1)) { return reporter.error(`Too many args for: ${state.tag}`) }\n\n      if (!Array.isArray(data)) { return reporter.error('seqof/setof, but data is not Array') }\n\n      const child = this.clone()\n      child._baseState.implicit = null\n      content = this._createEncoderBuffer(data.map(function (item) {\n        const state = this._baseState\n\n        return this._getUse(state.args[0], data)._encode(item, reporter)\n      }, child))\n    } else if (state.use !== null) {\n      result = this._getUse(state.use, parent)._encode(data, reporter)\n    } else {\n      content = this._encodePrimitive(state.tag, data)\n      primitive = true\n    }\n  }\n\n  // Encode data itself\n  if (!state.any && state.choice === null) {\n    const tag = state.implicit !== null ? state.implicit : state.tag\n    const cls = state.implicit === null ? 'universal' : 'context'\n\n    if (tag === null) {\n      if (state.use === null) { reporter.error('Tag could be omitted only for .use()') }\n    } else {\n      if (state.use === null) { result = this._encodeComposite(tag, primitive, cls, content) }\n    }\n  }\n\n  // Wrap in explicit\n  if (state.explicit !== null) { result = this._encodeComposite(state.explicit, false, 'context', result) }\n\n  return result\n}\n\nNode.prototype._encodeChoice = function encodeChoice (data, reporter) {\n  const state = this._baseState\n\n  const node = state.choice[data.type]\n  if (!node) {\n    assert(\n      false,\n      `${data.type} not found in ${JSON.stringify(Object.keys(state.choice))}`\n    )\n  }\n  return node._encode(data.value, reporter)\n}\n\nNode.prototype._encodePrimitive = function encodePrimitive (tag, data) {\n  const state = this._baseState\n\n  if (/str$/.test(tag)) { return this._encodeStr(data, tag) } else if (tag === 'objid' && state.args) { return this._encodeObjid(data, state.reverseArgs[0], state.args[1]) } else if (tag === 'objid') { return this._encodeObjid(data, null, null) } else if (tag === 'gentime' || tag === 'utctime') { return this._encodeTime(data, tag) } else if (tag === 'null_') { return this._encodeNull() } else if (tag === 'int' || tag === 'enum') { return this._encodeInt(data, state.args && state.reverseArgs[0]) } else if (tag === 'bool') { return this._encodeBool(data) } else if (tag === 'objDesc') { return this._encodeStr(data, tag) } else { throw new Error(`Unsupported tag: ${tag}`) }\n}\n\nNode.prototype._isNumstr = function isNumstr (str) {\n  return /^[0-9 ]*$/.test(str)\n}\n\nNode.prototype._isPrintstr = function isPrintstr (str) {\n  return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str)\n}\n\nmodule.exports = Node\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@panva/asn1.js/lib/asn1/base/node.js?")},"./node_modules/@panva/asn1.js/lib/asn1/base/reporter.js":
/*!***************************************************************!*\
  !*** ./node_modules/@panva/asn1.js/lib/asn1/base/reporter.js ***!
  \***************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{eval("const { inherits } = __webpack_require__(/*! util */ \"util\")\n\nfunction Reporter (options) {\n  this._reporterState = {\n    obj: null,\n    path: [],\n    options: options || {},\n    errors: []\n  }\n}\n\nReporter.prototype.isError = function isError (obj) {\n  return obj instanceof ReporterError\n}\n\nReporter.prototype.save = function save () {\n  const state = this._reporterState\n\n  return { obj: state.obj, pathLen: state.path.length }\n}\n\nReporter.prototype.restore = function restore (data) {\n  const state = this._reporterState\n\n  state.obj = data.obj\n  state.path = state.path.slice(0, data.pathLen)\n}\n\nReporter.prototype.enterKey = function enterKey (key) {\n  return this._reporterState.path.push(key)\n}\n\nReporter.prototype.exitKey = function exitKey (index) {\n  const state = this._reporterState\n\n  state.path = state.path.slice(0, index - 1)\n}\n\nReporter.prototype.leaveKey = function leaveKey (index, key, value) {\n  const state = this._reporterState\n\n  this.exitKey(index)\n  if (state.obj !== null) { state.obj[key] = value }\n}\n\nReporter.prototype.path = function path () {\n  return this._reporterState.path.join('/')\n}\n\nReporter.prototype.enterObject = function enterObject () {\n  const state = this._reporterState\n\n  const prev = state.obj\n  state.obj = {}\n  return prev\n}\n\nReporter.prototype.leaveObject = function leaveObject (prev) {\n  const state = this._reporterState\n\n  const now = state.obj\n  state.obj = prev\n  return now\n}\n\nReporter.prototype.error = function error (msg) {\n  let err\n  const state = this._reporterState\n\n  const inherited = msg instanceof ReporterError\n  if (inherited) {\n    err = msg\n  } else {\n    err = new ReporterError(state.path.map(function (elem) {\n      return `[${JSON.stringify(elem)}]`\n    }).join(''), msg.message || msg, msg.stack)\n  }\n\n  if (!state.options.partial) { throw err }\n\n  if (!inherited) { state.errors.push(err) }\n\n  return err\n}\n\nReporter.prototype.wrapResult = function wrapResult (result) {\n  const state = this._reporterState\n  if (!state.options.partial) { return result }\n\n  return {\n    result: this.isError(result) ? null : result,\n    errors: state.errors\n  }\n}\n\nfunction ReporterError (path, msg) {\n  this.path = path\n  this.rethrow(msg)\n}\ninherits(ReporterError, Error)\n\nReporterError.prototype.rethrow = function rethrow (msg) {\n  this.message = `${msg} at: ${this.path || '(shallow)'}`\n  if (Error.captureStackTrace) { Error.captureStackTrace(this, ReporterError) }\n\n  if (!this.stack) {\n    try {\n      // IE only adds stack when thrown\n      throw new Error(this.message)\n    } catch (e) {\n      this.stack = e.stack\n    }\n  }\n  return this\n}\n\nexports.Reporter = Reporter\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@panva/asn1.js/lib/asn1/base/reporter.js?")},"./node_modules/@panva/asn1.js/lib/asn1/constants/der.js":
/*!***************************************************************!*\
  !*** ./node_modules/@panva/asn1.js/lib/asn1/constants/der.js ***!
  \***************************************************************/(__unused_webpack_module,exports)=>{eval("// Helper\nfunction reverse (map) {\n  const res = {}\n\n  Object.keys(map).forEach(function (key) {\n    // Convert key to integer if it is stringified\n    if ((key | 0) == key) { key = key | 0 } // eslint-disable-line eqeqeq\n\n    const value = map[key]\n    res[value] = key\n  })\n\n  return res\n}\n\nexports.tagClass = {\n  0: 'universal',\n  1: 'application',\n  2: 'context',\n  3: 'private'\n}\nexports.tagClassByName = reverse(exports.tagClass)\n\nexports.tag = {\n  0x00: 'end',\n  0x01: 'bool',\n  0x02: 'int',\n  0x03: 'bitstr',\n  0x04: 'octstr',\n  0x05: 'null_',\n  0x06: 'objid',\n  0x07: 'objDesc',\n  0x08: 'external',\n  0x09: 'real',\n  0x0a: 'enum',\n  0x0b: 'embed',\n  0x0c: 'utf8str',\n  0x0d: 'relativeOid',\n  0x10: 'seq',\n  0x11: 'set',\n  0x12: 'numstr',\n  0x13: 'printstr',\n  0x14: 't61str',\n  0x15: 'videostr',\n  0x16: 'ia5str',\n  0x17: 'utctime',\n  0x18: 'gentime',\n  0x19: 'graphstr',\n  0x1a: 'iso646str',\n  0x1b: 'genstr',\n  0x1c: 'unistr',\n  0x1d: 'charstr',\n  0x1e: 'bmpstr'\n}\nexports.tagByName = reverse(exports.tag)\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@panva/asn1.js/lib/asn1/constants/der.js?")},"./node_modules/@panva/asn1.js/lib/asn1/constants/index.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@panva/asn1.js/lib/asn1/constants/index.js ***!
  \*****************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('module.exports = {\n  der: __webpack_require__(/*! ./der */ "./node_modules/@panva/asn1.js/lib/asn1/constants/der.js")\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@panva/asn1.js/lib/asn1/constants/index.js?')},"./node_modules/@panva/asn1.js/lib/asn1/decoders/der.js":
/*!**************************************************************!*\
  !*** ./node_modules/@panva/asn1.js/lib/asn1/decoders/der.js ***!
  \**************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("/* global BigInt */\nconst { inherits } = __webpack_require__(/*! util */ \"util\")\n\nconst { DecoderBuffer } = __webpack_require__(/*! ../base/buffer */ \"./node_modules/@panva/asn1.js/lib/asn1/base/buffer.js\")\nconst Node = __webpack_require__(/*! ../base/node */ \"./node_modules/@panva/asn1.js/lib/asn1/base/node.js\")\n\n// Import DER constants\nconst der = __webpack_require__(/*! ../constants/der */ \"./node_modules/@panva/asn1.js/lib/asn1/constants/der.js\")\n\nfunction DERDecoder (entity) {\n  this.enc = 'der'\n  this.name = entity.name\n  this.entity = entity\n\n  // Construct base tree\n  this.tree = new DERNode()\n  this.tree._init(entity.body)\n}\n\nDERDecoder.prototype.decode = function decode (data, options) {\n  if (!DecoderBuffer.isDecoderBuffer(data)) {\n    data = new DecoderBuffer(data, options)\n  }\n\n  return this.tree._decode(data, options)\n}\n\n// Tree methods\n\nfunction DERNode (parent) {\n  Node.call(this, 'der', parent)\n}\ninherits(DERNode, Node)\n\nDERNode.prototype._peekTag = function peekTag (buffer, tag, any) {\n  if (buffer.isEmpty()) { return false }\n\n  const state = buffer.save()\n  const decodedTag = derDecodeTag(buffer, `Failed to peek tag: \"${tag}\"`)\n  if (buffer.isError(decodedTag)) { return decodedTag }\n\n  buffer.restore(state)\n\n  return decodedTag.tag === tag || decodedTag.tagStr === tag || (decodedTag.tagStr + 'of') === tag || any\n}\n\nDERNode.prototype._decodeTag = function decodeTag (buffer, tag, any) {\n  const decodedTag = derDecodeTag(buffer,\n    `Failed to decode tag of \"${tag}\"`)\n  if (buffer.isError(decodedTag)) { return decodedTag }\n\n  let len = derDecodeLen(buffer,\n    decodedTag.primitive,\n    `Failed to get length of \"${tag}\"`)\n\n  // Failure\n  if (buffer.isError(len)) { return len }\n\n  if (!any &&\n      decodedTag.tag !== tag &&\n      decodedTag.tagStr !== tag &&\n      decodedTag.tagStr + 'of' !== tag) {\n    return buffer.error(`Failed to match tag: \"${tag}\"`)\n  }\n\n  if (decodedTag.primitive || len !== null) { return buffer.skip(len, `Failed to match body of: \"${tag}\"`) }\n\n  // Indefinite length... find END tag\n  const state = buffer.save()\n  const res = this._skipUntilEnd(\n    buffer,\n    `Failed to skip indefinite length body: \"${this.tag}\"`)\n  if (buffer.isError(res)) { return res }\n\n  len = buffer.offset - state.offset\n  buffer.restore(state)\n  return buffer.skip(len, `Failed to match body of: \"${tag}\"`)\n}\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd (buffer, fail) {\n  for (;;) {\n    const tag = derDecodeTag(buffer, fail)\n    if (buffer.isError(tag)) { return tag }\n    const len = derDecodeLen(buffer, tag.primitive, fail)\n    if (buffer.isError(len)) { return len }\n\n    let res\n    if (tag.primitive || len !== null) { res = buffer.skip(len) } else { res = this._skipUntilEnd(buffer, fail) }\n\n    // Failure\n    if (buffer.isError(res)) { return res }\n\n    if (tag.tagStr === 'end') { break }\n  }\n}\n\nDERNode.prototype._decodeList = function decodeList (buffer, tag, decoder,\n  options) {\n  const result = []\n  while (!buffer.isEmpty()) {\n    const possibleEnd = this._peekTag(buffer, 'end')\n    if (buffer.isError(possibleEnd)) { return possibleEnd }\n\n    const res = decoder.decode(buffer, 'der', options)\n    if (buffer.isError(res) && possibleEnd) { break }\n    result.push(res)\n  }\n  return result\n}\n\nDERNode.prototype._decodeStr = function decodeStr (buffer, tag) {\n  if (tag === 'bitstr') {\n    const unused = buffer.readUInt8()\n    if (buffer.isError(unused)) { return unused }\n    return { unused: unused, data: buffer.raw() }\n  } else if (tag === 'bmpstr') {\n    const raw = buffer.raw()\n    if (raw.length % 2 === 1) { return buffer.error('Decoding of string type: bmpstr length mismatch') }\n\n    let str = ''\n    for (let i = 0; i < raw.length / 2; i++) {\n      str += String.fromCharCode(raw.readUInt16BE(i * 2))\n    }\n    return str\n  } else if (tag === 'numstr') {\n    const numstr = buffer.raw().toString('ascii')\n    if (!this._isNumstr(numstr)) {\n      return buffer.error('Decoding of string type: numstr unsupported characters')\n    }\n    return numstr\n  } else if (tag === 'octstr') {\n    return buffer.raw()\n  } else if (tag === 'objDesc') {\n    return buffer.raw()\n  } else if (tag === 'printstr') {\n    const printstr = buffer.raw().toString('ascii')\n    if (!this._isPrintstr(printstr)) {\n      return buffer.error('Decoding of string type: printstr unsupported characters')\n    }\n    return printstr\n  } else if (/str$/.test(tag)) {\n    return buffer.raw().toString()\n  } else {\n    return buffer.error(`Decoding of string type: ${tag} unsupported`)\n  }\n}\n\nDERNode.prototype._decodeObjid = function decodeObjid (buffer, values, relative) {\n  let result\n  const identifiers = []\n  let ident = 0\n  let subident = 0\n  while (!buffer.isEmpty()) {\n    subident = buffer.readUInt8()\n    ident <<= 7\n    ident |= subident & 0x7f\n    if ((subident & 0x80) === 0) {\n      identifiers.push(ident)\n      ident = 0\n    }\n  }\n  if (subident & 0x80) { identifiers.push(ident) }\n\n  const first = (identifiers[0] / 40) | 0\n  const second = identifiers[0] % 40\n\n  if (relative) { result = identifiers } else { result = [first, second].concat(identifiers.slice(1)) }\n\n  if (values) {\n    let tmp = values[result.join(' ')]\n    if (tmp === undefined) { tmp = values[result.join('.')] }\n    if (tmp !== undefined) { result = tmp }\n  }\n\n  return result\n}\n\nDERNode.prototype._decodeTime = function decodeTime (buffer, tag) {\n  const str = buffer.raw().toString()\n\n  let year\n  let mon\n  let day\n  let hour\n  let min\n  let sec\n  if (tag === 'gentime') {\n    year = str.slice(0, 4) | 0\n    mon = str.slice(4, 6) | 0\n    day = str.slice(6, 8) | 0\n    hour = str.slice(8, 10) | 0\n    min = str.slice(10, 12) | 0\n    sec = str.slice(12, 14) | 0\n  } else if (tag === 'utctime') {\n    year = str.slice(0, 2) | 0\n    mon = str.slice(2, 4) | 0\n    day = str.slice(4, 6) | 0\n    hour = str.slice(6, 8) | 0\n    min = str.slice(8, 10) | 0\n    sec = str.slice(10, 12) | 0\n    if (year < 70) { year = 2000 + year } else { year = 1900 + year }\n  } else {\n    return buffer.error(`Decoding ${tag} time is not supported yet`)\n  }\n\n  return Date.UTC(year, mon - 1, day, hour, min, sec, 0)\n}\n\nDERNode.prototype._decodeNull = function decodeNull () {\n  return null\n}\n\nDERNode.prototype._decodeBool = function decodeBool (buffer) {\n  const res = buffer.readUInt8()\n  if (buffer.isError(res)) { return res } else { return res !== 0 }\n}\n\nDERNode.prototype._decodeInt = function decodeInt (buffer, values) {\n  // Bigint, return as it is (assume big endian)\n  const raw = buffer.raw()\n  let res = BigInt(`0x${raw.toString('hex')}`)\n\n  if (values) {\n    res = values[res.toString(10)] || res\n  }\n\n  return res\n}\n\nDERNode.prototype._use = function use (entity, obj) {\n  if (typeof entity === 'function') { entity = entity(obj) }\n  return entity._getDecoder('der').tree\n}\n\n// Utility methods\n\nfunction derDecodeTag (buf, fail) {\n  let tag = buf.readUInt8(fail)\n  if (buf.isError(tag)) { return tag }\n\n  const cls = der.tagClass[tag >> 6]\n  const primitive = (tag & 0x20) === 0\n\n  // Multi-octet tag - load\n  if ((tag & 0x1f) === 0x1f) {\n    let oct = tag\n    tag = 0\n    while ((oct & 0x80) === 0x80) {\n      oct = buf.readUInt8(fail)\n      if (buf.isError(oct)) { return oct }\n\n      tag <<= 7\n      tag |= oct & 0x7f\n    }\n  } else {\n    tag &= 0x1f\n  }\n  const tagStr = der.tag[tag]\n\n  return {\n    cls: cls,\n    primitive: primitive,\n    tag: tag,\n    tagStr: tagStr\n  }\n}\n\nfunction derDecodeLen (buf, primitive, fail) {\n  let len = buf.readUInt8(fail)\n  if (buf.isError(len)) { return len }\n\n  // Indefinite form\n  if (!primitive && len === 0x80) { return null }\n\n  // Definite form\n  if ((len & 0x80) === 0) {\n    // Short form\n    return len\n  }\n\n  // Long form\n  const num = len & 0x7f\n  if (num > 4) { return buf.error('length octect is too long') }\n\n  len = 0\n  for (let i = 0; i < num; i++) {\n    len <<= 8\n    const j = buf.readUInt8(fail)\n    if (buf.isError(j)) { return j }\n    len |= j\n  }\n\n  return len\n}\n\nmodule.exports = DERDecoder\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@panva/asn1.js/lib/asn1/decoders/der.js?")},"./node_modules/@panva/asn1.js/lib/asn1/decoders/index.js":
/*!****************************************************************!*\
  !*** ./node_modules/@panva/asn1.js/lib/asn1/decoders/index.js ***!
  \****************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('module.exports = {\n  der: __webpack_require__(/*! ./der */ "./node_modules/@panva/asn1.js/lib/asn1/decoders/der.js"),\n  pem: __webpack_require__(/*! ./pem */ "./node_modules/@panva/asn1.js/lib/asn1/decoders/pem.js")\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@panva/asn1.js/lib/asn1/decoders/index.js?')},"./node_modules/@panva/asn1.js/lib/asn1/decoders/pem.js":
/*!**************************************************************!*\
  !*** ./node_modules/@panva/asn1.js/lib/asn1/decoders/pem.js ***!
  \**************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { inherits } = __webpack_require__(/*! util */ \"util\")\n\nconst DERDecoder = __webpack_require__(/*! ./der */ \"./node_modules/@panva/asn1.js/lib/asn1/decoders/der.js\")\n\nfunction PEMDecoder (entity) {\n  DERDecoder.call(this, entity)\n  this.enc = 'pem'\n}\ninherits(PEMDecoder, DERDecoder)\n\nPEMDecoder.prototype.decode = function decode (data, options) {\n  const lines = data.toString().split(/[\\r\\n]+/g)\n\n  const label = options.label.toUpperCase()\n\n  const re = /^-----(BEGIN|END) ([^-]+)-----$/\n  let start = -1\n  let end = -1\n  for (let i = 0; i < lines.length; i++) {\n    const match = lines[i].match(re)\n    if (match === null) { continue }\n\n    if (match[2] !== label) { continue }\n\n    if (start === -1) {\n      if (match[1] !== 'BEGIN') { break }\n      start = i\n    } else {\n      if (match[1] !== 'END') { break }\n      end = i\n      break\n    }\n  }\n  if (start === -1 || end === -1) { throw new Error(`PEM section not found for: ${label}`) }\n\n  const base64 = lines.slice(start + 1, end).join('')\n  // Remove excessive symbols\n  base64.replace(/[^a-z0-9+/=]+/gi, '')\n\n  const input = Buffer.from(base64, 'base64')\n  return DERDecoder.prototype.decode.call(this, input, options)\n}\n\nmodule.exports = PEMDecoder\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@panva/asn1.js/lib/asn1/decoders/pem.js?")},"./node_modules/@panva/asn1.js/lib/asn1/encoders/der.js":
/*!**************************************************************!*\
  !*** ./node_modules/@panva/asn1.js/lib/asn1/encoders/der.js ***!
  \**************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("/* global BigInt */\nconst { inherits } = __webpack_require__(/*! util */ \"util\")\n\nconst Node = __webpack_require__(/*! ../base/node */ \"./node_modules/@panva/asn1.js/lib/asn1/base/node.js\")\nconst der = __webpack_require__(/*! ../constants/der */ \"./node_modules/@panva/asn1.js/lib/asn1/constants/der.js\")\n\nfunction DEREncoder (entity) {\n  this.enc = 'der'\n  this.name = entity.name\n  this.entity = entity\n\n  // Construct base tree\n  this.tree = new DERNode()\n  this.tree._init(entity.body)\n}\n\nDEREncoder.prototype.encode = function encode (data, reporter) {\n  return this.tree._encode(data, reporter).join()\n}\n\n// Tree methods\n\nfunction DERNode (parent) {\n  Node.call(this, 'der', parent)\n}\ninherits(DERNode, Node)\n\nDERNode.prototype._encodeComposite = function encodeComposite (tag,\n  primitive,\n  cls,\n  content) {\n  const encodedTag = encodeTag(tag, primitive, cls, this.reporter)\n\n  // Short form\n  if (content.length < 0x80) {\n    const header = Buffer.alloc(2)\n    header[0] = encodedTag\n    header[1] = content.length\n    return this._createEncoderBuffer([header, content])\n  }\n\n  // Long form\n  // Count octets required to store length\n  let lenOctets = 1\n  for (let i = content.length; i >= 0x100; i >>= 8) { lenOctets++ }\n\n  const header = Buffer.alloc(1 + 1 + lenOctets)\n  header[0] = encodedTag\n  header[1] = 0x80 | lenOctets\n\n  for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8) { header[i] = j & 0xff }\n\n  return this._createEncoderBuffer([header, content])\n}\n\nDERNode.prototype._encodeStr = function encodeStr (str, tag) {\n  if (tag === 'bitstr') {\n    return this._createEncoderBuffer([str.unused | 0, str.data])\n  } else if (tag === 'bmpstr') {\n    const buf = Buffer.alloc(str.length * 2)\n    for (let i = 0; i < str.length; i++) {\n      buf.writeUInt16BE(str.charCodeAt(i), i * 2)\n    }\n    return this._createEncoderBuffer(buf)\n  } else if (tag === 'numstr') {\n    if (!this._isNumstr(str)) {\n      return this.reporter.error('Encoding of string type: numstr supports only digits and space')\n    }\n    return this._createEncoderBuffer(str)\n  } else if (tag === 'printstr') {\n    if (!this._isPrintstr(str)) {\n      return this.reporter.error('Encoding of string type: printstr supports only latin upper and lower case letters, digits, space, apostrophe, left and rigth parenthesis, plus sign, comma, hyphen, dot, slash, colon, equal sign, question mark')\n    }\n    return this._createEncoderBuffer(str)\n  } else if (/str$/.test(tag)) {\n    return this._createEncoderBuffer(str)\n  } else if (tag === 'objDesc') {\n    return this._createEncoderBuffer(str)\n  } else {\n    return this.reporter.error(`Encoding of string type: ${tag} unsupported`)\n  }\n}\n\nDERNode.prototype._encodeObjid = function encodeObjid (id, values, relative) {\n  if (typeof id === 'string') {\n    if (!values) { return this.reporter.error('string objid given, but no values map found') }\n    if (!Object.prototype.hasOwnProperty.call(values, id)) { return this.reporter.error('objid not found in values map') }\n    id = values[id].split(/[\\s.]+/g)\n    for (let i = 0; i < id.length; i++) { id[i] |= 0 }\n  } else if (Array.isArray(id)) {\n    id = id.slice()\n    for (let i = 0; i < id.length; i++) { id[i] |= 0 }\n  }\n\n  if (!Array.isArray(id)) {\n    return this.reporter.error(`objid() should be either array or string, got: ${JSON.stringify(id)}`)\n  }\n\n  if (!relative) {\n    if (id[1] >= 40) { return this.reporter.error('Second objid identifier OOB') }\n    id.splice(0, 2, id[0] * 40 + id[1])\n  }\n\n  // Count number of octets\n  let size = 0\n  for (let i = 0; i < id.length; i++) {\n    let ident = id[i]\n    for (size++; ident >= 0x80; ident >>= 7) { size++ }\n  }\n\n  const objid = Buffer.alloc(size)\n  let offset = objid.length - 1\n  for (let i = id.length - 1; i >= 0; i--) {\n    let ident = id[i]\n    objid[offset--] = ident & 0x7f\n    while ((ident >>= 7) > 0) { objid[offset--] = 0x80 | (ident & 0x7f) }\n  }\n\n  return this._createEncoderBuffer(objid)\n}\n\nfunction two (num) {\n  if (num < 10) { return `0${num}` } else { return num }\n}\n\nDERNode.prototype._encodeTime = function encodeTime (time, tag) {\n  let str\n  const date = new Date(time)\n\n  if (tag === 'gentime') {\n    str = [\n      two(date.getUTCFullYear()),\n      two(date.getUTCMonth() + 1),\n      two(date.getUTCDate()),\n      two(date.getUTCHours()),\n      two(date.getUTCMinutes()),\n      two(date.getUTCSeconds()),\n      'Z'\n    ].join('')\n  } else if (tag === 'utctime') {\n    str = [\n      two(date.getUTCFullYear() % 100),\n      two(date.getUTCMonth() + 1),\n      two(date.getUTCDate()),\n      two(date.getUTCHours()),\n      two(date.getUTCMinutes()),\n      two(date.getUTCSeconds()),\n      'Z'\n    ].join('')\n  } else {\n    this.reporter.error(`Encoding ${tag} time is not supported yet`)\n  }\n\n  return this._encodeStr(str, 'octstr')\n}\n\nDERNode.prototype._encodeNull = function encodeNull () {\n  return this._createEncoderBuffer('')\n}\n\nfunction bnToBuf (bn) {\n  var hex = BigInt(bn).toString(16)\n  if (hex.length % 2) { hex = '0' + hex }\n\n  var len = hex.length / 2\n  var u8 = new Uint8Array(len)\n\n  var i = 0\n  var j = 0\n  while (i < len) {\n    u8[i] = parseInt(hex.slice(j, j + 2), 16)\n    i += 1\n    j += 2\n  }\n\n  return u8\n}\n\nDERNode.prototype._encodeInt = function encodeInt (num, values) {\n  if (typeof num === 'string') {\n    if (!values) { return this.reporter.error('String int or enum given, but no values map') }\n    if (!Object.prototype.hasOwnProperty.call(values, num)) {\n      return this.reporter.error(`Values map doesn't contain: ${JSON.stringify(num)}`)\n    }\n    num = values[num]\n  }\n\n  if (typeof num === 'bigint') {\n    const numArray = [...bnToBuf(num)]\n    if (numArray[0] & 0x80) {\n      numArray.unshift(0)\n    }\n    num = Buffer.from(numArray)\n  }\n\n  if (Buffer.isBuffer(num)) {\n    let size = num.length\n    if (num.length === 0) { size++ }\n\n    const out = Buffer.alloc(size)\n    num.copy(out)\n    if (num.length === 0) { out[0] = 0 }\n    return this._createEncoderBuffer(out)\n  }\n\n  if (num < 0x80) { return this._createEncoderBuffer(num) }\n\n  if (num < 0x100) { return this._createEncoderBuffer([0, num]) }\n\n  let size = 1\n  for (let i = num; i >= 0x100; i >>= 8) { size++ }\n\n  const out = new Array(size)\n  for (let i = out.length - 1; i >= 0; i--) {\n    out[i] = num & 0xff\n    num >>= 8\n  }\n  if (out[0] & 0x80) {\n    out.unshift(0)\n  }\n\n  return this._createEncoderBuffer(Buffer.from(out))\n}\n\nDERNode.prototype._encodeBool = function encodeBool (value) {\n  return this._createEncoderBuffer(value ? 0xff : 0)\n}\n\nDERNode.prototype._use = function use (entity, obj) {\n  if (typeof entity === 'function') { entity = entity(obj) }\n  return entity._getEncoder('der').tree\n}\n\nDERNode.prototype._skipDefault = function skipDefault (dataBuffer, reporter, parent) {\n  const state = this._baseState\n  let i\n  if (state.default === null) { return false }\n\n  const data = dataBuffer.join()\n  if (state.defaultBuffer === undefined) { state.defaultBuffer = this._encodeValue(state.default, reporter, parent).join() }\n\n  if (data.length !== state.defaultBuffer.length) { return false }\n\n  for (i = 0; i < data.length; i++) {\n    if (data[i] !== state.defaultBuffer[i]) { return false }\n  }\n\n  return true\n}\n\n// Utility methods\n\nfunction encodeTag (tag, primitive, cls, reporter) {\n  let res\n\n  if (tag === 'seqof') { tag = 'seq' } else if (tag === 'setof') { tag = 'set' }\n\n  if (Object.prototype.hasOwnProperty.call(der.tagByName, tag)) { res = der.tagByName[tag] } else if (typeof tag === 'number' && (tag | 0) === tag) { res = tag } else { return reporter.error(`Unknown tag: ${tag}`) }\n\n  if (res >= 0x1f) { return reporter.error('Multi-octet tag encoding unsupported') }\n\n  if (!primitive) { res |= 0x20 }\n\n  res |= (der.tagClassByName[cls || 'universal'] << 6)\n\n  return res\n}\n\nmodule.exports = DEREncoder\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@panva/asn1.js/lib/asn1/encoders/der.js?")},"./node_modules/@panva/asn1.js/lib/asn1/encoders/index.js":
/*!****************************************************************!*\
  !*** ./node_modules/@panva/asn1.js/lib/asn1/encoders/index.js ***!
  \****************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('module.exports = {\n  der: __webpack_require__(/*! ./der */ "./node_modules/@panva/asn1.js/lib/asn1/encoders/der.js"),\n  pem: __webpack_require__(/*! ./pem */ "./node_modules/@panva/asn1.js/lib/asn1/encoders/pem.js")\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@panva/asn1.js/lib/asn1/encoders/index.js?')},"./node_modules/@panva/asn1.js/lib/asn1/encoders/pem.js":
/*!**************************************************************!*\
  !*** ./node_modules/@panva/asn1.js/lib/asn1/encoders/pem.js ***!
  \**************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { inherits } = __webpack_require__(/*! util */ \"util\")\n\nconst DEREncoder = __webpack_require__(/*! ./der */ \"./node_modules/@panva/asn1.js/lib/asn1/encoders/der.js\")\n\nfunction PEMEncoder (entity) {\n  DEREncoder.call(this, entity)\n  this.enc = 'pem'\n}\ninherits(PEMEncoder, DEREncoder)\n\nPEMEncoder.prototype.encode = function encode (data, options) {\n  const buf = DEREncoder.prototype.encode.call(this, data)\n\n  const p = buf.toString('base64')\n  const out = [`-----BEGIN ${options.label}-----`]\n  for (let i = 0; i < p.length; i += 64) { out.push(p.slice(i, i + 64)) }\n  out.push(`-----END ${options.label}-----`)\n  return out.join('\\n')\n}\n\nmodule.exports = PEMEncoder\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@panva/asn1.js/lib/asn1/encoders/pem.js?")},"./node_modules/@sapphire/async-queue/dist/index.js":
/*!**********************************************************!*\
  !*** ./node_modules/@sapphire/async-queue/dist/index.js ***!
  \**********************************************************/module=>{"use strict";eval('\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __name = (target, value) => __defProp(target, "name", { value, configurable: true });\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === "object" || typeof from === "function") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);\nvar __publicField = (obj, key, value) => {\n  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);\n  return value;\n};\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n  AsyncQueue: () => AsyncQueue\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/lib/AsyncQueue.ts\nvar AsyncQueue = class {\n  constructor() {\n    __publicField(this, "promises", []);\n  }\n  get remaining() {\n    return this.promises.length;\n  }\n  wait() {\n    const next = this.promises.length ? this.promises[this.promises.length - 1].promise : Promise.resolve();\n    let resolve;\n    const promise = new Promise((res) => {\n      resolve = res;\n    });\n    this.promises.push({\n      resolve,\n      promise\n    });\n    return next;\n  }\n  shift() {\n    const deferred = this.promises.shift();\n    if (typeof deferred !== "undefined")\n      deferred.resolve();\n  }\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (0);\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/@sapphire/async-queue/dist/index.js?')},"./node_modules/@sindresorhus/is/dist/index.js":
/*!*****************************************************!*\
  !*** ./node_modules/@sindresorhus/is/dist/index.js ***!
  \*****************************************************/(module,exports)=>{"use strict";eval("\n/// <reference lib=\"es2018\"/>\n/// <reference lib=\"dom\"/>\n/// <reference types=\"node\"/>\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst typedArrayTypeNames = [\n    'Int8Array',\n    'Uint8Array',\n    'Uint8ClampedArray',\n    'Int16Array',\n    'Uint16Array',\n    'Int32Array',\n    'Uint32Array',\n    'Float32Array',\n    'Float64Array',\n    'BigInt64Array',\n    'BigUint64Array'\n];\nfunction isTypedArrayName(name) {\n    return typedArrayTypeNames.includes(name);\n}\nconst objectTypeNames = [\n    'Function',\n    'Generator',\n    'AsyncGenerator',\n    'GeneratorFunction',\n    'AsyncGeneratorFunction',\n    'AsyncFunction',\n    'Observable',\n    'Array',\n    'Buffer',\n    'Blob',\n    'Object',\n    'RegExp',\n    'Date',\n    'Error',\n    'Map',\n    'Set',\n    'WeakMap',\n    'WeakSet',\n    'ArrayBuffer',\n    'SharedArrayBuffer',\n    'DataView',\n    'Promise',\n    'URL',\n    'FormData',\n    'URLSearchParams',\n    'HTMLElement',\n    ...typedArrayTypeNames\n];\nfunction isObjectTypeName(name) {\n    return objectTypeNames.includes(name);\n}\nconst primitiveTypeNames = [\n    'null',\n    'undefined',\n    'string',\n    'number',\n    'bigint',\n    'boolean',\n    'symbol'\n];\nfunction isPrimitiveTypeName(name) {\n    return primitiveTypeNames.includes(name);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isOfType(type) {\n    return (value) => typeof value === type;\n}\nconst { toString } = Object.prototype;\nconst getObjectType = (value) => {\n    const objectTypeName = toString.call(value).slice(8, -1);\n    if (/HTML\\w+Element/.test(objectTypeName) && is.domElement(value)) {\n        return 'HTMLElement';\n    }\n    if (isObjectTypeName(objectTypeName)) {\n        return objectTypeName;\n    }\n    return undefined;\n};\nconst isObjectOfType = (type) => (value) => getObjectType(value) === type;\nfunction is(value) {\n    if (value === null) {\n        return 'null';\n    }\n    switch (typeof value) {\n        case 'undefined':\n            return 'undefined';\n        case 'string':\n            return 'string';\n        case 'number':\n            return 'number';\n        case 'boolean':\n            return 'boolean';\n        case 'function':\n            return 'Function';\n        case 'bigint':\n            return 'bigint';\n        case 'symbol':\n            return 'symbol';\n        default:\n    }\n    if (is.observable(value)) {\n        return 'Observable';\n    }\n    if (is.array(value)) {\n        return 'Array';\n    }\n    if (is.buffer(value)) {\n        return 'Buffer';\n    }\n    const tagType = getObjectType(value);\n    if (tagType) {\n        return tagType;\n    }\n    if (value instanceof String || value instanceof Boolean || value instanceof Number) {\n        throw new TypeError('Please don\\'t use object wrappers for primitive types');\n    }\n    return 'Object';\n}\nis.undefined = isOfType('undefined');\nis.string = isOfType('string');\nconst isNumberType = isOfType('number');\nis.number = (value) => isNumberType(value) && !is.nan(value);\nis.bigint = isOfType('bigint');\n// eslint-disable-next-line @typescript-eslint/ban-types\nis.function_ = isOfType('function');\nis.null_ = (value) => value === null;\nis.class_ = (value) => is.function_(value) && value.toString().startsWith('class ');\nis.boolean = (value) => value === true || value === false;\nis.symbol = isOfType('symbol');\nis.numericString = (value) => is.string(value) && !is.emptyStringOrWhitespace(value) && !Number.isNaN(Number(value));\nis.array = (value, assertion) => {\n    if (!Array.isArray(value)) {\n        return false;\n    }\n    if (!is.function_(assertion)) {\n        return true;\n    }\n    return value.every(assertion);\n};\nis.buffer = (value) => { var _a, _b, _c, _d; return (_d = (_c = (_b = (_a = value) === null || _a === void 0 ? void 0 : _a.constructor) === null || _b === void 0 ? void 0 : _b.isBuffer) === null || _c === void 0 ? void 0 : _c.call(_b, value)) !== null && _d !== void 0 ? _d : false; };\nis.blob = (value) => isObjectOfType('Blob')(value);\nis.nullOrUndefined = (value) => is.null_(value) || is.undefined(value);\nis.object = (value) => !is.null_(value) && (typeof value === 'object' || is.function_(value));\nis.iterable = (value) => { var _a; return is.function_((_a = value) === null || _a === void 0 ? void 0 : _a[Symbol.iterator]); };\nis.asyncIterable = (value) => { var _a; return is.function_((_a = value) === null || _a === void 0 ? void 0 : _a[Symbol.asyncIterator]); };\nis.generator = (value) => { var _a, _b; return is.iterable(value) && is.function_((_a = value) === null || _a === void 0 ? void 0 : _a.next) && is.function_((_b = value) === null || _b === void 0 ? void 0 : _b.throw); };\nis.asyncGenerator = (value) => is.asyncIterable(value) && is.function_(value.next) && is.function_(value.throw);\nis.nativePromise = (value) => isObjectOfType('Promise')(value);\nconst hasPromiseAPI = (value) => {\n    var _a, _b;\n    return is.function_((_a = value) === null || _a === void 0 ? void 0 : _a.then) &&\n        is.function_((_b = value) === null || _b === void 0 ? void 0 : _b.catch);\n};\nis.promise = (value) => is.nativePromise(value) || hasPromiseAPI(value);\nis.generatorFunction = isObjectOfType('GeneratorFunction');\nis.asyncGeneratorFunction = (value) => getObjectType(value) === 'AsyncGeneratorFunction';\nis.asyncFunction = (value) => getObjectType(value) === 'AsyncFunction';\n// eslint-disable-next-line no-prototype-builtins, @typescript-eslint/ban-types\nis.boundFunction = (value) => is.function_(value) && !value.hasOwnProperty('prototype');\nis.regExp = isObjectOfType('RegExp');\nis.date = isObjectOfType('Date');\nis.error = isObjectOfType('Error');\nis.map = (value) => isObjectOfType('Map')(value);\nis.set = (value) => isObjectOfType('Set')(value);\nis.weakMap = (value) => isObjectOfType('WeakMap')(value);\nis.weakSet = (value) => isObjectOfType('WeakSet')(value);\nis.int8Array = isObjectOfType('Int8Array');\nis.uint8Array = isObjectOfType('Uint8Array');\nis.uint8ClampedArray = isObjectOfType('Uint8ClampedArray');\nis.int16Array = isObjectOfType('Int16Array');\nis.uint16Array = isObjectOfType('Uint16Array');\nis.int32Array = isObjectOfType('Int32Array');\nis.uint32Array = isObjectOfType('Uint32Array');\nis.float32Array = isObjectOfType('Float32Array');\nis.float64Array = isObjectOfType('Float64Array');\nis.bigInt64Array = isObjectOfType('BigInt64Array');\nis.bigUint64Array = isObjectOfType('BigUint64Array');\nis.arrayBuffer = isObjectOfType('ArrayBuffer');\nis.sharedArrayBuffer = isObjectOfType('SharedArrayBuffer');\nis.dataView = isObjectOfType('DataView');\nis.enumCase = (value, targetEnum) => Object.values(targetEnum).includes(value);\nis.directInstanceOf = (instance, class_) => Object.getPrototypeOf(instance) === class_.prototype;\nis.urlInstance = (value) => isObjectOfType('URL')(value);\nis.urlString = (value) => {\n    if (!is.string(value)) {\n        return false;\n    }\n    try {\n        new URL(value); // eslint-disable-line no-new\n        return true;\n    }\n    catch (_a) {\n        return false;\n    }\n};\n// Example: `is.truthy = (value: unknown): value is (not false | not 0 | not '' | not undefined | not null) => Boolean(value);`\nis.truthy = (value) => Boolean(value);\n// Example: `is.falsy = (value: unknown): value is (not true | 0 | '' | undefined | null) => Boolean(value);`\nis.falsy = (value) => !value;\nis.nan = (value) => Number.isNaN(value);\nis.primitive = (value) => is.null_(value) || isPrimitiveTypeName(typeof value);\nis.integer = (value) => Number.isInteger(value);\nis.safeInteger = (value) => Number.isSafeInteger(value);\nis.plainObject = (value) => {\n    // From: https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\n    if (toString.call(value) !== '[object Object]') {\n        return false;\n    }\n    const prototype = Object.getPrototypeOf(value);\n    return prototype === null || prototype === Object.getPrototypeOf({});\n};\nis.typedArray = (value) => isTypedArrayName(getObjectType(value));\nconst isValidLength = (value) => is.safeInteger(value) && value >= 0;\nis.arrayLike = (value) => !is.nullOrUndefined(value) && !is.function_(value) && isValidLength(value.length);\nis.inRange = (value, range) => {\n    if (is.number(range)) {\n        return value >= Math.min(0, range) && value <= Math.max(range, 0);\n    }\n    if (is.array(range) && range.length === 2) {\n        return value >= Math.min(...range) && value <= Math.max(...range);\n    }\n    throw new TypeError(`Invalid range: ${JSON.stringify(range)}`);\n};\nconst NODE_TYPE_ELEMENT = 1;\nconst DOM_PROPERTIES_TO_CHECK = [\n    'innerHTML',\n    'ownerDocument',\n    'style',\n    'attributes',\n    'nodeValue'\n];\nis.domElement = (value) => {\n    return is.object(value) &&\n        value.nodeType === NODE_TYPE_ELEMENT &&\n        is.string(value.nodeName) &&\n        !is.plainObject(value) &&\n        DOM_PROPERTIES_TO_CHECK.every(property => property in value);\n};\nis.observable = (value) => {\n    var _a, _b, _c, _d;\n    if (!value) {\n        return false;\n    }\n    // eslint-disable-next-line no-use-extend-native/no-use-extend-native\n    if (value === ((_b = (_a = value)[Symbol.observable]) === null || _b === void 0 ? void 0 : _b.call(_a))) {\n        return true;\n    }\n    if (value === ((_d = (_c = value)['@@observable']) === null || _d === void 0 ? void 0 : _d.call(_c))) {\n        return true;\n    }\n    return false;\n};\nis.nodeStream = (value) => is.object(value) && is.function_(value.pipe) && !is.observable(value);\nis.infinite = (value) => value === Infinity || value === -Infinity;\nconst isAbsoluteMod2 = (remainder) => (value) => is.integer(value) && Math.abs(value % 2) === remainder;\nis.evenInteger = isAbsoluteMod2(0);\nis.oddInteger = isAbsoluteMod2(1);\nis.emptyArray = (value) => is.array(value) && value.length === 0;\nis.nonEmptyArray = (value) => is.array(value) && value.length > 0;\nis.emptyString = (value) => is.string(value) && value.length === 0;\nconst isWhiteSpaceString = (value) => is.string(value) && !/\\S/.test(value);\nis.emptyStringOrWhitespace = (value) => is.emptyString(value) || isWhiteSpaceString(value);\n// TODO: Use `not ''` when the `not` operator is available.\nis.nonEmptyString = (value) => is.string(value) && value.length > 0;\n// TODO: Use `not ''` when the `not` operator is available.\nis.nonEmptyStringAndNotWhitespace = (value) => is.string(value) && !is.emptyStringOrWhitespace(value);\nis.emptyObject = (value) => is.object(value) && !is.map(value) && !is.set(value) && Object.keys(value).length === 0;\n// TODO: Use `not` operator here to remove `Map` and `Set` from type guard:\n// - https://github.com/Microsoft/TypeScript/pull/29317\nis.nonEmptyObject = (value) => is.object(value) && !is.map(value) && !is.set(value) && Object.keys(value).length > 0;\nis.emptySet = (value) => is.set(value) && value.size === 0;\nis.nonEmptySet = (value) => is.set(value) && value.size > 0;\nis.emptyMap = (value) => is.map(value) && value.size === 0;\nis.nonEmptyMap = (value) => is.map(value) && value.size > 0;\n// `PropertyKey` is any value that can be used as an object key (string, number, or symbol)\nis.propertyKey = (value) => is.any([is.string, is.number, is.symbol], value);\nis.formData = (value) => isObjectOfType('FormData')(value);\nis.urlSearchParams = (value) => isObjectOfType('URLSearchParams')(value);\nconst predicateOnArray = (method, predicate, values) => {\n    if (!is.function_(predicate)) {\n        throw new TypeError(`Invalid predicate: ${JSON.stringify(predicate)}`);\n    }\n    if (values.length === 0) {\n        throw new TypeError('Invalid number of values');\n    }\n    return method.call(values, predicate);\n};\nis.any = (predicate, ...values) => {\n    const predicates = is.array(predicate) ? predicate : [predicate];\n    return predicates.some(singlePredicate => predicateOnArray(Array.prototype.some, singlePredicate, values));\n};\nis.all = (predicate, ...values) => predicateOnArray(Array.prototype.every, predicate, values);\nconst assertType = (condition, description, value, options = {}) => {\n    if (!condition) {\n        const { multipleValues } = options;\n        const valuesMessage = multipleValues ?\n            `received values of types ${[\n                ...new Set(value.map(singleValue => `\\`${is(singleValue)}\\``))\n            ].join(', ')}` :\n            `received value of type \\`${is(value)}\\``;\n        throw new TypeError(`Expected value which is \\`${description}\\`, ${valuesMessage}.`);\n    }\n};\nexports.assert = {\n    // Unknowns.\n    undefined: (value) => assertType(is.undefined(value), 'undefined', value),\n    string: (value) => assertType(is.string(value), 'string', value),\n    number: (value) => assertType(is.number(value), 'number', value),\n    bigint: (value) => assertType(is.bigint(value), 'bigint', value),\n    // eslint-disable-next-line @typescript-eslint/ban-types\n    function_: (value) => assertType(is.function_(value), 'Function', value),\n    null_: (value) => assertType(is.null_(value), 'null', value),\n    class_: (value) => assertType(is.class_(value), \"Class\" /* class_ */, value),\n    boolean: (value) => assertType(is.boolean(value), 'boolean', value),\n    symbol: (value) => assertType(is.symbol(value), 'symbol', value),\n    numericString: (value) => assertType(is.numericString(value), \"string with a number\" /* numericString */, value),\n    array: (value, assertion) => {\n        const assert = assertType;\n        assert(is.array(value), 'Array', value);\n        if (assertion) {\n            value.forEach(assertion);\n        }\n    },\n    buffer: (value) => assertType(is.buffer(value), 'Buffer', value),\n    blob: (value) => assertType(is.blob(value), 'Blob', value),\n    nullOrUndefined: (value) => assertType(is.nullOrUndefined(value), \"null or undefined\" /* nullOrUndefined */, value),\n    object: (value) => assertType(is.object(value), 'Object', value),\n    iterable: (value) => assertType(is.iterable(value), \"Iterable\" /* iterable */, value),\n    asyncIterable: (value) => assertType(is.asyncIterable(value), \"AsyncIterable\" /* asyncIterable */, value),\n    generator: (value) => assertType(is.generator(value), 'Generator', value),\n    asyncGenerator: (value) => assertType(is.asyncGenerator(value), 'AsyncGenerator', value),\n    nativePromise: (value) => assertType(is.nativePromise(value), \"native Promise\" /* nativePromise */, value),\n    promise: (value) => assertType(is.promise(value), 'Promise', value),\n    generatorFunction: (value) => assertType(is.generatorFunction(value), 'GeneratorFunction', value),\n    asyncGeneratorFunction: (value) => assertType(is.asyncGeneratorFunction(value), 'AsyncGeneratorFunction', value),\n    // eslint-disable-next-line @typescript-eslint/ban-types\n    asyncFunction: (value) => assertType(is.asyncFunction(value), 'AsyncFunction', value),\n    // eslint-disable-next-line @typescript-eslint/ban-types\n    boundFunction: (value) => assertType(is.boundFunction(value), 'Function', value),\n    regExp: (value) => assertType(is.regExp(value), 'RegExp', value),\n    date: (value) => assertType(is.date(value), 'Date', value),\n    error: (value) => assertType(is.error(value), 'Error', value),\n    map: (value) => assertType(is.map(value), 'Map', value),\n    set: (value) => assertType(is.set(value), 'Set', value),\n    weakMap: (value) => assertType(is.weakMap(value), 'WeakMap', value),\n    weakSet: (value) => assertType(is.weakSet(value), 'WeakSet', value),\n    int8Array: (value) => assertType(is.int8Array(value), 'Int8Array', value),\n    uint8Array: (value) => assertType(is.uint8Array(value), 'Uint8Array', value),\n    uint8ClampedArray: (value) => assertType(is.uint8ClampedArray(value), 'Uint8ClampedArray', value),\n    int16Array: (value) => assertType(is.int16Array(value), 'Int16Array', value),\n    uint16Array: (value) => assertType(is.uint16Array(value), 'Uint16Array', value),\n    int32Array: (value) => assertType(is.int32Array(value), 'Int32Array', value),\n    uint32Array: (value) => assertType(is.uint32Array(value), 'Uint32Array', value),\n    float32Array: (value) => assertType(is.float32Array(value), 'Float32Array', value),\n    float64Array: (value) => assertType(is.float64Array(value), 'Float64Array', value),\n    bigInt64Array: (value) => assertType(is.bigInt64Array(value), 'BigInt64Array', value),\n    bigUint64Array: (value) => assertType(is.bigUint64Array(value), 'BigUint64Array', value),\n    arrayBuffer: (value) => assertType(is.arrayBuffer(value), 'ArrayBuffer', value),\n    sharedArrayBuffer: (value) => assertType(is.sharedArrayBuffer(value), 'SharedArrayBuffer', value),\n    dataView: (value) => assertType(is.dataView(value), 'DataView', value),\n    enumCase: (value, targetEnum) => assertType(is.enumCase(value, targetEnum), 'EnumCase', value),\n    urlInstance: (value) => assertType(is.urlInstance(value), 'URL', value),\n    urlString: (value) => assertType(is.urlString(value), \"string with a URL\" /* urlString */, value),\n    truthy: (value) => assertType(is.truthy(value), \"truthy\" /* truthy */, value),\n    falsy: (value) => assertType(is.falsy(value), \"falsy\" /* falsy */, value),\n    nan: (value) => assertType(is.nan(value), \"NaN\" /* nan */, value),\n    primitive: (value) => assertType(is.primitive(value), \"primitive\" /* primitive */, value),\n    integer: (value) => assertType(is.integer(value), \"integer\" /* integer */, value),\n    safeInteger: (value) => assertType(is.safeInteger(value), \"integer\" /* safeInteger */, value),\n    plainObject: (value) => assertType(is.plainObject(value), \"plain object\" /* plainObject */, value),\n    typedArray: (value) => assertType(is.typedArray(value), \"TypedArray\" /* typedArray */, value),\n    arrayLike: (value) => assertType(is.arrayLike(value), \"array-like\" /* arrayLike */, value),\n    domElement: (value) => assertType(is.domElement(value), \"HTMLElement\" /* domElement */, value),\n    observable: (value) => assertType(is.observable(value), 'Observable', value),\n    nodeStream: (value) => assertType(is.nodeStream(value), \"Node.js Stream\" /* nodeStream */, value),\n    infinite: (value) => assertType(is.infinite(value), \"infinite number\" /* infinite */, value),\n    emptyArray: (value) => assertType(is.emptyArray(value), \"empty array\" /* emptyArray */, value),\n    nonEmptyArray: (value) => assertType(is.nonEmptyArray(value), \"non-empty array\" /* nonEmptyArray */, value),\n    emptyString: (value) => assertType(is.emptyString(value), \"empty string\" /* emptyString */, value),\n    emptyStringOrWhitespace: (value) => assertType(is.emptyStringOrWhitespace(value), \"empty string or whitespace\" /* emptyStringOrWhitespace */, value),\n    nonEmptyString: (value) => assertType(is.nonEmptyString(value), \"non-empty string\" /* nonEmptyString */, value),\n    nonEmptyStringAndNotWhitespace: (value) => assertType(is.nonEmptyStringAndNotWhitespace(value), \"non-empty string and not whitespace\" /* nonEmptyStringAndNotWhitespace */, value),\n    emptyObject: (value) => assertType(is.emptyObject(value), \"empty object\" /* emptyObject */, value),\n    nonEmptyObject: (value) => assertType(is.nonEmptyObject(value), \"non-empty object\" /* nonEmptyObject */, value),\n    emptySet: (value) => assertType(is.emptySet(value), \"empty set\" /* emptySet */, value),\n    nonEmptySet: (value) => assertType(is.nonEmptySet(value), \"non-empty set\" /* nonEmptySet */, value),\n    emptyMap: (value) => assertType(is.emptyMap(value), \"empty map\" /* emptyMap */, value),\n    nonEmptyMap: (value) => assertType(is.nonEmptyMap(value), \"non-empty map\" /* nonEmptyMap */, value),\n    propertyKey: (value) => assertType(is.propertyKey(value), 'PropertyKey', value),\n    formData: (value) => assertType(is.formData(value), 'FormData', value),\n    urlSearchParams: (value) => assertType(is.urlSearchParams(value), 'URLSearchParams', value),\n    // Numbers.\n    evenInteger: (value) => assertType(is.evenInteger(value), \"even integer\" /* evenInteger */, value),\n    oddInteger: (value) => assertType(is.oddInteger(value), \"odd integer\" /* oddInteger */, value),\n    // Two arguments.\n    directInstanceOf: (instance, class_) => assertType(is.directInstanceOf(instance, class_), \"T\" /* directInstanceOf */, instance),\n    inRange: (value, range) => assertType(is.inRange(value, range), \"in range\" /* inRange */, value),\n    // Variadic functions.\n    any: (predicate, ...values) => {\n        return assertType(is.any(predicate, ...values), \"predicate returns truthy for any value\" /* any */, values, { multipleValues: true });\n    },\n    all: (predicate, ...values) => assertType(is.all(predicate, ...values), \"predicate returns truthy for all values\" /* all */, values, { multipleValues: true })\n};\n// Some few keywords are reserved, but we'll populate them for Node.js users\n// See https://github.com/Microsoft/TypeScript/issues/2536\nObject.defineProperties(is, {\n    class: {\n        value: is.class_\n    },\n    function: {\n        value: is.function_\n    },\n    null: {\n        value: is.null_\n    }\n});\nObject.defineProperties(exports.assert, {\n    class: {\n        value: exports.assert.class_\n    },\n    function: {\n        value: exports.assert.function_\n    },\n    null: {\n        value: exports.assert.null_\n    }\n});\nexports[\"default\"] = is;\n// For CommonJS default export support\nmodule.exports = is;\nmodule.exports[\"default\"] = is;\nmodule.exports.assert = exports.assert;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@sindresorhus/is/dist/index.js?")},"./node_modules/@szmarczak/http-timer/dist/source/index.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@szmarczak/http-timer/dist/source/index.js ***!
  \*****************************************************************/(module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst defer_to_connect_1 = __webpack_require__(/*! defer-to-connect */ \"./node_modules/defer-to-connect/dist/source/index.js\");\nconst nodejsMajorVersion = Number(process.versions.node.split('.')[0]);\nconst timer = (request) => {\n    const timings = {\n        start: Date.now(),\n        socket: undefined,\n        lookup: undefined,\n        connect: undefined,\n        secureConnect: undefined,\n        upload: undefined,\n        response: undefined,\n        end: undefined,\n        error: undefined,\n        abort: undefined,\n        phases: {\n            wait: undefined,\n            dns: undefined,\n            tcp: undefined,\n            tls: undefined,\n            request: undefined,\n            firstByte: undefined,\n            download: undefined,\n            total: undefined\n        }\n    };\n    request.timings = timings;\n    const handleError = (origin) => {\n        const emit = origin.emit.bind(origin);\n        origin.emit = (event, ...args) => {\n            // Catches the `error` event\n            if (event === 'error') {\n                timings.error = Date.now();\n                timings.phases.total = timings.error - timings.start;\n                origin.emit = emit;\n            }\n            // Saves the original behavior\n            return emit(event, ...args);\n        };\n    };\n    handleError(request);\n    request.prependOnceListener('abort', () => {\n        timings.abort = Date.now();\n        // Let the `end` response event be responsible for setting the total phase,\n        // unless the Node.js major version is >= 13.\n        if (!timings.response || nodejsMajorVersion >= 13) {\n            timings.phases.total = Date.now() - timings.start;\n        }\n    });\n    const onSocket = (socket) => {\n        timings.socket = Date.now();\n        timings.phases.wait = timings.socket - timings.start;\n        const lookupListener = () => {\n            timings.lookup = Date.now();\n            timings.phases.dns = timings.lookup - timings.socket;\n        };\n        socket.prependOnceListener('lookup', lookupListener);\n        defer_to_connect_1.default(socket, {\n            connect: () => {\n                timings.connect = Date.now();\n                if (timings.lookup === undefined) {\n                    socket.removeListener('lookup', lookupListener);\n                    timings.lookup = timings.connect;\n                    timings.phases.dns = timings.lookup - timings.socket;\n                }\n                timings.phases.tcp = timings.connect - timings.lookup;\n                // This callback is called before flushing any data,\n                // so we don't need to set `timings.phases.request` here.\n            },\n            secureConnect: () => {\n                timings.secureConnect = Date.now();\n                timings.phases.tls = timings.secureConnect - timings.connect;\n            }\n        });\n    };\n    if (request.socket) {\n        onSocket(request.socket);\n    }\n    else {\n        request.prependOnceListener('socket', onSocket);\n    }\n    const onUpload = () => {\n        var _a;\n        timings.upload = Date.now();\n        timings.phases.request = timings.upload - (_a = timings.secureConnect, (_a !== null && _a !== void 0 ? _a : timings.connect));\n    };\n    const writableFinished = () => {\n        if (typeof request.writableFinished === 'boolean') {\n            return request.writableFinished;\n        }\n        // Node.js doesn't have `request.writableFinished` property\n        return request.finished && request.outputSize === 0 && (!request.socket || request.socket.writableLength === 0);\n    };\n    if (writableFinished()) {\n        onUpload();\n    }\n    else {\n        request.prependOnceListener('finish', onUpload);\n    }\n    request.prependOnceListener('response', (response) => {\n        timings.response = Date.now();\n        timings.phases.firstByte = timings.response - timings.upload;\n        response.timings = timings;\n        handleError(response);\n        response.prependOnceListener('end', () => {\n            timings.end = Date.now();\n            timings.phases.download = timings.end - timings.response;\n            timings.phases.total = timings.end - timings.start;\n        });\n    });\n    return timings;\n};\nexports[\"default\"] = timer;\n// For CommonJS default export support\nmodule.exports = timer;\nmodule.exports[\"default\"] = timer;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/@szmarczak/http-timer/dist/source/index.js?")},"./node_modules/accepts/index.js":
/*!***************************************!*\
  !*** ./node_modules/accepts/index.js ***!
  \***************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("/*!\n * accepts\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar Negotiator = __webpack_require__(/*! negotiator */ \"./node_modules/negotiator/index.js\")\nvar mime = __webpack_require__(/*! mime-types */ \"./node_modules/mime-types/index.js\")\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = Accepts\n\n/**\n * Create a new Accepts object for the given req.\n *\n * @param {object} req\n * @public\n */\n\nfunction Accepts (req) {\n  if (!(this instanceof Accepts)) {\n    return new Accepts(req)\n  }\n\n  this.headers = req.headers\n  this.negotiator = new Negotiator(req)\n}\n\n/**\n * Check if the given `type(s)` is acceptable, returning\n * the best match when true, otherwise `undefined`, in which\n * case you should respond with 406 \"Not Acceptable\".\n *\n * The `type` value may be a single mime type string\n * such as \"application/json\", the extension name\n * such as \"json\" or an array `[\"json\", \"html\", \"text/plain\"]`. When a list\n * or array is given the _best_ match, if any is returned.\n *\n * Examples:\n *\n *     // Accept: text/html\n *     this.types('html');\n *     // => \"html\"\n *\n *     // Accept: text/*, application/json\n *     this.types('html');\n *     // => \"html\"\n *     this.types('text/html');\n *     // => \"text/html\"\n *     this.types('json', 'text');\n *     // => \"json\"\n *     this.types('application/json');\n *     // => \"application/json\"\n *\n *     // Accept: text/*, application/json\n *     this.types('image/png');\n *     this.types('png');\n *     // => undefined\n *\n *     // Accept: text/*;q=.5, application/json\n *     this.types(['html', 'json']);\n *     this.types('html', 'json');\n *     // => \"json\"\n *\n * @param {String|Array} types...\n * @return {String|Array|Boolean}\n * @public\n */\n\nAccepts.prototype.type =\nAccepts.prototype.types = function (types_) {\n  var types = types_\n\n  // support flattened arguments\n  if (types && !Array.isArray(types)) {\n    types = new Array(arguments.length)\n    for (var i = 0; i < types.length; i++) {\n      types[i] = arguments[i]\n    }\n  }\n\n  // no types, return all requested types\n  if (!types || types.length === 0) {\n    return this.negotiator.mediaTypes()\n  }\n\n  // no accept header, return first given type\n  if (!this.headers.accept) {\n    return types[0]\n  }\n\n  var mimes = types.map(extToMime)\n  var accepts = this.negotiator.mediaTypes(mimes.filter(validMime))\n  var first = accepts[0]\n\n  return first\n    ? types[mimes.indexOf(first)]\n    : false\n}\n\n/**\n * Return accepted encodings or best fit based on `encodings`.\n *\n * Given `Accept-Encoding: gzip, deflate`\n * an array sorted by quality is returned:\n *\n *     ['gzip', 'deflate']\n *\n * @param {String|Array} encodings...\n * @return {String|Array}\n * @public\n */\n\nAccepts.prototype.encoding =\nAccepts.prototype.encodings = function (encodings_) {\n  var encodings = encodings_\n\n  // support flattened arguments\n  if (encodings && !Array.isArray(encodings)) {\n    encodings = new Array(arguments.length)\n    for (var i = 0; i < encodings.length; i++) {\n      encodings[i] = arguments[i]\n    }\n  }\n\n  // no encodings, return all requested encodings\n  if (!encodings || encodings.length === 0) {\n    return this.negotiator.encodings()\n  }\n\n  return this.negotiator.encodings(encodings)[0] || false\n}\n\n/**\n * Return accepted charsets or best fit based on `charsets`.\n *\n * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5`\n * an array sorted by quality is returned:\n *\n *     ['utf-8', 'utf-7', 'iso-8859-1']\n *\n * @param {String|Array} charsets...\n * @return {String|Array}\n * @public\n */\n\nAccepts.prototype.charset =\nAccepts.prototype.charsets = function (charsets_) {\n  var charsets = charsets_\n\n  // support flattened arguments\n  if (charsets && !Array.isArray(charsets)) {\n    charsets = new Array(arguments.length)\n    for (var i = 0; i < charsets.length; i++) {\n      charsets[i] = arguments[i]\n    }\n  }\n\n  // no charsets, return all requested charsets\n  if (!charsets || charsets.length === 0) {\n    return this.negotiator.charsets()\n  }\n\n  return this.negotiator.charsets(charsets)[0] || false\n}\n\n/**\n * Return accepted languages or best fit based on `langs`.\n *\n * Given `Accept-Language: en;q=0.8, es, pt`\n * an array sorted by quality is returned:\n *\n *     ['es', 'pt', 'en']\n *\n * @param {String|Array} langs...\n * @return {Array|String}\n * @public\n */\n\nAccepts.prototype.lang =\nAccepts.prototype.langs =\nAccepts.prototype.language =\nAccepts.prototype.languages = function (languages_) {\n  var languages = languages_\n\n  // support flattened arguments\n  if (languages && !Array.isArray(languages)) {\n    languages = new Array(arguments.length)\n    for (var i = 0; i < languages.length; i++) {\n      languages[i] = arguments[i]\n    }\n  }\n\n  // no languages, return all requested languages\n  if (!languages || languages.length === 0) {\n    return this.negotiator.languages()\n  }\n\n  return this.negotiator.languages(languages)[0] || false\n}\n\n/**\n * Convert extnames to mime.\n *\n * @param {String} type\n * @return {String}\n * @private\n */\n\nfunction extToMime (type) {\n  return type.indexOf('/') === -1\n    ? mime.lookup(type)\n    : type\n}\n\n/**\n * Check if mime is valid.\n *\n * @param {String} type\n * @return {String}\n * @private\n */\n\nfunction validMime (type) {\n  return typeof type === 'string'\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/accepts/index.js?")},"./node_modules/ansi-align/index.js":
/*!******************************************!*\
  !*** ./node_modules/ansi-align/index.js ***!
  \******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst stringWidth = __webpack_require__(/*! string-width */ \"./node_modules/string-width/index.js\")\n\nfunction ansiAlign (text, opts) {\n  if (!text) return text\n\n  opts = opts || {}\n  const align = opts.align || 'center'\n\n  // short-circuit `align: 'left'` as no-op\n  if (align === 'left') return text\n\n  const split = opts.split || '\\n'\n  const pad = opts.pad || ' '\n  const widthDiffFn = align !== 'right' ? halfDiff : fullDiff\n\n  let returnString = false\n  if (!Array.isArray(text)) {\n    returnString = true\n    text = String(text).split(split)\n  }\n\n  let width\n  let maxWidth = 0\n  text = text.map(function (str) {\n    str = String(str)\n    width = stringWidth(str)\n    maxWidth = Math.max(width, maxWidth)\n    return {\n      str,\n      width\n    }\n  }).map(function (obj) {\n    return new Array(widthDiffFn(maxWidth, obj.width) + 1).join(pad) + obj.str\n  })\n\n  return returnString ? text.join(split) : text\n}\n\nansiAlign.left = function left (text) {\n  return ansiAlign(text, { align: 'left' })\n}\n\nansiAlign.center = function center (text) {\n  return ansiAlign(text, { align: 'center' })\n}\n\nansiAlign.right = function right (text) {\n  return ansiAlign(text, { align: 'right' })\n}\n\nmodule.exports = ansiAlign\n\nfunction halfDiff (maxWidth, curWidth) {\n  return Math.floor((maxWidth - curWidth) / 2)\n}\n\nfunction fullDiff (maxWidth, curWidth) {\n  return maxWidth - curWidth\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ansi-align/index.js?")},"./node_modules/ansi-regex/index.js":
/*!******************************************!*\
  !*** ./node_modules/ansi-regex/index.js ***!
  \******************************************/module=>{"use strict";eval("\n\nmodule.exports = ({onlyFirst = false} = {}) => {\n\tconst pattern = [\n\t\t'[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ansi-regex/index.js?")},"./node_modules/ansi-styles/index.js":
/*!*******************************************!*\
  !*** ./node_modules/ansi-styles/index.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("/* module decorator */ module = __webpack_require__.nmd(module);\n\n\nconst wrapAnsi16 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => (...args) => {\n\tconst rgb = fn(...args);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nconst ansi2ansi = n => n;\nconst rgb2rgb = (r, g, b) => [r, g, b];\n\nconst setLazyProperty = (object, property, get) => {\n\tObject.defineProperty(object, property, {\n\t\tget: () => {\n\t\t\tconst value = get();\n\n\t\t\tObject.defineProperty(object, property, {\n\t\t\t\tvalue,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\n\t\t\treturn value;\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n};\n\n/** @type {typeof import('color-convert')} */\nlet colorConvert;\nconst makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n\tif (colorConvert === undefined) {\n\t\tcolorConvert = __webpack_require__(/*! color-convert */ \"./node_modules/color-convert/index.js\");\n\t}\n\n\tconst offset = isBackground ? 10 : 0;\n\tconst styles = {};\n\n\tfor (const [sourceSpace, suite] of Object.entries(colorConvert)) {\n\t\tconst name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;\n\t\tif (sourceSpace === targetSpace) {\n\t\t\tstyles[name] = wrap(identity, offset);\n\t\t} else if (typeof suite === 'object') {\n\t\t\tstyles[name] = wrap(suite[targetSpace], offset);\n\t\t}\n\t}\n\n\treturn styles;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tsetLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));\n\tsetLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ansi-styles/index.js?")},"./node_modules/array.prototype.foreach/implementation.js":
/*!****************************************************************!*\
  !*** ./node_modules/array.prototype.foreach/implementation.js ***!
  \****************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nvar GetIntrinsic = __webpack_require__(/*! get-intrinsic */ "./node_modules/get-intrinsic/index.js");\nvar callBound = __webpack_require__(/*! call-bind/callBound */ "./node_modules/call-bind/callBound.js");\nvar $TypeError = GetIntrinsic(\'%TypeError%\');\n\nvar Call = __webpack_require__(/*! es-abstract/2020/Call */ "./node_modules/es-abstract/2020/Call.js");\nvar Get = __webpack_require__(/*! es-abstract/2020/Get */ "./node_modules/es-abstract/2020/Get.js");\nvar HasProperty = __webpack_require__(/*! es-abstract/2020/HasProperty */ "./node_modules/es-abstract/2020/HasProperty.js");\nvar IsCallable = __webpack_require__(/*! es-abstract/2020/IsCallable */ "./node_modules/es-abstract/2020/IsCallable.js");\nvar LengthOfArrayLike = __webpack_require__(/*! es-abstract/2020/LengthOfArrayLike */ "./node_modules/es-abstract/2020/LengthOfArrayLike.js");\nvar ToObject = __webpack_require__(/*! es-abstract/2020/ToObject */ "./node_modules/es-abstract/2020/ToObject.js");\nvar ToString = __webpack_require__(/*! es-abstract/2020/ToString */ "./node_modules/es-abstract/2020/ToString.js");\n\nvar isString = __webpack_require__(/*! is-string */ "./node_modules/is-string/index.js");\n\nvar $split = callBound(\'String.prototype.split\');\n\n// Check failure of by-index access of string characters (IE < 9) and failure of `0 in boxedString` (Rhino)\nvar boxedString = Object(\'a\');\nvar splitString = boxedString[0] !== \'a\' || !(0 in boxedString);\n\nmodule.exports = function forEach(callbackfn) {\n\tvar thisO = ToObject(this);\n\tvar O = splitString && isString(this) ? $split(this, \'\') : thisO;\n\n\tvar len = LengthOfArrayLike(O);\n\n\tif (!IsCallable(callbackfn)) {\n\t\tthrow new $TypeError(\'Array.prototype.forEach callback must be a function\');\n\t}\n\n\tvar thisArg;\n\tif (arguments.length > 1) {\n\t\tthisArg = arguments[1];\n\t}\n\n\tvar k = 0;\n\twhile (k < len) {\n\t\tvar Pk = ToString(k);\n\t\tvar kPresent = HasProperty(O, Pk);\n\t\tif (kPresent) {\n\t\t\tvar kValue = Get(O, Pk);\n\t\t\tCall(callbackfn, thisArg, [kValue, k, O]);\n\t\t}\n\t\tk += 1;\n\t}\n\n\treturn void undefined;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/array.prototype.foreach/implementation.js?')},"./node_modules/array.prototype.foreach/index.js":
/*!*******************************************************!*\
  !*** ./node_modules/array.prototype.foreach/index.js ***!
  \*******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nvar define = __webpack_require__(/*! define-properties */ "./node_modules/define-properties/index.js");\nvar callBind = __webpack_require__(/*! call-bind */ "./node_modules/call-bind/index.js");\nvar callBound = __webpack_require__(/*! call-bind/callBound */ "./node_modules/call-bind/callBound.js");\nvar RequireObjectCoercible = __webpack_require__(/*! es-abstract/2020/RequireObjectCoercible */ "./node_modules/es-abstract/2020/RequireObjectCoercible.js");\n\nvar implementation = __webpack_require__(/*! ./implementation */ "./node_modules/array.prototype.foreach/implementation.js");\nvar getPolyfill = __webpack_require__(/*! ./polyfill */ "./node_modules/array.prototype.foreach/polyfill.js");\nvar polyfill = getPolyfill();\nvar shim = __webpack_require__(/*! ./shim */ "./node_modules/array.prototype.foreach/shim.js");\n\nvar $slice = callBound(\'Array.prototype.slice\');\n\nvar bound = callBind.apply(polyfill);\n// eslint-disable-next-line no-unused-vars\nvar boundCoercible = function forEach(array, callbackfn) {\n\tRequireObjectCoercible(array);\n\treturn bound(array, $slice(arguments, 1));\n};\n\ndefine(boundCoercible, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = boundCoercible;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/array.prototype.foreach/index.js?')},"./node_modules/array.prototype.foreach/polyfill.js":
/*!**********************************************************!*\
  !*** ./node_modules/array.prototype.foreach/polyfill.js ***!
  \**********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nvar arrayMethodBoxesProperly = __webpack_require__(/*! es-array-method-boxes-properly */ "./node_modules/es-array-method-boxes-properly/index.js");\n\nvar implementation = __webpack_require__(/*! ./implementation */ "./node_modules/array.prototype.foreach/implementation.js");\n\nmodule.exports = function getPolyfill() {\n\tvar method = Array.prototype.forEach;\n\treturn arrayMethodBoxesProperly(method) ? method : implementation;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/array.prototype.foreach/polyfill.js?')},"./node_modules/array.prototype.foreach/shim.js":
/*!******************************************************!*\
  !*** ./node_modules/array.prototype.foreach/shim.js ***!
  \******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nvar define = __webpack_require__(/*! define-properties */ "./node_modules/define-properties/index.js");\nvar getPolyfill = __webpack_require__(/*! ./polyfill */ "./node_modules/array.prototype.foreach/polyfill.js");\n\nmodule.exports = function shimForEach() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tArray.prototype,\n\t\t{ forEach: polyfill },\n\t\t{ forEach: function () { return Array.prototype.forEach !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/array.prototype.foreach/shim.js?')},"./node_modules/async-ratelimiter/src/index.js":
/*!*****************************************************!*\
  !*** ./node_modules/async-ratelimiter/src/index.js ***!
  \*****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst assert = __webpack_require__(/*! assert */ \"assert\")\n\nconst microtime = __webpack_require__(/*! ./microtime */ \"./node_modules/async-ratelimiter/src/microtime.js\")\n\nconst toNumber = str => parseInt(str, 10)\n\nmodule.exports = class Limiter {\n  constructor ({ id, db, max = 2500, duration = 3600000, namespace = 'limit' }) {\n    assert(db, 'db required')\n    this.db = db\n    this.id = id\n    this.max = max\n    this.duration = duration\n    this.namespace = namespace\n  }\n\n  async get ({ id = this.id, max = this.max, duration = this.duration } = {}) {\n    assert(id, 'id required')\n    assert(max, 'max required')\n    assert(duration, 'duration required')\n\n    const key = `${this.namespace}:${id}`\n    const now = microtime.now()\n    const start = now - duration * 1000\n\n    const operations = [\n      ['zremrangebyscore', key, 0, start],\n      ['zcard', key],\n      ['zadd', key, now, now],\n      ['zrange', key, 0, 0],\n      ['zrange', key, -max, -max],\n      ['zremrangebyrank', key, 0, -(max + 1)],\n      ['pexpire', key, duration]\n    ]\n\n    const res = await this.db.multi(operations).exec()\n    const count = toNumber(res[1][1])\n    const oldest = toNumber(res[3][1])\n    const oldestInRange = toNumber(res[4][1])\n    const resetMicro = (Number.isNaN(oldestInRange) ? oldest : oldestInRange) + duration * 1000\n\n    return {\n      remaining: count < max ? max - count : 0,\n      reset: Math.floor(resetMicro / 1000000),\n      total: max\n    }\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/async-ratelimiter/src/index.js?")},"./node_modules/async-ratelimiter/src/microtime.js":
/*!*********************************************************!*\
  !*** ./node_modules/async-ratelimiter/src/microtime.js ***!
  \*********************************************************/module=>{"use strict";eval("\n\nconst time = Date.now() * 1e3\nconst start = process.hrtime()\n\nmodule.exports.now = function () {\n  const diff = process.hrtime(start)\n  return time + diff[0] * 1e6 + Math.round(diff[1] * 1e-3)\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/async-ratelimiter/src/microtime.js?")},"./node_modules/asynckit/index.js":
/*!****************************************!*\
  !*** ./node_modules/asynckit/index.js ***!
  \****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('module.exports =\n{\n  parallel      : __webpack_require__(/*! ./parallel.js */ "./node_modules/asynckit/parallel.js"),\n  serial        : __webpack_require__(/*! ./serial.js */ "./node_modules/asynckit/serial.js"),\n  serialOrdered : __webpack_require__(/*! ./serialOrdered.js */ "./node_modules/asynckit/serialOrdered.js")\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/asynckit/index.js?')},"./node_modules/asynckit/lib/abort.js":
/*!********************************************!*\
  !*** ./node_modules/asynckit/lib/abort.js ***!
  \********************************************/module=>{eval("// API\nmodule.exports = abort;\n\n/**\n * Aborts leftover active jobs\n *\n * @param {object} state - current state object\n */\nfunction abort(state)\n{\n  Object.keys(state.jobs).forEach(clean.bind(state));\n\n  // reset leftover jobs\n  state.jobs = {};\n}\n\n/**\n * Cleans up leftover job by invoking abort function for the provided job id\n *\n * @this  state\n * @param {string|number} key - job id to abort\n */\nfunction clean(key)\n{\n  if (typeof this.jobs[key] == 'function')\n  {\n    this.jobs[key]();\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/asynckit/lib/abort.js?")},"./node_modules/asynckit/lib/async.js":
/*!********************************************!*\
  !*** ./node_modules/asynckit/lib/async.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var defer = __webpack_require__(/*! ./defer.js */ "./node_modules/asynckit/lib/defer.js");\n\n// API\nmodule.exports = async;\n\n/**\n * Runs provided callback asynchronously\n * even if callback itself is not\n *\n * @param   {function} callback - callback to invoke\n * @returns {function} - augmented callback\n */\nfunction async(callback)\n{\n  var isAsync = false;\n\n  // check if async happened\n  defer(function() { isAsync = true; });\n\n  return function async_callback(err, result)\n  {\n    if (isAsync)\n    {\n      callback(err, result);\n    }\n    else\n    {\n      defer(function nextTick_callback()\n      {\n        callback(err, result);\n      });\n    }\n  };\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/asynckit/lib/async.js?')},"./node_modules/asynckit/lib/defer.js":
/*!********************************************!*\
  !*** ./node_modules/asynckit/lib/defer.js ***!
  \********************************************/module=>{eval("module.exports = defer;\n\n/**\n * Runs provided function on next iteration of the event loop\n *\n * @param {function} fn - function to run\n */\nfunction defer(fn)\n{\n  var nextTick = typeof setImmediate == 'function'\n    ? setImmediate\n    : (\n      typeof process == 'object' && typeof process.nextTick == 'function'\n      ? process.nextTick\n      : null\n    );\n\n  if (nextTick)\n  {\n    nextTick(fn);\n  }\n  else\n  {\n    setTimeout(fn, 0);\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/asynckit/lib/defer.js?")},"./node_modules/asynckit/lib/iterate.js":
/*!**********************************************!*\
  !*** ./node_modules/asynckit/lib/iterate.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var async = __webpack_require__(/*! ./async.js */ \"./node_modules/asynckit/lib/async.js\")\n  , abort = __webpack_require__(/*! ./abort.js */ \"./node_modules/asynckit/lib/abort.js\")\n  ;\n\n// API\nmodule.exports = iterate;\n\n/**\n * Iterates over each job object\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {object} state - current job status\n * @param {function} callback - invoked when all elements processed\n */\nfunction iterate(list, iterator, state, callback)\n{\n  // store current index\n  var key = state['keyedList'] ? state['keyedList'][state.index] : state.index;\n\n  state.jobs[key] = runJob(iterator, key, list[key], function(error, output)\n  {\n    // don't repeat yourself\n    // skip secondary callbacks\n    if (!(key in state.jobs))\n    {\n      return;\n    }\n\n    // clean up jobs\n    delete state.jobs[key];\n\n    if (error)\n    {\n      // don't process rest of the results\n      // stop still active jobs\n      // and reset the list\n      abort(state);\n    }\n    else\n    {\n      state.results[key] = output;\n    }\n\n    // return salvaged results\n    callback(error, state.results);\n  });\n}\n\n/**\n * Runs iterator over provided job element\n *\n * @param   {function} iterator - iterator to invoke\n * @param   {string|number} key - key/index of the element in the list of jobs\n * @param   {mixed} item - job description\n * @param   {function} callback - invoked after iterator is done with the job\n * @returns {function|mixed} - job abort function or something else\n */\nfunction runJob(iterator, key, item, callback)\n{\n  var aborter;\n\n  // allow shortcut if iterator expects only two arguments\n  if (iterator.length == 2)\n  {\n    aborter = iterator(item, async(callback));\n  }\n  // otherwise go with full three arguments\n  else\n  {\n    aborter = iterator(item, key, async(callback));\n  }\n\n  return aborter;\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/asynckit/lib/iterate.js?")},"./node_modules/asynckit/lib/state.js":
/*!********************************************!*\
  !*** ./node_modules/asynckit/lib/state.js ***!
  \********************************************/module=>{eval("// API\nmodule.exports = state;\n\n/**\n * Creates initial state object\n * for iteration over list\n *\n * @param   {array|object} list - list to iterate over\n * @param   {function|null} sortMethod - function to use for keys sort,\n *                                     or `null` to keep them as is\n * @returns {object} - initial state object\n */\nfunction state(list, sortMethod)\n{\n  var isNamedList = !Array.isArray(list)\n    , initState =\n    {\n      index    : 0,\n      keyedList: isNamedList || sortMethod ? Object.keys(list) : null,\n      jobs     : {},\n      results  : isNamedList ? {} : [],\n      size     : isNamedList ? Object.keys(list).length : list.length\n    }\n    ;\n\n  if (sortMethod)\n  {\n    // sort array keys based on it's values\n    // sort object's keys just on own merit\n    initState.keyedList.sort(isNamedList ? sortMethod : function(a, b)\n    {\n      return sortMethod(list[a], list[b]);\n    });\n  }\n\n  return initState;\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/asynckit/lib/state.js?")},"./node_modules/asynckit/lib/terminator.js":
/*!*************************************************!*\
  !*** ./node_modules/asynckit/lib/terminator.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var abort = __webpack_require__(/*! ./abort.js */ "./node_modules/asynckit/lib/abort.js")\n  , async = __webpack_require__(/*! ./async.js */ "./node_modules/asynckit/lib/async.js")\n  ;\n\n// API\nmodule.exports = terminator;\n\n/**\n * Terminates jobs in the attached state context\n *\n * @this  AsyncKitState#\n * @param {function} callback - final callback to invoke after termination\n */\nfunction terminator(callback)\n{\n  if (!Object.keys(this.jobs).length)\n  {\n    return;\n  }\n\n  // fast forward iteration index\n  this.index = this.size;\n\n  // abort jobs\n  abort(this);\n\n  // send back results we have so far\n  async(callback)(null, this.results);\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/asynckit/lib/terminator.js?')},"./node_modules/asynckit/parallel.js":
/*!*******************************************!*\
  !*** ./node_modules/asynckit/parallel.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var iterate    = __webpack_require__(/*! ./lib/iterate.js */ "./node_modules/asynckit/lib/iterate.js")\n  , initState  = __webpack_require__(/*! ./lib/state.js */ "./node_modules/asynckit/lib/state.js")\n  , terminator = __webpack_require__(/*! ./lib/terminator.js */ "./node_modules/asynckit/lib/terminator.js")\n  ;\n\n// Public API\nmodule.exports = parallel;\n\n/**\n * Runs iterator over provided array elements in parallel\n *\n * @param   {array|object} list - array or object (named list) to iterate over\n * @param   {function} iterator - iterator to run\n * @param   {function} callback - invoked when all elements processed\n * @returns {function} - jobs terminator\n */\nfunction parallel(list, iterator, callback)\n{\n  var state = initState(list);\n\n  while (state.index < (state[\'keyedList\'] || list).length)\n  {\n    iterate(list, iterator, state, function(error, result)\n    {\n      if (error)\n      {\n        callback(error, result);\n        return;\n      }\n\n      // looks like it\'s the last one\n      if (Object.keys(state.jobs).length === 0)\n      {\n        callback(null, state.results);\n        return;\n      }\n    });\n\n    state.index++;\n  }\n\n  return terminator.bind(state, callback);\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/asynckit/parallel.js?')},"./node_modules/asynckit/serial.js":
/*!*****************************************!*\
  !*** ./node_modules/asynckit/serial.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var serialOrdered = __webpack_require__(/*! ./serialOrdered.js */ "./node_modules/asynckit/serialOrdered.js");\n\n// Public API\nmodule.exports = serial;\n\n/**\n * Runs iterator over provided array elements in series\n *\n * @param   {array|object} list - array or object (named list) to iterate over\n * @param   {function} iterator - iterator to run\n * @param   {function} callback - invoked when all elements processed\n * @returns {function} - jobs terminator\n */\nfunction serial(list, iterator, callback)\n{\n  return serialOrdered(list, iterator, null, callback);\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/asynckit/serial.js?')},"./node_modules/asynckit/serialOrdered.js":
/*!************************************************!*\
  !*** ./node_modules/asynckit/serialOrdered.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var iterate    = __webpack_require__(/*! ./lib/iterate.js */ "./node_modules/asynckit/lib/iterate.js")\n  , initState  = __webpack_require__(/*! ./lib/state.js */ "./node_modules/asynckit/lib/state.js")\n  , terminator = __webpack_require__(/*! ./lib/terminator.js */ "./node_modules/asynckit/lib/terminator.js")\n  ;\n\n// Public API\nmodule.exports = serialOrdered;\n// sorting helpers\nmodule.exports.ascending  = ascending;\nmodule.exports.descending = descending;\n\n/**\n * Runs iterator over provided sorted array elements in series\n *\n * @param   {array|object} list - array or object (named list) to iterate over\n * @param   {function} iterator - iterator to run\n * @param   {function} sortMethod - custom sort function\n * @param   {function} callback - invoked when all elements processed\n * @returns {function} - jobs terminator\n */\nfunction serialOrdered(list, iterator, sortMethod, callback)\n{\n  var state = initState(list, sortMethod);\n\n  iterate(list, iterator, state, function iteratorHandler(error, result)\n  {\n    if (error)\n    {\n      callback(error, result);\n      return;\n    }\n\n    state.index++;\n\n    // are we there yet?\n    if (state.index < (state[\'keyedList\'] || list).length)\n    {\n      iterate(list, iterator, state, iteratorHandler);\n      return;\n    }\n\n    // done here\n    callback(null, state.results);\n  });\n\n  return terminator.bind(state, callback);\n}\n\n/*\n * -- Sort methods\n */\n\n/**\n * sort helper to sort array elements in ascending order\n *\n * @param   {mixed} a - an item to compare\n * @param   {mixed} b - an item to compare\n * @returns {number} - comparison result\n */\nfunction ascending(a, b)\n{\n  return a < b ? -1 : a > b ? 1 : 0;\n}\n\n/**\n * sort helper to sort array elements in descending order\n *\n * @param   {mixed} a - an item to compare\n * @param   {mixed} b - an item to compare\n * @returns {number} - comparison result\n */\nfunction descending(a, b)\n{\n  return -1 * ascending(a, b);\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/asynckit/serialOrdered.js?')},"./node_modules/at-least-node/index.js":
/*!*********************************************!*\
  !*** ./node_modules/at-least-node/index.js ***!
  \*********************************************/module=>{eval("module.exports = r => {\n  const n = process.versions.node.split('.').map(x => parseInt(x, 10))\n  r = r.split('.').map(x => parseInt(x, 10))\n  return n[0] > r[0] || (n[0] === r[0] && (n[1] > r[1] || (n[1] === r[1] && n[2] >= r[2])))\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/at-least-node/index.js?")},"./node_modules/base64id/lib/base64id.js":
/*!***********************************************!*\
  !*** ./node_modules/base64id/lib/base64id.js ***!
  \***********************************************/(module,exports,__webpack_require__)=>{eval("/*!\n * base64id v0.1.0\n */\n\n/**\n * Module dependencies\n */\n\nvar crypto = __webpack_require__(/*! crypto */ \"crypto\");\n\n/**\n * Constructor\n */\n\nvar Base64Id = function() { };\n\n/**\n * Get random bytes\n *\n * Uses a buffer if available, falls back to crypto.randomBytes\n */\n\nBase64Id.prototype.getRandomBytes = function(bytes) {\n\n  var BUFFER_SIZE = 4096\n  var self = this;  \n  \n  bytes = bytes || 12;\n\n  if (bytes > BUFFER_SIZE) {\n    return crypto.randomBytes(bytes);\n  }\n  \n  var bytesInBuffer = parseInt(BUFFER_SIZE/bytes);\n  var threshold = parseInt(bytesInBuffer*0.85);\n\n  if (!threshold) {\n    return crypto.randomBytes(bytes);\n  }\n\n  if (this.bytesBufferIndex == null) {\n     this.bytesBufferIndex = -1;\n  }\n\n  if (this.bytesBufferIndex == bytesInBuffer) {\n    this.bytesBuffer = null;\n    this.bytesBufferIndex = -1;\n  }\n\n  // No buffered bytes available or index above threshold\n  if (this.bytesBufferIndex == -1 || this.bytesBufferIndex > threshold) {\n     \n    if (!this.isGeneratingBytes) {\n      this.isGeneratingBytes = true;\n      crypto.randomBytes(BUFFER_SIZE, function(err, bytes) {\n        self.bytesBuffer = bytes;\n        self.bytesBufferIndex = 0;\n        self.isGeneratingBytes = false;\n      }); \n    }\n    \n    // Fall back to sync call when no buffered bytes are available\n    if (this.bytesBufferIndex == -1) {\n      return crypto.randomBytes(bytes);\n    }\n  }\n  \n  var result = this.bytesBuffer.slice(bytes*this.bytesBufferIndex, bytes*(this.bytesBufferIndex+1)); \n  this.bytesBufferIndex++; \n  \n  return result;\n}\n\n/**\n * Generates a base64 id\n *\n * (Original version from socket.io <http://socket.io>)\n */\n\nBase64Id.prototype.generateId = function () {\n  var rand = Buffer.alloc(15); // multiple of 3 for base64\n  if (!rand.writeInt32BE) {\n    return Math.abs(Math.random() * Math.random() * Date.now() | 0).toString()\n      + Math.abs(Math.random() * Math.random() * Date.now() | 0).toString();\n  }\n  this.sequenceNumber = (this.sequenceNumber + 1) | 0;\n  rand.writeInt32BE(this.sequenceNumber, 11);\n  if (crypto.randomBytes) {\n    this.getRandomBytes(12).copy(rand);\n  } else {\n    // not secure for node 0.4\n    [0, 4, 8].forEach(function(i) {\n      rand.writeInt32BE(Math.random() * Math.pow(2, 32) | 0, i);\n    });\n  }\n  return rand.toString('base64').replace(/\\//g, '_').replace(/\\+/g, '-');\n};\n\n/**\n * Export\n */\n\nexports = module.exports = new Base64Id();\n\n\n//# sourceURL=webpack://txadmin/./node_modules/base64id/lib/base64id.js?")},"./node_modules/boxen/index.js":
/*!*************************************!*\
  !*** ./node_modules/boxen/index.js ***!
  \*************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nconst stringWidth = __webpack_require__(/*! string-width */ \"./node_modules/string-width/index.js\");\nconst chalk = __webpack_require__(/*! chalk */ \"./node_modules/chalk/source/index.js\");\nconst widestLine = __webpack_require__(/*! widest-line */ \"./node_modules/widest-line/index.js\");\nconst cliBoxes = __webpack_require__(/*! cli-boxes */ \"./node_modules/cli-boxes/index.js\");\nconst camelCase = __webpack_require__(/*! camelcase */ \"./node_modules/camelcase/index.js\");\nconst ansiAlign = __webpack_require__(/*! ansi-align */ \"./node_modules/ansi-align/index.js\");\nconst wrapAnsi = __webpack_require__(/*! wrap-ansi */ \"./node_modules/wrap-ansi/index.js\");\n\nconst NL = '\\n';\nconst PAD = ' ';\n\nconst terminalColumns = () => {\n\tconst {env, stdout, stderr} = process;\n\n\tif (stdout && stdout.columns) {\n\t\treturn stdout.columns;\n\t}\n\n\tif (stderr && stderr.columns) {\n\t\treturn stderr.columns;\n\t}\n\n\tif (env.COLUMNS) {\n\t\treturn Number.parseInt(env.COLUMNS, 10);\n\t}\n\n\treturn 80;\n};\n\nconst getObject = detail => {\n\treturn typeof detail === 'number' ? {\n\t\ttop: detail,\n\t\tright: detail * 3,\n\t\tbottom: detail,\n\t\tleft: detail * 3\n\t} : {\n\t\ttop: 0,\n\t\tright: 0,\n\t\tbottom: 0,\n\t\tleft: 0,\n\t\t...detail\n\t};\n};\n\nconst getBorderChars = borderStyle => {\n\tconst sides = [\n\t\t'topLeft',\n\t\t'topRight',\n\t\t'bottomRight',\n\t\t'bottomLeft',\n\t\t'vertical',\n\t\t'horizontal'\n\t];\n\n\tlet chararacters;\n\n\tif (typeof borderStyle === 'string') {\n\t\tchararacters = cliBoxes[borderStyle];\n\n\t\tif (!chararacters) {\n\t\t\tthrow new TypeError(`Invalid border style: ${borderStyle}`);\n\t\t}\n\t} else {\n\t\tfor (const side of sides) {\n\t\t\tif (!borderStyle[side] || typeof borderStyle[side] !== 'string') {\n\t\t\t\tthrow new TypeError(`Invalid border style: ${side}`);\n\t\t\t}\n\t\t}\n\n\t\tchararacters = borderStyle;\n\t}\n\n\treturn chararacters;\n};\n\nconst makeTitle = (text, horizontal, alignement) => {\n\tlet title = '';\n\n\tconst textWidth = stringWidth(text);\n\n\tswitch (alignement) {\n\t\tcase 'left':\n\t\t\ttitle = text + horizontal.slice(textWidth);\n\t\t\tbreak;\n\t\tcase 'right':\n\t\t\ttitle = horizontal.slice(textWidth) + text;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\thorizontal = horizontal.slice(textWidth);\n\n\t\t\tif (horizontal.length % 2 === 1) { // This is needed in case the length is odd\n\t\t\t\thorizontal = horizontal.slice(Math.floor(horizontal.length / 2));\n\t\t\t\ttitle = horizontal.slice(1) + text + horizontal; // We reduce the left part of one character to avoid the bar to go beyond its limit\n\t\t\t} else {\n\t\t\t\thorizontal = horizontal.slice(horizontal.length / 2);\n\t\t\t\ttitle = horizontal + text + horizontal;\n\t\t\t}\n\n\t\t\tbreak;\n\t}\n\n\treturn title;\n};\n\nconst makeContentText = (text, padding, columns, align) => {\n\ttext = ansiAlign(text, {align});\n\tlet lines = text.split(NL);\n\tconst textWidth = widestLine(text);\n\n\tconst max = columns - padding.left - padding.right;\n\n\tif (textWidth > max) {\n\t\tconst newLines = [];\n\t\tfor (const line of lines) {\n\t\t\tconst createdLines = wrapAnsi(line, max, {hard: true});\n\t\t\tconst alignedLines = ansiAlign(createdLines, {align});\n\t\t\tconst alignedLinesArray = alignedLines.split('\\n');\n\t\t\tconst longestLength = Math.max(...alignedLinesArray.map(s => stringWidth(s)));\n\n\t\t\tfor (const alignedLine of alignedLinesArray) {\n\t\t\t\tlet paddedLine;\n\t\t\t\tswitch (align) {\n\t\t\t\t\tcase 'center':\n\t\t\t\t\t\tpaddedLine = PAD.repeat((max - longestLength) / 2) + alignedLine;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'right':\n\t\t\t\t\t\tpaddedLine = PAD.repeat(max - longestLength) + alignedLine;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tpaddedLine = alignedLine;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tnewLines.push(paddedLine);\n\t\t\t}\n\t\t}\n\n\t\tlines = newLines;\n\t}\n\n\tif (align === 'center' && textWidth < max) {\n\t\tlines = lines.map(line => PAD.repeat((max - textWidth) / 2) + line);\n\t} else if (align === 'right' && textWidth < max) {\n\t\tlines = lines.map(line => PAD.repeat(max - textWidth) + line);\n\t}\n\n\tconst paddingLeft = PAD.repeat(padding.left);\n\tconst paddingRight = PAD.repeat(padding.right);\n\n\tlines = lines.map(line => paddingLeft + line + paddingRight);\n\n\tlines = lines.map(line => {\n\t\tif (columns - stringWidth(line) > 0) {\n\t\t\tswitch (align) {\n\t\t\t\tcase 'center':\n\t\t\t\t\treturn line + PAD.repeat(columns - stringWidth(line));\n\t\t\t\tcase 'right':\n\t\t\t\t\treturn line + PAD.repeat(columns - stringWidth(line));\n\t\t\t\tdefault:\n\t\t\t\t\treturn line + PAD.repeat(columns - stringWidth(line));\n\t\t\t}\n\t\t}\n\n\t\treturn line;\n\t});\n\n\tif (padding.top > 0) {\n\t\tlines = new Array(padding.top).fill(PAD.repeat(columns)).concat(lines);\n\t}\n\n\tif (padding.bottom > 0) {\n\t\tlines = lines.concat(new Array(padding.bottom).fill(PAD.repeat(columns)));\n\t}\n\n\treturn lines.join(NL);\n};\n\nconst isHex = color => color.match(/^#(?:[0-f]{3}){1,2}$/i);\nconst isColorValid = color => typeof color === 'string' && ((chalk[color]) || isHex(color));\nconst getColorFn = color => isHex(color) ? chalk.hex(color) : chalk[color];\nconst getBGColorFn = color => isHex(color) ? chalk.bgHex(color) : chalk[camelCase(['bg', color])];\n\nmodule.exports = (text, options) => {\n\toptions = {\n\t\tpadding: 0,\n\t\tborderStyle: 'single',\n\t\tdimBorder: false,\n\t\ttextAlignment: 'left',\n\t\tfloat: 'left',\n\t\ttitleAlignment: 'left',\n\t\t...options\n\t};\n\n\t// This option is deprecated\n\tif (options.align) {\n\t\toptions.textAlignment = options.align;\n\t}\n\n\tconst BORDERS_WIDTH = 2;\n\n\tif (options.borderColor && !isColorValid(options.borderColor)) {\n\t\tthrow new Error(`${options.borderColor} is not a valid borderColor`);\n\t}\n\n\tif (options.backgroundColor && !isColorValid(options.backgroundColor)) {\n\t\tthrow new Error(`${options.backgroundColor} is not a valid backgroundColor`);\n\t}\n\n\tconst chars = getBorderChars(options.borderStyle);\n\tconst padding = getObject(options.padding);\n\tconst margin = getObject(options.margin);\n\n\tconst colorizeBorder = border => {\n\t\tconst newBorder = options.borderColor ? getColorFn(options.borderColor)(border) : border;\n\t\treturn options.dimBorder ? chalk.dim(newBorder) : newBorder;\n\t};\n\n\tconst colorizeContent = content => options.backgroundColor ? getBGColorFn(options.backgroundColor)(content) : content;\n\n\tconst columns = terminalColumns();\n\n\tlet contentWidth = widestLine(wrapAnsi(text, columns - BORDERS_WIDTH, {hard: true, trim: false})) + padding.left + padding.right;\n\n\t// This prevents the title bar to exceed the console's width\n\tlet title = options.title && options.title.slice(0, columns - 4 - margin.left - margin.right);\n\n\tif (title) {\n\t\ttitle = ` ${title} `;\n\t\t// Make the box larger to fit a larger title\n\t\tif (stringWidth(title) > contentWidth) {\n\t\t\tcontentWidth = stringWidth(title);\n\t\t}\n\t}\n\n\tif ((margin.left && margin.right) && contentWidth + BORDERS_WIDTH + margin.left + margin.right > columns) {\n\t\t// Let's assume we have margins: left = 3, right = 5, in total = 8\n\t\tconst spaceForMargins = columns - contentWidth - BORDERS_WIDTH;\n\t\t// Let's assume we have space = 4\n\t\tconst multiplier = spaceForMargins / (margin.left + margin.right);\n\t\t// Here: multiplier = 4/8 = 0.5\n\t\tmargin.left = Math.max(0, Math.floor(margin.left * multiplier));\n\t\tmargin.right = Math.max(0, Math.floor(margin.right * multiplier));\n\t\t// Left: 3 * 0.5 = 1.5 -> 1\n\t\t// Right: 6 * 0.5 = 3\n\t}\n\n\t// Prevent content from exceeding the console's width\n\tcontentWidth = Math.min(contentWidth, columns - BORDERS_WIDTH - margin.left - margin.right);\n\n\ttext = makeContentText(text, padding, contentWidth, options.textAlignment);\n\n\tlet marginLeft = PAD.repeat(margin.left);\n\n\tif (options.float === 'center') {\n\t\tconst marginWidth = Math.max((columns - contentWidth - BORDERS_WIDTH) / 2, 0);\n\t\tmarginLeft = PAD.repeat(marginWidth);\n\t} else if (options.float === 'right') {\n\t\tconst marginWidth = Math.max(columns - contentWidth - margin.right - BORDERS_WIDTH, 0);\n\t\tmarginLeft = PAD.repeat(marginWidth);\n\t}\n\n\tconst horizontal = chars.horizontal.repeat(contentWidth);\n\tconst top = colorizeBorder(NL.repeat(margin.top) + marginLeft + chars.topLeft + (title ? makeTitle(title, horizontal, options.titleAlignment) : horizontal) + chars.topRight);\n\tconst bottom = colorizeBorder(marginLeft + chars.bottomLeft + horizontal + chars.bottomRight + NL.repeat(margin.bottom));\n\tconst side = colorizeBorder(chars.vertical);\n\n\tconst LINE_SEPARATOR = (contentWidth + BORDERS_WIDTH + margin.left >= columns) ? '' : NL;\n\n\tconst lines = text.split(NL);\n\n\tconst middle = lines.map(line => {\n\t\treturn marginLeft + side + colorizeContent(line) + side;\n\t}).join(LINE_SEPARATOR);\n\n\treturn top + LINE_SEPARATOR + middle + LINE_SEPARATOR + bottom;\n};\n\nmodule.exports._borderStyles = cliBoxes;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/boxen/index.js?")},"./node_modules/bufferutil/fallback.js":
/*!*********************************************!*\
  !*** ./node_modules/bufferutil/fallback.js ***!
  \*********************************************/module=>{"use strict";eval("\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nconst mask = (source, mask, output, offset, length) => {\n  for (var i = 0; i < length; i++) {\n    output[offset + i] = source[i] ^ mask[i & 3];\n  }\n};\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nconst unmask = (buffer, mask) => {\n  // Required until https://github.com/nodejs/node/issues/9006 is resolved.\n  const length = buffer.length;\n  for (var i = 0; i < length; i++) {\n    buffer[i] ^= mask[i & 3];\n  }\n};\n\nmodule.exports = { mask, unmask };\n\n\n//# sourceURL=webpack://txadmin/./node_modules/bufferutil/fallback.js?")},"./node_modules/bufferutil/index.js":
/*!******************************************!*\
  !*** ./node_modules/bufferutil/index.js ***!
  \******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('var __dirname = "node_modules\\\\bufferutil";\n\n\ntry {\n  module.exports = __webpack_require__(/*! node-gyp-build */ "./node_modules/node-gyp-build/index.js")(__dirname);\n} catch (e) {\n  module.exports = __webpack_require__(/*! ./fallback */ "./node_modules/bufferutil/fallback.js");\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/bufferutil/index.js?')},"./node_modules/bytes/index.js":
/*!*************************************!*\
  !*** ./node_modules/bytes/index.js ***!
  \*************************************/module=>{"use strict";eval("/*!\n * bytes\n * Copyright(c) 2012-2014 TJ Holowaychuk\n * Copyright(c) 2015 Jed Watson\n * MIT Licensed\n */\n\n\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = bytes;\nmodule.exports.format = format;\nmodule.exports.parse = parse;\n\n/**\n * Module variables.\n * @private\n */\n\nvar formatThousandsRegExp = /\\B(?=(\\d{3})+(?!\\d))/g;\n\nvar formatDecimalsRegExp = /(?:\\.0*|(\\.[^0]+)0+)$/;\n\nvar map = {\n  b:  1,\n  kb: 1 << 10,\n  mb: 1 << 20,\n  gb: 1 << 30,\n  tb: Math.pow(1024, 4),\n  pb: Math.pow(1024, 5),\n};\n\nvar parseRegExp = /^((-|\\+)?(\\d+(?:\\.\\d+)?)) *(kb|mb|gb|tb|pb)$/i;\n\n/**\n * Convert the given value in bytes into a string or parse to string to an integer in bytes.\n *\n * @param {string|number} value\n * @param {{\n *  case: [string],\n *  decimalPlaces: [number]\n *  fixedDecimals: [boolean]\n *  thousandsSeparator: [string]\n *  unitSeparator: [string]\n *  }} [options] bytes options.\n *\n * @returns {string|number|null}\n */\n\nfunction bytes(value, options) {\n  if (typeof value === 'string') {\n    return parse(value);\n  }\n\n  if (typeof value === 'number') {\n    return format(value, options);\n  }\n\n  return null;\n}\n\n/**\n * Format the given value in bytes into a string.\n *\n * If the value is negative, it is kept as such. If it is a float,\n * it is rounded.\n *\n * @param {number} value\n * @param {object} [options]\n * @param {number} [options.decimalPlaces=2]\n * @param {number} [options.fixedDecimals=false]\n * @param {string} [options.thousandsSeparator=]\n * @param {string} [options.unit=]\n * @param {string} [options.unitSeparator=]\n *\n * @returns {string|null}\n * @public\n */\n\nfunction format(value, options) {\n  if (!Number.isFinite(value)) {\n    return null;\n  }\n\n  var mag = Math.abs(value);\n  var thousandsSeparator = (options && options.thousandsSeparator) || '';\n  var unitSeparator = (options && options.unitSeparator) || '';\n  var decimalPlaces = (options && options.decimalPlaces !== undefined) ? options.decimalPlaces : 2;\n  var fixedDecimals = Boolean(options && options.fixedDecimals);\n  var unit = (options && options.unit) || '';\n\n  if (!unit || !map[unit.toLowerCase()]) {\n    if (mag >= map.pb) {\n      unit = 'PB';\n    } else if (mag >= map.tb) {\n      unit = 'TB';\n    } else if (mag >= map.gb) {\n      unit = 'GB';\n    } else if (mag >= map.mb) {\n      unit = 'MB';\n    } else if (mag >= map.kb) {\n      unit = 'KB';\n    } else {\n      unit = 'B';\n    }\n  }\n\n  var val = value / map[unit.toLowerCase()];\n  var str = val.toFixed(decimalPlaces);\n\n  if (!fixedDecimals) {\n    str = str.replace(formatDecimalsRegExp, '$1');\n  }\n\n  if (thousandsSeparator) {\n    str = str.split('.').map(function (s, i) {\n      return i === 0\n        ? s.replace(formatThousandsRegExp, thousandsSeparator)\n        : s\n    }).join('.');\n  }\n\n  return str + unitSeparator + unit;\n}\n\n/**\n * Parse the string value into an integer in bytes.\n *\n * If no unit is given, it is assumed the value is in bytes.\n *\n * @param {number|string} val\n *\n * @returns {number|null}\n * @public\n */\n\nfunction parse(val) {\n  if (typeof val === 'number' && !isNaN(val)) {\n    return val;\n  }\n\n  if (typeof val !== 'string') {\n    return null;\n  }\n\n  // Test if the string passed is valid\n  var results = parseRegExp.exec(val);\n  var floatValue;\n  var unit = 'b';\n\n  if (!results) {\n    // Nothing could be extracted from the given string\n    floatValue = parseInt(val, 10);\n    unit = 'b'\n  } else {\n    // Retrieve the value and the unit\n    floatValue = parseFloat(results[1]);\n    unit = results[4].toLowerCase();\n  }\n\n  if (isNaN(floatValue)) {\n    return null;\n  }\n\n  return Math.floor(map[unit] * floatValue);\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/bytes/index.js?")},"./node_modules/cache-content-type/index.js":
/*!**************************************************!*\
  !*** ./node_modules/cache-content-type/index.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst mimeTypes = __webpack_require__(/*! mime-types */ "./node_modules/mime-types/index.js");\nconst LRU = __webpack_require__(/*! ylru */ "./node_modules/ylru/index.js");\n\nconst typeLRUCache = new LRU(100);\n\nmodule.exports = type => {\n  let mimeType = typeLRUCache.get(type);\n  if (!mimeType) {\n    mimeType = mimeTypes.contentType(type);\n    typeLRUCache.set(type, mimeType);\n  }\n  return mimeType;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/cache-content-type/index.js?')},"./node_modules/cacheable-lookup/source/index.js":
/*!*******************************************************!*\
  !*** ./node_modules/cacheable-lookup/source/index.js ***!
  \*******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nconst {\n\tV4MAPPED,\n\tADDRCONFIG,\n\tALL,\n\tpromises: {\n\t\tResolver: AsyncResolver\n\t},\n\tlookup: dnsLookup\n} = __webpack_require__(/*! dns */ \"dns\");\nconst {promisify} = __webpack_require__(/*! util */ \"util\");\nconst os = __webpack_require__(/*! os */ \"os\");\n\nconst kCacheableLookupCreateConnection = Symbol('cacheableLookupCreateConnection');\nconst kCacheableLookupInstance = Symbol('cacheableLookupInstance');\nconst kExpires = Symbol('expires');\n\nconst supportsALL = typeof ALL === 'number';\n\nconst verifyAgent = agent => {\n\tif (!(agent && typeof agent.createConnection === 'function')) {\n\t\tthrow new Error('Expected an Agent instance as the first argument');\n\t}\n};\n\nconst map4to6 = entries => {\n\tfor (const entry of entries) {\n\t\tif (entry.family === 6) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tentry.address = `::ffff:${entry.address}`;\n\t\tentry.family = 6;\n\t}\n};\n\nconst getIfaceInfo = () => {\n\tlet has4 = false;\n\tlet has6 = false;\n\n\tfor (const device of Object.values(os.networkInterfaces())) {\n\t\tfor (const iface of device) {\n\t\t\tif (iface.internal) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (iface.family === 'IPv6') {\n\t\t\t\thas6 = true;\n\t\t\t} else {\n\t\t\t\thas4 = true;\n\t\t\t}\n\n\t\t\tif (has4 && has6) {\n\t\t\t\treturn {has4, has6};\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {has4, has6};\n};\n\nconst isIterable = map => {\n\treturn Symbol.iterator in map;\n};\n\nconst ttl = {ttl: true};\nconst all = {all: true};\n\nclass CacheableLookup {\n\tconstructor({\n\t\tcache = new Map(),\n\t\tmaxTtl = Infinity,\n\t\tfallbackDuration = 3600,\n\t\terrorTtl = 0.15,\n\t\tresolver = new AsyncResolver(),\n\t\tlookup = dnsLookup\n\t} = {}) {\n\t\tthis.maxTtl = maxTtl;\n\t\tthis.errorTtl = errorTtl;\n\n\t\tthis._cache = cache;\n\t\tthis._resolver = resolver;\n\t\tthis._dnsLookup = promisify(lookup);\n\n\t\tif (this._resolver instanceof AsyncResolver) {\n\t\t\tthis._resolve4 = this._resolver.resolve4.bind(this._resolver);\n\t\t\tthis._resolve6 = this._resolver.resolve6.bind(this._resolver);\n\t\t} else {\n\t\t\tthis._resolve4 = promisify(this._resolver.resolve4.bind(this._resolver));\n\t\t\tthis._resolve6 = promisify(this._resolver.resolve6.bind(this._resolver));\n\t\t}\n\n\t\tthis._iface = getIfaceInfo();\n\n\t\tthis._pending = {};\n\t\tthis._nextRemovalTime = false;\n\t\tthis._hostnamesToFallback = new Set();\n\n\t\tif (fallbackDuration < 1) {\n\t\t\tthis._fallback = false;\n\t\t} else {\n\t\t\tthis._fallback = true;\n\n\t\t\tconst interval = setInterval(() => {\n\t\t\t\tthis._hostnamesToFallback.clear();\n\t\t\t}, fallbackDuration * 1000);\n\n\t\t\t/* istanbul ignore next: There is no `interval.unref()` when running inside an Electron renderer */\n\t\t\tif (interval.unref) {\n\t\t\t\tinterval.unref();\n\t\t\t}\n\t\t}\n\n\t\tthis.lookup = this.lookup.bind(this);\n\t\tthis.lookupAsync = this.lookupAsync.bind(this);\n\t}\n\n\tset servers(servers) {\n\t\tthis.clear();\n\n\t\tthis._resolver.setServers(servers);\n\t}\n\n\tget servers() {\n\t\treturn this._resolver.getServers();\n\t}\n\n\tlookup(hostname, options, callback) {\n\t\tif (typeof options === 'function') {\n\t\t\tcallback = options;\n\t\t\toptions = {};\n\t\t} else if (typeof options === 'number') {\n\t\t\toptions = {\n\t\t\t\tfamily: options\n\t\t\t};\n\t\t}\n\n\t\tif (!callback) {\n\t\t\tthrow new Error('Callback must be a function.');\n\t\t}\n\n\t\t// eslint-disable-next-line promise/prefer-await-to-then\n\t\tthis.lookupAsync(hostname, options).then(result => {\n\t\t\tif (options.all) {\n\t\t\t\tcallback(null, result);\n\t\t\t} else {\n\t\t\t\tcallback(null, result.address, result.family, result.expires, result.ttl);\n\t\t\t}\n\t\t}, callback);\n\t}\n\n\tasync lookupAsync(hostname, options = {}) {\n\t\tif (typeof options === 'number') {\n\t\t\toptions = {\n\t\t\t\tfamily: options\n\t\t\t};\n\t\t}\n\n\t\tlet cached = await this.query(hostname);\n\n\t\tif (options.family === 6) {\n\t\t\tconst filtered = cached.filter(entry => entry.family === 6);\n\n\t\t\tif (options.hints & V4MAPPED) {\n\t\t\t\tif ((supportsALL && options.hints & ALL) || filtered.length === 0) {\n\t\t\t\t\tmap4to6(cached);\n\t\t\t\t} else {\n\t\t\t\t\tcached = filtered;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcached = filtered;\n\t\t\t}\n\t\t} else if (options.family === 4) {\n\t\t\tcached = cached.filter(entry => entry.family === 4);\n\t\t}\n\n\t\tif (options.hints & ADDRCONFIG) {\n\t\t\tconst {_iface} = this;\n\t\t\tcached = cached.filter(entry => entry.family === 6 ? _iface.has6 : _iface.has4);\n\t\t}\n\n\t\tif (cached.length === 0) {\n\t\t\tconst error = new Error(`cacheableLookup ENOTFOUND ${hostname}`);\n\t\t\terror.code = 'ENOTFOUND';\n\t\t\terror.hostname = hostname;\n\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (options.all) {\n\t\t\treturn cached;\n\t\t}\n\n\t\treturn cached[0];\n\t}\n\n\tasync query(hostname) {\n\t\tlet cached = await this._cache.get(hostname);\n\n\t\tif (!cached) {\n\t\t\tconst pending = this._pending[hostname];\n\n\t\t\tif (pending) {\n\t\t\t\tcached = await pending;\n\t\t\t} else {\n\t\t\t\tconst newPromise = this.queryAndCache(hostname);\n\t\t\t\tthis._pending[hostname] = newPromise;\n\n\t\t\t\ttry {\n\t\t\t\t\tcached = await newPromise;\n\t\t\t\t} finally {\n\t\t\t\t\tdelete this._pending[hostname];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tcached = cached.map(entry => {\n\t\t\treturn {...entry};\n\t\t});\n\n\t\treturn cached;\n\t}\n\n\tasync _resolve(hostname) {\n\t\tconst wrap = async promise => {\n\t\t\ttry {\n\t\t\t\treturn await promise;\n\t\t\t} catch (error) {\n\t\t\t\tif (error.code === 'ENODATA' || error.code === 'ENOTFOUND') {\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t};\n\n\t\t// ANY is unsafe as it doesn't trigger new queries in the underlying server.\n\t\tconst [A, AAAA] = await Promise.all([\n\t\t\tthis._resolve4(hostname, ttl),\n\t\t\tthis._resolve6(hostname, ttl)\n\t\t].map(promise => wrap(promise)));\n\n\t\tlet aTtl = 0;\n\t\tlet aaaaTtl = 0;\n\t\tlet cacheTtl = 0;\n\n\t\tconst now = Date.now();\n\n\t\tfor (const entry of A) {\n\t\t\tentry.family = 4;\n\t\t\tentry.expires = now + (entry.ttl * 1000);\n\n\t\t\taTtl = Math.max(aTtl, entry.ttl);\n\t\t}\n\n\t\tfor (const entry of AAAA) {\n\t\t\tentry.family = 6;\n\t\t\tentry.expires = now + (entry.ttl * 1000);\n\n\t\t\taaaaTtl = Math.max(aaaaTtl, entry.ttl);\n\t\t}\n\n\t\tif (A.length > 0) {\n\t\t\tif (AAAA.length > 0) {\n\t\t\t\tcacheTtl = Math.min(aTtl, aaaaTtl);\n\t\t\t} else {\n\t\t\t\tcacheTtl = aTtl;\n\t\t\t}\n\t\t} else {\n\t\t\tcacheTtl = aaaaTtl;\n\t\t}\n\n\t\treturn {\n\t\t\tentries: [\n\t\t\t\t...A,\n\t\t\t\t...AAAA\n\t\t\t],\n\t\t\tcacheTtl\n\t\t};\n\t}\n\n\tasync _lookup(hostname) {\n\t\ttry {\n\t\t\tconst entries = await this._dnsLookup(hostname, {\n\t\t\t\tall: true\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tentries,\n\t\t\t\tcacheTtl: 0\n\t\t\t};\n\t\t} catch (_) {\n\t\t\treturn {\n\t\t\t\tentries: [],\n\t\t\t\tcacheTtl: 0\n\t\t\t};\n\t\t}\n\t}\n\n\tasync _set(hostname, data, cacheTtl) {\n\t\tif (this.maxTtl > 0 && cacheTtl > 0) {\n\t\t\tcacheTtl = Math.min(cacheTtl, this.maxTtl) * 1000;\n\t\t\tdata[kExpires] = Date.now() + cacheTtl;\n\n\t\t\ttry {\n\t\t\t\tawait this._cache.set(hostname, data, cacheTtl);\n\t\t\t} catch (error) {\n\t\t\t\tthis.lookupAsync = async () => {\n\t\t\t\t\tconst cacheError = new Error('Cache Error. Please recreate the CacheableLookup instance.');\n\t\t\t\t\tcacheError.cause = error;\n\n\t\t\t\t\tthrow cacheError;\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (isIterable(this._cache)) {\n\t\t\t\tthis._tick(cacheTtl);\n\t\t\t}\n\t\t}\n\t}\n\n\tasync queryAndCache(hostname) {\n\t\tif (this._hostnamesToFallback.has(hostname)) {\n\t\t\treturn this._dnsLookup(hostname, all);\n\t\t}\n\n\t\tlet query = await this._resolve(hostname);\n\n\t\tif (query.entries.length === 0 && this._fallback) {\n\t\t\tquery = await this._lookup(hostname);\n\n\t\t\tif (query.entries.length !== 0) {\n\t\t\t\t// Use `dns.lookup(...)` for that particular hostname\n\t\t\t\tthis._hostnamesToFallback.add(hostname);\n\t\t\t}\n\t\t}\n\n\t\tconst cacheTtl = query.entries.length === 0 ? this.errorTtl : query.cacheTtl;\n\t\tawait this._set(hostname, query.entries, cacheTtl);\n\n\t\treturn query.entries;\n\t}\n\n\t_tick(ms) {\n\t\tconst nextRemovalTime = this._nextRemovalTime;\n\n\t\tif (!nextRemovalTime || ms < nextRemovalTime) {\n\t\t\tclearTimeout(this._removalTimeout);\n\n\t\t\tthis._nextRemovalTime = ms;\n\n\t\t\tthis._removalTimeout = setTimeout(() => {\n\t\t\t\tthis._nextRemovalTime = false;\n\n\t\t\t\tlet nextExpiry = Infinity;\n\n\t\t\t\tconst now = Date.now();\n\n\t\t\t\tfor (const [hostname, entries] of this._cache) {\n\t\t\t\t\tconst expires = entries[kExpires];\n\n\t\t\t\t\tif (now >= expires) {\n\t\t\t\t\t\tthis._cache.delete(hostname);\n\t\t\t\t\t} else if (expires < nextExpiry) {\n\t\t\t\t\t\tnextExpiry = expires;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (nextExpiry !== Infinity) {\n\t\t\t\t\tthis._tick(nextExpiry - now);\n\t\t\t\t}\n\t\t\t}, ms);\n\n\t\t\t/* istanbul ignore next: There is no `timeout.unref()` when running inside an Electron renderer */\n\t\t\tif (this._removalTimeout.unref) {\n\t\t\t\tthis._removalTimeout.unref();\n\t\t\t}\n\t\t}\n\t}\n\n\tinstall(agent) {\n\t\tverifyAgent(agent);\n\n\t\tif (kCacheableLookupCreateConnection in agent) {\n\t\t\tthrow new Error('CacheableLookup has been already installed');\n\t\t}\n\n\t\tagent[kCacheableLookupCreateConnection] = agent.createConnection;\n\t\tagent[kCacheableLookupInstance] = this;\n\n\t\tagent.createConnection = (options, callback) => {\n\t\t\tif (!('lookup' in options)) {\n\t\t\t\toptions.lookup = this.lookup;\n\t\t\t}\n\n\t\t\treturn agent[kCacheableLookupCreateConnection](options, callback);\n\t\t};\n\t}\n\n\tuninstall(agent) {\n\t\tverifyAgent(agent);\n\n\t\tif (agent[kCacheableLookupCreateConnection]) {\n\t\t\tif (agent[kCacheableLookupInstance] !== this) {\n\t\t\t\tthrow new Error('The agent is not owned by this CacheableLookup instance');\n\t\t\t}\n\n\t\t\tagent.createConnection = agent[kCacheableLookupCreateConnection];\n\n\t\t\tdelete agent[kCacheableLookupCreateConnection];\n\t\t\tdelete agent[kCacheableLookupInstance];\n\t\t}\n\t}\n\n\tupdateInterfaceInfo() {\n\t\tconst {_iface} = this;\n\n\t\tthis._iface = getIfaceInfo();\n\n\t\tif ((_iface.has4 && !this._iface.has4) || (_iface.has6 && !this._iface.has6)) {\n\t\t\tthis._cache.clear();\n\t\t}\n\t}\n\n\tclear(hostname) {\n\t\tif (hostname) {\n\t\t\tthis._cache.delete(hostname);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._cache.clear();\n\t}\n}\n\nmodule.exports = CacheableLookup;\nmodule.exports[\"default\"] = CacheableLookup;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/cacheable-lookup/source/index.js?")},"./node_modules/cacheable-request/node_modules/get-stream/buffer-stream.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/cacheable-request/node_modules/get-stream/buffer-stream.js ***!
  \*********************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nconst {PassThrough: PassThroughStream} = __webpack_require__(/*! stream */ \"stream\");\n\nmodule.exports = options => {\n\toptions = {...options};\n\n\tconst {array} = options;\n\tlet {encoding} = options;\n\tconst isBuffer = encoding === 'buffer';\n\tlet objectMode = false;\n\n\tif (array) {\n\t\tobjectMode = !(encoding || isBuffer);\n\t} else {\n\t\tencoding = encoding || 'utf8';\n\t}\n\n\tif (isBuffer) {\n\t\tencoding = null;\n\t}\n\n\tconst stream = new PassThroughStream({objectMode});\n\n\tif (encoding) {\n\t\tstream.setEncoding(encoding);\n\t}\n\n\tlet length = 0;\n\tconst chunks = [];\n\n\tstream.on('data', chunk => {\n\t\tchunks.push(chunk);\n\n\t\tif (objectMode) {\n\t\t\tlength = chunks.length;\n\t\t} else {\n\t\t\tlength += chunk.length;\n\t\t}\n\t});\n\n\tstream.getBufferedValue = () => {\n\t\tif (array) {\n\t\t\treturn chunks;\n\t\t}\n\n\t\treturn isBuffer ? Buffer.concat(chunks, length) : chunks.join('');\n\t};\n\n\tstream.getBufferedLength = () => length;\n\n\treturn stream;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/cacheable-request/node_modules/get-stream/buffer-stream.js?")},"./node_modules/cacheable-request/node_modules/get-stream/index.js":
/*!*************************************************************************!*\
  !*** ./node_modules/cacheable-request/node_modules/get-stream/index.js ***!
  \*************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nconst {constants: BufferConstants} = __webpack_require__(/*! buffer */ \"buffer\");\nconst pump = __webpack_require__(/*! pump */ \"./node_modules/pump/index.js\");\nconst bufferStream = __webpack_require__(/*! ./buffer-stream */ \"./node_modules/cacheable-request/node_modules/get-stream/buffer-stream.js\");\n\nclass MaxBufferError extends Error {\n\tconstructor() {\n\t\tsuper('maxBuffer exceeded');\n\t\tthis.name = 'MaxBufferError';\n\t}\n}\n\nasync function getStream(inputStream, options) {\n\tif (!inputStream) {\n\t\treturn Promise.reject(new Error('Expected a stream'));\n\t}\n\n\toptions = {\n\t\tmaxBuffer: Infinity,\n\t\t...options\n\t};\n\n\tconst {maxBuffer} = options;\n\n\tlet stream;\n\tawait new Promise((resolve, reject) => {\n\t\tconst rejectPromise = error => {\n\t\t\t// Don't retrieve an oversized buffer.\n\t\t\tif (error && stream.getBufferedLength() <= BufferConstants.MAX_LENGTH) {\n\t\t\t\terror.bufferedData = stream.getBufferedValue();\n\t\t\t}\n\n\t\t\treject(error);\n\t\t};\n\n\t\tstream = pump(inputStream, bufferStream(options), error => {\n\t\t\tif (error) {\n\t\t\t\trejectPromise(error);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresolve();\n\t\t});\n\n\t\tstream.on('data', () => {\n\t\t\tif (stream.getBufferedLength() > maxBuffer) {\n\t\t\t\trejectPromise(new MaxBufferError());\n\t\t\t}\n\t\t});\n\t});\n\n\treturn stream.getBufferedValue();\n}\n\nmodule.exports = getStream;\n// TODO: Remove this for the next major release\nmodule.exports[\"default\"] = getStream;\nmodule.exports.buffer = (stream, options) => getStream(stream, {...options, encoding: 'buffer'});\nmodule.exports.array = (stream, options) => getStream(stream, {...options, array: true});\nmodule.exports.MaxBufferError = MaxBufferError;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/cacheable-request/node_modules/get-stream/index.js?")},"./node_modules/cacheable-request/src/index.js":
/*!*****************************************************!*\
  !*** ./node_modules/cacheable-request/src/index.js ***!
  \*****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst EventEmitter = __webpack_require__(/*! events */ \"events\");\nconst urlLib = __webpack_require__(/*! url */ \"url\");\nconst normalizeUrl = __webpack_require__(/*! normalize-url */ \"./node_modules/normalize-url/index.js\");\nconst getStream = __webpack_require__(/*! get-stream */ \"./node_modules/cacheable-request/node_modules/get-stream/index.js\");\nconst CachePolicy = __webpack_require__(/*! http-cache-semantics */ \"./node_modules/http-cache-semantics/index.js\");\nconst Response = __webpack_require__(/*! responselike */ \"./node_modules/responselike/src/index.js\");\nconst lowercaseKeys = __webpack_require__(/*! lowercase-keys */ \"./node_modules/lowercase-keys/index.js\");\nconst cloneResponse = __webpack_require__(/*! clone-response */ \"./node_modules/clone-response/src/index.js\");\nconst Keyv = __webpack_require__(/*! keyv */ \"./node_modules/keyv/src/index.js\");\n\nclass CacheableRequest {\n\tconstructor(request, cacheAdapter) {\n\t\tif (typeof request !== 'function') {\n\t\t\tthrow new TypeError('Parameter `request` must be a function');\n\t\t}\n\n\t\tthis.cache = new Keyv({\n\t\t\turi: typeof cacheAdapter === 'string' && cacheAdapter,\n\t\t\tstore: typeof cacheAdapter !== 'string' && cacheAdapter,\n\t\t\tnamespace: 'cacheable-request'\n\t\t});\n\n\t\treturn this.createCacheableRequest(request);\n\t}\n\n\tcreateCacheableRequest(request) {\n\t\treturn (opts, cb) => {\n\t\t\tlet url;\n\t\t\tif (typeof opts === 'string') {\n\t\t\t\turl = normalizeUrlObject(urlLib.parse(opts));\n\t\t\t\topts = {};\n\t\t\t} else if (opts instanceof urlLib.URL) {\n\t\t\t\turl = normalizeUrlObject(urlLib.parse(opts.toString()));\n\t\t\t\topts = {};\n\t\t\t} else {\n\t\t\t\tconst [pathname, ...searchParts] = (opts.path || '').split('?');\n\t\t\t\tconst search = searchParts.length > 0 ?\n\t\t\t\t\t`?${searchParts.join('?')}` :\n\t\t\t\t\t'';\n\t\t\t\turl = normalizeUrlObject({ ...opts, pathname, search });\n\t\t\t}\n\n\t\t\topts = {\n\t\t\t\theaders: {},\n\t\t\t\tmethod: 'GET',\n\t\t\t\tcache: true,\n\t\t\t\tstrictTtl: false,\n\t\t\t\tautomaticFailover: false,\n\t\t\t\t...opts,\n\t\t\t\t...urlObjectToRequestOptions(url)\n\t\t\t};\n\t\t\topts.headers = lowercaseKeys(opts.headers);\n\n\t\t\tconst ee = new EventEmitter();\n\t\t\tconst normalizedUrlString = normalizeUrl(\n\t\t\t\turlLib.format(url),\n\t\t\t\t{\n\t\t\t\t\tstripWWW: false,\n\t\t\t\t\tremoveTrailingSlash: false,\n\t\t\t\t\tstripAuthentication: false\n\t\t\t\t}\n\t\t\t);\n\t\t\tconst key = `${opts.method}:${normalizedUrlString}`;\n\t\t\tlet revalidate = false;\n\t\t\tlet madeRequest = false;\n\n\t\t\tconst makeRequest = opts => {\n\t\t\t\tmadeRequest = true;\n\t\t\t\tlet requestErrored = false;\n\t\t\t\tlet requestErrorCallback;\n\n\t\t\t\tconst requestErrorPromise = new Promise(resolve => {\n\t\t\t\t\trequestErrorCallback = () => {\n\t\t\t\t\t\tif (!requestErrored) {\n\t\t\t\t\t\t\trequestErrored = true;\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\tconst handler = response => {\n\t\t\t\t\tif (revalidate && !opts.forceRefresh) {\n\t\t\t\t\t\tresponse.status = response.statusCode;\n\t\t\t\t\t\tconst revalidatedPolicy = CachePolicy.fromObject(revalidate.cachePolicy).revalidatedPolicy(opts, response);\n\t\t\t\t\t\tif (!revalidatedPolicy.modified) {\n\t\t\t\t\t\t\tconst headers = revalidatedPolicy.policy.responseHeaders();\n\t\t\t\t\t\t\tresponse = new Response(revalidate.statusCode, headers, revalidate.body, revalidate.url);\n\t\t\t\t\t\t\tresponse.cachePolicy = revalidatedPolicy.policy;\n\t\t\t\t\t\t\tresponse.fromCache = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!response.fromCache) {\n\t\t\t\t\t\tresponse.cachePolicy = new CachePolicy(opts, response, opts);\n\t\t\t\t\t\tresponse.fromCache = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet clonedResponse;\n\t\t\t\t\tif (opts.cache && response.cachePolicy.storable()) {\n\t\t\t\t\t\tclonedResponse = cloneResponse(response);\n\n\t\t\t\t\t\t(async () => {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst bodyPromise = getStream.buffer(response);\n\n\t\t\t\t\t\t\t\tawait Promise.race([\n\t\t\t\t\t\t\t\t\trequestErrorPromise,\n\t\t\t\t\t\t\t\t\tnew Promise(resolve => response.once('end', resolve))\n\t\t\t\t\t\t\t\t]);\n\n\t\t\t\t\t\t\t\tif (requestErrored) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tconst body = await bodyPromise;\n\n\t\t\t\t\t\t\t\tconst value = {\n\t\t\t\t\t\t\t\t\tcachePolicy: response.cachePolicy.toObject(),\n\t\t\t\t\t\t\t\t\turl: response.url,\n\t\t\t\t\t\t\t\t\tstatusCode: response.fromCache ? revalidate.statusCode : response.statusCode,\n\t\t\t\t\t\t\t\t\tbody\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tlet ttl = opts.strictTtl ? response.cachePolicy.timeToLive() : undefined;\n\t\t\t\t\t\t\t\tif (opts.maxTtl) {\n\t\t\t\t\t\t\t\t\tttl = ttl ? Math.min(ttl, opts.maxTtl) : opts.maxTtl;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tawait this.cache.set(key, value, ttl);\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tee.emit('error', new CacheableRequest.CacheError(error));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})();\n\t\t\t\t\t} else if (opts.cache && revalidate) {\n\t\t\t\t\t\t(async () => {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tawait this.cache.delete(key);\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tee.emit('error', new CacheableRequest.CacheError(error));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})();\n\t\t\t\t\t}\n\n\t\t\t\t\tee.emit('response', clonedResponse || response);\n\t\t\t\t\tif (typeof cb === 'function') {\n\t\t\t\t\t\tcb(clonedResponse || response);\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\ttry {\n\t\t\t\t\tconst req = request(opts, handler);\n\t\t\t\t\treq.once('error', requestErrorCallback);\n\t\t\t\t\treq.once('abort', requestErrorCallback);\n\t\t\t\t\tee.emit('request', req);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tee.emit('error', new CacheableRequest.RequestError(error));\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t(async () => {\n\t\t\t\tconst get = async opts => {\n\t\t\t\t\tawait Promise.resolve();\n\n\t\t\t\t\tconst cacheEntry = opts.cache ? await this.cache.get(key) : undefined;\n\t\t\t\t\tif (typeof cacheEntry === 'undefined') {\n\t\t\t\t\t\treturn makeRequest(opts);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst policy = CachePolicy.fromObject(cacheEntry.cachePolicy);\n\t\t\t\t\tif (policy.satisfiesWithoutRevalidation(opts) && !opts.forceRefresh) {\n\t\t\t\t\t\tconst headers = policy.responseHeaders();\n\t\t\t\t\t\tconst response = new Response(cacheEntry.statusCode, headers, cacheEntry.body, cacheEntry.url);\n\t\t\t\t\t\tresponse.cachePolicy = policy;\n\t\t\t\t\t\tresponse.fromCache = true;\n\n\t\t\t\t\t\tee.emit('response', response);\n\t\t\t\t\t\tif (typeof cb === 'function') {\n\t\t\t\t\t\t\tcb(response);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\trevalidate = cacheEntry;\n\t\t\t\t\t\topts.headers = policy.revalidationHeaders(opts);\n\t\t\t\t\t\tmakeRequest(opts);\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tconst errorHandler = error => ee.emit('error', new CacheableRequest.CacheError(error));\n\t\t\t\tthis.cache.once('error', errorHandler);\n\t\t\t\tee.on('response', () => this.cache.removeListener('error', errorHandler));\n\n\t\t\t\ttry {\n\t\t\t\t\tawait get(opts);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (opts.automaticFailover && !madeRequest) {\n\t\t\t\t\t\tmakeRequest(opts);\n\t\t\t\t\t}\n\n\t\t\t\t\tee.emit('error', new CacheableRequest.CacheError(error));\n\t\t\t\t}\n\t\t\t})();\n\n\t\t\treturn ee;\n\t\t};\n\t}\n}\n\nfunction urlObjectToRequestOptions(url) {\n\tconst options = { ...url };\n\toptions.path = `${url.pathname || '/'}${url.search || ''}`;\n\tdelete options.pathname;\n\tdelete options.search;\n\treturn options;\n}\n\nfunction normalizeUrlObject(url) {\n\t// If url was parsed by url.parse or new URL:\n\t// - hostname will be set\n\t// - host will be hostname[:port]\n\t// - port will be set if it was explicit in the parsed string\n\t// Otherwise, url was from request options:\n\t// - hostname or host may be set\n\t// - host shall not have port encoded\n\treturn {\n\t\tprotocol: url.protocol,\n\t\tauth: url.auth,\n\t\thostname: url.hostname || url.host || 'localhost',\n\t\tport: url.port,\n\t\tpathname: url.pathname,\n\t\tsearch: url.search\n\t};\n}\n\nCacheableRequest.RequestError = class extends Error {\n\tconstructor(error) {\n\t\tsuper(error.message);\n\t\tthis.name = 'RequestError';\n\t\tObject.assign(this, error);\n\t}\n};\n\nCacheableRequest.CacheError = class extends Error {\n\tconstructor(error) {\n\t\tsuper(error.message);\n\t\tthis.name = 'CacheError';\n\t\tObject.assign(this, error);\n\t}\n};\n\nmodule.exports = CacheableRequest;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/cacheable-request/src/index.js?")},"./node_modules/call-bind/callBound.js":
/*!*********************************************!*\
  !*** ./node_modules/call-bind/callBound.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar GetIntrinsic = __webpack_require__(/*! get-intrinsic */ \"./node_modules/get-intrinsic/index.js\");\n\nvar callBind = __webpack_require__(/*! ./ */ \"./node_modules/call-bind/index.js\");\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/call-bind/callBound.js?")},"./node_modules/call-bind/index.js":
/*!*****************************************!*\
  !*** ./node_modules/call-bind/index.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar bind = __webpack_require__(/*! function-bind */ \"./node_modules/function-bind/index.js\");\nvar GetIntrinsic = __webpack_require__(/*! get-intrinsic */ \"./node_modules/get-intrinsic/index.js\");\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/call-bind/index.js?")},"./node_modules/camelcase/index.js":
/*!*****************************************!*\
  !*** ./node_modules/camelcase/index.js ***!
  \*****************************************/module=>{"use strict";eval("\n\nconst preserveCamelCase = (string, locale) => {\n\tlet isLastCharLower = false;\n\tlet isLastCharUpper = false;\n\tlet isLastLastCharUpper = false;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst character = string[i];\n\n\t\tif (isLastCharLower && /[\\p{Lu}]/u.test(character)) {\n\t\t\tstring = string.slice(0, i) + '-' + string.slice(i);\n\t\t\tisLastCharLower = false;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = true;\n\t\t\ti++;\n\t\t} else if (isLastCharUpper && isLastLastCharUpper && /[\\p{Ll}]/u.test(character)) {\n\t\t\tstring = string.slice(0, i - 1) + '-' + string.slice(i - 1);\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = false;\n\t\t\tisLastCharLower = true;\n\t\t} else {\n\t\t\tisLastCharLower = character.toLocaleLowerCase(locale) === character && character.toLocaleUpperCase(locale) !== character;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = character.toLocaleUpperCase(locale) === character && character.toLocaleLowerCase(locale) !== character;\n\t\t}\n\t}\n\n\treturn string;\n};\n\nconst preserveConsecutiveUppercase = input => {\n\treturn input.replace(/^[\\p{Lu}](?![\\p{Lu}])/gu, m1 => m1.toLowerCase());\n};\n\nconst postProcess = (input, options) => {\n\treturn input.replace(/[_.\\- ]+([\\p{Alpha}\\p{N}_]|$)/gu, (_, p1) => p1.toLocaleUpperCase(options.locale))\n\t\t.replace(/\\d+([\\p{Alpha}\\p{N}_]|$)/gu, m => m.toLocaleUpperCase(options.locale));\n};\n\nconst camelCase = (input, options) => {\n\tif (!(typeof input === 'string' || Array.isArray(input))) {\n\t\tthrow new TypeError('Expected the input to be `string | string[]`');\n\t}\n\n\toptions = {\n\t\tpascalCase: false,\n\t\tpreserveConsecutiveUppercase: false,\n\t\t...options\n\t};\n\n\tif (Array.isArray(input)) {\n\t\tinput = input.map(x => x.trim())\n\t\t\t.filter(x => x.length)\n\t\t\t.join('-');\n\t} else {\n\t\tinput = input.trim();\n\t}\n\n\tif (input.length === 0) {\n\t\treturn '';\n\t}\n\n\tif (input.length === 1) {\n\t\treturn options.pascalCase ? input.toLocaleUpperCase(options.locale) : input.toLocaleLowerCase(options.locale);\n\t}\n\n\tconst hasUpperCase = input !== input.toLocaleLowerCase(options.locale);\n\n\tif (hasUpperCase) {\n\t\tinput = preserveCamelCase(input, options.locale);\n\t}\n\n\tinput = input.replace(/^[_.\\- ]+/, '');\n\n\tif (options.preserveConsecutiveUppercase) {\n\t\tinput = preserveConsecutiveUppercase(input);\n\t} else {\n\t\tinput = input.toLocaleLowerCase();\n\t}\n\n\tif (options.pascalCase) {\n\t\tinput = input.charAt(0).toLocaleUpperCase(options.locale) + input.slice(1);\n\t}\n\n\treturn postProcess(input, options);\n};\n\nmodule.exports = camelCase;\n// TODO: Remove this for the next major release\nmodule.exports[\"default\"] = camelCase;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/camelcase/index.js?")},"./node_modules/chalk/source/index.js":
/*!********************************************!*\
  !*** ./node_modules/chalk/source/index.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nconst ansiStyles = __webpack_require__(/*! ansi-styles */ \"./node_modules/ansi-styles/index.js\");\nconst {stdout: stdoutColor, stderr: stderrColor} = __webpack_require__(/*! supports-color */ \"./node_modules/supports-color/index.js\");\nconst {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n} = __webpack_require__(/*! ./util */ \"./node_modules/chalk/source/util.js\");\n\nconst {isArray} = Array;\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m'\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nclass ChalkClass {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = {};\n\tapplyOptions(chalk, options);\n\n\tchalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);\n\n\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\tObject.setPrototypeOf(chalk.template, chalk);\n\n\tchalk.template.constructor = () => {\n\t\tthrow new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.');\n\t};\n\n\tchalk.template.Instance = ChalkClass;\n\n\treturn chalk.template;\n};\n\nfunction Chalk(options) {\n\treturn chalkFactory(options);\n}\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this._styler, true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t}\n};\n\nconst usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nfor (const model of usedModels) {\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this._generator.level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis._generator.level = level;\n\t\t}\n\t}\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\tconst builder = (...arguments_) => {\n\t\tif (isArray(arguments_[0]) && isArray(arguments_[0].raw)) {\n\t\t\t// Called as a template literal, for example: chalk.red`2 + 3 = {bold ${2+3}}`\n\t\t\treturn applyStyle(builder, chalkTag(builder, ...arguments_));\n\t\t}\n\n\t\t// Single argument is hot path, implicit coercion is faster than anything\n\t\t// eslint-disable-next-line no-implicit-coercion\n\t\treturn applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\t};\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder._generator = self;\n\tbuilder._styler = _styler;\n\tbuilder._isEmpty = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self._isEmpty ? '' : string;\n\t}\n\n\tlet styler = self._styler;\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.indexOf('\\u001B') !== -1) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nlet template;\nconst chalkTag = (chalk, ...strings) => {\n\tconst [firstString] = strings;\n\n\tif (!isArray(firstString) || !isArray(firstString.raw)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn strings.join(' ');\n\t}\n\n\tconst arguments_ = strings.slice(1);\n\tconst parts = [firstString.raw[0]];\n\n\tfor (let i = 1; i < firstString.length; i++) {\n\t\tparts.push(\n\t\t\tString(arguments_[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'),\n\t\t\tString(firstString.raw[i])\n\t\t);\n\t}\n\n\tif (template === undefined) {\n\t\ttemplate = __webpack_require__(/*! ./templates */ \"./node_modules/chalk/source/templates.js\");\n\t}\n\n\treturn template(chalk, parts.join(''));\n};\n\nObject.defineProperties(Chalk.prototype, styles);\n\nconst chalk = Chalk(); // eslint-disable-line new-cap\nchalk.supportsColor = stdoutColor;\nchalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap\nchalk.stderr.supportsColor = stderrColor;\n\nmodule.exports = chalk;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/chalk/source/index.js?")},"./node_modules/chalk/source/templates.js":
/*!************************************************!*\
  !*** ./node_modules/chalk/source/templates.js ***!
  \************************************************/module=>{"use strict";eval("\nconst TEMPLATE_REGEX = /(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tconst u = c[0] === 'u';\n\tconst bracket = c[1] === '{';\n\n\tif ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\tif (u && bracket) {\n\t\treturn String.fromCodePoint(parseInt(c.slice(2, -1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, arguments_) {\n\tconst results = [];\n\tconst chunks = arguments_.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tconst number = Number(chunk);\n\t\tif (!Number.isNaN(number)) {\n\t\t\tresults.push(number);\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const [styleName, styles] of Object.entries(enabled)) {\n\t\tif (!Array.isArray(styles)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!(styleName in current)) {\n\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t}\n\n\t\tcurrent = styles.length > 0 ? current[styleName](...styles) : current[styleName];\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, temporary) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttemporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => {\n\t\tif (escapeCharacter) {\n\t\t\tchunk.push(unescape(escapeCharacter));\n\t\t} else if (style) {\n\t\t\tconst string = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(character);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMessage);\n\t}\n\n\treturn chunks.join('');\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/chalk/source/templates.js?")},"./node_modules/chalk/source/util.js":
/*!*******************************************!*\
  !*** ./node_modules/chalk/source/util.js ***!
  \*******************************************/module=>{"use strict";eval("\n\nconst stringReplaceAll = (string, substring, replacer) => {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.substr(endIndex, index - endIndex) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nconst stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nmodule.exports = {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/chalk/source/util.js?")},"./node_modules/cli-boxes/index.js":
/*!*****************************************!*\
  !*** ./node_modules/cli-boxes/index.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\nconst cliBoxes = __webpack_require__(/*! ./boxes.json */ "./node_modules/cli-boxes/boxes.json");\n\nmodule.exports = cliBoxes;\n// TODO: Remove this for the next major release\nmodule.exports["default"] = cliBoxes;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/cli-boxes/index.js?')},"./node_modules/clone-response/src/index.js":
/*!**************************************************!*\
  !*** ./node_modules/clone-response/src/index.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst PassThrough = (__webpack_require__(/*! stream */ "stream").PassThrough);\nconst mimicResponse = __webpack_require__(/*! mimic-response */ "./node_modules/mimic-response/index.js");\n\nconst cloneResponse = response => {\n\tif (!(response && response.pipe)) {\n\t\tthrow new TypeError(\'Parameter `response` must be a response stream.\');\n\t}\n\n\tconst clone = new PassThrough();\n\tmimicResponse(response, clone);\n\n\treturn response.pipe(clone);\n};\n\nmodule.exports = cloneResponse;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/clone-response/src/index.js?')},"./node_modules/co-body/index.js":
/*!***************************************!*\
  !*** ./node_modules/co-body/index.js ***!
  \***************************************/(module,exports,__webpack_require__)=>{"use strict";eval('\n\nexports = module.exports = __webpack_require__(/*! ./lib/any */ "./node_modules/co-body/lib/any.js");\nexports.json = __webpack_require__(/*! ./lib/json */ "./node_modules/co-body/lib/json.js");\nexports.form = __webpack_require__(/*! ./lib/form */ "./node_modules/co-body/lib/form.js");\nexports.text = __webpack_require__(/*! ./lib/text */ "./node_modules/co-body/lib/text.js");\n\n\n//# sourceURL=webpack://txadmin/./node_modules/co-body/index.js?')},"./node_modules/co-body/lib/any.js":
/*!*****************************************!*\
  !*** ./node_modules/co-body/lib/any.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n/**\n * Module dependencies.\n */\n\nconst typeis = __webpack_require__(/*! type-is */ \"./node_modules/type-is/index.js\");\nconst json = __webpack_require__(/*! ./json */ \"./node_modules/co-body/lib/json.js\");\nconst form = __webpack_require__(/*! ./form */ \"./node_modules/co-body/lib/form.js\");\nconst text = __webpack_require__(/*! ./text */ \"./node_modules/co-body/lib/text.js\");\n\nconst jsonTypes = [ 'json', 'application/*+json', 'application/csp-report' ];\nconst formTypes = [ 'urlencoded' ];\nconst textTypes = [ 'text' ];\n\n/**\n * Return a Promise which parses form and json requests\n * depending on the Content-Type.\n *\n * Pass a node request or an object with `.req`,\n * such as a koa Context.\n *\n * @param {Request} req\n * @param {Options} [opts]\n * @return {Function}\n * @api public\n */\n\nmodule.exports = async function(req, opts) {\n  req = req.req || req;\n  opts = opts || {};\n\n  // json\n  const jsonType = opts.jsonTypes || jsonTypes;\n  if (typeis(req, jsonType)) return json(req, opts);\n\n  // form\n  const formType = opts.formTypes || formTypes;\n  if (typeis(req, formType)) return form(req, opts);\n\n  // text\n  const textType = opts.textTypes || textTypes;\n  if (typeis(req, textType)) return text(req, opts);\n\n  // invalid\n  const type = req.headers['content-type'] || '';\n  const message = type ? 'Unsupported content-type: ' + type : 'Missing content-type';\n  const err = new Error(message);\n  err.status = 415;\n  throw err;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/co-body/lib/any.js?")},"./node_modules/co-body/lib/form.js":
/*!******************************************!*\
  !*** ./node_modules/co-body/lib/form.js ***!
  \******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n/**\n * Module dependencies.\n */\n\nconst raw = __webpack_require__(/*! raw-body */ \"./node_modules/raw-body/index.js\");\nconst inflate = __webpack_require__(/*! inflation */ \"./node_modules/inflation/index.js\");\nconst qs = __webpack_require__(/*! qs */ \"./node_modules/qs/lib/index.js\");\nconst utils = __webpack_require__(/*! ./utils */ \"./node_modules/co-body/lib/utils.js\");\n\n/**\n * Return a Promise which parses x-www-form-urlencoded requests.\n *\n * Pass a node request or an object with `.req`,\n * such as a koa Context.\n *\n * @param {Request} req\n * @param {Options} [opts]\n * @return {Function}\n * @api public\n */\n\nmodule.exports = async function(req, opts) {\n  req = req.req || req;\n  opts = utils.clone(opts);\n  const queryString = opts.queryString || {};\n\n  // keep compatibility with qs@4\n  if (queryString.allowDots === undefined) queryString.allowDots = true;\n\n  // defaults\n  const len = req.headers['content-length'];\n  const encoding = req.headers['content-encoding'] || 'identity';\n  if (len && encoding === 'identity') opts.length = ~~len;\n  opts.encoding = opts.encoding || 'utf8';\n  opts.limit = opts.limit || '56kb';\n  opts.qs = opts.qs || qs;\n\n  const str = await raw(inflate(req), opts);\n  try {\n    const parsed = opts.qs.parse(str, queryString);\n    return opts.returnRawBody ? { parsed, raw: str } : parsed;\n  } catch (err) {\n    err.status = 400;\n    err.body = str;\n    throw err;\n  }\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/co-body/lib/form.js?")},"./node_modules/co-body/lib/json.js":
/*!******************************************!*\
  !*** ./node_modules/co-body/lib/json.js ***!
  \******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n/**\n * Module dependencies.\n */\n\nconst raw = __webpack_require__(/*! raw-body */ \"./node_modules/raw-body/index.js\");\nconst inflate = __webpack_require__(/*! inflation */ \"./node_modules/inflation/index.js\");\nconst utils = __webpack_require__(/*! ./utils */ \"./node_modules/co-body/lib/utils.js\");\n\n// Allowed whitespace is defined in RFC 7159\n// http://www.rfc-editor.org/rfc/rfc7159.txt\nconst strictJSONReg = /^[\\x20\\x09\\x0a\\x0d]*(\\[|\\{)/;\n\n/**\n * Return a Promise which parses json requests.\n *\n * Pass a node request or an object with `.req`,\n * such as a koa Context.\n *\n * @param {Request} req\n * @param {Options} [opts]\n * @return {Function}\n * @api public\n */\n\nmodule.exports = async function(req, opts) {\n  req = req.req || req;\n  opts = utils.clone(opts);\n\n  // defaults\n  const len = req.headers['content-length'];\n  const encoding = req.headers['content-encoding'] || 'identity';\n  if (len && encoding === 'identity') opts.length = ~~len;\n  opts.encoding = opts.encoding || 'utf8';\n  opts.limit = opts.limit || '1mb';\n  const strict = opts.strict !== false;\n\n  const str = await raw(inflate(req), opts);\n  try {\n    const parsed = parse(str);\n    return opts.returnRawBody ? { parsed, raw: str } : parsed;\n  } catch (err) {\n    err.status = 400;\n    err.body = str;\n    throw err;\n  }\n\n  function parse(str) {\n    if (!strict) return str ? JSON.parse(str) : str;\n    // strict mode always return object\n    if (!str) return {};\n    // strict JSON test\n    if (!strictJSONReg.test(str)) {\n      throw new SyntaxError('invalid JSON, only supports object and array');\n    }\n    return JSON.parse(str);\n  }\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/co-body/lib/json.js?")},"./node_modules/co-body/lib/text.js":
/*!******************************************!*\
  !*** ./node_modules/co-body/lib/text.js ***!
  \******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n/**\n * Module dependencies.\n */\n\nconst raw = __webpack_require__(/*! raw-body */ \"./node_modules/raw-body/index.js\");\nconst inflate = __webpack_require__(/*! inflation */ \"./node_modules/inflation/index.js\");\nconst utils = __webpack_require__(/*! ./utils */ \"./node_modules/co-body/lib/utils.js\");\n\n/**\n * Return a Promise which parses text/plain requests.\n *\n * Pass a node request or an object with `.req`,\n * such as a koa Context.\n *\n * @param {Request} req\n * @param {Options} [opts]\n * @return {Function}\n * @api public\n */\n\nmodule.exports = async function(req, opts) {\n  req = req.req || req;\n  opts = utils.clone(opts);\n\n  // defaults\n  const len = req.headers['content-length'];\n  const encoding = req.headers['content-encoding'] || 'identity';\n  if (len && encoding === 'identity') opts.length = ~~len;\n  opts.encoding = opts.encoding === undefined ? 'utf8' : opts.encoding;\n  opts.limit = opts.limit || '1mb';\n\n  const str = await raw(inflate(req), opts);\n  // ensure return the same format with json / form\n  return opts.returnRawBody ? { parsed: str, raw: str } : str;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/co-body/lib/text.js?")},"./node_modules/co-body/lib/utils.js":
/*!*******************************************!*\
  !*** ./node_modules/co-body/lib/utils.js ***!
  \*******************************************/(__unused_webpack_module,exports)=>{"use strict";eval("\n\n/**\n * Module dependencies.\n */\n\nexports.clone = function(opts) {\n  const options = {};\n  opts = opts || {};\n  for (const key in opts) {\n    options[key] = opts[key];\n  }\n  return options;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/co-body/lib/utils.js?")},"./node_modules/co/index.js":
/*!**********************************!*\
  !*** ./node_modules/co/index.js ***!
  \**********************************/module=>{eval("\n/**\n * slice() reference.\n */\n\nvar slice = Array.prototype.slice;\n\n/**\n * Expose `co`.\n */\n\nmodule.exports = co['default'] = co.co = co;\n\n/**\n * Wrap the given generator `fn` into a\n * function that returns a promise.\n * This is a separate function so that\n * every `co()` call doesn't create a new,\n * unnecessary closure.\n *\n * @param {GeneratorFunction} fn\n * @return {Function}\n * @api public\n */\n\nco.wrap = function (fn) {\n  createPromise.__generatorFunction__ = fn;\n  return createPromise;\n  function createPromise() {\n    return co.call(this, fn.apply(this, arguments));\n  }\n};\n\n/**\n * Execute the generator function or a generator\n * and return a promise.\n *\n * @param {Function} fn\n * @return {Promise}\n * @api public\n */\n\nfunction co(gen) {\n  var ctx = this;\n  var args = slice.call(arguments, 1)\n\n  // we wrap everything in a promise to avoid promise chaining,\n  // which leads to memory leak errors.\n  // see https://github.com/tj/co/issues/180\n  return new Promise(function(resolve, reject) {\n    if (typeof gen === 'function') gen = gen.apply(ctx, args);\n    if (!gen || typeof gen.next !== 'function') return resolve(gen);\n\n    onFulfilled();\n\n    /**\n     * @param {Mixed} res\n     * @return {Promise}\n     * @api private\n     */\n\n    function onFulfilled(res) {\n      var ret;\n      try {\n        ret = gen.next(res);\n      } catch (e) {\n        return reject(e);\n      }\n      next(ret);\n    }\n\n    /**\n     * @param {Error} err\n     * @return {Promise}\n     * @api private\n     */\n\n    function onRejected(err) {\n      var ret;\n      try {\n        ret = gen.throw(err);\n      } catch (e) {\n        return reject(e);\n      }\n      next(ret);\n    }\n\n    /**\n     * Get the next value in the generator,\n     * return a promise.\n     *\n     * @param {Object} ret\n     * @return {Promise}\n     * @api private\n     */\n\n    function next(ret) {\n      if (ret.done) return resolve(ret.value);\n      var value = toPromise.call(ctx, ret.value);\n      if (value && isPromise(value)) return value.then(onFulfilled, onRejected);\n      return onRejected(new TypeError('You may only yield a function, promise, generator, array, or object, '\n        + 'but the following object was passed: \"' + String(ret.value) + '\"'));\n    }\n  });\n}\n\n/**\n * Convert a `yield`ed value into a promise.\n *\n * @param {Mixed} obj\n * @return {Promise}\n * @api private\n */\n\nfunction toPromise(obj) {\n  if (!obj) return obj;\n  if (isPromise(obj)) return obj;\n  if (isGeneratorFunction(obj) || isGenerator(obj)) return co.call(this, obj);\n  if ('function' == typeof obj) return thunkToPromise.call(this, obj);\n  if (Array.isArray(obj)) return arrayToPromise.call(this, obj);\n  if (isObject(obj)) return objectToPromise.call(this, obj);\n  return obj;\n}\n\n/**\n * Convert a thunk to a promise.\n *\n * @param {Function}\n * @return {Promise}\n * @api private\n */\n\nfunction thunkToPromise(fn) {\n  var ctx = this;\n  return new Promise(function (resolve, reject) {\n    fn.call(ctx, function (err, res) {\n      if (err) return reject(err);\n      if (arguments.length > 2) res = slice.call(arguments, 1);\n      resolve(res);\n    });\n  });\n}\n\n/**\n * Convert an array of \"yieldables\" to a promise.\n * Uses `Promise.all()` internally.\n *\n * @param {Array} obj\n * @return {Promise}\n * @api private\n */\n\nfunction arrayToPromise(obj) {\n  return Promise.all(obj.map(toPromise, this));\n}\n\n/**\n * Convert an object of \"yieldables\" to a promise.\n * Uses `Promise.all()` internally.\n *\n * @param {Object} obj\n * @return {Promise}\n * @api private\n */\n\nfunction objectToPromise(obj){\n  var results = new obj.constructor();\n  var keys = Object.keys(obj);\n  var promises = [];\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    var promise = toPromise.call(this, obj[key]);\n    if (promise && isPromise(promise)) defer(promise, key);\n    else results[key] = obj[key];\n  }\n  return Promise.all(promises).then(function () {\n    return results;\n  });\n\n  function defer(promise, key) {\n    // predefine the key in the result\n    results[key] = undefined;\n    promises.push(promise.then(function (res) {\n      results[key] = res;\n    }));\n  }\n}\n\n/**\n * Check if `obj` is a promise.\n *\n * @param {Object} obj\n * @return {Boolean}\n * @api private\n */\n\nfunction isPromise(obj) {\n  return 'function' == typeof obj.then;\n}\n\n/**\n * Check if `obj` is a generator.\n *\n * @param {Mixed} obj\n * @return {Boolean}\n * @api private\n */\n\nfunction isGenerator(obj) {\n  return 'function' == typeof obj.next && 'function' == typeof obj.throw;\n}\n\n/**\n * Check if `obj` is a generator function.\n *\n * @param {Mixed} obj\n * @return {Boolean}\n * @api private\n */\nfunction isGeneratorFunction(obj) {\n  var constructor = obj.constructor;\n  if (!constructor) return false;\n  if ('GeneratorFunction' === constructor.name || 'GeneratorFunction' === constructor.displayName) return true;\n  return isGenerator(constructor.prototype);\n}\n\n/**\n * Check for plain object.\n *\n * @param {Mixed} val\n * @return {Boolean}\n * @api private\n */\n\nfunction isObject(val) {\n  return Object == val.constructor;\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/co/index.js?")},"./node_modules/color-convert/conversions.js":
/*!***************************************************!*\
  !*** ./node_modules/color-convert/conversions.js ***!
  \***************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = __webpack_require__(/*! color-name */ \"./node_modules/color-name/index.js\");\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n//       values that give correct `typeof` results).\n//       do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v;  g = n;  b = wh; break;\n\t\tcase 1: r = n;  g = v;  b = wh; break;\n\t\tcase 2: r = wh; g = v;  b = n; break;\n\t\tcase 3: r = wh; g = n;  b = v; break;\n\t\tcase 4: r = n;  g = wh; b = v; break;\n\t\tcase 5: r = v;  g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/color-convert/conversions.js?")},"./node_modules/color-convert/index.js":
/*!*********************************************!*\
  !*** ./node_modules/color-convert/index.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const conversions = __webpack_require__(/*! ./conversions */ \"./node_modules/color-convert/conversions.js\");\nconst route = __webpack_require__(/*! ./route */ \"./node_modules/color-convert/route.js\");\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/color-convert/index.js?")},"./node_modules/color-convert/route.js":
/*!*********************************************!*\
  !*** ./node_modules/color-convert/route.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const conversions = __webpack_require__(/*! ./conversions */ \"./node_modules/color-convert/conversions.js\");\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/color-convert/route.js?")},"./node_modules/color-name/index.js":
/*!******************************************!*\
  !*** ./node_modules/color-name/index.js ***!
  \******************************************/module=>{"use strict";eval('\r\n\r\nmodule.exports = {\r\n\t"aliceblue": [240, 248, 255],\r\n\t"antiquewhite": [250, 235, 215],\r\n\t"aqua": [0, 255, 255],\r\n\t"aquamarine": [127, 255, 212],\r\n\t"azure": [240, 255, 255],\r\n\t"beige": [245, 245, 220],\r\n\t"bisque": [255, 228, 196],\r\n\t"black": [0, 0, 0],\r\n\t"blanchedalmond": [255, 235, 205],\r\n\t"blue": [0, 0, 255],\r\n\t"blueviolet": [138, 43, 226],\r\n\t"brown": [165, 42, 42],\r\n\t"burlywood": [222, 184, 135],\r\n\t"cadetblue": [95, 158, 160],\r\n\t"chartreuse": [127, 255, 0],\r\n\t"chocolate": [210, 105, 30],\r\n\t"coral": [255, 127, 80],\r\n\t"cornflowerblue": [100, 149, 237],\r\n\t"cornsilk": [255, 248, 220],\r\n\t"crimson": [220, 20, 60],\r\n\t"cyan": [0, 255, 255],\r\n\t"darkblue": [0, 0, 139],\r\n\t"darkcyan": [0, 139, 139],\r\n\t"darkgoldenrod": [184, 134, 11],\r\n\t"darkgray": [169, 169, 169],\r\n\t"darkgreen": [0, 100, 0],\r\n\t"darkgrey": [169, 169, 169],\r\n\t"darkkhaki": [189, 183, 107],\r\n\t"darkmagenta": [139, 0, 139],\r\n\t"darkolivegreen": [85, 107, 47],\r\n\t"darkorange": [255, 140, 0],\r\n\t"darkorchid": [153, 50, 204],\r\n\t"darkred": [139, 0, 0],\r\n\t"darksalmon": [233, 150, 122],\r\n\t"darkseagreen": [143, 188, 143],\r\n\t"darkslateblue": [72, 61, 139],\r\n\t"darkslategray": [47, 79, 79],\r\n\t"darkslategrey": [47, 79, 79],\r\n\t"darkturquoise": [0, 206, 209],\r\n\t"darkviolet": [148, 0, 211],\r\n\t"deeppink": [255, 20, 147],\r\n\t"deepskyblue": [0, 191, 255],\r\n\t"dimgray": [105, 105, 105],\r\n\t"dimgrey": [105, 105, 105],\r\n\t"dodgerblue": [30, 144, 255],\r\n\t"firebrick": [178, 34, 34],\r\n\t"floralwhite": [255, 250, 240],\r\n\t"forestgreen": [34, 139, 34],\r\n\t"fuchsia": [255, 0, 255],\r\n\t"gainsboro": [220, 220, 220],\r\n\t"ghostwhite": [248, 248, 255],\r\n\t"gold": [255, 215, 0],\r\n\t"goldenrod": [218, 165, 32],\r\n\t"gray": [128, 128, 128],\r\n\t"green": [0, 128, 0],\r\n\t"greenyellow": [173, 255, 47],\r\n\t"grey": [128, 128, 128],\r\n\t"honeydew": [240, 255, 240],\r\n\t"hotpink": [255, 105, 180],\r\n\t"indianred": [205, 92, 92],\r\n\t"indigo": [75, 0, 130],\r\n\t"ivory": [255, 255, 240],\r\n\t"khaki": [240, 230, 140],\r\n\t"lavender": [230, 230, 250],\r\n\t"lavenderblush": [255, 240, 245],\r\n\t"lawngreen": [124, 252, 0],\r\n\t"lemonchiffon": [255, 250, 205],\r\n\t"lightblue": [173, 216, 230],\r\n\t"lightcoral": [240, 128, 128],\r\n\t"lightcyan": [224, 255, 255],\r\n\t"lightgoldenrodyellow": [250, 250, 210],\r\n\t"lightgray": [211, 211, 211],\r\n\t"lightgreen": [144, 238, 144],\r\n\t"lightgrey": [211, 211, 211],\r\n\t"lightpink": [255, 182, 193],\r\n\t"lightsalmon": [255, 160, 122],\r\n\t"lightseagreen": [32, 178, 170],\r\n\t"lightskyblue": [135, 206, 250],\r\n\t"lightslategray": [119, 136, 153],\r\n\t"lightslategrey": [119, 136, 153],\r\n\t"lightsteelblue": [176, 196, 222],\r\n\t"lightyellow": [255, 255, 224],\r\n\t"lime": [0, 255, 0],\r\n\t"limegreen": [50, 205, 50],\r\n\t"linen": [250, 240, 230],\r\n\t"magenta": [255, 0, 255],\r\n\t"maroon": [128, 0, 0],\r\n\t"mediumaquamarine": [102, 205, 170],\r\n\t"mediumblue": [0, 0, 205],\r\n\t"mediumorchid": [186, 85, 211],\r\n\t"mediumpurple": [147, 112, 219],\r\n\t"mediumseagreen": [60, 179, 113],\r\n\t"mediumslateblue": [123, 104, 238],\r\n\t"mediumspringgreen": [0, 250, 154],\r\n\t"mediumturquoise": [72, 209, 204],\r\n\t"mediumvioletred": [199, 21, 133],\r\n\t"midnightblue": [25, 25, 112],\r\n\t"mintcream": [245, 255, 250],\r\n\t"mistyrose": [255, 228, 225],\r\n\t"moccasin": [255, 228, 181],\r\n\t"navajowhite": [255, 222, 173],\r\n\t"navy": [0, 0, 128],\r\n\t"oldlace": [253, 245, 230],\r\n\t"olive": [128, 128, 0],\r\n\t"olivedrab": [107, 142, 35],\r\n\t"orange": [255, 165, 0],\r\n\t"orangered": [255, 69, 0],\r\n\t"orchid": [218, 112, 214],\r\n\t"palegoldenrod": [238, 232, 170],\r\n\t"palegreen": [152, 251, 152],\r\n\t"paleturquoise": [175, 238, 238],\r\n\t"palevioletred": [219, 112, 147],\r\n\t"papayawhip": [255, 239, 213],\r\n\t"peachpuff": [255, 218, 185],\r\n\t"peru": [205, 133, 63],\r\n\t"pink": [255, 192, 203],\r\n\t"plum": [221, 160, 221],\r\n\t"powderblue": [176, 224, 230],\r\n\t"purple": [128, 0, 128],\r\n\t"rebeccapurple": [102, 51, 153],\r\n\t"red": [255, 0, 0],\r\n\t"rosybrown": [188, 143, 143],\r\n\t"royalblue": [65, 105, 225],\r\n\t"saddlebrown": [139, 69, 19],\r\n\t"salmon": [250, 128, 114],\r\n\t"sandybrown": [244, 164, 96],\r\n\t"seagreen": [46, 139, 87],\r\n\t"seashell": [255, 245, 238],\r\n\t"sienna": [160, 82, 45],\r\n\t"silver": [192, 192, 192],\r\n\t"skyblue": [135, 206, 235],\r\n\t"slateblue": [106, 90, 205],\r\n\t"slategray": [112, 128, 144],\r\n\t"slategrey": [112, 128, 144],\r\n\t"snow": [255, 250, 250],\r\n\t"springgreen": [0, 255, 127],\r\n\t"steelblue": [70, 130, 180],\r\n\t"tan": [210, 180, 140],\r\n\t"teal": [0, 128, 128],\r\n\t"thistle": [216, 191, 216],\r\n\t"tomato": [255, 99, 71],\r\n\t"turquoise": [64, 224, 208],\r\n\t"violet": [238, 130, 238],\r\n\t"wheat": [245, 222, 179],\r\n\t"white": [255, 255, 255],\r\n\t"whitesmoke": [245, 245, 245],\r\n\t"yellow": [255, 255, 0],\r\n\t"yellowgreen": [154, 205, 50]\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./node_modules/color-name/index.js?')},"./node_modules/combined-stream/lib/combined_stream.js":
/*!*************************************************************!*\
  !*** ./node_modules/combined-stream/lib/combined_stream.js ***!
  \*************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var util = __webpack_require__(/*! util */ \"util\");\nvar Stream = (__webpack_require__(/*! stream */ \"stream\").Stream);\nvar DelayedStream = __webpack_require__(/*! delayed-stream */ \"./node_modules/delayed-stream/lib/delayed_stream.js\");\n\nmodule.exports = CombinedStream;\nfunction CombinedStream() {\n  this.writable = false;\n  this.readable = true;\n  this.dataSize = 0;\n  this.maxDataSize = 2 * 1024 * 1024;\n  this.pauseStreams = true;\n\n  this._released = false;\n  this._streams = [];\n  this._currentStream = null;\n  this._insideLoop = false;\n  this._pendingNext = false;\n}\nutil.inherits(CombinedStream, Stream);\n\nCombinedStream.create = function(options) {\n  var combinedStream = new this();\n\n  options = options || {};\n  for (var option in options) {\n    combinedStream[option] = options[option];\n  }\n\n  return combinedStream;\n};\n\nCombinedStream.isStreamLike = function(stream) {\n  return (typeof stream !== 'function')\n    && (typeof stream !== 'string')\n    && (typeof stream !== 'boolean')\n    && (typeof stream !== 'number')\n    && (!Buffer.isBuffer(stream));\n};\n\nCombinedStream.prototype.append = function(stream) {\n  var isStreamLike = CombinedStream.isStreamLike(stream);\n\n  if (isStreamLike) {\n    if (!(stream instanceof DelayedStream)) {\n      var newStream = DelayedStream.create(stream, {\n        maxDataSize: Infinity,\n        pauseStream: this.pauseStreams,\n      });\n      stream.on('data', this._checkDataSize.bind(this));\n      stream = newStream;\n    }\n\n    this._handleErrors(stream);\n\n    if (this.pauseStreams) {\n      stream.pause();\n    }\n  }\n\n  this._streams.push(stream);\n  return this;\n};\n\nCombinedStream.prototype.pipe = function(dest, options) {\n  Stream.prototype.pipe.call(this, dest, options);\n  this.resume();\n  return dest;\n};\n\nCombinedStream.prototype._getNext = function() {\n  this._currentStream = null;\n\n  if (this._insideLoop) {\n    this._pendingNext = true;\n    return; // defer call\n  }\n\n  this._insideLoop = true;\n  try {\n    do {\n      this._pendingNext = false;\n      this._realGetNext();\n    } while (this._pendingNext);\n  } finally {\n    this._insideLoop = false;\n  }\n};\n\nCombinedStream.prototype._realGetNext = function() {\n  var stream = this._streams.shift();\n\n\n  if (typeof stream == 'undefined') {\n    this.end();\n    return;\n  }\n\n  if (typeof stream !== 'function') {\n    this._pipeNext(stream);\n    return;\n  }\n\n  var getStream = stream;\n  getStream(function(stream) {\n    var isStreamLike = CombinedStream.isStreamLike(stream);\n    if (isStreamLike) {\n      stream.on('data', this._checkDataSize.bind(this));\n      this._handleErrors(stream);\n    }\n\n    this._pipeNext(stream);\n  }.bind(this));\n};\n\nCombinedStream.prototype._pipeNext = function(stream) {\n  this._currentStream = stream;\n\n  var isStreamLike = CombinedStream.isStreamLike(stream);\n  if (isStreamLike) {\n    stream.on('end', this._getNext.bind(this));\n    stream.pipe(this, {end: false});\n    return;\n  }\n\n  var value = stream;\n  this.write(value);\n  this._getNext();\n};\n\nCombinedStream.prototype._handleErrors = function(stream) {\n  var self = this;\n  stream.on('error', function(err) {\n    self._emitError(err);\n  });\n};\n\nCombinedStream.prototype.write = function(data) {\n  this.emit('data', data);\n};\n\nCombinedStream.prototype.pause = function() {\n  if (!this.pauseStreams) {\n    return;\n  }\n\n  if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause();\n  this.emit('pause');\n};\n\nCombinedStream.prototype.resume = function() {\n  if (!this._released) {\n    this._released = true;\n    this.writable = true;\n    this._getNext();\n  }\n\n  if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume();\n  this.emit('resume');\n};\n\nCombinedStream.prototype.end = function() {\n  this._reset();\n  this.emit('end');\n};\n\nCombinedStream.prototype.destroy = function() {\n  this._reset();\n  this.emit('close');\n};\n\nCombinedStream.prototype._reset = function() {\n  this.writable = false;\n  this._streams = [];\n  this._currentStream = null;\n};\n\nCombinedStream.prototype._checkDataSize = function() {\n  this._updateDataSize();\n  if (this.dataSize <= this.maxDataSize) {\n    return;\n  }\n\n  var message =\n    'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.';\n  this._emitError(new Error(message));\n};\n\nCombinedStream.prototype._updateDataSize = function() {\n  this.dataSize = 0;\n\n  var self = this;\n  this._streams.forEach(function(stream) {\n    if (!stream.dataSize) {\n      return;\n    }\n\n    self.dataSize += stream.dataSize;\n  });\n\n  if (this._currentStream && this._currentStream.dataSize) {\n    this.dataSize += this._currentStream.dataSize;\n  }\n};\n\nCombinedStream.prototype._emitError = function(err) {\n  this._reset();\n  this.emit('error', err);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/combined-stream/lib/combined_stream.js?")},"./node_modules/component-emitter/index.js":
/*!*************************************************!*\
  !*** ./node_modules/component-emitter/index.js ***!
  \*************************************************/module=>{eval("\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (true) {\r\n  module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n  if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n  for (var key in Emitter.prototype) {\r\n    obj[key] = Emitter.prototype[key];\r\n  }\r\n  return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n  this._callbacks = this._callbacks || {};\r\n  (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n    .push(fn);\r\n  return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n  function on() {\r\n    this.off(event, on);\r\n    fn.apply(this, arguments);\r\n  }\r\n\r\n  on.fn = fn;\r\n  this.on(event, on);\r\n  return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n  this._callbacks = this._callbacks || {};\r\n\r\n  // all\r\n  if (0 == arguments.length) {\r\n    this._callbacks = {};\r\n    return this;\r\n  }\r\n\r\n  // specific event\r\n  var callbacks = this._callbacks['$' + event];\r\n  if (!callbacks) return this;\r\n\r\n  // remove all handlers\r\n  if (1 == arguments.length) {\r\n    delete this._callbacks['$' + event];\r\n    return this;\r\n  }\r\n\r\n  // remove specific handler\r\n  var cb;\r\n  for (var i = 0; i < callbacks.length; i++) {\r\n    cb = callbacks[i];\r\n    if (cb === fn || cb.fn === fn) {\r\n      callbacks.splice(i, 1);\r\n      break;\r\n    }\r\n  }\r\n\r\n  // Remove event specific arrays for event types that no\r\n  // one is subscribed for to avoid memory leak.\r\n  if (callbacks.length === 0) {\r\n    delete this._callbacks['$' + event];\r\n  }\r\n\r\n  return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n  this._callbacks = this._callbacks || {};\r\n\r\n  var args = new Array(arguments.length - 1)\r\n    , callbacks = this._callbacks['$' + event];\r\n\r\n  for (var i = 1; i < arguments.length; i++) {\r\n    args[i - 1] = arguments[i];\r\n  }\r\n\r\n  if (callbacks) {\r\n    callbacks = callbacks.slice(0);\r\n    for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n      callbacks[i].apply(this, args);\r\n    }\r\n  }\r\n\r\n  return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n  this._callbacks = this._callbacks || {};\r\n  return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n  return !! this.listeners(event).length;\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./node_modules/component-emitter/index.js?")},"./node_modules/content-disposition/index.js":
/*!***************************************************!*\
  !*** ./node_modules/content-disposition/index.js ***!
  \***************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('/*!\n * content-disposition\n * Copyright(c) 2014-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = contentDisposition\nmodule.exports.parse = parse\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar basename = (__webpack_require__(/*! path */ "path").basename)\nvar Buffer = (__webpack_require__(/*! safe-buffer */ "./node_modules/content-disposition/node_modules/safe-buffer/index.js").Buffer)\n\n/**\n * RegExp to match non attr-char, *after* encodeURIComponent (i.e. not including "%")\n * @private\n */\n\nvar ENCODE_URL_ATTR_CHAR_REGEXP = /[\\x00-\\x20"\'()*,/:;<=>?@[\\\\\\]{}\\x7f]/g // eslint-disable-line no-control-regex\n\n/**\n * RegExp to match percent encoding escape.\n * @private\n */\n\nvar HEX_ESCAPE_REGEXP = /%[0-9A-Fa-f]{2}/\nvar HEX_ESCAPE_REPLACE_REGEXP = /%([0-9A-Fa-f]{2})/g\n\n/**\n * RegExp to match non-latin1 characters.\n * @private\n */\n\nvar NON_LATIN1_REGEXP = /[^\\x20-\\x7e\\xa0-\\xff]/g\n\n/**\n * RegExp to match quoted-pair in RFC 2616\n *\n * quoted-pair = "\\" CHAR\n * CHAR        = <any US-ASCII character (octets 0 - 127)>\n * @private\n */\n\nvar QESC_REGEXP = /\\\\([\\u0000-\\u007f])/g // eslint-disable-line no-control-regex\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 2616\n * @private\n */\n\nvar QUOTE_REGEXP = /([\\\\"])/g\n\n/**\n * RegExp for various RFC 2616 grammar\n *\n * parameter     = token "=" ( token | quoted-string )\n * token         = 1*<any CHAR except CTLs or separators>\n * separators    = "(" | ")" | "<" | ">" | "@"\n *               | "," | ";" | ":" | "\\" | <">\n *               | "/" | "[" | "]" | "?" | "="\n *               | "{" | "}" | SP | HT\n * quoted-string = ( <"> *(qdtext | quoted-pair ) <"> )\n * qdtext        = <any TEXT except <">>\n * quoted-pair   = "\\" CHAR\n * CHAR          = <any US-ASCII character (octets 0 - 127)>\n * TEXT          = <any OCTET except CTLs, but including LWS>\n * LWS           = [CRLF] 1*( SP | HT )\n * CRLF          = CR LF\n * CR            = <US-ASCII CR, carriage return (13)>\n * LF            = <US-ASCII LF, linefeed (10)>\n * SP            = <US-ASCII SP, space (32)>\n * HT            = <US-ASCII HT, horizontal-tab (9)>\n * CTL           = <any US-ASCII control character (octets 0 - 31) and DEL (127)>\n * OCTET         = <any 8-bit sequence of data>\n * @private\n */\n\nvar PARAM_REGEXP = /;[\\x09\\x20]*([!#$%&\'*+.0-9A-Z^_`a-z|~-]+)[\\x09\\x20]*=[\\x09\\x20]*("(?:[\\x20!\\x23-\\x5b\\x5d-\\x7e\\x80-\\xff]|\\\\[\\x20-\\x7e])*"|[!#$%&\'*+.0-9A-Z^_`a-z|~-]+)[\\x09\\x20]*/g // eslint-disable-line no-control-regex\nvar TEXT_REGEXP = /^[\\x20-\\x7e\\x80-\\xff]+$/\nvar TOKEN_REGEXP = /^[!#$%&\'*+.0-9A-Z^_`a-z|~-]+$/\n\n/**\n * RegExp for various RFC 5987 grammar\n *\n * ext-value     = charset  "\'" [ language ] "\'" value-chars\n * charset       = "UTF-8" / "ISO-8859-1" / mime-charset\n * mime-charset  = 1*mime-charsetc\n * mime-charsetc = ALPHA / DIGIT\n *               / "!" / "#" / "$" / "%" / "&"\n *               / "+" / "-" / "^" / "_" / "`"\n *               / "{" / "}" / "~"\n * language      = ( 2*3ALPHA [ extlang ] )\n *               / 4ALPHA\n *               / 5*8ALPHA\n * extlang       = *3( "-" 3ALPHA )\n * value-chars   = *( pct-encoded / attr-char )\n * pct-encoded   = "%" HEXDIG HEXDIG\n * attr-char     = ALPHA / DIGIT\n *               / "!" / "#" / "$" / "&" / "+" / "-" / "."\n *               / "^" / "_" / "`" / "|" / "~"\n * @private\n */\n\nvar EXT_VALUE_REGEXP = /^([A-Za-z0-9!#$%&+\\-^_`{}~]+)\'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)\'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+.^_`|~-])+)$/\n\n/**\n * RegExp for various RFC 6266 grammar\n *\n * disposition-type = "inline" | "attachment" | disp-ext-type\n * disp-ext-type    = token\n * disposition-parm = filename-parm | disp-ext-parm\n * filename-parm    = "filename" "=" value\n *                  | "filename*" "=" ext-value\n * disp-ext-parm    = token "=" value\n *                  | ext-token "=" ext-value\n * ext-token        = <the characters in token, followed by "*">\n * @private\n */\n\nvar DISPOSITION_TYPE_REGEXP = /^([!#$%&\'*+.0-9A-Z^_`a-z|~-]+)[\\x09\\x20]*(?:$|;)/ // eslint-disable-line no-control-regex\n\n/**\n * Create an attachment Content-Disposition header.\n *\n * @param {string} [filename]\n * @param {object} [options]\n * @param {string} [options.type=attachment]\n * @param {string|boolean} [options.fallback=true]\n * @return {string}\n * @public\n */\n\nfunction contentDisposition (filename, options) {\n  var opts = options || {}\n\n  // get type\n  var type = opts.type || \'attachment\'\n\n  // get parameters\n  var params = createparams(filename, opts.fallback)\n\n  // format into string\n  return format(new ContentDisposition(type, params))\n}\n\n/**\n * Create parameters object from filename and fallback.\n *\n * @param {string} [filename]\n * @param {string|boolean} [fallback=true]\n * @return {object}\n * @private\n */\n\nfunction createparams (filename, fallback) {\n  if (filename === undefined) {\n    return\n  }\n\n  var params = {}\n\n  if (typeof filename !== \'string\') {\n    throw new TypeError(\'filename must be a string\')\n  }\n\n  // fallback defaults to true\n  if (fallback === undefined) {\n    fallback = true\n  }\n\n  if (typeof fallback !== \'string\' && typeof fallback !== \'boolean\') {\n    throw new TypeError(\'fallback must be a string or boolean\')\n  }\n\n  if (typeof fallback === \'string\' && NON_LATIN1_REGEXP.test(fallback)) {\n    throw new TypeError(\'fallback must be ISO-8859-1 string\')\n  }\n\n  // restrict to file base name\n  var name = basename(filename)\n\n  // determine if name is suitable for quoted string\n  var isQuotedString = TEXT_REGEXP.test(name)\n\n  // generate fallback name\n  var fallbackName = typeof fallback !== \'string\'\n    ? fallback && getlatin1(name)\n    : basename(fallback)\n  var hasFallback = typeof fallbackName === \'string\' && fallbackName !== name\n\n  // set extended filename parameter\n  if (hasFallback || !isQuotedString || HEX_ESCAPE_REGEXP.test(name)) {\n    params[\'filename*\'] = name\n  }\n\n  // set filename parameter\n  if (isQuotedString || hasFallback) {\n    params.filename = hasFallback\n      ? fallbackName\n      : name\n  }\n\n  return params\n}\n\n/**\n * Format object to Content-Disposition header.\n *\n * @param {object} obj\n * @param {string} obj.type\n * @param {object} [obj.parameters]\n * @return {string}\n * @private\n */\n\nfunction format (obj) {\n  var parameters = obj.parameters\n  var type = obj.type\n\n  if (!type || typeof type !== \'string\' || !TOKEN_REGEXP.test(type)) {\n    throw new TypeError(\'invalid type\')\n  }\n\n  // start with normalized type\n  var string = String(type).toLowerCase()\n\n  // append parameters\n  if (parameters && typeof parameters === \'object\') {\n    var param\n    var params = Object.keys(parameters).sort()\n\n    for (var i = 0; i < params.length; i++) {\n      param = params[i]\n\n      var val = param.substr(-1) === \'*\'\n        ? ustring(parameters[param])\n        : qstring(parameters[param])\n\n      string += \'; \' + param + \'=\' + val\n    }\n  }\n\n  return string\n}\n\n/**\n * Decode a RFC 5987 field value (gracefully).\n *\n * @param {string} str\n * @return {string}\n * @private\n */\n\nfunction decodefield (str) {\n  var match = EXT_VALUE_REGEXP.exec(str)\n\n  if (!match) {\n    throw new TypeError(\'invalid extended field value\')\n  }\n\n  var charset = match[1].toLowerCase()\n  var encoded = match[2]\n  var value\n\n  // to binary string\n  var binary = encoded.replace(HEX_ESCAPE_REPLACE_REGEXP, pdecode)\n\n  switch (charset) {\n    case \'iso-8859-1\':\n      value = getlatin1(binary)\n      break\n    case \'utf-8\':\n      value = Buffer.from(binary, \'binary\').toString(\'utf8\')\n      break\n    default:\n      throw new TypeError(\'unsupported charset in extended field\')\n  }\n\n  return value\n}\n\n/**\n * Get ISO-8859-1 version of string.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction getlatin1 (val) {\n  // simple Unicode -> ISO-8859-1 transformation\n  return String(val).replace(NON_LATIN1_REGEXP, \'?\')\n}\n\n/**\n * Parse Content-Disposition header string.\n *\n * @param {string} string\n * @return {object}\n * @public\n */\n\nfunction parse (string) {\n  if (!string || typeof string !== \'string\') {\n    throw new TypeError(\'argument string is required\')\n  }\n\n  var match = DISPOSITION_TYPE_REGEXP.exec(string)\n\n  if (!match) {\n    throw new TypeError(\'invalid type format\')\n  }\n\n  // normalize type\n  var index = match[0].length\n  var type = match[1].toLowerCase()\n\n  var key\n  var names = []\n  var params = {}\n  var value\n\n  // calculate index to start at\n  index = PARAM_REGEXP.lastIndex = match[0].substr(-1) === \';\'\n    ? index - 1\n    : index\n\n  // match parameters\n  while ((match = PARAM_REGEXP.exec(string))) {\n    if (match.index !== index) {\n      throw new TypeError(\'invalid parameter format\')\n    }\n\n    index += match[0].length\n    key = match[1].toLowerCase()\n    value = match[2]\n\n    if (names.indexOf(key) !== -1) {\n      throw new TypeError(\'invalid duplicate parameter\')\n    }\n\n    names.push(key)\n\n    if (key.indexOf(\'*\') + 1 === key.length) {\n      // decode extended value\n      key = key.slice(0, -1)\n      value = decodefield(value)\n\n      // overwrite existing value\n      params[key] = value\n      continue\n    }\n\n    if (typeof params[key] === \'string\') {\n      continue\n    }\n\n    if (value[0] === \'"\') {\n      // remove quotes and escapes\n      value = value\n        .substr(1, value.length - 2)\n        .replace(QESC_REGEXP, \'$1\')\n    }\n\n    params[key] = value\n  }\n\n  if (index !== -1 && index !== string.length) {\n    throw new TypeError(\'invalid parameter format\')\n  }\n\n  return new ContentDisposition(type, params)\n}\n\n/**\n * Percent decode a single character.\n *\n * @param {string} str\n * @param {string} hex\n * @return {string}\n * @private\n */\n\nfunction pdecode (str, hex) {\n  return String.fromCharCode(parseInt(hex, 16))\n}\n\n/**\n * Percent encode a single character.\n *\n * @param {string} char\n * @return {string}\n * @private\n */\n\nfunction pencode (char) {\n  return \'%\' + String(char)\n    .charCodeAt(0)\n    .toString(16)\n    .toUpperCase()\n}\n\n/**\n * Quote a string for HTTP.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction qstring (val) {\n  var str = String(val)\n\n  return \'"\' + str.replace(QUOTE_REGEXP, \'\\\\$1\') + \'"\'\n}\n\n/**\n * Encode a Unicode string for HTTP (RFC 5987).\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction ustring (val) {\n  var str = String(val)\n\n  // percent encode as UTF-8\n  var encoded = encodeURIComponent(str)\n    .replace(ENCODE_URL_ATTR_CHAR_REGEXP, pencode)\n\n  return \'UTF-8\\\'\\\'\' + encoded\n}\n\n/**\n * Class for parsed Content-Disposition header for v8 optimization\n *\n * @public\n * @param {string} type\n * @param {object} parameters\n * @constructor\n */\n\nfunction ContentDisposition (type, parameters) {\n  this.type = type\n  this.parameters = parameters\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/content-disposition/index.js?')},"./node_modules/content-disposition/node_modules/safe-buffer/index.js":
/*!****************************************************************************!*\
  !*** ./node_modules/content-disposition/node_modules/safe-buffer/index.js ***!
  \****************************************************************************/(module,exports,__webpack_require__)=>{eval("/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = __webpack_require__(/*! buffer */ \"buffer\")\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/content-disposition/node_modules/safe-buffer/index.js?")},"./node_modules/content-type/index.js":
/*!********************************************!*\
  !*** ./node_modules/content-type/index.js ***!
  \********************************************/(__unused_webpack_module,exports)=>{"use strict";eval("/*!\n * content-type\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\n/**\n * RegExp to match *( \";\" parameter ) in RFC 7231 sec 3.1.1.1\n *\n * parameter     = token \"=\" ( token / quoted-string )\n * token         = 1*tchar\n * tchar         = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\"\n *               / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n *               / DIGIT / ALPHA\n *               ; any VCHAR, except delimiters\n * quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE\n * qdtext        = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text\n * obs-text      = %x80-FF\n * quoted-pair   = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n */\nvar PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *(\"(?:[\\u000b\\u0020\\u0021\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\u000b\\u0020-\\u00ff])*\"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g\nvar TEXT_REGEXP = /^[\\u000b\\u0020-\\u007e\\u0080-\\u00ff]+$/\nvar TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * RegExp to match quoted-pair in RFC 7230 sec 3.2.6\n *\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n * obs-text    = %x80-FF\n */\nvar QESC_REGEXP = /\\\\([\\u000b\\u0020-\\u00ff])/g\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 7230 sec 3.2.6\n */\nvar QUOTE_REGEXP = /([\\\\\"])/g\n\n/**\n * RegExp to match type in RFC 7231 sec 3.1.1.1\n *\n * media-type = type \"/\" subtype\n * type       = token\n * subtype    = token\n */\nvar TYPE_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * Module exports.\n * @public\n */\n\nexports.format = format\nexports.parse = parse\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @public\n */\n\nfunction format (obj) {\n  if (!obj || typeof obj !== 'object') {\n    throw new TypeError('argument obj is required')\n  }\n\n  var parameters = obj.parameters\n  var type = obj.type\n\n  if (!type || !TYPE_REGEXP.test(type)) {\n    throw new TypeError('invalid type')\n  }\n\n  var string = type\n\n  // append parameters\n  if (parameters && typeof parameters === 'object') {\n    var param\n    var params = Object.keys(parameters).sort()\n\n    for (var i = 0; i < params.length; i++) {\n      param = params[i]\n\n      if (!TOKEN_REGEXP.test(param)) {\n        throw new TypeError('invalid parameter name')\n      }\n\n      string += '; ' + param + '=' + qstring(parameters[param])\n    }\n  }\n\n  return string\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string|object} string\n * @return {Object}\n * @public\n */\n\nfunction parse (string) {\n  if (!string) {\n    throw new TypeError('argument string is required')\n  }\n\n  // support req/res-like objects as argument\n  var header = typeof string === 'object'\n    ? getcontenttype(string)\n    : string\n\n  if (typeof header !== 'string') {\n    throw new TypeError('argument string is required to be a string')\n  }\n\n  var index = header.indexOf(';')\n  var type = index !== -1\n    ? header.substr(0, index).trim()\n    : header.trim()\n\n  if (!TYPE_REGEXP.test(type)) {\n    throw new TypeError('invalid media type')\n  }\n\n  var obj = new ContentType(type.toLowerCase())\n\n  // parse parameters\n  if (index !== -1) {\n    var key\n    var match\n    var value\n\n    PARAM_REGEXP.lastIndex = index\n\n    while ((match = PARAM_REGEXP.exec(header))) {\n      if (match.index !== index) {\n        throw new TypeError('invalid parameter format')\n      }\n\n      index += match[0].length\n      key = match[1].toLowerCase()\n      value = match[2]\n\n      if (value[0] === '\"') {\n        // remove quotes and escapes\n        value = value\n          .substr(1, value.length - 2)\n          .replace(QESC_REGEXP, '$1')\n      }\n\n      obj.parameters[key] = value\n    }\n\n    if (index !== header.length) {\n      throw new TypeError('invalid parameter format')\n    }\n  }\n\n  return obj\n}\n\n/**\n * Get content-type from req/res objects.\n *\n * @param {object}\n * @return {Object}\n * @private\n */\n\nfunction getcontenttype (obj) {\n  var header\n\n  if (typeof obj.getHeader === 'function') {\n    // res-like\n    header = obj.getHeader('content-type')\n  } else if (typeof obj.headers === 'object') {\n    // req-like\n    header = obj.headers && obj.headers['content-type']\n  }\n\n  if (typeof header !== 'string') {\n    throw new TypeError('content-type header is missing from object')\n  }\n\n  return header\n}\n\n/**\n * Quote a string if necessary.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction qstring (val) {\n  var str = String(val)\n\n  // no need to quote tokens\n  if (TOKEN_REGEXP.test(str)) {\n    return str\n  }\n\n  if (str.length > 0 && !TEXT_REGEXP.test(str)) {\n    throw new TypeError('invalid parameter value')\n  }\n\n  return '\"' + str.replace(QUOTE_REGEXP, '\\\\$1') + '\"'\n}\n\n/**\n * Class to represent a content type.\n * @private\n */\nfunction ContentType (type) {\n  this.parameters = Object.create(null)\n  this.type = type\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/content-type/index.js?")},"./node_modules/cookie/index.js":
/*!**************************************!*\
  !*** ./node_modules/cookie/index.js ***!
  \**************************************/(__unused_webpack_module,exports)=>{"use strict";eval("/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar decode = decodeURIComponent;\nvar encode = encodeURIComponent;\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar   = VCHAR / obs-text\n * obs-text      = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n  if (typeof str !== 'string') {\n    throw new TypeError('argument str must be a string');\n  }\n\n  var obj = {}\n  var opt = options || {};\n  var pairs = str.split(';')\n  var dec = opt.decode || decode;\n\n  for (var i = 0; i < pairs.length; i++) {\n    var pair = pairs[i];\n    var index = pair.indexOf('=')\n\n    // skip things that don't look like key=value\n    if (index < 0) {\n      continue;\n    }\n\n    var key = pair.substring(0, index).trim()\n\n    // only assign once\n    if (undefined == obj[key]) {\n      var val = pair.substring(index + 1, pair.length).trim()\n\n      // quoted values\n      if (val[0] === '\"') {\n        val = val.slice(1, -1)\n      }\n\n      obj[key] = tryDecode(val, dec);\n    }\n  }\n\n  return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n *   => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n  var opt = options || {};\n  var enc = opt.encode || encode;\n\n  if (typeof enc !== 'function') {\n    throw new TypeError('option encode is invalid');\n  }\n\n  if (!fieldContentRegExp.test(name)) {\n    throw new TypeError('argument name is invalid');\n  }\n\n  var value = enc(val);\n\n  if (value && !fieldContentRegExp.test(value)) {\n    throw new TypeError('argument val is invalid');\n  }\n\n  var str = name + '=' + value;\n\n  if (null != opt.maxAge) {\n    var maxAge = opt.maxAge - 0;\n\n    if (isNaN(maxAge) || !isFinite(maxAge)) {\n      throw new TypeError('option maxAge is invalid')\n    }\n\n    str += '; Max-Age=' + Math.floor(maxAge);\n  }\n\n  if (opt.domain) {\n    if (!fieldContentRegExp.test(opt.domain)) {\n      throw new TypeError('option domain is invalid');\n    }\n\n    str += '; Domain=' + opt.domain;\n  }\n\n  if (opt.path) {\n    if (!fieldContentRegExp.test(opt.path)) {\n      throw new TypeError('option path is invalid');\n    }\n\n    str += '; Path=' + opt.path;\n  }\n\n  if (opt.expires) {\n    if (typeof opt.expires.toUTCString !== 'function') {\n      throw new TypeError('option expires is invalid');\n    }\n\n    str += '; Expires=' + opt.expires.toUTCString();\n  }\n\n  if (opt.httpOnly) {\n    str += '; HttpOnly';\n  }\n\n  if (opt.secure) {\n    str += '; Secure';\n  }\n\n  if (opt.sameSite) {\n    var sameSite = typeof opt.sameSite === 'string'\n      ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n    switch (sameSite) {\n      case true:\n        str += '; SameSite=Strict';\n        break;\n      case 'lax':\n        str += '; SameSite=Lax';\n        break;\n      case 'strict':\n        str += '; SameSite=Strict';\n        break;\n      case 'none':\n        str += '; SameSite=None';\n        break;\n      default:\n        throw new TypeError('option sameSite is invalid');\n    }\n  }\n\n  return str;\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n  try {\n    return decode(str);\n  } catch (e) {\n    return str;\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/cookie/index.js?")},"./node_modules/cookies/index.js":
/*!***************************************!*\
  !*** ./node_modules/cookies/index.js ***!
  \***************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('/*!\n * cookies\n * Copyright(c) 2014 Jed Schmidt, http://jed.is/\n * Copyright(c) 2015-2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\nvar deprecate = __webpack_require__(/*! depd */ "./node_modules/cookies/node_modules/depd/index.js")(\'cookies\')\nvar Keygrip = __webpack_require__(/*! keygrip */ "./node_modules/keygrip/index.js")\nvar http = __webpack_require__(/*! http */ "http")\nvar cache = {}\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar   = VCHAR / obs-text\n * obs-text      = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * RegExp to match Same-Site cookie attribute value.\n */\n\nvar SAME_SITE_REGEXP = /^(?:lax|none|strict)$/i\n\nfunction Cookies(request, response, options) {\n  if (!(this instanceof Cookies)) return new Cookies(request, response, options)\n\n  this.secure = undefined\n  this.request = request\n  this.response = response\n\n  if (options) {\n    if (Array.isArray(options)) {\n      // array of key strings\n      deprecate(\'"keys" argument; provide using options {"keys": [...]}\')\n      this.keys = new Keygrip(options)\n    } else if (options.constructor && options.constructor.name === \'Keygrip\') {\n      // any keygrip constructor to allow different versions\n      deprecate(\'"keys" argument; provide using options {"keys": keygrip}\')\n      this.keys = options\n    } else {\n      this.keys = Array.isArray(options.keys) ? new Keygrip(options.keys) : options.keys\n      this.secure = options.secure\n    }\n  }\n}\n\nCookies.prototype.get = function(name, opts) {\n  var sigName = name + ".sig"\n    , header, match, value, remote, data, index\n    , signed = opts && opts.signed !== undefined ? opts.signed : !!this.keys\n\n  header = this.request.headers["cookie"]\n  if (!header) return\n\n  match = header.match(getPattern(name))\n  if (!match) return\n\n  value = match[1]\n  if (!opts || !signed) return value\n\n  remote = this.get(sigName)\n  if (!remote) return\n\n  data = name + "=" + value\n  if (!this.keys) throw new Error(\'.keys required for signed cookies\');\n  index = this.keys.index(data, remote)\n\n  if (index < 0) {\n    this.set(sigName, null, {path: "/", signed: false })\n  } else {\n    index && this.set(sigName, this.keys.sign(data), { signed: false })\n    return value\n  }\n};\n\nCookies.prototype.set = function(name, value, opts) {\n  var res = this.response\n    , req = this.request\n    , headers = res.getHeader("Set-Cookie") || []\n    , secure = this.secure !== undefined ? !!this.secure : req.protocol === \'https\' || req.connection.encrypted\n    , cookie = new Cookie(name, value, opts)\n    , signed = opts && opts.signed !== undefined ? opts.signed : !!this.keys\n\n  if (typeof headers == "string") headers = [headers]\n\n  if (!secure && opts && opts.secure) {\n    throw new Error(\'Cannot send secure cookie over unencrypted connection\')\n  }\n\n  cookie.secure = opts && opts.secure !== undefined\n    ? opts.secure\n    : secure\n\n  if (opts && "secureProxy" in opts) {\n    deprecate(\'"secureProxy" option; use "secure" option, provide "secure" to constructor if needed\')\n    cookie.secure = opts.secureProxy\n  }\n\n  pushCookie(headers, cookie)\n\n  if (opts && signed) {\n    if (!this.keys) throw new Error(\'.keys required for signed cookies\');\n    cookie.value = this.keys.sign(cookie.toString())\n    cookie.name += ".sig"\n    pushCookie(headers, cookie)\n  }\n\n  var setHeader = res.set ? http.OutgoingMessage.prototype.setHeader : res.setHeader\n  setHeader.call(res, \'Set-Cookie\', headers)\n  return this\n};\n\nfunction Cookie(name, value, attrs) {\n  if (!fieldContentRegExp.test(name)) {\n    throw new TypeError(\'argument name is invalid\');\n  }\n\n  if (value && !fieldContentRegExp.test(value)) {\n    throw new TypeError(\'argument value is invalid\');\n  }\n\n  this.name = name\n  this.value = value || ""\n\n  for (var name in attrs) {\n    this[name] = attrs[name]\n  }\n\n  if (!this.value) {\n    this.expires = new Date(0)\n    this.maxAge = null\n  }\n\n  if (this.path && !fieldContentRegExp.test(this.path)) {\n    throw new TypeError(\'option path is invalid\');\n  }\n\n  if (this.domain && !fieldContentRegExp.test(this.domain)) {\n    throw new TypeError(\'option domain is invalid\');\n  }\n\n  if (this.sameSite && this.sameSite !== true && !SAME_SITE_REGEXP.test(this.sameSite)) {\n    throw new TypeError(\'option sameSite is invalid\')\n  }\n}\n\nCookie.prototype.path = "/";\nCookie.prototype.expires = undefined;\nCookie.prototype.domain = undefined;\nCookie.prototype.httpOnly = true;\nCookie.prototype.sameSite = false;\nCookie.prototype.secure = false;\nCookie.prototype.overwrite = false;\n\nCookie.prototype.toString = function() {\n  return this.name + "=" + this.value\n};\n\nCookie.prototype.toHeader = function() {\n  var header = this.toString()\n\n  if (this.maxAge) this.expires = new Date(Date.now() + this.maxAge);\n\n  if (this.path     ) header += "; path=" + this.path\n  if (this.expires  ) header += "; expires=" + this.expires.toUTCString()\n  if (this.domain   ) header += "; domain=" + this.domain\n  if (this.sameSite ) header += "; samesite=" + (this.sameSite === true ? \'strict\' : this.sameSite.toLowerCase())\n  if (this.secure   ) header += "; secure"\n  if (this.httpOnly ) header += "; httponly"\n\n  return header\n};\n\n// back-compat so maxage mirrors maxAge\nObject.defineProperty(Cookie.prototype, \'maxage\', {\n  configurable: true,\n  enumerable: true,\n  get: function () { return this.maxAge },\n  set: function (val) { return this.maxAge = val }\n});\ndeprecate.property(Cookie.prototype, \'maxage\', \'"maxage"; use "maxAge" instead\')\n\nfunction getPattern(name) {\n  if (cache[name]) return cache[name]\n\n  return cache[name] = new RegExp(\n    "(?:^|;) *" +\n    name.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, "\\\\$&") +\n    "=([^;]*)"\n  )\n}\n\nfunction pushCookie(headers, cookie) {\n  if (cookie.overwrite) {\n    for (var i = headers.length - 1; i >= 0; i--) {\n      if (headers[i].indexOf(cookie.name + \'=\') === 0) {\n        headers.splice(i, 1)\n      }\n    }\n  }\n\n  headers.push(cookie.toHeader())\n}\n\nCookies.connect = Cookies.express = function(keys) {\n  return function(req, res, next) {\n    req.cookies = res.cookies = new Cookies(req, res, {\n      keys: keys\n    })\n\n    next()\n  }\n}\n\nCookies.Cookie = Cookie\n\nmodule.exports = Cookies\n\n\n//# sourceURL=webpack://txadmin/./node_modules/cookies/index.js?')},"./node_modules/cookies/node_modules/depd/index.js":
/*!*********************************************************!*\
  !*** ./node_modules/cookies/node_modules/depd/index.js ***!
  \*********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("/*!\n * depd\n * Copyright(c) 2014-2018 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\n\nvar relative = (__webpack_require__(/*! path */ \"path\").relative)\n\n/**\n * Module exports.\n */\n\nmodule.exports = depd\n\n/**\n * Get the path to base files on.\n */\n\nvar basePath = process.cwd()\n\n/**\n * Determine if namespace is contained in the string.\n */\n\nfunction containsNamespace (str, namespace) {\n  var vals = str.split(/[ ,]+/)\n  var ns = String(namespace).toLowerCase()\n\n  for (var i = 0; i < vals.length; i++) {\n    var val = vals[i]\n\n    // namespace contained\n    if (val && (val === '*' || val.toLowerCase() === ns)) {\n      return true\n    }\n  }\n\n  return false\n}\n\n/**\n * Convert a data descriptor to accessor descriptor.\n */\n\nfunction convertDataDescriptorToAccessor (obj, prop, message) {\n  var descriptor = Object.getOwnPropertyDescriptor(obj, prop)\n  var value = descriptor.value\n\n  descriptor.get = function getter () { return value }\n\n  if (descriptor.writable) {\n    descriptor.set = function setter (val) { return (value = val) }\n  }\n\n  delete descriptor.value\n  delete descriptor.writable\n\n  Object.defineProperty(obj, prop, descriptor)\n\n  return descriptor\n}\n\n/**\n * Create arguments string to keep arity.\n */\n\nfunction createArgumentsString (arity) {\n  var str = ''\n\n  for (var i = 0; i < arity; i++) {\n    str += ', arg' + i\n  }\n\n  return str.substr(2)\n}\n\n/**\n * Create stack string from stack.\n */\n\nfunction createStackString (stack) {\n  var str = this.name + ': ' + this.namespace\n\n  if (this.message) {\n    str += ' deprecated ' + this.message\n  }\n\n  for (var i = 0; i < stack.length; i++) {\n    str += '\\n    at ' + stack[i].toString()\n  }\n\n  return str\n}\n\n/**\n * Create deprecate for namespace in caller.\n */\n\nfunction depd (namespace) {\n  if (!namespace) {\n    throw new TypeError('argument namespace is required')\n  }\n\n  var stack = getStack()\n  var site = callSiteLocation(stack[1])\n  var file = site[0]\n\n  function deprecate (message) {\n    // call to self as log\n    log.call(deprecate, message)\n  }\n\n  deprecate._file = file\n  deprecate._ignored = isignored(namespace)\n  deprecate._namespace = namespace\n  deprecate._traced = istraced(namespace)\n  deprecate._warned = Object.create(null)\n\n  deprecate.function = wrapfunction\n  deprecate.property = wrapproperty\n\n  return deprecate\n}\n\n/**\n * Determine if event emitter has listeners of a given type.\n *\n * The way to do this check is done three different ways in Node.js >= 0.8\n * so this consolidates them into a minimal set using instance methods.\n *\n * @param {EventEmitter} emitter\n * @param {string} type\n * @returns {boolean}\n * @private\n */\n\nfunction eehaslisteners (emitter, type) {\n  var count = typeof emitter.listenerCount !== 'function'\n    ? emitter.listeners(type).length\n    : emitter.listenerCount(type)\n\n  return count > 0\n}\n\n/**\n * Determine if namespace is ignored.\n */\n\nfunction isignored (namespace) {\n  if (process.noDeprecation) {\n    // --no-deprecation support\n    return true\n  }\n\n  var str = ({\"APP_ENV\":\"webpack\"}).NO_DEPRECATION || ''\n\n  // namespace ignored\n  return containsNamespace(str, namespace)\n}\n\n/**\n * Determine if namespace is traced.\n */\n\nfunction istraced (namespace) {\n  if (process.traceDeprecation) {\n    // --trace-deprecation support\n    return true\n  }\n\n  var str = ({\"APP_ENV\":\"webpack\"}).TRACE_DEPRECATION || ''\n\n  // namespace traced\n  return containsNamespace(str, namespace)\n}\n\n/**\n * Display deprecation message.\n */\n\nfunction log (message, site) {\n  var haslisteners = eehaslisteners(process, 'deprecation')\n\n  // abort early if no destination\n  if (!haslisteners && this._ignored) {\n    return\n  }\n\n  var caller\n  var callFile\n  var callSite\n  var depSite\n  var i = 0\n  var seen = false\n  var stack = getStack()\n  var file = this._file\n\n  if (site) {\n    // provided site\n    depSite = site\n    callSite = callSiteLocation(stack[1])\n    callSite.name = depSite.name\n    file = callSite[0]\n  } else {\n    // get call site\n    i = 2\n    depSite = callSiteLocation(stack[i])\n    callSite = depSite\n  }\n\n  // get caller of deprecated thing in relation to file\n  for (; i < stack.length; i++) {\n    caller = callSiteLocation(stack[i])\n    callFile = caller[0]\n\n    if (callFile === file) {\n      seen = true\n    } else if (callFile === this._file) {\n      file = this._file\n    } else if (seen) {\n      break\n    }\n  }\n\n  var key = caller\n    ? depSite.join(':') + '__' + caller.join(':')\n    : undefined\n\n  if (key !== undefined && key in this._warned) {\n    // already warned\n    return\n  }\n\n  this._warned[key] = true\n\n  // generate automatic message from call site\n  var msg = message\n  if (!msg) {\n    msg = callSite === depSite || !callSite.name\n      ? defaultMessage(depSite)\n      : defaultMessage(callSite)\n  }\n\n  // emit deprecation if listeners exist\n  if (haslisteners) {\n    var err = DeprecationError(this._namespace, msg, stack.slice(i))\n    process.emit('deprecation', err)\n    return\n  }\n\n  // format and write message\n  var format = process.stderr.isTTY\n    ? formatColor\n    : formatPlain\n  var output = format.call(this, msg, caller, stack.slice(i))\n  process.stderr.write(output + '\\n', 'utf8')\n}\n\n/**\n * Get call site location as array.\n */\n\nfunction callSiteLocation (callSite) {\n  var file = callSite.getFileName() || '<anonymous>'\n  var line = callSite.getLineNumber()\n  var colm = callSite.getColumnNumber()\n\n  if (callSite.isEval()) {\n    file = callSite.getEvalOrigin() + ', ' + file\n  }\n\n  var site = [file, line, colm]\n\n  site.callSite = callSite\n  site.name = callSite.getFunctionName()\n\n  return site\n}\n\n/**\n * Generate a default message from the site.\n */\n\nfunction defaultMessage (site) {\n  var callSite = site.callSite\n  var funcName = site.name\n\n  // make useful anonymous name\n  if (!funcName) {\n    funcName = '<anonymous@' + formatLocation(site) + '>'\n  }\n\n  var context = callSite.getThis()\n  var typeName = context && callSite.getTypeName()\n\n  // ignore useless type name\n  if (typeName === 'Object') {\n    typeName = undefined\n  }\n\n  // make useful type name\n  if (typeName === 'Function') {\n    typeName = context.name || typeName\n  }\n\n  return typeName && callSite.getMethodName()\n    ? typeName + '.' + funcName\n    : funcName\n}\n\n/**\n * Format deprecation message without color.\n */\n\nfunction formatPlain (msg, caller, stack) {\n  var timestamp = new Date().toUTCString()\n\n  var formatted = timestamp +\n    ' ' + this._namespace +\n    ' deprecated ' + msg\n\n  // add stack trace\n  if (this._traced) {\n    for (var i = 0; i < stack.length; i++) {\n      formatted += '\\n    at ' + stack[i].toString()\n    }\n\n    return formatted\n  }\n\n  if (caller) {\n    formatted += ' at ' + formatLocation(caller)\n  }\n\n  return formatted\n}\n\n/**\n * Format deprecation message with color.\n */\n\nfunction formatColor (msg, caller, stack) {\n  var formatted = '\\x1b[36;1m' + this._namespace + '\\x1b[22;39m' + // bold cyan\n    ' \\x1b[33;1mdeprecated\\x1b[22;39m' + // bold yellow\n    ' \\x1b[0m' + msg + '\\x1b[39m' // reset\n\n  // add stack trace\n  if (this._traced) {\n    for (var i = 0; i < stack.length; i++) {\n      formatted += '\\n    \\x1b[36mat ' + stack[i].toString() + '\\x1b[39m' // cyan\n    }\n\n    return formatted\n  }\n\n  if (caller) {\n    formatted += ' \\x1b[36m' + formatLocation(caller) + '\\x1b[39m' // cyan\n  }\n\n  return formatted\n}\n\n/**\n * Format call site location.\n */\n\nfunction formatLocation (callSite) {\n  return relative(basePath, callSite[0]) +\n    ':' + callSite[1] +\n    ':' + callSite[2]\n}\n\n/**\n * Get the stack as array of call sites.\n */\n\nfunction getStack () {\n  var limit = Error.stackTraceLimit\n  var obj = {}\n  var prep = Error.prepareStackTrace\n\n  Error.prepareStackTrace = prepareObjectStackTrace\n  Error.stackTraceLimit = Math.max(10, limit)\n\n  // capture the stack\n  Error.captureStackTrace(obj)\n\n  // slice this function off the top\n  var stack = obj.stack.slice(1)\n\n  Error.prepareStackTrace = prep\n  Error.stackTraceLimit = limit\n\n  return stack\n}\n\n/**\n * Capture call site stack from v8.\n */\n\nfunction prepareObjectStackTrace (obj, stack) {\n  return stack\n}\n\n/**\n * Return a wrapped function in a deprecation message.\n */\n\nfunction wrapfunction (fn, message) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('argument fn must be a function')\n  }\n\n  var args = createArgumentsString(fn.length)\n  var stack = getStack()\n  var site = callSiteLocation(stack[1])\n\n  site.name = fn.name\n\n  // eslint-disable-next-line no-new-func\n  var deprecatedfn = new Function('fn', 'log', 'deprecate', 'message', 'site',\n    '\"use strict\"\\n' +\n    'return function (' + args + ') {' +\n    'log.call(deprecate, message, site)\\n' +\n    'return fn.apply(this, arguments)\\n' +\n    '}')(fn, log, this, message, site)\n\n  return deprecatedfn\n}\n\n/**\n * Wrap property in a deprecation message.\n */\n\nfunction wrapproperty (obj, prop, message) {\n  if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n    throw new TypeError('argument obj must be object')\n  }\n\n  var descriptor = Object.getOwnPropertyDescriptor(obj, prop)\n\n  if (!descriptor) {\n    throw new TypeError('must call property on owner object')\n  }\n\n  if (!descriptor.configurable) {\n    throw new TypeError('property must be configurable')\n  }\n\n  var deprecate = this\n  var stack = getStack()\n  var site = callSiteLocation(stack[1])\n\n  // set site name\n  site.name = prop\n\n  // convert data descriptor\n  if ('value' in descriptor) {\n    descriptor = convertDataDescriptorToAccessor(obj, prop, message)\n  }\n\n  var get = descriptor.get\n  var set = descriptor.set\n\n  // wrap getter\n  if (typeof get === 'function') {\n    descriptor.get = function getter () {\n      log.call(deprecate, message, site)\n      return get.apply(this, arguments)\n    }\n  }\n\n  // wrap setter\n  if (typeof set === 'function') {\n    descriptor.set = function setter () {\n      log.call(deprecate, message, site)\n      return set.apply(this, arguments)\n    }\n  }\n\n  Object.defineProperty(obj, prop, descriptor)\n}\n\n/**\n * Create DeprecationError for deprecation\n */\n\nfunction DeprecationError (namespace, message, stack) {\n  var error = new Error()\n  var stackString\n\n  Object.defineProperty(error, 'constructor', {\n    value: DeprecationError\n  })\n\n  Object.defineProperty(error, 'message', {\n    configurable: true,\n    enumerable: false,\n    value: message,\n    writable: true\n  })\n\n  Object.defineProperty(error, 'name', {\n    enumerable: false,\n    configurable: true,\n    value: 'DeprecationError',\n    writable: true\n  })\n\n  Object.defineProperty(error, 'namespace', {\n    configurable: true,\n    enumerable: false,\n    value: namespace,\n    writable: true\n  })\n\n  Object.defineProperty(error, 'stack', {\n    configurable: true,\n    enumerable: false,\n    get: function () {\n      if (stackString !== undefined) {\n        return stackString\n      }\n\n      // prepare stack trace\n      return (stackString = createStackString.call(this, stack))\n    },\n    set: function setter (val) {\n      stackString = val\n    }\n  })\n\n  return error\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/cookies/node_modules/depd/index.js?")},"./node_modules/copy-to/index.js":
/*!***************************************!*\
  !*** ./node_modules/copy-to/index.js ***!
  \***************************************/module=>{"use strict";eval("/*!\n * copy-to - index.js\n * Copyright(c) 2014 dead_horse <dead_horse@qq.com>\n * MIT Licensed\n */\n\n\n\n/**\n * slice() reference.\n */\n\nvar slice = Array.prototype.slice;\n\n/**\n * Expose copy\n *\n * ```\n * copy({foo: 'nar', hello: 'copy'}).to({hello: 'world'});\n * copy({foo: 'nar', hello: 'copy'}).toCover({hello: 'world'});\n * ```\n *\n * @param {Object} src\n * @return {Copy}\n */\n\nmodule.exports = Copy;\n\n\n/**\n * Copy\n * @param {Object} src\n * @param {Boolean} withAccess\n */\n\nfunction Copy(src, withAccess) {\n  if (!(this instanceof Copy)) return new Copy(src, withAccess);\n  this.src = src;\n  this._withAccess = withAccess;\n}\n\n/**\n * copy properties include getter and setter\n * @param {[type]} val [description]\n * @return {[type]} [description]\n */\n\nCopy.prototype.withAccess = function (w) {\n  this._withAccess = w !== false;\n  return this;\n};\n\n/**\n * pick keys in src\n *\n * @api: public\n */\n\nCopy.prototype.pick = function(keys) {\n  if (!Array.isArray(keys)) {\n    keys = slice.call(arguments);\n  }\n  if (keys.length) {\n    this.keys = keys;\n  }\n  return this;\n};\n\n/**\n * copy src to target,\n * do not cover any property target has\n * @param {Object} to\n *\n * @api: public\n */\n\nCopy.prototype.to = function(to) {\n  to = to || {};\n\n  if (!this.src) return to;\n  var keys = this.keys || Object.keys(this.src);\n\n  if (!this._withAccess) {\n    for (var i = 0; i < keys.length; i++) {\n      key = keys[i];\n      if (to[key] !== undefined) continue;\n      to[key] = this.src[key];\n    }\n    return to;\n  }\n\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!notDefined(to, key)) continue;\n    var getter = this.src.__lookupGetter__(key);\n    var setter = this.src.__lookupSetter__(key);\n    if (getter) to.__defineGetter__(key, getter);\n    if (setter) to.__defineSetter__(key, setter);\n\n    if (!getter && !setter) {\n      to[key] = this.src[key];\n    }\n  }\n  return to;\n};\n\n/**\n * copy src to target,\n * override any property target has\n * @param {Object} to\n *\n * @api: public\n */\n\nCopy.prototype.toCover = function(to) {\n  var keys = this.keys || Object.keys(this.src);\n\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    delete to[key];\n    var getter = this.src.__lookupGetter__(key);\n    var setter = this.src.__lookupSetter__(key);\n    if (getter) to.__defineGetter__(key, getter);\n    if (setter) to.__defineSetter__(key, setter);\n\n    if (!getter && !setter) {\n      to[key] = this.src[key];\n    }\n  }\n};\n\nCopy.prototype.override = Copy.prototype.toCover;\n\n/**\n * append another object to src\n * @param {Obj} obj\n * @return {Copy}\n */\n\nCopy.prototype.and = function (obj) {\n  var src = {};\n  this.to(src);\n  this.src = obj;\n  this.to(src);\n  this.src = src;\n\n  return this;\n};\n\n/**\n * check obj[key] if not defiend\n * @param {Object} obj\n * @param {String} key\n * @return {Boolean}\n */\n\nfunction notDefined(obj, key) {\n  return obj[key] === undefined\n    && obj.__lookupGetter__(key) === undefined\n    && obj.__lookupSetter__(key) === undefined;\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/copy-to/index.js?")},"./node_modules/core-util-is/lib/util.js":
/*!***********************************************!*\
  !*** ./node_modules/core-util-is/lib/util.js ***!
  \***********************************************/(__unused_webpack_module,exports)=>{eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n  if (Array.isArray) {\n    return Array.isArray(arg);\n  }\n  return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n  return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/core-util-is/lib/util.js?")},"./node_modules/cors/lib/index.js":
/*!****************************************!*\
  !*** ./node_modules/cors/lib/index.js ***!
  \****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("(function () {\n\n  'use strict';\n\n  var assign = __webpack_require__(/*! object-assign */ \"./node_modules/object-assign/index.js\");\n  var vary = __webpack_require__(/*! vary */ \"./node_modules/vary/index.js\");\n\n  var defaults = {\n    origin: '*',\n    methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',\n    preflightContinue: false,\n    optionsSuccessStatus: 204\n  };\n\n  function isString(s) {\n    return typeof s === 'string' || s instanceof String;\n  }\n\n  function isOriginAllowed(origin, allowedOrigin) {\n    if (Array.isArray(allowedOrigin)) {\n      for (var i = 0; i < allowedOrigin.length; ++i) {\n        if (isOriginAllowed(origin, allowedOrigin[i])) {\n          return true;\n        }\n      }\n      return false;\n    } else if (isString(allowedOrigin)) {\n      return origin === allowedOrigin;\n    } else if (allowedOrigin instanceof RegExp) {\n      return allowedOrigin.test(origin);\n    } else {\n      return !!allowedOrigin;\n    }\n  }\n\n  function configureOrigin(options, req) {\n    var requestOrigin = req.headers.origin,\n      headers = [],\n      isAllowed;\n\n    if (!options.origin || options.origin === '*') {\n      // allow any origin\n      headers.push([{\n        key: 'Access-Control-Allow-Origin',\n        value: '*'\n      }]);\n    } else if (isString(options.origin)) {\n      // fixed origin\n      headers.push([{\n        key: 'Access-Control-Allow-Origin',\n        value: options.origin\n      }]);\n      headers.push([{\n        key: 'Vary',\n        value: 'Origin'\n      }]);\n    } else {\n      isAllowed = isOriginAllowed(requestOrigin, options.origin);\n      // reflect origin\n      headers.push([{\n        key: 'Access-Control-Allow-Origin',\n        value: isAllowed ? requestOrigin : false\n      }]);\n      headers.push([{\n        key: 'Vary',\n        value: 'Origin'\n      }]);\n    }\n\n    return headers;\n  }\n\n  function configureMethods(options) {\n    var methods = options.methods;\n    if (methods.join) {\n      methods = options.methods.join(','); // .methods is an array, so turn it into a string\n    }\n    return {\n      key: 'Access-Control-Allow-Methods',\n      value: methods\n    };\n  }\n\n  function configureCredentials(options) {\n    if (options.credentials === true) {\n      return {\n        key: 'Access-Control-Allow-Credentials',\n        value: 'true'\n      };\n    }\n    return null;\n  }\n\n  function configureAllowedHeaders(options, req) {\n    var allowedHeaders = options.allowedHeaders || options.headers;\n    var headers = [];\n\n    if (!allowedHeaders) {\n      allowedHeaders = req.headers['access-control-request-headers']; // .headers wasn't specified, so reflect the request headers\n      headers.push([{\n        key: 'Vary',\n        value: 'Access-Control-Request-Headers'\n      }]);\n    } else if (allowedHeaders.join) {\n      allowedHeaders = allowedHeaders.join(','); // .headers is an array, so turn it into a string\n    }\n    if (allowedHeaders && allowedHeaders.length) {\n      headers.push([{\n        key: 'Access-Control-Allow-Headers',\n        value: allowedHeaders\n      }]);\n    }\n\n    return headers;\n  }\n\n  function configureExposedHeaders(options) {\n    var headers = options.exposedHeaders;\n    if (!headers) {\n      return null;\n    } else if (headers.join) {\n      headers = headers.join(','); // .headers is an array, so turn it into a string\n    }\n    if (headers && headers.length) {\n      return {\n        key: 'Access-Control-Expose-Headers',\n        value: headers\n      };\n    }\n    return null;\n  }\n\n  function configureMaxAge(options) {\n    var maxAge = (typeof options.maxAge === 'number' || options.maxAge) && options.maxAge.toString()\n    if (maxAge && maxAge.length) {\n      return {\n        key: 'Access-Control-Max-Age',\n        value: maxAge\n      };\n    }\n    return null;\n  }\n\n  function applyHeaders(headers, res) {\n    for (var i = 0, n = headers.length; i < n; i++) {\n      var header = headers[i];\n      if (header) {\n        if (Array.isArray(header)) {\n          applyHeaders(header, res);\n        } else if (header.key === 'Vary' && header.value) {\n          vary(res, header.value);\n        } else if (header.value) {\n          res.setHeader(header.key, header.value);\n        }\n      }\n    }\n  }\n\n  function cors(options, req, res, next) {\n    var headers = [],\n      method = req.method && req.method.toUpperCase && req.method.toUpperCase();\n\n    if (method === 'OPTIONS') {\n      // preflight\n      headers.push(configureOrigin(options, req));\n      headers.push(configureCredentials(options, req));\n      headers.push(configureMethods(options, req));\n      headers.push(configureAllowedHeaders(options, req));\n      headers.push(configureMaxAge(options, req));\n      headers.push(configureExposedHeaders(options, req));\n      applyHeaders(headers, res);\n\n      if (options.preflightContinue) {\n        next();\n      } else {\n        // Safari (and potentially other browsers) need content-length 0,\n        //   for 204 or they just hang waiting for a body\n        res.statusCode = options.optionsSuccessStatus;\n        res.setHeader('Content-Length', '0');\n        res.end();\n      }\n    } else {\n      // actual response\n      headers.push(configureOrigin(options, req));\n      headers.push(configureCredentials(options, req));\n      headers.push(configureExposedHeaders(options, req));\n      applyHeaders(headers, res);\n      next();\n    }\n  }\n\n  function middlewareWrapper(o) {\n    // if options are static (either via defaults or custom options passed in), wrap in a function\n    var optionsCallback = null;\n    if (typeof o === 'function') {\n      optionsCallback = o;\n    } else {\n      optionsCallback = function (req, cb) {\n        cb(null, o);\n      };\n    }\n\n    return function corsMiddleware(req, res, next) {\n      optionsCallback(req, function (err, options) {\n        if (err) {\n          next(err);\n        } else {\n          var corsOptions = assign({}, defaults, options);\n          var originCallback = null;\n          if (corsOptions.origin && typeof corsOptions.origin === 'function') {\n            originCallback = corsOptions.origin;\n          } else if (corsOptions.origin) {\n            originCallback = function (origin, cb) {\n              cb(null, corsOptions.origin);\n            };\n          }\n\n          if (originCallback) {\n            originCallback(req.headers.origin, function (err2, origin) {\n              if (err2 || !origin) {\n                next(err2);\n              } else {\n                corsOptions.origin = origin;\n                cors(corsOptions, req, res, next);\n              }\n            });\n          } else {\n            next();\n          }\n        }\n      });\n    };\n  }\n\n  // can pass either an options hash, an options delegate, or nothing\n  module.exports = middlewareWrapper;\n\n}());\n\n\n//# sourceURL=webpack://txadmin/./node_modules/cors/lib/index.js?")},"./node_modules/crc/lib/crc1.js":
/*!**************************************!*\
  !*** ./node_modules/crc/lib/crc1.js ***!
  \**************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nmodule.exports = __webpack_require__(/*! ./es6/crc1 */ "./node_modules/crc/lib/es6/crc1.js")["default"];\n\n\n//# sourceURL=webpack://txadmin/./node_modules/crc/lib/crc1.js?')},"./node_modules/crc/lib/crc16.js":
/*!***************************************!*\
  !*** ./node_modules/crc/lib/crc16.js ***!
  \***************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nmodule.exports = __webpack_require__(/*! ./es6/crc16 */ "./node_modules/crc/lib/es6/crc16.js")["default"];\n\n\n//# sourceURL=webpack://txadmin/./node_modules/crc/lib/crc16.js?')},"./node_modules/crc/lib/crc16_ccitt.js":
/*!*********************************************!*\
  !*** ./node_modules/crc/lib/crc16_ccitt.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nmodule.exports = __webpack_require__(/*! ./es6/crc16ccitt */ "./node_modules/crc/lib/es6/crc16ccitt.js")["default"];\n\n\n//# sourceURL=webpack://txadmin/./node_modules/crc/lib/crc16_ccitt.js?')},"./node_modules/crc/lib/crc16_kermit.js":
/*!**********************************************!*\
  !*** ./node_modules/crc/lib/crc16_kermit.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nmodule.exports = __webpack_require__(/*! ./es6/crc16kermit */ "./node_modules/crc/lib/es6/crc16kermit.js")["default"];\n\n\n//# sourceURL=webpack://txadmin/./node_modules/crc/lib/crc16_kermit.js?')},"./node_modules/crc/lib/crc16_modbus.js":
/*!**********************************************!*\
  !*** ./node_modules/crc/lib/crc16_modbus.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nmodule.exports = __webpack_require__(/*! ./es6/crc16modbus */ "./node_modules/crc/lib/es6/crc16modbus.js")["default"];\n\n\n//# sourceURL=webpack://txadmin/./node_modules/crc/lib/crc16_modbus.js?')},"./node_modules/crc/lib/crc16_xmodem.js":
/*!**********************************************!*\
  !*** ./node_modules/crc/lib/crc16_xmodem.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nmodule.exports = __webpack_require__(/*! ./es6/crc16xmodem */ "./node_modules/crc/lib/es6/crc16xmodem.js")["default"];\n\n\n//# sourceURL=webpack://txadmin/./node_modules/crc/lib/crc16_xmodem.js?')},"./node_modules/crc/lib/crc24.js":
/*!***************************************!*\
  !*** ./node_modules/crc/lib/crc24.js ***!
  \***************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nmodule.exports = __webpack_require__(/*! ./es6/crc24 */ "./node_modules/crc/lib/es6/crc24.js")["default"];\n\n\n//# sourceURL=webpack://txadmin/./node_modules/crc/lib/crc24.js?')},"./node_modules/crc/lib/crc32.js":
/*!***************************************!*\
  !*** ./node_modules/crc/lib/crc32.js ***!
  \***************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nmodule.exports = __webpack_require__(/*! ./es6/crc32 */ "./node_modules/crc/lib/es6/crc32.js")["default"];\n\n\n//# sourceURL=webpack://txadmin/./node_modules/crc/lib/crc32.js?')},"./node_modules/crc/lib/crc8.js":
/*!**************************************!*\
  !*** ./node_modules/crc/lib/crc8.js ***!
  \**************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nmodule.exports = __webpack_require__(/*! ./es6/crc8 */ "./node_modules/crc/lib/es6/crc8.js")["default"];\n\n\n//# sourceURL=webpack://txadmin/./node_modules/crc/lib/crc8.js?')},"./node_modules/crc/lib/crc8_1wire.js":
/*!********************************************!*\
  !*** ./node_modules/crc/lib/crc8_1wire.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nmodule.exports = __webpack_require__(/*! ./es6/crc81wire */ "./node_modules/crc/lib/es6/crc81wire.js")["default"];\n\n\n//# sourceURL=webpack://txadmin/./node_modules/crc/lib/crc8_1wire.js?')},"./node_modules/crc/lib/crcjam.js":
/*!****************************************!*\
  !*** ./node_modules/crc/lib/crcjam.js ***!
  \****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nmodule.exports = __webpack_require__(/*! ./es6/crcjam */ "./node_modules/crc/lib/es6/crcjam.js")["default"];\n\n\n//# sourceURL=webpack://txadmin/./node_modules/crc/lib/crcjam.js?')},"./node_modules/crc/lib/es6/crc1.js":
/*!******************************************!*\
  !*** ./node_modules/crc/lib/es6/crc1.js ***!
  \******************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\n\nvar _buffer = __webpack_require__(/*! buffer */ "buffer");\n\nvar _create_buffer = __webpack_require__(/*! ./create_buffer */ "./node_modules/crc/lib/es6/create_buffer.js");\n\nvar _create_buffer2 = _interopRequireDefault(_create_buffer);\n\nvar _define_crc = __webpack_require__(/*! ./define_crc */ "./node_modules/crc/lib/es6/define_crc.js");\n\nvar _define_crc2 = _interopRequireDefault(_define_crc);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar crc1 = (0, _define_crc2.default)(\'crc1\', function (buf, previous) {\n  if (!_buffer.Buffer.isBuffer(buf)) buf = (0, _create_buffer2.default)(buf);\n\n  var crc = ~~previous;\n  var accum = 0;\n\n  for (var index = 0; index < buf.length; index++) {\n    var byte = buf[index];\n    accum += byte;\n  }\n\n  crc += accum % 256;\n  return crc % 256;\n});\n\nexports["default"] = crc1;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/crc/lib/es6/crc1.js?')},"./node_modules/crc/lib/es6/crc16.js":
/*!*******************************************!*\
  !*** ./node_modules/crc/lib/es6/crc16.js ***!
  \*******************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\n\nvar _buffer = __webpack_require__(/*! buffer */ "buffer");\n\nvar _create_buffer = __webpack_require__(/*! ./create_buffer */ "./node_modules/crc/lib/es6/create_buffer.js");\n\nvar _create_buffer2 = _interopRequireDefault(_create_buffer);\n\nvar _define_crc = __webpack_require__(/*! ./define_crc */ "./node_modules/crc/lib/es6/define_crc.js");\n\nvar _define_crc2 = _interopRequireDefault(_define_crc);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Generated by `./pycrc.py --algorithm=table-driven --model=crc-16 --generate=c`\n// prettier-ignore\nvar TABLE = [0x0000, 0xc0c1, 0xc181, 0x0140, 0xc301, 0x03c0, 0x0280, 0xc241, 0xc601, 0x06c0, 0x0780, 0xc741, 0x0500, 0xc5c1, 0xc481, 0x0440, 0xcc01, 0x0cc0, 0x0d80, 0xcd41, 0x0f00, 0xcfc1, 0xce81, 0x0e40, 0x0a00, 0xcac1, 0xcb81, 0x0b40, 0xc901, 0x09c0, 0x0880, 0xc841, 0xd801, 0x18c0, 0x1980, 0xd941, 0x1b00, 0xdbc1, 0xda81, 0x1a40, 0x1e00, 0xdec1, 0xdf81, 0x1f40, 0xdd01, 0x1dc0, 0x1c80, 0xdc41, 0x1400, 0xd4c1, 0xd581, 0x1540, 0xd701, 0x17c0, 0x1680, 0xd641, 0xd201, 0x12c0, 0x1380, 0xd341, 0x1100, 0xd1c1, 0xd081, 0x1040, 0xf001, 0x30c0, 0x3180, 0xf141, 0x3300, 0xf3c1, 0xf281, 0x3240, 0x3600, 0xf6c1, 0xf781, 0x3740, 0xf501, 0x35c0, 0x3480, 0xf441, 0x3c00, 0xfcc1, 0xfd81, 0x3d40, 0xff01, 0x3fc0, 0x3e80, 0xfe41, 0xfa01, 0x3ac0, 0x3b80, 0xfb41, 0x3900, 0xf9c1, 0xf881, 0x3840, 0x2800, 0xe8c1, 0xe981, 0x2940, 0xeb01, 0x2bc0, 0x2a80, 0xea41, 0xee01, 0x2ec0, 0x2f80, 0xef41, 0x2d00, 0xedc1, 0xec81, 0x2c40, 0xe401, 0x24c0, 0x2580, 0xe541, 0x2700, 0xe7c1, 0xe681, 0x2640, 0x2200, 0xe2c1, 0xe381, 0x2340, 0xe101, 0x21c0, 0x2080, 0xe041, 0xa001, 0x60c0, 0x6180, 0xa141, 0x6300, 0xa3c1, 0xa281, 0x6240, 0x6600, 0xa6c1, 0xa781, 0x6740, 0xa501, 0x65c0, 0x6480, 0xa441, 0x6c00, 0xacc1, 0xad81, 0x6d40, 0xaf01, 0x6fc0, 0x6e80, 0xae41, 0xaa01, 0x6ac0, 0x6b80, 0xab41, 0x6900, 0xa9c1, 0xa881, 0x6840, 0x7800, 0xb8c1, 0xb981, 0x7940, 0xbb01, 0x7bc0, 0x7a80, 0xba41, 0xbe01, 0x7ec0, 0x7f80, 0xbf41, 0x7d00, 0xbdc1, 0xbc81, 0x7c40, 0xb401, 0x74c0, 0x7580, 0xb541, 0x7700, 0xb7c1, 0xb681, 0x7640, 0x7200, 0xb2c1, 0xb381, 0x7340, 0xb101, 0x71c0, 0x7080, 0xb041, 0x5000, 0x90c1, 0x9181, 0x5140, 0x9301, 0x53c0, 0x5280, 0x9241, 0x9601, 0x56c0, 0x5780, 0x9741, 0x5500, 0x95c1, 0x9481, 0x5440, 0x9c01, 0x5cc0, 0x5d80, 0x9d41, 0x5f00, 0x9fc1, 0x9e81, 0x5e40, 0x5a00, 0x9ac1, 0x9b81, 0x5b40, 0x9901, 0x59c0, 0x5880, 0x9841, 0x8801, 0x48c0, 0x4980, 0x8941, 0x4b00, 0x8bc1, 0x8a81, 0x4a40, 0x4e00, 0x8ec1, 0x8f81, 0x4f40, 0x8d01, 0x4dc0, 0x4c80, 0x8c41, 0x4400, 0x84c1, 0x8581, 0x4540, 0x8701, 0x47c0, 0x4680, 0x8641, 0x8201, 0x42c0, 0x4380, 0x8341, 0x4100, 0x81c1, 0x8081, 0x4040];\n\nif (typeof Int32Array !== \'undefined\') TABLE = new Int32Array(TABLE);\n\nvar crc16 = (0, _define_crc2.default)(\'crc-16\', function (buf, previous) {\n  if (!_buffer.Buffer.isBuffer(buf)) buf = (0, _create_buffer2.default)(buf);\n\n  var crc = ~~previous;\n\n  for (var index = 0; index < buf.length; index++) {\n    var byte = buf[index];\n    crc = (TABLE[(crc ^ byte) & 0xff] ^ crc >> 8) & 0xffff;\n  }\n\n  return crc;\n});\n\nexports["default"] = crc16;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/crc/lib/es6/crc16.js?')},"./node_modules/crc/lib/es6/crc16ccitt.js":
/*!************************************************!*\
  !*** ./node_modules/crc/lib/es6/crc16ccitt.js ***!
  \************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\n\nvar _buffer = __webpack_require__(/*! buffer */ "buffer");\n\nvar _create_buffer = __webpack_require__(/*! ./create_buffer */ "./node_modules/crc/lib/es6/create_buffer.js");\n\nvar _create_buffer2 = _interopRequireDefault(_create_buffer);\n\nvar _define_crc = __webpack_require__(/*! ./define_crc */ "./node_modules/crc/lib/es6/define_crc.js");\n\nvar _define_crc2 = _interopRequireDefault(_define_crc);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Generated by `./pycrc.py --algorithm=table-driven --model=ccitt --generate=c`\n// prettier-ignore\nvar TABLE = [0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4, 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823, 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70, 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c, 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab, 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0];\n\nif (typeof Int32Array !== \'undefined\') TABLE = new Int32Array(TABLE);\n\nvar crc16ccitt = (0, _define_crc2.default)(\'ccitt\', function (buf, previous) {\n  if (!_buffer.Buffer.isBuffer(buf)) buf = (0, _create_buffer2.default)(buf);\n\n  var crc = typeof previous !== \'undefined\' ? ~~previous : 0xffff;\n\n  for (var index = 0; index < buf.length; index++) {\n    var byte = buf[index];\n    crc = (TABLE[(crc >> 8 ^ byte) & 0xff] ^ crc << 8) & 0xffff;\n  }\n\n  return crc;\n});\n\nexports["default"] = crc16ccitt;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/crc/lib/es6/crc16ccitt.js?')},"./node_modules/crc/lib/es6/crc16kermit.js":
/*!*************************************************!*\
  !*** ./node_modules/crc/lib/es6/crc16kermit.js ***!
  \*************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\n\nvar _buffer = __webpack_require__(/*! buffer */ "buffer");\n\nvar _create_buffer = __webpack_require__(/*! ./create_buffer */ "./node_modules/crc/lib/es6/create_buffer.js");\n\nvar _create_buffer2 = _interopRequireDefault(_create_buffer);\n\nvar _define_crc = __webpack_require__(/*! ./define_crc */ "./node_modules/crc/lib/es6/define_crc.js");\n\nvar _define_crc2 = _interopRequireDefault(_define_crc);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Generated by `./pycrc.py --algorithm=table-driven --model=kermit --generate=c`\n// prettier-ignore\nvar TABLE = [0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7, 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e, 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876, 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd, 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5, 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c, 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974, 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb, 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3, 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a, 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72, 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9, 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1, 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738, 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70, 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7, 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff, 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036, 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e, 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5, 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd, 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134, 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c, 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3, 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb, 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232, 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a, 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1, 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9, 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330, 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78];\n\nif (typeof Int32Array !== \'undefined\') TABLE = new Int32Array(TABLE);\n\nvar crc16kermit = (0, _define_crc2.default)(\'kermit\', function (buf, previous) {\n  if (!_buffer.Buffer.isBuffer(buf)) buf = (0, _create_buffer2.default)(buf);\n\n  var crc = typeof previous !== \'undefined\' ? ~~previous : 0x0000;\n\n  for (var index = 0; index < buf.length; index++) {\n    var byte = buf[index];\n    crc = (TABLE[(crc ^ byte) & 0xff] ^ crc >> 8) & 0xffff;\n  }\n\n  return crc;\n});\n\nexports["default"] = crc16kermit;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/crc/lib/es6/crc16kermit.js?')},"./node_modules/crc/lib/es6/crc16modbus.js":
/*!*************************************************!*\
  !*** ./node_modules/crc/lib/es6/crc16modbus.js ***!
  \*************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\n\nvar _buffer = __webpack_require__(/*! buffer */ "buffer");\n\nvar _create_buffer = __webpack_require__(/*! ./create_buffer */ "./node_modules/crc/lib/es6/create_buffer.js");\n\nvar _create_buffer2 = _interopRequireDefault(_create_buffer);\n\nvar _define_crc = __webpack_require__(/*! ./define_crc */ "./node_modules/crc/lib/es6/define_crc.js");\n\nvar _define_crc2 = _interopRequireDefault(_define_crc);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Generated by `./pycrc.py --algorithm=table-driven --model=crc-16-modbus --generate=c`\n// prettier-ignore\nvar TABLE = [0x0000, 0xc0c1, 0xc181, 0x0140, 0xc301, 0x03c0, 0x0280, 0xc241, 0xc601, 0x06c0, 0x0780, 0xc741, 0x0500, 0xc5c1, 0xc481, 0x0440, 0xcc01, 0x0cc0, 0x0d80, 0xcd41, 0x0f00, 0xcfc1, 0xce81, 0x0e40, 0x0a00, 0xcac1, 0xcb81, 0x0b40, 0xc901, 0x09c0, 0x0880, 0xc841, 0xd801, 0x18c0, 0x1980, 0xd941, 0x1b00, 0xdbc1, 0xda81, 0x1a40, 0x1e00, 0xdec1, 0xdf81, 0x1f40, 0xdd01, 0x1dc0, 0x1c80, 0xdc41, 0x1400, 0xd4c1, 0xd581, 0x1540, 0xd701, 0x17c0, 0x1680, 0xd641, 0xd201, 0x12c0, 0x1380, 0xd341, 0x1100, 0xd1c1, 0xd081, 0x1040, 0xf001, 0x30c0, 0x3180, 0xf141, 0x3300, 0xf3c1, 0xf281, 0x3240, 0x3600, 0xf6c1, 0xf781, 0x3740, 0xf501, 0x35c0, 0x3480, 0xf441, 0x3c00, 0xfcc1, 0xfd81, 0x3d40, 0xff01, 0x3fc0, 0x3e80, 0xfe41, 0xfa01, 0x3ac0, 0x3b80, 0xfb41, 0x3900, 0xf9c1, 0xf881, 0x3840, 0x2800, 0xe8c1, 0xe981, 0x2940, 0xeb01, 0x2bc0, 0x2a80, 0xea41, 0xee01, 0x2ec0, 0x2f80, 0xef41, 0x2d00, 0xedc1, 0xec81, 0x2c40, 0xe401, 0x24c0, 0x2580, 0xe541, 0x2700, 0xe7c1, 0xe681, 0x2640, 0x2200, 0xe2c1, 0xe381, 0x2340, 0xe101, 0x21c0, 0x2080, 0xe041, 0xa001, 0x60c0, 0x6180, 0xa141, 0x6300, 0xa3c1, 0xa281, 0x6240, 0x6600, 0xa6c1, 0xa781, 0x6740, 0xa501, 0x65c0, 0x6480, 0xa441, 0x6c00, 0xacc1, 0xad81, 0x6d40, 0xaf01, 0x6fc0, 0x6e80, 0xae41, 0xaa01, 0x6ac0, 0x6b80, 0xab41, 0x6900, 0xa9c1, 0xa881, 0x6840, 0x7800, 0xb8c1, 0xb981, 0x7940, 0xbb01, 0x7bc0, 0x7a80, 0xba41, 0xbe01, 0x7ec0, 0x7f80, 0xbf41, 0x7d00, 0xbdc1, 0xbc81, 0x7c40, 0xb401, 0x74c0, 0x7580, 0xb541, 0x7700, 0xb7c1, 0xb681, 0x7640, 0x7200, 0xb2c1, 0xb381, 0x7340, 0xb101, 0x71c0, 0x7080, 0xb041, 0x5000, 0x90c1, 0x9181, 0x5140, 0x9301, 0x53c0, 0x5280, 0x9241, 0x9601, 0x56c0, 0x5780, 0x9741, 0x5500, 0x95c1, 0x9481, 0x5440, 0x9c01, 0x5cc0, 0x5d80, 0x9d41, 0x5f00, 0x9fc1, 0x9e81, 0x5e40, 0x5a00, 0x9ac1, 0x9b81, 0x5b40, 0x9901, 0x59c0, 0x5880, 0x9841, 0x8801, 0x48c0, 0x4980, 0x8941, 0x4b00, 0x8bc1, 0x8a81, 0x4a40, 0x4e00, 0x8ec1, 0x8f81, 0x4f40, 0x8d01, 0x4dc0, 0x4c80, 0x8c41, 0x4400, 0x84c1, 0x8581, 0x4540, 0x8701, 0x47c0, 0x4680, 0x8641, 0x8201, 0x42c0, 0x4380, 0x8341, 0x4100, 0x81c1, 0x8081, 0x4040];\n\nif (typeof Int32Array !== \'undefined\') TABLE = new Int32Array(TABLE);\n\nvar crc16modbus = (0, _define_crc2.default)(\'crc-16-modbus\', function (buf, previous) {\n  if (!_buffer.Buffer.isBuffer(buf)) buf = (0, _create_buffer2.default)(buf);\n\n  var crc = typeof previous !== \'undefined\' ? ~~previous : 0xffff;\n\n  for (var index = 0; index < buf.length; index++) {\n    var byte = buf[index];\n    crc = (TABLE[(crc ^ byte) & 0xff] ^ crc >> 8) & 0xffff;\n  }\n\n  return crc;\n});\n\nexports["default"] = crc16modbus;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/crc/lib/es6/crc16modbus.js?')},"./node_modules/crc/lib/es6/crc16xmodem.js":
/*!*************************************************!*\
  !*** ./node_modules/crc/lib/es6/crc16xmodem.js ***!
  \*************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\n\nvar _buffer = __webpack_require__(/*! buffer */ "buffer");\n\nvar _create_buffer = __webpack_require__(/*! ./create_buffer */ "./node_modules/crc/lib/es6/create_buffer.js");\n\nvar _create_buffer2 = _interopRequireDefault(_create_buffer);\n\nvar _define_crc = __webpack_require__(/*! ./define_crc */ "./node_modules/crc/lib/es6/define_crc.js");\n\nvar _define_crc2 = _interopRequireDefault(_define_crc);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar crc16xmodem = (0, _define_crc2.default)(\'xmodem\', function (buf, previous) {\n  if (!_buffer.Buffer.isBuffer(buf)) buf = (0, _create_buffer2.default)(buf);\n\n  var crc = typeof previous !== \'undefined\' ? ~~previous : 0x0;\n\n  for (var index = 0; index < buf.length; index++) {\n    var byte = buf[index];\n    var code = crc >>> 8 & 0xff;\n\n    code ^= byte & 0xff;\n    code ^= code >>> 4;\n    crc = crc << 8 & 0xffff;\n    crc ^= code;\n    code = code << 5 & 0xffff;\n    crc ^= code;\n    code = code << 7 & 0xffff;\n    crc ^= code;\n  }\n\n  return crc;\n});\n\nexports["default"] = crc16xmodem;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/crc/lib/es6/crc16xmodem.js?')},"./node_modules/crc/lib/es6/crc24.js":
/*!*******************************************!*\
  !*** ./node_modules/crc/lib/es6/crc24.js ***!
  \*******************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\n\nvar _buffer = __webpack_require__(/*! buffer */ "buffer");\n\nvar _create_buffer = __webpack_require__(/*! ./create_buffer */ "./node_modules/crc/lib/es6/create_buffer.js");\n\nvar _create_buffer2 = _interopRequireDefault(_create_buffer);\n\nvar _define_crc = __webpack_require__(/*! ./define_crc */ "./node_modules/crc/lib/es6/define_crc.js");\n\nvar _define_crc2 = _interopRequireDefault(_define_crc);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Generated by `./pycrc.py --algorithm=table-drive --model=crc-24 --generate=c`\n// prettier-ignore\nvar TABLE = [0x000000, 0x864cfb, 0x8ad50d, 0x0c99f6, 0x93e6e1, 0x15aa1a, 0x1933ec, 0x9f7f17, 0xa18139, 0x27cdc2, 0x2b5434, 0xad18cf, 0x3267d8, 0xb42b23, 0xb8b2d5, 0x3efe2e, 0xc54e89, 0x430272, 0x4f9b84, 0xc9d77f, 0x56a868, 0xd0e493, 0xdc7d65, 0x5a319e, 0x64cfb0, 0xe2834b, 0xee1abd, 0x685646, 0xf72951, 0x7165aa, 0x7dfc5c, 0xfbb0a7, 0x0cd1e9, 0x8a9d12, 0x8604e4, 0x00481f, 0x9f3708, 0x197bf3, 0x15e205, 0x93aefe, 0xad50d0, 0x2b1c2b, 0x2785dd, 0xa1c926, 0x3eb631, 0xb8faca, 0xb4633c, 0x322fc7, 0xc99f60, 0x4fd39b, 0x434a6d, 0xc50696, 0x5a7981, 0xdc357a, 0xd0ac8c, 0x56e077, 0x681e59, 0xee52a2, 0xe2cb54, 0x6487af, 0xfbf8b8, 0x7db443, 0x712db5, 0xf7614e, 0x19a3d2, 0x9fef29, 0x9376df, 0x153a24, 0x8a4533, 0x0c09c8, 0x00903e, 0x86dcc5, 0xb822eb, 0x3e6e10, 0x32f7e6, 0xb4bb1d, 0x2bc40a, 0xad88f1, 0xa11107, 0x275dfc, 0xdced5b, 0x5aa1a0, 0x563856, 0xd074ad, 0x4f0bba, 0xc94741, 0xc5deb7, 0x43924c, 0x7d6c62, 0xfb2099, 0xf7b96f, 0x71f594, 0xee8a83, 0x68c678, 0x645f8e, 0xe21375, 0x15723b, 0x933ec0, 0x9fa736, 0x19ebcd, 0x8694da, 0x00d821, 0x0c41d7, 0x8a0d2c, 0xb4f302, 0x32bff9, 0x3e260f, 0xb86af4, 0x2715e3, 0xa15918, 0xadc0ee, 0x2b8c15, 0xd03cb2, 0x567049, 0x5ae9bf, 0xdca544, 0x43da53, 0xc596a8, 0xc90f5e, 0x4f43a5, 0x71bd8b, 0xf7f170, 0xfb6886, 0x7d247d, 0xe25b6a, 0x641791, 0x688e67, 0xeec29c, 0x3347a4, 0xb50b5f, 0xb992a9, 0x3fde52, 0xa0a145, 0x26edbe, 0x2a7448, 0xac38b3, 0x92c69d, 0x148a66, 0x181390, 0x9e5f6b, 0x01207c, 0x876c87, 0x8bf571, 0x0db98a, 0xf6092d, 0x7045d6, 0x7cdc20, 0xfa90db, 0x65efcc, 0xe3a337, 0xef3ac1, 0x69763a, 0x578814, 0xd1c4ef, 0xdd5d19, 0x5b11e2, 0xc46ef5, 0x42220e, 0x4ebbf8, 0xc8f703, 0x3f964d, 0xb9dab6, 0xb54340, 0x330fbb, 0xac70ac, 0x2a3c57, 0x26a5a1, 0xa0e95a, 0x9e1774, 0x185b8f, 0x14c279, 0x928e82, 0x0df195, 0x8bbd6e, 0x872498, 0x016863, 0xfad8c4, 0x7c943f, 0x700dc9, 0xf64132, 0x693e25, 0xef72de, 0xe3eb28, 0x65a7d3, 0x5b59fd, 0xdd1506, 0xd18cf0, 0x57c00b, 0xc8bf1c, 0x4ef3e7, 0x426a11, 0xc426ea, 0x2ae476, 0xaca88d, 0xa0317b, 0x267d80, 0xb90297, 0x3f4e6c, 0x33d79a, 0xb59b61, 0x8b654f, 0x0d29b4, 0x01b042, 0x87fcb9, 0x1883ae, 0x9ecf55, 0x9256a3, 0x141a58, 0xefaaff, 0x69e604, 0x657ff2, 0xe33309, 0x7c4c1e, 0xfa00e5, 0xf69913, 0x70d5e8, 0x4e2bc6, 0xc8673d, 0xc4fecb, 0x42b230, 0xddcd27, 0x5b81dc, 0x57182a, 0xd154d1, 0x26359f, 0xa07964, 0xace092, 0x2aac69, 0xb5d37e, 0x339f85, 0x3f0673, 0xb94a88, 0x87b4a6, 0x01f85d, 0x0d61ab, 0x8b2d50, 0x145247, 0x921ebc, 0x9e874a, 0x18cbb1, 0xe37b16, 0x6537ed, 0x69ae1b, 0xefe2e0, 0x709df7, 0xf6d10c, 0xfa48fa, 0x7c0401, 0x42fa2f, 0xc4b6d4, 0xc82f22, 0x4e63d9, 0xd11cce, 0x575035, 0x5bc9c3, 0xdd8538];\n\nif (typeof Int32Array !== \'undefined\') TABLE = new Int32Array(TABLE);\n\nvar crc24 = (0, _define_crc2.default)(\'crc-24\', function (buf, previous) {\n  if (!_buffer.Buffer.isBuffer(buf)) buf = (0, _create_buffer2.default)(buf);\n\n  var crc = typeof previous !== \'undefined\' ? ~~previous : 0xb704ce;\n\n  for (var index = 0; index < buf.length; index++) {\n    var byte = buf[index];\n    crc = (TABLE[(crc >> 16 ^ byte) & 0xff] ^ crc << 8) & 0xffffff;\n  }\n\n  return crc;\n});\n\nexports["default"] = crc24;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/crc/lib/es6/crc24.js?')},"./node_modules/crc/lib/es6/crc32.js":
/*!*******************************************!*\
  !*** ./node_modules/crc/lib/es6/crc32.js ***!
  \*******************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\n\nvar _buffer = __webpack_require__(/*! buffer */ "buffer");\n\nvar _create_buffer = __webpack_require__(/*! ./create_buffer */ "./node_modules/crc/lib/es6/create_buffer.js");\n\nvar _create_buffer2 = _interopRequireDefault(_create_buffer);\n\nvar _define_crc = __webpack_require__(/*! ./define_crc */ "./node_modules/crc/lib/es6/define_crc.js");\n\nvar _define_crc2 = _interopRequireDefault(_define_crc);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Generated by `./pycrc.py --algorithm=table-driven --model=crc-32 --generate=c`\n// prettier-ignore\nvar TABLE = [0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d];\n\nif (typeof Int32Array !== \'undefined\') TABLE = new Int32Array(TABLE);\n\nvar crc32 = (0, _define_crc2.default)(\'crc-32\', function (buf, previous) {\n  if (!_buffer.Buffer.isBuffer(buf)) buf = (0, _create_buffer2.default)(buf);\n\n  var crc = previous === 0 ? 0 : ~~previous ^ -1;\n\n  for (var index = 0; index < buf.length; index++) {\n    var byte = buf[index];\n    crc = TABLE[(crc ^ byte) & 0xff] ^ crc >>> 8;\n  }\n\n  return crc ^ -1;\n});\n\nexports["default"] = crc32;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/crc/lib/es6/crc32.js?')},"./node_modules/crc/lib/es6/crc8.js":
/*!******************************************!*\
  !*** ./node_modules/crc/lib/es6/crc8.js ***!
  \******************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\n\nvar _buffer = __webpack_require__(/*! buffer */ "buffer");\n\nvar _create_buffer = __webpack_require__(/*! ./create_buffer */ "./node_modules/crc/lib/es6/create_buffer.js");\n\nvar _create_buffer2 = _interopRequireDefault(_create_buffer);\n\nvar _define_crc = __webpack_require__(/*! ./define_crc */ "./node_modules/crc/lib/es6/define_crc.js");\n\nvar _define_crc2 = _interopRequireDefault(_define_crc);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Generated by `./pycrc.py --algorithm=table-driven --model=crc-8 --generate=c`\n// prettier-ignore\nvar TABLE = [0x00, 0x07, 0x0e, 0x09, 0x1c, 0x1b, 0x12, 0x15, 0x38, 0x3f, 0x36, 0x31, 0x24, 0x23, 0x2a, 0x2d, 0x70, 0x77, 0x7e, 0x79, 0x6c, 0x6b, 0x62, 0x65, 0x48, 0x4f, 0x46, 0x41, 0x54, 0x53, 0x5a, 0x5d, 0xe0, 0xe7, 0xee, 0xe9, 0xfc, 0xfb, 0xf2, 0xf5, 0xd8, 0xdf, 0xd6, 0xd1, 0xc4, 0xc3, 0xca, 0xcd, 0x90, 0x97, 0x9e, 0x99, 0x8c, 0x8b, 0x82, 0x85, 0xa8, 0xaf, 0xa6, 0xa1, 0xb4, 0xb3, 0xba, 0xbd, 0xc7, 0xc0, 0xc9, 0xce, 0xdb, 0xdc, 0xd5, 0xd2, 0xff, 0xf8, 0xf1, 0xf6, 0xe3, 0xe4, 0xed, 0xea, 0xb7, 0xb0, 0xb9, 0xbe, 0xab, 0xac, 0xa5, 0xa2, 0x8f, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9d, 0x9a, 0x27, 0x20, 0x29, 0x2e, 0x3b, 0x3c, 0x35, 0x32, 0x1f, 0x18, 0x11, 0x16, 0x03, 0x04, 0x0d, 0x0a, 0x57, 0x50, 0x59, 0x5e, 0x4b, 0x4c, 0x45, 0x42, 0x6f, 0x68, 0x61, 0x66, 0x73, 0x74, 0x7d, 0x7a, 0x89, 0x8e, 0x87, 0x80, 0x95, 0x92, 0x9b, 0x9c, 0xb1, 0xb6, 0xbf, 0xb8, 0xad, 0xaa, 0xa3, 0xa4, 0xf9, 0xfe, 0xf7, 0xf0, 0xe5, 0xe2, 0xeb, 0xec, 0xc1, 0xc6, 0xcf, 0xc8, 0xdd, 0xda, 0xd3, 0xd4, 0x69, 0x6e, 0x67, 0x60, 0x75, 0x72, 0x7b, 0x7c, 0x51, 0x56, 0x5f, 0x58, 0x4d, 0x4a, 0x43, 0x44, 0x19, 0x1e, 0x17, 0x10, 0x05, 0x02, 0x0b, 0x0c, 0x21, 0x26, 0x2f, 0x28, 0x3d, 0x3a, 0x33, 0x34, 0x4e, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5c, 0x5b, 0x76, 0x71, 0x78, 0x7f, 0x6a, 0x6d, 0x64, 0x63, 0x3e, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2c, 0x2b, 0x06, 0x01, 0x08, 0x0f, 0x1a, 0x1d, 0x14, 0x13, 0xae, 0xa9, 0xa0, 0xa7, 0xb2, 0xb5, 0xbc, 0xbb, 0x96, 0x91, 0x98, 0x9f, 0x8a, 0x8d, 0x84, 0x83, 0xde, 0xd9, 0xd0, 0xd7, 0xc2, 0xc5, 0xcc, 0xcb, 0xe6, 0xe1, 0xe8, 0xef, 0xfa, 0xfd, 0xf4, 0xf3];\n\nif (typeof Int32Array !== \'undefined\') TABLE = new Int32Array(TABLE);\n\nvar crc8 = (0, _define_crc2.default)(\'crc-8\', function (buf, previous) {\n  if (!_buffer.Buffer.isBuffer(buf)) buf = (0, _create_buffer2.default)(buf);\n\n  var crc = ~~previous;\n\n  for (var index = 0; index < buf.length; index++) {\n    var byte = buf[index];\n    crc = TABLE[(crc ^ byte) & 0xff] & 0xff;\n  }\n\n  return crc;\n});\n\nexports["default"] = crc8;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/crc/lib/es6/crc8.js?')},"./node_modules/crc/lib/es6/crc81wire.js":
/*!***********************************************!*\
  !*** ./node_modules/crc/lib/es6/crc81wire.js ***!
  \***********************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\n\nvar _buffer = __webpack_require__(/*! buffer */ "buffer");\n\nvar _create_buffer = __webpack_require__(/*! ./create_buffer */ "./node_modules/crc/lib/es6/create_buffer.js");\n\nvar _create_buffer2 = _interopRequireDefault(_create_buffer);\n\nvar _define_crc = __webpack_require__(/*! ./define_crc */ "./node_modules/crc/lib/es6/define_crc.js");\n\nvar _define_crc2 = _interopRequireDefault(_define_crc);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Generated by `./pycrc.py --algorithm=table-driven --model=dallas-1-wire --generate=c`\n// prettier-ignore\nvar TABLE = [0x00, 0x5e, 0xbc, 0xe2, 0x61, 0x3f, 0xdd, 0x83, 0xc2, 0x9c, 0x7e, 0x20, 0xa3, 0xfd, 0x1f, 0x41, 0x9d, 0xc3, 0x21, 0x7f, 0xfc, 0xa2, 0x40, 0x1e, 0x5f, 0x01, 0xe3, 0xbd, 0x3e, 0x60, 0x82, 0xdc, 0x23, 0x7d, 0x9f, 0xc1, 0x42, 0x1c, 0xfe, 0xa0, 0xe1, 0xbf, 0x5d, 0x03, 0x80, 0xde, 0x3c, 0x62, 0xbe, 0xe0, 0x02, 0x5c, 0xdf, 0x81, 0x63, 0x3d, 0x7c, 0x22, 0xc0, 0x9e, 0x1d, 0x43, 0xa1, 0xff, 0x46, 0x18, 0xfa, 0xa4, 0x27, 0x79, 0x9b, 0xc5, 0x84, 0xda, 0x38, 0x66, 0xe5, 0xbb, 0x59, 0x07, 0xdb, 0x85, 0x67, 0x39, 0xba, 0xe4, 0x06, 0x58, 0x19, 0x47, 0xa5, 0xfb, 0x78, 0x26, 0xc4, 0x9a, 0x65, 0x3b, 0xd9, 0x87, 0x04, 0x5a, 0xb8, 0xe6, 0xa7, 0xf9, 0x1b, 0x45, 0xc6, 0x98, 0x7a, 0x24, 0xf8, 0xa6, 0x44, 0x1a, 0x99, 0xc7, 0x25, 0x7b, 0x3a, 0x64, 0x86, 0xd8, 0x5b, 0x05, 0xe7, 0xb9, 0x8c, 0xd2, 0x30, 0x6e, 0xed, 0xb3, 0x51, 0x0f, 0x4e, 0x10, 0xf2, 0xac, 0x2f, 0x71, 0x93, 0xcd, 0x11, 0x4f, 0xad, 0xf3, 0x70, 0x2e, 0xcc, 0x92, 0xd3, 0x8d, 0x6f, 0x31, 0xb2, 0xec, 0x0e, 0x50, 0xaf, 0xf1, 0x13, 0x4d, 0xce, 0x90, 0x72, 0x2c, 0x6d, 0x33, 0xd1, 0x8f, 0x0c, 0x52, 0xb0, 0xee, 0x32, 0x6c, 0x8e, 0xd0, 0x53, 0x0d, 0xef, 0xb1, 0xf0, 0xae, 0x4c, 0x12, 0x91, 0xcf, 0x2d, 0x73, 0xca, 0x94, 0x76, 0x28, 0xab, 0xf5, 0x17, 0x49, 0x08, 0x56, 0xb4, 0xea, 0x69, 0x37, 0xd5, 0x8b, 0x57, 0x09, 0xeb, 0xb5, 0x36, 0x68, 0x8a, 0xd4, 0x95, 0xcb, 0x29, 0x77, 0xf4, 0xaa, 0x48, 0x16, 0xe9, 0xb7, 0x55, 0x0b, 0x88, 0xd6, 0x34, 0x6a, 0x2b, 0x75, 0x97, 0xc9, 0x4a, 0x14, 0xf6, 0xa8, 0x74, 0x2a, 0xc8, 0x96, 0x15, 0x4b, 0xa9, 0xf7, 0xb6, 0xe8, 0x0a, 0x54, 0xd7, 0x89, 0x6b, 0x35];\n\nif (typeof Int32Array !== \'undefined\') TABLE = new Int32Array(TABLE);\n\nvar crc81wire = (0, _define_crc2.default)(\'dallas-1-wire\', function (buf, previous) {\n  if (!_buffer.Buffer.isBuffer(buf)) buf = (0, _create_buffer2.default)(buf);\n\n  var crc = ~~previous;\n\n  for (var index = 0; index < buf.length; index++) {\n    var byte = buf[index];\n    crc = TABLE[(crc ^ byte) & 0xff] & 0xff;\n  }\n\n  return crc;\n});\n\nexports["default"] = crc81wire;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/crc/lib/es6/crc81wire.js?')},"./node_modules/crc/lib/es6/crcjam.js":
/*!********************************************!*\
  !*** ./node_modules/crc/lib/es6/crcjam.js ***!
  \********************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\n\nvar _buffer = __webpack_require__(/*! buffer */ "buffer");\n\nvar _create_buffer = __webpack_require__(/*! ./create_buffer */ "./node_modules/crc/lib/es6/create_buffer.js");\n\nvar _create_buffer2 = _interopRequireDefault(_create_buffer);\n\nvar _define_crc = __webpack_require__(/*! ./define_crc */ "./node_modules/crc/lib/es6/define_crc.js");\n\nvar _define_crc2 = _interopRequireDefault(_define_crc);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Generated by `./pycrc.py --algorithm=table-driven --model=jam --generate=c`\n// prettier-ignore\nvar TABLE = [0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d];\n\nif (typeof Int32Array !== \'undefined\') TABLE = new Int32Array(TABLE);\n\nvar crcjam = (0, _define_crc2.default)(\'jam\', function (buf) {\n  var previous = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -1;\n\n  if (!_buffer.Buffer.isBuffer(buf)) buf = (0, _create_buffer2.default)(buf);\n\n  var crc = previous === 0 ? 0 : ~~previous;\n\n  for (var index = 0; index < buf.length; index++) {\n    var byte = buf[index];\n    crc = TABLE[(crc ^ byte) & 0xff] ^ crc >>> 8;\n  }\n\n  return crc;\n});\n\nexports["default"] = crcjam;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/crc/lib/es6/crcjam.js?')},"./node_modules/crc/lib/es6/create_buffer.js":
/*!***************************************************!*\
  !*** ./node_modules/crc/lib/es6/create_buffer.js ***!
  \***************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\n\nvar _buffer = __webpack_require__(/*! buffer */ "buffer");\n\nvar createBuffer = _buffer.Buffer.from && _buffer.Buffer.alloc && _buffer.Buffer.allocUnsafe && _buffer.Buffer.allocUnsafeSlow ? _buffer.Buffer.from : // support for Node < 5.10\nfunction (val) {\n  return new _buffer.Buffer(val);\n};\n\nexports["default"] = createBuffer;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/crc/lib/es6/create_buffer.js?')},"./node_modules/crc/lib/es6/define_crc.js":
/*!************************************************!*\
  !*** ./node_modules/crc/lib/es6/define_crc.js ***!
  \************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\n\nexports["default"] = function (model, calc) {\n  var fn = function fn(buf, previous) {\n    return calc(buf, previous) >>> 0;\n  };\n  fn.signed = calc;\n  fn.unsigned = fn;\n  fn.model = model;\n\n  return fn;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/crc/lib/es6/define_crc.js?')},"./node_modules/crc/lib/index.js":
/*!***************************************!*\
  !*** ./node_modules/crc/lib/index.js ***!
  \***************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nmodule.exports = {\n  crc1: __webpack_require__(/*! ./crc1 */ "./node_modules/crc/lib/crc1.js"),\n  crc8: __webpack_require__(/*! ./crc8 */ "./node_modules/crc/lib/crc8.js"),\n  crc81wire: __webpack_require__(/*! ./crc8_1wire */ "./node_modules/crc/lib/crc8_1wire.js"),\n  crc16: __webpack_require__(/*! ./crc16 */ "./node_modules/crc/lib/crc16.js"),\n  crc16ccitt: __webpack_require__(/*! ./crc16_ccitt */ "./node_modules/crc/lib/crc16_ccitt.js"),\n  crc16modbus: __webpack_require__(/*! ./crc16_modbus */ "./node_modules/crc/lib/crc16_modbus.js"),\n  crc16xmodem: __webpack_require__(/*! ./crc16_xmodem */ "./node_modules/crc/lib/crc16_xmodem.js"),\n  crc16kermit: __webpack_require__(/*! ./crc16_kermit */ "./node_modules/crc/lib/crc16_kermit.js"),\n  crc24: __webpack_require__(/*! ./crc24 */ "./node_modules/crc/lib/crc24.js"),\n  crc32: __webpack_require__(/*! ./crc32 */ "./node_modules/crc/lib/crc32.js"),\n  crcjam: __webpack_require__(/*! ./crcjam */ "./node_modules/crc/lib/crcjam.js")\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/crc/lib/index.js?')},"./node_modules/cross-spawn/index.js":
/*!*******************************************!*\
  !*** ./node_modules/cross-spawn/index.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst cp = __webpack_require__(/*! child_process */ "child_process");\nconst parse = __webpack_require__(/*! ./lib/parse */ "./node_modules/cross-spawn/lib/parse.js");\nconst enoent = __webpack_require__(/*! ./lib/enoent */ "./node_modules/cross-spawn/lib/enoent.js");\n\nfunction spawn(command, args, options) {\n    // Parse the arguments\n    const parsed = parse(command, args, options);\n\n    // Spawn the child process\n    const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\n\n    // Hook into child process "exit" event to emit an error if the command\n    // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n    enoent.hookChildProcess(spawned, parsed);\n\n    return spawned;\n}\n\nfunction spawnSync(command, args, options) {\n    // Parse the arguments\n    const parsed = parse(command, args, options);\n\n    // Spawn the child process\n    const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);\n\n    // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n    result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);\n\n    return result;\n}\n\nmodule.exports = spawn;\nmodule.exports.spawn = spawn;\nmodule.exports.sync = spawnSync;\n\nmodule.exports._parse = parse;\nmodule.exports._enoent = enoent;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/cross-spawn/index.js?')},"./node_modules/cross-spawn/lib/enoent.js":
/*!************************************************!*\
  !*** ./node_modules/cross-spawn/lib/enoent.js ***!
  \************************************************/module=>{"use strict";eval("\n\nconst isWin = process.platform === 'win32';\n\nfunction notFoundError(original, syscall) {\n    return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {\n        code: 'ENOENT',\n        errno: 'ENOENT',\n        syscall: `${syscall} ${original.command}`,\n        path: original.command,\n        spawnargs: original.args,\n    });\n}\n\nfunction hookChildProcess(cp, parsed) {\n    if (!isWin) {\n        return;\n    }\n\n    const originalEmit = cp.emit;\n\n    cp.emit = function (name, arg1) {\n        // If emitting \"exit\" event and exit code is 1, we need to check if\n        // the command exists and emit an \"error\" instead\n        // See https://github.com/IndigoUnited/node-cross-spawn/issues/16\n        if (name === 'exit') {\n            const err = verifyENOENT(arg1, parsed, 'spawn');\n\n            if (err) {\n                return originalEmit.call(cp, 'error', err);\n            }\n        }\n\n        return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params\n    };\n}\n\nfunction verifyENOENT(status, parsed) {\n    if (isWin && status === 1 && !parsed.file) {\n        return notFoundError(parsed.original, 'spawn');\n    }\n\n    return null;\n}\n\nfunction verifyENOENTSync(status, parsed) {\n    if (isWin && status === 1 && !parsed.file) {\n        return notFoundError(parsed.original, 'spawnSync');\n    }\n\n    return null;\n}\n\nmodule.exports = {\n    hookChildProcess,\n    verifyENOENT,\n    verifyENOENTSync,\n    notFoundError,\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/cross-spawn/lib/enoent.js?")},"./node_modules/cross-spawn/lib/parse.js":
/*!***********************************************!*\
  !*** ./node_modules/cross-spawn/lib/parse.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst path = __webpack_require__(/*! path */ \"path\");\nconst resolveCommand = __webpack_require__(/*! ./util/resolveCommand */ \"./node_modules/cross-spawn/lib/util/resolveCommand.js\");\nconst escape = __webpack_require__(/*! ./util/escape */ \"./node_modules/cross-spawn/lib/util/escape.js\");\nconst readShebang = __webpack_require__(/*! ./util/readShebang */ \"./node_modules/cross-spawn/lib/util/readShebang.js\");\n\nconst isWin = process.platform === 'win32';\nconst isExecutableRegExp = /\\.(?:com|exe)$/i;\nconst isCmdShimRegExp = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\n\nfunction detectShebang(parsed) {\n    parsed.file = resolveCommand(parsed);\n\n    const shebang = parsed.file && readShebang(parsed.file);\n\n    if (shebang) {\n        parsed.args.unshift(parsed.file);\n        parsed.command = shebang;\n\n        return resolveCommand(parsed);\n    }\n\n    return parsed.file;\n}\n\nfunction parseNonShell(parsed) {\n    if (!isWin) {\n        return parsed;\n    }\n\n    // Detect & add support for shebangs\n    const commandFile = detectShebang(parsed);\n\n    // We don't need a shell if the command filename is an executable\n    const needsShell = !isExecutableRegExp.test(commandFile);\n\n    // If a shell is required, use cmd.exe and take care of escaping everything correctly\n    // Note that `forceShell` is an hidden option used only in tests\n    if (parsed.options.forceShell || needsShell) {\n        // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/`\n        // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument\n        // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called,\n        // we need to double escape them\n        const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);\n\n        // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\\bar)\n        // This is necessary otherwise it will always fail with ENOENT in those cases\n        parsed.command = path.normalize(parsed.command);\n\n        // Escape command & arguments\n        parsed.command = escape.command(parsed.command);\n        parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));\n\n        const shellCommand = [parsed.command].concat(parsed.args).join(' ');\n\n        parsed.args = ['/d', '/s', '/c', `\"${shellCommand}\"`];\n        parsed.command = ({\"APP_ENV\":\"webpack\"}).comspec || 'cmd.exe';\n        parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped\n    }\n\n    return parsed;\n}\n\nfunction parse(command, args, options) {\n    // Normalize arguments, similar to nodejs\n    if (args && !Array.isArray(args)) {\n        options = args;\n        args = null;\n    }\n\n    args = args ? args.slice(0) : []; // Clone array to avoid changing the original\n    options = Object.assign({}, options); // Clone object to avoid changing the original\n\n    // Build our parsed object\n    const parsed = {\n        command,\n        args,\n        options,\n        file: undefined,\n        original: {\n            command,\n            args,\n        },\n    };\n\n    // Delegate further parsing to shell or non-shell\n    return options.shell ? parsed : parseNonShell(parsed);\n}\n\nmodule.exports = parse;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/cross-spawn/lib/parse.js?")},"./node_modules/cross-spawn/lib/util/escape.js":
/*!*****************************************************!*\
  !*** ./node_modules/cross-spawn/lib/util/escape.js ***!
  \*****************************************************/module=>{"use strict";eval("\n\n// See http://www.robvanderwoude.com/escapechars.php\nconst metaCharsRegExp = /([()\\][%!^\"`<>&|;, *?])/g;\n\nfunction escapeCommand(arg) {\n    // Escape meta chars\n    arg = arg.replace(metaCharsRegExp, '^$1');\n\n    return arg;\n}\n\nfunction escapeArgument(arg, doubleEscapeMetaChars) {\n    // Convert to string\n    arg = `${arg}`;\n\n    // Algorithm below is based on https://qntm.org/cmd\n\n    // Sequence of backslashes followed by a double quote:\n    // double up all the backslashes and escape the double quote\n    arg = arg.replace(/(\\\\*)\"/g, '$1$1\\\\\"');\n\n    // Sequence of backslashes followed by the end of the string\n    // (which will become a double quote later):\n    // double up all the backslashes\n    arg = arg.replace(/(\\\\*)$/, '$1$1');\n\n    // All other backslashes occur literally\n\n    // Quote the whole thing:\n    arg = `\"${arg}\"`;\n\n    // Escape meta chars\n    arg = arg.replace(metaCharsRegExp, '^$1');\n\n    // Double escape meta chars if necessary\n    if (doubleEscapeMetaChars) {\n        arg = arg.replace(metaCharsRegExp, '^$1');\n    }\n\n    return arg;\n}\n\nmodule.exports.command = escapeCommand;\nmodule.exports.argument = escapeArgument;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/cross-spawn/lib/util/escape.js?")},"./node_modules/cross-spawn/lib/util/readShebang.js":
/*!**********************************************************!*\
  !*** ./node_modules/cross-spawn/lib/util/readShebang.js ***!
  \**********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst fs = __webpack_require__(/*! fs */ "fs");\nconst shebangCommand = __webpack_require__(/*! shebang-command */ "./node_modules/shebang-command/index.js");\n\nfunction readShebang(command) {\n    // Read the first 150 bytes from the file\n    const size = 150;\n    const buffer = Buffer.alloc(size);\n\n    let fd;\n\n    try {\n        fd = fs.openSync(command, \'r\');\n        fs.readSync(fd, buffer, 0, size, 0);\n        fs.closeSync(fd);\n    } catch (e) { /* Empty */ }\n\n    // Attempt to extract shebang (null is returned if not a shebang)\n    return shebangCommand(buffer.toString());\n}\n\nmodule.exports = readShebang;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/cross-spawn/lib/util/readShebang.js?')},"./node_modules/cross-spawn/lib/util/resolveCommand.js":
/*!*************************************************************!*\
  !*** ./node_modules/cross-spawn/lib/util/resolveCommand.js ***!
  \*************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst path = __webpack_require__(/*! path */ "path");\nconst which = __webpack_require__(/*! which */ "./node_modules/which/which.js");\nconst getPathKey = __webpack_require__(/*! path-key */ "./node_modules/path-key/index.js");\n\nfunction resolveCommandAttempt(parsed, withoutPathExt) {\n    const env = parsed.options.env || ({"APP_ENV":"webpack"});\n    const cwd = process.cwd();\n    const hasCustomCwd = parsed.options.cwd != null;\n    // Worker threads do not have process.chdir()\n    const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled;\n\n    // If a custom `cwd` was specified, we need to change the process cwd\n    // because `which` will do stat calls but does not support a custom cwd\n    if (shouldSwitchCwd) {\n        try {\n            process.chdir(parsed.options.cwd);\n        } catch (err) {\n            /* Empty */\n        }\n    }\n\n    let resolved;\n\n    try {\n        resolved = which.sync(parsed.command, {\n            path: env[getPathKey({ env })],\n            pathExt: withoutPathExt ? path.delimiter : undefined,\n        });\n    } catch (e) {\n        /* Empty */\n    } finally {\n        if (shouldSwitchCwd) {\n            process.chdir(cwd);\n        }\n    }\n\n    // If we successfully resolved, ensure that an absolute path is returned\n    // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it\n    if (resolved) {\n        resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : \'\', resolved);\n    }\n\n    return resolved;\n}\n\nfunction resolveCommand(parsed) {\n    return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);\n}\n\nmodule.exports = resolveCommand;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/cross-spawn/lib/util/resolveCommand.js?')},"./node_modules/cssfilter/lib/css.js":
/*!*******************************************!*\
  !*** ./node_modules/cssfilter/lib/css.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("/**\n * cssfilter\n *\n * @author 老雷<leizongmin@gmail.com>\n */\n\nvar DEFAULT = __webpack_require__(/*! ./default */ \"./node_modules/cssfilter/lib/default.js\");\nvar parseStyle = __webpack_require__(/*! ./parser */ \"./node_modules/cssfilter/lib/parser.js\");\nvar _ = __webpack_require__(/*! ./util */ \"./node_modules/cssfilter/lib/util.js\");\n\n\n/**\n * 返回值是否为空\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull (obj) {\n  return (obj === undefined || obj === null);\n}\n\n/**\n * 浅拷贝对象\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction shallowCopyObject (obj) {\n  var ret = {};\n  for (var i in obj) {\n    ret[i] = obj[i];\n  }\n  return ret;\n}\n\n/**\n * 创建CSS过滤器\n *\n * @param {Object} options\n *   - {Object} whiteList\n *   - {Function} onAttr\n *   - {Function} onIgnoreAttr\n *   - {Function} safeAttrValue\n */\nfunction FilterCSS (options) {\n  options = shallowCopyObject(options || {});\n  options.whiteList = options.whiteList || DEFAULT.whiteList;\n  options.onAttr = options.onAttr || DEFAULT.onAttr;\n  options.onIgnoreAttr = options.onIgnoreAttr || DEFAULT.onIgnoreAttr;\n  options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;\n  this.options = options;\n}\n\nFilterCSS.prototype.process = function (css) {\n  // 兼容各种奇葩输入\n  css = css || '';\n  css = css.toString();\n  if (!css) return '';\n\n  var me = this;\n  var options = me.options;\n  var whiteList = options.whiteList;\n  var onAttr = options.onAttr;\n  var onIgnoreAttr = options.onIgnoreAttr;\n  var safeAttrValue = options.safeAttrValue;\n\n  var retCSS = parseStyle(css, function (sourcePosition, position, name, value, source) {\n\n    var check = whiteList[name];\n    var isWhite = false;\n    if (check === true) isWhite = check;\n    else if (typeof check === 'function') isWhite = check(value);\n    else if (check instanceof RegExp) isWhite = check.test(value);\n    if (isWhite !== true) isWhite = false;\n\n    // 如果过滤后 value 为空则直接忽略\n    value = safeAttrValue(name, value);\n    if (!value) return;\n\n    var opts = {\n      position: position,\n      sourcePosition: sourcePosition,\n      source: source,\n      isWhite: isWhite\n    };\n\n    if (isWhite) {\n\n      var ret = onAttr(name, value, opts);\n      if (isNull(ret)) {\n        return name + ':' + value;\n      } else {\n        return ret;\n      }\n\n    } else {\n\n      var ret = onIgnoreAttr(name, value, opts);\n      if (!isNull(ret)) {\n        return ret;\n      }\n\n    }\n  });\n\n  return retCSS;\n};\n\n\nmodule.exports = FilterCSS;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/cssfilter/lib/css.js?")},"./node_modules/cssfilter/lib/default.js":
/*!***********************************************!*\
  !*** ./node_modules/cssfilter/lib/default.js ***!
  \***********************************************/(__unused_webpack_module,exports)=>{eval("/**\n * cssfilter\n *\n * @author 老雷<leizongmin@gmail.com>\n */\n\nfunction getDefaultWhiteList () {\n  // 白名单值说明：\n  // true: 允许该属性\n  // Function: function (val) { } 返回true表示允许该属性，其他值均表示不允许\n  // RegExp: regexp.test(val) 返回true表示允许该属性，其他值均表示不允许\n  // 除上面列出的值外均表示不允许\n  var whiteList = {};\n\n  whiteList['align-content'] = false; // default: auto\n  whiteList['align-items'] = false; // default: auto\n  whiteList['align-self'] = false; // default: auto\n  whiteList['alignment-adjust'] = false; // default: auto\n  whiteList['alignment-baseline'] = false; // default: baseline\n  whiteList['all'] = false; // default: depending on individual properties\n  whiteList['anchor-point'] = false; // default: none\n  whiteList['animation'] = false; // default: depending on individual properties\n  whiteList['animation-delay'] = false; // default: 0\n  whiteList['animation-direction'] = false; // default: normal\n  whiteList['animation-duration'] = false; // default: 0\n  whiteList['animation-fill-mode'] = false; // default: none\n  whiteList['animation-iteration-count'] = false; // default: 1\n  whiteList['animation-name'] = false; // default: none\n  whiteList['animation-play-state'] = false; // default: running\n  whiteList['animation-timing-function'] = false; // default: ease\n  whiteList['azimuth'] = false; // default: center\n  whiteList['backface-visibility'] = false; // default: visible\n  whiteList['background'] = true; // default: depending on individual properties\n  whiteList['background-attachment'] = true; // default: scroll\n  whiteList['background-clip'] = true; // default: border-box\n  whiteList['background-color'] = true; // default: transparent\n  whiteList['background-image'] = true; // default: none\n  whiteList['background-origin'] = true; // default: padding-box\n  whiteList['background-position'] = true; // default: 0% 0%\n  whiteList['background-repeat'] = true; // default: repeat\n  whiteList['background-size'] = true; // default: auto\n  whiteList['baseline-shift'] = false; // default: baseline\n  whiteList['binding'] = false; // default: none\n  whiteList['bleed'] = false; // default: 6pt\n  whiteList['bookmark-label'] = false; // default: content()\n  whiteList['bookmark-level'] = false; // default: none\n  whiteList['bookmark-state'] = false; // default: open\n  whiteList['border'] = true; // default: depending on individual properties\n  whiteList['border-bottom'] = true; // default: depending on individual properties\n  whiteList['border-bottom-color'] = true; // default: current color\n  whiteList['border-bottom-left-radius'] = true; // default: 0\n  whiteList['border-bottom-right-radius'] = true; // default: 0\n  whiteList['border-bottom-style'] = true; // default: none\n  whiteList['border-bottom-width'] = true; // default: medium\n  whiteList['border-collapse'] = true; // default: separate\n  whiteList['border-color'] = true; // default: depending on individual properties\n  whiteList['border-image'] = true; // default: none\n  whiteList['border-image-outset'] = true; // default: 0\n  whiteList['border-image-repeat'] = true; // default: stretch\n  whiteList['border-image-slice'] = true; // default: 100%\n  whiteList['border-image-source'] = true; // default: none\n  whiteList['border-image-width'] = true; // default: 1\n  whiteList['border-left'] = true; // default: depending on individual properties\n  whiteList['border-left-color'] = true; // default: current color\n  whiteList['border-left-style'] = true; // default: none\n  whiteList['border-left-width'] = true; // default: medium\n  whiteList['border-radius'] = true; // default: 0\n  whiteList['border-right'] = true; // default: depending on individual properties\n  whiteList['border-right-color'] = true; // default: current color\n  whiteList['border-right-style'] = true; // default: none\n  whiteList['border-right-width'] = true; // default: medium\n  whiteList['border-spacing'] = true; // default: 0\n  whiteList['border-style'] = true; // default: depending on individual properties\n  whiteList['border-top'] = true; // default: depending on individual properties\n  whiteList['border-top-color'] = true; // default: current color\n  whiteList['border-top-left-radius'] = true; // default: 0\n  whiteList['border-top-right-radius'] = true; // default: 0\n  whiteList['border-top-style'] = true; // default: none\n  whiteList['border-top-width'] = true; // default: medium\n  whiteList['border-width'] = true; // default: depending on individual properties\n  whiteList['bottom'] = false; // default: auto\n  whiteList['box-decoration-break'] = true; // default: slice\n  whiteList['box-shadow'] = true; // default: none\n  whiteList['box-sizing'] = true; // default: content-box\n  whiteList['box-snap'] = true; // default: none\n  whiteList['box-suppress'] = true; // default: show\n  whiteList['break-after'] = true; // default: auto\n  whiteList['break-before'] = true; // default: auto\n  whiteList['break-inside'] = true; // default: auto\n  whiteList['caption-side'] = false; // default: top\n  whiteList['chains'] = false; // default: none\n  whiteList['clear'] = true; // default: none\n  whiteList['clip'] = false; // default: auto\n  whiteList['clip-path'] = false; // default: none\n  whiteList['clip-rule'] = false; // default: nonzero\n  whiteList['color'] = true; // default: implementation dependent\n  whiteList['color-interpolation-filters'] = true; // default: auto\n  whiteList['column-count'] = false; // default: auto\n  whiteList['column-fill'] = false; // default: balance\n  whiteList['column-gap'] = false; // default: normal\n  whiteList['column-rule'] = false; // default: depending on individual properties\n  whiteList['column-rule-color'] = false; // default: current color\n  whiteList['column-rule-style'] = false; // default: medium\n  whiteList['column-rule-width'] = false; // default: medium\n  whiteList['column-span'] = false; // default: none\n  whiteList['column-width'] = false; // default: auto\n  whiteList['columns'] = false; // default: depending on individual properties\n  whiteList['contain'] = false; // default: none\n  whiteList['content'] = false; // default: normal\n  whiteList['counter-increment'] = false; // default: none\n  whiteList['counter-reset'] = false; // default: none\n  whiteList['counter-set'] = false; // default: none\n  whiteList['crop'] = false; // default: auto\n  whiteList['cue'] = false; // default: depending on individual properties\n  whiteList['cue-after'] = false; // default: none\n  whiteList['cue-before'] = false; // default: none\n  whiteList['cursor'] = false; // default: auto\n  whiteList['direction'] = false; // default: ltr\n  whiteList['display'] = true; // default: depending on individual properties\n  whiteList['display-inside'] = true; // default: auto\n  whiteList['display-list'] = true; // default: none\n  whiteList['display-outside'] = true; // default: inline-level\n  whiteList['dominant-baseline'] = false; // default: auto\n  whiteList['elevation'] = false; // default: level\n  whiteList['empty-cells'] = false; // default: show\n  whiteList['filter'] = false; // default: none\n  whiteList['flex'] = false; // default: depending on individual properties\n  whiteList['flex-basis'] = false; // default: auto\n  whiteList['flex-direction'] = false; // default: row\n  whiteList['flex-flow'] = false; // default: depending on individual properties\n  whiteList['flex-grow'] = false; // default: 0\n  whiteList['flex-shrink'] = false; // default: 1\n  whiteList['flex-wrap'] = false; // default: nowrap\n  whiteList['float'] = false; // default: none\n  whiteList['float-offset'] = false; // default: 0 0\n  whiteList['flood-color'] = false; // default: black\n  whiteList['flood-opacity'] = false; // default: 1\n  whiteList['flow-from'] = false; // default: none\n  whiteList['flow-into'] = false; // default: none\n  whiteList['font'] = true; // default: depending on individual properties\n  whiteList['font-family'] = true; // default: implementation dependent\n  whiteList['font-feature-settings'] = true; // default: normal\n  whiteList['font-kerning'] = true; // default: auto\n  whiteList['font-language-override'] = true; // default: normal\n  whiteList['font-size'] = true; // default: medium\n  whiteList['font-size-adjust'] = true; // default: none\n  whiteList['font-stretch'] = true; // default: normal\n  whiteList['font-style'] = true; // default: normal\n  whiteList['font-synthesis'] = true; // default: weight style\n  whiteList['font-variant'] = true; // default: normal\n  whiteList['font-variant-alternates'] = true; // default: normal\n  whiteList['font-variant-caps'] = true; // default: normal\n  whiteList['font-variant-east-asian'] = true; // default: normal\n  whiteList['font-variant-ligatures'] = true; // default: normal\n  whiteList['font-variant-numeric'] = true; // default: normal\n  whiteList['font-variant-position'] = true; // default: normal\n  whiteList['font-weight'] = true; // default: normal\n  whiteList['grid'] = false; // default: depending on individual properties\n  whiteList['grid-area'] = false; // default: depending on individual properties\n  whiteList['grid-auto-columns'] = false; // default: auto\n  whiteList['grid-auto-flow'] = false; // default: none\n  whiteList['grid-auto-rows'] = false; // default: auto\n  whiteList['grid-column'] = false; // default: depending on individual properties\n  whiteList['grid-column-end'] = false; // default: auto\n  whiteList['grid-column-start'] = false; // default: auto\n  whiteList['grid-row'] = false; // default: depending on individual properties\n  whiteList['grid-row-end'] = false; // default: auto\n  whiteList['grid-row-start'] = false; // default: auto\n  whiteList['grid-template'] = false; // default: depending on individual properties\n  whiteList['grid-template-areas'] = false; // default: none\n  whiteList['grid-template-columns'] = false; // default: none\n  whiteList['grid-template-rows'] = false; // default: none\n  whiteList['hanging-punctuation'] = false; // default: none\n  whiteList['height'] = true; // default: auto\n  whiteList['hyphens'] = false; // default: manual\n  whiteList['icon'] = false; // default: auto\n  whiteList['image-orientation'] = false; // default: auto\n  whiteList['image-resolution'] = false; // default: normal\n  whiteList['ime-mode'] = false; // default: auto\n  whiteList['initial-letters'] = false; // default: normal\n  whiteList['inline-box-align'] = false; // default: last\n  whiteList['justify-content'] = false; // default: auto\n  whiteList['justify-items'] = false; // default: auto\n  whiteList['justify-self'] = false; // default: auto\n  whiteList['left'] = false; // default: auto\n  whiteList['letter-spacing'] = true; // default: normal\n  whiteList['lighting-color'] = true; // default: white\n  whiteList['line-box-contain'] = false; // default: block inline replaced\n  whiteList['line-break'] = false; // default: auto\n  whiteList['line-grid'] = false; // default: match-parent\n  whiteList['line-height'] = false; // default: normal\n  whiteList['line-snap'] = false; // default: none\n  whiteList['line-stacking'] = false; // default: depending on individual properties\n  whiteList['line-stacking-ruby'] = false; // default: exclude-ruby\n  whiteList['line-stacking-shift'] = false; // default: consider-shifts\n  whiteList['line-stacking-strategy'] = false; // default: inline-line-height\n  whiteList['list-style'] = true; // default: depending on individual properties\n  whiteList['list-style-image'] = true; // default: none\n  whiteList['list-style-position'] = true; // default: outside\n  whiteList['list-style-type'] = true; // default: disc\n  whiteList['margin'] = true; // default: depending on individual properties\n  whiteList['margin-bottom'] = true; // default: 0\n  whiteList['margin-left'] = true; // default: 0\n  whiteList['margin-right'] = true; // default: 0\n  whiteList['margin-top'] = true; // default: 0\n  whiteList['marker-offset'] = false; // default: auto\n  whiteList['marker-side'] = false; // default: list-item\n  whiteList['marks'] = false; // default: none\n  whiteList['mask'] = false; // default: border-box\n  whiteList['mask-box'] = false; // default: see individual properties\n  whiteList['mask-box-outset'] = false; // default: 0\n  whiteList['mask-box-repeat'] = false; // default: stretch\n  whiteList['mask-box-slice'] = false; // default: 0 fill\n  whiteList['mask-box-source'] = false; // default: none\n  whiteList['mask-box-width'] = false; // default: auto\n  whiteList['mask-clip'] = false; // default: border-box\n  whiteList['mask-image'] = false; // default: none\n  whiteList['mask-origin'] = false; // default: border-box\n  whiteList['mask-position'] = false; // default: center\n  whiteList['mask-repeat'] = false; // default: no-repeat\n  whiteList['mask-size'] = false; // default: border-box\n  whiteList['mask-source-type'] = false; // default: auto\n  whiteList['mask-type'] = false; // default: luminance\n  whiteList['max-height'] = true; // default: none\n  whiteList['max-lines'] = false; // default: none\n  whiteList['max-width'] = true; // default: none\n  whiteList['min-height'] = true; // default: 0\n  whiteList['min-width'] = true; // default: 0\n  whiteList['move-to'] = false; // default: normal\n  whiteList['nav-down'] = false; // default: auto\n  whiteList['nav-index'] = false; // default: auto\n  whiteList['nav-left'] = false; // default: auto\n  whiteList['nav-right'] = false; // default: auto\n  whiteList['nav-up'] = false; // default: auto\n  whiteList['object-fit'] = false; // default: fill\n  whiteList['object-position'] = false; // default: 50% 50%\n  whiteList['opacity'] = false; // default: 1\n  whiteList['order'] = false; // default: 0\n  whiteList['orphans'] = false; // default: 2\n  whiteList['outline'] = false; // default: depending on individual properties\n  whiteList['outline-color'] = false; // default: invert\n  whiteList['outline-offset'] = false; // default: 0\n  whiteList['outline-style'] = false; // default: none\n  whiteList['outline-width'] = false; // default: medium\n  whiteList['overflow'] = false; // default: depending on individual properties\n  whiteList['overflow-wrap'] = false; // default: normal\n  whiteList['overflow-x'] = false; // default: visible\n  whiteList['overflow-y'] = false; // default: visible\n  whiteList['padding'] = true; // default: depending on individual properties\n  whiteList['padding-bottom'] = true; // default: 0\n  whiteList['padding-left'] = true; // default: 0\n  whiteList['padding-right'] = true; // default: 0\n  whiteList['padding-top'] = true; // default: 0\n  whiteList['page'] = false; // default: auto\n  whiteList['page-break-after'] = false; // default: auto\n  whiteList['page-break-before'] = false; // default: auto\n  whiteList['page-break-inside'] = false; // default: auto\n  whiteList['page-policy'] = false; // default: start\n  whiteList['pause'] = false; // default: implementation dependent\n  whiteList['pause-after'] = false; // default: implementation dependent\n  whiteList['pause-before'] = false; // default: implementation dependent\n  whiteList['perspective'] = false; // default: none\n  whiteList['perspective-origin'] = false; // default: 50% 50%\n  whiteList['pitch'] = false; // default: medium\n  whiteList['pitch-range'] = false; // default: 50\n  whiteList['play-during'] = false; // default: auto\n  whiteList['position'] = false; // default: static\n  whiteList['presentation-level'] = false; // default: 0\n  whiteList['quotes'] = false; // default: text\n  whiteList['region-fragment'] = false; // default: auto\n  whiteList['resize'] = false; // default: none\n  whiteList['rest'] = false; // default: depending on individual properties\n  whiteList['rest-after'] = false; // default: none\n  whiteList['rest-before'] = false; // default: none\n  whiteList['richness'] = false; // default: 50\n  whiteList['right'] = false; // default: auto\n  whiteList['rotation'] = false; // default: 0\n  whiteList['rotation-point'] = false; // default: 50% 50%\n  whiteList['ruby-align'] = false; // default: auto\n  whiteList['ruby-merge'] = false; // default: separate\n  whiteList['ruby-position'] = false; // default: before\n  whiteList['shape-image-threshold'] = false; // default: 0.0\n  whiteList['shape-outside'] = false; // default: none\n  whiteList['shape-margin'] = false; // default: 0\n  whiteList['size'] = false; // default: auto\n  whiteList['speak'] = false; // default: auto\n  whiteList['speak-as'] = false; // default: normal\n  whiteList['speak-header'] = false; // default: once\n  whiteList['speak-numeral'] = false; // default: continuous\n  whiteList['speak-punctuation'] = false; // default: none\n  whiteList['speech-rate'] = false; // default: medium\n  whiteList['stress'] = false; // default: 50\n  whiteList['string-set'] = false; // default: none\n  whiteList['tab-size'] = false; // default: 8\n  whiteList['table-layout'] = false; // default: auto\n  whiteList['text-align'] = true; // default: start\n  whiteList['text-align-last'] = true; // default: auto\n  whiteList['text-combine-upright'] = true; // default: none\n  whiteList['text-decoration'] = true; // default: none\n  whiteList['text-decoration-color'] = true; // default: currentColor\n  whiteList['text-decoration-line'] = true; // default: none\n  whiteList['text-decoration-skip'] = true; // default: objects\n  whiteList['text-decoration-style'] = true; // default: solid\n  whiteList['text-emphasis'] = true; // default: depending on individual properties\n  whiteList['text-emphasis-color'] = true; // default: currentColor\n  whiteList['text-emphasis-position'] = true; // default: over right\n  whiteList['text-emphasis-style'] = true; // default: none\n  whiteList['text-height'] = true; // default: auto\n  whiteList['text-indent'] = true; // default: 0\n  whiteList['text-justify'] = true; // default: auto\n  whiteList['text-orientation'] = true; // default: mixed\n  whiteList['text-overflow'] = true; // default: clip\n  whiteList['text-shadow'] = true; // default: none\n  whiteList['text-space-collapse'] = true; // default: collapse\n  whiteList['text-transform'] = true; // default: none\n  whiteList['text-underline-position'] = true; // default: auto\n  whiteList['text-wrap'] = true; // default: normal\n  whiteList['top'] = false; // default: auto\n  whiteList['transform'] = false; // default: none\n  whiteList['transform-origin'] = false; // default: 50% 50% 0\n  whiteList['transform-style'] = false; // default: flat\n  whiteList['transition'] = false; // default: depending on individual properties\n  whiteList['transition-delay'] = false; // default: 0s\n  whiteList['transition-duration'] = false; // default: 0s\n  whiteList['transition-property'] = false; // default: all\n  whiteList['transition-timing-function'] = false; // default: ease\n  whiteList['unicode-bidi'] = false; // default: normal\n  whiteList['vertical-align'] = false; // default: baseline\n  whiteList['visibility'] = false; // default: visible\n  whiteList['voice-balance'] = false; // default: center\n  whiteList['voice-duration'] = false; // default: auto\n  whiteList['voice-family'] = false; // default: implementation dependent\n  whiteList['voice-pitch'] = false; // default: medium\n  whiteList['voice-range'] = false; // default: medium\n  whiteList['voice-rate'] = false; // default: normal\n  whiteList['voice-stress'] = false; // default: normal\n  whiteList['voice-volume'] = false; // default: medium\n  whiteList['volume'] = false; // default: medium\n  whiteList['white-space'] = false; // default: normal\n  whiteList['widows'] = false; // default: 2\n  whiteList['width'] = true; // default: auto\n  whiteList['will-change'] = false; // default: auto\n  whiteList['word-break'] = true; // default: normal\n  whiteList['word-spacing'] = true; // default: normal\n  whiteList['word-wrap'] = true; // default: normal\n  whiteList['wrap-flow'] = false; // default: auto\n  whiteList['wrap-through'] = false; // default: wrap\n  whiteList['writing-mode'] = false; // default: horizontal-tb\n  whiteList['z-index'] = false; // default: auto\n\n  return whiteList;\n}\n\n\n/**\n * 匹配到白名单上的一个属性时\n *\n * @param {String} name\n * @param {String} value\n * @param {Object} options\n * @return {String}\n */\nfunction onAttr (name, value, options) {\n  // do nothing\n}\n\n/**\n * 匹配到不在白名单上的一个属性时\n *\n * @param {String} name\n * @param {String} value\n * @param {Object} options\n * @return {String}\n */\nfunction onIgnoreAttr (name, value, options) {\n  // do nothing\n}\n\nvar REGEXP_URL_JAVASCRIPT = /javascript\\s*\\:/img;\n\n/**\n * 过滤属性值\n *\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction safeAttrValue(name, value) {\n  if (REGEXP_URL_JAVASCRIPT.test(value)) return '';\n  return value;\n}\n\n\nexports.whiteList = getDefaultWhiteList();\nexports.getDefaultWhiteList = getDefaultWhiteList;\nexports.onAttr = onAttr;\nexports.onIgnoreAttr = onIgnoreAttr;\nexports.safeAttrValue = safeAttrValue;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/cssfilter/lib/default.js?")},"./node_modules/cssfilter/lib/index.js":
/*!*********************************************!*\
  !*** ./node_modules/cssfilter/lib/index.js ***!
  \*********************************************/(module,exports,__webpack_require__)=>{eval('/**\n * cssfilter\n *\n * @author 老雷<leizongmin@gmail.com>\n */\n\nvar DEFAULT = __webpack_require__(/*! ./default */ "./node_modules/cssfilter/lib/default.js");\nvar FilterCSS = __webpack_require__(/*! ./css */ "./node_modules/cssfilter/lib/css.js");\n\n\n/**\n * XSS过滤\n *\n * @param {String} css 要过滤的CSS代码\n * @param {Object} options 选项：whiteList, onAttr, onIgnoreAttr\n * @return {String}\n */\nfunction filterCSS (html, options) {\n  var xss = new FilterCSS(options);\n  return xss.process(html);\n}\n\n\n// 输出\nexports = module.exports = filterCSS;\nexports.FilterCSS = FilterCSS;\nfor (var i in DEFAULT) exports[i] = DEFAULT[i];\n\n// 在浏览器端使用\nif (typeof window !== \'undefined\') {\n  window.filterCSS = module.exports;\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/cssfilter/lib/index.js?')},"./node_modules/cssfilter/lib/parser.js":
/*!**********************************************!*\
  !*** ./node_modules/cssfilter/lib/parser.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("/**\n * cssfilter\n *\n * @author 老雷<leizongmin@gmail.com>\n */\n\nvar _ = __webpack_require__(/*! ./util */ \"./node_modules/cssfilter/lib/util.js\");\n\n\n/**\n * 解析style\n *\n * @param {String} css\n * @param {Function} onAttr 处理属性的函数\n *   参数格式： function (sourcePosition, position, name, value, source)\n * @return {String}\n */\nfunction parseStyle (css, onAttr) {\n  css = _.trimRight(css);\n  if (css[css.length - 1] !== ';') css += ';';\n  var cssLength = css.length;\n  var isParenthesisOpen = false;\n  var lastPos = 0;\n  var i = 0;\n  var retCSS = '';\n\n  function addNewAttr () {\n    // 如果没有正常的闭合圆括号，则直接忽略当前属性\n    if (!isParenthesisOpen) {\n      var source = _.trim(css.slice(lastPos, i));\n      var j = source.indexOf(':');\n      if (j !== -1) {\n        var name = _.trim(source.slice(0, j));\n        var value = _.trim(source.slice(j + 1));\n        // 必须有属性名称\n        if (name) {\n          var ret = onAttr(lastPos, retCSS.length, name, value, source);\n          if (ret) retCSS += ret + '; ';\n        }\n      }\n    }\n    lastPos = i + 1;\n  }\n\n  for (; i < cssLength; i++) {\n    var c = css[i];\n    if (c === '/' && css[i + 1] === '*') {\n      // 备注开始\n      var j = css.indexOf('*/', i + 2);\n      // 如果没有正常的备注结束，则后面的部分全部跳过\n      if (j === -1) break;\n      // 直接将当前位置调到备注结尾，并且初始化状态\n      i = j + 1;\n      lastPos = i + 1;\n      isParenthesisOpen = false;\n    } else if (c === '(') {\n      isParenthesisOpen = true;\n    } else if (c === ')') {\n      isParenthesisOpen = false;\n    } else if (c === ';') {\n      if (isParenthesisOpen) {\n        // 在圆括号里面，忽略\n      } else {\n        addNewAttr();\n      }\n    } else if (c === '\\n') {\n      addNewAttr();\n    }\n  }\n\n  return _.trim(retCSS);\n}\n\nmodule.exports = parseStyle;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/cssfilter/lib/parser.js?")},"./node_modules/cssfilter/lib/util.js":
/*!********************************************!*\
  !*** ./node_modules/cssfilter/lib/util.js ***!
  \********************************************/module=>{eval("module.exports = {\n  indexOf: function (arr, item) {\n    var i, j;\n    if (Array.prototype.indexOf) {\n      return arr.indexOf(item);\n    }\n    for (i = 0, j = arr.length; i < j; i++) {\n      if (arr[i] === item) {\n        return i;\n      }\n    }\n    return -1;\n  },\n  forEach: function (arr, fn, scope) {\n    var i, j;\n    if (Array.prototype.forEach) {\n      return arr.forEach(fn, scope);\n    }\n    for (i = 0, j = arr.length; i < j; i++) {\n      fn.call(scope, arr[i], i, arr);\n    }\n  },\n  trim: function (str) {\n    if (String.prototype.trim) {\n      return str.trim();\n    }\n    return str.replace(/(^\\s*)|(\\s*$)/g, '');\n  },\n  trimRight: function (str) {\n    if (String.prototype.trimRight) {\n      return str.trimRight();\n    }\n    return str.replace(/(\\s*$)/g, '');\n  }\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/cssfilter/lib/util.js?")},"./node_modules/dateformat/lib/dateformat.js":
/*!***************************************************!*\
  !*** ./node_modules/dateformat/lib/dateformat.js ***!
  \***************************************************/(module,exports,__webpack_require__)=>{"use strict";eval('var __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj){"@babel/helpers - typeof";if(typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"){_typeof=function _typeof(obj){return typeof obj}}else{_typeof=function _typeof(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj}}return _typeof(obj)}(function(global){var _arguments=arguments;var dateFormat=function(){var token=/d{1,4}|D{3,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\\1?|W{1,2}|[LlopSZN]|"[^"]*"|\'[^\']*\'/g;var timezone=/\\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\\d{4})?)\\b/g;var timezoneClip=/[^-+\\dA-Z]/g;return function(date,mask,utc,gmt){if(_arguments.length===1&&kindOf(date)==="string"&&!/\\d/.test(date)){mask=date;date=undefined}date=date||date===0?date:new Date;if(!(date instanceof Date)){date=new Date(date)}if(isNaN(date)){throw TypeError("Invalid date")}mask=String(dateFormat.masks[mask]||mask||dateFormat.masks["default"]);var maskSlice=mask.slice(0,4);if(maskSlice==="UTC:"||maskSlice==="GMT:"){mask=mask.slice(4);utc=true;if(maskSlice==="GMT:"){gmt=true}}var _=function _(){return utc?"getUTC":"get"};var _d=function d(){return date[_()+"Date"]()};var D=function D(){return date[_()+"Day"]()};var _m=function m(){return date[_()+"Month"]()};var y=function y(){return date[_()+"FullYear"]()};var _H=function H(){return date[_()+"Hours"]()};var _M=function M(){return date[_()+"Minutes"]()};var _s=function s(){return date[_()+"Seconds"]()};var _L=function L(){return date[_()+"Milliseconds"]()};var _o=function o(){return utc?0:date.getTimezoneOffset()};var _W=function W(){return getWeek(date)};var _N=function N(){return getDayOfWeek(date)};var flags={d:function d(){return _d()},dd:function dd(){return pad(_d())},ddd:function ddd(){return dateFormat.i18n.dayNames[D()]},DDD:function DDD(){return getDayName({y:y(),m:_m(),d:_d(),_:_(),dayName:dateFormat.i18n.dayNames[D()],short:true})},dddd:function dddd(){return dateFormat.i18n.dayNames[D()+7]},DDDD:function DDDD(){return getDayName({y:y(),m:_m(),d:_d(),_:_(),dayName:dateFormat.i18n.dayNames[D()+7]})},m:function m(){return _m()+1},mm:function mm(){return pad(_m()+1)},mmm:function mmm(){return dateFormat.i18n.monthNames[_m()]},mmmm:function mmmm(){return dateFormat.i18n.monthNames[_m()+12]},yy:function yy(){return String(y()).slice(2)},yyyy:function yyyy(){return pad(y(),4)},h:function h(){return _H()%12||12},hh:function hh(){return pad(_H()%12||12)},H:function H(){return _H()},HH:function HH(){return pad(_H())},M:function M(){return _M()},MM:function MM(){return pad(_M())},s:function s(){return _s()},ss:function ss(){return pad(_s())},l:function l(){return pad(_L(),3)},L:function L(){return pad(Math.floor(_L()/10))},t:function t(){return _H()<12?dateFormat.i18n.timeNames[0]:dateFormat.i18n.timeNames[1]},tt:function tt(){return _H()<12?dateFormat.i18n.timeNames[2]:dateFormat.i18n.timeNames[3]},T:function T(){return _H()<12?dateFormat.i18n.timeNames[4]:dateFormat.i18n.timeNames[5]},TT:function TT(){return _H()<12?dateFormat.i18n.timeNames[6]:dateFormat.i18n.timeNames[7]},Z:function Z(){return gmt?"GMT":utc?"UTC":(String(date).match(timezone)||[""]).pop().replace(timezoneClip,"").replace(/GMT\\+0000/g,"UTC")},o:function o(){return(_o()>0?"-":"+")+pad(Math.floor(Math.abs(_o())/60)*100+Math.abs(_o())%60,4)},p:function p(){return(_o()>0?"-":"+")+pad(Math.floor(Math.abs(_o())/60),2)+":"+pad(Math.floor(Math.abs(_o())%60),2)},S:function S(){return["th","st","nd","rd"][_d()%10>3?0:(_d()%100-_d()%10!=10)*_d()%10]},W:function W(){return _W()},WW:function WW(){return pad(_W())},N:function N(){return _N()}};return mask.replace(token,function(match){if(match in flags){return flags[match]()}return match.slice(1,match.length-1)})}}();dateFormat.masks={default:"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",paddedShortDate:"mm/dd/yyyy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd\'T\'HH:MM:sso",isoUtcDateTime:"UTC:yyyy-mm-dd\'T\'HH:MM:ss\'Z\'",expiresHeaderFormat:"ddd, dd mmm yyyy HH:MM:ss Z"};dateFormat.i18n={dayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"],timeNames:["a","p","am","pm","A","P","AM","PM"]};var pad=function pad(val,len){val=String(val);len=len||2;while(val.length<len){val="0"+val}return val};var getDayName=function getDayName(_ref){var y=_ref.y,m=_ref.m,d=_ref.d,_=_ref._,dayName=_ref.dayName,_ref$short=_ref["short"],_short=_ref$short===void 0?false:_ref$short;var today=new Date;var yesterday=new Date;yesterday.setDate(yesterday[_+"Date"]()-1);var tomorrow=new Date;tomorrow.setDate(tomorrow[_+"Date"]()+1);var today_d=function today_d(){return today[_+"Date"]()};var today_m=function today_m(){return today[_+"Month"]()};var today_y=function today_y(){return today[_+"FullYear"]()};var yesterday_d=function yesterday_d(){return yesterday[_+"Date"]()};var yesterday_m=function yesterday_m(){return yesterday[_+"Month"]()};var yesterday_y=function yesterday_y(){return yesterday[_+"FullYear"]()};var tomorrow_d=function tomorrow_d(){return tomorrow[_+"Date"]()};var tomorrow_m=function tomorrow_m(){return tomorrow[_+"Month"]()};var tomorrow_y=function tomorrow_y(){return tomorrow[_+"FullYear"]()};if(today_y()===y&&today_m()===m&&today_d()===d){return _short?"Tdy":"Today"}else if(yesterday_y()===y&&yesterday_m()===m&&yesterday_d()===d){return _short?"Ysd":"Yesterday"}else if(tomorrow_y()===y&&tomorrow_m()===m&&tomorrow_d()===d){return _short?"Tmw":"Tomorrow"}return dayName};var getWeek=function getWeek(date){var targetThursday=new Date(date.getFullYear(),date.getMonth(),date.getDate());targetThursday.setDate(targetThursday.getDate()-(targetThursday.getDay()+6)%7+3);var firstThursday=new Date(targetThursday.getFullYear(),0,4);firstThursday.setDate(firstThursday.getDate()-(firstThursday.getDay()+6)%7+3);var ds=targetThursday.getTimezoneOffset()-firstThursday.getTimezoneOffset();targetThursday.setHours(targetThursday.getHours()-ds);var weekDiff=(targetThursday-firstThursday)/(864e5*7);return 1+Math.floor(weekDiff)};var getDayOfWeek=function getDayOfWeek(date){var dow=date.getDay();if(dow===0){dow=7}return dow};var kindOf=function kindOf(val){if(val===null){return"null"}if(val===undefined){return"undefined"}if(_typeof(val)!=="object"){return _typeof(val)}if(Array.isArray(val)){return"array"}return{}.toString.call(val).slice(8,-1).toLowerCase()};if(true){!(__WEBPACK_AMD_DEFINE_RESULT__ = (function(){return dateFormat}).call(exports, __webpack_require__, exports, module),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))}else {}})(void 0);\n\n//# sourceURL=webpack://txadmin/./node_modules/dateformat/lib/dateformat.js?')},"./node_modules/debug/src/browser.js":
/*!*******************************************!*\
  !*** ./node_modules/debug/src/browser.js ***!
  \*******************************************/(module,exports,__webpack_require__)=>{eval("/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = ({\"APP_ENV\":\"webpack\"}).DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = __webpack_require__(/*! ./common */ \"./node_modules/debug/src/common.js\")(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/debug/src/browser.js?")},"./node_modules/debug/src/common.js":
/*!******************************************!*\
  !*** ./node_modules/debug/src/common.js ***!
  \******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = __webpack_require__(/*! ms */ \"./node_modules/ms/index.js\");\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/debug/src/common.js?")},"./node_modules/debug/src/index.js":
/*!*****************************************!*\
  !*** ./node_modules/debug/src/index.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = __webpack_require__(/*! ./browser.js */ \"./node_modules/debug/src/browser.js\");\n} else {\n\tmodule.exports = __webpack_require__(/*! ./node.js */ \"./node_modules/debug/src/node.js\");\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/debug/src/index.js?")},"./node_modules/debug/src/node.js":
/*!****************************************!*\
  !*** ./node_modules/debug/src/node.js ***!
  \****************************************/(module,exports,__webpack_require__)=>{eval("/**\n * Module dependencies.\n */\n\nconst tty = __webpack_require__(/*! tty */ \"tty\");\nconst util = __webpack_require__(/*! util */ \"util\");\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = __webpack_require__(/*! supports-color */ \"./node_modules/supports-color/index.js\");\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n *   $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(({\"APP_ENV\":\"webpack\"})).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = ({\"APP_ENV\":\"webpack\"})[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = `  ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.format()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.format(...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\t({\"APP_ENV\":\"webpack\"}).DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete ({\"APP_ENV\":\"webpack\"}).DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn ({\"APP_ENV\":\"webpack\"}).DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = __webpack_require__(/*! ./common */ \"./node_modules/debug/src/common.js\")(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/debug/src/node.js?")},"./node_modules/decompress-response/index.js":
/*!***************************************************!*\
  !*** ./node_modules/decompress-response/index.js ***!
  \***************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nconst {Transform, PassThrough} = __webpack_require__(/*! stream */ \"stream\");\nconst zlib = __webpack_require__(/*! zlib */ \"zlib\");\nconst mimicResponse = __webpack_require__(/*! mimic-response */ \"./node_modules/decompress-response/node_modules/mimic-response/index.js\");\n\nmodule.exports = response => {\n\tconst contentEncoding = (response.headers['content-encoding'] || '').toLowerCase();\n\n\tif (!['gzip', 'deflate', 'br'].includes(contentEncoding)) {\n\t\treturn response;\n\t}\n\n\t// TODO: Remove this when targeting Node.js 12.\n\tconst isBrotli = contentEncoding === 'br';\n\tif (isBrotli && typeof zlib.createBrotliDecompress !== 'function') {\n\t\tresponse.destroy(new Error('Brotli is not supported on Node.js < 12'));\n\t\treturn response;\n\t}\n\n\tlet isEmpty = true;\n\n\tconst checker = new Transform({\n\t\ttransform(data, _encoding, callback) {\n\t\t\tisEmpty = false;\n\n\t\t\tcallback(null, data);\n\t\t},\n\n\t\tflush(callback) {\n\t\t\tcallback();\n\t\t}\n\t});\n\n\tconst finalStream = new PassThrough({\n\t\tautoDestroy: false,\n\t\tdestroy(error, callback) {\n\t\t\tresponse.destroy();\n\n\t\t\tcallback(error);\n\t\t}\n\t});\n\n\tconst decompressStream = isBrotli ? zlib.createBrotliDecompress() : zlib.createUnzip();\n\n\tdecompressStream.once('error', error => {\n\t\tif (isEmpty && !response.readable) {\n\t\t\tfinalStream.end();\n\t\t\treturn;\n\t\t}\n\n\t\tfinalStream.destroy(error);\n\t});\n\n\tmimicResponse(response, finalStream);\n\tresponse.pipe(checker).pipe(decompressStream).pipe(finalStream);\n\n\treturn finalStream;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/decompress-response/index.js?")},"./node_modules/decompress-response/node_modules/mimic-response/index.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/decompress-response/node_modules/mimic-response/index.js ***!
  \*******************************************************************************/module=>{"use strict";eval("\n\n// We define these manually to ensure they're always copied\n// even if they would move up the prototype chain\n// https://nodejs.org/api/http.html#http_class_http_incomingmessage\nconst knownProperties = [\n\t'aborted',\n\t'complete',\n\t'headers',\n\t'httpVersion',\n\t'httpVersionMinor',\n\t'httpVersionMajor',\n\t'method',\n\t'rawHeaders',\n\t'rawTrailers',\n\t'setTimeout',\n\t'socket',\n\t'statusCode',\n\t'statusMessage',\n\t'trailers',\n\t'url'\n];\n\nmodule.exports = (fromStream, toStream) => {\n\tif (toStream._readableState.autoDestroy) {\n\t\tthrow new Error('The second stream must have the `autoDestroy` option set to `false`');\n\t}\n\n\tconst fromProperties = new Set(Object.keys(fromStream).concat(knownProperties));\n\n\tconst properties = {};\n\n\tfor (const property of fromProperties) {\n\t\t// Don't overwrite existing properties.\n\t\tif (property in toStream) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tproperties[property] = {\n\t\t\tget() {\n\t\t\t\tconst value = fromStream[property];\n\t\t\t\tconst isFunction = typeof value === 'function';\n\n\t\t\t\treturn isFunction ? value.bind(fromStream) : value;\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\tfromStream[property] = value;\n\t\t\t},\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false\n\t\t};\n\t}\n\n\tObject.defineProperties(toStream, properties);\n\n\tfromStream.once('aborted', () => {\n\t\ttoStream.destroy();\n\n\t\ttoStream.emit('aborted');\n\t});\n\n\tfromStream.once('close', () => {\n\t\tif (fromStream.complete) {\n\t\t\tif (toStream.readable) {\n\t\t\t\ttoStream.once('end', () => {\n\t\t\t\t\ttoStream.emit('close');\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\ttoStream.emit('close');\n\t\t\t}\n\t\t} else {\n\t\t\ttoStream.emit('close');\n\t\t}\n\t});\n\n\treturn toStream;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/decompress-response/node_modules/mimic-response/index.js?")},"./node_modules/deep-equal/index.js":
/*!******************************************!*\
  !*** ./node_modules/deep-equal/index.js ***!
  \******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var pSlice = Array.prototype.slice;\nvar objectKeys = __webpack_require__(/*! ./lib/keys.js */ \"./node_modules/deep-equal/lib/keys.js\");\nvar isArguments = __webpack_require__(/*! ./lib/is_arguments.js */ \"./node_modules/deep-equal/lib/is_arguments.js\");\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n  if (!opts) opts = {};\n  // 7.1. All identical values are equivalent, as determined by ===.\n  if (actual === expected) {\n    return true;\n\n  } else if (actual instanceof Date && expected instanceof Date) {\n    return actual.getTime() === expected.getTime();\n\n  // 7.3. Other pairs that do not both pass typeof value == 'object',\n  // equivalence is determined by ==.\n  } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n    return opts.strict ? actual === expected : actual == expected;\n\n  // 7.4. For all other Object pairs, including Array objects, equivalence is\n  // determined by having the same number of owned properties (as verified\n  // with Object.prototype.hasOwnProperty.call), the same set of keys\n  // (although not necessarily the same order), equivalent values for every\n  // corresponding key, and an identical 'prototype' property. Note: this\n  // accounts for both named and indexed properties on Arrays.\n  } else {\n    return objEquiv(actual, expected, opts);\n  }\n}\n\nfunction isUndefinedOrNull(value) {\n  return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n  if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n  if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n    return false;\n  }\n  if (x.length > 0 && typeof x[0] !== 'number') return false;\n  return true;\n}\n\nfunction objEquiv(a, b, opts) {\n  var i, key;\n  if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n    return false;\n  // an identical 'prototype' property.\n  if (a.prototype !== b.prototype) return false;\n  //~~~I've managed to break Object.keys through screwy arguments passing.\n  //   Converting to array solves the problem.\n  if (isArguments(a)) {\n    if (!isArguments(b)) {\n      return false;\n    }\n    a = pSlice.call(a);\n    b = pSlice.call(b);\n    return deepEqual(a, b, opts);\n  }\n  if (isBuffer(a)) {\n    if (!isBuffer(b)) {\n      return false;\n    }\n    if (a.length !== b.length) return false;\n    for (i = 0; i < a.length; i++) {\n      if (a[i] !== b[i]) return false;\n    }\n    return true;\n  }\n  try {\n    var ka = objectKeys(a),\n        kb = objectKeys(b);\n  } catch (e) {//happens when one is a string literal and the other isn't\n    return false;\n  }\n  // having the same number of owned properties (keys incorporates\n  // hasOwnProperty)\n  if (ka.length != kb.length)\n    return false;\n  //the same set of keys (although not necessarily the same order),\n  ka.sort();\n  kb.sort();\n  //~~~cheap key test\n  for (i = ka.length - 1; i >= 0; i--) {\n    if (ka[i] != kb[i])\n      return false;\n  }\n  //equivalent values for every corresponding key, and\n  //~~~possibly expensive deep test\n  for (i = ka.length - 1; i >= 0; i--) {\n    key = ka[i];\n    if (!deepEqual(a[key], b[key], opts)) return false;\n  }\n  return typeof a === typeof b;\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/deep-equal/index.js?")},"./node_modules/deep-equal/lib/is_arguments.js":
/*!*****************************************************!*\
  !*** ./node_modules/deep-equal/lib/is_arguments.js ***!
  \*****************************************************/(module,exports)=>{eval("var supportsArgumentsClass = (function(){\n  return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n  return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n  return object &&\n    typeof object == 'object' &&\n    typeof object.length == 'number' &&\n    Object.prototype.hasOwnProperty.call(object, 'callee') &&\n    !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n    false;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/deep-equal/lib/is_arguments.js?")},"./node_modules/deep-equal/lib/keys.js":
/*!*********************************************!*\
  !*** ./node_modules/deep-equal/lib/keys.js ***!
  \*********************************************/(module,exports)=>{eval("exports = module.exports = typeof Object.keys === 'function'\n  ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/deep-equal/lib/keys.js?")},"./node_modules/defer-to-connect/dist/source/index.js":
/*!************************************************************!*\
  !*** ./node_modules/defer-to-connect/dist/source/index.js ***!
  \************************************************************/(module,exports)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nfunction isTLSSocket(socket) {\n    return socket.encrypted;\n}\nconst deferToConnect = (socket, fn) => {\n    let listeners;\n    if (typeof fn === 'function') {\n        const connect = fn;\n        listeners = { connect };\n    }\n    else {\n        listeners = fn;\n    }\n    const hasConnectListener = typeof listeners.connect === 'function';\n    const hasSecureConnectListener = typeof listeners.secureConnect === 'function';\n    const hasCloseListener = typeof listeners.close === 'function';\n    const onConnect = () => {\n        if (hasConnectListener) {\n            listeners.connect();\n        }\n        if (isTLSSocket(socket) && hasSecureConnectListener) {\n            if (socket.authorized) {\n                listeners.secureConnect();\n            }\n            else if (!socket.authorizationError) {\n                socket.once('secureConnect', listeners.secureConnect);\n            }\n        }\n        if (hasCloseListener) {\n            socket.once('close', listeners.close);\n        }\n    };\n    if (socket.writable && !socket.connecting) {\n        onConnect();\n    }\n    else if (socket.connecting) {\n        socket.once('connect', onConnect);\n    }\n    else if (socket.destroyed && hasCloseListener) {\n        listeners.close(socket._hadError);\n    }\n};\nexports[\"default\"] = deferToConnect;\n// For CommonJS default export support\nmodule.exports = deferToConnect;\nmodule.exports[\"default\"] = deferToConnect;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/defer-to-connect/dist/source/index.js?")},"./node_modules/define-properties/index.js":
/*!*************************************************!*\
  !*** ./node_modules/define-properties/index.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar keys = __webpack_require__(/*! object-keys */ \"./node_modules/object-keys/index.js\");\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\torigDefineProperty(obj, 'x', { enumerable: false, value: obj });\n\t\t// eslint-disable-next-line no-unused-vars, no-restricted-syntax\n\t\tfor (var _ in obj) { // jscs:ignore disallowUnusedVariables\n\t\t\treturn false;\n\t\t}\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/define-properties/index.js?")},"./node_modules/delayed-stream/lib/delayed_stream.js":
/*!***********************************************************!*\
  !*** ./node_modules/delayed-stream/lib/delayed_stream.js ***!
  \***********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var Stream = (__webpack_require__(/*! stream */ \"stream\").Stream);\nvar util = __webpack_require__(/*! util */ \"util\");\n\nmodule.exports = DelayedStream;\nfunction DelayedStream() {\n  this.source = null;\n  this.dataSize = 0;\n  this.maxDataSize = 1024 * 1024;\n  this.pauseStream = true;\n\n  this._maxDataSizeExceeded = false;\n  this._released = false;\n  this._bufferedEvents = [];\n}\nutil.inherits(DelayedStream, Stream);\n\nDelayedStream.create = function(source, options) {\n  var delayedStream = new this();\n\n  options = options || {};\n  for (var option in options) {\n    delayedStream[option] = options[option];\n  }\n\n  delayedStream.source = source;\n\n  var realEmit = source.emit;\n  source.emit = function() {\n    delayedStream._handleEmit(arguments);\n    return realEmit.apply(source, arguments);\n  };\n\n  source.on('error', function() {});\n  if (delayedStream.pauseStream) {\n    source.pause();\n  }\n\n  return delayedStream;\n};\n\nObject.defineProperty(DelayedStream.prototype, 'readable', {\n  configurable: true,\n  enumerable: true,\n  get: function() {\n    return this.source.readable;\n  }\n});\n\nDelayedStream.prototype.setEncoding = function() {\n  return this.source.setEncoding.apply(this.source, arguments);\n};\n\nDelayedStream.prototype.resume = function() {\n  if (!this._released) {\n    this.release();\n  }\n\n  this.source.resume();\n};\n\nDelayedStream.prototype.pause = function() {\n  this.source.pause();\n};\n\nDelayedStream.prototype.release = function() {\n  this._released = true;\n\n  this._bufferedEvents.forEach(function(args) {\n    this.emit.apply(this, args);\n  }.bind(this));\n  this._bufferedEvents = [];\n};\n\nDelayedStream.prototype.pipe = function() {\n  var r = Stream.prototype.pipe.apply(this, arguments);\n  this.resume();\n  return r;\n};\n\nDelayedStream.prototype._handleEmit = function(args) {\n  if (this._released) {\n    this.emit.apply(this, args);\n    return;\n  }\n\n  if (args[0] === 'data') {\n    this.dataSize += args[1].length;\n    this._checkIfMaxDataSizeExceeded();\n  }\n\n  this._bufferedEvents.push(args);\n};\n\nDelayedStream.prototype._checkIfMaxDataSizeExceeded = function() {\n  if (this._maxDataSizeExceeded) {\n    return;\n  }\n\n  if (this.dataSize <= this.maxDataSize) {\n    return;\n  }\n\n  this._maxDataSizeExceeded = true;\n  var message =\n    'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'\n  this.emit('error', new Error(message));\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/delayed-stream/lib/delayed_stream.js?")},"./node_modules/delegates/index.js":
/*!*****************************************!*\
  !*** ./node_modules/delegates/index.js ***!
  \*****************************************/module=>{eval("\n/**\n * Expose `Delegator`.\n */\n\nmodule.exports = Delegator;\n\n/**\n * Initialize a delegator.\n *\n * @param {Object} proto\n * @param {String} target\n * @api public\n */\n\nfunction Delegator(proto, target) {\n  if (!(this instanceof Delegator)) return new Delegator(proto, target);\n  this.proto = proto;\n  this.target = target;\n  this.methods = [];\n  this.getters = [];\n  this.setters = [];\n  this.fluents = [];\n}\n\n/**\n * Delegate method `name`.\n *\n * @param {String} name\n * @return {Delegator} self\n * @api public\n */\n\nDelegator.prototype.method = function(name){\n  var proto = this.proto;\n  var target = this.target;\n  this.methods.push(name);\n\n  proto[name] = function(){\n    return this[target][name].apply(this[target], arguments);\n  };\n\n  return this;\n};\n\n/**\n * Delegator accessor `name`.\n *\n * @param {String} name\n * @return {Delegator} self\n * @api public\n */\n\nDelegator.prototype.access = function(name){\n  return this.getter(name).setter(name);\n};\n\n/**\n * Delegator getter `name`.\n *\n * @param {String} name\n * @return {Delegator} self\n * @api public\n */\n\nDelegator.prototype.getter = function(name){\n  var proto = this.proto;\n  var target = this.target;\n  this.getters.push(name);\n\n  proto.__defineGetter__(name, function(){\n    return this[target][name];\n  });\n\n  return this;\n};\n\n/**\n * Delegator setter `name`.\n *\n * @param {String} name\n * @return {Delegator} self\n * @api public\n */\n\nDelegator.prototype.setter = function(name){\n  var proto = this.proto;\n  var target = this.target;\n  this.setters.push(name);\n\n  proto.__defineSetter__(name, function(val){\n    return this[target][name] = val;\n  });\n\n  return this;\n};\n\n/**\n * Delegator fluent accessor\n *\n * @param {String} name\n * @return {Delegator} self\n * @api public\n */\n\nDelegator.prototype.fluent = function (name) {\n  var proto = this.proto;\n  var target = this.target;\n  this.fluents.push(name);\n\n  proto[name] = function(val){\n    if ('undefined' != typeof val) {\n      this[target][name] = val;\n      return this;\n    } else {\n      return this[target][name];\n    }\n  };\n\n  return this;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/delegates/index.js?")},"./node_modules/denque/index.js":
/*!**************************************!*\
  !*** ./node_modules/denque/index.js ***!
  \**************************************/module=>{"use strict";eval("\n\n/**\n * Custom implementation of a double ended queue.\n */\nfunction Denque(array, options) {\n  var options = options || {};\n\n  this._head = 0;\n  this._tail = 0;\n  this._capacity = options.capacity;\n  this._capacityMask = 0x3;\n  this._list = new Array(4);\n  if (Array.isArray(array)) {\n    this._fromArray(array);\n  }\n}\n\n/**\n * --------------\n *  PUBLIC API\n * -------------\n */\n\n/**\n * Returns the item at the specified index from the list.\n * 0 is the first element, 1 is the second, and so on...\n * Elements at negative values are that many from the end: -1 is one before the end\n * (the last element), -2 is two before the end (one before last), etc.\n * @param index\n * @returns {*}\n */\nDenque.prototype.peekAt = function peekAt(index) {\n  var i = index;\n  // expect a number or return undefined\n  if ((i !== (i | 0))) {\n    return void 0;\n  }\n  var len = this.size();\n  if (i >= len || i < -len) return undefined;\n  if (i < 0) i += len;\n  i = (this._head + i) & this._capacityMask;\n  return this._list[i];\n};\n\n/**\n * Alias for peekAt()\n * @param i\n * @returns {*}\n */\nDenque.prototype.get = function get(i) {\n  return this.peekAt(i);\n};\n\n/**\n * Returns the first item in the list without removing it.\n * @returns {*}\n */\nDenque.prototype.peek = function peek() {\n  if (this._head === this._tail) return undefined;\n  return this._list[this._head];\n};\n\n/**\n * Alias for peek()\n * @returns {*}\n */\nDenque.prototype.peekFront = function peekFront() {\n  return this.peek();\n};\n\n/**\n * Returns the item that is at the back of the queue without removing it.\n * Uses peekAt(-1)\n */\nDenque.prototype.peekBack = function peekBack() {\n  return this.peekAt(-1);\n};\n\n/**\n * Returns the current length of the queue\n * @return {Number}\n */\nObject.defineProperty(Denque.prototype, 'length', {\n  get: function length() {\n    return this.size();\n  }\n});\n\n/**\n * Return the number of items on the list, or 0 if empty.\n * @returns {number}\n */\nDenque.prototype.size = function size() {\n  if (this._head === this._tail) return 0;\n  if (this._head < this._tail) return this._tail - this._head;\n  else return this._capacityMask + 1 - (this._head - this._tail);\n};\n\n/**\n * Add an item at the beginning of the list.\n * @param item\n */\nDenque.prototype.unshift = function unshift(item) {\n  if (arguments.length === 0) return this.size();\n  var len = this._list.length;\n  this._head = (this._head - 1 + len) & this._capacityMask;\n  this._list[this._head] = item;\n  if (this._tail === this._head) this._growArray();\n  if (this._capacity && this.size() > this._capacity) this.pop();\n  if (this._head < this._tail) return this._tail - this._head;\n  else return this._capacityMask + 1 - (this._head - this._tail);\n};\n\n/**\n * Remove and return the first item on the list,\n * Returns undefined if the list is empty.\n * @returns {*}\n */\nDenque.prototype.shift = function shift() {\n  var head = this._head;\n  if (head === this._tail) return undefined;\n  var item = this._list[head];\n  this._list[head] = undefined;\n  this._head = (head + 1) & this._capacityMask;\n  if (head < 2 && this._tail > 10000 && this._tail <= this._list.length >>> 2) this._shrinkArray();\n  return item;\n};\n\n/**\n * Add an item to the bottom of the list.\n * @param item\n */\nDenque.prototype.push = function push(item) {\n  if (arguments.length === 0) return this.size();\n  var tail = this._tail;\n  this._list[tail] = item;\n  this._tail = (tail + 1) & this._capacityMask;\n  if (this._tail === this._head) {\n    this._growArray();\n  }\n  if (this._capacity && this.size() > this._capacity) {\n    this.shift();\n  }\n  if (this._head < this._tail) return this._tail - this._head;\n  else return this._capacityMask + 1 - (this._head - this._tail);\n};\n\n/**\n * Remove and return the last item on the list.\n * Returns undefined if the list is empty.\n * @returns {*}\n */\nDenque.prototype.pop = function pop() {\n  var tail = this._tail;\n  if (tail === this._head) return undefined;\n  var len = this._list.length;\n  this._tail = (tail - 1 + len) & this._capacityMask;\n  var item = this._list[this._tail];\n  this._list[this._tail] = undefined;\n  if (this._head < 2 && tail > 10000 && tail <= len >>> 2) this._shrinkArray();\n  return item;\n};\n\n/**\n * Remove and return the item at the specified index from the list.\n * Returns undefined if the list is empty.\n * @param index\n * @returns {*}\n */\nDenque.prototype.removeOne = function removeOne(index) {\n  var i = index;\n  // expect a number or return undefined\n  if ((i !== (i | 0))) {\n    return void 0;\n  }\n  if (this._head === this._tail) return void 0;\n  var size = this.size();\n  var len = this._list.length;\n  if (i >= size || i < -size) return void 0;\n  if (i < 0) i += size;\n  i = (this._head + i) & this._capacityMask;\n  var item = this._list[i];\n  var k;\n  if (index < size / 2) {\n    for (k = index; k > 0; k--) {\n      this._list[i] = this._list[i = (i - 1 + len) & this._capacityMask];\n    }\n    this._list[i] = void 0;\n    this._head = (this._head + 1 + len) & this._capacityMask;\n  } else {\n    for (k = size - 1 - index; k > 0; k--) {\n      this._list[i] = this._list[i = (i + 1 + len) & this._capacityMask];\n    }\n    this._list[i] = void 0;\n    this._tail = (this._tail - 1 + len) & this._capacityMask;\n  }\n  return item;\n};\n\n/**\n * Remove number of items from the specified index from the list.\n * Returns array of removed items.\n * Returns undefined if the list is empty.\n * @param index\n * @param count\n * @returns {array}\n */\nDenque.prototype.remove = function remove(index, count) {\n  var i = index;\n  var removed;\n  var del_count = count;\n  // expect a number or return undefined\n  if ((i !== (i | 0))) {\n    return void 0;\n  }\n  if (this._head === this._tail) return void 0;\n  var size = this.size();\n  var len = this._list.length;\n  if (i >= size || i < -size || count < 1) return void 0;\n  if (i < 0) i += size;\n  if (count === 1 || !count) {\n    removed = new Array(1);\n    removed[0] = this.removeOne(i);\n    return removed;\n  }\n  if (i === 0 && i + count >= size) {\n    removed = this.toArray();\n    this.clear();\n    return removed;\n  }\n  if (i + count > size) count = size - i;\n  var k;\n  removed = new Array(count);\n  for (k = 0; k < count; k++) {\n    removed[k] = this._list[(this._head + i + k) & this._capacityMask];\n  }\n  i = (this._head + i) & this._capacityMask;\n  if (index + count === size) {\n    this._tail = (this._tail - count + len) & this._capacityMask;\n    for (k = count; k > 0; k--) {\n      this._list[i = (i + 1 + len) & this._capacityMask] = void 0;\n    }\n    return removed;\n  }\n  if (index === 0) {\n    this._head = (this._head + count + len) & this._capacityMask;\n    for (k = count - 1; k > 0; k--) {\n      this._list[i = (i + 1 + len) & this._capacityMask] = void 0;\n    }\n    return removed;\n  }\n  if (i < size / 2) {\n    this._head = (this._head + index + count + len) & this._capacityMask;\n    for (k = index; k > 0; k--) {\n      this.unshift(this._list[i = (i - 1 + len) & this._capacityMask]);\n    }\n    i = (this._head - 1 + len) & this._capacityMask;\n    while (del_count > 0) {\n      this._list[i = (i - 1 + len) & this._capacityMask] = void 0;\n      del_count--;\n    }\n    if (index < 0) this._tail = i;\n  } else {\n    this._tail = i;\n    i = (i + count + len) & this._capacityMask;\n    for (k = size - (count + index); k > 0; k--) {\n      this.push(this._list[i++]);\n    }\n    i = this._tail;\n    while (del_count > 0) {\n      this._list[i = (i + 1 + len) & this._capacityMask] = void 0;\n      del_count--;\n    }\n  }\n  if (this._head < 2 && this._tail > 10000 && this._tail <= len >>> 2) this._shrinkArray();\n  return removed;\n};\n\n/**\n * Native splice implementation.\n * Remove number of items from the specified index from the list and/or add new elements.\n * Returns array of removed items or empty array if count == 0.\n * Returns undefined if the list is empty.\n *\n * @param index\n * @param count\n * @param {...*} [elements]\n * @returns {array}\n */\nDenque.prototype.splice = function splice(index, count) {\n  var i = index;\n  // expect a number or return undefined\n  if ((i !== (i | 0))) {\n    return void 0;\n  }\n  var size = this.size();\n  if (i < 0) i += size;\n  if (i > size) return void 0;\n  if (arguments.length > 2) {\n    var k;\n    var temp;\n    var removed;\n    var arg_len = arguments.length;\n    var len = this._list.length;\n    var arguments_index = 2;\n    if (!size || i < size / 2) {\n      temp = new Array(i);\n      for (k = 0; k < i; k++) {\n        temp[k] = this._list[(this._head + k) & this._capacityMask];\n      }\n      if (count === 0) {\n        removed = [];\n        if (i > 0) {\n          this._head = (this._head + i + len) & this._capacityMask;\n        }\n      } else {\n        removed = this.remove(i, count);\n        this._head = (this._head + i + len) & this._capacityMask;\n      }\n      while (arg_len > arguments_index) {\n        this.unshift(arguments[--arg_len]);\n      }\n      for (k = i; k > 0; k--) {\n        this.unshift(temp[k - 1]);\n      }\n    } else {\n      temp = new Array(size - (i + count));\n      var leng = temp.length;\n      for (k = 0; k < leng; k++) {\n        temp[k] = this._list[(this._head + i + count + k) & this._capacityMask];\n      }\n      if (count === 0) {\n        removed = [];\n        if (i != size) {\n          this._tail = (this._head + i + len) & this._capacityMask;\n        }\n      } else {\n        removed = this.remove(i, count);\n        this._tail = (this._tail - leng + len) & this._capacityMask;\n      }\n      while (arguments_index < arg_len) {\n        this.push(arguments[arguments_index++]);\n      }\n      for (k = 0; k < leng; k++) {\n        this.push(temp[k]);\n      }\n    }\n    return removed;\n  } else {\n    return this.remove(i, count);\n  }\n};\n\n/**\n * Soft clear - does not reset capacity.\n */\nDenque.prototype.clear = function clear() {\n  this._head = 0;\n  this._tail = 0;\n};\n\n/**\n * Returns true or false whether the list is empty.\n * @returns {boolean}\n */\nDenque.prototype.isEmpty = function isEmpty() {\n  return this._head === this._tail;\n};\n\n/**\n * Returns an array of all queue items.\n * @returns {Array}\n */\nDenque.prototype.toArray = function toArray() {\n  return this._copyArray(false);\n};\n\n/**\n * -------------\n *   INTERNALS\n * -------------\n */\n\n/**\n * Fills the queue with items from an array\n * For use in the constructor\n * @param array\n * @private\n */\nDenque.prototype._fromArray = function _fromArray(array) {\n  for (var i = 0; i < array.length; i++) this.push(array[i]);\n};\n\n/**\n *\n * @param fullCopy\n * @returns {Array}\n * @private\n */\nDenque.prototype._copyArray = function _copyArray(fullCopy) {\n  var newArray = [];\n  var list = this._list;\n  var len = list.length;\n  var i;\n  if (fullCopy || this._head > this._tail) {\n    for (i = this._head; i < len; i++) newArray.push(list[i]);\n    for (i = 0; i < this._tail; i++) newArray.push(list[i]);\n  } else {\n    for (i = this._head; i < this._tail; i++) newArray.push(list[i]);\n  }\n  return newArray;\n};\n\n/**\n * Grows the internal list array.\n * @private\n */\nDenque.prototype._growArray = function _growArray() {\n  if (this._head) {\n    // copy existing data, head to end, then beginning to tail.\n    this._list = this._copyArray(true);\n    this._head = 0;\n  }\n\n  // head is at 0 and array is now full, safe to extend\n  this._tail = this._list.length;\n\n  this._list.length <<= 1;\n  this._capacityMask = (this._capacityMask << 1) | 1;\n};\n\n/**\n * Shrinks the internal list array.\n * @private\n */\nDenque.prototype._shrinkArray = function _shrinkArray() {\n  this._list.length >>>= 1;\n  this._capacityMask >>>= 1;\n};\n\n\nmodule.exports = Denque;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/denque/index.js?")},"./node_modules/depd/index.js":
/*!************************************!*\
  !*** ./node_modules/depd/index.js ***!
  \************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("/*!\n * depd\n * Copyright(c) 2014-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\n\nvar callSiteToString = (__webpack_require__(/*! ./lib/compat */ \"./node_modules/depd/lib/compat/index.js\").callSiteToString)\nvar eventListenerCount = (__webpack_require__(/*! ./lib/compat */ \"./node_modules/depd/lib/compat/index.js\").eventListenerCount)\nvar relative = (__webpack_require__(/*! path */ \"path\").relative)\n\n/**\n * Module exports.\n */\n\nmodule.exports = depd\n\n/**\n * Get the path to base files on.\n */\n\nvar basePath = process.cwd()\n\n/**\n * Determine if namespace is contained in the string.\n */\n\nfunction containsNamespace (str, namespace) {\n  var vals = str.split(/[ ,]+/)\n  var ns = String(namespace).toLowerCase()\n\n  for (var i = 0; i < vals.length; i++) {\n    var val = vals[i]\n\n    // namespace contained\n    if (val && (val === '*' || val.toLowerCase() === ns)) {\n      return true\n    }\n  }\n\n  return false\n}\n\n/**\n * Convert a data descriptor to accessor descriptor.\n */\n\nfunction convertDataDescriptorToAccessor (obj, prop, message) {\n  var descriptor = Object.getOwnPropertyDescriptor(obj, prop)\n  var value = descriptor.value\n\n  descriptor.get = function getter () { return value }\n\n  if (descriptor.writable) {\n    descriptor.set = function setter (val) { return (value = val) }\n  }\n\n  delete descriptor.value\n  delete descriptor.writable\n\n  Object.defineProperty(obj, prop, descriptor)\n\n  return descriptor\n}\n\n/**\n * Create arguments string to keep arity.\n */\n\nfunction createArgumentsString (arity) {\n  var str = ''\n\n  for (var i = 0; i < arity; i++) {\n    str += ', arg' + i\n  }\n\n  return str.substr(2)\n}\n\n/**\n * Create stack string from stack.\n */\n\nfunction createStackString (stack) {\n  var str = this.name + ': ' + this.namespace\n\n  if (this.message) {\n    str += ' deprecated ' + this.message\n  }\n\n  for (var i = 0; i < stack.length; i++) {\n    str += '\\n    at ' + callSiteToString(stack[i])\n  }\n\n  return str\n}\n\n/**\n * Create deprecate for namespace in caller.\n */\n\nfunction depd (namespace) {\n  if (!namespace) {\n    throw new TypeError('argument namespace is required')\n  }\n\n  var stack = getStack()\n  var site = callSiteLocation(stack[1])\n  var file = site[0]\n\n  function deprecate (message) {\n    // call to self as log\n    log.call(deprecate, message)\n  }\n\n  deprecate._file = file\n  deprecate._ignored = isignored(namespace)\n  deprecate._namespace = namespace\n  deprecate._traced = istraced(namespace)\n  deprecate._warned = Object.create(null)\n\n  deprecate.function = wrapfunction\n  deprecate.property = wrapproperty\n\n  return deprecate\n}\n\n/**\n * Determine if namespace is ignored.\n */\n\nfunction isignored (namespace) {\n  /* istanbul ignore next: tested in a child processs */\n  if (process.noDeprecation) {\n    // --no-deprecation support\n    return true\n  }\n\n  var str = ({\"APP_ENV\":\"webpack\"}).NO_DEPRECATION || ''\n\n  // namespace ignored\n  return containsNamespace(str, namespace)\n}\n\n/**\n * Determine if namespace is traced.\n */\n\nfunction istraced (namespace) {\n  /* istanbul ignore next: tested in a child processs */\n  if (process.traceDeprecation) {\n    // --trace-deprecation support\n    return true\n  }\n\n  var str = ({\"APP_ENV\":\"webpack\"}).TRACE_DEPRECATION || ''\n\n  // namespace traced\n  return containsNamespace(str, namespace)\n}\n\n/**\n * Display deprecation message.\n */\n\nfunction log (message, site) {\n  var haslisteners = eventListenerCount(process, 'deprecation') !== 0\n\n  // abort early if no destination\n  if (!haslisteners && this._ignored) {\n    return\n  }\n\n  var caller\n  var callFile\n  var callSite\n  var depSite\n  var i = 0\n  var seen = false\n  var stack = getStack()\n  var file = this._file\n\n  if (site) {\n    // provided site\n    depSite = site\n    callSite = callSiteLocation(stack[1])\n    callSite.name = depSite.name\n    file = callSite[0]\n  } else {\n    // get call site\n    i = 2\n    depSite = callSiteLocation(stack[i])\n    callSite = depSite\n  }\n\n  // get caller of deprecated thing in relation to file\n  for (; i < stack.length; i++) {\n    caller = callSiteLocation(stack[i])\n    callFile = caller[0]\n\n    if (callFile === file) {\n      seen = true\n    } else if (callFile === this._file) {\n      file = this._file\n    } else if (seen) {\n      break\n    }\n  }\n\n  var key = caller\n    ? depSite.join(':') + '__' + caller.join(':')\n    : undefined\n\n  if (key !== undefined && key in this._warned) {\n    // already warned\n    return\n  }\n\n  this._warned[key] = true\n\n  // generate automatic message from call site\n  var msg = message\n  if (!msg) {\n    msg = callSite === depSite || !callSite.name\n      ? defaultMessage(depSite)\n      : defaultMessage(callSite)\n  }\n\n  // emit deprecation if listeners exist\n  if (haslisteners) {\n    var err = DeprecationError(this._namespace, msg, stack.slice(i))\n    process.emit('deprecation', err)\n    return\n  }\n\n  // format and write message\n  var format = process.stderr.isTTY\n    ? formatColor\n    : formatPlain\n  var output = format.call(this, msg, caller, stack.slice(i))\n  process.stderr.write(output + '\\n', 'utf8')\n}\n\n/**\n * Get call site location as array.\n */\n\nfunction callSiteLocation (callSite) {\n  var file = callSite.getFileName() || '<anonymous>'\n  var line = callSite.getLineNumber()\n  var colm = callSite.getColumnNumber()\n\n  if (callSite.isEval()) {\n    file = callSite.getEvalOrigin() + ', ' + file\n  }\n\n  var site = [file, line, colm]\n\n  site.callSite = callSite\n  site.name = callSite.getFunctionName()\n\n  return site\n}\n\n/**\n * Generate a default message from the site.\n */\n\nfunction defaultMessage (site) {\n  var callSite = site.callSite\n  var funcName = site.name\n\n  // make useful anonymous name\n  if (!funcName) {\n    funcName = '<anonymous@' + formatLocation(site) + '>'\n  }\n\n  var context = callSite.getThis()\n  var typeName = context && callSite.getTypeName()\n\n  // ignore useless type name\n  if (typeName === 'Object') {\n    typeName = undefined\n  }\n\n  // make useful type name\n  if (typeName === 'Function') {\n    typeName = context.name || typeName\n  }\n\n  return typeName && callSite.getMethodName()\n    ? typeName + '.' + funcName\n    : funcName\n}\n\n/**\n * Format deprecation message without color.\n */\n\nfunction formatPlain (msg, caller, stack) {\n  var timestamp = new Date().toUTCString()\n\n  var formatted = timestamp +\n    ' ' + this._namespace +\n    ' deprecated ' + msg\n\n  // add stack trace\n  if (this._traced) {\n    for (var i = 0; i < stack.length; i++) {\n      formatted += '\\n    at ' + callSiteToString(stack[i])\n    }\n\n    return formatted\n  }\n\n  if (caller) {\n    formatted += ' at ' + formatLocation(caller)\n  }\n\n  return formatted\n}\n\n/**\n * Format deprecation message with color.\n */\n\nfunction formatColor (msg, caller, stack) {\n  var formatted = '\\x1b[36;1m' + this._namespace + '\\x1b[22;39m' + // bold cyan\n    ' \\x1b[33;1mdeprecated\\x1b[22;39m' + // bold yellow\n    ' \\x1b[0m' + msg + '\\x1b[39m' // reset\n\n  // add stack trace\n  if (this._traced) {\n    for (var i = 0; i < stack.length; i++) {\n      formatted += '\\n    \\x1b[36mat ' + callSiteToString(stack[i]) + '\\x1b[39m' // cyan\n    }\n\n    return formatted\n  }\n\n  if (caller) {\n    formatted += ' \\x1b[36m' + formatLocation(caller) + '\\x1b[39m' // cyan\n  }\n\n  return formatted\n}\n\n/**\n * Format call site location.\n */\n\nfunction formatLocation (callSite) {\n  return relative(basePath, callSite[0]) +\n    ':' + callSite[1] +\n    ':' + callSite[2]\n}\n\n/**\n * Get the stack as array of call sites.\n */\n\nfunction getStack () {\n  var limit = Error.stackTraceLimit\n  var obj = {}\n  var prep = Error.prepareStackTrace\n\n  Error.prepareStackTrace = prepareObjectStackTrace\n  Error.stackTraceLimit = Math.max(10, limit)\n\n  // capture the stack\n  Error.captureStackTrace(obj)\n\n  // slice this function off the top\n  var stack = obj.stack.slice(1)\n\n  Error.prepareStackTrace = prep\n  Error.stackTraceLimit = limit\n\n  return stack\n}\n\n/**\n * Capture call site stack from v8.\n */\n\nfunction prepareObjectStackTrace (obj, stack) {\n  return stack\n}\n\n/**\n * Return a wrapped function in a deprecation message.\n */\n\nfunction wrapfunction (fn, message) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('argument fn must be a function')\n  }\n\n  var args = createArgumentsString(fn.length)\n  var deprecate = this // eslint-disable-line no-unused-vars\n  var stack = getStack()\n  var site = callSiteLocation(stack[1])\n\n  site.name = fn.name\n\n   // eslint-disable-next-line no-eval\n  var deprecatedfn = eval('(function (' + args + ') {\\n' +\n    '\"use strict\"\\n' +\n    'log.call(deprecate, message, site)\\n' +\n    'return fn.apply(this, arguments)\\n' +\n    '})')\n\n  return deprecatedfn\n}\n\n/**\n * Wrap property in a deprecation message.\n */\n\nfunction wrapproperty (obj, prop, message) {\n  if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n    throw new TypeError('argument obj must be object')\n  }\n\n  var descriptor = Object.getOwnPropertyDescriptor(obj, prop)\n\n  if (!descriptor) {\n    throw new TypeError('must call property on owner object')\n  }\n\n  if (!descriptor.configurable) {\n    throw new TypeError('property must be configurable')\n  }\n\n  var deprecate = this\n  var stack = getStack()\n  var site = callSiteLocation(stack[1])\n\n  // set site name\n  site.name = prop\n\n  // convert data descriptor\n  if ('value' in descriptor) {\n    descriptor = convertDataDescriptorToAccessor(obj, prop, message)\n  }\n\n  var get = descriptor.get\n  var set = descriptor.set\n\n  // wrap getter\n  if (typeof get === 'function') {\n    descriptor.get = function getter () {\n      log.call(deprecate, message, site)\n      return get.apply(this, arguments)\n    }\n  }\n\n  // wrap setter\n  if (typeof set === 'function') {\n    descriptor.set = function setter () {\n      log.call(deprecate, message, site)\n      return set.apply(this, arguments)\n    }\n  }\n\n  Object.defineProperty(obj, prop, descriptor)\n}\n\n/**\n * Create DeprecationError for deprecation\n */\n\nfunction DeprecationError (namespace, message, stack) {\n  var error = new Error()\n  var stackString\n\n  Object.defineProperty(error, 'constructor', {\n    value: DeprecationError\n  })\n\n  Object.defineProperty(error, 'message', {\n    configurable: true,\n    enumerable: false,\n    value: message,\n    writable: true\n  })\n\n  Object.defineProperty(error, 'name', {\n    enumerable: false,\n    configurable: true,\n    value: 'DeprecationError',\n    writable: true\n  })\n\n  Object.defineProperty(error, 'namespace', {\n    configurable: true,\n    enumerable: false,\n    value: namespace,\n    writable: true\n  })\n\n  Object.defineProperty(error, 'stack', {\n    configurable: true,\n    enumerable: false,\n    get: function () {\n      if (stackString !== undefined) {\n        return stackString\n      }\n\n      // prepare stack trace\n      return (stackString = createStackString.call(this, stack))\n    },\n    set: function setter (val) {\n      stackString = val\n    }\n  })\n\n  return error\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/depd/index.js?")},"./node_modules/depd/lib/compat/callsite-tostring.js":
/*!***********************************************************!*\
  !*** ./node_modules/depd/lib/compat/callsite-tostring.js ***!
  \***********************************************************/module=>{"use strict";eval("/*!\n * depd\n * Copyright(c) 2014 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\n/**\n * Module exports.\n */\n\nmodule.exports = callSiteToString\n\n/**\n * Format a CallSite file location to a string.\n */\n\nfunction callSiteFileLocation (callSite) {\n  var fileName\n  var fileLocation = ''\n\n  if (callSite.isNative()) {\n    fileLocation = 'native'\n  } else if (callSite.isEval()) {\n    fileName = callSite.getScriptNameOrSourceURL()\n    if (!fileName) {\n      fileLocation = callSite.getEvalOrigin()\n    }\n  } else {\n    fileName = callSite.getFileName()\n  }\n\n  if (fileName) {\n    fileLocation += fileName\n\n    var lineNumber = callSite.getLineNumber()\n    if (lineNumber != null) {\n      fileLocation += ':' + lineNumber\n\n      var columnNumber = callSite.getColumnNumber()\n      if (columnNumber) {\n        fileLocation += ':' + columnNumber\n      }\n    }\n  }\n\n  return fileLocation || 'unknown source'\n}\n\n/**\n * Format a CallSite to a string.\n */\n\nfunction callSiteToString (callSite) {\n  var addSuffix = true\n  var fileLocation = callSiteFileLocation(callSite)\n  var functionName = callSite.getFunctionName()\n  var isConstructor = callSite.isConstructor()\n  var isMethodCall = !(callSite.isToplevel() || isConstructor)\n  var line = ''\n\n  if (isMethodCall) {\n    var methodName = callSite.getMethodName()\n    var typeName = getConstructorName(callSite)\n\n    if (functionName) {\n      if (typeName && functionName.indexOf(typeName) !== 0) {\n        line += typeName + '.'\n      }\n\n      line += functionName\n\n      if (methodName && functionName.lastIndexOf('.' + methodName) !== functionName.length - methodName.length - 1) {\n        line += ' [as ' + methodName + ']'\n      }\n    } else {\n      line += typeName + '.' + (methodName || '<anonymous>')\n    }\n  } else if (isConstructor) {\n    line += 'new ' + (functionName || '<anonymous>')\n  } else if (functionName) {\n    line += functionName\n  } else {\n    addSuffix = false\n    line += fileLocation\n  }\n\n  if (addSuffix) {\n    line += ' (' + fileLocation + ')'\n  }\n\n  return line\n}\n\n/**\n * Get constructor name of reviver.\n */\n\nfunction getConstructorName (obj) {\n  var receiver = obj.receiver\n  return (receiver.constructor && receiver.constructor.name) || null\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/depd/lib/compat/callsite-tostring.js?")},"./node_modules/depd/lib/compat/event-listener-count.js":
/*!**************************************************************!*\
  !*** ./node_modules/depd/lib/compat/event-listener-count.js ***!
  \**************************************************************/module=>{"use strict";eval("/*!\n * depd\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = eventListenerCount\n\n/**\n * Get the count of listeners on an event emitter of a specific type.\n */\n\nfunction eventListenerCount (emitter, type) {\n  return emitter.listeners(type).length\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/depd/lib/compat/event-listener-count.js?")},"./node_modules/depd/lib/compat/index.js":
/*!***********************************************!*\
  !*** ./node_modules/depd/lib/compat/index.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('/*!\n * depd\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar EventEmitter = (__webpack_require__(/*! events */ "events").EventEmitter)\n\n/**\n * Module exports.\n * @public\n */\n\nlazyProperty(module.exports, \'callSiteToString\', function callSiteToString () {\n  var limit = Error.stackTraceLimit\n  var obj = {}\n  var prep = Error.prepareStackTrace\n\n  function prepareObjectStackTrace (obj, stack) {\n    return stack\n  }\n\n  Error.prepareStackTrace = prepareObjectStackTrace\n  Error.stackTraceLimit = 2\n\n  // capture the stack\n  Error.captureStackTrace(obj)\n\n  // slice the stack\n  var stack = obj.stack.slice()\n\n  Error.prepareStackTrace = prep\n  Error.stackTraceLimit = limit\n\n  return stack[0].toString ? toString : __webpack_require__(/*! ./callsite-tostring */ "./node_modules/depd/lib/compat/callsite-tostring.js")\n})\n\nlazyProperty(module.exports, \'eventListenerCount\', function eventListenerCount () {\n  return EventEmitter.listenerCount || __webpack_require__(/*! ./event-listener-count */ "./node_modules/depd/lib/compat/event-listener-count.js")\n})\n\n/**\n * Define a lazy property.\n */\n\nfunction lazyProperty (obj, prop, getter) {\n  function get () {\n    var val = getter()\n\n    Object.defineProperty(obj, prop, {\n      configurable: true,\n      enumerable: true,\n      value: val\n    })\n\n    return val\n  }\n\n  Object.defineProperty(obj, prop, {\n    configurable: true,\n    enumerable: true,\n    get: get\n  })\n}\n\n/**\n * Call toString() on the obj\n */\n\nfunction toString (obj) {\n  return obj.toString()\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/depd/lib/compat/index.js?')},"./node_modules/destroy/index.js":
/*!***************************************!*\
  !*** ./node_modules/destroy/index.js ***!
  \***************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("/*!\n * destroy\n * Copyright(c) 2014 Jonathan Ong\n * MIT Licensed\n */\n\n\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar ReadStream = (__webpack_require__(/*! fs */ \"fs\").ReadStream)\nvar Stream = __webpack_require__(/*! stream */ \"stream\")\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = destroy\n\n/**\n * Destroy a stream.\n *\n * @param {object} stream\n * @public\n */\n\nfunction destroy(stream) {\n  if (stream instanceof ReadStream) {\n    return destroyReadStream(stream)\n  }\n\n  if (!(stream instanceof Stream)) {\n    return stream\n  }\n\n  if (typeof stream.destroy === 'function') {\n    stream.destroy()\n  }\n\n  return stream\n}\n\n/**\n * Destroy a ReadStream.\n *\n * @param {object} stream\n * @private\n */\n\nfunction destroyReadStream(stream) {\n  stream.destroy()\n\n  if (typeof stream.close === 'function') {\n    // node.js core bug work-around\n    stream.on('open', onOpenClose)\n  }\n\n  return stream\n}\n\n/**\n * On open handler to close stream.\n * @private\n */\n\nfunction onOpenClose() {\n  if (typeof this.fd === 'number') {\n    // actually close down the fd\n    this.close()\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/destroy/index.js?")},"./node_modules/discord-api-types/gateway/common.js":
/*!**********************************************************!*\
  !*** ./node_modules/discord-api-types/gateway/common.js ***!
  \**********************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=common.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/gateway/common.js?')},"./node_modules/discord-api-types/gateway/v9.js":
/*!******************************************************!*\
  !*** ./node_modules/discord-api-types/gateway/v9.js ***!
  \******************************************************/function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\r\n/**\r\n * Types extracted from https://discord.com/developers/docs/topics/gateway\r\n */\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n}));\r\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\r\n    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\r\n};\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\nexports.GatewayDispatchEvents = exports.GatewayIntentBits = exports.GatewayCloseCodes = exports.GatewayOpcodes = exports.GatewayVersion = void 0;\r\n__exportStar(__webpack_require__(/*! ./common */ "./node_modules/discord-api-types/gateway/common.js"), exports);\r\nexports.GatewayVersion = \'9\';\r\n/**\r\n * https://discord.com/developers/docs/topics/opcodes-and-status-codes#gateway-gateway-opcodes\r\n */\r\nvar GatewayOpcodes;\r\n(function (GatewayOpcodes) {\r\n    /**\r\n     * An event was dispatched\r\n     */\r\n    GatewayOpcodes[GatewayOpcodes["Dispatch"] = 0] = "Dispatch";\r\n    /**\r\n     * A bidirectional opcode to maintain an active gateway connection.\r\n     * Fired periodically by the client, or fired by the gateway to request an immediate heartbeat from the client.\r\n     */\r\n    GatewayOpcodes[GatewayOpcodes["Heartbeat"] = 1] = "Heartbeat";\r\n    /**\r\n     * Starts a new session during the initial handshake\r\n     */\r\n    GatewayOpcodes[GatewayOpcodes["Identify"] = 2] = "Identify";\r\n    /**\r\n     * Update the client\'s presence\r\n     */\r\n    GatewayOpcodes[GatewayOpcodes["PresenceUpdate"] = 3] = "PresenceUpdate";\r\n    /**\r\n     * Used to join/leave or move between voice channels\r\n     */\r\n    GatewayOpcodes[GatewayOpcodes["VoiceStateUpdate"] = 4] = "VoiceStateUpdate";\r\n    /**\r\n     * Resume a previous session that was disconnected\r\n     */\r\n    GatewayOpcodes[GatewayOpcodes["Resume"] = 6] = "Resume";\r\n    /**\r\n     * You should attempt to reconnect and resume immediately\r\n     */\r\n    GatewayOpcodes[GatewayOpcodes["Reconnect"] = 7] = "Reconnect";\r\n    /**\r\n     * Request information about offline guild members in a large guild\r\n     */\r\n    GatewayOpcodes[GatewayOpcodes["RequestGuildMembers"] = 8] = "RequestGuildMembers";\r\n    /**\r\n     * The session has been invalidated. You should reconnect and identify/resume accordingly\r\n     */\r\n    GatewayOpcodes[GatewayOpcodes["InvalidSession"] = 9] = "InvalidSession";\r\n    /**\r\n     * Sent immediately after connecting, contains the `heartbeat_interval` to use\r\n     */\r\n    GatewayOpcodes[GatewayOpcodes["Hello"] = 10] = "Hello";\r\n    /**\r\n     * Sent in response to receiving a heartbeat to acknowledge that it has been received\r\n     */\r\n    GatewayOpcodes[GatewayOpcodes["HeartbeatAck"] = 11] = "HeartbeatAck";\r\n})(GatewayOpcodes = exports.GatewayOpcodes || (exports.GatewayOpcodes = {}));\r\n/**\r\n * https://discord.com/developers/docs/topics/opcodes-and-status-codes#gateway-gateway-close-event-codes\r\n */\r\nvar GatewayCloseCodes;\r\n(function (GatewayCloseCodes) {\r\n    /**\r\n     * We\'re not sure what went wrong. Try reconnecting?\r\n     */\r\n    GatewayCloseCodes[GatewayCloseCodes["UnknownError"] = 4000] = "UnknownError";\r\n    /**\r\n     * You sent an invalid Gateway opcode or an invalid payload for an opcode. Don\'t do that!\r\n     *\r\n     * See https://discord.com/developers/docs/topics/gateway#payloads-and-opcodes\r\n     */\r\n    GatewayCloseCodes[GatewayCloseCodes["UnknownOpcode"] = 4001] = "UnknownOpcode";\r\n    /**\r\n     * You sent an invalid payload to us. Don\'t do that!\r\n     *\r\n     * See https://discord.com/developers/docs/topics/gateway#sending-payloads\r\n     */\r\n    GatewayCloseCodes[GatewayCloseCodes["DecodeError"] = 4002] = "DecodeError";\r\n    /**\r\n     * You sent us a payload prior to identifying\r\n     *\r\n     * See https://discord.com/developers/docs/topics/gateway#identify\r\n     */\r\n    GatewayCloseCodes[GatewayCloseCodes["NotAuthenticated"] = 4003] = "NotAuthenticated";\r\n    /**\r\n     * The account token sent with your identify payload is incorrect\r\n     *\r\n     * See https://discord.com/developers/docs/topics/gateway#identify\r\n     */\r\n    GatewayCloseCodes[GatewayCloseCodes["AuthenticationFailed"] = 4004] = "AuthenticationFailed";\r\n    /**\r\n     * You sent more than one identify payload. Don\'t do that!\r\n     */\r\n    GatewayCloseCodes[GatewayCloseCodes["AlreadyAuthenticated"] = 4005] = "AlreadyAuthenticated";\r\n    /**\r\n     * The sequence sent when resuming the session was invalid. Reconnect and start a new session\r\n     *\r\n     * See https://discord.com/developers/docs/topics/gateway#resume\r\n     */\r\n    GatewayCloseCodes[GatewayCloseCodes["InvalidSeq"] = 4007] = "InvalidSeq";\r\n    /**\r\n     * Woah nelly! You\'re sending payloads to us too quickly. Slow it down! You will be disconnected on receiving this\r\n     */\r\n    GatewayCloseCodes[GatewayCloseCodes["RateLimited"] = 4008] = "RateLimited";\r\n    /**\r\n     * Your session timed out. Reconnect and start a new one\r\n     */\r\n    GatewayCloseCodes[GatewayCloseCodes["SessionTimedOut"] = 4009] = "SessionTimedOut";\r\n    /**\r\n     * You sent us an invalid shard when identifying\r\n     *\r\n     * See https://discord.com/developers/docs/topics/gateway#sharding\r\n     */\r\n    GatewayCloseCodes[GatewayCloseCodes["InvalidShard"] = 4010] = "InvalidShard";\r\n    /**\r\n     * The session would have handled too many guilds - you are required to shard your connection in order to connect\r\n     *\r\n     * See https://discord.com/developers/docs/topics/gateway#sharding\r\n     */\r\n    GatewayCloseCodes[GatewayCloseCodes["ShardingRequired"] = 4011] = "ShardingRequired";\r\n    /**\r\n     * You sent an invalid version for the gateway\r\n     */\r\n    GatewayCloseCodes[GatewayCloseCodes["InvalidAPIVersion"] = 4012] = "InvalidAPIVersion";\r\n    /**\r\n     * You sent an invalid intent for a Gateway Intent. You may have incorrectly calculated the bitwise value\r\n     *\r\n     * See https://discord.com/developers/docs/topics/gateway#gateway-intents\r\n     */\r\n    GatewayCloseCodes[GatewayCloseCodes["InvalidIntents"] = 4013] = "InvalidIntents";\r\n    /**\r\n     * You sent a disallowed intent for a Gateway Intent. You may have tried to specify an intent that you have not\r\n     * enabled or are not whitelisted for\r\n     *\r\n     * See https://discord.com/developers/docs/topics/gateway#gateway-intents\r\n     *\r\n     * See https://discord.com/developers/docs/topics/gateway#privileged-intents\r\n     */\r\n    GatewayCloseCodes[GatewayCloseCodes["DisallowedIntents"] = 4014] = "DisallowedIntents";\r\n})(GatewayCloseCodes = exports.GatewayCloseCodes || (exports.GatewayCloseCodes = {}));\r\n/**\r\n * https://discord.com/developers/docs/topics/gateway#list-of-intents\r\n */\r\nvar GatewayIntentBits;\r\n(function (GatewayIntentBits) {\r\n    GatewayIntentBits[GatewayIntentBits["Guilds"] = 1] = "Guilds";\r\n    GatewayIntentBits[GatewayIntentBits["GuildMembers"] = 2] = "GuildMembers";\r\n    GatewayIntentBits[GatewayIntentBits["GuildBans"] = 4] = "GuildBans";\r\n    GatewayIntentBits[GatewayIntentBits["GuildEmojisAndStickers"] = 8] = "GuildEmojisAndStickers";\r\n    GatewayIntentBits[GatewayIntentBits["GuildIntegrations"] = 16] = "GuildIntegrations";\r\n    GatewayIntentBits[GatewayIntentBits["GuildWebhooks"] = 32] = "GuildWebhooks";\r\n    GatewayIntentBits[GatewayIntentBits["GuildInvites"] = 64] = "GuildInvites";\r\n    GatewayIntentBits[GatewayIntentBits["GuildVoiceStates"] = 128] = "GuildVoiceStates";\r\n    GatewayIntentBits[GatewayIntentBits["GuildPresences"] = 256] = "GuildPresences";\r\n    GatewayIntentBits[GatewayIntentBits["GuildMessages"] = 512] = "GuildMessages";\r\n    GatewayIntentBits[GatewayIntentBits["GuildMessageReactions"] = 1024] = "GuildMessageReactions";\r\n    GatewayIntentBits[GatewayIntentBits["GuildMessageTyping"] = 2048] = "GuildMessageTyping";\r\n    GatewayIntentBits[GatewayIntentBits["DirectMessages"] = 4096] = "DirectMessages";\r\n    GatewayIntentBits[GatewayIntentBits["DirectMessageReactions"] = 8192] = "DirectMessageReactions";\r\n    GatewayIntentBits[GatewayIntentBits["DirectMessageTyping"] = 16384] = "DirectMessageTyping";\r\n    GatewayIntentBits[GatewayIntentBits["GuildScheduledEvents"] = 65536] = "GuildScheduledEvents";\r\n})(GatewayIntentBits = exports.GatewayIntentBits || (exports.GatewayIntentBits = {}));\r\n/**\r\n * https://discord.com/developers/docs/topics/gateway#commands-and-events-gateway-events\r\n */\r\nvar GatewayDispatchEvents;\r\n(function (GatewayDispatchEvents) {\r\n    GatewayDispatchEvents["ChannelCreate"] = "CHANNEL_CREATE";\r\n    GatewayDispatchEvents["ChannelDelete"] = "CHANNEL_DELETE";\r\n    GatewayDispatchEvents["ChannelPinsUpdate"] = "CHANNEL_PINS_UPDATE";\r\n    GatewayDispatchEvents["ChannelUpdate"] = "CHANNEL_UPDATE";\r\n    GatewayDispatchEvents["GuildBanAdd"] = "GUILD_BAN_ADD";\r\n    GatewayDispatchEvents["GuildBanRemove"] = "GUILD_BAN_REMOVE";\r\n    GatewayDispatchEvents["GuildCreate"] = "GUILD_CREATE";\r\n    GatewayDispatchEvents["GuildDelete"] = "GUILD_DELETE";\r\n    GatewayDispatchEvents["GuildEmojisUpdate"] = "GUILD_EMOJIS_UPDATE";\r\n    GatewayDispatchEvents["GuildIntegrationsUpdate"] = "GUILD_INTEGRATIONS_UPDATE";\r\n    GatewayDispatchEvents["GuildMemberAdd"] = "GUILD_MEMBER_ADD";\r\n    GatewayDispatchEvents["GuildMemberRemove"] = "GUILD_MEMBER_REMOVE";\r\n    GatewayDispatchEvents["GuildMembersChunk"] = "GUILD_MEMBERS_CHUNK";\r\n    GatewayDispatchEvents["GuildMemberUpdate"] = "GUILD_MEMBER_UPDATE";\r\n    GatewayDispatchEvents["GuildRoleCreate"] = "GUILD_ROLE_CREATE";\r\n    GatewayDispatchEvents["GuildRoleDelete"] = "GUILD_ROLE_DELETE";\r\n    GatewayDispatchEvents["GuildRoleUpdate"] = "GUILD_ROLE_UPDATE";\r\n    GatewayDispatchEvents["GuildStickersUpdate"] = "GUILD_STICKERS_UPDATE";\r\n    GatewayDispatchEvents["GuildUpdate"] = "GUILD_UPDATE";\r\n    GatewayDispatchEvents["IntegrationCreate"] = "INTEGRATION_CREATE";\r\n    GatewayDispatchEvents["IntegrationDelete"] = "INTEGRATION_DELETE";\r\n    GatewayDispatchEvents["IntegrationUpdate"] = "INTEGRATION_UPDATE";\r\n    GatewayDispatchEvents["InteractionCreate"] = "INTERACTION_CREATE";\r\n    GatewayDispatchEvents["InviteCreate"] = "INVITE_CREATE";\r\n    GatewayDispatchEvents["InviteDelete"] = "INVITE_DELETE";\r\n    GatewayDispatchEvents["MessageCreate"] = "MESSAGE_CREATE";\r\n    GatewayDispatchEvents["MessageDelete"] = "MESSAGE_DELETE";\r\n    GatewayDispatchEvents["MessageDeleteBulk"] = "MESSAGE_DELETE_BULK";\r\n    GatewayDispatchEvents["MessageReactionAdd"] = "MESSAGE_REACTION_ADD";\r\n    GatewayDispatchEvents["MessageReactionRemove"] = "MESSAGE_REACTION_REMOVE";\r\n    GatewayDispatchEvents["MessageReactionRemoveAll"] = "MESSAGE_REACTION_REMOVE_ALL";\r\n    GatewayDispatchEvents["MessageReactionRemoveEmoji"] = "MESSAGE_REACTION_REMOVE_EMOJI";\r\n    GatewayDispatchEvents["MessageUpdate"] = "MESSAGE_UPDATE";\r\n    GatewayDispatchEvents["PresenceUpdate"] = "PRESENCE_UPDATE";\r\n    GatewayDispatchEvents["StageInstanceCreate"] = "STAGE_INSTANCE_CREATE";\r\n    GatewayDispatchEvents["StageInstanceDelete"] = "STAGE_INSTANCE_DELETE";\r\n    GatewayDispatchEvents["StageInstanceUpdate"] = "STAGE_INSTANCE_UPDATE";\r\n    GatewayDispatchEvents["Ready"] = "READY";\r\n    GatewayDispatchEvents["Resumed"] = "RESUMED";\r\n    GatewayDispatchEvents["ThreadCreate"] = "THREAD_CREATE";\r\n    GatewayDispatchEvents["ThreadDelete"] = "THREAD_DELETE";\r\n    GatewayDispatchEvents["ThreadListSync"] = "THREAD_LIST_SYNC";\r\n    GatewayDispatchEvents["ThreadMembersUpdate"] = "THREAD_MEMBERS_UPDATE";\r\n    GatewayDispatchEvents["ThreadMemberUpdate"] = "THREAD_MEMBER_UPDATE";\r\n    GatewayDispatchEvents["ThreadUpdate"] = "THREAD_UPDATE";\r\n    GatewayDispatchEvents["TypingStart"] = "TYPING_START";\r\n    GatewayDispatchEvents["UserUpdate"] = "USER_UPDATE";\r\n    GatewayDispatchEvents["VoiceServerUpdate"] = "VOICE_SERVER_UPDATE";\r\n    GatewayDispatchEvents["VoiceStateUpdate"] = "VOICE_STATE_UPDATE";\r\n    GatewayDispatchEvents["WebhooksUpdate"] = "WEBHOOKS_UPDATE";\r\n    GatewayDispatchEvents["GuildScheduledEventCreate"] = "GUILD_SCHEDULED_EVENT_CREATE";\r\n    GatewayDispatchEvents["GuildScheduledEventUpdate"] = "GUILD_SCHEDULED_EVENT_UPDATE";\r\n    GatewayDispatchEvents["GuildScheduledEventDelete"] = "GUILD_SCHEDULED_EVENT_DELETE";\r\n    GatewayDispatchEvents["GuildScheduledEventUserAdd"] = "GUILD_SCHEDULED_EVENT_USER_ADD";\r\n    GatewayDispatchEvents["GuildScheduledEventUserRemove"] = "GUILD_SCHEDULED_EVENT_USER_REMOVE";\r\n})(GatewayDispatchEvents = exports.GatewayDispatchEvents || (exports.GatewayDispatchEvents = {}));\r\n// #endregion Shared\r\n//# sourceMappingURL=v9.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/gateway/v9.js?')},"./node_modules/discord-api-types/globals.js":
/*!***************************************************!*\
  !*** ./node_modules/discord-api-types/globals.js ***!
  \***************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\nexports.FormattingPatterns = void 0;\r\n/**\r\n * https://discord.com/developers/docs/reference#message-formatting-formats\r\n */\r\nexports.FormattingPatterns = {\r\n    /**\r\n     * Regular expression for matching a user mention, strictly without a nickname\r\n     *\r\n     * The `id` group property is present on the `exec` result of this expression\r\n     */\r\n    User: /<@(?<id>\\d{17,20})>/,\r\n    /**\r\n     * Regular expression for matching a user mention, strictly with a nickname\r\n     *\r\n     * The `id` group property is present on the `exec` result of this expression\r\n     */\r\n    UserWithNickname: /<@!(?<id>\\d{17,20})>/,\r\n    /**\r\n     * Regular expression for matching a user mention, with or without a nickname\r\n     *\r\n     * The `id` group property is present on the `exec` result of this expression\r\n     */\r\n    UserWithOptionalNickname: /<@!?(?<id>\\d{17,20})>/,\r\n    /**\r\n     * Regular expression for matching a channel mention\r\n     *\r\n     * The `id` group property is present on the `exec` result of this expression\r\n     */\r\n    Channel: /<#(?<id>\\d{17,20})>/,\r\n    /**\r\n     * Regular expression for matching a role mention\r\n     *\r\n     * The `id` group property is present on the `exec` result of this expression\r\n     */\r\n    Role: /<@&(?<id>\\d{17,20})>/,\r\n    /**\r\n     * Regular expression for matching a custom emoji, either static or animated\r\n     *\r\n     * The `animated`, `name` and `id` group properties are present on the `exec` result of this expression\r\n     */\r\n    Emoji: /<(?<animated>a)?:(?<name>\\w{2,32}):(?<id>\\d{17,20})>/,\r\n    /**\r\n     * Regular expression for matching strictly an animated custom emoji\r\n     *\r\n     * The `animated`, `name` and `id` group properties are present on the `exec` result of this expression\r\n     */\r\n    AnimatedEmoji: /<(?<animated>a):(?<name>\\w{2,32}):(?<id>\\d{17,20})>/,\r\n    /**\r\n     * Regular expression for matching strictly a static custom emoji\r\n     *\r\n     * The `name` and `id` group properties are present on the `exec` result of this expression\r\n     */\r\n    StaticEmoji: /<:(?<name>\\w{2,32}):(?<id>\\d{17,20})>/,\r\n    /**\r\n     * Regular expression for matching a timestamp, either default or custom styled\r\n     *\r\n     * The `timestamp` and `style` group properties are present on the `exec` result of this expression\r\n     */\r\n    Timestamp: /<t:(?<timestamp>-?\\d{1,13})(:(?<style>[tTdDfFR]))?>/,\r\n    /**\r\n     * Regular expression for matching strictly default styled timestamps\r\n     *\r\n     * The `timestamp` group property is present on the `exec` result of this expression\r\n     */\r\n    DefaultStyledTimestamp: /<t:(?<timestamp>-?\\d{1,13})>/,\r\n    /**\r\n     * Regular expression for matching strictly custom styled timestamps\r\n     *\r\n     * The `timestamp` and `style` group properties are present on the `exec` result of this expression\r\n     */\r\n    StyledTimestamp: /<t:(?<timestamp>-?\\d{1,13}):(?<style>[tTdDfFR])>/,\r\n};\r\n/**\r\n * Freezes the formatting patterns\r\n * @internal\r\n */\r\nObject.freeze(exports.FormattingPatterns);\r\n//# sourceMappingURL=globals.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/globals.js?')},"./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/boolean.js":
/*!*************************************************************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/boolean.js ***!
  \*************************************************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=boolean.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/boolean.js?')},"./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/channel.js":
/*!*************************************************************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/channel.js ***!
  \*************************************************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=channel.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/channel.js?')},"./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/integer.js":
/*!*************************************************************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/integer.js ***!
  \*************************************************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=integer.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/integer.js?')},"./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/mentionable.js":
/*!*****************************************************************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/mentionable.js ***!
  \*****************************************************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=mentionable.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/mentionable.js?')},"./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/number.js":
/*!************************************************************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/number.js ***!
  \************************************************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=number.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/number.js?')},"./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/role.js":
/*!**********************************************************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/role.js ***!
  \**********************************************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=role.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/role.js?')},"./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/shared.js":
/*!************************************************************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/shared.js ***!
  \************************************************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\nexports.ApplicationCommandOptionType = void 0;\r\n/**\r\n * https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-option-type\r\n */\r\nvar ApplicationCommandOptionType;\r\n(function (ApplicationCommandOptionType) {\r\n    ApplicationCommandOptionType[ApplicationCommandOptionType["Subcommand"] = 1] = "Subcommand";\r\n    ApplicationCommandOptionType[ApplicationCommandOptionType["SubcommandGroup"] = 2] = "SubcommandGroup";\r\n    ApplicationCommandOptionType[ApplicationCommandOptionType["String"] = 3] = "String";\r\n    ApplicationCommandOptionType[ApplicationCommandOptionType["Integer"] = 4] = "Integer";\r\n    ApplicationCommandOptionType[ApplicationCommandOptionType["Boolean"] = 5] = "Boolean";\r\n    ApplicationCommandOptionType[ApplicationCommandOptionType["User"] = 6] = "User";\r\n    ApplicationCommandOptionType[ApplicationCommandOptionType["Channel"] = 7] = "Channel";\r\n    ApplicationCommandOptionType[ApplicationCommandOptionType["Role"] = 8] = "Role";\r\n    ApplicationCommandOptionType[ApplicationCommandOptionType["Mentionable"] = 9] = "Mentionable";\r\n    ApplicationCommandOptionType[ApplicationCommandOptionType["Number"] = 10] = "Number";\r\n})(ApplicationCommandOptionType = exports.ApplicationCommandOptionType || (exports.ApplicationCommandOptionType = {}));\r\n//# sourceMappingURL=shared.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/shared.js?')},"./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/string.js":
/*!************************************************************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/string.js ***!
  \************************************************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=string.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/string.js?')},"./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/subcommand.js":
/*!****************************************************************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/subcommand.js ***!
  \****************************************************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=subcommand.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/subcommand.js?')},"./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/subcommandGroup.js":
/*!*********************************************************************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/subcommandGroup.js ***!
  \*********************************************************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=subcommandGroup.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/subcommandGroup.js?')},"./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/user.js":
/*!**********************************************************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/user.js ***!
  \**********************************************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=user.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/user.js?')},"./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/chatInput.js":
/*!****************************************************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/chatInput.js ***!
  \****************************************************************************************************/function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n}));\r\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\r\n    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\r\n};\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n__exportStar(__webpack_require__(/*! ./_chatInput/string */ "./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/string.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./_chatInput/integer */ "./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/integer.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./_chatInput/boolean */ "./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/boolean.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./_chatInput/user */ "./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/user.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./_chatInput/channel */ "./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/channel.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./_chatInput/role */ "./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/role.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./_chatInput/mentionable */ "./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/mentionable.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./_chatInput/number */ "./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/number.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./_chatInput/subcommand */ "./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/subcommand.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./_chatInput/subcommandGroup */ "./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/subcommandGroup.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./_chatInput/shared */ "./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/_chatInput/shared.js"), exports);\r\n//# sourceMappingURL=chatInput.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/chatInput.js?')},"./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/contextMenu.js":
/*!******************************************************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/contextMenu.js ***!
  \******************************************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=contextMenu.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/contextMenu.js?')},"./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/permissions.js":
/*!******************************************************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/permissions.js ***!
  \******************************************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\nexports.ApplicationCommandPermissionType = void 0;\r\n/**\r\n * https://discord.com/developers/docs/interactions/application-commands#application-command-permissions-object-application-command-permission-type\r\n */\r\nvar ApplicationCommandPermissionType;\r\n(function (ApplicationCommandPermissionType) {\r\n    ApplicationCommandPermissionType[ApplicationCommandPermissionType["Role"] = 1] = "Role";\r\n    ApplicationCommandPermissionType[ApplicationCommandPermissionType["User"] = 2] = "User";\r\n})(ApplicationCommandPermissionType = exports.ApplicationCommandPermissionType || (exports.ApplicationCommandPermissionType = {}));\r\n//# sourceMappingURL=permissions.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/permissions.js?')},"./node_modules/discord-api-types/payloads/v9/_interactions/applicationCommands.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/_interactions/applicationCommands.js ***!
  \*****************************************************************************************/function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n}));\r\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\r\n    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\r\n};\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\nexports.ApplicationCommandType = void 0;\r\n__exportStar(__webpack_require__(/*! ./_applicationCommands/chatInput */ "./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/chatInput.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./_applicationCommands/contextMenu */ "./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/contextMenu.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./_applicationCommands/permissions */ "./node_modules/discord-api-types/payloads/v9/_interactions/_applicationCommands/permissions.js"), exports);\r\n/**\r\n * https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-types\r\n */\r\nvar ApplicationCommandType;\r\n(function (ApplicationCommandType) {\r\n    ApplicationCommandType[ApplicationCommandType["ChatInput"] = 1] = "ChatInput";\r\n    ApplicationCommandType[ApplicationCommandType["User"] = 2] = "User";\r\n    ApplicationCommandType[ApplicationCommandType["Message"] = 3] = "Message";\r\n})(ApplicationCommandType = exports.ApplicationCommandType || (exports.ApplicationCommandType = {}));\r\n//# sourceMappingURL=applicationCommands.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/_interactions/applicationCommands.js?')},"./node_modules/discord-api-types/payloads/v9/_interactions/base.js":
/*!**************************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/_interactions/base.js ***!
  \**************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=base.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/_interactions/base.js?')},"./node_modules/discord-api-types/payloads/v9/_interactions/messageComponents.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/_interactions/messageComponents.js ***!
  \***************************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=messageComponents.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/_interactions/messageComponents.js?')},"./node_modules/discord-api-types/payloads/v9/_interactions/ping.js":
/*!**************************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/_interactions/ping.js ***!
  \**************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=ping.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/_interactions/ping.js?')},"./node_modules/discord-api-types/payloads/v9/_interactions/responses.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/_interactions/responses.js ***!
  \*******************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\nexports.InteractionResponseType = exports.InteractionType = void 0;\r\n/**\r\n * https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-type\r\n */\r\nvar InteractionType;\r\n(function (InteractionType) {\r\n    InteractionType[InteractionType["Ping"] = 1] = "Ping";\r\n    InteractionType[InteractionType["ApplicationCommand"] = 2] = "ApplicationCommand";\r\n    InteractionType[InteractionType["MessageComponent"] = 3] = "MessageComponent";\r\n    InteractionType[InteractionType["ApplicationCommandAutocomplete"] = 4] = "ApplicationCommandAutocomplete";\r\n})(InteractionType = exports.InteractionType || (exports.InteractionType = {}));\r\n/**\r\n * https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-response-object-interaction-callback-type\r\n */\r\nvar InteractionResponseType;\r\n(function (InteractionResponseType) {\r\n    /**\r\n     * ACK a `Ping`\r\n     */\r\n    InteractionResponseType[InteractionResponseType["Pong"] = 1] = "Pong";\r\n    /**\r\n     * Respond to an interaction with a message\r\n     */\r\n    InteractionResponseType[InteractionResponseType["ChannelMessageWithSource"] = 4] = "ChannelMessageWithSource";\r\n    /**\r\n     * ACK an interaction and edit to a response later, the user sees a loading state\r\n     */\r\n    InteractionResponseType[InteractionResponseType["DeferredChannelMessageWithSource"] = 5] = "DeferredChannelMessageWithSource";\r\n    /**\r\n     * ACK a button interaction and update it to a loading state\r\n     */\r\n    InteractionResponseType[InteractionResponseType["DeferredMessageUpdate"] = 6] = "DeferredMessageUpdate";\r\n    /**\r\n     * ACK a button interaction and edit the message to which the button was attached\r\n     */\r\n    InteractionResponseType[InteractionResponseType["UpdateMessage"] = 7] = "UpdateMessage";\r\n    /**\r\n     * For autocomplete interactions\r\n     */\r\n    InteractionResponseType[InteractionResponseType["ApplicationCommandAutocompleteResult"] = 8] = "ApplicationCommandAutocompleteResult";\r\n})(InteractionResponseType = exports.InteractionResponseType || (exports.InteractionResponseType = {}));\r\n//# sourceMappingURL=responses.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/_interactions/responses.js?')},"./node_modules/discord-api-types/payloads/v9/application.js":
/*!*******************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/application.js ***!
  \*******************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\n/**\r\n * Types extracted from https://discord.com/developers/docs/resources/application\r\n */\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\nexports.ApplicationFlags = void 0;\r\n/**\r\n * https://discord.com/developers/docs/resources/application#application-object-application-flags\r\n */\r\nvar ApplicationFlags;\r\n(function (ApplicationFlags) {\r\n    ApplicationFlags[ApplicationFlags["EmbeddedReleased"] = 2] = "EmbeddedReleased";\r\n    ApplicationFlags[ApplicationFlags["ManagedEmoji"] = 4] = "ManagedEmoji";\r\n    ApplicationFlags[ApplicationFlags["GroupDMCreate"] = 16] = "GroupDMCreate";\r\n    ApplicationFlags[ApplicationFlags["RPCHasConnected"] = 2048] = "RPCHasConnected";\r\n    ApplicationFlags[ApplicationFlags["GatewayPresence"] = 4096] = "GatewayPresence";\r\n    ApplicationFlags[ApplicationFlags["GatewayPresenceLimited"] = 8192] = "GatewayPresenceLimited";\r\n    ApplicationFlags[ApplicationFlags["GatewayGuildMembers"] = 16384] = "GatewayGuildMembers";\r\n    ApplicationFlags[ApplicationFlags["GatewayGuildMembersLimited"] = 32768] = "GatewayGuildMembersLimited";\r\n    ApplicationFlags[ApplicationFlags["VerificationPendingGuildLimit"] = 65536] = "VerificationPendingGuildLimit";\r\n    ApplicationFlags[ApplicationFlags["Embedded"] = 131072] = "Embedded";\r\n    ApplicationFlags[ApplicationFlags["GatewayMessageContent"] = 262144] = "GatewayMessageContent";\r\n    ApplicationFlags[ApplicationFlags["GatewayMessageContentLimited"] = 524288] = "GatewayMessageContentLimited";\r\n    ApplicationFlags[ApplicationFlags["EmbeddedFirstParty"] = 1048576] = "EmbeddedFirstParty";\r\n})(ApplicationFlags = exports.ApplicationFlags || (exports.ApplicationFlags = {}));\r\n//# sourceMappingURL=application.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/application.js?')},"./node_modules/discord-api-types/payloads/v9/auditLog.js":
/*!****************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/auditLog.js ***!
  \****************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\n/**\r\n * Types extracted from https://discord.com/developers/docs/resources/audit-log\r\n */\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\nexports.AuditLogOptionsType = exports.AuditLogEvent = void 0;\r\n/**\r\n * https://discord.com/developers/docs/resources/audit-log#audit-log-entry-object-audit-log-events\r\n */\r\nvar AuditLogEvent;\r\n(function (AuditLogEvent) {\r\n    AuditLogEvent[AuditLogEvent["GuildUpdate"] = 1] = "GuildUpdate";\r\n    AuditLogEvent[AuditLogEvent["ChannelCreate"] = 10] = "ChannelCreate";\r\n    AuditLogEvent[AuditLogEvent["ChannelUpdate"] = 11] = "ChannelUpdate";\r\n    AuditLogEvent[AuditLogEvent["ChannelDelete"] = 12] = "ChannelDelete";\r\n    AuditLogEvent[AuditLogEvent["ChannelOverwriteCreate"] = 13] = "ChannelOverwriteCreate";\r\n    AuditLogEvent[AuditLogEvent["ChannelOverwriteUpdate"] = 14] = "ChannelOverwriteUpdate";\r\n    AuditLogEvent[AuditLogEvent["ChannelOverwriteDelete"] = 15] = "ChannelOverwriteDelete";\r\n    AuditLogEvent[AuditLogEvent["MemberKick"] = 20] = "MemberKick";\r\n    AuditLogEvent[AuditLogEvent["MemberPrune"] = 21] = "MemberPrune";\r\n    AuditLogEvent[AuditLogEvent["MemberBanAdd"] = 22] = "MemberBanAdd";\r\n    AuditLogEvent[AuditLogEvent["MemberBanRemove"] = 23] = "MemberBanRemove";\r\n    AuditLogEvent[AuditLogEvent["MemberUpdate"] = 24] = "MemberUpdate";\r\n    AuditLogEvent[AuditLogEvent["MemberRoleUpdate"] = 25] = "MemberRoleUpdate";\r\n    AuditLogEvent[AuditLogEvent["MemberMove"] = 26] = "MemberMove";\r\n    AuditLogEvent[AuditLogEvent["MemberDisconnect"] = 27] = "MemberDisconnect";\r\n    AuditLogEvent[AuditLogEvent["BotAdd"] = 28] = "BotAdd";\r\n    AuditLogEvent[AuditLogEvent["RoleCreate"] = 30] = "RoleCreate";\r\n    AuditLogEvent[AuditLogEvent["RoleUpdate"] = 31] = "RoleUpdate";\r\n    AuditLogEvent[AuditLogEvent["RoleDelete"] = 32] = "RoleDelete";\r\n    AuditLogEvent[AuditLogEvent["InviteCreate"] = 40] = "InviteCreate";\r\n    AuditLogEvent[AuditLogEvent["InviteUpdate"] = 41] = "InviteUpdate";\r\n    AuditLogEvent[AuditLogEvent["InviteDelete"] = 42] = "InviteDelete";\r\n    AuditLogEvent[AuditLogEvent["WebhookCreate"] = 50] = "WebhookCreate";\r\n    AuditLogEvent[AuditLogEvent["WebhookUpdate"] = 51] = "WebhookUpdate";\r\n    AuditLogEvent[AuditLogEvent["WebhookDelete"] = 52] = "WebhookDelete";\r\n    AuditLogEvent[AuditLogEvent["EmojiCreate"] = 60] = "EmojiCreate";\r\n    AuditLogEvent[AuditLogEvent["EmojiUpdate"] = 61] = "EmojiUpdate";\r\n    AuditLogEvent[AuditLogEvent["EmojiDelete"] = 62] = "EmojiDelete";\r\n    AuditLogEvent[AuditLogEvent["MessageDelete"] = 72] = "MessageDelete";\r\n    AuditLogEvent[AuditLogEvent["MessageBulkDelete"] = 73] = "MessageBulkDelete";\r\n    AuditLogEvent[AuditLogEvent["MessagePin"] = 74] = "MessagePin";\r\n    AuditLogEvent[AuditLogEvent["MessageUnpin"] = 75] = "MessageUnpin";\r\n    AuditLogEvent[AuditLogEvent["IntegrationCreate"] = 80] = "IntegrationCreate";\r\n    AuditLogEvent[AuditLogEvent["IntegrationUpdate"] = 81] = "IntegrationUpdate";\r\n    AuditLogEvent[AuditLogEvent["IntegrationDelete"] = 82] = "IntegrationDelete";\r\n    AuditLogEvent[AuditLogEvent["StageInstanceCreate"] = 83] = "StageInstanceCreate";\r\n    AuditLogEvent[AuditLogEvent["StageInstanceUpdate"] = 84] = "StageInstanceUpdate";\r\n    AuditLogEvent[AuditLogEvent["StageInstanceDelete"] = 85] = "StageInstanceDelete";\r\n    AuditLogEvent[AuditLogEvent["StickerCreate"] = 90] = "StickerCreate";\r\n    AuditLogEvent[AuditLogEvent["StickerUpdate"] = 91] = "StickerUpdate";\r\n    AuditLogEvent[AuditLogEvent["StickerDelete"] = 92] = "StickerDelete";\r\n    AuditLogEvent[AuditLogEvent["GuildScheduledEventCreate"] = 100] = "GuildScheduledEventCreate";\r\n    AuditLogEvent[AuditLogEvent["GuildScheduledEventUpdate"] = 101] = "GuildScheduledEventUpdate";\r\n    AuditLogEvent[AuditLogEvent["GuildScheduledEventDelete"] = 102] = "GuildScheduledEventDelete";\r\n    AuditLogEvent[AuditLogEvent["ThreadCreate"] = 110] = "ThreadCreate";\r\n    AuditLogEvent[AuditLogEvent["ThreadUpdate"] = 111] = "ThreadUpdate";\r\n    AuditLogEvent[AuditLogEvent["ThreadDelete"] = 112] = "ThreadDelete";\r\n})(AuditLogEvent = exports.AuditLogEvent || (exports.AuditLogEvent = {}));\r\nvar AuditLogOptionsType;\r\n(function (AuditLogOptionsType) {\r\n    AuditLogOptionsType["Role"] = "0";\r\n    AuditLogOptionsType["Member"] = "1";\r\n})(AuditLogOptionsType = exports.AuditLogOptionsType || (exports.AuditLogOptionsType = {}));\r\n//# sourceMappingURL=auditLog.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/auditLog.js?')},"./node_modules/discord-api-types/payloads/v9/channel.js":
/*!***************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/channel.js ***!
  \***************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\n/**\r\n * Types extracted from https://discord.com/developers/docs/resources/channel\r\n */\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\nexports.ButtonStyle = exports.ComponentType = exports.AllowedMentionsTypes = exports.EmbedType = exports.ThreadMemberFlags = exports.ThreadAutoArchiveDuration = exports.OverwriteType = exports.MessageFlags = exports.MessageActivityType = exports.MessageType = exports.VideoQualityMode = exports.ChannelType = void 0;\r\n/**\r\n * https://discord.com/developers/docs/resources/channel#channel-object-channel-types\r\n */\r\nvar ChannelType;\r\n(function (ChannelType) {\r\n    /**\r\n     * A text channel within a guild\r\n     */\r\n    ChannelType[ChannelType["GuildText"] = 0] = "GuildText";\r\n    /**\r\n     * A direct message between users\r\n     */\r\n    ChannelType[ChannelType["DM"] = 1] = "DM";\r\n    /**\r\n     * A voice channel within a guild\r\n     */\r\n    ChannelType[ChannelType["GuildVoice"] = 2] = "GuildVoice";\r\n    /**\r\n     * A direct message between multiple users\r\n     */\r\n    ChannelType[ChannelType["GroupDM"] = 3] = "GroupDM";\r\n    /**\r\n     * An organizational category that contains up to 50 channels\r\n     *\r\n     * See https://support.discord.com/hc/en-us/articles/115001580171-Channel-Categories-101\r\n     */\r\n    ChannelType[ChannelType["GuildCategory"] = 4] = "GuildCategory";\r\n    /**\r\n     * A channel that users can follow and crosspost into their own guild\r\n     *\r\n     * See https://support.discord.com/hc/en-us/articles/360032008192\r\n     */\r\n    ChannelType[ChannelType["GuildNews"] = 5] = "GuildNews";\r\n    /**\r\n     * A channel in which game developers can sell their game on Discord\r\n     *\r\n     * See https://discord.com/developers/docs/game-and-server-management/special-channels\r\n     */\r\n    ChannelType[ChannelType["GuildStore"] = 6] = "GuildStore";\r\n    /**\r\n     * A thread channel (public) within a Guild News channel\r\n     */\r\n    ChannelType[ChannelType["GuildNewsThread"] = 10] = "GuildNewsThread";\r\n    /**\r\n     * A public thread channel within a Guild Text channel\r\n     */\r\n    ChannelType[ChannelType["GuildPublicThread"] = 11] = "GuildPublicThread";\r\n    /**\r\n     * A private thread channel within a Guild Text channel\r\n     */\r\n    ChannelType[ChannelType["GuildPrivateThread"] = 12] = "GuildPrivateThread";\r\n    /**\r\n     * A voice channel for hosting events with an audience\r\n     *\r\n     * See https://support.discord.com/hc/en-us/articles/1500005513722\r\n     */\r\n    ChannelType[ChannelType["GuildStageVoice"] = 13] = "GuildStageVoice";\r\n})(ChannelType = exports.ChannelType || (exports.ChannelType = {}));\r\nvar VideoQualityMode;\r\n(function (VideoQualityMode) {\r\n    /**\r\n     * Discord chooses the quality for optimal performance\r\n     */\r\n    VideoQualityMode[VideoQualityMode["Auto"] = 1] = "Auto";\r\n    /**\r\n     * 720p\r\n     */\r\n    VideoQualityMode[VideoQualityMode["Full"] = 2] = "Full";\r\n})(VideoQualityMode = exports.VideoQualityMode || (exports.VideoQualityMode = {}));\r\n/**\r\n * https://discord.com/developers/docs/resources/channel#message-object-message-types\r\n */\r\nvar MessageType;\r\n(function (MessageType) {\r\n    MessageType[MessageType["Default"] = 0] = "Default";\r\n    MessageType[MessageType["RecipientAdd"] = 1] = "RecipientAdd";\r\n    MessageType[MessageType["RecipientRemove"] = 2] = "RecipientRemove";\r\n    MessageType[MessageType["Call"] = 3] = "Call";\r\n    MessageType[MessageType["ChannelNameChange"] = 4] = "ChannelNameChange";\r\n    MessageType[MessageType["ChannelIconChange"] = 5] = "ChannelIconChange";\r\n    MessageType[MessageType["ChannelPinnedMessage"] = 6] = "ChannelPinnedMessage";\r\n    MessageType[MessageType["GuildMemberJoin"] = 7] = "GuildMemberJoin";\r\n    MessageType[MessageType["UserPremiumGuildSubscription"] = 8] = "UserPremiumGuildSubscription";\r\n    MessageType[MessageType["UserPremiumGuildSubscriptionTier1"] = 9] = "UserPremiumGuildSubscriptionTier1";\r\n    MessageType[MessageType["UserPremiumGuildSubscriptionTier2"] = 10] = "UserPremiumGuildSubscriptionTier2";\r\n    MessageType[MessageType["UserPremiumGuildSubscriptionTier3"] = 11] = "UserPremiumGuildSubscriptionTier3";\r\n    MessageType[MessageType["ChannelFollowAdd"] = 12] = "ChannelFollowAdd";\r\n    MessageType[MessageType["GuildDiscoveryDisqualified"] = 14] = "GuildDiscoveryDisqualified";\r\n    MessageType[MessageType["GuildDiscoveryRequalified"] = 15] = "GuildDiscoveryRequalified";\r\n    MessageType[MessageType["GuildDiscoveryGracePeriodInitialWarning"] = 16] = "GuildDiscoveryGracePeriodInitialWarning";\r\n    MessageType[MessageType["GuildDiscoveryGracePeriodFinalWarning"] = 17] = "GuildDiscoveryGracePeriodFinalWarning";\r\n    MessageType[MessageType["ThreadCreated"] = 18] = "ThreadCreated";\r\n    MessageType[MessageType["Reply"] = 19] = "Reply";\r\n    MessageType[MessageType["ChatInputCommand"] = 20] = "ChatInputCommand";\r\n    MessageType[MessageType["ThreadStarterMessage"] = 21] = "ThreadStarterMessage";\r\n    MessageType[MessageType["GuildInviteReminder"] = 22] = "GuildInviteReminder";\r\n    MessageType[MessageType["ContextMenuCommand"] = 23] = "ContextMenuCommand";\r\n})(MessageType = exports.MessageType || (exports.MessageType = {}));\r\n/**\r\n * https://discord.com/developers/docs/resources/channel#message-object-message-activity-types\r\n */\r\nvar MessageActivityType;\r\n(function (MessageActivityType) {\r\n    MessageActivityType[MessageActivityType["Join"] = 1] = "Join";\r\n    MessageActivityType[MessageActivityType["Spectate"] = 2] = "Spectate";\r\n    MessageActivityType[MessageActivityType["Listen"] = 3] = "Listen";\r\n    MessageActivityType[MessageActivityType["JoinRequest"] = 5] = "JoinRequest";\r\n})(MessageActivityType = exports.MessageActivityType || (exports.MessageActivityType = {}));\r\n/**\r\n * https://discord.com/developers/docs/resources/channel#message-object-message-flags\r\n */\r\nvar MessageFlags;\r\n(function (MessageFlags) {\r\n    /**\r\n     * This message has been published to subscribed channels (via Channel Following)\r\n     */\r\n    MessageFlags[MessageFlags["Crossposted"] = 1] = "Crossposted";\r\n    /**\r\n     * This message originated from a message in another channel (via Channel Following)\r\n     */\r\n    MessageFlags[MessageFlags["IsCrosspost"] = 2] = "IsCrosspost";\r\n    /**\r\n     * Do not include any embeds when serializing this message\r\n     */\r\n    MessageFlags[MessageFlags["SuppressEmbeds"] = 4] = "SuppressEmbeds";\r\n    /**\r\n     * The source message for this crosspost has been deleted (via Channel Following)\r\n     */\r\n    MessageFlags[MessageFlags["SourceMessageDeleted"] = 8] = "SourceMessageDeleted";\r\n    /**\r\n     * This message came from the urgent message system\r\n     */\r\n    MessageFlags[MessageFlags["Urgent"] = 16] = "Urgent";\r\n    /**\r\n     * This message has an associated thread, which shares its id\r\n     */\r\n    MessageFlags[MessageFlags["HasThread"] = 32] = "HasThread";\r\n    /**\r\n     * This message is only visible to the user who invoked the Interaction\r\n     */\r\n    MessageFlags[MessageFlags["Ephemeral"] = 64] = "Ephemeral";\r\n    /**\r\n     * This message is an Interaction Response and the bot is "thinking"\r\n     */\r\n    MessageFlags[MessageFlags["Loading"] = 128] = "Loading";\r\n})(MessageFlags = exports.MessageFlags || (exports.MessageFlags = {}));\r\nvar OverwriteType;\r\n(function (OverwriteType) {\r\n    OverwriteType[OverwriteType["Role"] = 0] = "Role";\r\n    OverwriteType[OverwriteType["Member"] = 1] = "Member";\r\n})(OverwriteType = exports.OverwriteType || (exports.OverwriteType = {}));\r\nvar ThreadAutoArchiveDuration;\r\n(function (ThreadAutoArchiveDuration) {\r\n    ThreadAutoArchiveDuration[ThreadAutoArchiveDuration["OneHour"] = 60] = "OneHour";\r\n    ThreadAutoArchiveDuration[ThreadAutoArchiveDuration["OneDay"] = 1440] = "OneDay";\r\n    ThreadAutoArchiveDuration[ThreadAutoArchiveDuration["ThreeDays"] = 4320] = "ThreeDays";\r\n    ThreadAutoArchiveDuration[ThreadAutoArchiveDuration["OneWeek"] = 10080] = "OneWeek";\r\n})(ThreadAutoArchiveDuration = exports.ThreadAutoArchiveDuration || (exports.ThreadAutoArchiveDuration = {}));\r\nvar ThreadMemberFlags;\r\n(function (ThreadMemberFlags) {\r\n})(ThreadMemberFlags = exports.ThreadMemberFlags || (exports.ThreadMemberFlags = {}));\r\n/**\r\n * https://discord.com/developers/docs/resources/channel#embed-object-embed-types\r\n * @deprecated *Embed types should be considered deprecated and might be removed in a future API version*\r\n */\r\nvar EmbedType;\r\n(function (EmbedType) {\r\n    /**\r\n     * Generic embed rendered from embed attributes\r\n     */\r\n    EmbedType["Rich"] = "rich";\r\n    /**\r\n     * Image embed\r\n     */\r\n    EmbedType["Image"] = "image";\r\n    /**\r\n     * Video embed\r\n     */\r\n    EmbedType["Video"] = "video";\r\n    /**\r\n     * Animated gif image embed rendered as a video embed\r\n     */\r\n    EmbedType["GIFV"] = "gifv";\r\n    /**\r\n     * Article embed\r\n     */\r\n    EmbedType["Article"] = "article";\r\n    /**\r\n     * Link embed\r\n     */\r\n    EmbedType["Link"] = "link";\r\n})(EmbedType = exports.EmbedType || (exports.EmbedType = {}));\r\n/**\r\n * https://discord.com/developers/docs/resources/channel#allowed-mentions-object-allowed-mention-types\r\n */\r\nvar AllowedMentionsTypes;\r\n(function (AllowedMentionsTypes) {\r\n    /**\r\n     * Controls @everyone and @here mentions\r\n     */\r\n    AllowedMentionsTypes["Everyone"] = "everyone";\r\n    /**\r\n     * Controls role mentions\r\n     */\r\n    AllowedMentionsTypes["Role"] = "roles";\r\n    /**\r\n     * Controls user mentions\r\n     */\r\n    AllowedMentionsTypes["User"] = "users";\r\n})(AllowedMentionsTypes = exports.AllowedMentionsTypes || (exports.AllowedMentionsTypes = {}));\r\n/**\r\n * https://discord.com/developers/docs/interactions/message-components#component-types\r\n */\r\nvar ComponentType;\r\n(function (ComponentType) {\r\n    /**\r\n     * Action Row component\r\n     */\r\n    ComponentType[ComponentType["ActionRow"] = 1] = "ActionRow";\r\n    /**\r\n     * Button component\r\n     */\r\n    ComponentType[ComponentType["Button"] = 2] = "Button";\r\n    /**\r\n     * Select Menu component\r\n     */\r\n    ComponentType[ComponentType["SelectMenu"] = 3] = "SelectMenu";\r\n})(ComponentType = exports.ComponentType || (exports.ComponentType = {}));\r\n/**\r\n * https://discord.com/developers/docs/interactions/message-components#button-object-button-styles\r\n */\r\nvar ButtonStyle;\r\n(function (ButtonStyle) {\r\n    ButtonStyle[ButtonStyle["Primary"] = 1] = "Primary";\r\n    ButtonStyle[ButtonStyle["Secondary"] = 2] = "Secondary";\r\n    ButtonStyle[ButtonStyle["Success"] = 3] = "Success";\r\n    ButtonStyle[ButtonStyle["Danger"] = 4] = "Danger";\r\n    ButtonStyle[ButtonStyle["Link"] = 5] = "Link";\r\n})(ButtonStyle = exports.ButtonStyle || (exports.ButtonStyle = {}));\r\n//# sourceMappingURL=channel.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/channel.js?')},"./node_modules/discord-api-types/payloads/v9/emoji.js":
/*!*************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/emoji.js ***!
  \*************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\n/**\r\n * Types extracted from https://discord.com/developers/docs/resources/emoji\r\n */\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=emoji.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/emoji.js?')},"./node_modules/discord-api-types/payloads/v9/gateway.js":
/*!***************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/gateway.js ***!
  \***************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\n/**\r\n * Types extracted from https://discord.com/developers/docs/topics/gateway\r\n */\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\nexports.ActivityFlags = exports.ActivityType = exports.ActivityPlatform = exports.PresenceUpdateStatus = void 0;\r\nvar PresenceUpdateStatus;\r\n(function (PresenceUpdateStatus) {\r\n    PresenceUpdateStatus["Online"] = "online";\r\n    PresenceUpdateStatus["DoNotDisturb"] = "dnd";\r\n    PresenceUpdateStatus["Idle"] = "idle";\r\n    /**\r\n     * Invisible and shown as offline\r\n     */\r\n    PresenceUpdateStatus["Invisible"] = "invisible";\r\n    PresenceUpdateStatus["Offline"] = "offline";\r\n})(PresenceUpdateStatus = exports.PresenceUpdateStatus || (exports.PresenceUpdateStatus = {}));\r\nvar ActivityPlatform;\r\n(function (ActivityPlatform) {\r\n    ActivityPlatform["Desktop"] = "desktop";\r\n    ActivityPlatform["Samsung"] = "samsung";\r\n    ActivityPlatform["Xbox"] = "xbox";\r\n})(ActivityPlatform = exports.ActivityPlatform || (exports.ActivityPlatform = {}));\r\n/**\r\n * https://discord.com/developers/docs/topics/gateway#activity-object-activity-types\r\n */\r\nvar ActivityType;\r\n(function (ActivityType) {\r\n    /**\r\n     * Playing {game}\r\n     */\r\n    ActivityType[ActivityType["Game"] = 0] = "Game";\r\n    /**\r\n     * Streaming {details}\r\n     */\r\n    ActivityType[ActivityType["Streaming"] = 1] = "Streaming";\r\n    /**\r\n     * Listening to {name}\r\n     */\r\n    ActivityType[ActivityType["Listening"] = 2] = "Listening";\r\n    /**\r\n     * Watching {details}\r\n     */\r\n    ActivityType[ActivityType["Watching"] = 3] = "Watching";\r\n    /**\r\n     * {emoji} {details}\r\n     */\r\n    ActivityType[ActivityType["Custom"] = 4] = "Custom";\r\n    /**\r\n     * Competing in {name}\r\n     */\r\n    ActivityType[ActivityType["Competing"] = 5] = "Competing";\r\n})(ActivityType = exports.ActivityType || (exports.ActivityType = {}));\r\n/**\r\n * https://discord.com/developers/docs/topics/gateway#activity-object-activity-flags\r\n */\r\nvar ActivityFlags;\r\n(function (ActivityFlags) {\r\n    ActivityFlags[ActivityFlags["Instance"] = 1] = "Instance";\r\n    ActivityFlags[ActivityFlags["Join"] = 2] = "Join";\r\n    ActivityFlags[ActivityFlags["Spectate"] = 4] = "Spectate";\r\n    ActivityFlags[ActivityFlags["JoinRequest"] = 8] = "JoinRequest";\r\n    ActivityFlags[ActivityFlags["Sync"] = 16] = "Sync";\r\n    ActivityFlags[ActivityFlags["Play"] = 32] = "Play";\r\n    ActivityFlags[ActivityFlags["PartyPrivacyFriends"] = 64] = "PartyPrivacyFriends";\r\n    ActivityFlags[ActivityFlags["PartyPrivacyVoiceChannel"] = 128] = "PartyPrivacyVoiceChannel";\r\n    ActivityFlags[ActivityFlags["Embedded"] = 256] = "Embedded";\r\n})(ActivityFlags = exports.ActivityFlags || (exports.ActivityFlags = {}));\r\n//# sourceMappingURL=gateway.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/gateway.js?')},"./node_modules/discord-api-types/payloads/v9/guild.js":
/*!*************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/guild.js ***!
  \*************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\n/**\r\n * Types extracted from https://discord.com/developers/docs/resources/guild\r\n */\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\nexports.MembershipScreeningFieldType = exports.GuildWidgetStyle = exports.IntegrationExpireBehavior = exports.GuildFeature = exports.GuildSystemChannelFlags = exports.GuildPremiumTier = exports.GuildVerificationLevel = exports.GuildNSFWLevel = exports.GuildMFALevel = exports.GuildExplicitContentFilter = exports.GuildDefaultMessageNotifications = void 0;\r\n/**\r\n * https://discord.com/developers/docs/resources/guild#guild-object-default-message-notification-level\r\n */\r\nvar GuildDefaultMessageNotifications;\r\n(function (GuildDefaultMessageNotifications) {\r\n    GuildDefaultMessageNotifications[GuildDefaultMessageNotifications["AllMessages"] = 0] = "AllMessages";\r\n    GuildDefaultMessageNotifications[GuildDefaultMessageNotifications["OnlyMentions"] = 1] = "OnlyMentions";\r\n})(GuildDefaultMessageNotifications = exports.GuildDefaultMessageNotifications || (exports.GuildDefaultMessageNotifications = {}));\r\n/**\r\n * https://discord.com/developers/docs/resources/guild#guild-object-explicit-content-filter-level\r\n */\r\nvar GuildExplicitContentFilter;\r\n(function (GuildExplicitContentFilter) {\r\n    GuildExplicitContentFilter[GuildExplicitContentFilter["Disabled"] = 0] = "Disabled";\r\n    GuildExplicitContentFilter[GuildExplicitContentFilter["MembersWithoutRoles"] = 1] = "MembersWithoutRoles";\r\n    GuildExplicitContentFilter[GuildExplicitContentFilter["AllMembers"] = 2] = "AllMembers";\r\n})(GuildExplicitContentFilter = exports.GuildExplicitContentFilter || (exports.GuildExplicitContentFilter = {}));\r\n/**\r\n * https://discord.com/developers/docs/resources/guild#guild-object-mfa-level\r\n */\r\nvar GuildMFALevel;\r\n(function (GuildMFALevel) {\r\n    GuildMFALevel[GuildMFALevel["None"] = 0] = "None";\r\n    GuildMFALevel[GuildMFALevel["Elevated"] = 1] = "Elevated";\r\n})(GuildMFALevel = exports.GuildMFALevel || (exports.GuildMFALevel = {}));\r\n/**\r\n * https://discord.com/developers/docs/resources/guild#guild-object-guild-nsfw-level\r\n */\r\nvar GuildNSFWLevel;\r\n(function (GuildNSFWLevel) {\r\n    GuildNSFWLevel[GuildNSFWLevel["Default"] = 0] = "Default";\r\n    GuildNSFWLevel[GuildNSFWLevel["Explicit"] = 1] = "Explicit";\r\n    GuildNSFWLevel[GuildNSFWLevel["Safe"] = 2] = "Safe";\r\n    GuildNSFWLevel[GuildNSFWLevel["AgeRestricted"] = 3] = "AgeRestricted";\r\n})(GuildNSFWLevel = exports.GuildNSFWLevel || (exports.GuildNSFWLevel = {}));\r\n/**\r\n * https://discord.com/developers/docs/resources/guild#guild-object-verification-level\r\n */\r\nvar GuildVerificationLevel;\r\n(function (GuildVerificationLevel) {\r\n    /**\r\n     * Unrestricted\r\n     */\r\n    GuildVerificationLevel[GuildVerificationLevel["None"] = 0] = "None";\r\n    /**\r\n     * Must have verified email on account\r\n     */\r\n    GuildVerificationLevel[GuildVerificationLevel["Low"] = 1] = "Low";\r\n    /**\r\n     * Must be registered on Discord for longer than 5 minutes\r\n     */\r\n    GuildVerificationLevel[GuildVerificationLevel["Medium"] = 2] = "Medium";\r\n    /**\r\n     * Must be a member of the guild for longer than 10 minutes\r\n     */\r\n    GuildVerificationLevel[GuildVerificationLevel["High"] = 3] = "High";\r\n    /**\r\n     * Must have a verified phone number\r\n     */\r\n    GuildVerificationLevel[GuildVerificationLevel["VeryHigh"] = 4] = "VeryHigh";\r\n})(GuildVerificationLevel = exports.GuildVerificationLevel || (exports.GuildVerificationLevel = {}));\r\n/**\r\n * https://discord.com/developers/docs/resources/guild#guild-object-premium-tier\r\n */\r\nvar GuildPremiumTier;\r\n(function (GuildPremiumTier) {\r\n    GuildPremiumTier[GuildPremiumTier["None"] = 0] = "None";\r\n    GuildPremiumTier[GuildPremiumTier["Tier1"] = 1] = "Tier1";\r\n    GuildPremiumTier[GuildPremiumTier["Tier2"] = 2] = "Tier2";\r\n    GuildPremiumTier[GuildPremiumTier["Tier3"] = 3] = "Tier3";\r\n})(GuildPremiumTier = exports.GuildPremiumTier || (exports.GuildPremiumTier = {}));\r\n/**\r\n * https://discord.com/developers/docs/resources/guild#guild-object-system-channel-flags\r\n */\r\nvar GuildSystemChannelFlags;\r\n(function (GuildSystemChannelFlags) {\r\n    /**\r\n     * Suppress member join notifications\r\n     */\r\n    GuildSystemChannelFlags[GuildSystemChannelFlags["SuppressJoinNotifications"] = 1] = "SuppressJoinNotifications";\r\n    /**\r\n     * Suppress server boost notifications\r\n     */\r\n    GuildSystemChannelFlags[GuildSystemChannelFlags["SuppressPremiumSubscriptions"] = 2] = "SuppressPremiumSubscriptions";\r\n    /**\r\n     * Suppress server setup tips\r\n     */\r\n    GuildSystemChannelFlags[GuildSystemChannelFlags["SuppressGuildReminderNotifications"] = 4] = "SuppressGuildReminderNotifications";\r\n    /**\r\n     * Hide member join sticker reply buttons\r\n     */\r\n    GuildSystemChannelFlags[GuildSystemChannelFlags["SuppressJoinNotificationReplies"] = 8] = "SuppressJoinNotificationReplies";\r\n})(GuildSystemChannelFlags = exports.GuildSystemChannelFlags || (exports.GuildSystemChannelFlags = {}));\r\n/**\r\n * https://discord.com/developers/docs/resources/guild#guild-object-guild-features\r\n */\r\nvar GuildFeature;\r\n(function (GuildFeature) {\r\n    /**\r\n     * Guild has access to set an animated guild icon\r\n     */\r\n    GuildFeature["AnimatedIcon"] = "ANIMATED_ICON";\r\n    /**\r\n     * Guild has access to set a guild banner image\r\n     */\r\n    GuildFeature["Banner"] = "BANNER";\r\n    /**\r\n     * Guild has access to use commerce features (i.e. create store channels)\r\n     */\r\n    GuildFeature["Commerce"] = "COMMERCE";\r\n    /**\r\n     * Guild can enable welcome screen, Membership Screening and discovery, and receives community updates\r\n     */\r\n    GuildFeature["Community"] = "COMMUNITY";\r\n    /**\r\n     * Guild is able to be discovered in the directory\r\n     */\r\n    GuildFeature["Discoverable"] = "DISCOVERABLE";\r\n    /**\r\n     * Guild is able to be featured in the directory\r\n     */\r\n    GuildFeature["Featurable"] = "FEATURABLE";\r\n    /**\r\n     * Guild has access to set an invite splash background\r\n     */\r\n    GuildFeature["InviteSplash"] = "INVITE_SPLASH";\r\n    /**\r\n     * Guild has enabled Membership Screening\r\n     */\r\n    GuildFeature["MemberVerificationGateEnabled"] = "MEMBER_VERIFICATION_GATE_ENABLED";\r\n    /**\r\n     * Guild has enabled monetization\r\n     */\r\n    GuildFeature["MonetizationEnabled"] = "MONETIZATION_ENABLED";\r\n    /**\r\n     * Guild has increased custom sticker slots\r\n     */\r\n    GuildFeature["MoreStickers"] = "MORE_STICKERS";\r\n    /**\r\n     * Guild has access to create news channels\r\n     */\r\n    GuildFeature["News"] = "NEWS";\r\n    /**\r\n     * Guild is partnered\r\n     */\r\n    GuildFeature["Partnered"] = "PARTNERED";\r\n    /**\r\n     * Guild can be previewed before joining via Membership Screening or the directory\r\n     */\r\n    GuildFeature["PreviewEnabled"] = "PREVIEW_ENABLED";\r\n    /**\r\n     * Guild has access to create private threads\r\n     */\r\n    GuildFeature["PrivateThreads"] = "PRIVATE_THREADS";\r\n    GuildFeature["RelayEnabled"] = "RELAY_ENABLED";\r\n    /**\r\n     * Guild is able to set role icons\r\n     */\r\n    GuildFeature["RoleIcons"] = "ROLE_ICONS";\r\n    /**\r\n     * Guild has access to the seven day archive time for threads\r\n     */\r\n    GuildFeature["SevenDayThreadArchive"] = "SEVEN_DAY_THREAD_ARCHIVE";\r\n    /**\r\n     * Guild has access to the three day archive time for threads\r\n     */\r\n    GuildFeature["ThreeDayThreadArchive"] = "THREE_DAY_THREAD_ARCHIVE";\r\n    /**\r\n     * Guild has enabled ticketed events\r\n     */\r\n    GuildFeature["TicketedEventsEnabled"] = "TICKETED_EVENTS_ENABLED";\r\n    /**\r\n     * Guild has access to set a vanity URL\r\n     */\r\n    GuildFeature["VanityURL"] = "VANITY_URL";\r\n    /**\r\n     * Guild is verified\r\n     */\r\n    GuildFeature["Verified"] = "VERIFIED";\r\n    /**\r\n     * Guild has access to set 384kbps bitrate in voice (previously VIP voice servers)\r\n     */\r\n    GuildFeature["VIPRegions"] = "VIP_REGIONS";\r\n    /**\r\n     * Guild has enabled the welcome screen\r\n     */\r\n    GuildFeature["WelcomeScreenEnabled"] = "WELCOME_SCREEN_ENABLED";\r\n})(GuildFeature = exports.GuildFeature || (exports.GuildFeature = {}));\r\n/**\r\n * https://discord.com/developers/docs/resources/guild#integration-object-integration-expire-behaviors\r\n */\r\nvar IntegrationExpireBehavior;\r\n(function (IntegrationExpireBehavior) {\r\n    IntegrationExpireBehavior[IntegrationExpireBehavior["RemoveRole"] = 0] = "RemoveRole";\r\n    IntegrationExpireBehavior[IntegrationExpireBehavior["Kick"] = 1] = "Kick";\r\n})(IntegrationExpireBehavior = exports.IntegrationExpireBehavior || (exports.IntegrationExpireBehavior = {}));\r\n/**\r\n * https://discord.com/developers/docs/resources/guild#get-guild-widget-image-widget-style-options\r\n */\r\nvar GuildWidgetStyle;\r\n(function (GuildWidgetStyle) {\r\n    /**\r\n     * Shield style widget with Discord icon and guild members online count\r\n     */\r\n    GuildWidgetStyle["Shield"] = "shield";\r\n    /**\r\n     * Large image with guild icon, name and online count. "POWERED BY DISCORD" as the footer of the widget\r\n     */\r\n    GuildWidgetStyle["Banner1"] = "banner1";\r\n    /**\r\n     * Smaller widget style with guild icon, name and online count. Split on the right with Discord logo\r\n     */\r\n    GuildWidgetStyle["Banner2"] = "banner2";\r\n    /**\r\n     * Large image with guild icon, name and online count. In the footer, Discord logo on the left and "Chat Now" on the right\r\n     */\r\n    GuildWidgetStyle["Banner3"] = "banner3";\r\n    /**\r\n     * Large Discord logo at the top of the widget. Guild icon, name and online count in the middle portion of the widget\r\n     * and a "JOIN MY SERVER" button at the bottom\r\n     */\r\n    GuildWidgetStyle["Banner4"] = "banner4";\r\n})(GuildWidgetStyle = exports.GuildWidgetStyle || (exports.GuildWidgetStyle = {}));\r\nvar MembershipScreeningFieldType;\r\n(function (MembershipScreeningFieldType) {\r\n    /**\r\n     * Server Rules\r\n     */\r\n    MembershipScreeningFieldType["Terms"] = "TERMS";\r\n})(MembershipScreeningFieldType = exports.MembershipScreeningFieldType || (exports.MembershipScreeningFieldType = {}));\r\n//# sourceMappingURL=guild.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/guild.js?')},"./node_modules/discord-api-types/payloads/v9/guildScheduledEvent.js":
/*!***************************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/guildScheduledEvent.js ***!
  \***************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\nexports.GuildScheduledEventPrivacyLevel = exports.GuildScheduledEventStatus = exports.GuildScheduledEventEntityType = void 0;\r\n/**\r\n * https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-types\r\n */\r\nvar GuildScheduledEventEntityType;\r\n(function (GuildScheduledEventEntityType) {\r\n    GuildScheduledEventEntityType[GuildScheduledEventEntityType["StageInstance"] = 1] = "StageInstance";\r\n    GuildScheduledEventEntityType[GuildScheduledEventEntityType["Voice"] = 2] = "Voice";\r\n    GuildScheduledEventEntityType[GuildScheduledEventEntityType["External"] = 3] = "External";\r\n})(GuildScheduledEventEntityType = exports.GuildScheduledEventEntityType || (exports.GuildScheduledEventEntityType = {}));\r\n/**\r\n * https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-status\r\n */\r\nvar GuildScheduledEventStatus;\r\n(function (GuildScheduledEventStatus) {\r\n    GuildScheduledEventStatus[GuildScheduledEventStatus["Scheduled"] = 1] = "Scheduled";\r\n    GuildScheduledEventStatus[GuildScheduledEventStatus["Active"] = 2] = "Active";\r\n    GuildScheduledEventStatus[GuildScheduledEventStatus["Completed"] = 3] = "Completed";\r\n    GuildScheduledEventStatus[GuildScheduledEventStatus["Canceled"] = 4] = "Canceled";\r\n})(GuildScheduledEventStatus = exports.GuildScheduledEventStatus || (exports.GuildScheduledEventStatus = {}));\r\n/**\r\n * https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-privacy-level\r\n */\r\nvar GuildScheduledEventPrivacyLevel;\r\n(function (GuildScheduledEventPrivacyLevel) {\r\n    /**\r\n     * The scheduled event is only accessible to guild members\r\n     */\r\n    GuildScheduledEventPrivacyLevel[GuildScheduledEventPrivacyLevel["GuildOnly"] = 2] = "GuildOnly";\r\n})(GuildScheduledEventPrivacyLevel = exports.GuildScheduledEventPrivacyLevel || (exports.GuildScheduledEventPrivacyLevel = {}));\r\n//# sourceMappingURL=guildScheduledEvent.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/guildScheduledEvent.js?')},"./node_modules/discord-api-types/payloads/v9/index.js":
/*!*************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/index.js ***!
  \*************************************************************/function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n}));\r\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\r\n    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\r\n};\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n__exportStar(__webpack_require__(/*! ./application */ "./node_modules/discord-api-types/payloads/v9/application.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./auditLog */ "./node_modules/discord-api-types/payloads/v9/auditLog.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./channel */ "./node_modules/discord-api-types/payloads/v9/channel.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./emoji */ "./node_modules/discord-api-types/payloads/v9/emoji.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./gateway */ "./node_modules/discord-api-types/payloads/v9/gateway.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./guild */ "./node_modules/discord-api-types/payloads/v9/guild.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./guildScheduledEvent */ "./node_modules/discord-api-types/payloads/v9/guildScheduledEvent.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./interactions */ "./node_modules/discord-api-types/payloads/v9/interactions.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./invite */ "./node_modules/discord-api-types/payloads/v9/invite.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./oauth2 */ "./node_modules/discord-api-types/payloads/v9/oauth2.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./permissions */ "./node_modules/discord-api-types/payloads/v9/permissions.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./stageInstance */ "./node_modules/discord-api-types/payloads/v9/stageInstance.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./sticker */ "./node_modules/discord-api-types/payloads/v9/sticker.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./teams */ "./node_modules/discord-api-types/payloads/v9/teams.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./template */ "./node_modules/discord-api-types/payloads/v9/template.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./user */ "./node_modules/discord-api-types/payloads/v9/user.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./voice */ "./node_modules/discord-api-types/payloads/v9/voice.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./webhook */ "./node_modules/discord-api-types/payloads/v9/webhook.js"), exports);\r\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/index.js?')},"./node_modules/discord-api-types/payloads/v9/interactions.js":
/*!********************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/interactions.js ***!
  \********************************************************************/function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n}));\r\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\r\n    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\r\n};\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n__exportStar(__webpack_require__(/*! ./_interactions/base */ "./node_modules/discord-api-types/payloads/v9/_interactions/base.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./_interactions/messageComponents */ "./node_modules/discord-api-types/payloads/v9/_interactions/messageComponents.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./_interactions/ping */ "./node_modules/discord-api-types/payloads/v9/_interactions/ping.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./_interactions/responses */ "./node_modules/discord-api-types/payloads/v9/_interactions/responses.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./_interactions/applicationCommands */ "./node_modules/discord-api-types/payloads/v9/_interactions/applicationCommands.js"), exports);\r\n//# sourceMappingURL=interactions.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/interactions.js?')},"./node_modules/discord-api-types/payloads/v9/invite.js":
/*!**************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/invite.js ***!
  \**************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\n/**\r\n * Types extracted from https://discord.com/developers/docs/resources/invite\r\n */\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\nexports.InviteTargetType = void 0;\r\n/**\r\n * https://discord.com/developers/docs/resources/invite#invite-object-invite-target-types\r\n */\r\nvar InviteTargetType;\r\n(function (InviteTargetType) {\r\n    InviteTargetType[InviteTargetType["Stream"] = 1] = "Stream";\r\n    InviteTargetType[InviteTargetType["EmbeddedApplication"] = 2] = "EmbeddedApplication";\r\n})(InviteTargetType = exports.InviteTargetType || (exports.InviteTargetType = {}));\r\n//# sourceMappingURL=invite.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/invite.js?')},"./node_modules/discord-api-types/payloads/v9/oauth2.js":
/*!**************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/oauth2.js ***!
  \**************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\n/**\r\n * Types extracted from https://discord.com/developers/docs/topics/oauth2\r\n */\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\nexports.OAuth2Scopes = void 0;\r\nvar OAuth2Scopes;\r\n(function (OAuth2Scopes) {\r\n    /**\r\n     * For oauth2 bots, this puts the bot in the user\'s selected guild by default\r\n     */\r\n    OAuth2Scopes["Bot"] = "bot";\r\n    /**\r\n     * Allows [/users/@me/connections](https://discord.com/developers/docs/resources/user#get-user-connections)\r\n     * to return linked third-party accounts\r\n     *\r\n     * See https://discord.com/developers/docs/resources/user#get-user-connections\r\n     */\r\n    OAuth2Scopes["Connections"] = "connections";\r\n    /**\r\n     * Enables [/users/@me](https://discord.com/developers/docs/resources/user#get-current-user) to return an `email`\r\n     *\r\n     * See https://discord.com/developers/docs/resources/user#get-current-user\r\n     */\r\n    OAuth2Scopes["Email"] = "email";\r\n    /**\r\n     * Allows [/users/@me](https://discord.com/developers/docs/resources/user#get-current-user) without `email`\r\n     *\r\n     * See https://discord.com/developers/docs/resources/user#get-current-user\r\n     */\r\n    OAuth2Scopes["Identify"] = "identify";\r\n    /**\r\n     * Allows [/users/@me/guilds](https://discord.com/developers/docs/resources/user#get-current-user-guilds)\r\n     * to return basic information about all of a user\'s guilds\r\n     *\r\n     * See https://discord.com/developers/docs/resources/user#get-current-user-guilds\r\n     */\r\n    OAuth2Scopes["Guilds"] = "guilds";\r\n    /**\r\n     * Allows [/guilds/{guild.id}/members/{user.id}](https://discord.com/developers/docs/resources/guild#add-guild-member)\r\n     * to be used for joining users to a guild\r\n     *\r\n     * See https://discord.com/developers/docs/resources/guild#add-guild-member\r\n     */\r\n    OAuth2Scopes["GuildsJoin"] = "guilds.join";\r\n    /**\r\n     * Allows /users/@me/guilds/{guild.id}/member to return a user\'s member information in a guild\r\n     *\r\n     * See https://discord.com/developers/docs/resources/guild#get-current-user-guild-member\r\n     */\r\n    OAuth2Scopes["GuildsMembersRead"] = "guilds.members.read";\r\n    /**\r\n     * Allows your app to join users to a group dm\r\n     *\r\n     * See https://discord.com/developers/docs/resources/channel#group-dm-add-recipient\r\n     */\r\n    OAuth2Scopes["GroupDMJoins"] = "gdm.join";\r\n    /**\r\n     * For local rpc server api access, this allows you to read messages from all client channels\r\n     * (otherwise restricted to channels/guilds your app creates)\r\n     */\r\n    OAuth2Scopes["MessagesRead"] = "messages.read";\r\n    /**\r\n     * For local rpc server access, this allows you to control a user\'s local Discord client - requires Discord approval\r\n     */\r\n    OAuth2Scopes["RPC"] = "rpc";\r\n    /**\r\n     * For local rpc server api access, this allows you to receive notifications pushed out to the user - requires Discord approval\r\n     */\r\n    OAuth2Scopes["RPCNotificationsRead"] = "rpc.notifications.read";\r\n    /**\r\n     * This generates a webhook that is returned in the oauth token response for authorization code grants\r\n     */\r\n    OAuth2Scopes["WebhookIncoming"] = "webhook.incoming";\r\n    /**\r\n     * Allows your app to upload/update builds for a user\'s applications - requires Discord approval\r\n     */\r\n    OAuth2Scopes["ApplicationsBuildsUpload"] = "applications.builds.upload";\r\n    /**\r\n     * Allows your app to read build data for a user\'s applications\r\n     */\r\n    OAuth2Scopes["ApplicationsBuildsRead"] = "applications.builds.read";\r\n    /**\r\n     * Allows your app to read and update store data (SKUs, store listings, achievements, etc.) for a user\'s applications\r\n     */\r\n    OAuth2Scopes["ApplicationsStoreUpdate"] = "applications.store.update";\r\n    /**\r\n     * Allows your app to read entitlements for a user\'s applications\r\n     */\r\n    OAuth2Scopes["ApplicationsEntitlements"] = "applications.entitlements";\r\n    /**\r\n     * Allows your app to know a user\'s friends and implicit relationships - requires Discord approval\r\n     */\r\n    OAuth2Scopes["RelationshipsRead"] = "relationships.read";\r\n    /**\r\n     * Allows your app to fetch data from a user\'s "Now Playing/Recently Played" list - requires Discord approval\r\n     */\r\n    OAuth2Scopes["ActivitiesRead"] = "activities.read";\r\n    /**\r\n     * Allows your app to update a user\'s activity - requires Discord approval (NOT REQUIRED FOR GAMESDK ACTIVITY MANAGER)\r\n     *\r\n     * See https://discord.com/developers/docs/game-sdk/activities\r\n     */\r\n    OAuth2Scopes["ActivitiesWrite"] = "activities.write";\r\n    /**\r\n     * Allows your app to use Application Commands in a guild\r\n     *\r\n     * See https://discord.com/developers/docs/interactions/application-commands\r\n     */\r\n    OAuth2Scopes["ApplicationsCommands"] = "applications.commands";\r\n    /**\r\n     * Allows your app to update its Application Commands via this bearer token - client credentials grant only\r\n     *\r\n     * See https://discord.com/developers/docs/interactions/application-commands\r\n     */\r\n    OAuth2Scopes["ApplicationsCommandsUpdate"] = "applications.commands.update";\r\n})(OAuth2Scopes = exports.OAuth2Scopes || (exports.OAuth2Scopes = {}));\r\n//# sourceMappingURL=oauth2.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/oauth2.js?')},"./node_modules/discord-api-types/payloads/v9/permissions.js":
/*!*******************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/permissions.js ***!
  \*******************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\n/**\r\n * Types extracted from https://discord.com/developers/docs/topics/permissions\r\n */\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\nexports.PermissionFlagsBits = void 0;\r\n/**\r\n * https://discord.com/developers/docs/topics/permissions#permissions-bitwise-permission-flags\r\n *\r\n * These flags are exported as `BigInt`s and NOT numbers. Wrapping them in `Number()`\r\n * may cause issues, try to use BigInts as much as possible or modules that can\r\n * replicate them in some way\r\n */\r\nexports.PermissionFlagsBits = {\r\n    CreateInstantInvite: 1n << 0n,\r\n    KickMembers: 1n << 1n,\r\n    BanMembers: 1n << 2n,\r\n    Administrator: 1n << 3n,\r\n    ManageChannels: 1n << 4n,\r\n    ManageGuild: 1n << 5n,\r\n    AddReactions: 1n << 6n,\r\n    ViewAuditLog: 1n << 7n,\r\n    PrioritySpeaker: 1n << 8n,\r\n    Stream: 1n << 9n,\r\n    ViewChannel: 1n << 10n,\r\n    SendMessages: 1n << 11n,\r\n    SendTTSMessages: 1n << 12n,\r\n    ManageMessages: 1n << 13n,\r\n    EmbedLinks: 1n << 14n,\r\n    AttachFiles: 1n << 15n,\r\n    ReadMessageHistory: 1n << 16n,\r\n    MentionEveryone: 1n << 17n,\r\n    UseExternalEmojis: 1n << 18n,\r\n    ViewGuildInsights: 1n << 19n,\r\n    Connect: 1n << 20n,\r\n    Speak: 1n << 21n,\r\n    MuteMembers: 1n << 22n,\r\n    DeafenMembers: 1n << 23n,\r\n    MoveMembers: 1n << 24n,\r\n    UseVAD: 1n << 25n,\r\n    ChangeNickname: 1n << 26n,\r\n    ManageNicknames: 1n << 27n,\r\n    ManageRoles: 1n << 28n,\r\n    ManageWebhooks: 1n << 29n,\r\n    ManageEmojisAndStickers: 1n << 30n,\r\n    UseApplicationCommands: 1n << 31n,\r\n    RequestToSpeak: 1n << 32n,\r\n    ManageEvents: 1n << 33n,\r\n    ManageThreads: 1n << 34n,\r\n    CreatePublicThreads: 1n << 35n,\r\n    CreatePrivateThreads: 1n << 36n,\r\n    UseExternalStickers: 1n << 37n,\r\n    SendMessagesInThreads: 1n << 38n,\r\n    StartEmbeddedActivities: 1n << 39n,\r\n    ModerateMembers: 1n << 40n,\r\n};\r\n/**\r\n * Freeze the object of bits, preventing any modifications to it\r\n * @internal\r\n */\r\nObject.freeze(exports.PermissionFlagsBits);\r\n//# sourceMappingURL=permissions.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/permissions.js?')},"./node_modules/discord-api-types/payloads/v9/stageInstance.js":
/*!*********************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/stageInstance.js ***!
  \*********************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\nexports.StageInstancePrivacyLevel = void 0;\r\n/**\r\n * https://discord.com/developers/docs/resources/stage-instance#stage-instance-object-privacy-level\r\n */\r\nvar StageInstancePrivacyLevel;\r\n(function (StageInstancePrivacyLevel) {\r\n    /**\r\n     * The stage instance is visible publicly, such as on stage discovery\r\n     */\r\n    StageInstancePrivacyLevel[StageInstancePrivacyLevel["Public"] = 1] = "Public";\r\n    /**\r\n     * The stage instance is visible to only guild members\r\n     */\r\n    StageInstancePrivacyLevel[StageInstancePrivacyLevel["GuildOnly"] = 2] = "GuildOnly";\r\n})(StageInstancePrivacyLevel = exports.StageInstancePrivacyLevel || (exports.StageInstancePrivacyLevel = {}));\r\n//# sourceMappingURL=stageInstance.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/stageInstance.js?')},"./node_modules/discord-api-types/payloads/v9/sticker.js":
/*!***************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/sticker.js ***!
  \***************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\n/**\r\n * Types extracted from https://discord.com/developers/docs/resources/sticker\r\n */\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\nexports.StickerFormatType = exports.StickerType = void 0;\r\n/**\r\n * https://discord.com/developers/docs/resources/sticker#sticker-object-sticker-types\r\n */\r\nvar StickerType;\r\n(function (StickerType) {\r\n    /**\r\n     * An official sticker in a pack, part of Nitro or in a removed purchasable pack\r\n     */\r\n    StickerType[StickerType["Standard"] = 1] = "Standard";\r\n    /**\r\n     * A sticker uploaded to a Boosted guild for the guild\'s members\r\n     */\r\n    StickerType[StickerType["Guild"] = 2] = "Guild";\r\n})(StickerType = exports.StickerType || (exports.StickerType = {}));\r\n/**\r\n * https://discord.com/developers/docs/resources/sticker#sticker-object-sticker-format-types\r\n */\r\nvar StickerFormatType;\r\n(function (StickerFormatType) {\r\n    StickerFormatType[StickerFormatType["PNG"] = 1] = "PNG";\r\n    StickerFormatType[StickerFormatType["APNG"] = 2] = "APNG";\r\n    StickerFormatType[StickerFormatType["Lottie"] = 3] = "Lottie";\r\n})(StickerFormatType = exports.StickerFormatType || (exports.StickerFormatType = {}));\r\n//# sourceMappingURL=sticker.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/sticker.js?')},"./node_modules/discord-api-types/payloads/v9/teams.js":
/*!*************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/teams.js ***!
  \*************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\n/**\r\n * Types extracted from https://discord.com/developers/docs/topics/teams\r\n */\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\nexports.TeamMemberMembershipState = void 0;\r\n/**\r\n * https://discord.com/developers/docs/topics/teams#data-models-membership-state-enum\r\n */\r\nvar TeamMemberMembershipState;\r\n(function (TeamMemberMembershipState) {\r\n    TeamMemberMembershipState[TeamMemberMembershipState["Invited"] = 1] = "Invited";\r\n    TeamMemberMembershipState[TeamMemberMembershipState["Accepted"] = 2] = "Accepted";\r\n})(TeamMemberMembershipState = exports.TeamMemberMembershipState || (exports.TeamMemberMembershipState = {}));\r\n//# sourceMappingURL=teams.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/teams.js?')},"./node_modules/discord-api-types/payloads/v9/template.js":
/*!****************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/template.js ***!
  \****************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\n/**\r\n * Types extracted from https://discord.com/developers/docs/resources/template\r\n */\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=template.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/template.js?')},"./node_modules/discord-api-types/payloads/v9/user.js":
/*!************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/user.js ***!
  \************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\n/**\r\n * Types extracted from https://discord.com/developers/docs/resources/user\r\n */\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\nexports.ConnectionVisibility = exports.UserPremiumType = exports.UserFlags = void 0;\r\n/**\r\n * https://discord.com/developers/docs/resources/user#user-object-user-flags\r\n */\r\nvar UserFlags;\r\n(function (UserFlags) {\r\n    /**\r\n     * None\r\n     */\r\n    UserFlags[UserFlags["None"] = 0] = "None";\r\n    /**\r\n     * Discord Employee\r\n     */\r\n    UserFlags[UserFlags["Staff"] = 1] = "Staff";\r\n    /**\r\n     * Partnered Server Owner\r\n     */\r\n    UserFlags[UserFlags["Partner"] = 2] = "Partner";\r\n    /**\r\n     * HypeSquad Events Coordinator\r\n     */\r\n    UserFlags[UserFlags["Hypesquad"] = 4] = "Hypesquad";\r\n    /**\r\n     * Bug Hunter Level 1\r\n     */\r\n    UserFlags[UserFlags["BugHunterLevel1"] = 8] = "BugHunterLevel1";\r\n    /**\r\n     * House Bravery Member\r\n     */\r\n    UserFlags[UserFlags["HypeSquadOnlineHouse1"] = 64] = "HypeSquadOnlineHouse1";\r\n    /**\r\n     * House Brilliance Member\r\n     */\r\n    UserFlags[UserFlags["HypeSquadOnlineHouse2"] = 128] = "HypeSquadOnlineHouse2";\r\n    /**\r\n     * House Balance Member\r\n     */\r\n    UserFlags[UserFlags["HypeSquadOnlineHouse3"] = 256] = "HypeSquadOnlineHouse3";\r\n    /**\r\n     * Early Nitro Supporter\r\n     */\r\n    UserFlags[UserFlags["PremiumEarlySupporter"] = 512] = "PremiumEarlySupporter";\r\n    /**\r\n     * User is a [team](https://discord.com/developers/docs/topics/teams)\r\n     */\r\n    UserFlags[UserFlags["TeamPseudoUser"] = 1024] = "TeamPseudoUser";\r\n    /**\r\n     * Bug Hunter Level 2\r\n     */\r\n    UserFlags[UserFlags["BugHunterLevel2"] = 16384] = "BugHunterLevel2";\r\n    /**\r\n     * Verified Bot\r\n     */\r\n    UserFlags[UserFlags["VerifiedBot"] = 65536] = "VerifiedBot";\r\n    /**\r\n     * Early Verified Bot Developer\r\n     */\r\n    UserFlags[UserFlags["VerifiedDeveloper"] = 131072] = "VerifiedDeveloper";\r\n    /**\r\n     * Discord Certified Moderator\r\n     */\r\n    UserFlags[UserFlags["CertifiedModerator"] = 262144] = "CertifiedModerator";\r\n    /**\r\n     * Bot uses only [HTTP interactions](https://discord.com/developers/docs/interactions/receiving-and-responding#receiving-an-interaction) and is shown in the online member list\r\n     */\r\n    UserFlags[UserFlags["BotHTTPInteractions"] = 524288] = "BotHTTPInteractions";\r\n})(UserFlags = exports.UserFlags || (exports.UserFlags = {}));\r\n/**\r\n * https://discord.com/developers/docs/resources/user#user-object-premium-types\r\n */\r\nvar UserPremiumType;\r\n(function (UserPremiumType) {\r\n    UserPremiumType[UserPremiumType["None"] = 0] = "None";\r\n    UserPremiumType[UserPremiumType["NitroClassic"] = 1] = "NitroClassic";\r\n    UserPremiumType[UserPremiumType["Nitro"] = 2] = "Nitro";\r\n})(UserPremiumType = exports.UserPremiumType || (exports.UserPremiumType = {}));\r\nvar ConnectionVisibility;\r\n(function (ConnectionVisibility) {\r\n    /**\r\n     * Invisible to everyone except the user themselves\r\n     */\r\n    ConnectionVisibility[ConnectionVisibility["None"] = 0] = "None";\r\n    /**\r\n     * Visible to everyone\r\n     */\r\n    ConnectionVisibility[ConnectionVisibility["Everyone"] = 1] = "Everyone";\r\n})(ConnectionVisibility = exports.ConnectionVisibility || (exports.ConnectionVisibility = {}));\r\n//# sourceMappingURL=user.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/user.js?')},"./node_modules/discord-api-types/payloads/v9/voice.js":
/*!*************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/voice.js ***!
  \*************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\n/**\r\n * Types extracted from https://discord.com/developers/docs/resources/voice\r\n */\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=voice.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/voice.js?')},"./node_modules/discord-api-types/payloads/v9/webhook.js":
/*!***************************************************************!*\
  !*** ./node_modules/discord-api-types/payloads/v9/webhook.js ***!
  \***************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\n/**\r\n * Types extracted from https://discord.com/developers/docs/resources/webhook\r\n */\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\nexports.WebhookType = void 0;\r\nvar WebhookType;\r\n(function (WebhookType) {\r\n    /**\r\n     * Incoming Webhooks can post messages to channels with a generated token\r\n     */\r\n    WebhookType[WebhookType["Incoming"] = 1] = "Incoming";\r\n    /**\r\n     * Channel Follower Webhooks are internal webhooks used with Channel Following to post new messages into channels\r\n     */\r\n    WebhookType[WebhookType["ChannelFollower"] = 2] = "ChannelFollower";\r\n    /**\r\n     * Application webhooks are webhooks used with Interactions\r\n     */\r\n    WebhookType[WebhookType["Application"] = 3] = "Application";\r\n})(WebhookType = exports.WebhookType || (exports.WebhookType = {}));\r\n//# sourceMappingURL=webhook.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/payloads/v9/webhook.js?')},"./node_modules/discord-api-types/rest/common.js":
/*!*******************************************************!*\
  !*** ./node_modules/discord-api-types/rest/common.js ***!
  \*******************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\nexports.RESTJSONErrorCodes = void 0;\r\n/**\r\n * https://discord.com/developers/docs/topics/opcodes-and-status-codes#json-json-error-codes\r\n */\r\nvar RESTJSONErrorCodes;\r\n(function (RESTJSONErrorCodes) {\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["GeneralError"] = 0] = "GeneralError";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownAccount"] = 10001] = "UnknownAccount";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownApplication"] = 10002] = "UnknownApplication";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownChannel"] = 10003] = "UnknownChannel";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownGuild"] = 10004] = "UnknownGuild";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownIntegration"] = 10005] = "UnknownIntegration";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownInvite"] = 10006] = "UnknownInvite";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownMember"] = 10007] = "UnknownMember";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownMessage"] = 10008] = "UnknownMessage";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownPermissionOverwrite"] = 10009] = "UnknownPermissionOverwrite";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownProvider"] = 10010] = "UnknownProvider";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownRole"] = 10011] = "UnknownRole";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownToken"] = 10012] = "UnknownToken";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownUser"] = 10013] = "UnknownUser";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownEmoji"] = 10014] = "UnknownEmoji";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownWebhook"] = 10015] = "UnknownWebhook";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownWebhookService"] = 10016] = "UnknownWebhookService";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownSession"] = 10020] = "UnknownSession";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownBan"] = 10026] = "UnknownBan";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownSKU"] = 10027] = "UnknownSKU";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownStoreListing"] = 10028] = "UnknownStoreListing";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownEntitlement"] = 10029] = "UnknownEntitlement";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownBuild"] = 10030] = "UnknownBuild";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownLobby"] = 10031] = "UnknownLobby";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownBranch"] = 10032] = "UnknownBranch";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownStoreDirectoryLayout"] = 10033] = "UnknownStoreDirectoryLayout";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownRedistributable"] = 10036] = "UnknownRedistributable";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownGiftCode"] = 10038] = "UnknownGiftCode";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownStream"] = 10049] = "UnknownStream";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownPremiumServerSubscribeCooldown"] = 10050] = "UnknownPremiumServerSubscribeCooldown";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownGuildTemplate"] = 10057] = "UnknownGuildTemplate";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownDiscoverableServerCategory"] = 10059] = "UnknownDiscoverableServerCategory";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownSticker"] = 10060] = "UnknownSticker";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownInteraction"] = 10062] = "UnknownInteraction";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownApplicationCommand"] = 10063] = "UnknownApplicationCommand";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownApplicationCommandPermissions"] = 10066] = "UnknownApplicationCommandPermissions";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownStageInstance"] = 10067] = "UnknownStageInstance";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownGuildMemberVerificationForm"] = 10068] = "UnknownGuildMemberVerificationForm";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownGuildWelcomeScreen"] = 10069] = "UnknownGuildWelcomeScreen";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownGuildScheduledEvent"] = 10070] = "UnknownGuildScheduledEvent";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UnknownGuildScheduledEventUser"] = 10071] = "UnknownGuildScheduledEventUser";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["BotsCannotUseThisEndpoint"] = 20001] = "BotsCannotUseThisEndpoint";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["OnlyBotsCanUseThisEndpoint"] = 20002] = "OnlyBotsCanUseThisEndpoint";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["ExplicitContentCannotBeSentToTheDesiredRecipient"] = 20009] = "ExplicitContentCannotBeSentToTheDesiredRecipient";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["NotAuthorizedToPerformThisActionOnThisApplication"] = 20012] = "NotAuthorizedToPerformThisActionOnThisApplication";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["ActionCannotBePerformedDueToSlowmodeRateLimit"] = 20016] = "ActionCannotBePerformedDueToSlowmodeRateLimit";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["TheMazeIsntMeantForYou"] = 20017] = "TheMazeIsntMeantForYou";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["OnlyTheOwnerOfThisAccountCanPerformThisAction"] = 20018] = "OnlyTheOwnerOfThisAccountCanPerformThisAction";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["AnnouncementEditLimitExceeded"] = 20022] = "AnnouncementEditLimitExceeded";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["ChannelSendRateLimit"] = 20028] = "ChannelSendRateLimit";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["ServerSendRateLimit"] = 20029] = "ServerSendRateLimit";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["StageTopicServerNameServerDescriptionOrChannelNamesContainDisallowedWords"] = 20031] = "StageTopicServerNameServerDescriptionOrChannelNamesContainDisallowedWords";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["GuildPremiumSubscriptionLevelTooLow"] = 20035] = "GuildPremiumSubscriptionLevelTooLow";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["MaximumNumberOfGuildsReached"] = 30001] = "MaximumNumberOfGuildsReached";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["MaximumNumberOfFriendsReached"] = 30002] = "MaximumNumberOfFriendsReached";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["MaximumNumberOfPinsReachedForTheChannel"] = 30003] = "MaximumNumberOfPinsReachedForTheChannel";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["MaximumNumberOfRecipientsReached"] = 30004] = "MaximumNumberOfRecipientsReached";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["MaximumNumberOfGuildRolesReached"] = 30005] = "MaximumNumberOfGuildRolesReached";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["MaximumNumberOfWebhooksReached"] = 30007] = "MaximumNumberOfWebhooksReached";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["MaximumNumberOfEmojisReached"] = 30008] = "MaximumNumberOfEmojisReached";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["MaximumNumberOfReactionsReached"] = 30010] = "MaximumNumberOfReactionsReached";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["MaximumNumberOfGuildChannelsReached"] = 30013] = "MaximumNumberOfGuildChannelsReached";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["MaximumNumberOfAttachmentsInAMessageReached"] = 30015] = "MaximumNumberOfAttachmentsInAMessageReached";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["MaximumNumberOfInvitesReached"] = 30016] = "MaximumNumberOfInvitesReached";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["MaximumNumberOfAnimatedEmojisReached"] = 30018] = "MaximumNumberOfAnimatedEmojisReached";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["MaximumNumberOfServerMembersReached"] = 30019] = "MaximumNumberOfServerMembersReached";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["MaximumNumberOfServerCategoriesReached"] = 30030] = "MaximumNumberOfServerCategoriesReached";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["GuildAlreadyHasTemplate"] = 30031] = "GuildAlreadyHasTemplate";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["MaximumThreadParticipants"] = 30033] = "MaximumThreadParticipants";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["MaximumNumberOfNonGuildMemberBansHasBeenExceeded"] = 30035] = "MaximumNumberOfNonGuildMemberBansHasBeenExceeded";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["MaximumNumberOfBanFetchesHasBeenReached"] = 30037] = "MaximumNumberOfBanFetchesHasBeenReached";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["MaximumNumberOfUncompletedGuildScheduledEventsReached"] = 30038] = "MaximumNumberOfUncompletedGuildScheduledEventsReached";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["MaximumNumberOfStickersReached"] = 30039] = "MaximumNumberOfStickersReached";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["MaximumNumberOfPruneRequestsHasBeenReached"] = 30040] = "MaximumNumberOfPruneRequestsHasBeenReached";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["Unauthorized"] = 40001] = "Unauthorized";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["VerifyYourAccount"] = 40002] = "VerifyYourAccount";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["OpeningDirectMessagesTooFast"] = 40003] = "OpeningDirectMessagesTooFast";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["RequestEntityTooLarge"] = 40005] = "RequestEntityTooLarge";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["FeatureTemporarilyDisabledServerSide"] = 40006] = "FeatureTemporarilyDisabledServerSide";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UserBannedFromThisGuild"] = 40007] = "UserBannedFromThisGuild";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["TargetUserIsNotConnectedToVoice"] = 40032] = "TargetUserIsNotConnectedToVoice";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["ThisMessageWasAlreadyCrossposted"] = 40033] = "ThisMessageWasAlreadyCrossposted";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["ApplicationCommandWithThatNameAlreadyExists"] = 40041] = "ApplicationCommandWithThatNameAlreadyExists";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["MissingAccess"] = 50001] = "MissingAccess";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["InvalidAccountType"] = 50002] = "InvalidAccountType";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["CannotExecuteActionOnDMChannel"] = 50003] = "CannotExecuteActionOnDMChannel";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["GuildWidgetDisabled"] = 50004] = "GuildWidgetDisabled";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["CannotEditMessageAuthoredByAnotherUser"] = 50005] = "CannotEditMessageAuthoredByAnotherUser";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["CannotSendAnEmptyMessage"] = 50006] = "CannotSendAnEmptyMessage";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["CannotSendMessagesToThisUser"] = 50007] = "CannotSendMessagesToThisUser";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["CannotSendMessagesInVoiceChannel"] = 50008] = "CannotSendMessagesInVoiceChannel";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["ChannelVerificationLevelTooHighForYouToGainAccess"] = 50009] = "ChannelVerificationLevelTooHighForYouToGainAccess";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["OAuth2ApplicationDoesNotHaveBot"] = 50010] = "OAuth2ApplicationDoesNotHaveBot";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["OAuth2ApplicationLimitReached"] = 50011] = "OAuth2ApplicationLimitReached";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["InvalidOAuth2State"] = 50012] = "InvalidOAuth2State";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["MissingPermissions"] = 50013] = "MissingPermissions";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["InvalidToken"] = 50014] = "InvalidToken";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["NoteWasTooLong"] = 50015] = "NoteWasTooLong";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["ProvidedTooFewOrTooManyMessagesToDelete"] = 50016] = "ProvidedTooFewOrTooManyMessagesToDelete";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["MessageCanOnlyBePinnedInTheChannelItWasSentIn"] = 50019] = "MessageCanOnlyBePinnedInTheChannelItWasSentIn";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["InviteCodeInvalidOrTaken"] = 50020] = "InviteCodeInvalidOrTaken";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["CannotExecuteActionOnSystemMessage"] = 50021] = "CannotExecuteActionOnSystemMessage";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["CannotExecuteActionOnThisChannelType"] = 50024] = "CannotExecuteActionOnThisChannelType";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["InvalidOAuth2AccessToken"] = 50025] = "InvalidOAuth2AccessToken";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["MissingRequiredOAuth2Scope"] = 50026] = "MissingRequiredOAuth2Scope";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["InvalidWebhookToken"] = 50027] = "InvalidWebhookToken";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["InvalidRole"] = 50028] = "InvalidRole";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["InvalidRecipients"] = 50033] = "InvalidRecipients";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["OneOfTheMessagesProvidedWasTooOldForBulkDelete"] = 50034] = "OneOfTheMessagesProvidedWasTooOldForBulkDelete";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["InvalidFormBodyOrContentType"] = 50035] = "InvalidFormBodyOrContentType";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["InviteAcceptedToGuildWithoutTheBotBeingIn"] = 50036] = "InviteAcceptedToGuildWithoutTheBotBeingIn";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["InvalidAPIVersion"] = 50041] = "InvalidAPIVersion";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["FileUploadedExceedsMaximumSize"] = 50045] = "FileUploadedExceedsMaximumSize";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["InvalidFileUploaded"] = 50046] = "InvalidFileUploaded";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["CannotSelfRedeemThisGift"] = 50054] = "CannotSelfRedeemThisGift";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["InvalidGuild"] = 50055] = "InvalidGuild";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["PaymentSourceRequiredToRedeemGift"] = 50070] = "PaymentSourceRequiredToRedeemGift";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["CannotDeleteChannelRequiredForCommunityGuilds"] = 50074] = "CannotDeleteChannelRequiredForCommunityGuilds";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["InvalidStickerSent"] = 50081] = "InvalidStickerSent";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["InvalidActionOnArchivedThread"] = 50083] = "InvalidActionOnArchivedThread";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["InvalidThreadNotificationSettings"] = 50084] = "InvalidThreadNotificationSettings";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["ParameterEarlierThanCreation"] = 50085] = "ParameterEarlierThanCreation";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["ServerNotAvailableInYourLocation"] = 50095] = "ServerNotAvailableInYourLocation";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["ServerNeedsMonetizationEnabledToPerformThisAction"] = 50097] = "ServerNeedsMonetizationEnabledToPerformThisAction";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["ServerNeedsMoreBoostsToPerformThisAction"] = 50101] = "ServerNeedsMoreBoostsToPerformThisAction";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["RequestBodyContainsInvalidJSON"] = 50109] = "RequestBodyContainsInvalidJSON";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["TwoFactorAuthenticationIsRequired"] = 60003] = "TwoFactorAuthenticationIsRequired";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["NoUsersWithDiscordTagExist"] = 80004] = "NoUsersWithDiscordTagExist";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["ReactionWasBlocked"] = 90001] = "ReactionWasBlocked";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["APIResourceOverloaded"] = 130000] = "APIResourceOverloaded";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["TheStageIsAlreadyOpen"] = 150006] = "TheStageIsAlreadyOpen";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["CannotReplyWithoutPermissionToReadMessageHistory"] = 160002] = "CannotReplyWithoutPermissionToReadMessageHistory";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["ThreadAlreadyCreatedForMessage"] = 160004] = "ThreadAlreadyCreatedForMessage";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["ThreadLocked"] = 160005] = "ThreadLocked";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["MaximumActiveThreads"] = 160006] = "MaximumActiveThreads";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["MaximumActiveAnnouncementThreads"] = 160007] = "MaximumActiveAnnouncementThreads";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["InvalidJSONForUploadedLottieFile"] = 170001] = "InvalidJSONForUploadedLottieFile";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["UploadedLottiesCannotContainRasterizedImages"] = 170002] = "UploadedLottiesCannotContainRasterizedImages";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["StickerMaximumFramerateExceeded"] = 170003] = "StickerMaximumFramerateExceeded";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["StickerFrameCountExceedsMaximumOf1000Frames"] = 170004] = "StickerFrameCountExceedsMaximumOf1000Frames";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["LottieAnimationMaximumDimensionsExceeded"] = 170005] = "LottieAnimationMaximumDimensionsExceeded";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["StickerFramerateIsTooSmallOrTooLarge"] = 170006] = "StickerFramerateIsTooSmallOrTooLarge";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["StickerAnimationDurationExceedsMaximumOf5Seconds"] = 170007] = "StickerAnimationDurationExceedsMaximumOf5Seconds";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["CannotUpdateAFinishedEvent"] = 180000] = "CannotUpdateAFinishedEvent";\r\n    RESTJSONErrorCodes[RESTJSONErrorCodes["FailedToCreateStageNeededForStageEvent"] = 180002] = "FailedToCreateStageNeededForStageEvent";\r\n})(RESTJSONErrorCodes = exports.RESTJSONErrorCodes || (exports.RESTJSONErrorCodes = {}));\r\n//# sourceMappingURL=common.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/rest/common.js?')},"./node_modules/discord-api-types/rest/v9/auditLog.js":
/*!************************************************************!*\
  !*** ./node_modules/discord-api-types/rest/v9/auditLog.js ***!
  \************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=auditLog.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/rest/v9/auditLog.js?')},"./node_modules/discord-api-types/rest/v9/channel.js":
/*!***********************************************************!*\
  !*** ./node_modules/discord-api-types/rest/v9/channel.js ***!
  \***********************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=channel.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/rest/v9/channel.js?')},"./node_modules/discord-api-types/rest/v9/emoji.js":
/*!*********************************************************!*\
  !*** ./node_modules/discord-api-types/rest/v9/emoji.js ***!
  \*********************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=emoji.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/rest/v9/emoji.js?')},"./node_modules/discord-api-types/rest/v9/gateway.js":
/*!***********************************************************!*\
  !*** ./node_modules/discord-api-types/rest/v9/gateway.js ***!
  \***********************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=gateway.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/rest/v9/gateway.js?')},"./node_modules/discord-api-types/rest/v9/guild.js":
/*!*********************************************************!*\
  !*** ./node_modules/discord-api-types/rest/v9/guild.js ***!
  \*********************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=guild.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/rest/v9/guild.js?')},"./node_modules/discord-api-types/rest/v9/guildScheduledEvent.js":
/*!***********************************************************************!*\
  !*** ./node_modules/discord-api-types/rest/v9/guildScheduledEvent.js ***!
  \***********************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=guildScheduledEvent.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/rest/v9/guildScheduledEvent.js?')},"./node_modules/discord-api-types/rest/v9/index.js":
/*!*********************************************************!*\
  !*** ./node_modules/discord-api-types/rest/v9/index.js ***!
  \*********************************************************/function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval("\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n}));\r\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.OAuth2Routes = exports.RouteBases = exports.Routes = exports.APIVersion = void 0;\r\n__exportStar(__webpack_require__(/*! ../common */ \"./node_modules/discord-api-types/rest/common.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./auditLog */ \"./node_modules/discord-api-types/rest/v9/auditLog.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./channel */ \"./node_modules/discord-api-types/rest/v9/channel.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./emoji */ \"./node_modules/discord-api-types/rest/v9/emoji.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./gateway */ \"./node_modules/discord-api-types/rest/v9/gateway.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./guild */ \"./node_modules/discord-api-types/rest/v9/guild.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./guildScheduledEvent */ \"./node_modules/discord-api-types/rest/v9/guildScheduledEvent.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./interactions */ \"./node_modules/discord-api-types/rest/v9/interactions.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./invite */ \"./node_modules/discord-api-types/rest/v9/invite.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./oauth2 */ \"./node_modules/discord-api-types/rest/v9/oauth2.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./stageInstance */ \"./node_modules/discord-api-types/rest/v9/stageInstance.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./sticker */ \"./node_modules/discord-api-types/rest/v9/sticker.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./template */ \"./node_modules/discord-api-types/rest/v9/template.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./user */ \"./node_modules/discord-api-types/rest/v9/user.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./voice */ \"./node_modules/discord-api-types/rest/v9/voice.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./webhook */ \"./node_modules/discord-api-types/rest/v9/webhook.js\"), exports);\r\nexports.APIVersion = '9';\r\nexports.Routes = {\r\n    /**\r\n     * Route for:\r\n     * - GET `/guilds/{guild.id}/audit-logs`\r\n     */\r\n    guildAuditLog(guildId) {\r\n        return `/guilds/${guildId}/audit-logs`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET    `/channels/{channel.id}`\r\n     * - PATCH  `/channels/{channel.id}`\r\n     * - DELETE `/channels/{channel.id}`\r\n     */\r\n    channel(channelId) {\r\n        return `/channels/${channelId}`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET  `/channels/{channel.id}/messages`\r\n     * - POST `/channels/{channel.id}/messages`\r\n     */\r\n    channelMessages(channelId) {\r\n        return `/channels/${channelId}/messages`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET    `/channels/{channel.id}/messages/{message.id}`\r\n     * - PATCH  `/channels/{channel.id}/messages/{message.id}`\r\n     * - DELETE `/channels/{channel.id}/messages/{message.id}`\r\n     */\r\n    channelMessage(channelId, messageId) {\r\n        return `/channels/${channelId}/messages/${messageId}`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - POST `/channels/{channel.id}/messages/{message.id}/crosspost`\r\n     */\r\n    channelMessageCrosspost(channelId, messageId) {\r\n        return `/channels/${channelId}/messages/${messageId}/crosspost`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - PUT    `/channels/{channel.id}/messages/{message.id}/reactions/{emoji}/@me`\r\n     * - DELETE `/channels/{channel.id}/messages/{message.id}/reactions/{emoji}/@me`\r\n     *\r\n     * **Note**: You need to URL encode the emoji yourself\r\n     */\r\n    channelMessageOwnReaction(channelId, messageId, emoji) {\r\n        return `/channels/${channelId}/messages/${messageId}/reactions/${emoji}/@me`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - DELETE `/channels/{channel.id}/messages/{message.id}/reactions/{emoji}/{user.id}`\r\n     *\r\n     * **Note**: You need to URL encode the emoji yourself\r\n     */\r\n    channelMessageUserReaction(channelId, messageId, emoji, userId) {\r\n        return `/channels/${channelId}/messages/${messageId}/reactions/${emoji}/${userId}`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET    `/channels/{channel.id}/messages/{message.id}/reactions/{emoji}`\r\n     * - DELETE `/channels/{channel.id}/messages/{message.id}/reactions/{emoji}`\r\n     *\r\n     * **Note**: You need to URL encode the emoji yourself\r\n     */\r\n    channelMessageReaction(channelId, messageId, emoji) {\r\n        return `/channels/${channelId}/messages/${messageId}/reactions/${emoji}`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - DELETE `/channels/{channel.id}/messages/{message.id}/reactions`\r\n     */\r\n    channelMessageAllReactions(channelId, messageId) {\r\n        return `/channels/${channelId}/messages/${messageId}/reactions`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - POST `/channels/{channel.id}/messages/bulk-delete`\r\n     */\r\n    channelBulkDelete(channelId) {\r\n        return `/channels/${channelId}/messages/bulk-delete`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - PUT    `/channels/{channel.id}/permissions/{overwrite.id}`\r\n     * - DELETE `/channels/{channel.id}/permissions/{overwrite.id}`\r\n     */\r\n    channelPermission(channelId, overwriteId) {\r\n        return `/channels/${channelId}/permissions/${overwriteId}`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET  `/channels/{channel.id}/invites`\r\n     * - POST `/channels/{channel.id}/invites`\r\n     */\r\n    channelInvites(channelId) {\r\n        return `/channels/${channelId}/invites`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - POST `/channels/{channel.id}/followers`\r\n     */\r\n    channelFollowers(channelId) {\r\n        return `/channels/${channelId}/followers`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - POST `/channels/{channel.id}/typing`\r\n     */\r\n    channelTyping(channelId) {\r\n        return `/channels/${channelId}/typing`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/channels/{channel.id}/pins`\r\n     */\r\n    channelPins(channelId) {\r\n        return `/channels/${channelId}/pins`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - PUT    `/channels/{channel.id}/pins/{message.id}`\r\n     * - DELETE `/channels/{channel.id}/pins/{message.id}`\r\n     */\r\n    channelPin(channelId, messageId) {\r\n        return `/channels/${channelId}/pins/${messageId}`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - PUT    `/channels/{channel.id}/recipients/{user.id}`\r\n     * - DELETE `/channels/{channel.id}/recipients/{user.id}`\r\n     */\r\n    channelRecipient(channelId, userId) {\r\n        return `/channels/${channelId}/recipients/${userId}`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET  `/guilds/{guild.id}/emojis`\r\n     * - POST `/guilds/{guild.id}/emojis`\r\n     */\r\n    guildEmojis(guildId) {\r\n        return `/guilds/${guildId}/emojis`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET    `/guilds/{guild.id}/emojis/{emoji.id}`\r\n     * - PATCH  `/guilds/{guild.id}/emojis/{emoji.id}`\r\n     * - DELETE `/guilds/{guild.id}/emojis/{emoji.id}`\r\n     */\r\n    guildEmoji(guildId, emojiId) {\r\n        return `/guilds/${guildId}/emojis/${emojiId}`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - POST `/guilds`\r\n     */\r\n    guilds() {\r\n        return '/guilds';\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET    `/guilds/{guild.id}`\r\n     * - PATCH  `/guilds/{guild.id}`\r\n     * - DELETE `/guilds/{guild.id}`\r\n     */\r\n    guild(guildId) {\r\n        return `/guilds/${guildId}`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/guilds/{guild.id}/preview`\r\n     */\r\n    guildPreview(guildId) {\r\n        return `/guilds/${guildId}/preview`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET   `/guilds/{guild.id}/channels`\r\n     * - POST  `/guilds/{guild.id}/channels`\r\n     * - PATCH `/guilds/{guild.id}/channels`\r\n     */\r\n    guildChannels(guildId) {\r\n        return `/guilds/${guildId}/channels`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET    `/guilds/{guild.id}/members/{user.id}`\r\n     * - PUT    `/guilds/{guild.id}/members/{user.id}`\r\n     * - PATCH  `/guilds/{guild.id}/members/{user.id}`\r\n     * - DELETE `/guilds/{guild.id}/members/{user.id}`\r\n     */\r\n    guildMember(guildId, userId) {\r\n        return `/guilds/${guildId}/members/${userId}`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/guilds/{guild.id}/members`\r\n     */\r\n    guildMembers(guildId) {\r\n        return `/guilds/${guildId}/members`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/guilds/{guild.id}/members/search`\r\n     */\r\n    guildMembersSearch(guildId) {\r\n        return `/guilds/${guildId}/members/search`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - PATCH `/guilds/{guild.id}/members/@me/nick`\r\n     */\r\n    guildCurrentMemberNickname(guildId) {\r\n        return `/guilds/${guildId}/members/@me/nick`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - PUT    `/guilds/{guild.id}/members/{user.id}/roles/{role.id}`\r\n     * - DELETE `/guilds/{guild.id}/members/{user.id}/roles/{role.id}`\r\n     */\r\n    guildMemberRole(guildId, memberId, roleId) {\r\n        return `/guilds/${guildId}/members/${memberId}/roles/${roleId}`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/guilds/{guild.id}/bans`\r\n     */\r\n    guildBans(guildId) {\r\n        return `/guilds/${guildId}/bans`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET    `/guilds/{guild.id}/bans/{user.id}`\r\n     * - PUT    `/guilds/{guild.id}/bans/{user.id}`\r\n     * - DELETE `/guilds/{guild.id}/bans/{user.id}`\r\n     */\r\n    guildBan(guildId, userId) {\r\n        return `/guilds/${guildId}/bans/${userId}`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET   `/guilds/{guild.id}/roles`\r\n     * - POST  `/guilds/{guild.id}/roles`\r\n     * - PATCH `/guilds/{guild.id}/roles`\r\n     */\r\n    guildRoles(guildId) {\r\n        return `/guilds/${guildId}/roles`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - PATCH  `/guilds/{guild.id}/roles/{role.id}`\r\n     * - DELETE `/guilds/{guild.id}/roles/{role.id}`\r\n     */\r\n    guildRole(guildId, roleId) {\r\n        return `/guilds/${guildId}/roles/${roleId}`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET  `/guilds/{guild.id}/prune`\r\n     * - POST `/guilds/{guild.id}/prune`\r\n     */\r\n    guildPrune(guildId) {\r\n        return `/guilds/${guildId}/prune`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/guilds/{guild.id}/regions`\r\n     */\r\n    guildVoiceRegions(guildId) {\r\n        return `/guilds/${guildId}/regions`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/guilds/{guild.id}/invites`\r\n     */\r\n    guildInvites(guildId) {\r\n        return `/guilds/${guildId}/invites`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET  `/guilds/{guild.id}/integrations`\r\n     */\r\n    guildIntegrations(guildId) {\r\n        return `/guilds/${guildId}/integrations`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - DELETE `/guilds/{guild.id}/integrations/{integration.id}`\r\n     */\r\n    guildIntegration(guildId, integrationId) {\r\n        return `/guilds/${guildId}/integrations/${integrationId}`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET   `/guilds/{guild.id}/widget`\r\n     * - PATCH `/guilds/{guild.id}/widget`\r\n     */\r\n    guildWidgetSettings(guildId) {\r\n        return `/guilds/${guildId}/widget`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/guilds/{guild.id}/widget.json`\r\n     */\r\n    guildWidgetJSON(guildId) {\r\n        return `/guilds/${guildId}/widget.json`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/guilds/{guild.id}/vanity-url`\r\n     */\r\n    guildVanityUrl(guildId) {\r\n        return `/guilds/${guildId}/vanity-url`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/guilds/{guild.id}/widget.png`\r\n     */\r\n    guildWidgetImage(guildId) {\r\n        return `/guilds/${guildId}/widget.png`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET    `/invites/{invite.code}`\r\n     * - DELETE `/invites/{invite.code}`\r\n     */\r\n    invite(code) {\r\n        return `/invites/${code}`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET  `/guilds/templates/{template.code}`\r\n     * - POST `/guilds/templates/{template.code}`\r\n     */\r\n    template(code) {\r\n        return `/guilds/templates/${code}`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET  `/guilds/{guild.id}/templates`\r\n     * - POST `/guilds/{guild.id}/templates`\r\n     */\r\n    guildTemplates(guildId) {\r\n        return `/guilds/${guildId}/templates`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - PUT    `/guilds/{guild.id}/templates/{template.code}`\r\n     * - PATCH  `/guilds/{guild.id}/templates/{template.code}`\r\n     * - DELETE `/guilds/{guild.id}/templates/{template.code}`\r\n     */\r\n    guildTemplate(guildId, code) {\r\n        return `/guilds/${guildId}/templates/${code}`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - POST `/channels/{channel.id}/threads`\r\n     * - POST `/channels/{channel.id}/messages/{message.id}/threads`\r\n     */\r\n    threads(parentId, messageId) {\r\n        const parts = ['', 'channels', parentId];\r\n        if (messageId)\r\n            parts.push('messages', messageId);\r\n        parts.push('threads');\r\n        return parts.join('/');\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/guilds/{guild.id}/threads/active`\r\n     */\r\n    guildActiveThreads(guildId) {\r\n        return `/guilds/${guildId}/threads/active`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/channels/{channel.id}/threads/active`\r\n     * \t (deprecated, use [List Active Guild Threads](https://discord.com/developers/docs/resources/guild#list-active-threads) instead.\r\n     * \t Will be removed in v10.)\r\n     * - GET `/channels/{channel.id}/threads/archived/public`\r\n     * - GET `/channels/{channel.id}/threads/archived/private`\r\n     */\r\n    channelThreads(channelId, archived) {\r\n        const parts = ['', 'channels', channelId, 'threads'];\r\n        if (archived)\r\n            parts.push('archived', archived);\r\n        else\r\n            parts.push('active');\r\n        return parts.join('/');\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/channels/{channel.id}/users/@me/threads/archived/prviate`\r\n     */\r\n    channelJoinedArchivedThreads(channelId) {\r\n        return `/channels/${channelId}/users/@me/threads/archived/private`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET    `/channels/{thread.id}/thread-members`\r\n     * - GET    `/channels/{thread.id}/thread-members/{user.id}`\r\n     * - PUT    `/channels/{thread.id}/thread-members/@me`\r\n     * - PUT    `/channels/{thread.id}/thread-members/{user.id}`\r\n     * - DELETE `/channels/{thread.id}/thread-members/@me`\r\n     * - DELETE `/channels/{thread.id}/thread-members/{user.id}`\r\n     */\r\n    threadMembers(threadId, userId) {\r\n        const parts = ['', 'channels', threadId, 'thread-members'];\r\n        if (userId)\r\n            parts.push(userId);\r\n        return parts.join('/');\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET   `/users/@me`\r\n     * - GET   `/users/{user.id}`\r\n     * - PATCH `/users/@me`\r\n     *\r\n     * @param [userId='@me'] The user ID, defaulted to `@me`\r\n     */\r\n    user(userId = '@me') {\r\n        return `/users/${userId}`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/users/@me/guilds`\r\n     */\r\n    userGuilds() {\r\n        return `/users/@me/guilds`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/users/@me/guilds/{guild.id}/member`\r\n     */\r\n    userGuildMember(guildId) {\r\n        return `/users/@me/guilds/${guildId}/member`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - DELETE `/users/@me/guilds/{guild.id}`\r\n     */\r\n    userGuild(guildId) {\r\n        return `/users/@me/guilds/${guildId}`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - POST `/users/@me/channels`\r\n     */\r\n    userChannels() {\r\n        return `/users/@me/channels`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/users/@me/connections`\r\n     */\r\n    userConnections() {\r\n        return `/users/@me/connections`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/voice/regions`\r\n     */\r\n    voiceRegions() {\r\n        return `/voice/regions`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET  `/channels/{channel.id}/webhooks`\r\n     * - POST `/channels/{channel.id}/webhooks`\r\n     */\r\n    channelWebhooks(channelId) {\r\n        return `/channels/${channelId}/webhooks`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/guilds/{guild.id}/webhooks`\r\n     */\r\n    guildWebhooks(guildId) {\r\n        return `/guilds/${guildId}/webhooks`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET    `/webhooks/{webhook.id}`\r\n     * - GET    `/webhooks/{webhook.id}/{webhook.token}`\r\n     * - PATCH  `/webhooks/{webhook.id}`\r\n     * - PATCH  `/webhooks/{webhook.id}/{webhook.token}`\r\n     * - DELETE `/webhooks/{webhook.id}`\r\n     * - DELETE `/webhooks/{webhook.id}/{webhook.token}`\r\n     * - POST   `/webhooks/{webhook.id}/{webhook.token}`\r\n     *\r\n     * - POST   `/webhooks/{application.id}/{interaction.token}`\r\n     */\r\n    webhook(webhookId, webhookToken) {\r\n        const parts = ['', 'webhooks', webhookId];\r\n        if (webhookToken)\r\n            parts.push(webhookToken);\r\n        return parts.join('/');\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET    `/webhooks/{webhook.id}/{webhook.token}/messages/@original`\r\n     * - GET    `/webhooks/{webhook.id}/{webhook.token}/messages/{message.id}`\r\n     * - PATCH  `/webhooks/{webhook.id}/{webhook.token}/messages/@original`\r\n     * - PATCH  `/webhooks/{webhook.id}/{webhook.token}/messages/{message.id}`\r\n     * - DELETE `/webhooks/{webhook.id}/{webhook.token}/messages/@original`\r\n     * - DELETE `/webhooks/{webhook.id}/{webhook.token}/messages/{message.id}`\r\n     *\r\n     * - PATCH  `/webhooks/{application.id}/{interaction.token}/messages/@original`\r\n     * - PATCH  `/webhooks/{application.id}/{interaction.token}/messages/{message.id}`\r\n     * - DELETE `/webhooks/{application.id}/{interaction.token}/messages/{message.id}`\r\n     *\r\n     * @param [messageId='@original'] The message ID to change, defaulted to `@original`\r\n     */\r\n    webhookMessage(webhookId, webhookToken, messageId = '@original') {\r\n        return `/webhooks/${webhookId}/${webhookToken}/messages/${messageId}`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - POST `/webhooks/{webhook.id}/{webhook.token}/github`\r\n     * - POST `/webhooks/{webhook.id}/{webhook.token}/slack`\r\n     */\r\n    webhookPlatform(webhookId, webhookToken, platform) {\r\n        return `/webhooks/${webhookId}/${webhookToken}/${platform}`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/gateway`\r\n     */\r\n    gateway() {\r\n        return `/gateway`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/gateway/bot`\r\n     */\r\n    gatewayBot() {\r\n        return `/gateway/bot`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/oauth2/applications/@me`\r\n     */\r\n    oauth2CurrentApplication() {\r\n        return `/oauth2/applications/@me`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/oauth2/@me`\r\n     */\r\n    oauth2CurrentAuthorization() {\r\n        return `/oauth2/@me`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/oauth2/authorize`\r\n     */\r\n    oauth2Authorization() {\r\n        return `/oauth2/authorize`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - POST `/oauth2/token`\r\n     */\r\n    oauth2TokenExchange() {\r\n        return `/oauth2/token`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - POST `/oauth2/token/revoke`\r\n     */\r\n    oauth2TokenRevocation() {\r\n        return `/oauth2/token/revoke`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET  `/applications/{application.id}/commands`\r\n     * - PUT  `/applications/{application.id}/commands`\r\n     * - POST `/applications/{application.id}/commands`\r\n     */\r\n    applicationCommands(applicationId) {\r\n        return `/applications/${applicationId}/commands`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET    `/applications/{application.id}/commands/{command.id}`\r\n     * - PATCH  `/applications/{application.id}/commands/{command.id}`\r\n     * - DELETE `/applications/{application.id}/commands/{command.id}`\r\n     */\r\n    applicationCommand(applicationId, commandId) {\r\n        return `/applications/${applicationId}/commands/${commandId}`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET  `/applications/{application.id}/guilds/{guild.id}/commands`\r\n     * - PUT  `/applications/{application.id}/guilds/{guild.id}/commands`\r\n     * - POST `/applications/{application.id}/guilds/{guild.id}/commands`\r\n     */\r\n    applicationGuildCommands(applicationId, guildId) {\r\n        return `/applications/${applicationId}/guilds/${guildId}/commands`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET    `/applications/{application.id}/guilds/{guild.id}/commands/{command.id}`\r\n     * - PATCH  `/applications/{application.id}/guilds/{guild.id}/commands/{command.id}`\r\n     * - DELETE `/applications/{application.id}/guilds/{guild.id}/commands/{command.id}`\r\n     */\r\n    applicationGuildCommand(applicationId, guildId, commandId) {\r\n        return `/applications/${applicationId}/guilds/${guildId}/commands/${commandId}`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - POST `/interactions/{interaction.id}/{interaction.token}/callback`\r\n     */\r\n    interactionCallback(interactionId, interactionToken) {\r\n        return `/interactions/${interactionId}/${interactionToken}/callback`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET   `/guilds/{guild.id}/member-verification`\r\n     * - PATCH `/guilds/{guild.id}/member-verification`\r\n     */\r\n    guildMemberVerification(guildId) {\r\n        return `/guilds/${guildId}/member-verification`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - PATCH `/guilds/{guild.id}/voice-states/@me`\r\n     * - PATCH `/guilds/{guild.id}/voice-states/{user.id}`\r\n     */\r\n    guildVoiceState(guildId, userId = '@me') {\r\n        return `/guilds/${guildId}/voice-states/${userId}`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/applications/{application.id}/guilds/{guild.id}/commands/permissions`\r\n     * - PUT `/applications/{application.id}/guilds/{guild.id}/commands/permissions`\r\n     */\r\n    guildApplicationCommandsPermissions(applicationId, guildId) {\r\n        return `/applications/${applicationId}/guilds/${guildId}/commands/permissions`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/applications/{application.id}/guilds/{guild.id}/commands/{command.id}/permissions`\r\n     * - PUT `/applications/{application.id}/guilds/{guild.id}/commands/{command.id}/permissions`\r\n     */\r\n    applicationCommandPermissions(applicationId, guildId, commandId) {\r\n        return `/applications/${applicationId}/guilds/${guildId}/commands/${commandId}/permissions`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET   `/guilds/{guild.id}/welcome-screen`\r\n     * - PATCH `/guilds/{guild.id}/welcome-screen`\r\n     */\r\n    guildWelcomeScreen(guildId) {\r\n        return `/guilds/${guildId}/welcome-screen`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - POST `/stage-instances`\r\n     */\r\n    stageInstances() {\r\n        return `/stage-instances`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/stage-instances/{channel.id}`\r\n     * - PATCH `/stage-instances/{channel.id}`\r\n     * - DELETE `/stage-instances/{channel.id}`\r\n     */\r\n    stageInstance(channelId) {\r\n        return `/stage-instances/${channelId}`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/stickers/{sticker.id}`\r\n     */\r\n    sticker(stickerId) {\r\n        return `/stickers/${stickerId}`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/sticker-packs`\r\n     */\r\n    nitroStickerPacks() {\r\n        return '/sticker-packs';\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET  `/guilds/{guild.id}/stickers`\r\n     * - POST `/guilds/{guild.id}/stickers`\r\n     */\r\n    guildStickers(guildId) {\r\n        return `/guilds/${guildId}/stickers`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET    `/guilds/{guild.id}/stickers/{sticker.id}`\r\n     * - PATCH  `/guilds/{guild.id}/stickers/{sticker.id}`\r\n     * - DELETE `/guilds/{guild.id}/stickers/{sticker.id}`\r\n     */\r\n    guildSticker(guildId, stickerId) {\r\n        return `/guilds/${guildId}/stickers/${stickerId}`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET  `/guilds/{guild.id}/scheduled-events`\r\n     * - POST `/guilds/{guild.id}/scheduled-events`\r\n     */\r\n    guildScheduledEvents(guildId) {\r\n        return `/guilds/${guildId}/scheduled-events`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET  `/guilds/{guild.id}/scheduled-events/{guildScheduledEvent.id}`\r\n     * - PATCH `/guilds/{guild.id}/scheduled-events/{guildScheduledEvent.id}`\r\n     * - DELETE `/guilds/{guild.id}/scheduled-events/{guildScheduledEvent.id}`\r\n     */\r\n    guildScheduledEvent(guildId, guildScheduledEventId) {\r\n        return `/guilds/${guildId}/scheduled-events/${guildScheduledEventId}`;\r\n    },\r\n    /**\r\n     * Route for:\r\n     * - GET `/guilds/{guild.id}/scheduled-events/{guildScheduledEvent.id}/users`\r\n     */\r\n    guildScheduledEventUsers(guildId, guildScheduledEventId) {\r\n        return `/guilds/${guildId}/scheduled-events/${guildScheduledEventId}/users`;\r\n    },\r\n};\r\nexports.RouteBases = {\r\n    api: `https://discord.com/api/v${exports.APIVersion}`,\r\n    cdn: 'https://cdn.discordapp.com',\r\n    invite: 'https://discord.gg',\r\n    template: 'https://discord.new',\r\n    gift: 'https://discord.gift',\r\n};\r\n// Freeze bases object\r\nObject.freeze(exports.RouteBases);\r\nexports.OAuth2Routes = {\r\n    authorizationURL: `${exports.RouteBases.api}${exports.Routes.oauth2Authorization()}`,\r\n    tokenURL: `${exports.RouteBases.api}${exports.Routes.oauth2TokenExchange()}`,\r\n    /**\r\n     * See https://tools.ietf.org/html/rfc7009\r\n     */\r\n    tokenRevocationURL: `${exports.RouteBases.api}${exports.Routes.oauth2TokenRevocation()}`,\r\n};\r\n// Freeze OAuth2 route object\r\nObject.freeze(exports.OAuth2Routes);\r\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/rest/v9/index.js?")},"./node_modules/discord-api-types/rest/v9/interactions.js":
/*!****************************************************************!*\
  !*** ./node_modules/discord-api-types/rest/v9/interactions.js ***!
  \****************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=interactions.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/rest/v9/interactions.js?')},"./node_modules/discord-api-types/rest/v9/invite.js":
/*!**********************************************************!*\
  !*** ./node_modules/discord-api-types/rest/v9/invite.js ***!
  \**********************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=invite.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/rest/v9/invite.js?')},"./node_modules/discord-api-types/rest/v9/oauth2.js":
/*!**********************************************************!*\
  !*** ./node_modules/discord-api-types/rest/v9/oauth2.js ***!
  \**********************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=oauth2.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/rest/v9/oauth2.js?')},"./node_modules/discord-api-types/rest/v9/stageInstance.js":
/*!*****************************************************************!*\
  !*** ./node_modules/discord-api-types/rest/v9/stageInstance.js ***!
  \*****************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=stageInstance.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/rest/v9/stageInstance.js?')},"./node_modules/discord-api-types/rest/v9/sticker.js":
/*!***********************************************************!*\
  !*** ./node_modules/discord-api-types/rest/v9/sticker.js ***!
  \***********************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=sticker.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/rest/v9/sticker.js?')},"./node_modules/discord-api-types/rest/v9/template.js":
/*!************************************************************!*\
  !*** ./node_modules/discord-api-types/rest/v9/template.js ***!
  \************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=template.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/rest/v9/template.js?')},"./node_modules/discord-api-types/rest/v9/user.js":
/*!********************************************************!*\
  !*** ./node_modules/discord-api-types/rest/v9/user.js ***!
  \********************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=user.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/rest/v9/user.js?')},"./node_modules/discord-api-types/rest/v9/voice.js":
/*!*********************************************************!*\
  !*** ./node_modules/discord-api-types/rest/v9/voice.js ***!
  \*********************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=voice.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/rest/v9/voice.js?')},"./node_modules/discord-api-types/rest/v9/webhook.js":
/*!***********************************************************!*\
  !*** ./node_modules/discord-api-types/rest/v9/webhook.js ***!
  \***********************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\n//# sourceMappingURL=webhook.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/rest/v9/webhook.js?')},"./node_modules/discord-api-types/rpc/v9.js":
/*!**************************************************!*\
  !*** ./node_modules/discord-api-types/rpc/v9.js ***!
  \**************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\nexports.RPCCloseEventCodes = exports.RPCErrorCodes = void 0;\r\n/**\r\n * https://discord.com/developers/docs/topics/opcodes-and-status-codes#rpc-rpc-error-codes\r\n */\r\nvar RPCErrorCodes;\r\n(function (RPCErrorCodes) {\r\n    RPCErrorCodes[RPCErrorCodes["UnknownError"] = 1000] = "UnknownError";\r\n    RPCErrorCodes[RPCErrorCodes["InvalidPayload"] = 4000] = "InvalidPayload";\r\n    RPCErrorCodes[RPCErrorCodes["InvalidCommand"] = 4002] = "InvalidCommand";\r\n    RPCErrorCodes[RPCErrorCodes["InvalidGuild"] = 4003] = "InvalidGuild";\r\n    RPCErrorCodes[RPCErrorCodes["InvalidEvent"] = 4004] = "InvalidEvent";\r\n    RPCErrorCodes[RPCErrorCodes["InvalidChannel"] = 4005] = "InvalidChannel";\r\n    RPCErrorCodes[RPCErrorCodes["InvalidPermissions"] = 4006] = "InvalidPermissions";\r\n    RPCErrorCodes[RPCErrorCodes["InvalidClientId"] = 4007] = "InvalidClientId";\r\n    RPCErrorCodes[RPCErrorCodes["InvalidOrigin"] = 4008] = "InvalidOrigin";\r\n    RPCErrorCodes[RPCErrorCodes["InvalidToken"] = 4009] = "InvalidToken";\r\n    RPCErrorCodes[RPCErrorCodes["InvalidUser"] = 4010] = "InvalidUser";\r\n    RPCErrorCodes[RPCErrorCodes["OAuth2Error"] = 5000] = "OAuth2Error";\r\n    RPCErrorCodes[RPCErrorCodes["SelectChannelTimedOut"] = 5001] = "SelectChannelTimedOut";\r\n    RPCErrorCodes[RPCErrorCodes["GetGuildTimedOut"] = 5002] = "GetGuildTimedOut";\r\n    RPCErrorCodes[RPCErrorCodes["SelectVoiceForceRequired"] = 5003] = "SelectVoiceForceRequired";\r\n    RPCErrorCodes[RPCErrorCodes["CaptureShortcutAlreadyListening"] = 5004] = "CaptureShortcutAlreadyListening";\r\n})(RPCErrorCodes = exports.RPCErrorCodes || (exports.RPCErrorCodes = {}));\r\n/**\r\n * https://discord.com/developers/docs/topics/opcodes-and-status-codes#rpc-rpc-close-event-codes\r\n */\r\nvar RPCCloseEventCodes;\r\n(function (RPCCloseEventCodes) {\r\n    RPCCloseEventCodes[RPCCloseEventCodes["InvalidClientId"] = 4000] = "InvalidClientId";\r\n    RPCCloseEventCodes[RPCCloseEventCodes["InvalidOrigin"] = 4001] = "InvalidOrigin";\r\n    RPCCloseEventCodes[RPCCloseEventCodes["RateLimited"] = 4002] = "RateLimited";\r\n    RPCCloseEventCodes[RPCCloseEventCodes["TokenRevoked"] = 4003] = "TokenRevoked";\r\n    RPCCloseEventCodes[RPCCloseEventCodes["InvalidVersion"] = 4004] = "InvalidVersion";\r\n    RPCCloseEventCodes[RPCCloseEventCodes["InvalidEncoding"] = 4005] = "InvalidEncoding";\r\n})(RPCCloseEventCodes = exports.RPCCloseEventCodes || (exports.RPCCloseEventCodes = {}));\r\n//# sourceMappingURL=v9.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/rpc/v9.js?')},"./node_modules/discord-api-types/utils/v9.js":
/*!****************************************************!*\
  !*** ./node_modules/discord-api-types/utils/v9.js ***!
  \****************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.isInteractionButton = exports.isLinkButton = exports.isMessageComponentGuildInteraction = exports.isMessageComponentDMInteraction = exports.isApplicationCommandGuildInteraction = exports.isApplicationCommandDMInteraction = exports.isGuildInteraction = exports.isDMInteraction = void 0;\r\n__webpack_require__(/*! ../payloads/v9/index */ \"./node_modules/discord-api-types/payloads/v9/index.js\");\r\n// Interactions\r\n/**\r\n * A type-guard check for DM interactions\r\n * @param interaction The interaction to check against\r\n * @returns A boolean that indicates if the interaction was received in a DM channel\r\n */\r\nfunction isDMInteraction(interaction) {\r\n    return Reflect.has(interaction, 'user');\r\n}\r\nexports.isDMInteraction = isDMInteraction;\r\n/**\r\n * A type-guard check for guild interactions\r\n * @param interaction The interaction to check against\r\n * @returns A boolean that indicates if the interaction was received in a guild\r\n */\r\nfunction isGuildInteraction(interaction) {\r\n    return Reflect.has(interaction, 'guild_id');\r\n}\r\nexports.isGuildInteraction = isGuildInteraction;\r\n// ApplicationCommandInteractions\r\n/**\r\n * A type-guard check for DM application command interactions\r\n * @param interaction The application command interaction to check against\r\n * @returns A boolean that indicates if the application command interaction was received in a DM channel\r\n */\r\nfunction isApplicationCommandDMInteraction(interaction) {\r\n    return isDMInteraction(interaction);\r\n}\r\nexports.isApplicationCommandDMInteraction = isApplicationCommandDMInteraction;\r\n/**\r\n * A type-guard check for guild application command interactions\r\n * @param interaction The interaction to check against\r\n * @returns A boolean that indicates if the application command interaction was received in a guild\r\n */\r\nfunction isApplicationCommandGuildInteraction(interaction) {\r\n    return isGuildInteraction(interaction);\r\n}\r\nexports.isApplicationCommandGuildInteraction = isApplicationCommandGuildInteraction;\r\n// MessageComponentInteractions\r\n/**\r\n * A type-guard check for DM message component interactions\r\n * @param interaction The message component interaction to check against\r\n * @returns A boolean that indicates if the message component interaction was received in a DM channel\r\n */\r\nfunction isMessageComponentDMInteraction(interaction) {\r\n    return isDMInteraction(interaction);\r\n}\r\nexports.isMessageComponentDMInteraction = isMessageComponentDMInteraction;\r\n/**\r\n * A type-guard check for guild message component interactions\r\n * @param interaction The interaction to check against\r\n * @returns A boolean that indicates if the message component interaction was received in a guild\r\n */\r\nfunction isMessageComponentGuildInteraction(interaction) {\r\n    return isGuildInteraction(interaction);\r\n}\r\nexports.isMessageComponentGuildInteraction = isMessageComponentGuildInteraction;\r\n// Buttons\r\n/**\r\n * A type-guard check for buttons that have a `url` attached to them.\r\n * @param component The button to check against\r\n * @returns A boolean that indicates if the button has a `url` attached to it\r\n */\r\nfunction isLinkButton(component) {\r\n    return component.style === 5 /* Link */;\r\n}\r\nexports.isLinkButton = isLinkButton;\r\n/**\r\n * A type-guard check for buttons that have a `custom_id` attached to them.\r\n * @param button The button to check against\r\n * @returns A boolean that indicates if the button has a `custom_id` attached to it\r\n */\r\nfunction isInteractionButton(component) {\r\n    return component.style !== 5 /* Link */;\r\n}\r\nexports.isInteractionButton = isInteractionButton;\r\n//# sourceMappingURL=v9.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/utils/v9.js?")},"./node_modules/discord-api-types/v9.js":
/*!**********************************************!*\
  !*** ./node_modules/discord-api-types/v9.js ***!
  \**********************************************/function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n}));\r\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\r\n    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\r\n};\r\nObject.defineProperty(exports, "__esModule", ({ value: true }));\r\nexports.Utils = void 0;\r\n__exportStar(__webpack_require__(/*! ./globals */ "./node_modules/discord-api-types/globals.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./gateway/v9 */ "./node_modules/discord-api-types/gateway/v9.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./payloads/v9/index */ "./node_modules/discord-api-types/payloads/v9/index.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./rest/v9/index */ "./node_modules/discord-api-types/rest/v9/index.js"), exports);\r\n__exportStar(__webpack_require__(/*! ./rpc/v9 */ "./node_modules/discord-api-types/rpc/v9.js"), exports);\r\nexports.Utils = __webpack_require__(/*! ./utils/v9 */ "./node_modules/discord-api-types/utils/v9.js");\r\n//# sourceMappingURL=v9.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/discord-api-types/v9.js?')},"./node_modules/ee-first/index.js":
/*!****************************************!*\
  !*** ./node_modules/ee-first/index.js ***!
  \****************************************/module=>{"use strict";eval("/*!\n * ee-first\n * Copyright(c) 2014 Jonathan Ong\n * MIT Licensed\n */\n\n\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = first\n\n/**\n * Get the first event in a set of event emitters and event pairs.\n *\n * @param {array} stuff\n * @param {function} done\n * @public\n */\n\nfunction first(stuff, done) {\n  if (!Array.isArray(stuff))\n    throw new TypeError('arg must be an array of [ee, events...] arrays')\n\n  var cleanups = []\n\n  for (var i = 0; i < stuff.length; i++) {\n    var arr = stuff[i]\n\n    if (!Array.isArray(arr) || arr.length < 2)\n      throw new TypeError('each array member must be [ee, events...]')\n\n    var ee = arr[0]\n\n    for (var j = 1; j < arr.length; j++) {\n      var event = arr[j]\n      var fn = listener(event, callback)\n\n      // listen to the event\n      ee.on(event, fn)\n      // push this listener to the list of cleanups\n      cleanups.push({\n        ee: ee,\n        event: event,\n        fn: fn,\n      })\n    }\n  }\n\n  function callback() {\n    cleanup()\n    done.apply(null, arguments)\n  }\n\n  function cleanup() {\n    var x\n    for (var i = 0; i < cleanups.length; i++) {\n      x = cleanups[i]\n      x.ee.removeListener(x.event, x.fn)\n    }\n  }\n\n  function thunk(fn) {\n    done = fn\n  }\n\n  thunk.cancel = cleanup\n\n  return thunk\n}\n\n/**\n * Create the event listener.\n * @private\n */\n\nfunction listener(event, done) {\n  return function onevent(arg1) {\n    var args = new Array(arguments.length)\n    var ee = this\n    var err = event === 'error'\n      ? arg1\n      : null\n\n    // copy args to prevent arguments escaping scope\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i]\n    }\n\n    done(err, ee, event, args)\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ee-first/index.js?")},"./node_modules/ejs/lib/ejs.js":
/*!*************************************!*\
  !*** ./node_modules/ejs/lib/ejs.js ***!
  \*************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("/*\n * EJS Embedded JavaScript templates\n * Copyright 2112 Matthew Eernisse (mde@fleegix.org)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *         http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n*/\n\n\n\n/**\n * @file Embedded JavaScript templating engine. {@link http://ejs.co}\n * @author Matthew Eernisse <mde@fleegix.org>\n * @author Tiancheng \"Timothy\" Gu <timothygu99@gmail.com>\n * @project EJS\n * @license {@link http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0}\n */\n\n/**\n * EJS internal functions.\n *\n * Technically this \"module\" lies in the same file as {@link module:ejs}, for\n * the sake of organization all the private functions re grouped into this\n * module.\n *\n * @module ejs-internal\n * @private\n */\n\n/**\n * Embedded JavaScript templating engine.\n *\n * @module ejs\n * @public\n */\n\n\nvar fs = __webpack_require__(/*! fs */ \"fs\");\nvar path = __webpack_require__(/*! path */ \"path\");\nvar utils = __webpack_require__(/*! ./utils */ \"./node_modules/ejs/lib/utils.js\");\n\nvar scopeOptionWarned = false;\n/** @type {string} */\nvar _VERSION_STRING = (__webpack_require__(/*! ../package.json */ \"./node_modules/ejs/package.json\").version);\nvar _DEFAULT_OPEN_DELIMITER = '<';\nvar _DEFAULT_CLOSE_DELIMITER = '>';\nvar _DEFAULT_DELIMITER = '%';\nvar _DEFAULT_LOCALS_NAME = 'locals';\nvar _NAME = 'ejs';\nvar _REGEX_STRING = '(<%%|%%>|<%=|<%-|<%_|<%#|<%|%>|-%>|_%>)';\nvar _OPTS_PASSABLE_WITH_DATA = ['delimiter', 'scope', 'context', 'debug', 'compileDebug',\n  'client', '_with', 'rmWhitespace', 'strict', 'filename', 'async'];\n// We don't allow 'cache' option to be passed in the data obj for\n// the normal `render` call, but this is where Express 2 & 3 put it\n// so we make an exception for `renderFile`\nvar _OPTS_PASSABLE_WITH_DATA_EXPRESS = _OPTS_PASSABLE_WITH_DATA.concat('cache');\nvar _BOM = /^\\uFEFF/;\nvar _JS_IDENTIFIER = /^[a-zA-Z_$][0-9a-zA-Z_$]*$/;\n\n/**\n * EJS template function cache. This can be a LRU object from lru-cache NPM\n * module. By default, it is {@link module:utils.cache}, a simple in-process\n * cache that grows continuously.\n *\n * @type {Cache}\n */\n\nexports.cache = utils.cache;\n\n/**\n * Custom file loader. Useful for template preprocessing or restricting access\n * to a certain part of the filesystem.\n *\n * @type {fileLoader}\n */\n\nexports.fileLoader = fs.readFileSync;\n\n/**\n * Name of the object containing the locals.\n *\n * This variable is overridden by {@link Options}`.localsName` if it is not\n * `undefined`.\n *\n * @type {String}\n * @public\n */\n\nexports.localsName = _DEFAULT_LOCALS_NAME;\n\n/**\n * Promise implementation -- defaults to the native implementation if available\n * This is mostly just for testability\n *\n * @type {PromiseConstructorLike}\n * @public\n */\n\nexports.promiseImpl = (new Function('return this;'))().Promise;\n\n/**\n * Get the path to the included file from the parent file path and the\n * specified path.\n *\n * @param {String}  name     specified path\n * @param {String}  filename parent file path\n * @param {Boolean} [isDir=false] whether the parent file path is a directory\n * @return {String}\n */\nexports.resolveInclude = function(name, filename, isDir) {\n  var dirname = path.dirname;\n  var extname = path.extname;\n  var resolve = path.resolve;\n  var includePath = resolve(isDir ? filename : dirname(filename), name);\n  var ext = extname(name);\n  if (!ext) {\n    includePath += '.ejs';\n  }\n  return includePath;\n};\n\n/**\n * Try to resolve file path on multiple directories\n *\n * @param  {String}        name  specified path\n * @param  {Array<String>} paths list of possible parent directory paths\n * @return {String}\n */\nfunction resolvePaths(name, paths) {\n  var filePath;\n  if (paths.some(function (v) {\n    filePath = exports.resolveInclude(name, v, true);\n    return fs.existsSync(filePath);\n  })) {\n    return filePath;\n  }\n}\n\n/**\n * Get the path to the included file by Options\n *\n * @param  {String}  path    specified path\n * @param  {Options} options compilation options\n * @return {String}\n */\nfunction getIncludePath(path, options) {\n  var includePath;\n  var filePath;\n  var views = options.views;\n  var match = /^[A-Za-z]+:\\\\|^\\//.exec(path);\n\n  // Abs path\n  if (match && match.length) {\n    path = path.replace(/^\\/*/, '');\n    if (Array.isArray(options.root)) {\n      includePath = resolvePaths(path, options.root);\n    } else {\n      includePath = exports.resolveInclude(path, options.root || '/', true);\n    }\n  }\n  // Relative paths\n  else {\n    // Look relative to a passed filename first\n    if (options.filename) {\n      filePath = exports.resolveInclude(path, options.filename);\n      if (fs.existsSync(filePath)) {\n        includePath = filePath;\n      }\n    }\n    // Then look in any views directories\n    if (!includePath && Array.isArray(views)) {\n      includePath = resolvePaths(path, views);\n    }\n    if (!includePath && typeof options.includer !== 'function') {\n      throw new Error('Could not find the include file \"' +\n          options.escapeFunction(path) + '\"');\n    }\n  }\n  return includePath;\n}\n\n/**\n * Get the template from a string or a file, either compiled on-the-fly or\n * read from cache (if enabled), and cache the template if needed.\n *\n * If `template` is not set, the file specified in `options.filename` will be\n * read.\n *\n * If `options.cache` is true, this function reads the file from\n * `options.filename` so it must be set prior to calling this function.\n *\n * @memberof module:ejs-internal\n * @param {Options} options   compilation options\n * @param {String} [template] template source\n * @return {(TemplateFunction|ClientFunction)}\n * Depending on the value of `options.client`, either type might be returned.\n * @static\n */\n\nfunction handleCache(options, template) {\n  var func;\n  var filename = options.filename;\n  var hasTemplate = arguments.length > 1;\n\n  if (options.cache) {\n    if (!filename) {\n      throw new Error('cache option requires a filename');\n    }\n    func = exports.cache.get(filename);\n    if (func) {\n      return func;\n    }\n    if (!hasTemplate) {\n      template = fileLoader(filename).toString().replace(_BOM, '');\n    }\n  }\n  else if (!hasTemplate) {\n    // istanbul ignore if: should not happen at all\n    if (!filename) {\n      throw new Error('Internal EJS error: no file name or template '\n                    + 'provided');\n    }\n    template = fileLoader(filename).toString().replace(_BOM, '');\n  }\n  func = exports.compile(template, options);\n  if (options.cache) {\n    exports.cache.set(filename, func);\n  }\n  return func;\n}\n\n/**\n * Try calling handleCache with the given options and data and call the\n * callback with the result. If an error occurs, call the callback with\n * the error. Used by renderFile().\n *\n * @memberof module:ejs-internal\n * @param {Options} options    compilation options\n * @param {Object} data        template data\n * @param {RenderFileCallback} cb callback\n * @static\n */\n\nfunction tryHandleCache(options, data, cb) {\n  var result;\n  if (!cb) {\n    if (typeof exports.promiseImpl == 'function') {\n      return new exports.promiseImpl(function (resolve, reject) {\n        try {\n          result = handleCache(options)(data);\n          resolve(result);\n        }\n        catch (err) {\n          reject(err);\n        }\n      });\n    }\n    else {\n      throw new Error('Please provide a callback function');\n    }\n  }\n  else {\n    try {\n      result = handleCache(options)(data);\n    }\n    catch (err) {\n      return cb(err);\n    }\n\n    cb(null, result);\n  }\n}\n\n/**\n * fileLoader is independent\n *\n * @param {String} filePath ejs file path.\n * @return {String} The contents of the specified file.\n * @static\n */\n\nfunction fileLoader(filePath){\n  return exports.fileLoader(filePath);\n}\n\n/**\n * Get the template function.\n *\n * If `options.cache` is `true`, then the template is cached.\n *\n * @memberof module:ejs-internal\n * @param {String}  path    path for the specified file\n * @param {Options} options compilation options\n * @return {(TemplateFunction|ClientFunction)}\n * Depending on the value of `options.client`, either type might be returned\n * @static\n */\n\nfunction includeFile(path, options) {\n  var opts = utils.shallowCopy(utils.createNullProtoObjWherePossible(), options);\n  opts.filename = getIncludePath(path, opts);\n  if (typeof options.includer === 'function') {\n    var includerResult = options.includer(path, opts.filename);\n    if (includerResult) {\n      if (includerResult.filename) {\n        opts.filename = includerResult.filename;\n      }\n      if (includerResult.template) {\n        return handleCache(opts, includerResult.template);\n      }\n    }\n  }\n  return handleCache(opts);\n}\n\n/**\n * Re-throw the given `err` in context to the `str` of ejs, `filename`, and\n * `lineno`.\n *\n * @implements {RethrowCallback}\n * @memberof module:ejs-internal\n * @param {Error}  err      Error object\n * @param {String} str      EJS source\n * @param {String} flnm     file name of the EJS file\n * @param {Number} lineno   line number of the error\n * @param {EscapeCallback} esc\n * @static\n */\n\nfunction rethrow(err, str, flnm, lineno, esc) {\n  var lines = str.split('\\n');\n  var start = Math.max(lineno - 3, 0);\n  var end = Math.min(lines.length, lineno + 3);\n  var filename = esc(flnm);\n  // Error context\n  var context = lines.slice(start, end).map(function (line, i){\n    var curr = i + start + 1;\n    return (curr == lineno ? ' >> ' : '    ')\n      + curr\n      + '| '\n      + line;\n  }).join('\\n');\n\n  // Alter exception message\n  err.path = filename;\n  err.message = (filename || 'ejs') + ':'\n    + lineno + '\\n'\n    + context + '\\n\\n'\n    + err.message;\n\n  throw err;\n}\n\nfunction stripSemi(str){\n  return str.replace(/;(\\s*$)/, '$1');\n}\n\n/**\n * Compile the given `str` of ejs into a template function.\n *\n * @param {String}  template EJS template\n *\n * @param {Options} [opts] compilation options\n *\n * @return {(TemplateFunction|ClientFunction)}\n * Depending on the value of `opts.client`, either type might be returned.\n * Note that the return type of the function also depends on the value of `opts.async`.\n * @public\n */\n\nexports.compile = function compile(template, opts) {\n  var templ;\n\n  // v1 compat\n  // 'scope' is 'context'\n  // FIXME: Remove this in a future version\n  if (opts && opts.scope) {\n    if (!scopeOptionWarned){\n      console.warn('`scope` option is deprecated and will be removed in EJS 3');\n      scopeOptionWarned = true;\n    }\n    if (!opts.context) {\n      opts.context = opts.scope;\n    }\n    delete opts.scope;\n  }\n  templ = new Template(template, opts);\n  return templ.compile();\n};\n\n/**\n * Render the given `template` of ejs.\n *\n * If you would like to include options but not data, you need to explicitly\n * call this function with `data` being an empty object or `null`.\n *\n * @param {String}   template EJS template\n * @param {Object}  [data={}] template data\n * @param {Options} [opts={}] compilation and rendering options\n * @return {(String|Promise<String>)}\n * Return value type depends on `opts.async`.\n * @public\n */\n\nexports.render = function (template, d, o) {\n  var data = d || utils.createNullProtoObjWherePossible();\n  var opts = o || utils.createNullProtoObjWherePossible();\n\n  // No options object -- if there are optiony names\n  // in the data, copy them to options\n  if (arguments.length == 2) {\n    utils.shallowCopyFromList(opts, data, _OPTS_PASSABLE_WITH_DATA);\n  }\n\n  return handleCache(opts, template)(data);\n};\n\n/**\n * Render an EJS file at the given `path` and callback `cb(err, str)`.\n *\n * If you would like to include options but not data, you need to explicitly\n * call this function with `data` being an empty object or `null`.\n *\n * @param {String}             path     path to the EJS file\n * @param {Object}            [data={}] template data\n * @param {Options}           [opts={}] compilation and rendering options\n * @param {RenderFileCallback} cb callback\n * @public\n */\n\nexports.renderFile = function () {\n  var args = Array.prototype.slice.call(arguments);\n  var filename = args.shift();\n  var cb;\n  var opts = {filename: filename};\n  var data;\n  var viewOpts;\n\n  // Do we have a callback?\n  if (typeof arguments[arguments.length - 1] == 'function') {\n    cb = args.pop();\n  }\n  // Do we have data/opts?\n  if (args.length) {\n    // Should always have data obj\n    data = args.shift();\n    // Normal passed opts (data obj + opts obj)\n    if (args.length) {\n      // Use shallowCopy so we don't pollute passed in opts obj with new vals\n      utils.shallowCopy(opts, args.pop());\n    }\n    // Special casing for Express (settings + opts-in-data)\n    else {\n      // Express 3 and 4\n      if (data.settings) {\n        // Pull a few things from known locations\n        if (data.settings.views) {\n          opts.views = data.settings.views;\n        }\n        if (data.settings['view cache']) {\n          opts.cache = true;\n        }\n        // Undocumented after Express 2, but still usable, esp. for\n        // items that are unsafe to be passed along with data, like `root`\n        viewOpts = data.settings['view options'];\n        if (viewOpts) {\n          utils.shallowCopy(opts, viewOpts);\n        }\n      }\n      // Express 2 and lower, values set in app.locals, or people who just\n      // want to pass options in their data. NOTE: These values will override\n      // anything previously set in settings  or settings['view options']\n      utils.shallowCopyFromList(opts, data, _OPTS_PASSABLE_WITH_DATA_EXPRESS);\n    }\n    opts.filename = filename;\n  }\n  else {\n    data = utils.createNullProtoObjWherePossible();\n  }\n\n  return tryHandleCache(opts, data, cb);\n};\n\n/**\n * Clear intermediate JavaScript cache. Calls {@link Cache#reset}.\n * @public\n */\n\n/**\n * EJS template class\n * @public\n */\nexports.Template = Template;\n\nexports.clearCache = function () {\n  exports.cache.reset();\n};\n\nfunction Template(text, opts) {\n  opts = opts || utils.createNullProtoObjWherePossible();\n  var options = utils.createNullProtoObjWherePossible();\n  this.templateText = text;\n  /** @type {string | null} */\n  this.mode = null;\n  this.truncate = false;\n  this.currentLine = 1;\n  this.source = '';\n  options.client = opts.client || false;\n  options.escapeFunction = opts.escape || opts.escapeFunction || utils.escapeXML;\n  options.compileDebug = opts.compileDebug !== false;\n  options.debug = !!opts.debug;\n  options.filename = opts.filename;\n  options.openDelimiter = opts.openDelimiter || exports.openDelimiter || _DEFAULT_OPEN_DELIMITER;\n  options.closeDelimiter = opts.closeDelimiter || exports.closeDelimiter || _DEFAULT_CLOSE_DELIMITER;\n  options.delimiter = opts.delimiter || exports.delimiter || _DEFAULT_DELIMITER;\n  options.strict = opts.strict || false;\n  options.context = opts.context;\n  options.cache = opts.cache || false;\n  options.rmWhitespace = opts.rmWhitespace;\n  options.root = opts.root;\n  options.includer = opts.includer;\n  options.outputFunctionName = opts.outputFunctionName;\n  options.localsName = opts.localsName || exports.localsName || _DEFAULT_LOCALS_NAME;\n  options.views = opts.views;\n  options.async = opts.async;\n  options.destructuredLocals = opts.destructuredLocals;\n  options.legacyInclude = typeof opts.legacyInclude != 'undefined' ? !!opts.legacyInclude : true;\n\n  if (options.strict) {\n    options._with = false;\n  }\n  else {\n    options._with = typeof opts._with != 'undefined' ? opts._with : true;\n  }\n\n  this.opts = options;\n\n  this.regex = this.createRegex();\n}\n\nTemplate.modes = {\n  EVAL: 'eval',\n  ESCAPED: 'escaped',\n  RAW: 'raw',\n  COMMENT: 'comment',\n  LITERAL: 'literal'\n};\n\nTemplate.prototype = {\n  createRegex: function () {\n    var str = _REGEX_STRING;\n    var delim = utils.escapeRegExpChars(this.opts.delimiter);\n    var open = utils.escapeRegExpChars(this.opts.openDelimiter);\n    var close = utils.escapeRegExpChars(this.opts.closeDelimiter);\n    str = str.replace(/%/g, delim)\n      .replace(/</g, open)\n      .replace(/>/g, close);\n    return new RegExp(str);\n  },\n\n  compile: function () {\n    /** @type {string} */\n    var src;\n    /** @type {ClientFunction} */\n    var fn;\n    var opts = this.opts;\n    var prepended = '';\n    var appended = '';\n    /** @type {EscapeCallback} */\n    var escapeFn = opts.escapeFunction;\n    /** @type {FunctionConstructor} */\n    var ctor;\n    /** @type {string} */\n    var sanitizedFilename = opts.filename ? JSON.stringify(opts.filename) : 'undefined';\n\n    if (!this.source) {\n      this.generateSource();\n      prepended +=\n        '  var __output = \"\";\\n' +\n        '  function __append(s) { if (s !== undefined && s !== null) __output += s }\\n';\n      if (opts.outputFunctionName) {\n        if (!_JS_IDENTIFIER.test(opts.outputFunctionName)) {\n          throw new Error('outputFunctionName is not a valid JS identifier.');\n        }\n        prepended += '  var ' + opts.outputFunctionName + ' = __append;' + '\\n';\n      }\n      if (opts.localsName && !_JS_IDENTIFIER.test(opts.localsName)) {\n        throw new Error('localsName is not a valid JS identifier.');\n      }\n      if (opts.destructuredLocals && opts.destructuredLocals.length) {\n        var destructuring = '  var __locals = (' + opts.localsName + ' || {}),\\n';\n        for (var i = 0; i < opts.destructuredLocals.length; i++) {\n          var name = opts.destructuredLocals[i];\n          if (!_JS_IDENTIFIER.test(name)) {\n            throw new Error('destructuredLocals[' + i + '] is not a valid JS identifier.');\n          }\n          if (i > 0) {\n            destructuring += ',\\n  ';\n          }\n          destructuring += name + ' = __locals.' + name;\n        }\n        prepended += destructuring + ';\\n';\n      }\n      if (opts._with !== false) {\n        prepended +=  '  with (' + opts.localsName + ' || {}) {' + '\\n';\n        appended += '  }' + '\\n';\n      }\n      appended += '  return __output;' + '\\n';\n      this.source = prepended + this.source + appended;\n    }\n\n    if (opts.compileDebug) {\n      src = 'var __line = 1' + '\\n'\n        + '  , __lines = ' + JSON.stringify(this.templateText) + '\\n'\n        + '  , __filename = ' + sanitizedFilename + ';' + '\\n'\n        + 'try {' + '\\n'\n        + this.source\n        + '} catch (e) {' + '\\n'\n        + '  rethrow(e, __lines, __filename, __line, escapeFn);' + '\\n'\n        + '}' + '\\n';\n    }\n    else {\n      src = this.source;\n    }\n\n    if (opts.client) {\n      src = 'escapeFn = escapeFn || ' + escapeFn.toString() + ';' + '\\n' + src;\n      if (opts.compileDebug) {\n        src = 'rethrow = rethrow || ' + rethrow.toString() + ';' + '\\n' + src;\n      }\n    }\n\n    if (opts.strict) {\n      src = '\"use strict\";\\n' + src;\n    }\n    if (opts.debug) {\n      console.log(src);\n    }\n    if (opts.compileDebug && opts.filename) {\n      src = src + '\\n'\n        + '//# sourceURL=' + sanitizedFilename + '\\n';\n    }\n\n    try {\n      if (opts.async) {\n        // Have to use generated function for this, since in envs without support,\n        // it breaks in parsing\n        try {\n          ctor = (new Function('return (async function(){}).constructor;'))();\n        }\n        catch(e) {\n          if (e instanceof SyntaxError) {\n            throw new Error('This environment does not support async/await');\n          }\n          else {\n            throw e;\n          }\n        }\n      }\n      else {\n        ctor = Function;\n      }\n      fn = new ctor(opts.localsName + ', escapeFn, include, rethrow', src);\n    }\n    catch(e) {\n      // istanbul ignore else\n      if (e instanceof SyntaxError) {\n        if (opts.filename) {\n          e.message += ' in ' + opts.filename;\n        }\n        e.message += ' while compiling ejs\\n\\n';\n        e.message += 'If the above error is not helpful, you may want to try EJS-Lint:\\n';\n        e.message += 'https://github.com/RyanZim/EJS-Lint';\n        if (!opts.async) {\n          e.message += '\\n';\n          e.message += 'Or, if you meant to create an async function, pass `async: true` as an option.';\n        }\n      }\n      throw e;\n    }\n\n    // Return a callable function which will execute the function\n    // created by the source-code, with the passed data as locals\n    // Adds a local `include` function which allows full recursive include\n    var returnedFn = opts.client ? fn : function anonymous(data) {\n      var include = function (path, includeData) {\n        var d = utils.shallowCopy(utils.createNullProtoObjWherePossible(), data);\n        if (includeData) {\n          d = utils.shallowCopy(d, includeData);\n        }\n        return includeFile(path, opts)(d);\n      };\n      return fn.apply(opts.context,\n        [data || utils.createNullProtoObjWherePossible(), escapeFn, include, rethrow]);\n    };\n    if (opts.filename && typeof Object.defineProperty === 'function') {\n      var filename = opts.filename;\n      var basename = path.basename(filename, path.extname(filename));\n      try {\n        Object.defineProperty(returnedFn, 'name', {\n          value: basename,\n          writable: false,\n          enumerable: false,\n          configurable: true\n        });\n      } catch (e) {/* ignore */}\n    }\n    return returnedFn;\n  },\n\n  generateSource: function () {\n    var opts = this.opts;\n\n    if (opts.rmWhitespace) {\n      // Have to use two separate replace here as `^` and `$` operators don't\n      // work well with `\\r` and empty lines don't work well with the `m` flag.\n      this.templateText =\n        this.templateText.replace(/[\\r\\n]+/g, '\\n').replace(/^\\s+|\\s+$/gm, '');\n    }\n\n    // Slurp spaces and tabs before <%_ and after _%>\n    this.templateText =\n      this.templateText.replace(/[ \\t]*<%_/gm, '<%_').replace(/_%>[ \\t]*/gm, '_%>');\n\n    var self = this;\n    var matches = this.parseTemplateText();\n    var d = this.opts.delimiter;\n    var o = this.opts.openDelimiter;\n    var c = this.opts.closeDelimiter;\n\n    if (matches && matches.length) {\n      matches.forEach(function (line, index) {\n        var closing;\n        // If this is an opening tag, check for closing tags\n        // FIXME: May end up with some false positives here\n        // Better to store modes as k/v with openDelimiter + delimiter as key\n        // Then this can simply check against the map\n        if ( line.indexOf(o + d) === 0        // If it is a tag\n          && line.indexOf(o + d + d) !== 0) { // and is not escaped\n          closing = matches[index + 2];\n          if (!(closing == d + c || closing == '-' + d + c || closing == '_' + d + c)) {\n            throw new Error('Could not find matching close tag for \"' + line + '\".');\n          }\n        }\n        self.scanLine(line);\n      });\n    }\n\n  },\n\n  parseTemplateText: function () {\n    var str = this.templateText;\n    var pat = this.regex;\n    var result = pat.exec(str);\n    var arr = [];\n    var firstPos;\n\n    while (result) {\n      firstPos = result.index;\n\n      if (firstPos !== 0) {\n        arr.push(str.substring(0, firstPos));\n        str = str.slice(firstPos);\n      }\n\n      arr.push(result[0]);\n      str = str.slice(result[0].length);\n      result = pat.exec(str);\n    }\n\n    if (str) {\n      arr.push(str);\n    }\n\n    return arr;\n  },\n\n  _addOutput: function (line) {\n    if (this.truncate) {\n      // Only replace single leading linebreak in the line after\n      // -%> tag -- this is the single, trailing linebreak\n      // after the tag that the truncation mode replaces\n      // Handle Win / Unix / old Mac linebreaks -- do the \\r\\n\n      // combo first in the regex-or\n      line = line.replace(/^(?:\\r\\n|\\r|\\n)/, '');\n      this.truncate = false;\n    }\n    if (!line) {\n      return line;\n    }\n\n    // Preserve literal slashes\n    line = line.replace(/\\\\/g, '\\\\\\\\');\n\n    // Convert linebreaks\n    line = line.replace(/\\n/g, '\\\\n');\n    line = line.replace(/\\r/g, '\\\\r');\n\n    // Escape double-quotes\n    // - this will be the delimiter during execution\n    line = line.replace(/\"/g, '\\\\\"');\n    this.source += '    ; __append(\"' + line + '\")' + '\\n';\n  },\n\n  scanLine: function (line) {\n    var self = this;\n    var d = this.opts.delimiter;\n    var o = this.opts.openDelimiter;\n    var c = this.opts.closeDelimiter;\n    var newLineCount = 0;\n\n    newLineCount = (line.split('\\n').length - 1);\n\n    switch (line) {\n    case o + d:\n    case o + d + '_':\n      this.mode = Template.modes.EVAL;\n      break;\n    case o + d + '=':\n      this.mode = Template.modes.ESCAPED;\n      break;\n    case o + d + '-':\n      this.mode = Template.modes.RAW;\n      break;\n    case o + d + '#':\n      this.mode = Template.modes.COMMENT;\n      break;\n    case o + d + d:\n      this.mode = Template.modes.LITERAL;\n      this.source += '    ; __append(\"' + line.replace(o + d + d, o + d) + '\")' + '\\n';\n      break;\n    case d + d + c:\n      this.mode = Template.modes.LITERAL;\n      this.source += '    ; __append(\"' + line.replace(d + d + c, d + c) + '\")' + '\\n';\n      break;\n    case d + c:\n    case '-' + d + c:\n    case '_' + d + c:\n      if (this.mode == Template.modes.LITERAL) {\n        this._addOutput(line);\n      }\n\n      this.mode = null;\n      this.truncate = line.indexOf('-') === 0 || line.indexOf('_') === 0;\n      break;\n    default:\n      // In script mode, depends on type of tag\n      if (this.mode) {\n        // If '//' is found without a line break, add a line break.\n        switch (this.mode) {\n        case Template.modes.EVAL:\n        case Template.modes.ESCAPED:\n        case Template.modes.RAW:\n          if (line.lastIndexOf('//') > line.lastIndexOf('\\n')) {\n            line += '\\n';\n          }\n        }\n        switch (this.mode) {\n        // Just executing code\n        case Template.modes.EVAL:\n          this.source += '    ; ' + line + '\\n';\n          break;\n          // Exec, esc, and output\n        case Template.modes.ESCAPED:\n          this.source += '    ; __append(escapeFn(' + stripSemi(line) + '))' + '\\n';\n          break;\n          // Exec and output\n        case Template.modes.RAW:\n          this.source += '    ; __append(' + stripSemi(line) + ')' + '\\n';\n          break;\n        case Template.modes.COMMENT:\n          // Do nothing\n          break;\n          // Literal <%% mode, append as raw output\n        case Template.modes.LITERAL:\n          this._addOutput(line);\n          break;\n        }\n      }\n      // In string mode, just add the output\n      else {\n        this._addOutput(line);\n      }\n    }\n\n    if (self.opts.compileDebug && newLineCount) {\n      this.currentLine += newLineCount;\n      this.source += '    ; __line = ' + this.currentLine + '\\n';\n    }\n  }\n};\n\n/**\n * Escape characters reserved in XML.\n *\n * This is simply an export of {@link module:utils.escapeXML}.\n *\n * If `markup` is `undefined` or `null`, the empty string is returned.\n *\n * @param {String} markup Input string\n * @return {String} Escaped string\n * @public\n * @func\n * */\nexports.escapeXML = utils.escapeXML;\n\n/**\n * Express.js support.\n *\n * This is an alias for {@link module:ejs.renderFile}, in order to support\n * Express.js out-of-the-box.\n *\n * @func\n */\n\nexports.__express = exports.renderFile;\n\n/**\n * Version of EJS.\n *\n * @readonly\n * @type {String}\n * @public\n */\n\nexports.VERSION = _VERSION_STRING;\n\n/**\n * Name for detection of EJS.\n *\n * @readonly\n * @type {String}\n * @public\n */\n\nexports.name = _NAME;\n\n/* istanbul ignore if */\nif (typeof window != 'undefined') {\n  window.ejs = exports;\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ejs/lib/ejs.js?")},"./node_modules/ejs/lib/utils.js":
/*!***************************************!*\
  !*** ./node_modules/ejs/lib/utils.js ***!
  \***************************************/(__unused_webpack_module,exports)=>{"use strict";eval("/*\n * EJS Embedded JavaScript templates\n * Copyright 2112 Matthew Eernisse (mde@fleegix.org)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *         http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n*/\n\n/**\n * Private utility functions\n * @module utils\n * @private\n */\n\n\n\nvar regExpChars = /[|\\\\{}()[\\]^$+*?.]/g;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar hasOwn = function (obj, key) { return hasOwnProperty.apply(obj, [key]); };\n\n/**\n * Escape characters reserved in regular expressions.\n *\n * If `string` is `undefined` or `null`, the empty string is returned.\n *\n * @param {String} string Input string\n * @return {String} Escaped string\n * @static\n * @private\n */\nexports.escapeRegExpChars = function (string) {\n  // istanbul ignore if\n  if (!string) {\n    return '';\n  }\n  return String(string).replace(regExpChars, '\\\\$&');\n};\n\nvar _ENCODE_HTML_RULES = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&#34;',\n  \"'\": '&#39;'\n};\nvar _MATCH_HTML = /[&<>'\"]/g;\n\nfunction encode_char(c) {\n  return _ENCODE_HTML_RULES[c] || c;\n}\n\n/**\n * Stringified version of constants used by {@link module:utils.escapeXML}.\n *\n * It is used in the process of generating {@link ClientFunction}s.\n *\n * @readonly\n * @type {String}\n */\n\nvar escapeFuncStr =\n  'var _ENCODE_HTML_RULES = {\\n'\n+ '      \"&\": \"&amp;\"\\n'\n+ '    , \"<\": \"&lt;\"\\n'\n+ '    , \">\": \"&gt;\"\\n'\n+ '    , \\'\"\\': \"&#34;\"\\n'\n+ '    , \"\\'\": \"&#39;\"\\n'\n+ '    }\\n'\n+ '  , _MATCH_HTML = /[&<>\\'\"]/g;\\n'\n+ 'function encode_char(c) {\\n'\n+ '  return _ENCODE_HTML_RULES[c] || c;\\n'\n+ '};\\n';\n\n/**\n * Escape characters reserved in XML.\n *\n * If `markup` is `undefined` or `null`, the empty string is returned.\n *\n * @implements {EscapeCallback}\n * @param {String} markup Input string\n * @return {String} Escaped string\n * @static\n * @private\n */\n\nexports.escapeXML = function (markup) {\n  return markup == undefined\n    ? ''\n    : String(markup)\n      .replace(_MATCH_HTML, encode_char);\n};\nexports.escapeXML.toString = function () {\n  return Function.prototype.toString.call(this) + ';\\n' + escapeFuncStr;\n};\n\n/**\n * Naive copy of properties from one object to another.\n * Does not recurse into non-scalar properties\n * Does not check to see if the property has a value before copying\n *\n * @param  {Object} to   Destination object\n * @param  {Object} from Source object\n * @return {Object}      Destination object\n * @static\n * @private\n */\nexports.shallowCopy = function (to, from) {\n  from = from || {};\n  if ((to !== null) && (to !== undefined)) {\n    for (var p in from) {\n      if (!hasOwn(from, p)) {\n        continue;\n      }\n      if (p === '__proto__' || p === 'constructor') {\n        continue;\n      }\n      to[p] = from[p];\n    }\n  }\n  return to;\n};\n\n/**\n * Naive copy of a list of key names, from one object to another.\n * Only copies property if it is actually defined\n * Does not recurse into non-scalar properties\n *\n * @param  {Object} to   Destination object\n * @param  {Object} from Source object\n * @param  {Array} list List of properties to copy\n * @return {Object}      Destination object\n * @static\n * @private\n */\nexports.shallowCopyFromList = function (to, from, list) {\n  list = list || [];\n  from = from || {};\n  if ((to !== null) && (to !== undefined)) {\n    for (var i = 0; i < list.length; i++) {\n      var p = list[i];\n      if (typeof from[p] != 'undefined') {\n        if (!hasOwn(from, p)) {\n          continue;\n        }\n        if (p === '__proto__' || p === 'constructor') {\n          continue;\n        }\n        to[p] = from[p];\n      }\n    }\n  }\n  return to;\n};\n\n/**\n * Simple in-process cache implementation. Does not implement limits of any\n * sort.\n *\n * @implements {Cache}\n * @static\n * @private\n */\nexports.cache = {\n  _data: {},\n  set: function (key, val) {\n    this._data[key] = val;\n  },\n  get: function (key) {\n    return this._data[key];\n  },\n  remove: function (key) {\n    delete this._data[key];\n  },\n  reset: function () {\n    this._data = {};\n  }\n};\n\n/**\n * Transforms hyphen case variable into camel case.\n *\n * @param {String} string Hyphen case string\n * @return {String} Camel case string\n * @static\n * @private\n */\nexports.hyphenToCamel = function (str) {\n  return str.replace(/-[a-z]/g, function (match) { return match[1].toUpperCase(); });\n};\n\n/**\n * Returns a null-prototype object in runtimes that support it\n *\n * @return {Object} Object, prototype will be set to null where possible\n * @static\n * @private\n */\nexports.createNullProtoObjWherePossible = (function () {\n  if (typeof Object.create == 'function') {\n    return function () {\n      return Object.create(null);\n    };\n  }\n  if (!({__proto__: null} instanceof Object)) {\n    return function () {\n      return {__proto__: null};\n    };\n  }\n  // Not possible, just pass through\n  return function () {\n    return {};\n  };\n})();\n\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ejs/lib/utils.js?")},"./node_modules/encodeurl/index.js":
/*!*****************************************!*\
  !*** ./node_modules/encodeurl/index.js ***!
  \*****************************************/module=>{"use strict";eval('/*!\n * encodeurl\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = encodeUrl\n\n/**\n * RegExp to match non-URL code points, *after* encoding (i.e. not including "%")\n * and including invalid escape sequences.\n * @private\n */\n\nvar ENCODE_CHARS_REGEXP = /(?:[^\\x21\\x25\\x26-\\x3B\\x3D\\x3F-\\x5B\\x5D\\x5F\\x61-\\x7A\\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g\n\n/**\n * RegExp to match unmatched surrogate pair.\n * @private\n */\n\nvar UNMATCHED_SURROGATE_PAIR_REGEXP = /(^|[^\\uD800-\\uDBFF])[\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF]([^\\uDC00-\\uDFFF]|$)/g\n\n/**\n * String to replace unmatched surrogate pair with.\n * @private\n */\n\nvar UNMATCHED_SURROGATE_PAIR_REPLACE = \'$1\\uFFFD$2\'\n\n/**\n * Encode a URL to a percent-encoded form, excluding already-encoded sequences.\n *\n * This function will take an already-encoded URL and encode all the non-URL\n * code points. This function will not encode the "%" character unless it is\n * not part of a valid sequence (`%20` will be left as-is, but `%foo` will\n * be encoded as `%25foo`).\n *\n * This encode is meant to be "safe" and does not throw errors. It will try as\n * hard as it can to properly encode the given URL, including replacing any raw,\n * unpaired surrogate pairs with the Unicode replacement character prior to\n * encoding.\n *\n * @param {string} url\n * @return {string}\n * @public\n */\n\nfunction encodeUrl (url) {\n  return String(url)\n    .replace(UNMATCHED_SURROGATE_PAIR_REGEXP, UNMATCHED_SURROGATE_PAIR_REPLACE)\n    .replace(ENCODE_CHARS_REGEXP, encodeURI)\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/encodeurl/index.js?')},"./node_modules/encoding/lib/encoding.js":
/*!***********************************************!*\
  !*** ./node_modules/encoding/lib/encoding.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar iconvLite = __webpack_require__(/*! iconv-lite */ \"./node_modules/iconv-lite/lib/index.js\");\n\n// Expose to the world\nmodule.exports.convert = convert;\n\n/**\n * Convert encoding of an UTF-8 string or a buffer\n *\n * @param {String|Buffer} str String to be converted\n * @param {String} to Encoding to be converted to\n * @param {String} [from='UTF-8'] Encoding to be converted from\n * @return {Buffer} Encoded string\n */\nfunction convert(str, to, from) {\n    from = checkEncoding(from || 'UTF-8');\n    to = checkEncoding(to || 'UTF-8');\n    str = str || '';\n\n    var result;\n\n    if (from !== 'UTF-8' && typeof str === 'string') {\n        str = Buffer.from(str, 'binary');\n    }\n\n    if (from === to) {\n        if (typeof str === 'string') {\n            result = Buffer.from(str);\n        } else {\n            result = str;\n        }\n    } else {\n        try {\n            result = convertIconvLite(str, to, from);\n        } catch (E) {\n            console.error(E);\n            result = str;\n        }\n    }\n\n    if (typeof result === 'string') {\n        result = Buffer.from(result, 'utf-8');\n    }\n\n    return result;\n}\n\n/**\n * Convert encoding of astring with iconv-lite\n *\n * @param {String|Buffer} str String to be converted\n * @param {String} to Encoding to be converted to\n * @param {String} [from='UTF-8'] Encoding to be converted from\n * @return {Buffer} Encoded string\n */\nfunction convertIconvLite(str, to, from) {\n    if (to === 'UTF-8') {\n        return iconvLite.decode(str, from);\n    } else if (from === 'UTF-8') {\n        return iconvLite.encode(str, to);\n    } else {\n        return iconvLite.encode(iconvLite.decode(str, from), to);\n    }\n}\n\n/**\n * Converts charset name if needed\n *\n * @param {String} name Character set\n * @return {String} Character set name\n */\nfunction checkEncoding(name) {\n    return (name || '')\n        .toString()\n        .trim()\n        .replace(/^latin[\\-_]?(\\d+)$/i, 'ISO-8859-$1')\n        .replace(/^win(?:dows)?[\\-_]?(\\d+)$/i, 'WINDOWS-$1')\n        .replace(/^utf[\\-_]?(\\d+)$/i, 'UTF-$1')\n        .replace(/^ks_c_5601\\-1987$/i, 'CP949')\n        .replace(/^us[\\-_]?ascii$/i, 'ASCII')\n        .toUpperCase();\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/encoding/lib/encoding.js?")},"./node_modules/end-of-stream/index.js":
/*!*********************************************!*\
  !*** ./node_modules/end-of-stream/index.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var once = __webpack_require__(/*! once */ \"./node_modules/once/once.js\");\n\nvar noop = function() {};\n\nvar isRequest = function(stream) {\n\treturn stream.setHeader && typeof stream.abort === 'function';\n};\n\nvar isChildProcess = function(stream) {\n\treturn stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3\n};\n\nvar eos = function(stream, opts, callback) {\n\tif (typeof opts === 'function') return eos(stream, null, opts);\n\tif (!opts) opts = {};\n\n\tcallback = once(callback || noop);\n\n\tvar ws = stream._writableState;\n\tvar rs = stream._readableState;\n\tvar readable = opts.readable || (opts.readable !== false && stream.readable);\n\tvar writable = opts.writable || (opts.writable !== false && stream.writable);\n\tvar cancelled = false;\n\n\tvar onlegacyfinish = function() {\n\t\tif (!stream.writable) onfinish();\n\t};\n\n\tvar onfinish = function() {\n\t\twritable = false;\n\t\tif (!readable) callback.call(stream);\n\t};\n\n\tvar onend = function() {\n\t\treadable = false;\n\t\tif (!writable) callback.call(stream);\n\t};\n\n\tvar onexit = function(exitCode) {\n\t\tcallback.call(stream, exitCode ? new Error('exited with error code: ' + exitCode) : null);\n\t};\n\n\tvar onerror = function(err) {\n\t\tcallback.call(stream, err);\n\t};\n\n\tvar onclose = function() {\n\t\tprocess.nextTick(onclosenexttick);\n\t};\n\n\tvar onclosenexttick = function() {\n\t\tif (cancelled) return;\n\t\tif (readable && !(rs && (rs.ended && !rs.destroyed))) return callback.call(stream, new Error('premature close'));\n\t\tif (writable && !(ws && (ws.ended && !ws.destroyed))) return callback.call(stream, new Error('premature close'));\n\t};\n\n\tvar onrequest = function() {\n\t\tstream.req.on('finish', onfinish);\n\t};\n\n\tif (isRequest(stream)) {\n\t\tstream.on('complete', onfinish);\n\t\tstream.on('abort', onclose);\n\t\tif (stream.req) onrequest();\n\t\telse stream.on('request', onrequest);\n\t} else if (writable && !ws) { // legacy streams\n\t\tstream.on('end', onlegacyfinish);\n\t\tstream.on('close', onlegacyfinish);\n\t}\n\n\tif (isChildProcess(stream)) stream.on('exit', onexit);\n\n\tstream.on('end', onend);\n\tstream.on('finish', onfinish);\n\tif (opts.error !== false) stream.on('error', onerror);\n\tstream.on('close', onclose);\n\n\treturn function() {\n\t\tcancelled = true;\n\t\tstream.removeListener('complete', onfinish);\n\t\tstream.removeListener('abort', onclose);\n\t\tstream.removeListener('request', onrequest);\n\t\tif (stream.req) stream.req.removeListener('finish', onfinish);\n\t\tstream.removeListener('end', onlegacyfinish);\n\t\tstream.removeListener('close', onlegacyfinish);\n\t\tstream.removeListener('finish', onfinish);\n\t\tstream.removeListener('exit', onexit);\n\t\tstream.removeListener('end', onend);\n\t\tstream.removeListener('error', onerror);\n\t\tstream.removeListener('close', onclose);\n\t};\n};\n\nmodule.exports = eos;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/end-of-stream/index.js?")},"./node_modules/engine.io/node_modules/ws/index.js":
/*!*********************************************************!*\
  !*** ./node_modules/engine.io/node_modules/ws/index.js ***!
  \*********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst WebSocket = __webpack_require__(/*! ./lib/websocket */ "./node_modules/engine.io/node_modules/ws/lib/websocket.js");\n\nWebSocket.createWebSocketStream = __webpack_require__(/*! ./lib/stream */ "./node_modules/engine.io/node_modules/ws/lib/stream.js");\nWebSocket.Server = __webpack_require__(/*! ./lib/websocket-server */ "./node_modules/engine.io/node_modules/ws/lib/websocket-server.js");\nWebSocket.Receiver = __webpack_require__(/*! ./lib/receiver */ "./node_modules/engine.io/node_modules/ws/lib/receiver.js");\nWebSocket.Sender = __webpack_require__(/*! ./lib/sender */ "./node_modules/engine.io/node_modules/ws/lib/sender.js");\n\nWebSocket.WebSocket = WebSocket;\nWebSocket.WebSocketServer = WebSocket.Server;\n\nmodule.exports = WebSocket;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io/node_modules/ws/index.js?')},"./node_modules/engine.io/node_modules/ws/lib/buffer-util.js":
/*!*******************************************************************!*\
  !*** ./node_modules/engine.io/node_modules/ws/lib/buffer-util.js ***!
  \*******************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst { EMPTY_BUFFER } = __webpack_require__(/*! ./constants */ "./node_modules/engine.io/node_modules/ws/lib/constants.js");\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n  if (list.length === 0) return EMPTY_BUFFER;\n  if (list.length === 1) return list[0];\n\n  const target = Buffer.allocUnsafe(totalLength);\n  let offset = 0;\n\n  for (let i = 0; i < list.length; i++) {\n    const buf = list[i];\n    target.set(buf, offset);\n    offset += buf.length;\n  }\n\n  if (offset < totalLength) return target.slice(0, offset);\n\n  return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n  for (let i = 0; i < length; i++) {\n    output[offset + i] = source[i] ^ mask[i & 3];\n  }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n  for (let i = 0; i < buffer.length; i++) {\n    buffer[i] ^= mask[i & 3];\n  }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n  if (buf.byteLength === buf.buffer.byteLength) {\n    return buf.buffer;\n  }\n\n  return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n  toBuffer.readOnly = true;\n\n  if (Buffer.isBuffer(data)) return data;\n\n  let buf;\n\n  if (data instanceof ArrayBuffer) {\n    buf = Buffer.from(data);\n  } else if (ArrayBuffer.isView(data)) {\n    buf = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n  } else {\n    buf = Buffer.from(data);\n    toBuffer.readOnly = false;\n  }\n\n  return buf;\n}\n\ntry {\n  const bufferUtil = __webpack_require__(/*! bufferutil */ "./node_modules/bufferutil/index.js");\n\n  module.exports = {\n    concat,\n    mask(source, mask, output, offset, length) {\n      if (length < 48) _mask(source, mask, output, offset, length);\n      else bufferUtil.mask(source, mask, output, offset, length);\n    },\n    toArrayBuffer,\n    toBuffer,\n    unmask(buffer, mask) {\n      if (buffer.length < 32) _unmask(buffer, mask);\n      else bufferUtil.unmask(buffer, mask);\n    }\n  };\n} catch (e) /* istanbul ignore next */ {\n  module.exports = {\n    concat,\n    mask: _mask,\n    toArrayBuffer,\n    toBuffer,\n    unmask: _unmask\n  };\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io/node_modules/ws/lib/buffer-util.js?')},"./node_modules/engine.io/node_modules/ws/lib/constants.js":
/*!*****************************************************************!*\
  !*** ./node_modules/engine.io/node_modules/ws/lib/constants.js ***!
  \*****************************************************************/module=>{"use strict";eval("\n\nmodule.exports = {\n  BINARY_TYPES: ['nodebuffer', 'arraybuffer', 'fragments'],\n  EMPTY_BUFFER: Buffer.alloc(0),\n  GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n  kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),\n  kListener: Symbol('kListener'),\n  kStatusCode: Symbol('status-code'),\n  kWebSocket: Symbol('websocket'),\n  NOOP: () => {}\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io/node_modules/ws/lib/constants.js?")},"./node_modules/engine.io/node_modules/ws/lib/event-target.js":
/*!********************************************************************!*\
  !*** ./node_modules/engine.io/node_modules/ws/lib/event-target.js ***!
  \********************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { kForOnEventAttribute, kListener } = __webpack_require__(/*! ./constants */ \"./node_modules/engine.io/node_modules/ws/lib/constants.js\");\n\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n  /**\n   * Create a new `Event`.\n   *\n   * @param {String} type The name of the event\n   * @throws {TypeError} If the `type` argument is not specified\n   */\n  constructor(type) {\n    this[kTarget] = null;\n    this[kType] = type;\n  }\n\n  /**\n   * @type {*}\n   */\n  get target() {\n    return this[kTarget];\n  }\n\n  /**\n   * @type {String}\n   */\n  get type() {\n    return this[kType];\n  }\n}\n\nObject.defineProperty(Event.prototype, 'target', { enumerable: true });\nObject.defineProperty(Event.prototype, 'type', { enumerable: true });\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n  /**\n   * Create a new `CloseEvent`.\n   *\n   * @param {String} type The name of the event\n   * @param {Object} [options] A dictionary object that allows for setting\n   *     attributes via object members of the same name\n   * @param {Number} [options.code=0] The status code explaining why the\n   *     connection was closed\n   * @param {String} [options.reason=''] A human-readable string explaining why\n   *     the connection was closed\n   * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n   *     connection was cleanly closed\n   */\n  constructor(type, options = {}) {\n    super(type);\n\n    this[kCode] = options.code === undefined ? 0 : options.code;\n    this[kReason] = options.reason === undefined ? '' : options.reason;\n    this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n  }\n\n  /**\n   * @type {Number}\n   */\n  get code() {\n    return this[kCode];\n  }\n\n  /**\n   * @type {String}\n   */\n  get reason() {\n    return this[kReason];\n  }\n\n  /**\n   * @type {Boolean}\n   */\n  get wasClean() {\n    return this[kWasClean];\n  }\n}\n\nObject.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n  /**\n   * Create a new `ErrorEvent`.\n   *\n   * @param {String} type The name of the event\n   * @param {Object} [options] A dictionary object that allows for setting\n   *     attributes via object members of the same name\n   * @param {*} [options.error=null] The error that generated this event\n   * @param {String} [options.message=''] The error message\n   */\n  constructor(type, options = {}) {\n    super(type);\n\n    this[kError] = options.error === undefined ? null : options.error;\n    this[kMessage] = options.message === undefined ? '' : options.message;\n  }\n\n  /**\n   * @type {*}\n   */\n  get error() {\n    return this[kError];\n  }\n\n  /**\n   * @type {String}\n   */\n  get message() {\n    return this[kMessage];\n  }\n}\n\nObject.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });\nObject.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n  /**\n   * Create a new `MessageEvent`.\n   *\n   * @param {String} type The name of the event\n   * @param {Object} [options] A dictionary object that allows for setting\n   *     attributes via object members of the same name\n   * @param {*} [options.data=null] The message content\n   */\n  constructor(type, options = {}) {\n    super(type);\n\n    this[kData] = options.data === undefined ? null : options.data;\n  }\n\n  /**\n   * @type {*}\n   */\n  get data() {\n    return this[kData];\n  }\n}\n\nObject.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n  /**\n   * Register an event listener.\n   *\n   * @param {String} type A string representing the event type to listen for\n   * @param {Function} listener The listener to add\n   * @param {Object} [options] An options object specifies characteristics about\n   *     the event listener\n   * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n   *     listener should be invoked at most once after being added. If `true`,\n   *     the listener would be automatically removed when invoked.\n   * @public\n   */\n  addEventListener(type, listener, options = {}) {\n    let wrapper;\n\n    if (type === 'message') {\n      wrapper = function onMessage(data, isBinary) {\n        const event = new MessageEvent('message', {\n          data: isBinary ? data : data.toString()\n        });\n\n        event[kTarget] = this;\n        listener.call(this, event);\n      };\n    } else if (type === 'close') {\n      wrapper = function onClose(code, message) {\n        const event = new CloseEvent('close', {\n          code,\n          reason: message.toString(),\n          wasClean: this._closeFrameReceived && this._closeFrameSent\n        });\n\n        event[kTarget] = this;\n        listener.call(this, event);\n      };\n    } else if (type === 'error') {\n      wrapper = function onError(error) {\n        const event = new ErrorEvent('error', {\n          error,\n          message: error.message\n        });\n\n        event[kTarget] = this;\n        listener.call(this, event);\n      };\n    } else if (type === 'open') {\n      wrapper = function onOpen() {\n        const event = new Event('open');\n\n        event[kTarget] = this;\n        listener.call(this, event);\n      };\n    } else {\n      return;\n    }\n\n    wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n    wrapper[kListener] = listener;\n\n    if (options.once) {\n      this.once(type, wrapper);\n    } else {\n      this.on(type, wrapper);\n    }\n  },\n\n  /**\n   * Remove an event listener.\n   *\n   * @param {String} type A string representing the event type to remove\n   * @param {Function} handler The listener to remove\n   * @public\n   */\n  removeEventListener(type, handler) {\n    for (const listener of this.listeners(type)) {\n      if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n        this.removeListener(type, listener);\n        break;\n      }\n    }\n  }\n};\n\nmodule.exports = {\n  CloseEvent,\n  ErrorEvent,\n  Event,\n  EventTarget,\n  MessageEvent\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io/node_modules/ws/lib/event-target.js?")},"./node_modules/engine.io/node_modules/ws/lib/extension.js":
/*!*****************************************************************!*\
  !*** ./node_modules/engine.io/node_modules/ws/lib/extension.js ***!
  \*****************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { tokenChars } = __webpack_require__(/*! ./validation */ \"./node_modules/engine.io/node_modules/ws/lib/validation.js\");\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n *     parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n  if (dest[name] === undefined) dest[name] = [elem];\n  else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n  const offers = Object.create(null);\n  let params = Object.create(null);\n  let mustUnescape = false;\n  let isEscaping = false;\n  let inQuotes = false;\n  let extensionName;\n  let paramName;\n  let start = -1;\n  let code = -1;\n  let end = -1;\n  let i = 0;\n\n  for (; i < header.length; i++) {\n    code = header.charCodeAt(i);\n\n    if (extensionName === undefined) {\n      if (end === -1 && tokenChars[code] === 1) {\n        if (start === -1) start = i;\n      } else if (\n        i !== 0 &&\n        (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n      ) {\n        if (end === -1 && start !== -1) end = i;\n      } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n        if (start === -1) {\n          throw new SyntaxError(`Unexpected character at index ${i}`);\n        }\n\n        if (end === -1) end = i;\n        const name = header.slice(start, end);\n        if (code === 0x2c) {\n          push(offers, name, params);\n          params = Object.create(null);\n        } else {\n          extensionName = name;\n        }\n\n        start = end = -1;\n      } else {\n        throw new SyntaxError(`Unexpected character at index ${i}`);\n      }\n    } else if (paramName === undefined) {\n      if (end === -1 && tokenChars[code] === 1) {\n        if (start === -1) start = i;\n      } else if (code === 0x20 || code === 0x09) {\n        if (end === -1 && start !== -1) end = i;\n      } else if (code === 0x3b || code === 0x2c) {\n        if (start === -1) {\n          throw new SyntaxError(`Unexpected character at index ${i}`);\n        }\n\n        if (end === -1) end = i;\n        push(params, header.slice(start, end), true);\n        if (code === 0x2c) {\n          push(offers, extensionName, params);\n          params = Object.create(null);\n          extensionName = undefined;\n        }\n\n        start = end = -1;\n      } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n        paramName = header.slice(start, i);\n        start = end = -1;\n      } else {\n        throw new SyntaxError(`Unexpected character at index ${i}`);\n      }\n    } else {\n      //\n      // The value of a quoted-string after unescaping must conform to the\n      // token ABNF, so only token characters are valid.\n      // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n      //\n      if (isEscaping) {\n        if (tokenChars[code] !== 1) {\n          throw new SyntaxError(`Unexpected character at index ${i}`);\n        }\n        if (start === -1) start = i;\n        else if (!mustUnescape) mustUnescape = true;\n        isEscaping = false;\n      } else if (inQuotes) {\n        if (tokenChars[code] === 1) {\n          if (start === -1) start = i;\n        } else if (code === 0x22 /* '\"' */ && start !== -1) {\n          inQuotes = false;\n          end = i;\n        } else if (code === 0x5c /* '\\' */) {\n          isEscaping = true;\n        } else {\n          throw new SyntaxError(`Unexpected character at index ${i}`);\n        }\n      } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n        inQuotes = true;\n      } else if (end === -1 && tokenChars[code] === 1) {\n        if (start === -1) start = i;\n      } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n        if (end === -1) end = i;\n      } else if (code === 0x3b || code === 0x2c) {\n        if (start === -1) {\n          throw new SyntaxError(`Unexpected character at index ${i}`);\n        }\n\n        if (end === -1) end = i;\n        let value = header.slice(start, end);\n        if (mustUnescape) {\n          value = value.replace(/\\\\/g, '');\n          mustUnescape = false;\n        }\n        push(params, paramName, value);\n        if (code === 0x2c) {\n          push(offers, extensionName, params);\n          params = Object.create(null);\n          extensionName = undefined;\n        }\n\n        paramName = undefined;\n        start = end = -1;\n      } else {\n        throw new SyntaxError(`Unexpected character at index ${i}`);\n      }\n    }\n  }\n\n  if (start === -1 || inQuotes || code === 0x20 || code === 0x09) {\n    throw new SyntaxError('Unexpected end of input');\n  }\n\n  if (end === -1) end = i;\n  const token = header.slice(start, end);\n  if (extensionName === undefined) {\n    push(offers, token, params);\n  } else {\n    if (paramName === undefined) {\n      push(params, token, true);\n    } else if (mustUnescape) {\n      push(params, paramName, token.replace(/\\\\/g, ''));\n    } else {\n      push(params, paramName, token);\n    }\n    push(offers, extensionName, params);\n  }\n\n  return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n  return Object.keys(extensions)\n    .map((extension) => {\n      let configurations = extensions[extension];\n      if (!Array.isArray(configurations)) configurations = [configurations];\n      return configurations\n        .map((params) => {\n          return [extension]\n            .concat(\n              Object.keys(params).map((k) => {\n                let values = params[k];\n                if (!Array.isArray(values)) values = [values];\n                return values\n                  .map((v) => (v === true ? k : `${k}=${v}`))\n                  .join('; ');\n              })\n            )\n            .join('; ');\n        })\n        .join(', ');\n    })\n    .join(', ');\n}\n\nmodule.exports = { format, parse };\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io/node_modules/ws/lib/extension.js?")},"./node_modules/engine.io/node_modules/ws/lib/limiter.js":
/*!***************************************************************!*\
  !*** ./node_modules/engine.io/node_modules/ws/lib/limiter.js ***!
  \***************************************************************/module=>{"use strict";eval("\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n  /**\n   * Creates a new `Limiter`.\n   *\n   * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n   *     to run concurrently\n   */\n  constructor(concurrency) {\n    this[kDone] = () => {\n      this.pending--;\n      this[kRun]();\n    };\n    this.concurrency = concurrency || Infinity;\n    this.jobs = [];\n    this.pending = 0;\n  }\n\n  /**\n   * Adds a job to the queue.\n   *\n   * @param {Function} job The job to run\n   * @public\n   */\n  add(job) {\n    this.jobs.push(job);\n    this[kRun]();\n  }\n\n  /**\n   * Removes a job from the queue and runs it if possible.\n   *\n   * @private\n   */\n  [kRun]() {\n    if (this.pending === this.concurrency) return;\n\n    if (this.jobs.length) {\n      const job = this.jobs.shift();\n\n      this.pending++;\n      job(this[kDone]);\n    }\n  }\n}\n\nmodule.exports = Limiter;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io/node_modules/ws/lib/limiter.js?")},"./node_modules/engine.io/node_modules/ws/lib/permessage-deflate.js":
/*!**************************************************************************!*\
  !*** ./node_modules/engine.io/node_modules/ws/lib/permessage-deflate.js ***!
  \**************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst zlib = __webpack_require__(/*! zlib */ \"zlib\");\n\nconst bufferUtil = __webpack_require__(/*! ./buffer-util */ \"./node_modules/engine.io/node_modules/ws/lib/buffer-util.js\");\nconst Limiter = __webpack_require__(/*! ./limiter */ \"./node_modules/engine.io/node_modules/ws/lib/limiter.js\");\nconst { kStatusCode } = __webpack_require__(/*! ./constants */ \"./node_modules/engine.io/node_modules/ws/lib/constants.js\");\n\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n  /**\n   * Creates a PerMessageDeflate instance.\n   *\n   * @param {Object} [options] Configuration options\n   * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n   *     for, or request, a custom client window size\n   * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n   *     acknowledge disabling of client context takeover\n   * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n   *     calls to zlib\n   * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n   *     use of a custom server window size\n   * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n   *     disabling of server context takeover\n   * @param {Number} [options.threshold=1024] Size (in bytes) below which\n   *     messages should not be compressed if context takeover is disabled\n   * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n   *     deflate\n   * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n   *     inflate\n   * @param {Boolean} [isServer=false] Create the instance in either server or\n   *     client mode\n   * @param {Number} [maxPayload=0] The maximum allowed message length\n   */\n  constructor(options, isServer, maxPayload) {\n    this._maxPayload = maxPayload | 0;\n    this._options = options || {};\n    this._threshold =\n      this._options.threshold !== undefined ? this._options.threshold : 1024;\n    this._isServer = !!isServer;\n    this._deflate = null;\n    this._inflate = null;\n\n    this.params = null;\n\n    if (!zlibLimiter) {\n      const concurrency =\n        this._options.concurrencyLimit !== undefined\n          ? this._options.concurrencyLimit\n          : 10;\n      zlibLimiter = new Limiter(concurrency);\n    }\n  }\n\n  /**\n   * @type {String}\n   */\n  static get extensionName() {\n    return 'permessage-deflate';\n  }\n\n  /**\n   * Create an extension negotiation offer.\n   *\n   * @return {Object} Extension parameters\n   * @public\n   */\n  offer() {\n    const params = {};\n\n    if (this._options.serverNoContextTakeover) {\n      params.server_no_context_takeover = true;\n    }\n    if (this._options.clientNoContextTakeover) {\n      params.client_no_context_takeover = true;\n    }\n    if (this._options.serverMaxWindowBits) {\n      params.server_max_window_bits = this._options.serverMaxWindowBits;\n    }\n    if (this._options.clientMaxWindowBits) {\n      params.client_max_window_bits = this._options.clientMaxWindowBits;\n    } else if (this._options.clientMaxWindowBits == null) {\n      params.client_max_window_bits = true;\n    }\n\n    return params;\n  }\n\n  /**\n   * Accept an extension negotiation offer/response.\n   *\n   * @param {Array} configurations The extension negotiation offers/reponse\n   * @return {Object} Accepted configuration\n   * @public\n   */\n  accept(configurations) {\n    configurations = this.normalizeParams(configurations);\n\n    this.params = this._isServer\n      ? this.acceptAsServer(configurations)\n      : this.acceptAsClient(configurations);\n\n    return this.params;\n  }\n\n  /**\n   * Releases all resources used by the extension.\n   *\n   * @public\n   */\n  cleanup() {\n    if (this._inflate) {\n      this._inflate.close();\n      this._inflate = null;\n    }\n\n    if (this._deflate) {\n      const callback = this._deflate[kCallback];\n\n      this._deflate.close();\n      this._deflate = null;\n\n      if (callback) {\n        callback(\n          new Error(\n            'The deflate stream was closed while data was being processed'\n          )\n        );\n      }\n    }\n  }\n\n  /**\n   *  Accept an extension negotiation offer.\n   *\n   * @param {Array} offers The extension negotiation offers\n   * @return {Object} Accepted configuration\n   * @private\n   */\n  acceptAsServer(offers) {\n    const opts = this._options;\n    const accepted = offers.find((params) => {\n      if (\n        (opts.serverNoContextTakeover === false &&\n          params.server_no_context_takeover) ||\n        (params.server_max_window_bits &&\n          (opts.serverMaxWindowBits === false ||\n            (typeof opts.serverMaxWindowBits === 'number' &&\n              opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n        (typeof opts.clientMaxWindowBits === 'number' &&\n          !params.client_max_window_bits)\n      ) {\n        return false;\n      }\n\n      return true;\n    });\n\n    if (!accepted) {\n      throw new Error('None of the extension offers can be accepted');\n    }\n\n    if (opts.serverNoContextTakeover) {\n      accepted.server_no_context_takeover = true;\n    }\n    if (opts.clientNoContextTakeover) {\n      accepted.client_no_context_takeover = true;\n    }\n    if (typeof opts.serverMaxWindowBits === 'number') {\n      accepted.server_max_window_bits = opts.serverMaxWindowBits;\n    }\n    if (typeof opts.clientMaxWindowBits === 'number') {\n      accepted.client_max_window_bits = opts.clientMaxWindowBits;\n    } else if (\n      accepted.client_max_window_bits === true ||\n      opts.clientMaxWindowBits === false\n    ) {\n      delete accepted.client_max_window_bits;\n    }\n\n    return accepted;\n  }\n\n  /**\n   * Accept the extension negotiation response.\n   *\n   * @param {Array} response The extension negotiation response\n   * @return {Object} Accepted configuration\n   * @private\n   */\n  acceptAsClient(response) {\n    const params = response[0];\n\n    if (\n      this._options.clientNoContextTakeover === false &&\n      params.client_no_context_takeover\n    ) {\n      throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n    }\n\n    if (!params.client_max_window_bits) {\n      if (typeof this._options.clientMaxWindowBits === 'number') {\n        params.client_max_window_bits = this._options.clientMaxWindowBits;\n      }\n    } else if (\n      this._options.clientMaxWindowBits === false ||\n      (typeof this._options.clientMaxWindowBits === 'number' &&\n        params.client_max_window_bits > this._options.clientMaxWindowBits)\n    ) {\n      throw new Error(\n        'Unexpected or invalid parameter \"client_max_window_bits\"'\n      );\n    }\n\n    return params;\n  }\n\n  /**\n   * Normalize parameters.\n   *\n   * @param {Array} configurations The extension negotiation offers/reponse\n   * @return {Array} The offers/response with normalized parameters\n   * @private\n   */\n  normalizeParams(configurations) {\n    configurations.forEach((params) => {\n      Object.keys(params).forEach((key) => {\n        let value = params[key];\n\n        if (value.length > 1) {\n          throw new Error(`Parameter \"${key}\" must have only a single value`);\n        }\n\n        value = value[0];\n\n        if (key === 'client_max_window_bits') {\n          if (value !== true) {\n            const num = +value;\n            if (!Number.isInteger(num) || num < 8 || num > 15) {\n              throw new TypeError(\n                `Invalid value for parameter \"${key}\": ${value}`\n              );\n            }\n            value = num;\n          } else if (!this._isServer) {\n            throw new TypeError(\n              `Invalid value for parameter \"${key}\": ${value}`\n            );\n          }\n        } else if (key === 'server_max_window_bits') {\n          const num = +value;\n          if (!Number.isInteger(num) || num < 8 || num > 15) {\n            throw new TypeError(\n              `Invalid value for parameter \"${key}\": ${value}`\n            );\n          }\n          value = num;\n        } else if (\n          key === 'client_no_context_takeover' ||\n          key === 'server_no_context_takeover'\n        ) {\n          if (value !== true) {\n            throw new TypeError(\n              `Invalid value for parameter \"${key}\": ${value}`\n            );\n          }\n        } else {\n          throw new Error(`Unknown parameter \"${key}\"`);\n        }\n\n        params[key] = value;\n      });\n    });\n\n    return configurations;\n  }\n\n  /**\n   * Decompress data. Concurrency limited.\n   *\n   * @param {Buffer} data Compressed data\n   * @param {Boolean} fin Specifies whether or not this is the last fragment\n   * @param {Function} callback Callback\n   * @public\n   */\n  decompress(data, fin, callback) {\n    zlibLimiter.add((done) => {\n      this._decompress(data, fin, (err, result) => {\n        done();\n        callback(err, result);\n      });\n    });\n  }\n\n  /**\n   * Compress data. Concurrency limited.\n   *\n   * @param {Buffer} data Data to compress\n   * @param {Boolean} fin Specifies whether or not this is the last fragment\n   * @param {Function} callback Callback\n   * @public\n   */\n  compress(data, fin, callback) {\n    zlibLimiter.add((done) => {\n      this._compress(data, fin, (err, result) => {\n        done();\n        callback(err, result);\n      });\n    });\n  }\n\n  /**\n   * Decompress data.\n   *\n   * @param {Buffer} data Compressed data\n   * @param {Boolean} fin Specifies whether or not this is the last fragment\n   * @param {Function} callback Callback\n   * @private\n   */\n  _decompress(data, fin, callback) {\n    const endpoint = this._isServer ? 'client' : 'server';\n\n    if (!this._inflate) {\n      const key = `${endpoint}_max_window_bits`;\n      const windowBits =\n        typeof this.params[key] !== 'number'\n          ? zlib.Z_DEFAULT_WINDOWBITS\n          : this.params[key];\n\n      this._inflate = zlib.createInflateRaw({\n        ...this._options.zlibInflateOptions,\n        windowBits\n      });\n      this._inflate[kPerMessageDeflate] = this;\n      this._inflate[kTotalLength] = 0;\n      this._inflate[kBuffers] = [];\n      this._inflate.on('error', inflateOnError);\n      this._inflate.on('data', inflateOnData);\n    }\n\n    this._inflate[kCallback] = callback;\n\n    this._inflate.write(data);\n    if (fin) this._inflate.write(TRAILER);\n\n    this._inflate.flush(() => {\n      const err = this._inflate[kError];\n\n      if (err) {\n        this._inflate.close();\n        this._inflate = null;\n        callback(err);\n        return;\n      }\n\n      const data = bufferUtil.concat(\n        this._inflate[kBuffers],\n        this._inflate[kTotalLength]\n      );\n\n      if (this._inflate._readableState.endEmitted) {\n        this._inflate.close();\n        this._inflate = null;\n      } else {\n        this._inflate[kTotalLength] = 0;\n        this._inflate[kBuffers] = [];\n\n        if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n          this._inflate.reset();\n        }\n      }\n\n      callback(null, data);\n    });\n  }\n\n  /**\n   * Compress data.\n   *\n   * @param {Buffer} data Data to compress\n   * @param {Boolean} fin Specifies whether or not this is the last fragment\n   * @param {Function} callback Callback\n   * @private\n   */\n  _compress(data, fin, callback) {\n    const endpoint = this._isServer ? 'server' : 'client';\n\n    if (!this._deflate) {\n      const key = `${endpoint}_max_window_bits`;\n      const windowBits =\n        typeof this.params[key] !== 'number'\n          ? zlib.Z_DEFAULT_WINDOWBITS\n          : this.params[key];\n\n      this._deflate = zlib.createDeflateRaw({\n        ...this._options.zlibDeflateOptions,\n        windowBits\n      });\n\n      this._deflate[kTotalLength] = 0;\n      this._deflate[kBuffers] = [];\n\n      this._deflate.on('data', deflateOnData);\n    }\n\n    this._deflate[kCallback] = callback;\n\n    this._deflate.write(data);\n    this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n      if (!this._deflate) {\n        //\n        // The deflate stream was closed while data was being processed.\n        //\n        return;\n      }\n\n      let data = bufferUtil.concat(\n        this._deflate[kBuffers],\n        this._deflate[kTotalLength]\n      );\n\n      if (fin) data = data.slice(0, data.length - 4);\n\n      //\n      // Ensure that the callback will not be called again in\n      // `PerMessageDeflate#cleanup()`.\n      //\n      this._deflate[kCallback] = null;\n\n      this._deflate[kTotalLength] = 0;\n      this._deflate[kBuffers] = [];\n\n      if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n        this._deflate.reset();\n      }\n\n      callback(null, data);\n    });\n  }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n  this[kBuffers].push(chunk);\n  this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n  this[kTotalLength] += chunk.length;\n\n  if (\n    this[kPerMessageDeflate]._maxPayload < 1 ||\n    this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n  ) {\n    this[kBuffers].push(chunk);\n    return;\n  }\n\n  this[kError] = new RangeError('Max payload size exceeded');\n  this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n  this[kError][kStatusCode] = 1009;\n  this.removeListener('data', inflateOnData);\n  this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n  //\n  // There is no need to call `Zlib#close()` as the handle is automatically\n  // closed when an error is emitted.\n  //\n  this[kPerMessageDeflate]._inflate = null;\n  err[kStatusCode] = 1007;\n  this[kCallback](err);\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io/node_modules/ws/lib/permessage-deflate.js?")},"./node_modules/engine.io/node_modules/ws/lib/receiver.js":
/*!****************************************************************!*\
  !*** ./node_modules/engine.io/node_modules/ws/lib/receiver.js ***!
  \****************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Writable } = __webpack_require__(/*! stream */ \"stream\");\n\nconst PerMessageDeflate = __webpack_require__(/*! ./permessage-deflate */ \"./node_modules/engine.io/node_modules/ws/lib/permessage-deflate.js\");\nconst {\n  BINARY_TYPES,\n  EMPTY_BUFFER,\n  kStatusCode,\n  kWebSocket\n} = __webpack_require__(/*! ./constants */ \"./node_modules/engine.io/node_modules/ws/lib/constants.js\");\nconst { concat, toArrayBuffer, unmask } = __webpack_require__(/*! ./buffer-util */ \"./node_modules/engine.io/node_modules/ws/lib/buffer-util.js\");\nconst { isValidStatusCode, isValidUTF8 } = __webpack_require__(/*! ./validation */ \"./node_modules/engine.io/node_modules/ws/lib/validation.js\");\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n  /**\n   * Creates a Receiver instance.\n   *\n   * @param {Object} [options] Options object\n   * @param {String} [options.binaryType=nodebuffer] The type for binary data\n   * @param {Object} [options.extensions] An object containing the negotiated\n   *     extensions\n   * @param {Boolean} [options.isServer=false] Specifies whether to operate in\n   *     client or server mode\n   * @param {Number} [options.maxPayload=0] The maximum allowed message length\n   * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n   *     not to skip UTF-8 validation for text and close messages\n   */\n  constructor(options = {}) {\n    super();\n\n    this._binaryType = options.binaryType || BINARY_TYPES[0];\n    this._extensions = options.extensions || {};\n    this._isServer = !!options.isServer;\n    this._maxPayload = options.maxPayload | 0;\n    this._skipUTF8Validation = !!options.skipUTF8Validation;\n    this[kWebSocket] = undefined;\n\n    this._bufferedBytes = 0;\n    this._buffers = [];\n\n    this._compressed = false;\n    this._payloadLength = 0;\n    this._mask = undefined;\n    this._fragmented = 0;\n    this._masked = false;\n    this._fin = false;\n    this._opcode = 0;\n\n    this._totalPayloadLength = 0;\n    this._messageLength = 0;\n    this._fragments = [];\n\n    this._state = GET_INFO;\n    this._loop = false;\n  }\n\n  /**\n   * Implements `Writable.prototype._write()`.\n   *\n   * @param {Buffer} chunk The chunk of data to write\n   * @param {String} encoding The character encoding of `chunk`\n   * @param {Function} cb Callback\n   * @private\n   */\n  _write(chunk, encoding, cb) {\n    if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n    this._bufferedBytes += chunk.length;\n    this._buffers.push(chunk);\n    this.startLoop(cb);\n  }\n\n  /**\n   * Consumes `n` bytes from the buffered data.\n   *\n   * @param {Number} n The number of bytes to consume\n   * @return {Buffer} The consumed bytes\n   * @private\n   */\n  consume(n) {\n    this._bufferedBytes -= n;\n\n    if (n === this._buffers[0].length) return this._buffers.shift();\n\n    if (n < this._buffers[0].length) {\n      const buf = this._buffers[0];\n      this._buffers[0] = buf.slice(n);\n      return buf.slice(0, n);\n    }\n\n    const dst = Buffer.allocUnsafe(n);\n\n    do {\n      const buf = this._buffers[0];\n      const offset = dst.length - n;\n\n      if (n >= buf.length) {\n        dst.set(this._buffers.shift(), offset);\n      } else {\n        dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n        this._buffers[0] = buf.slice(n);\n      }\n\n      n -= buf.length;\n    } while (n > 0);\n\n    return dst;\n  }\n\n  /**\n   * Starts the parsing loop.\n   *\n   * @param {Function} cb Callback\n   * @private\n   */\n  startLoop(cb) {\n    let err;\n    this._loop = true;\n\n    do {\n      switch (this._state) {\n        case GET_INFO:\n          err = this.getInfo();\n          break;\n        case GET_PAYLOAD_LENGTH_16:\n          err = this.getPayloadLength16();\n          break;\n        case GET_PAYLOAD_LENGTH_64:\n          err = this.getPayloadLength64();\n          break;\n        case GET_MASK:\n          this.getMask();\n          break;\n        case GET_DATA:\n          err = this.getData(cb);\n          break;\n        default:\n          // `INFLATING`\n          this._loop = false;\n          return;\n      }\n    } while (this._loop);\n\n    cb(err);\n  }\n\n  /**\n   * Reads the first two bytes of a frame.\n   *\n   * @return {(RangeError|undefined)} A possible error\n   * @private\n   */\n  getInfo() {\n    if (this._bufferedBytes < 2) {\n      this._loop = false;\n      return;\n    }\n\n    const buf = this.consume(2);\n\n    if ((buf[0] & 0x30) !== 0x00) {\n      this._loop = false;\n      return error(\n        RangeError,\n        'RSV2 and RSV3 must be clear',\n        true,\n        1002,\n        'WS_ERR_UNEXPECTED_RSV_2_3'\n      );\n    }\n\n    const compressed = (buf[0] & 0x40) === 0x40;\n\n    if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n      this._loop = false;\n      return error(\n        RangeError,\n        'RSV1 must be clear',\n        true,\n        1002,\n        'WS_ERR_UNEXPECTED_RSV_1'\n      );\n    }\n\n    this._fin = (buf[0] & 0x80) === 0x80;\n    this._opcode = buf[0] & 0x0f;\n    this._payloadLength = buf[1] & 0x7f;\n\n    if (this._opcode === 0x00) {\n      if (compressed) {\n        this._loop = false;\n        return error(\n          RangeError,\n          'RSV1 must be clear',\n          true,\n          1002,\n          'WS_ERR_UNEXPECTED_RSV_1'\n        );\n      }\n\n      if (!this._fragmented) {\n        this._loop = false;\n        return error(\n          RangeError,\n          'invalid opcode 0',\n          true,\n          1002,\n          'WS_ERR_INVALID_OPCODE'\n        );\n      }\n\n      this._opcode = this._fragmented;\n    } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n      if (this._fragmented) {\n        this._loop = false;\n        return error(\n          RangeError,\n          `invalid opcode ${this._opcode}`,\n          true,\n          1002,\n          'WS_ERR_INVALID_OPCODE'\n        );\n      }\n\n      this._compressed = compressed;\n    } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n      if (!this._fin) {\n        this._loop = false;\n        return error(\n          RangeError,\n          'FIN must be set',\n          true,\n          1002,\n          'WS_ERR_EXPECTED_FIN'\n        );\n      }\n\n      if (compressed) {\n        this._loop = false;\n        return error(\n          RangeError,\n          'RSV1 must be clear',\n          true,\n          1002,\n          'WS_ERR_UNEXPECTED_RSV_1'\n        );\n      }\n\n      if (this._payloadLength > 0x7d) {\n        this._loop = false;\n        return error(\n          RangeError,\n          `invalid payload length ${this._payloadLength}`,\n          true,\n          1002,\n          'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n        );\n      }\n    } else {\n      this._loop = false;\n      return error(\n        RangeError,\n        `invalid opcode ${this._opcode}`,\n        true,\n        1002,\n        'WS_ERR_INVALID_OPCODE'\n      );\n    }\n\n    if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n    this._masked = (buf[1] & 0x80) === 0x80;\n\n    if (this._isServer) {\n      if (!this._masked) {\n        this._loop = false;\n        return error(\n          RangeError,\n          'MASK must be set',\n          true,\n          1002,\n          'WS_ERR_EXPECTED_MASK'\n        );\n      }\n    } else if (this._masked) {\n      this._loop = false;\n      return error(\n        RangeError,\n        'MASK must be clear',\n        true,\n        1002,\n        'WS_ERR_UNEXPECTED_MASK'\n      );\n    }\n\n    if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n    else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n    else return this.haveLength();\n  }\n\n  /**\n   * Gets extended payload length (7+16).\n   *\n   * @return {(RangeError|undefined)} A possible error\n   * @private\n   */\n  getPayloadLength16() {\n    if (this._bufferedBytes < 2) {\n      this._loop = false;\n      return;\n    }\n\n    this._payloadLength = this.consume(2).readUInt16BE(0);\n    return this.haveLength();\n  }\n\n  /**\n   * Gets extended payload length (7+64).\n   *\n   * @return {(RangeError|undefined)} A possible error\n   * @private\n   */\n  getPayloadLength64() {\n    if (this._bufferedBytes < 8) {\n      this._loop = false;\n      return;\n    }\n\n    const buf = this.consume(8);\n    const num = buf.readUInt32BE(0);\n\n    //\n    // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n    // if payload length is greater than this number.\n    //\n    if (num > Math.pow(2, 53 - 32) - 1) {\n      this._loop = false;\n      return error(\n        RangeError,\n        'Unsupported WebSocket frame: payload length > 2^53 - 1',\n        false,\n        1009,\n        'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n      );\n    }\n\n    this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n    return this.haveLength();\n  }\n\n  /**\n   * Payload length has been read.\n   *\n   * @return {(RangeError|undefined)} A possible error\n   * @private\n   */\n  haveLength() {\n    if (this._payloadLength && this._opcode < 0x08) {\n      this._totalPayloadLength += this._payloadLength;\n      if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n        this._loop = false;\n        return error(\n          RangeError,\n          'Max payload size exceeded',\n          false,\n          1009,\n          'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n        );\n      }\n    }\n\n    if (this._masked) this._state = GET_MASK;\n    else this._state = GET_DATA;\n  }\n\n  /**\n   * Reads mask bytes.\n   *\n   * @private\n   */\n  getMask() {\n    if (this._bufferedBytes < 4) {\n      this._loop = false;\n      return;\n    }\n\n    this._mask = this.consume(4);\n    this._state = GET_DATA;\n  }\n\n  /**\n   * Reads data bytes.\n   *\n   * @param {Function} cb Callback\n   * @return {(Error|RangeError|undefined)} A possible error\n   * @private\n   */\n  getData(cb) {\n    let data = EMPTY_BUFFER;\n\n    if (this._payloadLength) {\n      if (this._bufferedBytes < this._payloadLength) {\n        this._loop = false;\n        return;\n      }\n\n      data = this.consume(this._payloadLength);\n      if (this._masked) unmask(data, this._mask);\n    }\n\n    if (this._opcode > 0x07) return this.controlMessage(data);\n\n    if (this._compressed) {\n      this._state = INFLATING;\n      this.decompress(data, cb);\n      return;\n    }\n\n    if (data.length) {\n      //\n      // This message is not compressed so its length is the sum of the payload\n      // length of all fragments.\n      //\n      this._messageLength = this._totalPayloadLength;\n      this._fragments.push(data);\n    }\n\n    return this.dataMessage();\n  }\n\n  /**\n   * Decompresses data.\n   *\n   * @param {Buffer} data Compressed data\n   * @param {Function} cb Callback\n   * @private\n   */\n  decompress(data, cb) {\n    const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n    perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n      if (err) return cb(err);\n\n      if (buf.length) {\n        this._messageLength += buf.length;\n        if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n          return cb(\n            error(\n              RangeError,\n              'Max payload size exceeded',\n              false,\n              1009,\n              'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n            )\n          );\n        }\n\n        this._fragments.push(buf);\n      }\n\n      const er = this.dataMessage();\n      if (er) return cb(er);\n\n      this.startLoop(cb);\n    });\n  }\n\n  /**\n   * Handles a data message.\n   *\n   * @return {(Error|undefined)} A possible error\n   * @private\n   */\n  dataMessage() {\n    if (this._fin) {\n      const messageLength = this._messageLength;\n      const fragments = this._fragments;\n\n      this._totalPayloadLength = 0;\n      this._messageLength = 0;\n      this._fragmented = 0;\n      this._fragments = [];\n\n      if (this._opcode === 2) {\n        let data;\n\n        if (this._binaryType === 'nodebuffer') {\n          data = concat(fragments, messageLength);\n        } else if (this._binaryType === 'arraybuffer') {\n          data = toArrayBuffer(concat(fragments, messageLength));\n        } else {\n          data = fragments;\n        }\n\n        this.emit('message', data, true);\n      } else {\n        const buf = concat(fragments, messageLength);\n\n        if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n          this._loop = false;\n          return error(\n            Error,\n            'invalid UTF-8 sequence',\n            true,\n            1007,\n            'WS_ERR_INVALID_UTF8'\n          );\n        }\n\n        this.emit('message', buf, false);\n      }\n    }\n\n    this._state = GET_INFO;\n  }\n\n  /**\n   * Handles a control message.\n   *\n   * @param {Buffer} data Data to handle\n   * @return {(Error|RangeError|undefined)} A possible error\n   * @private\n   */\n  controlMessage(data) {\n    if (this._opcode === 0x08) {\n      this._loop = false;\n\n      if (data.length === 0) {\n        this.emit('conclude', 1005, EMPTY_BUFFER);\n        this.end();\n      } else if (data.length === 1) {\n        return error(\n          RangeError,\n          'invalid payload length 1',\n          true,\n          1002,\n          'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n        );\n      } else {\n        const code = data.readUInt16BE(0);\n\n        if (!isValidStatusCode(code)) {\n          return error(\n            RangeError,\n            `invalid status code ${code}`,\n            true,\n            1002,\n            'WS_ERR_INVALID_CLOSE_CODE'\n          );\n        }\n\n        const buf = data.slice(2);\n\n        if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n          return error(\n            Error,\n            'invalid UTF-8 sequence',\n            true,\n            1007,\n            'WS_ERR_INVALID_UTF8'\n          );\n        }\n\n        this.emit('conclude', code, buf);\n        this.end();\n      }\n    } else if (this._opcode === 0x09) {\n      this.emit('ping', data);\n    } else {\n      this.emit('pong', data);\n    }\n\n    this._state = GET_INFO;\n  }\n}\n\nmodule.exports = Receiver;\n\n/**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n *     `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\nfunction error(ErrorCtor, message, prefix, statusCode, errorCode) {\n  const err = new ErrorCtor(\n    prefix ? `Invalid WebSocket frame: ${message}` : message\n  );\n\n  Error.captureStackTrace(err, error);\n  err.code = errorCode;\n  err[kStatusCode] = statusCode;\n  return err;\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io/node_modules/ws/lib/receiver.js?")},"./node_modules/engine.io/node_modules/ws/lib/sender.js":
/*!**************************************************************!*\
  !*** ./node_modules/engine.io/node_modules/ws/lib/sender.js ***!
  \**************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^net|tls$\" }] */\n\n\n\nconst net = __webpack_require__(/*! net */ \"net\");\nconst tls = __webpack_require__(/*! tls */ \"tls\");\nconst { randomFillSync } = __webpack_require__(/*! crypto */ \"crypto\");\n\nconst PerMessageDeflate = __webpack_require__(/*! ./permessage-deflate */ \"./node_modules/engine.io/node_modules/ws/lib/permessage-deflate.js\");\nconst { EMPTY_BUFFER } = __webpack_require__(/*! ./constants */ \"./node_modules/engine.io/node_modules/ws/lib/constants.js\");\nconst { isValidStatusCode } = __webpack_require__(/*! ./validation */ \"./node_modules/engine.io/node_modules/ws/lib/validation.js\");\nconst { mask: applyMask, toBuffer } = __webpack_require__(/*! ./buffer-util */ \"./node_modules/engine.io/node_modules/ws/lib/buffer-util.js\");\n\nconst mask = Buffer.alloc(4);\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n  /**\n   * Creates a Sender instance.\n   *\n   * @param {(net.Socket|tls.Socket)} socket The connection socket\n   * @param {Object} [extensions] An object containing the negotiated extensions\n   */\n  constructor(socket, extensions) {\n    this._extensions = extensions || {};\n    this._socket = socket;\n\n    this._firstFragment = true;\n    this._compress = false;\n\n    this._bufferedBytes = 0;\n    this._deflating = false;\n    this._queue = [];\n  }\n\n  /**\n   * Frames a piece of data according to the HyBi WebSocket protocol.\n   *\n   * @param {Buffer} data The data to frame\n   * @param {Object} options Options object\n   * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n   *     FIN bit\n   * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n   *     `data`\n   * @param {Number} options.opcode The opcode\n   * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n   *     modified\n   * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n   *     RSV1 bit\n   * @return {Buffer[]} The framed data as a list of `Buffer` instances\n   * @public\n   */\n  static frame(data, options) {\n    const merge = options.mask && options.readOnly;\n    let offset = options.mask ? 6 : 2;\n    let payloadLength = data.length;\n\n    if (data.length >= 65536) {\n      offset += 8;\n      payloadLength = 127;\n    } else if (data.length > 125) {\n      offset += 2;\n      payloadLength = 126;\n    }\n\n    const target = Buffer.allocUnsafe(merge ? data.length + offset : offset);\n\n    target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n    if (options.rsv1) target[0] |= 0x40;\n\n    target[1] = payloadLength;\n\n    if (payloadLength === 126) {\n      target.writeUInt16BE(data.length, 2);\n    } else if (payloadLength === 127) {\n      target.writeUInt32BE(0, 2);\n      target.writeUInt32BE(data.length, 6);\n    }\n\n    if (!options.mask) return [target, data];\n\n    randomFillSync(mask, 0, 4);\n\n    target[1] |= 0x80;\n    target[offset - 4] = mask[0];\n    target[offset - 3] = mask[1];\n    target[offset - 2] = mask[2];\n    target[offset - 1] = mask[3];\n\n    if (merge) {\n      applyMask(data, mask, target, offset, data.length);\n      return [target];\n    }\n\n    applyMask(data, mask, data, 0, data.length);\n    return [target, data];\n  }\n\n  /**\n   * Sends a close message to the other peer.\n   *\n   * @param {Number} [code] The status code component of the body\n   * @param {(String|Buffer)} [data] The message component of the body\n   * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n   * @param {Function} [cb] Callback\n   * @public\n   */\n  close(code, data, mask, cb) {\n    let buf;\n\n    if (code === undefined) {\n      buf = EMPTY_BUFFER;\n    } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n      throw new TypeError('First argument must be a valid error code number');\n    } else if (data === undefined || !data.length) {\n      buf = Buffer.allocUnsafe(2);\n      buf.writeUInt16BE(code, 0);\n    } else {\n      const length = Buffer.byteLength(data);\n\n      if (length > 123) {\n        throw new RangeError('The message must not be greater than 123 bytes');\n      }\n\n      buf = Buffer.allocUnsafe(2 + length);\n      buf.writeUInt16BE(code, 0);\n\n      if (typeof data === 'string') {\n        buf.write(data, 2);\n      } else {\n        buf.set(data, 2);\n      }\n    }\n\n    if (this._deflating) {\n      this.enqueue([this.doClose, buf, mask, cb]);\n    } else {\n      this.doClose(buf, mask, cb);\n    }\n  }\n\n  /**\n   * Frames and sends a close message.\n   *\n   * @param {Buffer} data The message to send\n   * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n   * @param {Function} [cb] Callback\n   * @private\n   */\n  doClose(data, mask, cb) {\n    this.sendFrame(\n      Sender.frame(data, {\n        fin: true,\n        rsv1: false,\n        opcode: 0x08,\n        mask,\n        readOnly: false\n      }),\n      cb\n    );\n  }\n\n  /**\n   * Sends a ping message to the other peer.\n   *\n   * @param {*} data The message to send\n   * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n   * @param {Function} [cb] Callback\n   * @public\n   */\n  ping(data, mask, cb) {\n    const buf = toBuffer(data);\n\n    if (buf.length > 125) {\n      throw new RangeError('The data size must not be greater than 125 bytes');\n    }\n\n    if (this._deflating) {\n      this.enqueue([this.doPing, buf, mask, toBuffer.readOnly, cb]);\n    } else {\n      this.doPing(buf, mask, toBuffer.readOnly, cb);\n    }\n  }\n\n  /**\n   * Frames and sends a ping message.\n   *\n   * @param {Buffer} data The message to send\n   * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n   * @param {Boolean} [readOnly=false] Specifies whether `data` can be modified\n   * @param {Function} [cb] Callback\n   * @private\n   */\n  doPing(data, mask, readOnly, cb) {\n    this.sendFrame(\n      Sender.frame(data, {\n        fin: true,\n        rsv1: false,\n        opcode: 0x09,\n        mask,\n        readOnly\n      }),\n      cb\n    );\n  }\n\n  /**\n   * Sends a pong message to the other peer.\n   *\n   * @param {*} data The message to send\n   * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n   * @param {Function} [cb] Callback\n   * @public\n   */\n  pong(data, mask, cb) {\n    const buf = toBuffer(data);\n\n    if (buf.length > 125) {\n      throw new RangeError('The data size must not be greater than 125 bytes');\n    }\n\n    if (this._deflating) {\n      this.enqueue([this.doPong, buf, mask, toBuffer.readOnly, cb]);\n    } else {\n      this.doPong(buf, mask, toBuffer.readOnly, cb);\n    }\n  }\n\n  /**\n   * Frames and sends a pong message.\n   *\n   * @param {Buffer} data The message to send\n   * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n   * @param {Boolean} [readOnly=false] Specifies whether `data` can be modified\n   * @param {Function} [cb] Callback\n   * @private\n   */\n  doPong(data, mask, readOnly, cb) {\n    this.sendFrame(\n      Sender.frame(data, {\n        fin: true,\n        rsv1: false,\n        opcode: 0x0a,\n        mask,\n        readOnly\n      }),\n      cb\n    );\n  }\n\n  /**\n   * Sends a data message to the other peer.\n   *\n   * @param {*} data The message to send\n   * @param {Object} options Options object\n   * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n   *     or text\n   * @param {Boolean} [options.compress=false] Specifies whether or not to\n   *     compress `data`\n   * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n   *     last one\n   * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n   *     `data`\n   * @param {Function} [cb] Callback\n   * @public\n   */\n  send(data, options, cb) {\n    const buf = toBuffer(data);\n    const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n    let opcode = options.binary ? 2 : 1;\n    let rsv1 = options.compress;\n\n    if (this._firstFragment) {\n      this._firstFragment = false;\n      if (\n        rsv1 &&\n        perMessageDeflate &&\n        perMessageDeflate.params[\n          perMessageDeflate._isServer\n            ? 'server_no_context_takeover'\n            : 'client_no_context_takeover'\n        ]\n      ) {\n        rsv1 = buf.length >= perMessageDeflate._threshold;\n      }\n      this._compress = rsv1;\n    } else {\n      rsv1 = false;\n      opcode = 0;\n    }\n\n    if (options.fin) this._firstFragment = true;\n\n    if (perMessageDeflate) {\n      const opts = {\n        fin: options.fin,\n        rsv1,\n        opcode,\n        mask: options.mask,\n        readOnly: toBuffer.readOnly\n      };\n\n      if (this._deflating) {\n        this.enqueue([this.dispatch, buf, this._compress, opts, cb]);\n      } else {\n        this.dispatch(buf, this._compress, opts, cb);\n      }\n    } else {\n      this.sendFrame(\n        Sender.frame(buf, {\n          fin: options.fin,\n          rsv1: false,\n          opcode,\n          mask: options.mask,\n          readOnly: toBuffer.readOnly\n        }),\n        cb\n      );\n    }\n  }\n\n  /**\n   * Dispatches a data message.\n   *\n   * @param {Buffer} data The message to send\n   * @param {Boolean} [compress=false] Specifies whether or not to compress\n   *     `data`\n   * @param {Object} options Options object\n   * @param {Number} options.opcode The opcode\n   * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n   *     FIN bit\n   * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n   *     `data`\n   * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n   *     modified\n   * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n   *     RSV1 bit\n   * @param {Function} [cb] Callback\n   * @private\n   */\n  dispatch(data, compress, options, cb) {\n    if (!compress) {\n      this.sendFrame(Sender.frame(data, options), cb);\n      return;\n    }\n\n    const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n    this._bufferedBytes += data.length;\n    this._deflating = true;\n    perMessageDeflate.compress(data, options.fin, (_, buf) => {\n      if (this._socket.destroyed) {\n        const err = new Error(\n          'The socket was closed while data was being compressed'\n        );\n\n        if (typeof cb === 'function') cb(err);\n\n        for (let i = 0; i < this._queue.length; i++) {\n          const callback = this._queue[i][4];\n\n          if (typeof callback === 'function') callback(err);\n        }\n\n        return;\n      }\n\n      this._bufferedBytes -= data.length;\n      this._deflating = false;\n      options.readOnly = false;\n      this.sendFrame(Sender.frame(buf, options), cb);\n      this.dequeue();\n    });\n  }\n\n  /**\n   * Executes queued send operations.\n   *\n   * @private\n   */\n  dequeue() {\n    while (!this._deflating && this._queue.length) {\n      const params = this._queue.shift();\n\n      this._bufferedBytes -= params[1].length;\n      Reflect.apply(params[0], this, params.slice(1));\n    }\n  }\n\n  /**\n   * Enqueues a send operation.\n   *\n   * @param {Array} params Send operation parameters.\n   * @private\n   */\n  enqueue(params) {\n    this._bufferedBytes += params[1].length;\n    this._queue.push(params);\n  }\n\n  /**\n   * Sends a frame.\n   *\n   * @param {Buffer[]} list The frame to send\n   * @param {Function} [cb] Callback\n   * @private\n   */\n  sendFrame(list, cb) {\n    if (list.length === 2) {\n      this._socket.cork();\n      this._socket.write(list[0]);\n      this._socket.write(list[1], cb);\n      this._socket.uncork();\n    } else {\n      this._socket.write(list[0], cb);\n    }\n  }\n}\n\nmodule.exports = Sender;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io/node_modules/ws/lib/sender.js?")},"./node_modules/engine.io/node_modules/ws/lib/stream.js":
/*!**************************************************************!*\
  !*** ./node_modules/engine.io/node_modules/ws/lib/stream.js ***!
  \**************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Duplex } = __webpack_require__(/*! stream */ \"stream\");\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n  stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n  if (!this.destroyed && this._writableState.finished) {\n    this.destroy();\n  }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n  this.removeListener('error', duplexOnError);\n  this.destroy();\n  if (this.listenerCount('error') === 0) {\n    // Do not suppress the throwing behavior.\n    this.emit('error', err);\n  }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n  let resumeOnReceiverDrain = true;\n  let terminateOnDestroy = true;\n\n  function receiverOnDrain() {\n    if (resumeOnReceiverDrain) ws._socket.resume();\n  }\n\n  if (ws.readyState === ws.CONNECTING) {\n    ws.once('open', function open() {\n      ws._receiver.removeAllListeners('drain');\n      ws._receiver.on('drain', receiverOnDrain);\n    });\n  } else {\n    ws._receiver.removeAllListeners('drain');\n    ws._receiver.on('drain', receiverOnDrain);\n  }\n\n  const duplex = new Duplex({\n    ...options,\n    autoDestroy: false,\n    emitClose: false,\n    objectMode: false,\n    writableObjectMode: false\n  });\n\n  ws.on('message', function message(msg, isBinary) {\n    const data =\n      !isBinary && duplex._readableState.objectMode ? msg.toString() : msg;\n\n    if (!duplex.push(data)) {\n      resumeOnReceiverDrain = false;\n      ws._socket.pause();\n    }\n  });\n\n  ws.once('error', function error(err) {\n    if (duplex.destroyed) return;\n\n    // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n    //\n    // - If the `'error'` event is emitted before the `'open'` event, then\n    //   `ws.terminate()` is a noop as no socket is assigned.\n    // - Otherwise, the error is re-emitted by the listener of the `'error'`\n    //   event of the `Receiver` object. The listener already closes the\n    //   connection by calling `ws.close()`. This allows a close frame to be\n    //   sent to the other peer. If `ws.terminate()` is called right after this,\n    //   then the close frame might not be sent.\n    terminateOnDestroy = false;\n    duplex.destroy(err);\n  });\n\n  ws.once('close', function close() {\n    if (duplex.destroyed) return;\n\n    duplex.push(null);\n  });\n\n  duplex._destroy = function (err, callback) {\n    if (ws.readyState === ws.CLOSED) {\n      callback(err);\n      process.nextTick(emitClose, duplex);\n      return;\n    }\n\n    let called = false;\n\n    ws.once('error', function error(err) {\n      called = true;\n      callback(err);\n    });\n\n    ws.once('close', function close() {\n      if (!called) callback(err);\n      process.nextTick(emitClose, duplex);\n    });\n\n    if (terminateOnDestroy) ws.terminate();\n  };\n\n  duplex._final = function (callback) {\n    if (ws.readyState === ws.CONNECTING) {\n      ws.once('open', function open() {\n        duplex._final(callback);\n      });\n      return;\n    }\n\n    // If the value of the `_socket` property is `null` it means that `ws` is a\n    // client websocket and the handshake failed. In fact, when this happens, a\n    // socket is never assigned to the websocket. Wait for the `'error'` event\n    // that will be emitted by the websocket.\n    if (ws._socket === null) return;\n\n    if (ws._socket._writableState.finished) {\n      callback();\n      if (duplex._readableState.endEmitted) duplex.destroy();\n    } else {\n      ws._socket.once('finish', function finish() {\n        // `duplex` is not destroyed here because the `'end'` event will be\n        // emitted on `duplex` after this `'finish'` event. The EOF signaling\n        // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n        callback();\n      });\n      ws.close();\n    }\n  };\n\n  duplex._read = function () {\n    if (ws.readyState === ws.OPEN && !resumeOnReceiverDrain) {\n      resumeOnReceiverDrain = true;\n      if (!ws._receiver._writableState.needDrain) ws._socket.resume();\n    }\n  };\n\n  duplex._write = function (chunk, encoding, callback) {\n    if (ws.readyState === ws.CONNECTING) {\n      ws.once('open', function open() {\n        duplex._write(chunk, encoding, callback);\n      });\n      return;\n    }\n\n    ws.send(chunk, callback);\n  };\n\n  duplex.on('end', duplexOnEnd);\n  duplex.on('error', duplexOnError);\n  return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io/node_modules/ws/lib/stream.js?")},"./node_modules/engine.io/node_modules/ws/lib/subprotocol.js":
/*!*******************************************************************!*\
  !*** ./node_modules/engine.io/node_modules/ws/lib/subprotocol.js ***!
  \*******************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { tokenChars } = __webpack_require__(/*! ./validation */ \"./node_modules/engine.io/node_modules/ws/lib/validation.js\");\n\n/**\n * Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.\n *\n * @param {String} header The field value of the header\n * @return {Set} The subprotocol names\n * @public\n */\nfunction parse(header) {\n  const protocols = new Set();\n  let start = -1;\n  let end = -1;\n  let i = 0;\n\n  for (i; i < header.length; i++) {\n    const code = header.charCodeAt(i);\n\n    if (end === -1 && tokenChars[code] === 1) {\n      if (start === -1) start = i;\n    } else if (\n      i !== 0 &&\n      (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n    ) {\n      if (end === -1 && start !== -1) end = i;\n    } else if (code === 0x2c /* ',' */) {\n      if (start === -1) {\n        throw new SyntaxError(`Unexpected character at index ${i}`);\n      }\n\n      if (end === -1) end = i;\n\n      const protocol = header.slice(start, end);\n\n      if (protocols.has(protocol)) {\n        throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n      }\n\n      protocols.add(protocol);\n      start = end = -1;\n    } else {\n      throw new SyntaxError(`Unexpected character at index ${i}`);\n    }\n  }\n\n  if (start === -1 || end !== -1) {\n    throw new SyntaxError('Unexpected end of input');\n  }\n\n  const protocol = header.slice(start, i);\n\n  if (protocols.has(protocol)) {\n    throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n  }\n\n  protocols.add(protocol);\n  return protocols;\n}\n\nmodule.exports = { parse };\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io/node_modules/ws/lib/subprotocol.js?")},"./node_modules/engine.io/node_modules/ws/lib/validation.js":
/*!******************************************************************!*\
  !*** ./node_modules/engine.io/node_modules/ws/lib/validation.js ***!
  \******************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n  0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n  return (\n    (code >= 1000 &&\n      code <= 1014 &&\n      code !== 1004 &&\n      code !== 1005 &&\n      code !== 1006) ||\n    (code >= 3000 && code <= 4999)\n  );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n  const len = buf.length;\n  let i = 0;\n\n  while (i < len) {\n    if ((buf[i] & 0x80) === 0) {\n      // 0xxxxxxx\n      i++;\n    } else if ((buf[i] & 0xe0) === 0xc0) {\n      // 110xxxxx 10xxxxxx\n      if (\n        i + 1 === len ||\n        (buf[i + 1] & 0xc0) !== 0x80 ||\n        (buf[i] & 0xfe) === 0xc0 // Overlong\n      ) {\n        return false;\n      }\n\n      i += 2;\n    } else if ((buf[i] & 0xf0) === 0xe0) {\n      // 1110xxxx 10xxxxxx 10xxxxxx\n      if (\n        i + 2 >= len ||\n        (buf[i + 1] & 0xc0) !== 0x80 ||\n        (buf[i + 2] & 0xc0) !== 0x80 ||\n        (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n        (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n      ) {\n        return false;\n      }\n\n      i += 3;\n    } else if ((buf[i] & 0xf8) === 0xf0) {\n      // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n      if (\n        i + 3 >= len ||\n        (buf[i + 1] & 0xc0) !== 0x80 ||\n        (buf[i + 2] & 0xc0) !== 0x80 ||\n        (buf[i + 3] & 0xc0) !== 0x80 ||\n        (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n        (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n        buf[i] > 0xf4 // > U+10FFFF\n      ) {\n        return false;\n      }\n\n      i += 4;\n    } else {\n      return false;\n    }\n  }\n\n  return true;\n}\n\ntry {\n  const isValidUTF8 = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'utf-8-validate'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\n\n  module.exports = {\n    isValidStatusCode,\n    isValidUTF8(buf) {\n      return buf.length < 150 ? _isValidUTF8(buf) : isValidUTF8(buf);\n    },\n    tokenChars\n  };\n} catch (e) /* istanbul ignore next */ {\n  module.exports = {\n    isValidStatusCode,\n    isValidUTF8: _isValidUTF8,\n    tokenChars\n  };\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io/node_modules/ws/lib/validation.js?")},"./node_modules/engine.io/node_modules/ws/lib/websocket-server.js":
/*!************************************************************************!*\
  !*** ./node_modules/engine.io/node_modules/ws/lib/websocket-server.js ***!
  \************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^net|tls|https$\" }] */\n\n\n\nconst EventEmitter = __webpack_require__(/*! events */ \"events\");\nconst http = __webpack_require__(/*! http */ \"http\");\nconst https = __webpack_require__(/*! https */ \"https\");\nconst net = __webpack_require__(/*! net */ \"net\");\nconst tls = __webpack_require__(/*! tls */ \"tls\");\nconst { createHash } = __webpack_require__(/*! crypto */ \"crypto\");\n\nconst extension = __webpack_require__(/*! ./extension */ \"./node_modules/engine.io/node_modules/ws/lib/extension.js\");\nconst PerMessageDeflate = __webpack_require__(/*! ./permessage-deflate */ \"./node_modules/engine.io/node_modules/ws/lib/permessage-deflate.js\");\nconst subprotocol = __webpack_require__(/*! ./subprotocol */ \"./node_modules/engine.io/node_modules/ws/lib/subprotocol.js\");\nconst WebSocket = __webpack_require__(/*! ./websocket */ \"./node_modules/engine.io/node_modules/ws/lib/websocket.js\");\nconst { GUID, kWebSocket } = __webpack_require__(/*! ./constants */ \"./node_modules/engine.io/node_modules/ws/lib/constants.js\");\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n  /**\n   * Create a `WebSocketServer` instance.\n   *\n   * @param {Object} options Configuration options\n   * @param {Number} [options.backlog=511] The maximum length of the queue of\n   *     pending connections\n   * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n   *     track clients\n   * @param {Function} [options.handleProtocols] A hook to handle protocols\n   * @param {String} [options.host] The hostname where to bind the server\n   * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n   *     size\n   * @param {Boolean} [options.noServer=false] Enable no server mode\n   * @param {String} [options.path] Accept only connections matching this path\n   * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n   *     permessage-deflate\n   * @param {Number} [options.port] The port where to bind the server\n   * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n   *     server to use\n   * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n   *     not to skip UTF-8 validation for text and close messages\n   * @param {Function} [options.verifyClient] A hook to reject connections\n   * @param {Function} [callback] A listener for the `listening` event\n   */\n  constructor(options, callback) {\n    super();\n\n    options = {\n      maxPayload: 100 * 1024 * 1024,\n      skipUTF8Validation: false,\n      perMessageDeflate: false,\n      handleProtocols: null,\n      clientTracking: true,\n      verifyClient: null,\n      noServer: false,\n      backlog: null, // use default (511 as implemented in net.js)\n      server: null,\n      host: null,\n      path: null,\n      port: null,\n      ...options\n    };\n\n    if (\n      (options.port == null && !options.server && !options.noServer) ||\n      (options.port != null && (options.server || options.noServer)) ||\n      (options.server && options.noServer)\n    ) {\n      throw new TypeError(\n        'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n          'must be specified'\n      );\n    }\n\n    if (options.port != null) {\n      this._server = http.createServer((req, res) => {\n        const body = http.STATUS_CODES[426];\n\n        res.writeHead(426, {\n          'Content-Length': body.length,\n          'Content-Type': 'text/plain'\n        });\n        res.end(body);\n      });\n      this._server.listen(\n        options.port,\n        options.host,\n        options.backlog,\n        callback\n      );\n    } else if (options.server) {\n      this._server = options.server;\n    }\n\n    if (this._server) {\n      const emitConnection = this.emit.bind(this, 'connection');\n\n      this._removeListeners = addListeners(this._server, {\n        listening: this.emit.bind(this, 'listening'),\n        error: this.emit.bind(this, 'error'),\n        upgrade: (req, socket, head) => {\n          this.handleUpgrade(req, socket, head, emitConnection);\n        }\n      });\n    }\n\n    if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n    if (options.clientTracking) {\n      this.clients = new Set();\n      this._shouldEmitClose = false;\n    }\n\n    this.options = options;\n    this._state = RUNNING;\n  }\n\n  /**\n   * Returns the bound address, the address family name, and port of the server\n   * as reported by the operating system if listening on an IP socket.\n   * If the server is listening on a pipe or UNIX domain socket, the name is\n   * returned as a string.\n   *\n   * @return {(Object|String|null)} The address of the server\n   * @public\n   */\n  address() {\n    if (this.options.noServer) {\n      throw new Error('The server is operating in \"noServer\" mode');\n    }\n\n    if (!this._server) return null;\n    return this._server.address();\n  }\n\n  /**\n   * Stop the server from accepting new connections and emit the `'close'` event\n   * when all existing connections are closed.\n   *\n   * @param {Function} [cb] A one-time listener for the `'close'` event\n   * @public\n   */\n  close(cb) {\n    if (this._state === CLOSED) {\n      if (cb) {\n        this.once('close', () => {\n          cb(new Error('The server is not running'));\n        });\n      }\n\n      process.nextTick(emitClose, this);\n      return;\n    }\n\n    if (cb) this.once('close', cb);\n\n    if (this._state === CLOSING) return;\n    this._state = CLOSING;\n\n    if (this.options.noServer || this.options.server) {\n      if (this._server) {\n        this._removeListeners();\n        this._removeListeners = this._server = null;\n      }\n\n      if (this.clients) {\n        if (!this.clients.size) {\n          process.nextTick(emitClose, this);\n        } else {\n          this._shouldEmitClose = true;\n        }\n      } else {\n        process.nextTick(emitClose, this);\n      }\n    } else {\n      const server = this._server;\n\n      this._removeListeners();\n      this._removeListeners = this._server = null;\n\n      //\n      // The HTTP/S server was created internally. Close it, and rely on its\n      // `'close'` event.\n      //\n      server.close(() => {\n        emitClose(this);\n      });\n    }\n  }\n\n  /**\n   * See if a given request should be handled by this server instance.\n   *\n   * @param {http.IncomingMessage} req Request object to inspect\n   * @return {Boolean} `true` if the request is valid, else `false`\n   * @public\n   */\n  shouldHandle(req) {\n    if (this.options.path) {\n      const index = req.url.indexOf('?');\n      const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n      if (pathname !== this.options.path) return false;\n    }\n\n    return true;\n  }\n\n  /**\n   * Handle a HTTP Upgrade request.\n   *\n   * @param {http.IncomingMessage} req The request object\n   * @param {(net.Socket|tls.Socket)} socket The network socket between the\n   *     server and client\n   * @param {Buffer} head The first packet of the upgraded stream\n   * @param {Function} cb Callback\n   * @public\n   */\n  handleUpgrade(req, socket, head, cb) {\n    socket.on('error', socketOnError);\n\n    const key =\n      req.headers['sec-websocket-key'] !== undefined\n        ? req.headers['sec-websocket-key']\n        : false;\n    const version = +req.headers['sec-websocket-version'];\n\n    if (\n      req.method !== 'GET' ||\n      req.headers.upgrade.toLowerCase() !== 'websocket' ||\n      !key ||\n      !keyRegex.test(key) ||\n      (version !== 8 && version !== 13) ||\n      !this.shouldHandle(req)\n    ) {\n      return abortHandshake(socket, 400);\n    }\n\n    const secWebSocketProtocol = req.headers['sec-websocket-protocol'];\n    let protocols = new Set();\n\n    if (secWebSocketProtocol !== undefined) {\n      try {\n        protocols = subprotocol.parse(secWebSocketProtocol);\n      } catch (err) {\n        return abortHandshake(socket, 400);\n      }\n    }\n\n    const secWebSocketExtensions = req.headers['sec-websocket-extensions'];\n    const extensions = {};\n\n    if (\n      this.options.perMessageDeflate &&\n      secWebSocketExtensions !== undefined\n    ) {\n      const perMessageDeflate = new PerMessageDeflate(\n        this.options.perMessageDeflate,\n        true,\n        this.options.maxPayload\n      );\n\n      try {\n        const offers = extension.parse(secWebSocketExtensions);\n\n        if (offers[PerMessageDeflate.extensionName]) {\n          perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n          extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n        }\n      } catch (err) {\n        return abortHandshake(socket, 400);\n      }\n    }\n\n    //\n    // Optionally call external client verification handler.\n    //\n    if (this.options.verifyClient) {\n      const info = {\n        origin:\n          req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n        secure: !!(req.socket.authorized || req.socket.encrypted),\n        req\n      };\n\n      if (this.options.verifyClient.length === 2) {\n        this.options.verifyClient(info, (verified, code, message, headers) => {\n          if (!verified) {\n            return abortHandshake(socket, code || 401, message, headers);\n          }\n\n          this.completeUpgrade(\n            extensions,\n            key,\n            protocols,\n            req,\n            socket,\n            head,\n            cb\n          );\n        });\n        return;\n      }\n\n      if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n    }\n\n    this.completeUpgrade(extensions, key, protocols, req, socket, head, cb);\n  }\n\n  /**\n   * Upgrade the connection to WebSocket.\n   *\n   * @param {Object} extensions The accepted extensions\n   * @param {String} key The value of the `Sec-WebSocket-Key` header\n   * @param {Set} protocols The subprotocols\n   * @param {http.IncomingMessage} req The request object\n   * @param {(net.Socket|tls.Socket)} socket The network socket between the\n   *     server and client\n   * @param {Buffer} head The first packet of the upgraded stream\n   * @param {Function} cb Callback\n   * @throws {Error} If called more than once with the same socket\n   * @private\n   */\n  completeUpgrade(extensions, key, protocols, req, socket, head, cb) {\n    //\n    // Destroy the socket if the client has already sent a FIN packet.\n    //\n    if (!socket.readable || !socket.writable) return socket.destroy();\n\n    if (socket[kWebSocket]) {\n      throw new Error(\n        'server.handleUpgrade() was called more than once with the same ' +\n          'socket, possibly due to a misconfiguration'\n      );\n    }\n\n    if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n    const digest = createHash('sha1')\n      .update(key + GUID)\n      .digest('base64');\n\n    const headers = [\n      'HTTP/1.1 101 Switching Protocols',\n      'Upgrade: websocket',\n      'Connection: Upgrade',\n      `Sec-WebSocket-Accept: ${digest}`\n    ];\n\n    const ws = new WebSocket(null);\n\n    if (protocols.size) {\n      //\n      // Optionally call external protocol selection handler.\n      //\n      const protocol = this.options.handleProtocols\n        ? this.options.handleProtocols(protocols, req)\n        : protocols.values().next().value;\n\n      if (protocol) {\n        headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n        ws._protocol = protocol;\n      }\n    }\n\n    if (extensions[PerMessageDeflate.extensionName]) {\n      const params = extensions[PerMessageDeflate.extensionName].params;\n      const value = extension.format({\n        [PerMessageDeflate.extensionName]: [params]\n      });\n      headers.push(`Sec-WebSocket-Extensions: ${value}`);\n      ws._extensions = extensions;\n    }\n\n    //\n    // Allow external modification/inspection of handshake headers.\n    //\n    this.emit('headers', headers, req);\n\n    socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n    socket.removeListener('error', socketOnError);\n\n    ws.setSocket(socket, head, {\n      maxPayload: this.options.maxPayload,\n      skipUTF8Validation: this.options.skipUTF8Validation\n    });\n\n    if (this.clients) {\n      this.clients.add(ws);\n      ws.on('close', () => {\n        this.clients.delete(ws);\n\n        if (this._shouldEmitClose && !this.clients.size) {\n          process.nextTick(emitClose, this);\n        }\n      });\n    }\n\n    cb(ws, req);\n  }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of <event, listener>\n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.<String, Function>} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n *     called\n * @private\n */\nfunction addListeners(server, map) {\n  for (const event of Object.keys(map)) server.on(event, map[event]);\n\n  return function removeListeners() {\n    for (const event of Object.keys(map)) {\n      server.removeListener(event, map[event]);\n    }\n  };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n  server._state = CLOSED;\n  server.emit('close');\n}\n\n/**\n * Handle premature socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n  this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {(net.Socket|tls.Socket)} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n  if (socket.writable) {\n    message = message || http.STATUS_CODES[code];\n    headers = {\n      Connection: 'close',\n      'Content-Type': 'text/html',\n      'Content-Length': Buffer.byteLength(message),\n      ...headers\n    };\n\n    socket.write(\n      `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n        Object.keys(headers)\n          .map((h) => `${h}: ${headers[h]}`)\n          .join('\\r\\n') +\n        '\\r\\n\\r\\n' +\n        message\n    );\n  }\n\n  socket.removeListener('error', socketOnError);\n  socket.destroy();\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io/node_modules/ws/lib/websocket-server.js?")},"./node_modules/engine.io/node_modules/ws/lib/websocket.js":
/*!*****************************************************************!*\
  !*** ./node_modules/engine.io/node_modules/ws/lib/websocket.js ***!
  \*****************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Readable$\" }] */\n\n\n\nconst EventEmitter = __webpack_require__(/*! events */ \"events\");\nconst https = __webpack_require__(/*! https */ \"https\");\nconst http = __webpack_require__(/*! http */ \"http\");\nconst net = __webpack_require__(/*! net */ \"net\");\nconst tls = __webpack_require__(/*! tls */ \"tls\");\nconst { randomBytes, createHash } = __webpack_require__(/*! crypto */ \"crypto\");\nconst { Readable } = __webpack_require__(/*! stream */ \"stream\");\nconst { URL } = __webpack_require__(/*! url */ \"url\");\n\nconst PerMessageDeflate = __webpack_require__(/*! ./permessage-deflate */ \"./node_modules/engine.io/node_modules/ws/lib/permessage-deflate.js\");\nconst Receiver = __webpack_require__(/*! ./receiver */ \"./node_modules/engine.io/node_modules/ws/lib/receiver.js\");\nconst Sender = __webpack_require__(/*! ./sender */ \"./node_modules/engine.io/node_modules/ws/lib/sender.js\");\nconst {\n  BINARY_TYPES,\n  EMPTY_BUFFER,\n  GUID,\n  kForOnEventAttribute,\n  kListener,\n  kStatusCode,\n  kWebSocket,\n  NOOP\n} = __webpack_require__(/*! ./constants */ \"./node_modules/engine.io/node_modules/ws/lib/constants.js\");\nconst {\n  EventTarget: { addEventListener, removeEventListener }\n} = __webpack_require__(/*! ./event-target */ \"./node_modules/engine.io/node_modules/ws/lib/event-target.js\");\nconst { format, parse } = __webpack_require__(/*! ./extension */ \"./node_modules/engine.io/node_modules/ws/lib/extension.js\");\nconst { toBuffer } = __webpack_require__(/*! ./buffer-util */ \"./node_modules/engine.io/node_modules/ws/lib/buffer-util.js\");\n\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst subprotocolRegex = /^[!#$%&'*+\\-.0-9A-Z^_`|a-z~]+$/;\nconst protocolVersions = [8, 13];\nconst closeTimeout = 30 * 1000;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n  /**\n   * Create a new `WebSocket`.\n   *\n   * @param {(String|URL)} address The URL to which to connect\n   * @param {(String|String[])} [protocols] The subprotocols\n   * @param {Object} [options] Connection options\n   */\n  constructor(address, protocols, options) {\n    super();\n\n    this._binaryType = BINARY_TYPES[0];\n    this._closeCode = 1006;\n    this._closeFrameReceived = false;\n    this._closeFrameSent = false;\n    this._closeMessage = EMPTY_BUFFER;\n    this._closeTimer = null;\n    this._extensions = {};\n    this._protocol = '';\n    this._readyState = WebSocket.CONNECTING;\n    this._receiver = null;\n    this._sender = null;\n    this._socket = null;\n\n    if (address !== null) {\n      this._bufferedAmount = 0;\n      this._isServer = false;\n      this._redirects = 0;\n\n      if (protocols === undefined) {\n        protocols = [];\n      } else if (!Array.isArray(protocols)) {\n        if (typeof protocols === 'object' && protocols !== null) {\n          options = protocols;\n          protocols = [];\n        } else {\n          protocols = [protocols];\n        }\n      }\n\n      initAsClient(this, address, protocols, options);\n    } else {\n      this._isServer = true;\n    }\n  }\n\n  /**\n   * This deviates from the WHATWG interface since ws doesn't support the\n   * required default \"blob\" type (instead we define a custom \"nodebuffer\"\n   * type).\n   *\n   * @type {String}\n   */\n  get binaryType() {\n    return this._binaryType;\n  }\n\n  set binaryType(type) {\n    if (!BINARY_TYPES.includes(type)) return;\n\n    this._binaryType = type;\n\n    //\n    // Allow to change `binaryType` on the fly.\n    //\n    if (this._receiver) this._receiver._binaryType = type;\n  }\n\n  /**\n   * @type {Number}\n   */\n  get bufferedAmount() {\n    if (!this._socket) return this._bufferedAmount;\n\n    return this._socket._writableState.length + this._sender._bufferedBytes;\n  }\n\n  /**\n   * @type {String}\n   */\n  get extensions() {\n    return Object.keys(this._extensions).join();\n  }\n\n  /**\n   * @type {Function}\n   */\n  /* istanbul ignore next */\n  get onclose() {\n    return null;\n  }\n\n  /**\n   * @type {Function}\n   */\n  /* istanbul ignore next */\n  get onerror() {\n    return null;\n  }\n\n  /**\n   * @type {Function}\n   */\n  /* istanbul ignore next */\n  get onopen() {\n    return null;\n  }\n\n  /**\n   * @type {Function}\n   */\n  /* istanbul ignore next */\n  get onmessage() {\n    return null;\n  }\n\n  /**\n   * @type {String}\n   */\n  get protocol() {\n    return this._protocol;\n  }\n\n  /**\n   * @type {Number}\n   */\n  get readyState() {\n    return this._readyState;\n  }\n\n  /**\n   * @type {String}\n   */\n  get url() {\n    return this._url;\n  }\n\n  /**\n   * Set up the socket and the internal resources.\n   *\n   * @param {(net.Socket|tls.Socket)} socket The network socket between the\n   *     server and client\n   * @param {Buffer} head The first packet of the upgraded stream\n   * @param {Object} options Options object\n   * @param {Number} [options.maxPayload=0] The maximum allowed message size\n   * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n   *     not to skip UTF-8 validation for text and close messages\n   * @private\n   */\n  setSocket(socket, head, options) {\n    const receiver = new Receiver({\n      binaryType: this.binaryType,\n      extensions: this._extensions,\n      isServer: this._isServer,\n      maxPayload: options.maxPayload,\n      skipUTF8Validation: options.skipUTF8Validation\n    });\n\n    this._sender = new Sender(socket, this._extensions);\n    this._receiver = receiver;\n    this._socket = socket;\n\n    receiver[kWebSocket] = this;\n    socket[kWebSocket] = this;\n\n    receiver.on('conclude', receiverOnConclude);\n    receiver.on('drain', receiverOnDrain);\n    receiver.on('error', receiverOnError);\n    receiver.on('message', receiverOnMessage);\n    receiver.on('ping', receiverOnPing);\n    receiver.on('pong', receiverOnPong);\n\n    socket.setTimeout(0);\n    socket.setNoDelay();\n\n    if (head.length > 0) socket.unshift(head);\n\n    socket.on('close', socketOnClose);\n    socket.on('data', socketOnData);\n    socket.on('end', socketOnEnd);\n    socket.on('error', socketOnError);\n\n    this._readyState = WebSocket.OPEN;\n    this.emit('open');\n  }\n\n  /**\n   * Emit the `'close'` event.\n   *\n   * @private\n   */\n  emitClose() {\n    if (!this._socket) {\n      this._readyState = WebSocket.CLOSED;\n      this.emit('close', this._closeCode, this._closeMessage);\n      return;\n    }\n\n    if (this._extensions[PerMessageDeflate.extensionName]) {\n      this._extensions[PerMessageDeflate.extensionName].cleanup();\n    }\n\n    this._receiver.removeAllListeners();\n    this._readyState = WebSocket.CLOSED;\n    this.emit('close', this._closeCode, this._closeMessage);\n  }\n\n  /**\n   * Start a closing handshake.\n   *\n   *          +----------+   +-----------+   +----------+\n   *     - - -|ws.close()|--\x3e|close frame|--\x3e|ws.close()|- - -\n   *    |     +----------+   +-----------+   +----------+     |\n   *          +----------+   +-----------+         |\n   * CLOSING  |ws.close()|<--|close frame|<--+-----+       CLOSING\n   *          +----------+   +-----------+   |\n   *    |           |                        |   +---+        |\n   *                +------------------------+--\x3e|fin| - - - -\n   *    |         +---+                      |   +---+\n   *     - - - - -|fin|<---------------------+\n   *              +---+\n   *\n   * @param {Number} [code] Status code explaining why the connection is closing\n   * @param {(String|Buffer)} [data] The reason why the connection is\n   *     closing\n   * @public\n   */\n  close(code, data) {\n    if (this.readyState === WebSocket.CLOSED) return;\n    if (this.readyState === WebSocket.CONNECTING) {\n      const msg = 'WebSocket was closed before the connection was established';\n      return abortHandshake(this, this._req, msg);\n    }\n\n    if (this.readyState === WebSocket.CLOSING) {\n      if (\n        this._closeFrameSent &&\n        (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n      ) {\n        this._socket.end();\n      }\n\n      return;\n    }\n\n    this._readyState = WebSocket.CLOSING;\n    this._sender.close(code, data, !this._isServer, (err) => {\n      //\n      // This error is handled by the `'error'` listener on the socket. We only\n      // want to know if the close frame has been sent here.\n      //\n      if (err) return;\n\n      this._closeFrameSent = true;\n\n      if (\n        this._closeFrameReceived ||\n        this._receiver._writableState.errorEmitted\n      ) {\n        this._socket.end();\n      }\n    });\n\n    //\n    // Specify a timeout for the closing handshake to complete.\n    //\n    this._closeTimer = setTimeout(\n      this._socket.destroy.bind(this._socket),\n      closeTimeout\n    );\n  }\n\n  /**\n   * Send a ping.\n   *\n   * @param {*} [data] The data to send\n   * @param {Boolean} [mask] Indicates whether or not to mask `data`\n   * @param {Function} [cb] Callback which is executed when the ping is sent\n   * @public\n   */\n  ping(data, mask, cb) {\n    if (this.readyState === WebSocket.CONNECTING) {\n      throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n    }\n\n    if (typeof data === 'function') {\n      cb = data;\n      data = mask = undefined;\n    } else if (typeof mask === 'function') {\n      cb = mask;\n      mask = undefined;\n    }\n\n    if (typeof data === 'number') data = data.toString();\n\n    if (this.readyState !== WebSocket.OPEN) {\n      sendAfterClose(this, data, cb);\n      return;\n    }\n\n    if (mask === undefined) mask = !this._isServer;\n    this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n  }\n\n  /**\n   * Send a pong.\n   *\n   * @param {*} [data] The data to send\n   * @param {Boolean} [mask] Indicates whether or not to mask `data`\n   * @param {Function} [cb] Callback which is executed when the pong is sent\n   * @public\n   */\n  pong(data, mask, cb) {\n    if (this.readyState === WebSocket.CONNECTING) {\n      throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n    }\n\n    if (typeof data === 'function') {\n      cb = data;\n      data = mask = undefined;\n    } else if (typeof mask === 'function') {\n      cb = mask;\n      mask = undefined;\n    }\n\n    if (typeof data === 'number') data = data.toString();\n\n    if (this.readyState !== WebSocket.OPEN) {\n      sendAfterClose(this, data, cb);\n      return;\n    }\n\n    if (mask === undefined) mask = !this._isServer;\n    this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n  }\n\n  /**\n   * Send a data message.\n   *\n   * @param {*} data The message to send\n   * @param {Object} [options] Options object\n   * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n   *     text\n   * @param {Boolean} [options.compress] Specifies whether or not to compress\n   *     `data`\n   * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n   *     last one\n   * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n   * @param {Function} [cb] Callback which is executed when data is written out\n   * @public\n   */\n  send(data, options, cb) {\n    if (this.readyState === WebSocket.CONNECTING) {\n      throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n    }\n\n    if (typeof options === 'function') {\n      cb = options;\n      options = {};\n    }\n\n    if (typeof data === 'number') data = data.toString();\n\n    if (this.readyState !== WebSocket.OPEN) {\n      sendAfterClose(this, data, cb);\n      return;\n    }\n\n    const opts = {\n      binary: typeof data !== 'string',\n      mask: !this._isServer,\n      compress: true,\n      fin: true,\n      ...options\n    };\n\n    if (!this._extensions[PerMessageDeflate.extensionName]) {\n      opts.compress = false;\n    }\n\n    this._sender.send(data || EMPTY_BUFFER, opts, cb);\n  }\n\n  /**\n   * Forcibly close the connection.\n   *\n   * @public\n   */\n  terminate() {\n    if (this.readyState === WebSocket.CLOSED) return;\n    if (this.readyState === WebSocket.CONNECTING) {\n      const msg = 'WebSocket was closed before the connection was established';\n      return abortHandshake(this, this._req, msg);\n    }\n\n    if (this._socket) {\n      this._readyState = WebSocket.CLOSING;\n      this._socket.destroy();\n    }\n  }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n  enumerable: true,\n  value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n  enumerable: true,\n  value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n  enumerable: true,\n  value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n  enumerable: true,\n  value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n  enumerable: true,\n  value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n  enumerable: true,\n  value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n  enumerable: true,\n  value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n  enumerable: true,\n  value: readyStates.indexOf('CLOSED')\n});\n\n[\n  'binaryType',\n  'bufferedAmount',\n  'extensions',\n  'protocol',\n  'readyState',\n  'url'\n].forEach((property) => {\n  Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n  Object.defineProperty(WebSocket.prototype, `on${method}`, {\n    enumerable: true,\n    get() {\n      for (const listener of this.listeners(method)) {\n        if (listener[kForOnEventAttribute]) return listener[kListener];\n      }\n\n      return null;\n    },\n    set(handler) {\n      for (const listener of this.listeners(method)) {\n        if (listener[kForOnEventAttribute]) {\n          this.removeListener(method, listener);\n          break;\n        }\n      }\n\n      if (typeof handler !== 'function') return;\n\n      this.addEventListener(method, handler, {\n        [kForOnEventAttribute]: true\n      });\n    }\n  });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {Array} protocols The subprotocols\n * @param {Object} [options] Connection options\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n *     redirects\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n *     handshake request\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n *     size\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n *     allowed\n * @param {String} [options.origin] Value of the `Origin` or\n *     `Sec-WebSocket-Origin` header\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n *     permessage-deflate\n * @param {Number} [options.protocolVersion=13] Value of the\n *     `Sec-WebSocket-Version` header\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n *     not to skip UTF-8 validation for text and close messages\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n  const opts = {\n    protocolVersion: protocolVersions[1],\n    maxPayload: 100 * 1024 * 1024,\n    skipUTF8Validation: false,\n    perMessageDeflate: true,\n    followRedirects: false,\n    maxRedirects: 10,\n    ...options,\n    createConnection: undefined,\n    socketPath: undefined,\n    hostname: undefined,\n    protocol: undefined,\n    timeout: undefined,\n    method: undefined,\n    host: undefined,\n    path: undefined,\n    port: undefined\n  };\n\n  if (!protocolVersions.includes(opts.protocolVersion)) {\n    throw new RangeError(\n      `Unsupported protocol version: ${opts.protocolVersion} ` +\n        `(supported versions: ${protocolVersions.join(', ')})`\n    );\n  }\n\n  let parsedUrl;\n\n  if (address instanceof URL) {\n    parsedUrl = address;\n    websocket._url = address.href;\n  } else {\n    try {\n      parsedUrl = new URL(address);\n    } catch (e) {\n      throw new SyntaxError(`Invalid URL: ${address}`);\n    }\n\n    websocket._url = address;\n  }\n\n  const isSecure = parsedUrl.protocol === 'wss:';\n  const isUnixSocket = parsedUrl.protocol === 'ws+unix:';\n\n  if (parsedUrl.protocol !== 'ws:' && !isSecure && !isUnixSocket) {\n    throw new SyntaxError(\n      'The URL\\'s protocol must be one of \"ws:\", \"wss:\", or \"ws+unix:\"'\n    );\n  }\n\n  if (isUnixSocket && !parsedUrl.pathname) {\n    throw new SyntaxError(\"The URL's pathname is empty\");\n  }\n\n  if (parsedUrl.hash) {\n    throw new SyntaxError('The URL contains a fragment identifier');\n  }\n\n  const defaultPort = isSecure ? 443 : 80;\n  const key = randomBytes(16).toString('base64');\n  const get = isSecure ? https.get : http.get;\n  const protocolSet = new Set();\n  let perMessageDeflate;\n\n  opts.createConnection = isSecure ? tlsConnect : netConnect;\n  opts.defaultPort = opts.defaultPort || defaultPort;\n  opts.port = parsedUrl.port || defaultPort;\n  opts.host = parsedUrl.hostname.startsWith('[')\n    ? parsedUrl.hostname.slice(1, -1)\n    : parsedUrl.hostname;\n  opts.headers = {\n    'Sec-WebSocket-Version': opts.protocolVersion,\n    'Sec-WebSocket-Key': key,\n    Connection: 'Upgrade',\n    Upgrade: 'websocket',\n    ...opts.headers\n  };\n  opts.path = parsedUrl.pathname + parsedUrl.search;\n  opts.timeout = opts.handshakeTimeout;\n\n  if (opts.perMessageDeflate) {\n    perMessageDeflate = new PerMessageDeflate(\n      opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},\n      false,\n      opts.maxPayload\n    );\n    opts.headers['Sec-WebSocket-Extensions'] = format({\n      [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n    });\n  }\n  if (protocols.length) {\n    for (const protocol of protocols) {\n      if (\n        typeof protocol !== 'string' ||\n        !subprotocolRegex.test(protocol) ||\n        protocolSet.has(protocol)\n      ) {\n        throw new SyntaxError(\n          'An invalid or duplicated subprotocol was specified'\n        );\n      }\n\n      protocolSet.add(protocol);\n    }\n\n    opts.headers['Sec-WebSocket-Protocol'] = protocols.join(',');\n  }\n  if (opts.origin) {\n    if (opts.protocolVersion < 13) {\n      opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n    } else {\n      opts.headers.Origin = opts.origin;\n    }\n  }\n  if (parsedUrl.username || parsedUrl.password) {\n    opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n  }\n\n  if (isUnixSocket) {\n    const parts = opts.path.split(':');\n\n    opts.socketPath = parts[0];\n    opts.path = parts[1];\n  }\n\n  let req = (websocket._req = get(opts));\n\n  if (opts.timeout) {\n    req.on('timeout', () => {\n      abortHandshake(websocket, req, 'Opening handshake has timed out');\n    });\n  }\n\n  req.on('error', (err) => {\n    if (req === null || req.aborted) return;\n\n    req = websocket._req = null;\n    websocket._readyState = WebSocket.CLOSING;\n    websocket.emit('error', err);\n    websocket.emitClose();\n  });\n\n  req.on('response', (res) => {\n    const location = res.headers.location;\n    const statusCode = res.statusCode;\n\n    if (\n      location &&\n      opts.followRedirects &&\n      statusCode >= 300 &&\n      statusCode < 400\n    ) {\n      if (++websocket._redirects > opts.maxRedirects) {\n        abortHandshake(websocket, req, 'Maximum redirects exceeded');\n        return;\n      }\n\n      req.abort();\n\n      const addr = new URL(location, address);\n\n      initAsClient(websocket, addr, protocols, options);\n    } else if (!websocket.emit('unexpected-response', req, res)) {\n      abortHandshake(\n        websocket,\n        req,\n        `Unexpected server response: ${res.statusCode}`\n      );\n    }\n  });\n\n  req.on('upgrade', (res, socket, head) => {\n    websocket.emit('upgrade', res);\n\n    //\n    // The user may have closed the connection from a listener of the `upgrade`\n    // event.\n    //\n    if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n    req = websocket._req = null;\n\n    const digest = createHash('sha1')\n      .update(key + GUID)\n      .digest('base64');\n\n    if (res.headers['sec-websocket-accept'] !== digest) {\n      abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n      return;\n    }\n\n    const serverProt = res.headers['sec-websocket-protocol'];\n    let protError;\n\n    if (serverProt !== undefined) {\n      if (!protocolSet.size) {\n        protError = 'Server sent a subprotocol but none was requested';\n      } else if (!protocolSet.has(serverProt)) {\n        protError = 'Server sent an invalid subprotocol';\n      }\n    } else if (protocolSet.size) {\n      protError = 'Server sent no subprotocol';\n    }\n\n    if (protError) {\n      abortHandshake(websocket, socket, protError);\n      return;\n    }\n\n    if (serverProt) websocket._protocol = serverProt;\n\n    const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n    if (secWebSocketExtensions !== undefined) {\n      if (!perMessageDeflate) {\n        const message =\n          'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n          'was requested';\n        abortHandshake(websocket, socket, message);\n        return;\n      }\n\n      let extensions;\n\n      try {\n        extensions = parse(secWebSocketExtensions);\n      } catch (err) {\n        const message = 'Invalid Sec-WebSocket-Extensions header';\n        abortHandshake(websocket, socket, message);\n        return;\n      }\n\n      const extensionNames = Object.keys(extensions);\n\n      if (\n        extensionNames.length !== 1 ||\n        extensionNames[0] !== PerMessageDeflate.extensionName\n      ) {\n        const message = 'Server indicated an extension that was not requested';\n        abortHandshake(websocket, socket, message);\n        return;\n      }\n\n      try {\n        perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n      } catch (err) {\n        const message = 'Invalid Sec-WebSocket-Extensions header';\n        abortHandshake(websocket, socket, message);\n        return;\n      }\n\n      websocket._extensions[PerMessageDeflate.extensionName] =\n        perMessageDeflate;\n    }\n\n    websocket.setSocket(socket, head, {\n      maxPayload: opts.maxPayload,\n      skipUTF8Validation: opts.skipUTF8Validation\n    });\n  });\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n  options.path = options.socketPath;\n  return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n  options.path = undefined;\n\n  if (!options.servername && options.servername !== '') {\n    options.servername = net.isIP(options.host) ? '' : options.host;\n  }\n\n  return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n *     abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n  websocket._readyState = WebSocket.CLOSING;\n\n  const err = new Error(message);\n  Error.captureStackTrace(err, abortHandshake);\n\n  if (stream.setHeader) {\n    stream.abort();\n\n    if (stream.socket && !stream.socket.destroyed) {\n      //\n      // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n      // called after the request completed. See\n      // https://github.com/websockets/ws/issues/1869.\n      //\n      stream.socket.destroy();\n    }\n\n    stream.once('abort', websocket.emitClose.bind(websocket));\n    websocket.emit('error', err);\n  } else {\n    stream.destroy(err);\n    stream.once('error', websocket.emit.bind(websocket, 'error'));\n    stream.once('close', websocket.emitClose.bind(websocket));\n  }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n  if (data) {\n    const length = toBuffer(data).length;\n\n    //\n    // The `_bufferedAmount` property is used only when the peer is a client and\n    // the opening handshake fails. Under these circumstances, in fact, the\n    // `setSocket()` method is not called, so the `_socket` and `_sender`\n    // properties are set to `null`.\n    //\n    if (websocket._socket) websocket._sender._bufferedBytes += length;\n    else websocket._bufferedAmount += length;\n  }\n\n  if (cb) {\n    const err = new Error(\n      `WebSocket is not open: readyState ${websocket.readyState} ` +\n        `(${readyStates[websocket.readyState]})`\n    );\n    cb(err);\n  }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {Buffer} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n  const websocket = this[kWebSocket];\n\n  websocket._closeFrameReceived = true;\n  websocket._closeMessage = reason;\n  websocket._closeCode = code;\n\n  if (websocket._socket[kWebSocket] === undefined) return;\n\n  websocket._socket.removeListener('data', socketOnData);\n  process.nextTick(resume, websocket._socket);\n\n  if (code === 1005) websocket.close();\n  else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n  this[kWebSocket]._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n  const websocket = this[kWebSocket];\n\n  if (websocket._socket[kWebSocket] !== undefined) {\n    websocket._socket.removeListener('data', socketOnData);\n\n    //\n    // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n    // https://github.com/websockets/ws/issues/1940.\n    //\n    process.nextTick(resume, websocket._socket);\n\n    websocket.close(err[kStatusCode]);\n  }\n\n  websocket.emit('error', err);\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n  this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {Buffer|ArrayBuffer|Buffer[])} data The message\n * @param {Boolean} isBinary Specifies whether the message is binary or not\n * @private\n */\nfunction receiverOnMessage(data, isBinary) {\n  this[kWebSocket].emit('message', data, isBinary);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n  const websocket = this[kWebSocket];\n\n  websocket.pong(data, !websocket._isServer, NOOP);\n  websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n  this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n  stream.resume();\n}\n\n/**\n * The listener of the `net.Socket` `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n  const websocket = this[kWebSocket];\n\n  this.removeListener('close', socketOnClose);\n  this.removeListener('data', socketOnData);\n  this.removeListener('end', socketOnEnd);\n\n  websocket._readyState = WebSocket.CLOSING;\n\n  let chunk;\n\n  //\n  // The close frame might not have been received or the `'end'` event emitted,\n  // for example, if the socket was destroyed due to an error. Ensure that the\n  // `receiver` stream is closed after writing any remaining buffered data to\n  // it. If the readable side of the socket is in flowing mode then there is no\n  // buffered data as everything has been already written and `readable.read()`\n  // will return `null`. If instead, the socket is paused, any possible buffered\n  // data will be read as a single chunk.\n  //\n  if (\n    !this._readableState.endEmitted &&\n    !websocket._closeFrameReceived &&\n    !websocket._receiver._writableState.errorEmitted &&\n    (chunk = websocket._socket.read()) !== null\n  ) {\n    websocket._receiver.write(chunk);\n  }\n\n  websocket._receiver.end();\n\n  this[kWebSocket] = undefined;\n\n  clearTimeout(websocket._closeTimer);\n\n  if (\n    websocket._receiver._writableState.finished ||\n    websocket._receiver._writableState.errorEmitted\n  ) {\n    websocket.emitClose();\n  } else {\n    websocket._receiver.on('error', receiverOnFinish);\n    websocket._receiver.on('finish', receiverOnFinish);\n  }\n}\n\n/**\n * The listener of the `net.Socket` `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n  if (!this[kWebSocket]._receiver.write(chunk)) {\n    this.pause();\n  }\n}\n\n/**\n * The listener of the `net.Socket` `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n  const websocket = this[kWebSocket];\n\n  websocket._readyState = WebSocket.CLOSING;\n  websocket._receiver.end();\n  this.end();\n}\n\n/**\n * The listener of the `net.Socket` `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n  const websocket = this[kWebSocket];\n\n  this.removeListener('error', socketOnError);\n  this.on('error', NOOP);\n\n  if (websocket) {\n    websocket._readyState = WebSocket.CLOSING;\n    this.destroy();\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io/node_modules/ws/lib/websocket.js?")},"./node_modules/es-array-method-boxes-properly/index.js":
/*!**************************************************************!*\
  !*** ./node_modules/es-array-method-boxes-properly/index.js ***!
  \**************************************************************/module=>{eval("module.exports = function properlyBoxed(method) {\n\t// Check node 0.6.21 bug where third parameter is not boxed\n\tvar properlyBoxesNonStrict = true;\n\tvar properlyBoxesStrict = true;\n\tvar threwException = false;\n\tif (typeof method === 'function') {\n\t\ttry {\n\t\t\t// eslint-disable-next-line max-params\n\t\t\tmethod.call('f', function (_, __, O) {\n\t\t\t\tif (typeof O !== 'object') {\n\t\t\t\t\tproperlyBoxesNonStrict = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmethod.call(\n\t\t\t\t[null],\n\t\t\t\tfunction () {\n\t\t\t\t\t'use strict';\n\n\t\t\t\t\tproperlyBoxesStrict = typeof this === 'string'; // eslint-disable-line no-invalid-this\n\t\t\t\t},\n\t\t\t\t'x'\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tthrewException = true;\n\t\t}\n\t\treturn !threwException && properlyBoxesNonStrict && properlyBoxesStrict;\n\t}\n\treturn false;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-array-method-boxes-properly/index.js?")},"./node_modules/es-to-primitive/es2015.js":
/*!************************************************!*\
  !*** ./node_modules/es-to-primitive/es2015.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol';\n\nvar isPrimitive = __webpack_require__(/*! ./helpers/isPrimitive */ \"./node_modules/es-to-primitive/helpers/isPrimitive.js\");\nvar isCallable = __webpack_require__(/*! is-callable */ \"./node_modules/is-callable/index.js\");\nvar isDate = __webpack_require__(/*! is-date-object */ \"./node_modules/is-date-object/index.js\");\nvar isSymbol = __webpack_require__(/*! is-symbol */ \"./node_modules/is-symbol/index.js\");\n\nvar ordinaryToPrimitive = function OrdinaryToPrimitive(O, hint) {\n\tif (typeof O === 'undefined' || O === null) {\n\t\tthrow new TypeError('Cannot call method on ' + O);\n\t}\n\tif (typeof hint !== 'string' || (hint !== 'number' && hint !== 'string')) {\n\t\tthrow new TypeError('hint must be \"string\" or \"number\"');\n\t}\n\tvar methodNames = hint === 'string' ? ['toString', 'valueOf'] : ['valueOf', 'toString'];\n\tvar method, result, i;\n\tfor (i = 0; i < methodNames.length; ++i) {\n\t\tmethod = O[methodNames[i]];\n\t\tif (isCallable(method)) {\n\t\t\tresult = method.call(O);\n\t\t\tif (isPrimitive(result)) {\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\t}\n\tthrow new TypeError('No default value');\n};\n\nvar GetMethod = function GetMethod(O, P) {\n\tvar func = O[P];\n\tif (func !== null && typeof func !== 'undefined') {\n\t\tif (!isCallable(func)) {\n\t\t\tthrow new TypeError(func + ' returned for property ' + P + ' of object ' + O + ' is not a function');\n\t\t}\n\t\treturn func;\n\t}\n\treturn void 0;\n};\n\n// http://www.ecma-international.org/ecma-262/6.0/#sec-toprimitive\nmodule.exports = function ToPrimitive(input) {\n\tif (isPrimitive(input)) {\n\t\treturn input;\n\t}\n\tvar hint = 'default';\n\tif (arguments.length > 1) {\n\t\tif (arguments[1] === String) {\n\t\t\thint = 'string';\n\t\t} else if (arguments[1] === Number) {\n\t\t\thint = 'number';\n\t\t}\n\t}\n\n\tvar exoticToPrim;\n\tif (hasSymbols) {\n\t\tif (Symbol.toPrimitive) {\n\t\t\texoticToPrim = GetMethod(input, Symbol.toPrimitive);\n\t\t} else if (isSymbol(input)) {\n\t\t\texoticToPrim = Symbol.prototype.valueOf;\n\t\t}\n\t}\n\tif (typeof exoticToPrim !== 'undefined') {\n\t\tvar result = exoticToPrim.call(input, hint);\n\t\tif (isPrimitive(result)) {\n\t\t\treturn result;\n\t\t}\n\t\tthrow new TypeError('unable to convert exotic object to primitive');\n\t}\n\tif (hint === 'default' && (isDate(input) || isSymbol(input))) {\n\t\thint = 'string';\n\t}\n\treturn ordinaryToPrimitive(input, hint === 'default' ? 'number' : hint);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-to-primitive/es2015.js?")},"./node_modules/es-to-primitive/es5.js":
/*!*********************************************!*\
  !*** ./node_modules/es-to-primitive/es5.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar toStr = Object.prototype.toString;\n\nvar isPrimitive = __webpack_require__(/*! ./helpers/isPrimitive */ \"./node_modules/es-to-primitive/helpers/isPrimitive.js\");\n\nvar isCallable = __webpack_require__(/*! is-callable */ \"./node_modules/is-callable/index.js\");\n\n// http://ecma-international.org/ecma-262/5.1/#sec-8.12.8\nvar ES5internalSlots = {\n\t'[[DefaultValue]]': function (O) {\n\t\tvar actualHint;\n\t\tif (arguments.length > 1) {\n\t\t\tactualHint = arguments[1];\n\t\t} else {\n\t\t\tactualHint = toStr.call(O) === '[object Date]' ? String : Number;\n\t\t}\n\n\t\tif (actualHint === String || actualHint === Number) {\n\t\t\tvar methods = actualHint === String ? ['toString', 'valueOf'] : ['valueOf', 'toString'];\n\t\t\tvar value, i;\n\t\t\tfor (i = 0; i < methods.length; ++i) {\n\t\t\t\tif (isCallable(O[methods[i]])) {\n\t\t\t\t\tvalue = O[methods[i]]();\n\t\t\t\t\tif (isPrimitive(value)) {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthrow new TypeError('No default value');\n\t\t}\n\t\tthrow new TypeError('invalid [[DefaultValue]] hint supplied');\n\t}\n};\n\n// http://ecma-international.org/ecma-262/5.1/#sec-9.1\nmodule.exports = function ToPrimitive(input) {\n\tif (isPrimitive(input)) {\n\t\treturn input;\n\t}\n\tif (arguments.length > 1) {\n\t\treturn ES5internalSlots['[[DefaultValue]]'](input, arguments[1]);\n\t}\n\treturn ES5internalSlots['[[DefaultValue]]'](input);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-to-primitive/es5.js?")},"./node_modules/es-to-primitive/helpers/isPrimitive.js":
/*!*************************************************************!*\
  !*** ./node_modules/es-to-primitive/helpers/isPrimitive.js ***!
  \*************************************************************/module=>{"use strict";eval("\n\nmodule.exports = function isPrimitive(value) {\n\treturn value === null || (typeof value !== 'function' && typeof value !== 'object');\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-to-primitive/helpers/isPrimitive.js?")},"./node_modules/escape-html/index.js":
/*!*******************************************!*\
  !*** ./node_modules/escape-html/index.js ***!
  \*******************************************/module=>{"use strict";eval("/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param  {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n  var str = '' + string;\n  var match = matchHtmlRegExp.exec(str);\n\n  if (!match) {\n    return str;\n  }\n\n  var escape;\n  var html = '';\n  var index = 0;\n  var lastIndex = 0;\n\n  for (index = match.index; index < str.length; index++) {\n    switch (str.charCodeAt(index)) {\n      case 34: // \"\n        escape = '&quot;';\n        break;\n      case 38: // &\n        escape = '&amp;';\n        break;\n      case 39: // '\n        escape = '&#39;';\n        break;\n      case 60: // <\n        escape = '&lt;';\n        break;\n      case 62: // >\n        escape = '&gt;';\n        break;\n      default:\n        continue;\n    }\n\n    if (lastIndex !== index) {\n      html += str.substring(lastIndex, index);\n    }\n\n    lastIndex = index + 1;\n    html += escape;\n  }\n\n  return lastIndex !== index\n    ? html + str.substring(lastIndex, index)\n    : html;\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/escape-html/index.js?")},"./node_modules/execa/index.js":
/*!*************************************!*\
  !*** ./node_modules/execa/index.js ***!
  \*************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nconst path = __webpack_require__(/*! path */ \"path\");\nconst childProcess = __webpack_require__(/*! child_process */ \"child_process\");\nconst crossSpawn = __webpack_require__(/*! cross-spawn */ \"./node_modules/cross-spawn/index.js\");\nconst stripFinalNewline = __webpack_require__(/*! strip-final-newline */ \"./node_modules/strip-final-newline/index.js\");\nconst npmRunPath = __webpack_require__(/*! npm-run-path */ \"./node_modules/npm-run-path/index.js\");\nconst onetime = __webpack_require__(/*! onetime */ \"./node_modules/onetime/index.js\");\nconst makeError = __webpack_require__(/*! ./lib/error */ \"./node_modules/execa/lib/error.js\");\nconst normalizeStdio = __webpack_require__(/*! ./lib/stdio */ \"./node_modules/execa/lib/stdio.js\");\nconst {spawnedKill, spawnedCancel, setupTimeout, validateTimeout, setExitHandler} = __webpack_require__(/*! ./lib/kill */ \"./node_modules/execa/lib/kill.js\");\nconst {handleInput, getSpawnedResult, makeAllStream, validateInputSync} = __webpack_require__(/*! ./lib/stream */ \"./node_modules/execa/lib/stream.js\");\nconst {mergePromise, getSpawnedPromise} = __webpack_require__(/*! ./lib/promise */ \"./node_modules/execa/lib/promise.js\");\nconst {joinCommand, parseCommand, getEscapedCommand} = __webpack_require__(/*! ./lib/command */ \"./node_modules/execa/lib/command.js\");\n\nconst DEFAULT_MAX_BUFFER = 1000 * 1000 * 100;\n\nconst getEnv = ({env: envOption, extendEnv, preferLocal, localDir, execPath}) => {\n\tconst env = extendEnv ? {...({\"APP_ENV\":\"webpack\"}), ...envOption} : envOption;\n\n\tif (preferLocal) {\n\t\treturn npmRunPath.env({env, cwd: localDir, execPath});\n\t}\n\n\treturn env;\n};\n\nconst handleArguments = (file, args, options = {}) => {\n\tconst parsed = crossSpawn._parse(file, args, options);\n\tfile = parsed.command;\n\targs = parsed.args;\n\toptions = parsed.options;\n\n\toptions = {\n\t\tmaxBuffer: DEFAULT_MAX_BUFFER,\n\t\tbuffer: true,\n\t\tstripFinalNewline: true,\n\t\textendEnv: true,\n\t\tpreferLocal: false,\n\t\tlocalDir: options.cwd || process.cwd(),\n\t\texecPath: process.execPath,\n\t\tencoding: 'utf8',\n\t\treject: true,\n\t\tcleanup: true,\n\t\tall: false,\n\t\twindowsHide: true,\n\t\t...options\n\t};\n\n\toptions.env = getEnv(options);\n\n\toptions.stdio = normalizeStdio(options);\n\n\tif (process.platform === 'win32' && path.basename(file, '.exe') === 'cmd') {\n\t\t// #116\n\t\targs.unshift('/q');\n\t}\n\n\treturn {file, args, options, parsed};\n};\n\nconst handleOutput = (options, value, error) => {\n\tif (typeof value !== 'string' && !Buffer.isBuffer(value)) {\n\t\t// When `execa.sync()` errors, we normalize it to '' to mimic `execa()`\n\t\treturn error === undefined ? undefined : '';\n\t}\n\n\tif (options.stripFinalNewline) {\n\t\treturn stripFinalNewline(value);\n\t}\n\n\treturn value;\n};\n\nconst execa = (file, args, options) => {\n\tconst parsed = handleArguments(file, args, options);\n\tconst command = joinCommand(file, args);\n\tconst escapedCommand = getEscapedCommand(file, args);\n\n\tvalidateTimeout(parsed.options);\n\n\tlet spawned;\n\ttry {\n\t\tspawned = childProcess.spawn(parsed.file, parsed.args, parsed.options);\n\t} catch (error) {\n\t\t// Ensure the returned error is always both a promise and a child process\n\t\tconst dummySpawned = new childProcess.ChildProcess();\n\t\tconst errorPromise = Promise.reject(makeError({\n\t\t\terror,\n\t\t\tstdout: '',\n\t\t\tstderr: '',\n\t\t\tall: '',\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tparsed,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false\n\t\t}));\n\t\treturn mergePromise(dummySpawned, errorPromise);\n\t}\n\n\tconst spawnedPromise = getSpawnedPromise(spawned);\n\tconst timedPromise = setupTimeout(spawned, parsed.options, spawnedPromise);\n\tconst processDone = setExitHandler(spawned, parsed.options, timedPromise);\n\n\tconst context = {isCanceled: false};\n\n\tspawned.kill = spawnedKill.bind(null, spawned.kill.bind(spawned));\n\tspawned.cancel = spawnedCancel.bind(null, spawned, context);\n\n\tconst handlePromise = async () => {\n\t\tconst [{error, exitCode, signal, timedOut}, stdoutResult, stderrResult, allResult] = await getSpawnedResult(spawned, parsed.options, processDone);\n\t\tconst stdout = handleOutput(parsed.options, stdoutResult);\n\t\tconst stderr = handleOutput(parsed.options, stderrResult);\n\t\tconst all = handleOutput(parsed.options, allResult);\n\n\t\tif (error || exitCode !== 0 || signal !== null) {\n\t\t\tconst returnedError = makeError({\n\t\t\t\terror,\n\t\t\t\texitCode,\n\t\t\t\tsignal,\n\t\t\t\tstdout,\n\t\t\t\tstderr,\n\t\t\t\tall,\n\t\t\t\tcommand,\n\t\t\t\tescapedCommand,\n\t\t\t\tparsed,\n\t\t\t\ttimedOut,\n\t\t\t\tisCanceled: context.isCanceled,\n\t\t\t\tkilled: spawned.killed\n\t\t\t});\n\n\t\t\tif (!parsed.options.reject) {\n\t\t\t\treturn returnedError;\n\t\t\t}\n\n\t\t\tthrow returnedError;\n\t\t}\n\n\t\treturn {\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\texitCode: 0,\n\t\t\tstdout,\n\t\t\tstderr,\n\t\t\tall,\n\t\t\tfailed: false,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false\n\t\t};\n\t};\n\n\tconst handlePromiseOnce = onetime(handlePromise);\n\n\thandleInput(spawned, parsed.options.input);\n\n\tspawned.all = makeAllStream(spawned, parsed.options);\n\n\treturn mergePromise(spawned, handlePromiseOnce);\n};\n\nmodule.exports = execa;\n\nmodule.exports.sync = (file, args, options) => {\n\tconst parsed = handleArguments(file, args, options);\n\tconst command = joinCommand(file, args);\n\tconst escapedCommand = getEscapedCommand(file, args);\n\n\tvalidateInputSync(parsed.options);\n\n\tlet result;\n\ttry {\n\t\tresult = childProcess.spawnSync(parsed.file, parsed.args, parsed.options);\n\t} catch (error) {\n\t\tthrow makeError({\n\t\t\terror,\n\t\t\tstdout: '',\n\t\t\tstderr: '',\n\t\t\tall: '',\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tparsed,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false\n\t\t});\n\t}\n\n\tconst stdout = handleOutput(parsed.options, result.stdout, result.error);\n\tconst stderr = handleOutput(parsed.options, result.stderr, result.error);\n\n\tif (result.error || result.status !== 0 || result.signal !== null) {\n\t\tconst error = makeError({\n\t\t\tstdout,\n\t\t\tstderr,\n\t\t\terror: result.error,\n\t\t\tsignal: result.signal,\n\t\t\texitCode: result.status,\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tparsed,\n\t\t\ttimedOut: result.error && result.error.code === 'ETIMEDOUT',\n\t\t\tisCanceled: false,\n\t\t\tkilled: result.signal !== null\n\t\t});\n\n\t\tif (!parsed.options.reject) {\n\t\t\treturn error;\n\t\t}\n\n\t\tthrow error;\n\t}\n\n\treturn {\n\t\tcommand,\n\t\tescapedCommand,\n\t\texitCode: 0,\n\t\tstdout,\n\t\tstderr,\n\t\tfailed: false,\n\t\ttimedOut: false,\n\t\tisCanceled: false,\n\t\tkilled: false\n\t};\n};\n\nmodule.exports.command = (command, options) => {\n\tconst [file, ...args] = parseCommand(command);\n\treturn execa(file, args, options);\n};\n\nmodule.exports.commandSync = (command, options) => {\n\tconst [file, ...args] = parseCommand(command);\n\treturn execa.sync(file, args, options);\n};\n\nmodule.exports.node = (scriptPath, args, options = {}) => {\n\tif (args && !Array.isArray(args) && typeof args === 'object') {\n\t\toptions = args;\n\t\targs = [];\n\t}\n\n\tconst stdio = normalizeStdio.node(options);\n\tconst defaultExecArgv = process.execArgv.filter(arg => !arg.startsWith('--inspect'));\n\n\tconst {\n\t\tnodePath = process.execPath,\n\t\tnodeOptions = defaultExecArgv\n\t} = options;\n\n\treturn execa(\n\t\tnodePath,\n\t\t[\n\t\t\t...nodeOptions,\n\t\t\tscriptPath,\n\t\t\t...(Array.isArray(args) ? args : [])\n\t\t],\n\t\t{\n\t\t\t...options,\n\t\t\tstdin: undefined,\n\t\t\tstdout: undefined,\n\t\t\tstderr: undefined,\n\t\t\tstdio,\n\t\t\tshell: false\n\t\t}\n\t);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/execa/index.js?")},"./node_modules/execa/lib/command.js":
/*!*******************************************!*\
  !*** ./node_modules/execa/lib/command.js ***!
  \*******************************************/module=>{"use strict";eval("\nconst normalizeArgs = (file, args = []) => {\n\tif (!Array.isArray(args)) {\n\t\treturn [file];\n\t}\n\n\treturn [file, ...args];\n};\n\nconst NO_ESCAPE_REGEXP = /^[\\w.-]+$/;\nconst DOUBLE_QUOTES_REGEXP = /\"/g;\n\nconst escapeArg = arg => {\n\tif (typeof arg !== 'string' || NO_ESCAPE_REGEXP.test(arg)) {\n\t\treturn arg;\n\t}\n\n\treturn `\"${arg.replace(DOUBLE_QUOTES_REGEXP, '\\\\\"')}\"`;\n};\n\nconst joinCommand = (file, args) => {\n\treturn normalizeArgs(file, args).join(' ');\n};\n\nconst getEscapedCommand = (file, args) => {\n\treturn normalizeArgs(file, args).map(arg => escapeArg(arg)).join(' ');\n};\n\nconst SPACES_REGEXP = / +/g;\n\n// Handle `execa.command()`\nconst parseCommand = command => {\n\tconst tokens = [];\n\tfor (const token of command.trim().split(SPACES_REGEXP)) {\n\t\t// Allow spaces to be escaped by a backslash if not meant as a delimiter\n\t\tconst previousToken = tokens[tokens.length - 1];\n\t\tif (previousToken && previousToken.endsWith('\\\\')) {\n\t\t\t// Merge previous token with current one\n\t\t\ttokens[tokens.length - 1] = `${previousToken.slice(0, -1)} ${token}`;\n\t\t} else {\n\t\t\ttokens.push(token);\n\t\t}\n\t}\n\n\treturn tokens;\n};\n\nmodule.exports = {\n\tjoinCommand,\n\tgetEscapedCommand,\n\tparseCommand\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/execa/lib/command.js?")},"./node_modules/execa/lib/error.js":
/*!*****************************************!*\
  !*** ./node_modules/execa/lib/error.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nconst {signalsByName} = __webpack_require__(/*! human-signals */ \"./node_modules/human-signals/build/src/main.js\");\n\nconst getErrorPrefix = ({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled}) => {\n\tif (timedOut) {\n\t\treturn `timed out after ${timeout} milliseconds`;\n\t}\n\n\tif (isCanceled) {\n\t\treturn 'was canceled';\n\t}\n\n\tif (errorCode !== undefined) {\n\t\treturn `failed with ${errorCode}`;\n\t}\n\n\tif (signal !== undefined) {\n\t\treturn `was killed with ${signal} (${signalDescription})`;\n\t}\n\n\tif (exitCode !== undefined) {\n\t\treturn `failed with exit code ${exitCode}`;\n\t}\n\n\treturn 'failed';\n};\n\nconst makeError = ({\n\tstdout,\n\tstderr,\n\tall,\n\terror,\n\tsignal,\n\texitCode,\n\tcommand,\n\tescapedCommand,\n\ttimedOut,\n\tisCanceled,\n\tkilled,\n\tparsed: {options: {timeout}}\n}) => {\n\t// `signal` and `exitCode` emitted on `spawned.on('exit')` event can be `null`.\n\t// We normalize them to `undefined`\n\texitCode = exitCode === null ? undefined : exitCode;\n\tsignal = signal === null ? undefined : signal;\n\tconst signalDescription = signal === undefined ? undefined : signalsByName[signal].description;\n\n\tconst errorCode = error && error.code;\n\n\tconst prefix = getErrorPrefix({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled});\n\tconst execaMessage = `Command ${prefix}: ${command}`;\n\tconst isError = Object.prototype.toString.call(error) === '[object Error]';\n\tconst shortMessage = isError ? `${execaMessage}\\n${error.message}` : execaMessage;\n\tconst message = [shortMessage, stderr, stdout].filter(Boolean).join('\\n');\n\n\tif (isError) {\n\t\terror.originalMessage = error.message;\n\t\terror.message = message;\n\t} else {\n\t\terror = new Error(message);\n\t}\n\n\terror.shortMessage = shortMessage;\n\terror.command = command;\n\terror.escapedCommand = escapedCommand;\n\terror.exitCode = exitCode;\n\terror.signal = signal;\n\terror.signalDescription = signalDescription;\n\terror.stdout = stdout;\n\terror.stderr = stderr;\n\n\tif (all !== undefined) {\n\t\terror.all = all;\n\t}\n\n\tif ('bufferedData' in error) {\n\t\tdelete error.bufferedData;\n\t}\n\n\terror.failed = true;\n\terror.timedOut = Boolean(timedOut);\n\terror.isCanceled = isCanceled;\n\terror.killed = killed && !timedOut;\n\n\treturn error;\n};\n\nmodule.exports = makeError;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/execa/lib/error.js?")},"./node_modules/execa/lib/kill.js":
/*!****************************************!*\
  !*** ./node_modules/execa/lib/kill.js ***!
  \****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nconst os = __webpack_require__(/*! os */ \"os\");\nconst onExit = __webpack_require__(/*! signal-exit */ \"./node_modules/signal-exit/index.js\");\n\nconst DEFAULT_FORCE_KILL_TIMEOUT = 1000 * 5;\n\n// Monkey-patches `childProcess.kill()` to add `forceKillAfterTimeout` behavior\nconst spawnedKill = (kill, signal = 'SIGTERM', options = {}) => {\n\tconst killResult = kill(signal);\n\tsetKillTimeout(kill, signal, options, killResult);\n\treturn killResult;\n};\n\nconst setKillTimeout = (kill, signal, options, killResult) => {\n\tif (!shouldForceKill(signal, options, killResult)) {\n\t\treturn;\n\t}\n\n\tconst timeout = getForceKillAfterTimeout(options);\n\tconst t = setTimeout(() => {\n\t\tkill('SIGKILL');\n\t}, timeout);\n\n\t// Guarded because there's no `.unref()` when `execa` is used in the renderer\n\t// process in Electron. This cannot be tested since we don't run tests in\n\t// Electron.\n\t// istanbul ignore else\n\tif (t.unref) {\n\t\tt.unref();\n\t}\n};\n\nconst shouldForceKill = (signal, {forceKillAfterTimeout}, killResult) => {\n\treturn isSigterm(signal) && forceKillAfterTimeout !== false && killResult;\n};\n\nconst isSigterm = signal => {\n\treturn signal === os.constants.signals.SIGTERM ||\n\t\t(typeof signal === 'string' && signal.toUpperCase() === 'SIGTERM');\n};\n\nconst getForceKillAfterTimeout = ({forceKillAfterTimeout = true}) => {\n\tif (forceKillAfterTimeout === true) {\n\t\treturn DEFAULT_FORCE_KILL_TIMEOUT;\n\t}\n\n\tif (!Number.isFinite(forceKillAfterTimeout) || forceKillAfterTimeout < 0) {\n\t\tthrow new TypeError(`Expected the \\`forceKillAfterTimeout\\` option to be a non-negative integer, got \\`${forceKillAfterTimeout}\\` (${typeof forceKillAfterTimeout})`);\n\t}\n\n\treturn forceKillAfterTimeout;\n};\n\n// `childProcess.cancel()`\nconst spawnedCancel = (spawned, context) => {\n\tconst killResult = spawned.kill();\n\n\tif (killResult) {\n\t\tcontext.isCanceled = true;\n\t}\n};\n\nconst timeoutKill = (spawned, signal, reject) => {\n\tspawned.kill(signal);\n\treject(Object.assign(new Error('Timed out'), {timedOut: true, signal}));\n};\n\n// `timeout` option handling\nconst setupTimeout = (spawned, {timeout, killSignal = 'SIGTERM'}, spawnedPromise) => {\n\tif (timeout === 0 || timeout === undefined) {\n\t\treturn spawnedPromise;\n\t}\n\n\tlet timeoutId;\n\tconst timeoutPromise = new Promise((resolve, reject) => {\n\t\ttimeoutId = setTimeout(() => {\n\t\t\ttimeoutKill(spawned, killSignal, reject);\n\t\t}, timeout);\n\t});\n\n\tconst safeSpawnedPromise = spawnedPromise.finally(() => {\n\t\tclearTimeout(timeoutId);\n\t});\n\n\treturn Promise.race([timeoutPromise, safeSpawnedPromise]);\n};\n\nconst validateTimeout = ({timeout}) => {\n\tif (timeout !== undefined && (!Number.isFinite(timeout) || timeout < 0)) {\n\t\tthrow new TypeError(`Expected the \\`timeout\\` option to be a non-negative integer, got \\`${timeout}\\` (${typeof timeout})`);\n\t}\n};\n\n// `cleanup` option handling\nconst setExitHandler = async (spawned, {cleanup, detached}, timedPromise) => {\n\tif (!cleanup || detached) {\n\t\treturn timedPromise;\n\t}\n\n\tconst removeExitHandler = onExit(() => {\n\t\tspawned.kill();\n\t});\n\n\treturn timedPromise.finally(() => {\n\t\tremoveExitHandler();\n\t});\n};\n\nmodule.exports = {\n\tspawnedKill,\n\tspawnedCancel,\n\tsetupTimeout,\n\tvalidateTimeout,\n\tsetExitHandler\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/execa/lib/kill.js?")},"./node_modules/execa/lib/promise.js":
/*!*******************************************!*\
  !*** ./node_modules/execa/lib/promise.js ***!
  \*******************************************/module=>{"use strict";eval("\n\nconst nativePromisePrototype = (async () => {})().constructor.prototype;\nconst descriptors = ['then', 'catch', 'finally'].map(property => [\n\tproperty,\n\tReflect.getOwnPropertyDescriptor(nativePromisePrototype, property)\n]);\n\n// The return value is a mixin of `childProcess` and `Promise`\nconst mergePromise = (spawned, promise) => {\n\tfor (const [property, descriptor] of descriptors) {\n\t\t// Starting the main `promise` is deferred to avoid consuming streams\n\t\tconst value = typeof promise === 'function' ?\n\t\t\t(...args) => Reflect.apply(descriptor.value, promise(), args) :\n\t\t\tdescriptor.value.bind(promise);\n\n\t\tReflect.defineProperty(spawned, property, {...descriptor, value});\n\t}\n\n\treturn spawned;\n};\n\n// Use promises instead of `child_process` events\nconst getSpawnedPromise = spawned => {\n\treturn new Promise((resolve, reject) => {\n\t\tspawned.on('exit', (exitCode, signal) => {\n\t\t\tresolve({exitCode, signal});\n\t\t});\n\n\t\tspawned.on('error', error => {\n\t\t\treject(error);\n\t\t});\n\n\t\tif (spawned.stdin) {\n\t\t\tspawned.stdin.on('error', error => {\n\t\t\t\treject(error);\n\t\t\t});\n\t\t}\n\t});\n};\n\nmodule.exports = {\n\tmergePromise,\n\tgetSpawnedPromise\n};\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/execa/lib/promise.js?")},"./node_modules/execa/lib/stdio.js":
/*!*****************************************!*\
  !*** ./node_modules/execa/lib/stdio.js ***!
  \*****************************************/module=>{"use strict";eval("\nconst aliases = ['stdin', 'stdout', 'stderr'];\n\nconst hasAlias = options => aliases.some(alias => options[alias] !== undefined);\n\nconst normalizeStdio = options => {\n\tif (!options) {\n\t\treturn;\n\t}\n\n\tconst {stdio} = options;\n\n\tif (stdio === undefined) {\n\t\treturn aliases.map(alias => options[alias]);\n\t}\n\n\tif (hasAlias(options)) {\n\t\tthrow new Error(`It's not possible to provide \\`stdio\\` in combination with one of ${aliases.map(alias => `\\`${alias}\\``).join(', ')}`);\n\t}\n\n\tif (typeof stdio === 'string') {\n\t\treturn stdio;\n\t}\n\n\tif (!Array.isArray(stdio)) {\n\t\tthrow new TypeError(`Expected \\`stdio\\` to be of type \\`string\\` or \\`Array\\`, got \\`${typeof stdio}\\``);\n\t}\n\n\tconst length = Math.max(stdio.length, aliases.length);\n\treturn Array.from({length}, (value, index) => stdio[index]);\n};\n\nmodule.exports = normalizeStdio;\n\n// `ipc` is pushed unless it is already present\nmodule.exports.node = options => {\n\tconst stdio = normalizeStdio(options);\n\n\tif (stdio === 'ipc') {\n\t\treturn 'ipc';\n\t}\n\n\tif (stdio === undefined || typeof stdio === 'string') {\n\t\treturn [stdio, stdio, stdio, 'ipc'];\n\t}\n\n\tif (stdio.includes('ipc')) {\n\t\treturn stdio;\n\t}\n\n\treturn [...stdio, 'ipc'];\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/execa/lib/stdio.js?")},"./node_modules/execa/lib/stream.js":
/*!******************************************!*\
  !*** ./node_modules/execa/lib/stream.js ***!
  \******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\nconst isStream = __webpack_require__(/*! is-stream */ "./node_modules/is-stream/index.js");\nconst getStream = __webpack_require__(/*! get-stream */ "./node_modules/get-stream/index.js");\nconst mergeStream = __webpack_require__(/*! merge-stream */ "./node_modules/merge-stream/index.js");\n\n// `input` option\nconst handleInput = (spawned, input) => {\n\t// Checking for stdin is workaround for https://github.com/nodejs/node/issues/26852\n\t// @todo remove `|| spawned.stdin === undefined` once we drop support for Node.js <=12.2.0\n\tif (input === undefined || spawned.stdin === undefined) {\n\t\treturn;\n\t}\n\n\tif (isStream(input)) {\n\t\tinput.pipe(spawned.stdin);\n\t} else {\n\t\tspawned.stdin.end(input);\n\t}\n};\n\n// `all` interleaves `stdout` and `stderr`\nconst makeAllStream = (spawned, {all}) => {\n\tif (!all || (!spawned.stdout && !spawned.stderr)) {\n\t\treturn;\n\t}\n\n\tconst mixed = mergeStream();\n\n\tif (spawned.stdout) {\n\t\tmixed.add(spawned.stdout);\n\t}\n\n\tif (spawned.stderr) {\n\t\tmixed.add(spawned.stderr);\n\t}\n\n\treturn mixed;\n};\n\n// On failure, `result.stdout|stderr|all` should contain the currently buffered stream\nconst getBufferedData = async (stream, streamPromise) => {\n\tif (!stream) {\n\t\treturn;\n\t}\n\n\tstream.destroy();\n\n\ttry {\n\t\treturn await streamPromise;\n\t} catch (error) {\n\t\treturn error.bufferedData;\n\t}\n};\n\nconst getStreamPromise = (stream, {encoding, buffer, maxBuffer}) => {\n\tif (!stream || !buffer) {\n\t\treturn;\n\t}\n\n\tif (encoding) {\n\t\treturn getStream(stream, {encoding, maxBuffer});\n\t}\n\n\treturn getStream.buffer(stream, {maxBuffer});\n};\n\n// Retrieve result of child process: exit code, signal, error, streams (stdout/stderr/all)\nconst getSpawnedResult = async ({stdout, stderr, all}, {encoding, buffer, maxBuffer}, processDone) => {\n\tconst stdoutPromise = getStreamPromise(stdout, {encoding, buffer, maxBuffer});\n\tconst stderrPromise = getStreamPromise(stderr, {encoding, buffer, maxBuffer});\n\tconst allPromise = getStreamPromise(all, {encoding, buffer, maxBuffer: maxBuffer * 2});\n\n\ttry {\n\t\treturn await Promise.all([processDone, stdoutPromise, stderrPromise, allPromise]);\n\t} catch (error) {\n\t\treturn Promise.all([\n\t\t\t{error, signal: error.signal, timedOut: error.timedOut},\n\t\t\tgetBufferedData(stdout, stdoutPromise),\n\t\t\tgetBufferedData(stderr, stderrPromise),\n\t\t\tgetBufferedData(all, allPromise)\n\t\t]);\n\t}\n};\n\nconst validateInputSync = ({input}) => {\n\tif (isStream(input)) {\n\t\tthrow new TypeError(\'The `input` option cannot be a stream in sync mode\');\n\t}\n};\n\nmodule.exports = {\n\thandleInput,\n\tmakeAllStream,\n\tgetSpawnedResult,\n\tvalidateInputSync\n};\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/execa/lib/stream.js?')},"./node_modules/form-data/lib/form_data.js":
/*!*************************************************!*\
  !*** ./node_modules/form-data/lib/form_data.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var CombinedStream = __webpack_require__(/*! combined-stream */ \"./node_modules/combined-stream/lib/combined_stream.js\");\nvar util = __webpack_require__(/*! util */ \"util\");\nvar path = __webpack_require__(/*! path */ \"path\");\nvar http = __webpack_require__(/*! http */ \"http\");\nvar https = __webpack_require__(/*! https */ \"https\");\nvar parseUrl = (__webpack_require__(/*! url */ \"url\").parse);\nvar fs = __webpack_require__(/*! fs */ \"fs\");\nvar Stream = (__webpack_require__(/*! stream */ \"stream\").Stream);\nvar mime = __webpack_require__(/*! mime-types */ \"./node_modules/mime-types/index.js\");\nvar asynckit = __webpack_require__(/*! asynckit */ \"./node_modules/asynckit/index.js\");\nvar populate = __webpack_require__(/*! ./populate.js */ \"./node_modules/form-data/lib/populate.js\");\n\n// Public API\nmodule.exports = FormData;\n\n// make it a Stream\nutil.inherits(FormData, CombinedStream);\n\n/**\n * Create readable \"multipart/form-data\" streams.\n * Can be used to submit forms\n * and file uploads to other web applications.\n *\n * @constructor\n * @param {Object} options - Properties to be added/overriden for FormData and CombinedStream\n */\nfunction FormData(options) {\n  if (!(this instanceof FormData)) {\n    return new FormData(options);\n  }\n\n  this._overheadLength = 0;\n  this._valueLength = 0;\n  this._valuesToMeasure = [];\n\n  CombinedStream.call(this);\n\n  options = options || {};\n  for (var option in options) {\n    this[option] = options[option];\n  }\n}\n\nFormData.LINE_BREAK = '\\r\\n';\nFormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream';\n\nFormData.prototype.append = function(field, value, options) {\n\n  options = options || {};\n\n  // allow filename as single option\n  if (typeof options == 'string') {\n    options = {filename: options};\n  }\n\n  var append = CombinedStream.prototype.append.bind(this);\n\n  // all that streamy business can't handle numbers\n  if (typeof value == 'number') {\n    value = '' + value;\n  }\n\n  // https://github.com/felixge/node-form-data/issues/38\n  if (util.isArray(value)) {\n    // Please convert your array into string\n    // the way web server expects it\n    this._error(new Error('Arrays are not supported.'));\n    return;\n  }\n\n  var header = this._multiPartHeader(field, value, options);\n  var footer = this._multiPartFooter();\n\n  append(header);\n  append(value);\n  append(footer);\n\n  // pass along options.knownLength\n  this._trackLength(header, value, options);\n};\n\nFormData.prototype._trackLength = function(header, value, options) {\n  var valueLength = 0;\n\n  // used w/ getLengthSync(), when length is known.\n  // e.g. for streaming directly from a remote server,\n  // w/ a known file a size, and not wanting to wait for\n  // incoming file to finish to get its size.\n  if (options.knownLength != null) {\n    valueLength += +options.knownLength;\n  } else if (Buffer.isBuffer(value)) {\n    valueLength = value.length;\n  } else if (typeof value === 'string') {\n    valueLength = Buffer.byteLength(value);\n  }\n\n  this._valueLength += valueLength;\n\n  // @check why add CRLF? does this account for custom/multiple CRLFs?\n  this._overheadLength +=\n    Buffer.byteLength(header) +\n    FormData.LINE_BREAK.length;\n\n  // empty or either doesn't have path or not an http response or not a stream\n  if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) && !(value instanceof Stream))) {\n    return;\n  }\n\n  // no need to bother with the length\n  if (!options.knownLength) {\n    this._valuesToMeasure.push(value);\n  }\n};\n\nFormData.prototype._lengthRetriever = function(value, callback) {\n\n  if (value.hasOwnProperty('fd')) {\n\n    // take read range into a account\n    // `end` = Infinity –> read file till the end\n    //\n    // TODO: Looks like there is bug in Node fs.createReadStream\n    // it doesn't respect `end` options without `start` options\n    // Fix it when node fixes it.\n    // https://github.com/joyent/node/issues/7819\n    if (value.end != undefined && value.end != Infinity && value.start != undefined) {\n\n      // when end specified\n      // no need to calculate range\n      // inclusive, starts with 0\n      callback(null, value.end + 1 - (value.start ? value.start : 0));\n\n    // not that fast snoopy\n    } else {\n      // still need to fetch file size from fs\n      fs.stat(value.path, function(err, stat) {\n\n        var fileSize;\n\n        if (err) {\n          callback(err);\n          return;\n        }\n\n        // update final size based on the range options\n        fileSize = stat.size - (value.start ? value.start : 0);\n        callback(null, fileSize);\n      });\n    }\n\n  // or http response\n  } else if (value.hasOwnProperty('httpVersion')) {\n    callback(null, +value.headers['content-length']);\n\n  // or request stream http://github.com/mikeal/request\n  } else if (value.hasOwnProperty('httpModule')) {\n    // wait till response come back\n    value.on('response', function(response) {\n      value.pause();\n      callback(null, +response.headers['content-length']);\n    });\n    value.resume();\n\n  // something else\n  } else {\n    callback('Unknown stream');\n  }\n};\n\nFormData.prototype._multiPartHeader = function(field, value, options) {\n  // custom header specified (as string)?\n  // it becomes responsible for boundary\n  // (e.g. to handle extra CRLFs on .NET servers)\n  if (typeof options.header == 'string') {\n    return options.header;\n  }\n\n  var contentDisposition = this._getContentDisposition(value, options);\n  var contentType = this._getContentType(value, options);\n\n  var contents = '';\n  var headers  = {\n    // add custom disposition as third element or keep it two elements if not\n    'Content-Disposition': ['form-data', 'name=\"' + field + '\"'].concat(contentDisposition || []),\n    // if no content type. allow it to be empty array\n    'Content-Type': [].concat(contentType || [])\n  };\n\n  // allow custom headers.\n  if (typeof options.header == 'object') {\n    populate(headers, options.header);\n  }\n\n  var header;\n  for (var prop in headers) {\n    if (!headers.hasOwnProperty(prop)) continue;\n    header = headers[prop];\n\n    // skip nullish headers.\n    if (header == null) {\n      continue;\n    }\n\n    // convert all headers to arrays.\n    if (!Array.isArray(header)) {\n      header = [header];\n    }\n\n    // add non-empty headers.\n    if (header.length) {\n      contents += prop + ': ' + header.join('; ') + FormData.LINE_BREAK;\n    }\n  }\n\n  return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK;\n};\n\nFormData.prototype._getContentDisposition = function(value, options) {\n\n  var filename\n    , contentDisposition\n    ;\n\n  if (typeof options.filepath === 'string') {\n    // custom filepath for relative paths\n    filename = path.normalize(options.filepath).replace(/\\\\/g, '/');\n  } else if (options.filename || value.name || value.path) {\n    // custom filename take precedence\n    // formidable and the browser add a name property\n    // fs- and request- streams have path property\n    filename = path.basename(options.filename || value.name || value.path);\n  } else if (value.readable && value.hasOwnProperty('httpVersion')) {\n    // or try http response\n    filename = path.basename(value.client._httpMessage.path || '');\n  }\n\n  if (filename) {\n    contentDisposition = 'filename=\"' + filename + '\"';\n  }\n\n  return contentDisposition;\n};\n\nFormData.prototype._getContentType = function(value, options) {\n\n  // use custom content-type above all\n  var contentType = options.contentType;\n\n  // or try `name` from formidable, browser\n  if (!contentType && value.name) {\n    contentType = mime.lookup(value.name);\n  }\n\n  // or try `path` from fs-, request- streams\n  if (!contentType && value.path) {\n    contentType = mime.lookup(value.path);\n  }\n\n  // or if it's http-reponse\n  if (!contentType && value.readable && value.hasOwnProperty('httpVersion')) {\n    contentType = value.headers['content-type'];\n  }\n\n  // or guess it from the filepath or filename\n  if (!contentType && (options.filepath || options.filename)) {\n    contentType = mime.lookup(options.filepath || options.filename);\n  }\n\n  // fallback to the default content type if `value` is not simple value\n  if (!contentType && typeof value == 'object') {\n    contentType = FormData.DEFAULT_CONTENT_TYPE;\n  }\n\n  return contentType;\n};\n\nFormData.prototype._multiPartFooter = function() {\n  return function(next) {\n    var footer = FormData.LINE_BREAK;\n\n    var lastPart = (this._streams.length === 0);\n    if (lastPart) {\n      footer += this._lastBoundary();\n    }\n\n    next(footer);\n  }.bind(this);\n};\n\nFormData.prototype._lastBoundary = function() {\n  return '--' + this.getBoundary() + '--' + FormData.LINE_BREAK;\n};\n\nFormData.prototype.getHeaders = function(userHeaders) {\n  var header;\n  var formHeaders = {\n    'content-type': 'multipart/form-data; boundary=' + this.getBoundary()\n  };\n\n  for (header in userHeaders) {\n    if (userHeaders.hasOwnProperty(header)) {\n      formHeaders[header.toLowerCase()] = userHeaders[header];\n    }\n  }\n\n  return formHeaders;\n};\n\nFormData.prototype.setBoundary = function(boundary) {\n  this._boundary = boundary;\n};\n\nFormData.prototype.getBoundary = function() {\n  if (!this._boundary) {\n    this._generateBoundary();\n  }\n\n  return this._boundary;\n};\n\nFormData.prototype.getBuffer = function() {\n  var dataBuffer = new Buffer.alloc( 0 );\n  var boundary = this.getBoundary();\n\n  // Create the form content. Add Line breaks to the end of data.\n  for (var i = 0, len = this._streams.length; i < len; i++) {\n    if (typeof this._streams[i] !== 'function') {\n\n      // Add content to the buffer.\n      if(Buffer.isBuffer(this._streams[i])) {\n        dataBuffer = Buffer.concat( [dataBuffer, this._streams[i]]);\n      }else {\n        dataBuffer = Buffer.concat( [dataBuffer, Buffer.from(this._streams[i])]);\n      }\n\n      // Add break after content.\n      if (typeof this._streams[i] !== 'string' || this._streams[i].substring( 2, boundary.length + 2 ) !== boundary) {\n        dataBuffer = Buffer.concat( [dataBuffer, Buffer.from(FormData.LINE_BREAK)] );\n      }\n    }\n  }\n\n  // Add the footer and return the Buffer object.\n  return Buffer.concat( [dataBuffer, Buffer.from(this._lastBoundary())] );\n};\n\nFormData.prototype._generateBoundary = function() {\n  // This generates a 50 character boundary similar to those used by Firefox.\n  // They are optimized for boyer-moore parsing.\n  var boundary = '--------------------------';\n  for (var i = 0; i < 24; i++) {\n    boundary += Math.floor(Math.random() * 10).toString(16);\n  }\n\n  this._boundary = boundary;\n};\n\n// Note: getLengthSync DOESN'T calculate streams length\n// As workaround one can calculate file size manually\n// and add it as knownLength option\nFormData.prototype.getLengthSync = function() {\n  var knownLength = this._overheadLength + this._valueLength;\n\n  // Don't get confused, there are 3 \"internal\" streams for each keyval pair\n  // so it basically checks if there is any value added to the form\n  if (this._streams.length) {\n    knownLength += this._lastBoundary().length;\n  }\n\n  // https://github.com/form-data/form-data/issues/40\n  if (!this.hasKnownLength()) {\n    // Some async length retrievers are present\n    // therefore synchronous length calculation is false.\n    // Please use getLength(callback) to get proper length\n    this._error(new Error('Cannot calculate proper length in synchronous way.'));\n  }\n\n  return knownLength;\n};\n\n// Public API to check if length of added values is known\n// https://github.com/form-data/form-data/issues/196\n// https://github.com/form-data/form-data/issues/262\nFormData.prototype.hasKnownLength = function() {\n  var hasKnownLength = true;\n\n  if (this._valuesToMeasure.length) {\n    hasKnownLength = false;\n  }\n\n  return hasKnownLength;\n};\n\nFormData.prototype.getLength = function(cb) {\n  var knownLength = this._overheadLength + this._valueLength;\n\n  if (this._streams.length) {\n    knownLength += this._lastBoundary().length;\n  }\n\n  if (!this._valuesToMeasure.length) {\n    process.nextTick(cb.bind(this, null, knownLength));\n    return;\n  }\n\n  asynckit.parallel(this._valuesToMeasure, this._lengthRetriever, function(err, values) {\n    if (err) {\n      cb(err);\n      return;\n    }\n\n    values.forEach(function(length) {\n      knownLength += length;\n    });\n\n    cb(null, knownLength);\n  });\n};\n\nFormData.prototype.submit = function(params, cb) {\n  var request\n    , options\n    , defaults = {method: 'post'}\n    ;\n\n  // parse provided url if it's string\n  // or treat it as options object\n  if (typeof params == 'string') {\n\n    params = parseUrl(params);\n    options = populate({\n      port: params.port,\n      path: params.pathname,\n      host: params.hostname,\n      protocol: params.protocol\n    }, defaults);\n\n  // use custom params\n  } else {\n\n    options = populate(params, defaults);\n    // if no port provided use default one\n    if (!options.port) {\n      options.port = options.protocol == 'https:' ? 443 : 80;\n    }\n  }\n\n  // put that good code in getHeaders to some use\n  options.headers = this.getHeaders(params.headers);\n\n  // https if specified, fallback to http in any other case\n  if (options.protocol == 'https:') {\n    request = https.request(options);\n  } else {\n    request = http.request(options);\n  }\n\n  // get content length and fire away\n  this.getLength(function(err, length) {\n    if (err && err !== 'Unknown stream') {\n      this._error(err);\n      return;\n    }\n\n    // add content length\n    if (length) {\n      request.setHeader('Content-Length', length);\n    }\n\n    this.pipe(request);\n    if (cb) {\n      var onResponse;\n\n      var callback = function (error, responce) {\n        request.removeListener('error', callback);\n        request.removeListener('response', onResponse);\n\n        return cb.call(this, error, responce);\n      };\n\n      onResponse = callback.bind(this, null);\n\n      request.on('error', callback);\n      request.on('response', onResponse);\n    }\n  }.bind(this));\n\n  return request;\n};\n\nFormData.prototype._error = function(err) {\n  if (!this.error) {\n    this.error = err;\n    this.pause();\n    this.emit('error', err);\n  }\n};\n\nFormData.prototype.toString = function () {\n  return '[object FormData]';\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/form-data/lib/form_data.js?")},"./node_modules/form-data/lib/populate.js":
/*!************************************************!*\
  !*** ./node_modules/form-data/lib/populate.js ***!
  \************************************************/module=>{eval("// populates missing values\nmodule.exports = function(dst, src) {\n\n  Object.keys(src).forEach(function(prop)\n  {\n    dst[prop] = dst[prop] || src[prop];\n  });\n\n  return dst;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/form-data/lib/populate.js?")},"./node_modules/fresh/index.js":
/*!*************************************!*\
  !*** ./node_modules/fresh/index.js ***!
  \*************************************/module=>{"use strict";eval("/*!\n * fresh\n * Copyright(c) 2012 TJ Holowaychuk\n * Copyright(c) 2016-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\n/**\n * RegExp to check for no-cache token in Cache-Control.\n * @private\n */\n\nvar CACHE_CONTROL_NO_CACHE_REGEXP = /(?:^|,)\\s*?no-cache\\s*?(?:,|$)/\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = fresh\n\n/**\n * Check freshness of the response using request and response headers.\n *\n * @param {Object} reqHeaders\n * @param {Object} resHeaders\n * @return {Boolean}\n * @public\n */\n\nfunction fresh (reqHeaders, resHeaders) {\n  // fields\n  var modifiedSince = reqHeaders['if-modified-since']\n  var noneMatch = reqHeaders['if-none-match']\n\n  // unconditional request\n  if (!modifiedSince && !noneMatch) {\n    return false\n  }\n\n  // Always return stale when Cache-Control: no-cache\n  // to support end-to-end reload requests\n  // https://tools.ietf.org/html/rfc2616#section-14.9.4\n  var cacheControl = reqHeaders['cache-control']\n  if (cacheControl && CACHE_CONTROL_NO_CACHE_REGEXP.test(cacheControl)) {\n    return false\n  }\n\n  // if-none-match\n  if (noneMatch && noneMatch !== '*') {\n    var etag = resHeaders['etag']\n\n    if (!etag) {\n      return false\n    }\n\n    var etagStale = true\n    var matches = parseTokenList(noneMatch)\n    for (var i = 0; i < matches.length; i++) {\n      var match = matches[i]\n      if (match === etag || match === 'W/' + etag || 'W/' + match === etag) {\n        etagStale = false\n        break\n      }\n    }\n\n    if (etagStale) {\n      return false\n    }\n  }\n\n  // if-modified-since\n  if (modifiedSince) {\n    var lastModified = resHeaders['last-modified']\n    var modifiedStale = !lastModified || !(parseHttpDate(lastModified) <= parseHttpDate(modifiedSince))\n\n    if (modifiedStale) {\n      return false\n    }\n  }\n\n  return true\n}\n\n/**\n * Parse an HTTP Date into a number.\n *\n * @param {string} date\n * @private\n */\n\nfunction parseHttpDate (date) {\n  var timestamp = date && Date.parse(date)\n\n  // istanbul ignore next: guard against date.js Date.parse patching\n  return typeof timestamp === 'number'\n    ? timestamp\n    : NaN\n}\n\n/**\n * Parse a HTTP token list.\n *\n * @param {string} str\n * @private\n */\n\nfunction parseTokenList (str) {\n  var end = 0\n  var list = []\n  var start = 0\n\n  // gather tokens\n  for (var i = 0, len = str.length; i < len; i++) {\n    switch (str.charCodeAt(i)) {\n      case 0x20: /*   */\n        if (start === end) {\n          start = end = i + 1\n        }\n        break\n      case 0x2c: /* , */\n        list.push(str.substring(start, end))\n        start = end = i + 1\n        break\n      default:\n        end = i + 1\n        break\n    }\n  }\n\n  // final token\n  list.push(str.substring(start, end))\n\n  return list\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fresh/index.js?")},"./node_modules/fs-extra/lib/copy-sync/copy-sync.js":
/*!**********************************************************!*\
  !*** ./node_modules/fs-extra/lib/copy-sync/copy-sync.js ***!
  \**********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst fs = __webpack_require__(/*! graceful-fs */ \"./node_modules/graceful-fs/graceful-fs.js\")\nconst path = __webpack_require__(/*! path */ \"path\")\nconst mkdirsSync = (__webpack_require__(/*! ../mkdirs */ \"./node_modules/fs-extra/lib/mkdirs/index.js\").mkdirsSync)\nconst utimesMillisSync = (__webpack_require__(/*! ../util/utimes */ \"./node_modules/fs-extra/lib/util/utimes.js\").utimesMillisSync)\nconst stat = __webpack_require__(/*! ../util/stat */ \"./node_modules/fs-extra/lib/util/stat.js\")\n\nfunction copySync (src, dest, opts) {\n  if (typeof opts === 'function') {\n    opts = { filter: opts }\n  }\n\n  opts = opts || {}\n  opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now\n  opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber\n\n  // Warn about using preserveTimestamps on 32-bit node\n  if (opts.preserveTimestamps && process.arch === 'ia32') {\n    console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\\n\n    see https://github.com/jprichardson/node-fs-extra/issues/269`)\n  }\n\n  const { srcStat, destStat } = stat.checkPathsSync(src, dest, 'copy')\n  stat.checkParentPathsSync(src, srcStat, dest, 'copy')\n  return handleFilterAndCopy(destStat, src, dest, opts)\n}\n\nfunction handleFilterAndCopy (destStat, src, dest, opts) {\n  if (opts.filter && !opts.filter(src, dest)) return\n  const destParent = path.dirname(dest)\n  if (!fs.existsSync(destParent)) mkdirsSync(destParent)\n  return startCopy(destStat, src, dest, opts)\n}\n\nfunction startCopy (destStat, src, dest, opts) {\n  if (opts.filter && !opts.filter(src, dest)) return\n  return getStats(destStat, src, dest, opts)\n}\n\nfunction getStats (destStat, src, dest, opts) {\n  const statSync = opts.dereference ? fs.statSync : fs.lstatSync\n  const srcStat = statSync(src)\n\n  if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts)\n  else if (srcStat.isFile() ||\n           srcStat.isCharacterDevice() ||\n           srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts)\n  else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts)\n}\n\nfunction onFile (srcStat, destStat, src, dest, opts) {\n  if (!destStat) return copyFile(srcStat, src, dest, opts)\n  return mayCopyFile(srcStat, src, dest, opts)\n}\n\nfunction mayCopyFile (srcStat, src, dest, opts) {\n  if (opts.overwrite) {\n    fs.unlinkSync(dest)\n    return copyFile(srcStat, src, dest, opts)\n  } else if (opts.errorOnExist) {\n    throw new Error(`'${dest}' already exists`)\n  }\n}\n\nfunction copyFile (srcStat, src, dest, opts) {\n  fs.copyFileSync(src, dest)\n  if (opts.preserveTimestamps) handleTimestamps(srcStat.mode, src, dest)\n  return setDestMode(dest, srcStat.mode)\n}\n\nfunction handleTimestamps (srcMode, src, dest) {\n  // Make sure the file is writable before setting the timestamp\n  // otherwise open fails with EPERM when invoked with 'r+'\n  // (through utimes call)\n  if (fileIsNotWritable(srcMode)) makeFileWritable(dest, srcMode)\n  return setDestTimestamps(src, dest)\n}\n\nfunction fileIsNotWritable (srcMode) {\n  return (srcMode & 0o200) === 0\n}\n\nfunction makeFileWritable (dest, srcMode) {\n  return setDestMode(dest, srcMode | 0o200)\n}\n\nfunction setDestMode (dest, srcMode) {\n  return fs.chmodSync(dest, srcMode)\n}\n\nfunction setDestTimestamps (src, dest) {\n  // The initial srcStat.atime cannot be trusted\n  // because it is modified by the read(2) system call\n  // (See https://nodejs.org/api/fs.html#fs_stat_time_values)\n  const updatedSrcStat = fs.statSync(src)\n  return utimesMillisSync(dest, updatedSrcStat.atime, updatedSrcStat.mtime)\n}\n\nfunction onDir (srcStat, destStat, src, dest, opts) {\n  if (!destStat) return mkDirAndCopy(srcStat.mode, src, dest, opts)\n  if (destStat && !destStat.isDirectory()) {\n    throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)\n  }\n  return copyDir(src, dest, opts)\n}\n\nfunction mkDirAndCopy (srcMode, src, dest, opts) {\n  fs.mkdirSync(dest)\n  copyDir(src, dest, opts)\n  return setDestMode(dest, srcMode)\n}\n\nfunction copyDir (src, dest, opts) {\n  fs.readdirSync(src).forEach(item => copyDirItem(item, src, dest, opts))\n}\n\nfunction copyDirItem (item, src, dest, opts) {\n  const srcItem = path.join(src, item)\n  const destItem = path.join(dest, item)\n  const { destStat } = stat.checkPathsSync(srcItem, destItem, 'copy')\n  return startCopy(destStat, srcItem, destItem, opts)\n}\n\nfunction onLink (destStat, src, dest, opts) {\n  let resolvedSrc = fs.readlinkSync(src)\n  if (opts.dereference) {\n    resolvedSrc = path.resolve(process.cwd(), resolvedSrc)\n  }\n\n  if (!destStat) {\n    return fs.symlinkSync(resolvedSrc, dest)\n  } else {\n    let resolvedDest\n    try {\n      resolvedDest = fs.readlinkSync(dest)\n    } catch (err) {\n      // dest exists and is a regular file or directory,\n      // Windows may throw UNKNOWN error. If dest already exists,\n      // fs throws error anyway, so no need to guard against it here.\n      if (err.code === 'EINVAL' || err.code === 'UNKNOWN') return fs.symlinkSync(resolvedSrc, dest)\n      throw err\n    }\n    if (opts.dereference) {\n      resolvedDest = path.resolve(process.cwd(), resolvedDest)\n    }\n    if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {\n      throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)\n    }\n\n    // prevent copy if src is a subdir of dest since unlinking\n    // dest in this case would result in removing src contents\n    // and therefore a broken symlink would be created.\n    if (fs.statSync(dest).isDirectory() && stat.isSrcSubdir(resolvedDest, resolvedSrc)) {\n      throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)\n    }\n    return copyLink(resolvedSrc, dest)\n  }\n}\n\nfunction copyLink (resolvedSrc, dest) {\n  fs.unlinkSync(dest)\n  return fs.symlinkSync(resolvedSrc, dest)\n}\n\nmodule.exports = copySync\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/copy-sync/copy-sync.js?")},"./node_modules/fs-extra/lib/copy-sync/index.js":
/*!******************************************************!*\
  !*** ./node_modules/fs-extra/lib/copy-sync/index.js ***!
  \******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nmodule.exports = {\n  copySync: __webpack_require__(/*! ./copy-sync */ "./node_modules/fs-extra/lib/copy-sync/copy-sync.js")\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/copy-sync/index.js?')},"./node_modules/fs-extra/lib/copy/copy.js":
/*!************************************************!*\
  !*** ./node_modules/fs-extra/lib/copy/copy.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst fs = __webpack_require__(/*! graceful-fs */ \"./node_modules/graceful-fs/graceful-fs.js\")\nconst path = __webpack_require__(/*! path */ \"path\")\nconst mkdirs = (__webpack_require__(/*! ../mkdirs */ \"./node_modules/fs-extra/lib/mkdirs/index.js\").mkdirs)\nconst pathExists = (__webpack_require__(/*! ../path-exists */ \"./node_modules/fs-extra/lib/path-exists/index.js\").pathExists)\nconst utimesMillis = (__webpack_require__(/*! ../util/utimes */ \"./node_modules/fs-extra/lib/util/utimes.js\").utimesMillis)\nconst stat = __webpack_require__(/*! ../util/stat */ \"./node_modules/fs-extra/lib/util/stat.js\")\n\nfunction copy (src, dest, opts, cb) {\n  if (typeof opts === 'function' && !cb) {\n    cb = opts\n    opts = {}\n  } else if (typeof opts === 'function') {\n    opts = { filter: opts }\n  }\n\n  cb = cb || function () {}\n  opts = opts || {}\n\n  opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now\n  opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber\n\n  // Warn about using preserveTimestamps on 32-bit node\n  if (opts.preserveTimestamps && process.arch === 'ia32') {\n    console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\\n\n    see https://github.com/jprichardson/node-fs-extra/issues/269`)\n  }\n\n  stat.checkPaths(src, dest, 'copy', (err, stats) => {\n    if (err) return cb(err)\n    const { srcStat, destStat } = stats\n    stat.checkParentPaths(src, srcStat, dest, 'copy', err => {\n      if (err) return cb(err)\n      if (opts.filter) return handleFilter(checkParentDir, destStat, src, dest, opts, cb)\n      return checkParentDir(destStat, src, dest, opts, cb)\n    })\n  })\n}\n\nfunction checkParentDir (destStat, src, dest, opts, cb) {\n  const destParent = path.dirname(dest)\n  pathExists(destParent, (err, dirExists) => {\n    if (err) return cb(err)\n    if (dirExists) return startCopy(destStat, src, dest, opts, cb)\n    mkdirs(destParent, err => {\n      if (err) return cb(err)\n      return startCopy(destStat, src, dest, opts, cb)\n    })\n  })\n}\n\nfunction handleFilter (onInclude, destStat, src, dest, opts, cb) {\n  Promise.resolve(opts.filter(src, dest)).then(include => {\n    if (include) return onInclude(destStat, src, dest, opts, cb)\n    return cb()\n  }, error => cb(error))\n}\n\nfunction startCopy (destStat, src, dest, opts, cb) {\n  if (opts.filter) return handleFilter(getStats, destStat, src, dest, opts, cb)\n  return getStats(destStat, src, dest, opts, cb)\n}\n\nfunction getStats (destStat, src, dest, opts, cb) {\n  const stat = opts.dereference ? fs.stat : fs.lstat\n  stat(src, (err, srcStat) => {\n    if (err) return cb(err)\n\n    if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts, cb)\n    else if (srcStat.isFile() ||\n             srcStat.isCharacterDevice() ||\n             srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts, cb)\n    else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts, cb)\n  })\n}\n\nfunction onFile (srcStat, destStat, src, dest, opts, cb) {\n  if (!destStat) return copyFile(srcStat, src, dest, opts, cb)\n  return mayCopyFile(srcStat, src, dest, opts, cb)\n}\n\nfunction mayCopyFile (srcStat, src, dest, opts, cb) {\n  if (opts.overwrite) {\n    fs.unlink(dest, err => {\n      if (err) return cb(err)\n      return copyFile(srcStat, src, dest, opts, cb)\n    })\n  } else if (opts.errorOnExist) {\n    return cb(new Error(`'${dest}' already exists`))\n  } else return cb()\n}\n\nfunction copyFile (srcStat, src, dest, opts, cb) {\n  fs.copyFile(src, dest, err => {\n    if (err) return cb(err)\n    if (opts.preserveTimestamps) return handleTimestampsAndMode(srcStat.mode, src, dest, cb)\n    return setDestMode(dest, srcStat.mode, cb)\n  })\n}\n\nfunction handleTimestampsAndMode (srcMode, src, dest, cb) {\n  // Make sure the file is writable before setting the timestamp\n  // otherwise open fails with EPERM when invoked with 'r+'\n  // (through utimes call)\n  if (fileIsNotWritable(srcMode)) {\n    return makeFileWritable(dest, srcMode, err => {\n      if (err) return cb(err)\n      return setDestTimestampsAndMode(srcMode, src, dest, cb)\n    })\n  }\n  return setDestTimestampsAndMode(srcMode, src, dest, cb)\n}\n\nfunction fileIsNotWritable (srcMode) {\n  return (srcMode & 0o200) === 0\n}\n\nfunction makeFileWritable (dest, srcMode, cb) {\n  return setDestMode(dest, srcMode | 0o200, cb)\n}\n\nfunction setDestTimestampsAndMode (srcMode, src, dest, cb) {\n  setDestTimestamps(src, dest, err => {\n    if (err) return cb(err)\n    return setDestMode(dest, srcMode, cb)\n  })\n}\n\nfunction setDestMode (dest, srcMode, cb) {\n  return fs.chmod(dest, srcMode, cb)\n}\n\nfunction setDestTimestamps (src, dest, cb) {\n  // The initial srcStat.atime cannot be trusted\n  // because it is modified by the read(2) system call\n  // (See https://nodejs.org/api/fs.html#fs_stat_time_values)\n  fs.stat(src, (err, updatedSrcStat) => {\n    if (err) return cb(err)\n    return utimesMillis(dest, updatedSrcStat.atime, updatedSrcStat.mtime, cb)\n  })\n}\n\nfunction onDir (srcStat, destStat, src, dest, opts, cb) {\n  if (!destStat) return mkDirAndCopy(srcStat.mode, src, dest, opts, cb)\n  if (destStat && !destStat.isDirectory()) {\n    return cb(new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`))\n  }\n  return copyDir(src, dest, opts, cb)\n}\n\nfunction mkDirAndCopy (srcMode, src, dest, opts, cb) {\n  fs.mkdir(dest, err => {\n    if (err) return cb(err)\n    copyDir(src, dest, opts, err => {\n      if (err) return cb(err)\n      return setDestMode(dest, srcMode, cb)\n    })\n  })\n}\n\nfunction copyDir (src, dest, opts, cb) {\n  fs.readdir(src, (err, items) => {\n    if (err) return cb(err)\n    return copyDirItems(items, src, dest, opts, cb)\n  })\n}\n\nfunction copyDirItems (items, src, dest, opts, cb) {\n  const item = items.pop()\n  if (!item) return cb()\n  return copyDirItem(items, item, src, dest, opts, cb)\n}\n\nfunction copyDirItem (items, item, src, dest, opts, cb) {\n  const srcItem = path.join(src, item)\n  const destItem = path.join(dest, item)\n  stat.checkPaths(srcItem, destItem, 'copy', (err, stats) => {\n    if (err) return cb(err)\n    const { destStat } = stats\n    startCopy(destStat, srcItem, destItem, opts, err => {\n      if (err) return cb(err)\n      return copyDirItems(items, src, dest, opts, cb)\n    })\n  })\n}\n\nfunction onLink (destStat, src, dest, opts, cb) {\n  fs.readlink(src, (err, resolvedSrc) => {\n    if (err) return cb(err)\n    if (opts.dereference) {\n      resolvedSrc = path.resolve(process.cwd(), resolvedSrc)\n    }\n\n    if (!destStat) {\n      return fs.symlink(resolvedSrc, dest, cb)\n    } else {\n      fs.readlink(dest, (err, resolvedDest) => {\n        if (err) {\n          // dest exists and is a regular file or directory,\n          // Windows may throw UNKNOWN error. If dest already exists,\n          // fs throws error anyway, so no need to guard against it here.\n          if (err.code === 'EINVAL' || err.code === 'UNKNOWN') return fs.symlink(resolvedSrc, dest, cb)\n          return cb(err)\n        }\n        if (opts.dereference) {\n          resolvedDest = path.resolve(process.cwd(), resolvedDest)\n        }\n        if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {\n          return cb(new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`))\n        }\n\n        // do not copy if src is a subdir of dest since unlinking\n        // dest in this case would result in removing src contents\n        // and therefore a broken symlink would be created.\n        if (destStat.isDirectory() && stat.isSrcSubdir(resolvedDest, resolvedSrc)) {\n          return cb(new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`))\n        }\n        return copyLink(resolvedSrc, dest, cb)\n      })\n    }\n  })\n}\n\nfunction copyLink (resolvedSrc, dest, cb) {\n  fs.unlink(dest, err => {\n    if (err) return cb(err)\n    return fs.symlink(resolvedSrc, dest, cb)\n  })\n}\n\nmodule.exports = copy\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/copy/copy.js?")},"./node_modules/fs-extra/lib/copy/index.js":
/*!*************************************************!*\
  !*** ./node_modules/fs-extra/lib/copy/index.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst u = (__webpack_require__(/*! universalify */ "./node_modules/universalify/index.js").fromCallback)\nmodule.exports = {\n  copy: u(__webpack_require__(/*! ./copy */ "./node_modules/fs-extra/lib/copy/copy.js"))\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/copy/index.js?')},"./node_modules/fs-extra/lib/empty/index.js":
/*!**************************************************!*\
  !*** ./node_modules/fs-extra/lib/empty/index.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst u = (__webpack_require__(/*! universalify */ "./node_modules/universalify/index.js").fromCallback)\nconst fs = __webpack_require__(/*! graceful-fs */ "./node_modules/graceful-fs/graceful-fs.js")\nconst path = __webpack_require__(/*! path */ "path")\nconst mkdir = __webpack_require__(/*! ../mkdirs */ "./node_modules/fs-extra/lib/mkdirs/index.js")\nconst remove = __webpack_require__(/*! ../remove */ "./node_modules/fs-extra/lib/remove/index.js")\n\nconst emptyDir = u(function emptyDir (dir, callback) {\n  callback = callback || function () {}\n  fs.readdir(dir, (err, items) => {\n    if (err) return mkdir.mkdirs(dir, callback)\n\n    items = items.map(item => path.join(dir, item))\n\n    deleteItem()\n\n    function deleteItem () {\n      const item = items.pop()\n      if (!item) return callback()\n      remove.remove(item, err => {\n        if (err) return callback(err)\n        deleteItem()\n      })\n    }\n  })\n})\n\nfunction emptyDirSync (dir) {\n  let items\n  try {\n    items = fs.readdirSync(dir)\n  } catch {\n    return mkdir.mkdirsSync(dir)\n  }\n\n  items.forEach(item => {\n    item = path.join(dir, item)\n    remove.removeSync(item)\n  })\n}\n\nmodule.exports = {\n  emptyDirSync,\n  emptydirSync: emptyDirSync,\n  emptyDir,\n  emptydir: emptyDir\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/empty/index.js?')},"./node_modules/fs-extra/lib/ensure/file.js":
/*!**************************************************!*\
  !*** ./node_modules/fs-extra/lib/ensure/file.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst u = (__webpack_require__(/*! universalify */ \"./node_modules/universalify/index.js\").fromCallback)\nconst path = __webpack_require__(/*! path */ \"path\")\nconst fs = __webpack_require__(/*! graceful-fs */ \"./node_modules/graceful-fs/graceful-fs.js\")\nconst mkdir = __webpack_require__(/*! ../mkdirs */ \"./node_modules/fs-extra/lib/mkdirs/index.js\")\n\nfunction createFile (file, callback) {\n  function makeFile () {\n    fs.writeFile(file, '', err => {\n      if (err) return callback(err)\n      callback()\n    })\n  }\n\n  fs.stat(file, (err, stats) => { // eslint-disable-line handle-callback-err\n    if (!err && stats.isFile()) return callback()\n    const dir = path.dirname(file)\n    fs.stat(dir, (err, stats) => {\n      if (err) {\n        // if the directory doesn't exist, make it\n        if (err.code === 'ENOENT') {\n          return mkdir.mkdirs(dir, err => {\n            if (err) return callback(err)\n            makeFile()\n          })\n        }\n        return callback(err)\n      }\n\n      if (stats.isDirectory()) makeFile()\n      else {\n        // parent is not a directory\n        // This is just to cause an internal ENOTDIR error to be thrown\n        fs.readdir(dir, err => {\n          if (err) return callback(err)\n        })\n      }\n    })\n  })\n}\n\nfunction createFileSync (file) {\n  let stats\n  try {\n    stats = fs.statSync(file)\n  } catch {}\n  if (stats && stats.isFile()) return\n\n  const dir = path.dirname(file)\n  try {\n    if (!fs.statSync(dir).isDirectory()) {\n      // parent is not a directory\n      // This is just to cause an internal ENOTDIR error to be thrown\n      fs.readdirSync(dir)\n    }\n  } catch (err) {\n    // If the stat call above failed because the directory doesn't exist, create it\n    if (err && err.code === 'ENOENT') mkdir.mkdirsSync(dir)\n    else throw err\n  }\n\n  fs.writeFileSync(file, '')\n}\n\nmodule.exports = {\n  createFile: u(createFile),\n  createFileSync\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/ensure/file.js?")},"./node_modules/fs-extra/lib/ensure/index.js":
/*!***************************************************!*\
  !*** ./node_modules/fs-extra/lib/ensure/index.js ***!
  \***************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst file = __webpack_require__(/*! ./file */ "./node_modules/fs-extra/lib/ensure/file.js")\nconst link = __webpack_require__(/*! ./link */ "./node_modules/fs-extra/lib/ensure/link.js")\nconst symlink = __webpack_require__(/*! ./symlink */ "./node_modules/fs-extra/lib/ensure/symlink.js")\n\nmodule.exports = {\n  // file\n  createFile: file.createFile,\n  createFileSync: file.createFileSync,\n  ensureFile: file.createFile,\n  ensureFileSync: file.createFileSync,\n  // link\n  createLink: link.createLink,\n  createLinkSync: link.createLinkSync,\n  ensureLink: link.createLink,\n  ensureLinkSync: link.createLinkSync,\n  // symlink\n  createSymlink: symlink.createSymlink,\n  createSymlinkSync: symlink.createSymlinkSync,\n  ensureSymlink: symlink.createSymlink,\n  ensureSymlinkSync: symlink.createSymlinkSync\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/ensure/index.js?')},"./node_modules/fs-extra/lib/ensure/link.js":
/*!**************************************************!*\
  !*** ./node_modules/fs-extra/lib/ensure/link.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst u = (__webpack_require__(/*! universalify */ "./node_modules/universalify/index.js").fromCallback)\nconst path = __webpack_require__(/*! path */ "path")\nconst fs = __webpack_require__(/*! graceful-fs */ "./node_modules/graceful-fs/graceful-fs.js")\nconst mkdir = __webpack_require__(/*! ../mkdirs */ "./node_modules/fs-extra/lib/mkdirs/index.js")\nconst pathExists = (__webpack_require__(/*! ../path-exists */ "./node_modules/fs-extra/lib/path-exists/index.js").pathExists)\n\nfunction createLink (srcpath, dstpath, callback) {\n  function makeLink (srcpath, dstpath) {\n    fs.link(srcpath, dstpath, err => {\n      if (err) return callback(err)\n      callback(null)\n    })\n  }\n\n  pathExists(dstpath, (err, destinationExists) => {\n    if (err) return callback(err)\n    if (destinationExists) return callback(null)\n    fs.lstat(srcpath, (err) => {\n      if (err) {\n        err.message = err.message.replace(\'lstat\', \'ensureLink\')\n        return callback(err)\n      }\n\n      const dir = path.dirname(dstpath)\n      pathExists(dir, (err, dirExists) => {\n        if (err) return callback(err)\n        if (dirExists) return makeLink(srcpath, dstpath)\n        mkdir.mkdirs(dir, err => {\n          if (err) return callback(err)\n          makeLink(srcpath, dstpath)\n        })\n      })\n    })\n  })\n}\n\nfunction createLinkSync (srcpath, dstpath) {\n  const destinationExists = fs.existsSync(dstpath)\n  if (destinationExists) return undefined\n\n  try {\n    fs.lstatSync(srcpath)\n  } catch (err) {\n    err.message = err.message.replace(\'lstat\', \'ensureLink\')\n    throw err\n  }\n\n  const dir = path.dirname(dstpath)\n  const dirExists = fs.existsSync(dir)\n  if (dirExists) return fs.linkSync(srcpath, dstpath)\n  mkdir.mkdirsSync(dir)\n\n  return fs.linkSync(srcpath, dstpath)\n}\n\nmodule.exports = {\n  createLink: u(createLink),\n  createLinkSync\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/ensure/link.js?')},"./node_modules/fs-extra/lib/ensure/symlink-paths.js":
/*!***********************************************************!*\
  !*** ./node_modules/fs-extra/lib/ensure/symlink-paths.js ***!
  \***********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst path = __webpack_require__(/*! path */ \"path\")\nconst fs = __webpack_require__(/*! graceful-fs */ \"./node_modules/graceful-fs/graceful-fs.js\")\nconst pathExists = (__webpack_require__(/*! ../path-exists */ \"./node_modules/fs-extra/lib/path-exists/index.js\").pathExists)\n\n/**\n * Function that returns two types of paths, one relative to symlink, and one\n * relative to the current working directory. Checks if path is absolute or\n * relative. If the path is relative, this function checks if the path is\n * relative to symlink or relative to current working directory. This is an\n * initiative to find a smarter `srcpath` to supply when building symlinks.\n * This allows you to determine which path to use out of one of three possible\n * types of source paths. The first is an absolute path. This is detected by\n * `path.isAbsolute()`. When an absolute path is provided, it is checked to\n * see if it exists. If it does it's used, if not an error is returned\n * (callback)/ thrown (sync). The other two options for `srcpath` are a\n * relative url. By default Node's `fs.symlink` works by creating a symlink\n * using `dstpath` and expects the `srcpath` to be relative to the newly\n * created symlink. If you provide a `srcpath` that does not exist on the file\n * system it results in a broken symlink. To minimize this, the function\n * checks to see if the 'relative to symlink' source file exists, and if it\n * does it will use it. If it does not, it checks if there's a file that\n * exists that is relative to the current working directory, if does its used.\n * This preserves the expectations of the original fs.symlink spec and adds\n * the ability to pass in `relative to current working direcotry` paths.\n */\n\nfunction symlinkPaths (srcpath, dstpath, callback) {\n  if (path.isAbsolute(srcpath)) {\n    return fs.lstat(srcpath, (err) => {\n      if (err) {\n        err.message = err.message.replace('lstat', 'ensureSymlink')\n        return callback(err)\n      }\n      return callback(null, {\n        toCwd: srcpath,\n        toDst: srcpath\n      })\n    })\n  } else {\n    const dstdir = path.dirname(dstpath)\n    const relativeToDst = path.join(dstdir, srcpath)\n    return pathExists(relativeToDst, (err, exists) => {\n      if (err) return callback(err)\n      if (exists) {\n        return callback(null, {\n          toCwd: relativeToDst,\n          toDst: srcpath\n        })\n      } else {\n        return fs.lstat(srcpath, (err) => {\n          if (err) {\n            err.message = err.message.replace('lstat', 'ensureSymlink')\n            return callback(err)\n          }\n          return callback(null, {\n            toCwd: srcpath,\n            toDst: path.relative(dstdir, srcpath)\n          })\n        })\n      }\n    })\n  }\n}\n\nfunction symlinkPathsSync (srcpath, dstpath) {\n  let exists\n  if (path.isAbsolute(srcpath)) {\n    exists = fs.existsSync(srcpath)\n    if (!exists) throw new Error('absolute srcpath does not exist')\n    return {\n      toCwd: srcpath,\n      toDst: srcpath\n    }\n  } else {\n    const dstdir = path.dirname(dstpath)\n    const relativeToDst = path.join(dstdir, srcpath)\n    exists = fs.existsSync(relativeToDst)\n    if (exists) {\n      return {\n        toCwd: relativeToDst,\n        toDst: srcpath\n      }\n    } else {\n      exists = fs.existsSync(srcpath)\n      if (!exists) throw new Error('relative srcpath does not exist')\n      return {\n        toCwd: srcpath,\n        toDst: path.relative(dstdir, srcpath)\n      }\n    }\n  }\n}\n\nmodule.exports = {\n  symlinkPaths,\n  symlinkPathsSync\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/ensure/symlink-paths.js?")},"./node_modules/fs-extra/lib/ensure/symlink-type.js":
/*!**********************************************************!*\
  !*** ./node_modules/fs-extra/lib/ensure/symlink-type.js ***!
  \**********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst fs = __webpack_require__(/*! graceful-fs */ \"./node_modules/graceful-fs/graceful-fs.js\")\n\nfunction symlinkType (srcpath, type, callback) {\n  callback = (typeof type === 'function') ? type : callback\n  type = (typeof type === 'function') ? false : type\n  if (type) return callback(null, type)\n  fs.lstat(srcpath, (err, stats) => {\n    if (err) return callback(null, 'file')\n    type = (stats && stats.isDirectory()) ? 'dir' : 'file'\n    callback(null, type)\n  })\n}\n\nfunction symlinkTypeSync (srcpath, type) {\n  let stats\n\n  if (type) return type\n  try {\n    stats = fs.lstatSync(srcpath)\n  } catch {\n    return 'file'\n  }\n  return (stats && stats.isDirectory()) ? 'dir' : 'file'\n}\n\nmodule.exports = {\n  symlinkType,\n  symlinkTypeSync\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/ensure/symlink-type.js?")},"./node_modules/fs-extra/lib/ensure/symlink.js":
/*!*****************************************************!*\
  !*** ./node_modules/fs-extra/lib/ensure/symlink.js ***!
  \*****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst u = (__webpack_require__(/*! universalify */ "./node_modules/universalify/index.js").fromCallback)\nconst path = __webpack_require__(/*! path */ "path")\nconst fs = __webpack_require__(/*! graceful-fs */ "./node_modules/graceful-fs/graceful-fs.js")\nconst _mkdirs = __webpack_require__(/*! ../mkdirs */ "./node_modules/fs-extra/lib/mkdirs/index.js")\nconst mkdirs = _mkdirs.mkdirs\nconst mkdirsSync = _mkdirs.mkdirsSync\n\nconst _symlinkPaths = __webpack_require__(/*! ./symlink-paths */ "./node_modules/fs-extra/lib/ensure/symlink-paths.js")\nconst symlinkPaths = _symlinkPaths.symlinkPaths\nconst symlinkPathsSync = _symlinkPaths.symlinkPathsSync\n\nconst _symlinkType = __webpack_require__(/*! ./symlink-type */ "./node_modules/fs-extra/lib/ensure/symlink-type.js")\nconst symlinkType = _symlinkType.symlinkType\nconst symlinkTypeSync = _symlinkType.symlinkTypeSync\n\nconst pathExists = (__webpack_require__(/*! ../path-exists */ "./node_modules/fs-extra/lib/path-exists/index.js").pathExists)\n\nfunction createSymlink (srcpath, dstpath, type, callback) {\n  callback = (typeof type === \'function\') ? type : callback\n  type = (typeof type === \'function\') ? false : type\n\n  pathExists(dstpath, (err, destinationExists) => {\n    if (err) return callback(err)\n    if (destinationExists) return callback(null)\n    symlinkPaths(srcpath, dstpath, (err, relative) => {\n      if (err) return callback(err)\n      srcpath = relative.toDst\n      symlinkType(relative.toCwd, type, (err, type) => {\n        if (err) return callback(err)\n        const dir = path.dirname(dstpath)\n        pathExists(dir, (err, dirExists) => {\n          if (err) return callback(err)\n          if (dirExists) return fs.symlink(srcpath, dstpath, type, callback)\n          mkdirs(dir, err => {\n            if (err) return callback(err)\n            fs.symlink(srcpath, dstpath, type, callback)\n          })\n        })\n      })\n    })\n  })\n}\n\nfunction createSymlinkSync (srcpath, dstpath, type) {\n  const destinationExists = fs.existsSync(dstpath)\n  if (destinationExists) return undefined\n\n  const relative = symlinkPathsSync(srcpath, dstpath)\n  srcpath = relative.toDst\n  type = symlinkTypeSync(relative.toCwd, type)\n  const dir = path.dirname(dstpath)\n  const exists = fs.existsSync(dir)\n  if (exists) return fs.symlinkSync(srcpath, dstpath, type)\n  mkdirsSync(dir)\n  return fs.symlinkSync(srcpath, dstpath, type)\n}\n\nmodule.exports = {\n  createSymlink: u(createSymlink),\n  createSymlinkSync\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/ensure/symlink.js?')},"./node_modules/fs-extra/lib/fs/index.js":
/*!***********************************************!*\
  !*** ./node_modules/fs-extra/lib/fs/index.js ***!
  \***********************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n// This is adapted from https://github.com/normalize/mz\n// Copyright (c) 2014-2016 Jonathan Ong me@jongleberry.com and Contributors\nconst u = (__webpack_require__(/*! universalify */ \"./node_modules/universalify/index.js\").fromCallback)\nconst fs = __webpack_require__(/*! graceful-fs */ \"./node_modules/graceful-fs/graceful-fs.js\")\n\nconst api = [\n  'access',\n  'appendFile',\n  'chmod',\n  'chown',\n  'close',\n  'copyFile',\n  'fchmod',\n  'fchown',\n  'fdatasync',\n  'fstat',\n  'fsync',\n  'ftruncate',\n  'futimes',\n  'lchmod',\n  'lchown',\n  'link',\n  'lstat',\n  'mkdir',\n  'mkdtemp',\n  'open',\n  'opendir',\n  'readdir',\n  'readFile',\n  'readlink',\n  'realpath',\n  'rename',\n  'rm',\n  'rmdir',\n  'stat',\n  'symlink',\n  'truncate',\n  'unlink',\n  'utimes',\n  'writeFile'\n].filter(key => {\n  // Some commands are not available on some systems. Ex:\n  // fs.opendir was added in Node.js v12.12.0\n  // fs.rm was added in Node.js v14.14.0\n  // fs.lchown is not available on at least some Linux\n  return typeof fs[key] === 'function'\n})\n\n// Export all keys:\nObject.keys(fs).forEach(key => {\n  if (key === 'promises') {\n    // fs.promises is a getter property that triggers ExperimentalWarning\n    // Don't re-export it here, the getter is defined in \"lib/index.js\"\n    return\n  }\n  exports[key] = fs[key]\n})\n\n// Universalify async methods:\napi.forEach(method => {\n  exports[method] = u(fs[method])\n})\n\n// We differ from mz/fs in that we still ship the old, broken, fs.exists()\n// since we are a drop-in replacement for the native module\nexports.exists = function (filename, callback) {\n  if (typeof callback === 'function') {\n    return fs.exists(filename, callback)\n  }\n  return new Promise(resolve => {\n    return fs.exists(filename, resolve)\n  })\n}\n\n// fs.read(), fs.write(), & fs.writev() need special treatment due to multiple callback args\n\nexports.read = function (fd, buffer, offset, length, position, callback) {\n  if (typeof callback === 'function') {\n    return fs.read(fd, buffer, offset, length, position, callback)\n  }\n  return new Promise((resolve, reject) => {\n    fs.read(fd, buffer, offset, length, position, (err, bytesRead, buffer) => {\n      if (err) return reject(err)\n      resolve({ bytesRead, buffer })\n    })\n  })\n}\n\n// Function signature can be\n// fs.write(fd, buffer[, offset[, length[, position]]], callback)\n// OR\n// fs.write(fd, string[, position[, encoding]], callback)\n// We need to handle both cases, so we use ...args\nexports.write = function (fd, buffer, ...args) {\n  if (typeof args[args.length - 1] === 'function') {\n    return fs.write(fd, buffer, ...args)\n  }\n\n  return new Promise((resolve, reject) => {\n    fs.write(fd, buffer, ...args, (err, bytesWritten, buffer) => {\n      if (err) return reject(err)\n      resolve({ bytesWritten, buffer })\n    })\n  })\n}\n\n// fs.writev only available in Node v12.9.0+\nif (typeof fs.writev === 'function') {\n  // Function signature is\n  // s.writev(fd, buffers[, position], callback)\n  // We need to handle the optional arg, so we use ...args\n  exports.writev = function (fd, buffers, ...args) {\n    if (typeof args[args.length - 1] === 'function') {\n      return fs.writev(fd, buffers, ...args)\n    }\n\n    return new Promise((resolve, reject) => {\n      fs.writev(fd, buffers, ...args, (err, bytesWritten, buffers) => {\n        if (err) return reject(err)\n        resolve({ bytesWritten, buffers })\n      })\n    })\n  }\n}\n\n// fs.realpath.native only available in Node v9.2+\nif (typeof fs.realpath.native === 'function') {\n  exports.realpath.native = u(fs.realpath.native)\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/fs/index.js?")},"./node_modules/fs-extra/lib/index.js":
/*!********************************************!*\
  !*** ./node_modules/fs-extra/lib/index.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nmodule.exports = {\n  // Export promiseified graceful-fs:\n  ...__webpack_require__(/*! ./fs */ "./node_modules/fs-extra/lib/fs/index.js"),\n  // Export extra methods:\n  ...__webpack_require__(/*! ./copy-sync */ "./node_modules/fs-extra/lib/copy-sync/index.js"),\n  ...__webpack_require__(/*! ./copy */ "./node_modules/fs-extra/lib/copy/index.js"),\n  ...__webpack_require__(/*! ./empty */ "./node_modules/fs-extra/lib/empty/index.js"),\n  ...__webpack_require__(/*! ./ensure */ "./node_modules/fs-extra/lib/ensure/index.js"),\n  ...__webpack_require__(/*! ./json */ "./node_modules/fs-extra/lib/json/index.js"),\n  ...__webpack_require__(/*! ./mkdirs */ "./node_modules/fs-extra/lib/mkdirs/index.js"),\n  ...__webpack_require__(/*! ./move-sync */ "./node_modules/fs-extra/lib/move-sync/index.js"),\n  ...__webpack_require__(/*! ./move */ "./node_modules/fs-extra/lib/move/index.js"),\n  ...__webpack_require__(/*! ./output */ "./node_modules/fs-extra/lib/output/index.js"),\n  ...__webpack_require__(/*! ./path-exists */ "./node_modules/fs-extra/lib/path-exists/index.js"),\n  ...__webpack_require__(/*! ./remove */ "./node_modules/fs-extra/lib/remove/index.js")\n}\n\n// Export fs.promises as a getter property so that we don\'t trigger\n// ExperimentalWarning before fs.promises is actually accessed.\nconst fs = __webpack_require__(/*! fs */ "fs")\nif (Object.getOwnPropertyDescriptor(fs, \'promises\')) {\n  Object.defineProperty(module.exports, "promises", ({\n    get () { return fs.promises }\n  }))\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/index.js?')},"./node_modules/fs-extra/lib/json/index.js":
/*!*************************************************!*\
  !*** ./node_modules/fs-extra/lib/json/index.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst u = (__webpack_require__(/*! universalify */ "./node_modules/universalify/index.js").fromPromise)\nconst jsonFile = __webpack_require__(/*! ./jsonfile */ "./node_modules/fs-extra/lib/json/jsonfile.js")\n\njsonFile.outputJson = u(__webpack_require__(/*! ./output-json */ "./node_modules/fs-extra/lib/json/output-json.js"))\njsonFile.outputJsonSync = __webpack_require__(/*! ./output-json-sync */ "./node_modules/fs-extra/lib/json/output-json-sync.js")\n// aliases\njsonFile.outputJSON = jsonFile.outputJson\njsonFile.outputJSONSync = jsonFile.outputJsonSync\njsonFile.writeJSON = jsonFile.writeJson\njsonFile.writeJSONSync = jsonFile.writeJsonSync\njsonFile.readJSON = jsonFile.readJson\njsonFile.readJSONSync = jsonFile.readJsonSync\n\nmodule.exports = jsonFile\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/json/index.js?')},"./node_modules/fs-extra/lib/json/jsonfile.js":
/*!****************************************************!*\
  !*** ./node_modules/fs-extra/lib/json/jsonfile.js ***!
  \****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst jsonFile = __webpack_require__(/*! jsonfile */ "./node_modules/jsonfile/index.js")\n\nmodule.exports = {\n  // jsonfile exports\n  readJson: jsonFile.readFile,\n  readJsonSync: jsonFile.readFileSync,\n  writeJson: jsonFile.writeFile,\n  writeJsonSync: jsonFile.writeFileSync\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/json/jsonfile.js?')},"./node_modules/fs-extra/lib/json/output-json-sync.js":
/*!************************************************************!*\
  !*** ./node_modules/fs-extra/lib/json/output-json-sync.js ***!
  \************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst { stringify } = __webpack_require__(/*! jsonfile/utils */ "./node_modules/jsonfile/utils.js")\nconst { outputFileSync } = __webpack_require__(/*! ../output */ "./node_modules/fs-extra/lib/output/index.js")\n\nfunction outputJsonSync (file, data, options) {\n  const str = stringify(data, options)\n\n  outputFileSync(file, str, options)\n}\n\nmodule.exports = outputJsonSync\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/json/output-json-sync.js?')},"./node_modules/fs-extra/lib/json/output-json.js":
/*!*******************************************************!*\
  !*** ./node_modules/fs-extra/lib/json/output-json.js ***!
  \*******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst { stringify } = __webpack_require__(/*! jsonfile/utils */ "./node_modules/jsonfile/utils.js")\nconst { outputFile } = __webpack_require__(/*! ../output */ "./node_modules/fs-extra/lib/output/index.js")\n\nasync function outputJson (file, data, options = {}) {\n  const str = stringify(data, options)\n\n  await outputFile(file, str, options)\n}\n\nmodule.exports = outputJson\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/json/output-json.js?')},"./node_modules/fs-extra/lib/mkdirs/index.js":
/*!***************************************************!*\
  !*** ./node_modules/fs-extra/lib/mkdirs/index.js ***!
  \***************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\nconst u = (__webpack_require__(/*! universalify */ "./node_modules/universalify/index.js").fromPromise)\nconst { makeDir: _makeDir, makeDirSync } = __webpack_require__(/*! ./make-dir */ "./node_modules/fs-extra/lib/mkdirs/make-dir.js")\nconst makeDir = u(_makeDir)\n\nmodule.exports = {\n  mkdirs: makeDir,\n  mkdirsSync: makeDirSync,\n  // alias\n  mkdirp: makeDir,\n  mkdirpSync: makeDirSync,\n  ensureDir: makeDir,\n  ensureDirSync: makeDirSync\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/mkdirs/index.js?')},"./node_modules/fs-extra/lib/mkdirs/make-dir.js":
/*!******************************************************!*\
  !*** ./node_modules/fs-extra/lib/mkdirs/make-dir.js ***!
  \******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("// Adapted from https://github.com/sindresorhus/make-dir\n// Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n// 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:\n// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n// 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.\n\nconst fs = __webpack_require__(/*! ../fs */ \"./node_modules/fs-extra/lib/fs/index.js\")\nconst path = __webpack_require__(/*! path */ \"path\")\nconst atLeastNode = __webpack_require__(/*! at-least-node */ \"./node_modules/at-least-node/index.js\")\n\nconst useNativeRecursiveOption = atLeastNode('10.12.0')\n\n// https://github.com/nodejs/node/issues/8987\n// https://github.com/libuv/libuv/pull/1088\nconst checkPath = pth => {\n  if (process.platform === 'win32') {\n    const pathHasInvalidWinCharacters = /[<>:\"|?*]/.test(pth.replace(path.parse(pth).root, ''))\n\n    if (pathHasInvalidWinCharacters) {\n      const error = new Error(`Path contains invalid characters: ${pth}`)\n      error.code = 'EINVAL'\n      throw error\n    }\n  }\n}\n\nconst processOptions = options => {\n  const defaults = { mode: 0o777 }\n  if (typeof options === 'number') options = { mode: options }\n  return { ...defaults, ...options }\n}\n\nconst permissionError = pth => {\n  // This replicates the exception of `fs.mkdir` with native the\n  // `recusive` option when run on an invalid drive under Windows.\n  const error = new Error(`operation not permitted, mkdir '${pth}'`)\n  error.code = 'EPERM'\n  error.errno = -4048\n  error.path = pth\n  error.syscall = 'mkdir'\n  return error\n}\n\nmodule.exports.makeDir = async (input, options) => {\n  checkPath(input)\n  options = processOptions(options)\n\n  if (useNativeRecursiveOption) {\n    const pth = path.resolve(input)\n\n    return fs.mkdir(pth, {\n      mode: options.mode,\n      recursive: true\n    })\n  }\n\n  const make = async pth => {\n    try {\n      await fs.mkdir(pth, options.mode)\n    } catch (error) {\n      if (error.code === 'EPERM') {\n        throw error\n      }\n\n      if (error.code === 'ENOENT') {\n        if (path.dirname(pth) === pth) {\n          throw permissionError(pth)\n        }\n\n        if (error.message.includes('null bytes')) {\n          throw error\n        }\n\n        await make(path.dirname(pth))\n        return make(pth)\n      }\n\n      try {\n        const stats = await fs.stat(pth)\n        if (!stats.isDirectory()) {\n          // This error is never exposed to the user\n          // it is caught below, and the original error is thrown\n          throw new Error('The path is not a directory')\n        }\n      } catch {\n        throw error\n      }\n    }\n  }\n\n  return make(path.resolve(input))\n}\n\nmodule.exports.makeDirSync = (input, options) => {\n  checkPath(input)\n  options = processOptions(options)\n\n  if (useNativeRecursiveOption) {\n    const pth = path.resolve(input)\n\n    return fs.mkdirSync(pth, {\n      mode: options.mode,\n      recursive: true\n    })\n  }\n\n  const make = pth => {\n    try {\n      fs.mkdirSync(pth, options.mode)\n    } catch (error) {\n      if (error.code === 'EPERM') {\n        throw error\n      }\n\n      if (error.code === 'ENOENT') {\n        if (path.dirname(pth) === pth) {\n          throw permissionError(pth)\n        }\n\n        if (error.message.includes('null bytes')) {\n          throw error\n        }\n\n        make(path.dirname(pth))\n        return make(pth)\n      }\n\n      try {\n        if (!fs.statSync(pth).isDirectory()) {\n          // This error is never exposed to the user\n          // it is caught below, and the original error is thrown\n          throw new Error('The path is not a directory')\n        }\n      } catch {\n        throw error\n      }\n    }\n  }\n\n  return make(path.resolve(input))\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/mkdirs/make-dir.js?")},"./node_modules/fs-extra/lib/move-sync/index.js":
/*!******************************************************!*\
  !*** ./node_modules/fs-extra/lib/move-sync/index.js ***!
  \******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nmodule.exports = {\n  moveSync: __webpack_require__(/*! ./move-sync */ "./node_modules/fs-extra/lib/move-sync/move-sync.js")\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/move-sync/index.js?')},"./node_modules/fs-extra/lib/move-sync/move-sync.js":
/*!**********************************************************!*\
  !*** ./node_modules/fs-extra/lib/move-sync/move-sync.js ***!
  \**********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst fs = __webpack_require__(/*! graceful-fs */ "./node_modules/graceful-fs/graceful-fs.js")\nconst path = __webpack_require__(/*! path */ "path")\nconst copySync = (__webpack_require__(/*! ../copy-sync */ "./node_modules/fs-extra/lib/copy-sync/index.js").copySync)\nconst removeSync = (__webpack_require__(/*! ../remove */ "./node_modules/fs-extra/lib/remove/index.js").removeSync)\nconst mkdirpSync = (__webpack_require__(/*! ../mkdirs */ "./node_modules/fs-extra/lib/mkdirs/index.js").mkdirpSync)\nconst stat = __webpack_require__(/*! ../util/stat */ "./node_modules/fs-extra/lib/util/stat.js")\n\nfunction moveSync (src, dest, opts) {\n  opts = opts || {}\n  const overwrite = opts.overwrite || opts.clobber || false\n\n  const { srcStat } = stat.checkPathsSync(src, dest, \'move\')\n  stat.checkParentPathsSync(src, srcStat, dest, \'move\')\n  mkdirpSync(path.dirname(dest))\n  return doRename(src, dest, overwrite)\n}\n\nfunction doRename (src, dest, overwrite) {\n  if (overwrite) {\n    removeSync(dest)\n    return rename(src, dest, overwrite)\n  }\n  if (fs.existsSync(dest)) throw new Error(\'dest already exists.\')\n  return rename(src, dest, overwrite)\n}\n\nfunction rename (src, dest, overwrite) {\n  try {\n    fs.renameSync(src, dest)\n  } catch (err) {\n    if (err.code !== \'EXDEV\') throw err\n    return moveAcrossDevice(src, dest, overwrite)\n  }\n}\n\nfunction moveAcrossDevice (src, dest, overwrite) {\n  const opts = {\n    overwrite,\n    errorOnExist: true\n  }\n  copySync(src, dest, opts)\n  return removeSync(src)\n}\n\nmodule.exports = moveSync\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/move-sync/move-sync.js?')},"./node_modules/fs-extra/lib/move/index.js":
/*!*************************************************!*\
  !*** ./node_modules/fs-extra/lib/move/index.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst u = (__webpack_require__(/*! universalify */ "./node_modules/universalify/index.js").fromCallback)\nmodule.exports = {\n  move: u(__webpack_require__(/*! ./move */ "./node_modules/fs-extra/lib/move/move.js"))\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/move/index.js?')},"./node_modules/fs-extra/lib/move/move.js":
/*!************************************************!*\
  !*** ./node_modules/fs-extra/lib/move/move.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst fs = __webpack_require__(/*! graceful-fs */ "./node_modules/graceful-fs/graceful-fs.js")\nconst path = __webpack_require__(/*! path */ "path")\nconst copy = (__webpack_require__(/*! ../copy */ "./node_modules/fs-extra/lib/copy/index.js").copy)\nconst remove = (__webpack_require__(/*! ../remove */ "./node_modules/fs-extra/lib/remove/index.js").remove)\nconst mkdirp = (__webpack_require__(/*! ../mkdirs */ "./node_modules/fs-extra/lib/mkdirs/index.js").mkdirp)\nconst pathExists = (__webpack_require__(/*! ../path-exists */ "./node_modules/fs-extra/lib/path-exists/index.js").pathExists)\nconst stat = __webpack_require__(/*! ../util/stat */ "./node_modules/fs-extra/lib/util/stat.js")\n\nfunction move (src, dest, opts, cb) {\n  if (typeof opts === \'function\') {\n    cb = opts\n    opts = {}\n  }\n\n  const overwrite = opts.overwrite || opts.clobber || false\n\n  stat.checkPaths(src, dest, \'move\', (err, stats) => {\n    if (err) return cb(err)\n    const { srcStat } = stats\n    stat.checkParentPaths(src, srcStat, dest, \'move\', err => {\n      if (err) return cb(err)\n      mkdirp(path.dirname(dest), err => {\n        if (err) return cb(err)\n        return doRename(src, dest, overwrite, cb)\n      })\n    })\n  })\n}\n\nfunction doRename (src, dest, overwrite, cb) {\n  if (overwrite) {\n    return remove(dest, err => {\n      if (err) return cb(err)\n      return rename(src, dest, overwrite, cb)\n    })\n  }\n  pathExists(dest, (err, destExists) => {\n    if (err) return cb(err)\n    if (destExists) return cb(new Error(\'dest already exists.\'))\n    return rename(src, dest, overwrite, cb)\n  })\n}\n\nfunction rename (src, dest, overwrite, cb) {\n  fs.rename(src, dest, err => {\n    if (!err) return cb()\n    if (err.code !== \'EXDEV\') return cb(err)\n    return moveAcrossDevice(src, dest, overwrite, cb)\n  })\n}\n\nfunction moveAcrossDevice (src, dest, overwrite, cb) {\n  const opts = {\n    overwrite,\n    errorOnExist: true\n  }\n  copy(src, dest, opts, err => {\n    if (err) return cb(err)\n    return remove(src, cb)\n  })\n}\n\nmodule.exports = move\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/move/move.js?')},"./node_modules/fs-extra/lib/output/index.js":
/*!***************************************************!*\
  !*** ./node_modules/fs-extra/lib/output/index.js ***!
  \***************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst u = (__webpack_require__(/*! universalify */ "./node_modules/universalify/index.js").fromCallback)\nconst fs = __webpack_require__(/*! graceful-fs */ "./node_modules/graceful-fs/graceful-fs.js")\nconst path = __webpack_require__(/*! path */ "path")\nconst mkdir = __webpack_require__(/*! ../mkdirs */ "./node_modules/fs-extra/lib/mkdirs/index.js")\nconst pathExists = (__webpack_require__(/*! ../path-exists */ "./node_modules/fs-extra/lib/path-exists/index.js").pathExists)\n\nfunction outputFile (file, data, encoding, callback) {\n  if (typeof encoding === \'function\') {\n    callback = encoding\n    encoding = \'utf8\'\n  }\n\n  const dir = path.dirname(file)\n  pathExists(dir, (err, itDoes) => {\n    if (err) return callback(err)\n    if (itDoes) return fs.writeFile(file, data, encoding, callback)\n\n    mkdir.mkdirs(dir, err => {\n      if (err) return callback(err)\n\n      fs.writeFile(file, data, encoding, callback)\n    })\n  })\n}\n\nfunction outputFileSync (file, ...args) {\n  const dir = path.dirname(file)\n  if (fs.existsSync(dir)) {\n    return fs.writeFileSync(file, ...args)\n  }\n  mkdir.mkdirsSync(dir)\n  fs.writeFileSync(file, ...args)\n}\n\nmodule.exports = {\n  outputFile: u(outputFile),\n  outputFileSync\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/output/index.js?')},"./node_modules/fs-extra/lib/path-exists/index.js":
/*!********************************************************!*\
  !*** ./node_modules/fs-extra/lib/path-exists/index.js ***!
  \********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\nconst u = (__webpack_require__(/*! universalify */ "./node_modules/universalify/index.js").fromPromise)\nconst fs = __webpack_require__(/*! ../fs */ "./node_modules/fs-extra/lib/fs/index.js")\n\nfunction pathExists (path) {\n  return fs.access(path).then(() => true).catch(() => false)\n}\n\nmodule.exports = {\n  pathExists: u(pathExists),\n  pathExistsSync: fs.existsSync\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/path-exists/index.js?')},"./node_modules/fs-extra/lib/remove/index.js":
/*!***************************************************!*\
  !*** ./node_modules/fs-extra/lib/remove/index.js ***!
  \***************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst u = (__webpack_require__(/*! universalify */ "./node_modules/universalify/index.js").fromCallback)\nconst rimraf = __webpack_require__(/*! ./rimraf */ "./node_modules/fs-extra/lib/remove/rimraf.js")\n\nmodule.exports = {\n  remove: u(rimraf),\n  removeSync: rimraf.sync\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/remove/index.js?')},"./node_modules/fs-extra/lib/remove/rimraf.js":
/*!****************************************************!*\
  !*** ./node_modules/fs-extra/lib/remove/rimraf.js ***!
  \****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst fs = __webpack_require__(/*! graceful-fs */ \"./node_modules/graceful-fs/graceful-fs.js\")\nconst path = __webpack_require__(/*! path */ \"path\")\nconst assert = __webpack_require__(/*! assert */ \"assert\")\n\nconst isWindows = (process.platform === 'win32')\n\nfunction defaults (options) {\n  const methods = [\n    'unlink',\n    'chmod',\n    'stat',\n    'lstat',\n    'rmdir',\n    'readdir'\n  ]\n  methods.forEach(m => {\n    options[m] = options[m] || fs[m]\n    m = m + 'Sync'\n    options[m] = options[m] || fs[m]\n  })\n\n  options.maxBusyTries = options.maxBusyTries || 3\n}\n\nfunction rimraf (p, options, cb) {\n  let busyTries = 0\n\n  if (typeof options === 'function') {\n    cb = options\n    options = {}\n  }\n\n  assert(p, 'rimraf: missing path')\n  assert.strictEqual(typeof p, 'string', 'rimraf: path should be a string')\n  assert.strictEqual(typeof cb, 'function', 'rimraf: callback function required')\n  assert(options, 'rimraf: invalid options argument provided')\n  assert.strictEqual(typeof options, 'object', 'rimraf: options should be object')\n\n  defaults(options)\n\n  rimraf_(p, options, function CB (er) {\n    if (er) {\n      if ((er.code === 'EBUSY' || er.code === 'ENOTEMPTY' || er.code === 'EPERM') &&\n          busyTries < options.maxBusyTries) {\n        busyTries++\n        const time = busyTries * 100\n        // try again, with the same exact callback as this one.\n        return setTimeout(() => rimraf_(p, options, CB), time)\n      }\n\n      // already gone\n      if (er.code === 'ENOENT') er = null\n    }\n\n    cb(er)\n  })\n}\n\n// Two possible strategies.\n// 1. Assume it's a file.  unlink it, then do the dir stuff on EPERM or EISDIR\n// 2. Assume it's a directory.  readdir, then do the file stuff on ENOTDIR\n//\n// Both result in an extra syscall when you guess wrong.  However, there\n// are likely far more normal files in the world than directories.  This\n// is based on the assumption that a the average number of files per\n// directory is >= 1.\n//\n// If anyone ever complains about this, then I guess the strategy could\n// be made configurable somehow.  But until then, YAGNI.\nfunction rimraf_ (p, options, cb) {\n  assert(p)\n  assert(options)\n  assert(typeof cb === 'function')\n\n  // sunos lets the root user unlink directories, which is... weird.\n  // so we have to lstat here and make sure it's not a dir.\n  options.lstat(p, (er, st) => {\n    if (er && er.code === 'ENOENT') {\n      return cb(null)\n    }\n\n    // Windows can EPERM on stat.  Life is suffering.\n    if (er && er.code === 'EPERM' && isWindows) {\n      return fixWinEPERM(p, options, er, cb)\n    }\n\n    if (st && st.isDirectory()) {\n      return rmdir(p, options, er, cb)\n    }\n\n    options.unlink(p, er => {\n      if (er) {\n        if (er.code === 'ENOENT') {\n          return cb(null)\n        }\n        if (er.code === 'EPERM') {\n          return (isWindows)\n            ? fixWinEPERM(p, options, er, cb)\n            : rmdir(p, options, er, cb)\n        }\n        if (er.code === 'EISDIR') {\n          return rmdir(p, options, er, cb)\n        }\n      }\n      return cb(er)\n    })\n  })\n}\n\nfunction fixWinEPERM (p, options, er, cb) {\n  assert(p)\n  assert(options)\n  assert(typeof cb === 'function')\n\n  options.chmod(p, 0o666, er2 => {\n    if (er2) {\n      cb(er2.code === 'ENOENT' ? null : er)\n    } else {\n      options.stat(p, (er3, stats) => {\n        if (er3) {\n          cb(er3.code === 'ENOENT' ? null : er)\n        } else if (stats.isDirectory()) {\n          rmdir(p, options, er, cb)\n        } else {\n          options.unlink(p, cb)\n        }\n      })\n    }\n  })\n}\n\nfunction fixWinEPERMSync (p, options, er) {\n  let stats\n\n  assert(p)\n  assert(options)\n\n  try {\n    options.chmodSync(p, 0o666)\n  } catch (er2) {\n    if (er2.code === 'ENOENT') {\n      return\n    } else {\n      throw er\n    }\n  }\n\n  try {\n    stats = options.statSync(p)\n  } catch (er3) {\n    if (er3.code === 'ENOENT') {\n      return\n    } else {\n      throw er\n    }\n  }\n\n  if (stats.isDirectory()) {\n    rmdirSync(p, options, er)\n  } else {\n    options.unlinkSync(p)\n  }\n}\n\nfunction rmdir (p, options, originalEr, cb) {\n  assert(p)\n  assert(options)\n  assert(typeof cb === 'function')\n\n  // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS)\n  // if we guessed wrong, and it's not a directory, then\n  // raise the original error.\n  options.rmdir(p, er => {\n    if (er && (er.code === 'ENOTEMPTY' || er.code === 'EEXIST' || er.code === 'EPERM')) {\n      rmkids(p, options, cb)\n    } else if (er && er.code === 'ENOTDIR') {\n      cb(originalEr)\n    } else {\n      cb(er)\n    }\n  })\n}\n\nfunction rmkids (p, options, cb) {\n  assert(p)\n  assert(options)\n  assert(typeof cb === 'function')\n\n  options.readdir(p, (er, files) => {\n    if (er) return cb(er)\n\n    let n = files.length\n    let errState\n\n    if (n === 0) return options.rmdir(p, cb)\n\n    files.forEach(f => {\n      rimraf(path.join(p, f), options, er => {\n        if (errState) {\n          return\n        }\n        if (er) return cb(errState = er)\n        if (--n === 0) {\n          options.rmdir(p, cb)\n        }\n      })\n    })\n  })\n}\n\n// this looks simpler, and is strictly *faster*, but will\n// tie up the JavaScript thread and fail on excessively\n// deep directory trees.\nfunction rimrafSync (p, options) {\n  let st\n\n  options = options || {}\n  defaults(options)\n\n  assert(p, 'rimraf: missing path')\n  assert.strictEqual(typeof p, 'string', 'rimraf: path should be a string')\n  assert(options, 'rimraf: missing options')\n  assert.strictEqual(typeof options, 'object', 'rimraf: options should be object')\n\n  try {\n    st = options.lstatSync(p)\n  } catch (er) {\n    if (er.code === 'ENOENT') {\n      return\n    }\n\n    // Windows can EPERM on stat.  Life is suffering.\n    if (er.code === 'EPERM' && isWindows) {\n      fixWinEPERMSync(p, options, er)\n    }\n  }\n\n  try {\n    // sunos lets the root user unlink directories, which is... weird.\n    if (st && st.isDirectory()) {\n      rmdirSync(p, options, null)\n    } else {\n      options.unlinkSync(p)\n    }\n  } catch (er) {\n    if (er.code === 'ENOENT') {\n      return\n    } else if (er.code === 'EPERM') {\n      return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er)\n    } else if (er.code !== 'EISDIR') {\n      throw er\n    }\n    rmdirSync(p, options, er)\n  }\n}\n\nfunction rmdirSync (p, options, originalEr) {\n  assert(p)\n  assert(options)\n\n  try {\n    options.rmdirSync(p)\n  } catch (er) {\n    if (er.code === 'ENOTDIR') {\n      throw originalEr\n    } else if (er.code === 'ENOTEMPTY' || er.code === 'EEXIST' || er.code === 'EPERM') {\n      rmkidsSync(p, options)\n    } else if (er.code !== 'ENOENT') {\n      throw er\n    }\n  }\n}\n\nfunction rmkidsSync (p, options) {\n  assert(p)\n  assert(options)\n  options.readdirSync(p).forEach(f => rimrafSync(path.join(p, f), options))\n\n  if (isWindows) {\n    // We only end up here once we got ENOTEMPTY at least once, and\n    // at this point, we are guaranteed to have removed all the kids.\n    // So, we know that it won't be ENOENT or ENOTDIR or anything else.\n    // try really hard to delete stuff on windows, because it has a\n    // PROFOUNDLY annoying habit of not closing handles promptly when\n    // files are deleted, resulting in spurious ENOTEMPTY errors.\n    const startTime = Date.now()\n    do {\n      try {\n        const ret = options.rmdirSync(p, options)\n        return ret\n      } catch {}\n    } while (Date.now() - startTime < 500) // give up after 500ms\n  } else {\n    const ret = options.rmdirSync(p, options)\n    return ret\n  }\n}\n\nmodule.exports = rimraf\nrimraf.sync = rimrafSync\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/remove/rimraf.js?")},"./node_modules/fs-extra/lib/util/stat.js":
/*!************************************************!*\
  !*** ./node_modules/fs-extra/lib/util/stat.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst fs = __webpack_require__(/*! ../fs */ \"./node_modules/fs-extra/lib/fs/index.js\")\nconst path = __webpack_require__(/*! path */ \"path\")\nconst util = __webpack_require__(/*! util */ \"util\")\nconst atLeastNode = __webpack_require__(/*! at-least-node */ \"./node_modules/at-least-node/index.js\")\n\nconst nodeSupportsBigInt = atLeastNode('10.5.0')\nconst stat = (file) => nodeSupportsBigInt ? fs.stat(file, { bigint: true }) : fs.stat(file)\nconst statSync = (file) => nodeSupportsBigInt ? fs.statSync(file, { bigint: true }) : fs.statSync(file)\n\nfunction getStats (src, dest) {\n  return Promise.all([\n    stat(src),\n    stat(dest).catch(err => {\n      if (err.code === 'ENOENT') return null\n      throw err\n    })\n  ]).then(([srcStat, destStat]) => ({ srcStat, destStat }))\n}\n\nfunction getStatsSync (src, dest) {\n  let destStat\n  const srcStat = statSync(src)\n  try {\n    destStat = statSync(dest)\n  } catch (err) {\n    if (err.code === 'ENOENT') return { srcStat, destStat: null }\n    throw err\n  }\n  return { srcStat, destStat }\n}\n\nfunction checkPaths (src, dest, funcName, cb) {\n  util.callbackify(getStats)(src, dest, (err, stats) => {\n    if (err) return cb(err)\n    const { srcStat, destStat } = stats\n    if (destStat && areIdentical(srcStat, destStat)) {\n      return cb(new Error('Source and destination must not be the same.'))\n    }\n    if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {\n      return cb(new Error(errMsg(src, dest, funcName)))\n    }\n    return cb(null, { srcStat, destStat })\n  })\n}\n\nfunction checkPathsSync (src, dest, funcName) {\n  const { srcStat, destStat } = getStatsSync(src, dest)\n  if (destStat && areIdentical(srcStat, destStat)) {\n    throw new Error('Source and destination must not be the same.')\n  }\n  if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {\n    throw new Error(errMsg(src, dest, funcName))\n  }\n  return { srcStat, destStat }\n}\n\n// recursively check if dest parent is a subdirectory of src.\n// It works for all file types including symlinks since it\n// checks the src and dest inodes. It starts from the deepest\n// parent and stops once it reaches the src parent or the root path.\nfunction checkParentPaths (src, srcStat, dest, funcName, cb) {\n  const srcParent = path.resolve(path.dirname(src))\n  const destParent = path.resolve(path.dirname(dest))\n  if (destParent === srcParent || destParent === path.parse(destParent).root) return cb()\n  const callback = (err, destStat) => {\n    if (err) {\n      if (err.code === 'ENOENT') return cb()\n      return cb(err)\n    }\n    if (areIdentical(srcStat, destStat)) {\n      return cb(new Error(errMsg(src, dest, funcName)))\n    }\n    return checkParentPaths(src, srcStat, destParent, funcName, cb)\n  }\n  if (nodeSupportsBigInt) fs.stat(destParent, { bigint: true }, callback)\n  else fs.stat(destParent, callback)\n}\n\nfunction checkParentPathsSync (src, srcStat, dest, funcName) {\n  const srcParent = path.resolve(path.dirname(src))\n  const destParent = path.resolve(path.dirname(dest))\n  if (destParent === srcParent || destParent === path.parse(destParent).root) return\n  let destStat\n  try {\n    destStat = statSync(destParent)\n  } catch (err) {\n    if (err.code === 'ENOENT') return\n    throw err\n  }\n  if (areIdentical(srcStat, destStat)) {\n    throw new Error(errMsg(src, dest, funcName))\n  }\n  return checkParentPathsSync(src, srcStat, destParent, funcName)\n}\n\nfunction areIdentical (srcStat, destStat) {\n  if (destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev) {\n    if (nodeSupportsBigInt || destStat.ino < Number.MAX_SAFE_INTEGER) {\n      // definitive answer\n      return true\n    }\n    // Use additional heuristics if we can't use 'bigint'.\n    // Different 'ino' could be represented the same if they are >= Number.MAX_SAFE_INTEGER\n    // See issue 657\n    if (destStat.size === srcStat.size &&\n        destStat.mode === srcStat.mode &&\n        destStat.nlink === srcStat.nlink &&\n        destStat.atimeMs === srcStat.atimeMs &&\n        destStat.mtimeMs === srcStat.mtimeMs &&\n        destStat.ctimeMs === srcStat.ctimeMs &&\n        destStat.birthtimeMs === srcStat.birthtimeMs) {\n      // heuristic answer\n      return true\n    }\n  }\n  return false\n}\n\n// return true if dest is a subdir of src, otherwise false.\n// It only checks the path strings.\nfunction isSrcSubdir (src, dest) {\n  const srcArr = path.resolve(src).split(path.sep).filter(i => i)\n  const destArr = path.resolve(dest).split(path.sep).filter(i => i)\n  return srcArr.reduce((acc, cur, i) => acc && destArr[i] === cur, true)\n}\n\nfunction errMsg (src, dest, funcName) {\n  return `Cannot ${funcName} '${src}' to a subdirectory of itself, '${dest}'.`\n}\n\nmodule.exports = {\n  checkPaths,\n  checkPathsSync,\n  checkParentPaths,\n  checkParentPathsSync,\n  isSrcSubdir\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/util/stat.js?")},"./node_modules/fs-extra/lib/util/utimes.js":
/*!**************************************************!*\
  !*** ./node_modules/fs-extra/lib/util/utimes.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst fs = __webpack_require__(/*! graceful-fs */ \"./node_modules/graceful-fs/graceful-fs.js\")\n\nfunction utimesMillis (path, atime, mtime, callback) {\n  // if (!HAS_MILLIS_RES) return fs.utimes(path, atime, mtime, callback)\n  fs.open(path, 'r+', (err, fd) => {\n    if (err) return callback(err)\n    fs.futimes(fd, atime, mtime, futimesErr => {\n      fs.close(fd, closeErr => {\n        if (callback) callback(futimesErr || closeErr)\n      })\n    })\n  })\n}\n\nfunction utimesMillisSync (path, atime, mtime) {\n  const fd = fs.openSync(path, 'r+')\n  fs.futimesSync(fd, atime, mtime)\n  return fs.closeSync(fd)\n}\n\nmodule.exports = {\n  utimesMillis,\n  utimesMillisSync\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/fs-extra/lib/util/utimes.js?")},"./node_modules/function-bind/implementation.js":
/*!******************************************************!*\
  !*** ./node_modules/function-bind/implementation.js ***!
  \******************************************************/module=>{"use strict";eval("\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slice.call(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                args.concat(slice.call(arguments))\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        } else {\n            return target.apply(\n                that,\n                args.concat(slice.call(arguments))\n            );\n        }\n    };\n\n    var boundLength = Math.max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs.push('$' + i);\n    }\n\n    bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n    if (target.prototype) {\n        var Empty = function Empty() {};\n        Empty.prototype = target.prototype;\n        bound.prototype = new Empty();\n        Empty.prototype = null;\n    }\n\n    return bound;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/function-bind/implementation.js?")},"./node_modules/function-bind/index.js":
/*!*********************************************!*\
  !*** ./node_modules/function-bind/index.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nvar implementation = __webpack_require__(/*! ./implementation */ "./node_modules/function-bind/implementation.js");\n\nmodule.exports = Function.prototype.bind || implementation;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/function-bind/index.js?')},"./node_modules/generate-function/index.js":
/*!*************************************************!*\
  !*** ./node_modules/generate-function/index.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var util = __webpack_require__(/*! util */ \"util\")\nvar isProperty = __webpack_require__(/*! is-property */ \"./node_modules/is-property/is-property.js\")\n\nvar INDENT_START = /[\\{\\[]/\nvar INDENT_END = /[\\}\\]]/\n\n// from https://mathiasbynens.be/notes/reserved-keywords\nvar RESERVED = [\n  'do',\n  'if',\n  'in',\n  'for',\n  'let',\n  'new',\n  'try',\n  'var',\n  'case',\n  'else',\n  'enum',\n  'eval',\n  'null',\n  'this',\n  'true',\n  'void',\n  'with',\n  'await',\n  'break',\n  'catch',\n  'class',\n  'const',\n  'false',\n  'super',\n  'throw',\n  'while',\n  'yield',\n  'delete',\n  'export',\n  'import',\n  'public',\n  'return',\n  'static',\n  'switch',\n  'typeof',\n  'default',\n  'extends',\n  'finally',\n  'package',\n  'private',\n  'continue',\n  'debugger',\n  'function',\n  'arguments',\n  'interface',\n  'protected',\n  'implements',\n  'instanceof',\n  'NaN',\n  'undefined'\n]\n\nvar RESERVED_MAP = {}\n\nfor (var i = 0; i < RESERVED.length; i++) {\n  RESERVED_MAP[RESERVED[i]] = true\n}\n\nvar isVariable = function (name) {\n  return isProperty(name) && !RESERVED_MAP.hasOwnProperty(name)\n}\n\nvar formats = {\n  s: function(s) {\n    return '' + s\n  },\n  d: function(d) {\n    return '' + Number(d)\n  },\n  o: function(o) {\n    return JSON.stringify(o)\n  }\n}\n\nvar genfun = function() {\n  var lines = []\n  var indent = 0\n  var vars = {}\n\n  var push = function(str) {\n    var spaces = ''\n    while (spaces.length < indent*2) spaces += '  '\n    lines.push(spaces+str)\n  }\n\n  var pushLine = function(line) {\n    if (INDENT_END.test(line.trim()[0]) && INDENT_START.test(line[line.length-1])) {\n      indent--\n      push(line)\n      indent++\n      return\n    }\n    if (INDENT_START.test(line[line.length-1])) {\n      push(line)\n      indent++\n      return\n    }\n    if (INDENT_END.test(line.trim()[0])) {\n      indent--\n      push(line)\n      return\n    }\n\n    push(line)\n  }\n\n  var line = function(fmt) {\n    if (!fmt) return line\n\n    if (arguments.length === 1 && fmt.indexOf('\\n') > -1) {\n      var lines = fmt.trim().split('\\n')\n      for (var i = 0; i < lines.length; i++) {\n        pushLine(lines[i].trim())\n      }\n    } else {\n      pushLine(util.format.apply(util, arguments))\n    }\n\n    return line\n  }\n\n  line.scope = {}\n  line.formats = formats\n\n  line.sym = function(name) {\n    if (!name || !isVariable(name)) name = 'tmp'\n    if (!vars[name]) vars[name] = 0\n    return name + (vars[name]++ || '')\n  }\n\n  line.property = function(obj, name) {\n    if (arguments.length === 1) {\n      name = obj\n      obj = ''\n    }\n\n    name = name + ''\n\n    if (isProperty(name)) return (obj ? obj + '.' + name : name)\n    return obj ? obj + '[' + JSON.stringify(name) + ']' : JSON.stringify(name)\n  }\n\n  line.toString = function() {\n    return lines.join('\\n')\n  }\n\n  line.toFunction = function(scope) {\n    if (!scope) scope = {}\n\n    var src = 'return ('+line.toString()+')'\n\n    Object.keys(line.scope).forEach(function (key) {\n      if (!scope[key]) scope[key] = line.scope[key]\n    })\n\n    var keys = Object.keys(scope).map(function(key) {\n      return key\n    })\n\n    var vals = keys.map(function(key) {\n      return scope[key]\n    })\n\n    return Function.apply(null, keys.concat(src)).apply(null, vals)\n  }\n\n  if (arguments.length) line.apply(null, arguments)\n\n  return line\n}\n\ngenfun.formats = formats\nmodule.exports = genfun\n\n\n//# sourceURL=webpack://txadmin/./node_modules/generate-function/index.js?")},"./node_modules/get-intrinsic/index.js":
/*!*********************************************!*\
  !*** ./node_modules/get-intrinsic/index.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \"./node_modules/has-symbols/index.js\")();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = __webpack_require__(/*! function-bind */ \"./node_modules/function-bind/index.js\");\nvar hasOwn = __webpack_require__(/*! has */ \"./node_modules/has/src/index.js\");\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/get-intrinsic/index.js?")},"./node_modules/get-stream/buffer-stream.js":
/*!**************************************************!*\
  !*** ./node_modules/get-stream/buffer-stream.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nconst {PassThrough: PassThroughStream} = __webpack_require__(/*! stream */ \"stream\");\n\nmodule.exports = options => {\n\toptions = {...options};\n\n\tconst {array} = options;\n\tlet {encoding} = options;\n\tconst isBuffer = encoding === 'buffer';\n\tlet objectMode = false;\n\n\tif (array) {\n\t\tobjectMode = !(encoding || isBuffer);\n\t} else {\n\t\tencoding = encoding || 'utf8';\n\t}\n\n\tif (isBuffer) {\n\t\tencoding = null;\n\t}\n\n\tconst stream = new PassThroughStream({objectMode});\n\n\tif (encoding) {\n\t\tstream.setEncoding(encoding);\n\t}\n\n\tlet length = 0;\n\tconst chunks = [];\n\n\tstream.on('data', chunk => {\n\t\tchunks.push(chunk);\n\n\t\tif (objectMode) {\n\t\t\tlength = chunks.length;\n\t\t} else {\n\t\t\tlength += chunk.length;\n\t\t}\n\t});\n\n\tstream.getBufferedValue = () => {\n\t\tif (array) {\n\t\t\treturn chunks;\n\t\t}\n\n\t\treturn isBuffer ? Buffer.concat(chunks, length) : chunks.join('');\n\t};\n\n\tstream.getBufferedLength = () => length;\n\n\treturn stream;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/get-stream/buffer-stream.js?")},"./node_modules/get-stream/index.js":
/*!******************************************!*\
  !*** ./node_modules/get-stream/index.js ***!
  \******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nconst {constants: BufferConstants} = __webpack_require__(/*! buffer */ \"buffer\");\nconst stream = __webpack_require__(/*! stream */ \"stream\");\nconst {promisify} = __webpack_require__(/*! util */ \"util\");\nconst bufferStream = __webpack_require__(/*! ./buffer-stream */ \"./node_modules/get-stream/buffer-stream.js\");\n\nconst streamPipelinePromisified = promisify(stream.pipeline);\n\nclass MaxBufferError extends Error {\n\tconstructor() {\n\t\tsuper('maxBuffer exceeded');\n\t\tthis.name = 'MaxBufferError';\n\t}\n}\n\nasync function getStream(inputStream, options) {\n\tif (!inputStream) {\n\t\tthrow new Error('Expected a stream');\n\t}\n\n\toptions = {\n\t\tmaxBuffer: Infinity,\n\t\t...options\n\t};\n\n\tconst {maxBuffer} = options;\n\tconst stream = bufferStream(options);\n\n\tawait new Promise((resolve, reject) => {\n\t\tconst rejectPromise = error => {\n\t\t\t// Don't retrieve an oversized buffer.\n\t\t\tif (error && stream.getBufferedLength() <= BufferConstants.MAX_LENGTH) {\n\t\t\t\terror.bufferedData = stream.getBufferedValue();\n\t\t\t}\n\n\t\t\treject(error);\n\t\t};\n\n\t\t(async () => {\n\t\t\ttry {\n\t\t\t\tawait streamPipelinePromisified(inputStream, stream);\n\t\t\t\tresolve();\n\t\t\t} catch (error) {\n\t\t\t\trejectPromise(error);\n\t\t\t}\n\t\t})();\n\n\t\tstream.on('data', () => {\n\t\t\tif (stream.getBufferedLength() > maxBuffer) {\n\t\t\t\trejectPromise(new MaxBufferError());\n\t\t\t}\n\t\t});\n\t});\n\n\treturn stream.getBufferedValue();\n}\n\nmodule.exports = getStream;\nmodule.exports.buffer = (stream, options) => getStream(stream, {...options, encoding: 'buffer'});\nmodule.exports.array = (stream, options) => getStream(stream, {...options, array: true});\nmodule.exports.MaxBufferError = MaxBufferError;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/get-stream/index.js?")},"./node_modules/got/dist/source/as-promise/create-rejection.js":
/*!*********************************************************************!*\
  !*** ./node_modules/got/dist/source/as-promise/create-rejection.js ***!
  \*********************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst types_1 = __webpack_require__(/*! ./types */ "./node_modules/got/dist/source/as-promise/types.js");\nfunction createRejection(error, ...beforeErrorGroups) {\n    const promise = (async () => {\n        if (error instanceof types_1.RequestError) {\n            try {\n                for (const hooks of beforeErrorGroups) {\n                    if (hooks) {\n                        for (const hook of hooks) {\n                            // eslint-disable-next-line no-await-in-loop\n                            error = await hook(error);\n                        }\n                    }\n                }\n            }\n            catch (error_) {\n                error = error_;\n            }\n        }\n        throw error;\n    })();\n    const returnPromise = () => promise;\n    promise.json = returnPromise;\n    promise.text = returnPromise;\n    promise.buffer = returnPromise;\n    promise.on = returnPromise;\n    return promise;\n}\nexports["default"] = createRejection;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/got/dist/source/as-promise/create-rejection.js?')},"./node_modules/got/dist/source/as-promise/index.js":
/*!**********************************************************!*\
  !*** ./node_modules/got/dist/source/as-promise/index.js ***!
  \**********************************************************/function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst events_1 = __webpack_require__(/*! events */ \"events\");\nconst is_1 = __webpack_require__(/*! @sindresorhus/is */ \"./node_modules/@sindresorhus/is/dist/index.js\");\nconst PCancelable = __webpack_require__(/*! p-cancelable */ \"./node_modules/p-cancelable/index.js\");\nconst types_1 = __webpack_require__(/*! ./types */ \"./node_modules/got/dist/source/as-promise/types.js\");\nconst parse_body_1 = __webpack_require__(/*! ./parse-body */ \"./node_modules/got/dist/source/as-promise/parse-body.js\");\nconst core_1 = __webpack_require__(/*! ../core */ \"./node_modules/got/dist/source/core/index.js\");\nconst proxy_events_1 = __webpack_require__(/*! ../core/utils/proxy-events */ \"./node_modules/got/dist/source/core/utils/proxy-events.js\");\nconst get_buffer_1 = __webpack_require__(/*! ../core/utils/get-buffer */ \"./node_modules/got/dist/source/core/utils/get-buffer.js\");\nconst is_response_ok_1 = __webpack_require__(/*! ../core/utils/is-response-ok */ \"./node_modules/got/dist/source/core/utils/is-response-ok.js\");\nconst proxiedRequestEvents = [\n    'request',\n    'response',\n    'redirect',\n    'uploadProgress',\n    'downloadProgress'\n];\nfunction asPromise(normalizedOptions) {\n    let globalRequest;\n    let globalResponse;\n    const emitter = new events_1.EventEmitter();\n    const promise = new PCancelable((resolve, reject, onCancel) => {\n        const makeRequest = (retryCount) => {\n            const request = new core_1.default(undefined, normalizedOptions);\n            request.retryCount = retryCount;\n            request._noPipe = true;\n            onCancel(() => request.destroy());\n            onCancel.shouldReject = false;\n            onCancel(() => reject(new types_1.CancelError(request)));\n            globalRequest = request;\n            request.once('response', async (response) => {\n                var _a;\n                response.retryCount = retryCount;\n                if (response.request.aborted) {\n                    // Canceled while downloading - will throw a `CancelError` or `TimeoutError` error\n                    return;\n                }\n                // Download body\n                let rawBody;\n                try {\n                    rawBody = await get_buffer_1.default(request);\n                    response.rawBody = rawBody;\n                }\n                catch (_b) {\n                    // The same error is caught below.\n                    // See request.once('error')\n                    return;\n                }\n                if (request._isAboutToError) {\n                    return;\n                }\n                // Parse body\n                const contentEncoding = ((_a = response.headers['content-encoding']) !== null && _a !== void 0 ? _a : '').toLowerCase();\n                const isCompressed = ['gzip', 'deflate', 'br'].includes(contentEncoding);\n                const { options } = request;\n                if (isCompressed && !options.decompress) {\n                    response.body = rawBody;\n                }\n                else {\n                    try {\n                        response.body = parse_body_1.default(response, options.responseType, options.parseJson, options.encoding);\n                    }\n                    catch (error) {\n                        // Fallback to `utf8`\n                        response.body = rawBody.toString();\n                        if (is_response_ok_1.isResponseOk(response)) {\n                            request._beforeError(error);\n                            return;\n                        }\n                    }\n                }\n                try {\n                    for (const [index, hook] of options.hooks.afterResponse.entries()) {\n                        // @ts-expect-error TS doesn't notice that CancelableRequest is a Promise\n                        // eslint-disable-next-line no-await-in-loop\n                        response = await hook(response, async (updatedOptions) => {\n                            const typedOptions = core_1.default.normalizeArguments(undefined, {\n                                ...updatedOptions,\n                                retry: {\n                                    calculateDelay: () => 0\n                                },\n                                throwHttpErrors: false,\n                                resolveBodyOnly: false\n                            }, options);\n                            // Remove any further hooks for that request, because we'll call them anyway.\n                            // The loop continues. We don't want duplicates (asPromise recursion).\n                            typedOptions.hooks.afterResponse = typedOptions.hooks.afterResponse.slice(0, index);\n                            for (const hook of typedOptions.hooks.beforeRetry) {\n                                // eslint-disable-next-line no-await-in-loop\n                                await hook(typedOptions);\n                            }\n                            const promise = asPromise(typedOptions);\n                            onCancel(() => {\n                                promise.catch(() => { });\n                                promise.cancel();\n                            });\n                            return promise;\n                        });\n                    }\n                }\n                catch (error) {\n                    request._beforeError(new types_1.RequestError(error.message, error, request));\n                    return;\n                }\n                if (!is_response_ok_1.isResponseOk(response)) {\n                    request._beforeError(new types_1.HTTPError(response));\n                    return;\n                }\n                globalResponse = response;\n                resolve(request.options.resolveBodyOnly ? response.body : response);\n            });\n            const onError = (error) => {\n                if (promise.isCanceled) {\n                    return;\n                }\n                const { options } = request;\n                if (error instanceof types_1.HTTPError && !options.throwHttpErrors) {\n                    const { response } = error;\n                    resolve(request.options.resolveBodyOnly ? response.body : response);\n                    return;\n                }\n                reject(error);\n            };\n            request.once('error', onError);\n            const previousBody = request.options.body;\n            request.once('retry', (newRetryCount, error) => {\n                var _a, _b;\n                if (previousBody === ((_a = error.request) === null || _a === void 0 ? void 0 : _a.options.body) && is_1.default.nodeStream((_b = error.request) === null || _b === void 0 ? void 0 : _b.options.body)) {\n                    onError(error);\n                    return;\n                }\n                makeRequest(newRetryCount);\n            });\n            proxy_events_1.default(request, emitter, proxiedRequestEvents);\n        };\n        makeRequest(0);\n    });\n    promise.on = (event, fn) => {\n        emitter.on(event, fn);\n        return promise;\n    };\n    const shortcut = (responseType) => {\n        const newPromise = (async () => {\n            // Wait until downloading has ended\n            await promise;\n            const { options } = globalResponse.request;\n            return parse_body_1.default(globalResponse, responseType, options.parseJson, options.encoding);\n        })();\n        Object.defineProperties(newPromise, Object.getOwnPropertyDescriptors(promise));\n        return newPromise;\n    };\n    promise.json = () => {\n        const { headers } = globalRequest.options;\n        if (!globalRequest.writableFinished && headers.accept === undefined) {\n            headers.accept = 'application/json';\n        }\n        return shortcut('json');\n    };\n    promise.buffer = () => shortcut('buffer');\n    promise.text = () => shortcut('text');\n    return promise;\n}\nexports[\"default\"] = asPromise;\n__exportStar(__webpack_require__(/*! ./types */ \"./node_modules/got/dist/source/as-promise/types.js\"), exports);\n\n\n//# sourceURL=webpack://txadmin/./node_modules/got/dist/source/as-promise/index.js?")},"./node_modules/got/dist/source/as-promise/normalize-arguments.js":
/*!************************************************************************!*\
  !*** ./node_modules/got/dist/source/as-promise/normalize-arguments.js ***!
  \************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst is_1 = __webpack_require__(/*! @sindresorhus/is */ \"./node_modules/@sindresorhus/is/dist/index.js\");\nconst normalizeArguments = (options, defaults) => {\n    if (is_1.default.null_(options.encoding)) {\n        throw new TypeError('To get a Buffer, set `options.responseType` to `buffer` instead');\n    }\n    is_1.assert.any([is_1.default.string, is_1.default.undefined], options.encoding);\n    is_1.assert.any([is_1.default.boolean, is_1.default.undefined], options.resolveBodyOnly);\n    is_1.assert.any([is_1.default.boolean, is_1.default.undefined], options.methodRewriting);\n    is_1.assert.any([is_1.default.boolean, is_1.default.undefined], options.isStream);\n    is_1.assert.any([is_1.default.string, is_1.default.undefined], options.responseType);\n    // `options.responseType`\n    if (options.responseType === undefined) {\n        options.responseType = 'text';\n    }\n    // `options.retry`\n    const { retry } = options;\n    if (defaults) {\n        options.retry = { ...defaults.retry };\n    }\n    else {\n        options.retry = {\n            calculateDelay: retryObject => retryObject.computedValue,\n            limit: 0,\n            methods: [],\n            statusCodes: [],\n            errorCodes: [],\n            maxRetryAfter: undefined\n        };\n    }\n    if (is_1.default.object(retry)) {\n        options.retry = {\n            ...options.retry,\n            ...retry\n        };\n        options.retry.methods = [...new Set(options.retry.methods.map(method => method.toUpperCase()))];\n        options.retry.statusCodes = [...new Set(options.retry.statusCodes)];\n        options.retry.errorCodes = [...new Set(options.retry.errorCodes)];\n    }\n    else if (is_1.default.number(retry)) {\n        options.retry.limit = retry;\n    }\n    if (is_1.default.undefined(options.retry.maxRetryAfter)) {\n        options.retry.maxRetryAfter = Math.min(\n        // TypeScript is not smart enough to handle `.filter(x => is.number(x))`.\n        // eslint-disable-next-line unicorn/no-fn-reference-in-iterator\n        ...[options.timeout.request, options.timeout.connect].filter(is_1.default.number));\n    }\n    // `options.pagination`\n    if (is_1.default.object(options.pagination)) {\n        if (defaults) {\n            options.pagination = {\n                ...defaults.pagination,\n                ...options.pagination\n            };\n        }\n        const { pagination } = options;\n        if (!is_1.default.function_(pagination.transform)) {\n            throw new Error('`options.pagination.transform` must be implemented');\n        }\n        if (!is_1.default.function_(pagination.shouldContinue)) {\n            throw new Error('`options.pagination.shouldContinue` must be implemented');\n        }\n        if (!is_1.default.function_(pagination.filter)) {\n            throw new TypeError('`options.pagination.filter` must be implemented');\n        }\n        if (!is_1.default.function_(pagination.paginate)) {\n            throw new Error('`options.pagination.paginate` must be implemented');\n        }\n    }\n    // JSON mode\n    if (options.responseType === 'json' && options.headers.accept === undefined) {\n        options.headers.accept = 'application/json';\n    }\n    return options;\n};\nexports[\"default\"] = normalizeArguments;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/got/dist/source/as-promise/normalize-arguments.js?")},"./node_modules/got/dist/source/as-promise/parse-body.js":
/*!***************************************************************!*\
  !*** ./node_modules/got/dist/source/as-promise/parse-body.js ***!
  \***************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst types_1 = __webpack_require__(/*! ./types */ \"./node_modules/got/dist/source/as-promise/types.js\");\nconst parseBody = (response, responseType, parseJson, encoding) => {\n    const { rawBody } = response;\n    try {\n        if (responseType === 'text') {\n            return rawBody.toString(encoding);\n        }\n        if (responseType === 'json') {\n            return rawBody.length === 0 ? '' : parseJson(rawBody.toString());\n        }\n        if (responseType === 'buffer') {\n            return rawBody;\n        }\n        throw new types_1.ParseError({\n            message: `Unknown body type '${responseType}'`,\n            name: 'Error'\n        }, response);\n    }\n    catch (error) {\n        throw new types_1.ParseError(error, response);\n    }\n};\nexports[\"default\"] = parseBody;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/got/dist/source/as-promise/parse-body.js?")},"./node_modules/got/dist/source/as-promise/types.js":
/*!**********************************************************!*\
  !*** ./node_modules/got/dist/source/as-promise/types.js ***!
  \**********************************************************/function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.CancelError = exports.ParseError = void 0;\nconst core_1 = __webpack_require__(/*! ../core */ "./node_modules/got/dist/source/core/index.js");\n/**\nAn error to be thrown when server response code is 2xx, and parsing body fails.\nIncludes a `response` property.\n*/\nclass ParseError extends core_1.RequestError {\n    constructor(error, response) {\n        const { options } = response.request;\n        super(`${error.message} in "${options.url.toString()}"`, error, response.request);\n        this.name = \'ParseError\';\n    }\n}\nexports.ParseError = ParseError;\n/**\nAn error to be thrown when the request is aborted with `.cancel()`.\n*/\nclass CancelError extends core_1.RequestError {\n    constructor(request) {\n        super(\'Promise was canceled\', {}, request);\n        this.name = \'CancelError\';\n    }\n    get isCanceled() {\n        return true;\n    }\n}\nexports.CancelError = CancelError;\n__exportStar(__webpack_require__(/*! ../core */ "./node_modules/got/dist/source/core/index.js"), exports);\n\n\n//# sourceURL=webpack://txadmin/./node_modules/got/dist/source/as-promise/types.js?')},"./node_modules/got/dist/source/core/calculate-retry-delay.js":
/*!********************************************************************!*\
  !*** ./node_modules/got/dist/source/core/calculate-retry-delay.js ***!
  \********************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.retryAfterStatusCodes = void 0;\nexports.retryAfterStatusCodes = new Set([413, 429, 503]);\nconst calculateRetryDelay = ({ attemptCount, retryOptions, error, retryAfter }) => {\n    if (attemptCount > retryOptions.limit) {\n        return 0;\n    }\n    const hasMethod = retryOptions.methods.includes(error.options.method);\n    const hasErrorCode = retryOptions.errorCodes.includes(error.code);\n    const hasStatusCode = error.response && retryOptions.statusCodes.includes(error.response.statusCode);\n    if (!hasMethod || (!hasErrorCode && !hasStatusCode)) {\n        return 0;\n    }\n    if (error.response) {\n        if (retryAfter) {\n            if (retryOptions.maxRetryAfter === undefined || retryAfter > retryOptions.maxRetryAfter) {\n                return 0;\n            }\n            return retryAfter;\n        }\n        if (error.response.statusCode === 413) {\n            return 0;\n        }\n    }\n    const noise = Math.random() * 100;\n    return ((2 ** (attemptCount - 1)) * 1000) + noise;\n};\nexports["default"] = calculateRetryDelay;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/got/dist/source/core/calculate-retry-delay.js?')},"./node_modules/got/dist/source/core/index.js":
/*!****************************************************!*\
  !*** ./node_modules/got/dist/source/core/index.js ***!
  \****************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.UnsupportedProtocolError = exports.ReadError = exports.TimeoutError = exports.UploadError = exports.CacheError = exports.HTTPError = exports.MaxRedirectsError = exports.RequestError = exports.setNonEnumerableProperties = exports.knownHookEvents = exports.withoutBody = exports.kIsNormalizedAlready = void 0;\nconst util_1 = __webpack_require__(/*! util */ \"util\");\nconst stream_1 = __webpack_require__(/*! stream */ \"stream\");\nconst fs_1 = __webpack_require__(/*! fs */ \"fs\");\nconst url_1 = __webpack_require__(/*! url */ \"url\");\nconst http = __webpack_require__(/*! http */ \"http\");\nconst http_1 = __webpack_require__(/*! http */ \"http\");\nconst https = __webpack_require__(/*! https */ \"https\");\nconst http_timer_1 = __webpack_require__(/*! @szmarczak/http-timer */ \"./node_modules/@szmarczak/http-timer/dist/source/index.js\");\nconst cacheable_lookup_1 = __webpack_require__(/*! cacheable-lookup */ \"./node_modules/cacheable-lookup/source/index.js\");\nconst CacheableRequest = __webpack_require__(/*! cacheable-request */ \"./node_modules/cacheable-request/src/index.js\");\nconst decompressResponse = __webpack_require__(/*! decompress-response */ \"./node_modules/decompress-response/index.js\");\n// @ts-expect-error Missing types\nconst http2wrapper = __webpack_require__(/*! http2-wrapper */ \"./node_modules/http2-wrapper/source/index.js\");\nconst lowercaseKeys = __webpack_require__(/*! lowercase-keys */ \"./node_modules/lowercase-keys/index.js\");\nconst is_1 = __webpack_require__(/*! @sindresorhus/is */ \"./node_modules/@sindresorhus/is/dist/index.js\");\nconst get_body_size_1 = __webpack_require__(/*! ./utils/get-body-size */ \"./node_modules/got/dist/source/core/utils/get-body-size.js\");\nconst is_form_data_1 = __webpack_require__(/*! ./utils/is-form-data */ \"./node_modules/got/dist/source/core/utils/is-form-data.js\");\nconst proxy_events_1 = __webpack_require__(/*! ./utils/proxy-events */ \"./node_modules/got/dist/source/core/utils/proxy-events.js\");\nconst timed_out_1 = __webpack_require__(/*! ./utils/timed-out */ \"./node_modules/got/dist/source/core/utils/timed-out.js\");\nconst url_to_options_1 = __webpack_require__(/*! ./utils/url-to-options */ \"./node_modules/got/dist/source/core/utils/url-to-options.js\");\nconst options_to_url_1 = __webpack_require__(/*! ./utils/options-to-url */ \"./node_modules/got/dist/source/core/utils/options-to-url.js\");\nconst weakable_map_1 = __webpack_require__(/*! ./utils/weakable-map */ \"./node_modules/got/dist/source/core/utils/weakable-map.js\");\nconst get_buffer_1 = __webpack_require__(/*! ./utils/get-buffer */ \"./node_modules/got/dist/source/core/utils/get-buffer.js\");\nconst dns_ip_version_1 = __webpack_require__(/*! ./utils/dns-ip-version */ \"./node_modules/got/dist/source/core/utils/dns-ip-version.js\");\nconst is_response_ok_1 = __webpack_require__(/*! ./utils/is-response-ok */ \"./node_modules/got/dist/source/core/utils/is-response-ok.js\");\nconst deprecation_warning_1 = __webpack_require__(/*! ../utils/deprecation-warning */ \"./node_modules/got/dist/source/utils/deprecation-warning.js\");\nconst normalize_arguments_1 = __webpack_require__(/*! ../as-promise/normalize-arguments */ \"./node_modules/got/dist/source/as-promise/normalize-arguments.js\");\nconst calculate_retry_delay_1 = __webpack_require__(/*! ./calculate-retry-delay */ \"./node_modules/got/dist/source/core/calculate-retry-delay.js\");\nlet globalDnsCache;\nconst kRequest = Symbol('request');\nconst kResponse = Symbol('response');\nconst kResponseSize = Symbol('responseSize');\nconst kDownloadedSize = Symbol('downloadedSize');\nconst kBodySize = Symbol('bodySize');\nconst kUploadedSize = Symbol('uploadedSize');\nconst kServerResponsesPiped = Symbol('serverResponsesPiped');\nconst kUnproxyEvents = Symbol('unproxyEvents');\nconst kIsFromCache = Symbol('isFromCache');\nconst kCancelTimeouts = Symbol('cancelTimeouts');\nconst kStartedReading = Symbol('startedReading');\nconst kStopReading = Symbol('stopReading');\nconst kTriggerRead = Symbol('triggerRead');\nconst kBody = Symbol('body');\nconst kJobs = Symbol('jobs');\nconst kOriginalResponse = Symbol('originalResponse');\nconst kRetryTimeout = Symbol('retryTimeout');\nexports.kIsNormalizedAlready = Symbol('isNormalizedAlready');\nconst supportsBrotli = is_1.default.string(process.versions.brotli);\nexports.withoutBody = new Set(['GET', 'HEAD']);\nexports.knownHookEvents = [\n    'init',\n    'beforeRequest',\n    'beforeRedirect',\n    'beforeError',\n    'beforeRetry',\n    // Promise-Only\n    'afterResponse'\n];\nfunction validateSearchParameters(searchParameters) {\n    // eslint-disable-next-line guard-for-in\n    for (const key in searchParameters) {\n        const value = searchParameters[key];\n        if (!is_1.default.string(value) && !is_1.default.number(value) && !is_1.default.boolean(value) && !is_1.default.null_(value) && !is_1.default.undefined(value)) {\n            throw new TypeError(`The \\`searchParams\\` value '${String(value)}' must be a string, number, boolean or null`);\n        }\n    }\n}\nfunction isClientRequest(clientRequest) {\n    return is_1.default.object(clientRequest) && !('statusCode' in clientRequest);\n}\nconst cacheableStore = new weakable_map_1.default();\nconst waitForOpenFile = async (file) => new Promise((resolve, reject) => {\n    const onError = (error) => {\n        reject(error);\n    };\n    // Node.js 12 has incomplete types\n    if (!file.pending) {\n        resolve();\n    }\n    file.once('error', onError);\n    file.once('ready', () => {\n        file.off('error', onError);\n        resolve();\n    });\n});\nconst redirectCodes = new Set([300, 301, 302, 303, 304, 307, 308]);\nconst nonEnumerableProperties = [\n    'context',\n    'body',\n    'json',\n    'form'\n];\nexports.setNonEnumerableProperties = (sources, to) => {\n    // Non enumerable properties shall not be merged\n    const properties = {};\n    for (const source of sources) {\n        if (!source) {\n            continue;\n        }\n        for (const name of nonEnumerableProperties) {\n            if (!(name in source)) {\n                continue;\n            }\n            properties[name] = {\n                writable: true,\n                configurable: true,\n                enumerable: false,\n                // @ts-expect-error TS doesn't see the check above\n                value: source[name]\n            };\n        }\n    }\n    Object.defineProperties(to, properties);\n};\n/**\nAn error to be thrown when a request fails.\nContains a `code` property with error class code, like `ECONNREFUSED`.\n*/\nclass RequestError extends Error {\n    constructor(message, error, self) {\n        var _a;\n        super(message);\n        Error.captureStackTrace(this, this.constructor);\n        this.name = 'RequestError';\n        this.code = error.code;\n        if (self instanceof Request) {\n            Object.defineProperty(this, 'request', {\n                enumerable: false,\n                value: self\n            });\n            Object.defineProperty(this, 'response', {\n                enumerable: false,\n                value: self[kResponse]\n            });\n            Object.defineProperty(this, 'options', {\n                // This fails because of TS 3.7.2 useDefineForClassFields\n                // Ref: https://github.com/microsoft/TypeScript/issues/34972\n                enumerable: false,\n                value: self.options\n            });\n        }\n        else {\n            Object.defineProperty(this, 'options', {\n                // This fails because of TS 3.7.2 useDefineForClassFields\n                // Ref: https://github.com/microsoft/TypeScript/issues/34972\n                enumerable: false,\n                value: self\n            });\n        }\n        this.timings = (_a = this.request) === null || _a === void 0 ? void 0 : _a.timings;\n        // Recover the original stacktrace\n        if (is_1.default.string(error.stack) && is_1.default.string(this.stack)) {\n            const indexOfMessage = this.stack.indexOf(this.message) + this.message.length;\n            const thisStackTrace = this.stack.slice(indexOfMessage).split('\\n').reverse();\n            const errorStackTrace = error.stack.slice(error.stack.indexOf(error.message) + error.message.length).split('\\n').reverse();\n            // Remove duplicated traces\n            while (errorStackTrace.length !== 0 && errorStackTrace[0] === thisStackTrace[0]) {\n                thisStackTrace.shift();\n            }\n            this.stack = `${this.stack.slice(0, indexOfMessage)}${thisStackTrace.reverse().join('\\n')}${errorStackTrace.reverse().join('\\n')}`;\n        }\n    }\n}\nexports.RequestError = RequestError;\n/**\nAn error to be thrown when the server redirects you more than ten times.\nIncludes a `response` property.\n*/\nclass MaxRedirectsError extends RequestError {\n    constructor(request) {\n        super(`Redirected ${request.options.maxRedirects} times. Aborting.`, {}, request);\n        this.name = 'MaxRedirectsError';\n    }\n}\nexports.MaxRedirectsError = MaxRedirectsError;\n/**\nAn error to be thrown when the server response code is not 2xx nor 3xx if `options.followRedirect` is `true`, but always except for 304.\nIncludes a `response` property.\n*/\nclass HTTPError extends RequestError {\n    constructor(response) {\n        super(`Response code ${response.statusCode} (${response.statusMessage})`, {}, response.request);\n        this.name = 'HTTPError';\n    }\n}\nexports.HTTPError = HTTPError;\n/**\nAn error to be thrown when a cache method fails.\nFor example, if the database goes down or there's a filesystem error.\n*/\nclass CacheError extends RequestError {\n    constructor(error, request) {\n        super(error.message, error, request);\n        this.name = 'CacheError';\n    }\n}\nexports.CacheError = CacheError;\n/**\nAn error to be thrown when the request body is a stream and an error occurs while reading from that stream.\n*/\nclass UploadError extends RequestError {\n    constructor(error, request) {\n        super(error.message, error, request);\n        this.name = 'UploadError';\n    }\n}\nexports.UploadError = UploadError;\n/**\nAn error to be thrown when the request is aborted due to a timeout.\nIncludes an `event` and `timings` property.\n*/\nclass TimeoutError extends RequestError {\n    constructor(error, timings, request) {\n        super(error.message, error, request);\n        this.name = 'TimeoutError';\n        this.event = error.event;\n        this.timings = timings;\n    }\n}\nexports.TimeoutError = TimeoutError;\n/**\nAn error to be thrown when reading from response stream fails.\n*/\nclass ReadError extends RequestError {\n    constructor(error, request) {\n        super(error.message, error, request);\n        this.name = 'ReadError';\n    }\n}\nexports.ReadError = ReadError;\n/**\nAn error to be thrown when given an unsupported protocol.\n*/\nclass UnsupportedProtocolError extends RequestError {\n    constructor(options) {\n        super(`Unsupported protocol \"${options.url.protocol}\"`, {}, options);\n        this.name = 'UnsupportedProtocolError';\n    }\n}\nexports.UnsupportedProtocolError = UnsupportedProtocolError;\nconst proxiedRequestEvents = [\n    'socket',\n    'connect',\n    'continue',\n    'information',\n    'upgrade',\n    'timeout'\n];\nclass Request extends stream_1.Duplex {\n    constructor(url, options = {}, defaults) {\n        super({\n            // This must be false, to enable throwing after destroy\n            // It is used for retry logic in Promise API\n            autoDestroy: false,\n            // It needs to be zero because we're just proxying the data to another stream\n            highWaterMark: 0\n        });\n        this[kDownloadedSize] = 0;\n        this[kUploadedSize] = 0;\n        this.requestInitialized = false;\n        this[kServerResponsesPiped] = new Set();\n        this.redirects = [];\n        this[kStopReading] = false;\n        this[kTriggerRead] = false;\n        this[kJobs] = [];\n        this.retryCount = 0;\n        // TODO: Remove this when targeting Node.js >= 12\n        this._progressCallbacks = [];\n        const unlockWrite = () => this._unlockWrite();\n        const lockWrite = () => this._lockWrite();\n        this.on('pipe', (source) => {\n            source.prependListener('data', unlockWrite);\n            source.on('data', lockWrite);\n            source.prependListener('end', unlockWrite);\n            source.on('end', lockWrite);\n        });\n        this.on('unpipe', (source) => {\n            source.off('data', unlockWrite);\n            source.off('data', lockWrite);\n            source.off('end', unlockWrite);\n            source.off('end', lockWrite);\n        });\n        this.on('pipe', source => {\n            if (source instanceof http_1.IncomingMessage) {\n                this.options.headers = {\n                    ...source.headers,\n                    ...this.options.headers\n                };\n            }\n        });\n        const { json, body, form } = options;\n        if (json || body || form) {\n            this._lockWrite();\n        }\n        if (exports.kIsNormalizedAlready in options) {\n            this.options = options;\n        }\n        else {\n            try {\n                // @ts-expect-error Common TypeScript bug saying that `this.constructor` is not accessible\n                this.options = this.constructor.normalizeArguments(url, options, defaults);\n            }\n            catch (error) {\n                // TODO: Move this to `_destroy()`\n                if (is_1.default.nodeStream(options.body)) {\n                    options.body.destroy();\n                }\n                this.destroy(error);\n                return;\n            }\n        }\n        (async () => {\n            var _a;\n            try {\n                if (this.options.body instanceof fs_1.ReadStream) {\n                    await waitForOpenFile(this.options.body);\n                }\n                const { url: normalizedURL } = this.options;\n                if (!normalizedURL) {\n                    throw new TypeError('Missing `url` property');\n                }\n                this.requestUrl = normalizedURL.toString();\n                decodeURI(this.requestUrl);\n                await this._finalizeBody();\n                await this._makeRequest();\n                if (this.destroyed) {\n                    (_a = this[kRequest]) === null || _a === void 0 ? void 0 : _a.destroy();\n                    return;\n                }\n                // Queued writes etc.\n                for (const job of this[kJobs]) {\n                    job();\n                }\n                // Prevent memory leak\n                this[kJobs].length = 0;\n                this.requestInitialized = true;\n            }\n            catch (error) {\n                if (error instanceof RequestError) {\n                    this._beforeError(error);\n                    return;\n                }\n                // This is a workaround for https://github.com/nodejs/node/issues/33335\n                if (!this.destroyed) {\n                    this.destroy(error);\n                }\n            }\n        })();\n    }\n    static normalizeArguments(url, options, defaults) {\n        var _a, _b, _c, _d, _e;\n        const rawOptions = options;\n        if (is_1.default.object(url) && !is_1.default.urlInstance(url)) {\n            options = { ...defaults, ...url, ...options };\n        }\n        else {\n            if (url && options && options.url !== undefined) {\n                throw new TypeError('The `url` option is mutually exclusive with the `input` argument');\n            }\n            options = { ...defaults, ...options };\n            if (url !== undefined) {\n                options.url = url;\n            }\n            if (is_1.default.urlInstance(options.url)) {\n                options.url = new url_1.URL(options.url.toString());\n            }\n        }\n        // TODO: Deprecate URL options in Got 12.\n        // Support extend-specific options\n        if (options.cache === false) {\n            options.cache = undefined;\n        }\n        if (options.dnsCache === false) {\n            options.dnsCache = undefined;\n        }\n        // Nice type assertions\n        is_1.assert.any([is_1.default.string, is_1.default.undefined], options.method);\n        is_1.assert.any([is_1.default.object, is_1.default.undefined], options.headers);\n        is_1.assert.any([is_1.default.string, is_1.default.urlInstance, is_1.default.undefined], options.prefixUrl);\n        is_1.assert.any([is_1.default.object, is_1.default.undefined], options.cookieJar);\n        is_1.assert.any([is_1.default.object, is_1.default.string, is_1.default.undefined], options.searchParams);\n        is_1.assert.any([is_1.default.object, is_1.default.string, is_1.default.undefined], options.cache);\n        is_1.assert.any([is_1.default.object, is_1.default.number, is_1.default.undefined], options.timeout);\n        is_1.assert.any([is_1.default.object, is_1.default.undefined], options.context);\n        is_1.assert.any([is_1.default.object, is_1.default.undefined], options.hooks);\n        is_1.assert.any([is_1.default.boolean, is_1.default.undefined], options.decompress);\n        is_1.assert.any([is_1.default.boolean, is_1.default.undefined], options.ignoreInvalidCookies);\n        is_1.assert.any([is_1.default.boolean, is_1.default.undefined], options.followRedirect);\n        is_1.assert.any([is_1.default.number, is_1.default.undefined], options.maxRedirects);\n        is_1.assert.any([is_1.default.boolean, is_1.default.undefined], options.throwHttpErrors);\n        is_1.assert.any([is_1.default.boolean, is_1.default.undefined], options.http2);\n        is_1.assert.any([is_1.default.boolean, is_1.default.undefined], options.allowGetBody);\n        is_1.assert.any([is_1.default.string, is_1.default.undefined], options.localAddress);\n        is_1.assert.any([dns_ip_version_1.isDnsLookupIpVersion, is_1.default.undefined], options.dnsLookupIpVersion);\n        is_1.assert.any([is_1.default.object, is_1.default.undefined], options.https);\n        is_1.assert.any([is_1.default.boolean, is_1.default.undefined], options.rejectUnauthorized);\n        if (options.https) {\n            is_1.assert.any([is_1.default.boolean, is_1.default.undefined], options.https.rejectUnauthorized);\n            is_1.assert.any([is_1.default.function_, is_1.default.undefined], options.https.checkServerIdentity);\n            is_1.assert.any([is_1.default.string, is_1.default.object, is_1.default.array, is_1.default.undefined], options.https.certificateAuthority);\n            is_1.assert.any([is_1.default.string, is_1.default.object, is_1.default.array, is_1.default.undefined], options.https.key);\n            is_1.assert.any([is_1.default.string, is_1.default.object, is_1.default.array, is_1.default.undefined], options.https.certificate);\n            is_1.assert.any([is_1.default.string, is_1.default.undefined], options.https.passphrase);\n            is_1.assert.any([is_1.default.string, is_1.default.buffer, is_1.default.array, is_1.default.undefined], options.https.pfx);\n        }\n        is_1.assert.any([is_1.default.object, is_1.default.undefined], options.cacheOptions);\n        // `options.method`\n        if (is_1.default.string(options.method)) {\n            options.method = options.method.toUpperCase();\n        }\n        else {\n            options.method = 'GET';\n        }\n        // `options.headers`\n        if (options.headers === (defaults === null || defaults === void 0 ? void 0 : defaults.headers)) {\n            options.headers = { ...options.headers };\n        }\n        else {\n            options.headers = lowercaseKeys({ ...(defaults === null || defaults === void 0 ? void 0 : defaults.headers), ...options.headers });\n        }\n        // Disallow legacy `url.Url`\n        if ('slashes' in options) {\n            throw new TypeError('The legacy `url.Url` has been deprecated. Use `URL` instead.');\n        }\n        // `options.auth`\n        if ('auth' in options) {\n            throw new TypeError('Parameter `auth` is deprecated. Use `username` / `password` instead.');\n        }\n        // `options.searchParams`\n        if ('searchParams' in options) {\n            if (options.searchParams && options.searchParams !== (defaults === null || defaults === void 0 ? void 0 : defaults.searchParams)) {\n                let searchParameters;\n                if (is_1.default.string(options.searchParams) || (options.searchParams instanceof url_1.URLSearchParams)) {\n                    searchParameters = new url_1.URLSearchParams(options.searchParams);\n                }\n                else {\n                    validateSearchParameters(options.searchParams);\n                    searchParameters = new url_1.URLSearchParams();\n                    // eslint-disable-next-line guard-for-in\n                    for (const key in options.searchParams) {\n                        const value = options.searchParams[key];\n                        if (value === null) {\n                            searchParameters.append(key, '');\n                        }\n                        else if (value !== undefined) {\n                            searchParameters.append(key, value);\n                        }\n                    }\n                }\n                // `normalizeArguments()` is also used to merge options\n                (_a = defaults === null || defaults === void 0 ? void 0 : defaults.searchParams) === null || _a === void 0 ? void 0 : _a.forEach((value, key) => {\n                    // Only use default if one isn't already defined\n                    if (!searchParameters.has(key)) {\n                        searchParameters.append(key, value);\n                    }\n                });\n                options.searchParams = searchParameters;\n            }\n        }\n        // `options.username` & `options.password`\n        options.username = (_b = options.username) !== null && _b !== void 0 ? _b : '';\n        options.password = (_c = options.password) !== null && _c !== void 0 ? _c : '';\n        // `options.prefixUrl` & `options.url`\n        if (is_1.default.undefined(options.prefixUrl)) {\n            options.prefixUrl = (_d = defaults === null || defaults === void 0 ? void 0 : defaults.prefixUrl) !== null && _d !== void 0 ? _d : '';\n        }\n        else {\n            options.prefixUrl = options.prefixUrl.toString();\n            if (options.prefixUrl !== '' && !options.prefixUrl.endsWith('/')) {\n                options.prefixUrl += '/';\n            }\n        }\n        if (is_1.default.string(options.url)) {\n            if (options.url.startsWith('/')) {\n                throw new Error('`input` must not start with a slash when using `prefixUrl`');\n            }\n            options.url = options_to_url_1.default(options.prefixUrl + options.url, options);\n        }\n        else if ((is_1.default.undefined(options.url) && options.prefixUrl !== '') || options.protocol) {\n            options.url = options_to_url_1.default(options.prefixUrl, options);\n        }\n        if (options.url) {\n            if ('port' in options) {\n                delete options.port;\n            }\n            // Make it possible to change `options.prefixUrl`\n            let { prefixUrl } = options;\n            Object.defineProperty(options, 'prefixUrl', {\n                set: (value) => {\n                    const url = options.url;\n                    if (!url.href.startsWith(value)) {\n                        throw new Error(`Cannot change \\`prefixUrl\\` from ${prefixUrl} to ${value}: ${url.href}`);\n                    }\n                    options.url = new url_1.URL(value + url.href.slice(prefixUrl.length));\n                    prefixUrl = value;\n                },\n                get: () => prefixUrl\n            });\n            // Support UNIX sockets\n            let { protocol } = options.url;\n            if (protocol === 'unix:') {\n                protocol = 'http:';\n                options.url = new url_1.URL(`http://unix${options.url.pathname}${options.url.search}`);\n            }\n            // Set search params\n            if (options.searchParams) {\n                // eslint-disable-next-line @typescript-eslint/no-base-to-string\n                options.url.search = options.searchParams.toString();\n            }\n            // Protocol check\n            if (protocol !== 'http:' && protocol !== 'https:') {\n                throw new UnsupportedProtocolError(options);\n            }\n            // Update `username`\n            if (options.username === '') {\n                options.username = options.url.username;\n            }\n            else {\n                options.url.username = options.username;\n            }\n            // Update `password`\n            if (options.password === '') {\n                options.password = options.url.password;\n            }\n            else {\n                options.url.password = options.password;\n            }\n        }\n        // `options.cookieJar`\n        const { cookieJar } = options;\n        if (cookieJar) {\n            let { setCookie, getCookieString } = cookieJar;\n            is_1.assert.function_(setCookie);\n            is_1.assert.function_(getCookieString);\n            /* istanbul ignore next: Horrible `tough-cookie` v3 check */\n            if (setCookie.length === 4 && getCookieString.length === 0) {\n                setCookie = util_1.promisify(setCookie.bind(options.cookieJar));\n                getCookieString = util_1.promisify(getCookieString.bind(options.cookieJar));\n                options.cookieJar = {\n                    setCookie,\n                    getCookieString: getCookieString\n                };\n            }\n        }\n        // `options.cache`\n        const { cache } = options;\n        if (cache) {\n            if (!cacheableStore.has(cache)) {\n                cacheableStore.set(cache, new CacheableRequest(((requestOptions, handler) => {\n                    const result = requestOptions[kRequest](requestOptions, handler);\n                    // TODO: remove this when `cacheable-request` supports async request functions.\n                    if (is_1.default.promise(result)) {\n                        // @ts-expect-error\n                        // We only need to implement the error handler in order to support HTTP2 caching.\n                        // The result will be a promise anyway.\n                        result.once = (event, handler) => {\n                            if (event === 'error') {\n                                result.catch(handler);\n                            }\n                            else if (event === 'abort') {\n                                // The empty catch is needed here in case when\n                                // it rejects before it's `await`ed in `_makeRequest`.\n                                (async () => {\n                                    try {\n                                        const request = (await result);\n                                        request.once('abort', handler);\n                                    }\n                                    catch (_a) { }\n                                })();\n                            }\n                            else {\n                                /* istanbul ignore next: safety check */\n                                throw new Error(`Unknown HTTP2 promise event: ${event}`);\n                            }\n                            return result;\n                        };\n                    }\n                    return result;\n                }), cache));\n            }\n        }\n        // `options.cacheOptions`\n        options.cacheOptions = { ...options.cacheOptions };\n        // `options.dnsCache`\n        if (options.dnsCache === true) {\n            if (!globalDnsCache) {\n                globalDnsCache = new cacheable_lookup_1.default();\n            }\n            options.dnsCache = globalDnsCache;\n        }\n        else if (!is_1.default.undefined(options.dnsCache) && !options.dnsCache.lookup) {\n            throw new TypeError(`Parameter \\`dnsCache\\` must be a CacheableLookup instance or a boolean, got ${is_1.default(options.dnsCache)}`);\n        }\n        // `options.timeout`\n        if (is_1.default.number(options.timeout)) {\n            options.timeout = { request: options.timeout };\n        }\n        else if (defaults && options.timeout !== defaults.timeout) {\n            options.timeout = {\n                ...defaults.timeout,\n                ...options.timeout\n            };\n        }\n        else {\n            options.timeout = { ...options.timeout };\n        }\n        // `options.context`\n        if (!options.context) {\n            options.context = {};\n        }\n        // `options.hooks`\n        const areHooksDefault = options.hooks === (defaults === null || defaults === void 0 ? void 0 : defaults.hooks);\n        options.hooks = { ...options.hooks };\n        for (const event of exports.knownHookEvents) {\n            if (event in options.hooks) {\n                if (is_1.default.array(options.hooks[event])) {\n                    // See https://github.com/microsoft/TypeScript/issues/31445#issuecomment-576929044\n                    options.hooks[event] = [...options.hooks[event]];\n                }\n                else {\n                    throw new TypeError(`Parameter \\`${event}\\` must be an Array, got ${is_1.default(options.hooks[event])}`);\n                }\n            }\n            else {\n                options.hooks[event] = [];\n            }\n        }\n        if (defaults && !areHooksDefault) {\n            for (const event of exports.knownHookEvents) {\n                const defaultHooks = defaults.hooks[event];\n                if (defaultHooks.length > 0) {\n                    // See https://github.com/microsoft/TypeScript/issues/31445#issuecomment-576929044\n                    options.hooks[event] = [\n                        ...defaults.hooks[event],\n                        ...options.hooks[event]\n                    ];\n                }\n            }\n        }\n        // DNS options\n        if ('family' in options) {\n            deprecation_warning_1.default('\"options.family\" was never documented, please use \"options.dnsLookupIpVersion\"');\n        }\n        // HTTPS options\n        if (defaults === null || defaults === void 0 ? void 0 : defaults.https) {\n            options.https = { ...defaults.https, ...options.https };\n        }\n        if ('rejectUnauthorized' in options) {\n            deprecation_warning_1.default('\"options.rejectUnauthorized\" is now deprecated, please use \"options.https.rejectUnauthorized\"');\n        }\n        if ('checkServerIdentity' in options) {\n            deprecation_warning_1.default('\"options.checkServerIdentity\" was never documented, please use \"options.https.checkServerIdentity\"');\n        }\n        if ('ca' in options) {\n            deprecation_warning_1.default('\"options.ca\" was never documented, please use \"options.https.certificateAuthority\"');\n        }\n        if ('key' in options) {\n            deprecation_warning_1.default('\"options.key\" was never documented, please use \"options.https.key\"');\n        }\n        if ('cert' in options) {\n            deprecation_warning_1.default('\"options.cert\" was never documented, please use \"options.https.certificate\"');\n        }\n        if ('passphrase' in options) {\n            deprecation_warning_1.default('\"options.passphrase\" was never documented, please use \"options.https.passphrase\"');\n        }\n        if ('pfx' in options) {\n            deprecation_warning_1.default('\"options.pfx\" was never documented, please use \"options.https.pfx\"');\n        }\n        // Other options\n        if ('followRedirects' in options) {\n            throw new TypeError('The `followRedirects` option does not exist. Use `followRedirect` instead.');\n        }\n        if (options.agent) {\n            for (const key in options.agent) {\n                if (key !== 'http' && key !== 'https' && key !== 'http2') {\n                    throw new TypeError(`Expected the \\`options.agent\\` properties to be \\`http\\`, \\`https\\` or \\`http2\\`, got \\`${key}\\``);\n                }\n            }\n        }\n        options.maxRedirects = (_e = options.maxRedirects) !== null && _e !== void 0 ? _e : 0;\n        // Set non-enumerable properties\n        exports.setNonEnumerableProperties([defaults, rawOptions], options);\n        return normalize_arguments_1.default(options, defaults);\n    }\n    _lockWrite() {\n        const onLockedWrite = () => {\n            throw new TypeError('The payload has been already provided');\n        };\n        this.write = onLockedWrite;\n        this.end = onLockedWrite;\n    }\n    _unlockWrite() {\n        this.write = super.write;\n        this.end = super.end;\n    }\n    async _finalizeBody() {\n        const { options } = this;\n        const { headers } = options;\n        const isForm = !is_1.default.undefined(options.form);\n        const isJSON = !is_1.default.undefined(options.json);\n        const isBody = !is_1.default.undefined(options.body);\n        const hasPayload = isForm || isJSON || isBody;\n        const cannotHaveBody = exports.withoutBody.has(options.method) && !(options.method === 'GET' && options.allowGetBody);\n        this._cannotHaveBody = cannotHaveBody;\n        if (hasPayload) {\n            if (cannotHaveBody) {\n                throw new TypeError(`The \\`${options.method}\\` method cannot be used with a body`);\n            }\n            if ([isBody, isForm, isJSON].filter(isTrue => isTrue).length > 1) {\n                throw new TypeError('The `body`, `json` and `form` options are mutually exclusive');\n            }\n            if (isBody &&\n                !(options.body instanceof stream_1.Readable) &&\n                !is_1.default.string(options.body) &&\n                !is_1.default.buffer(options.body) &&\n                !is_form_data_1.default(options.body)) {\n                throw new TypeError('The `body` option must be a stream.Readable, string or Buffer');\n            }\n            if (isForm && !is_1.default.object(options.form)) {\n                throw new TypeError('The `form` option must be an Object');\n            }\n            {\n                // Serialize body\n                const noContentType = !is_1.default.string(headers['content-type']);\n                if (isBody) {\n                    // Special case for https://github.com/form-data/form-data\n                    if (is_form_data_1.default(options.body) && noContentType) {\n                        headers['content-type'] = `multipart/form-data; boundary=${options.body.getBoundary()}`;\n                    }\n                    this[kBody] = options.body;\n                }\n                else if (isForm) {\n                    if (noContentType) {\n                        headers['content-type'] = 'application/x-www-form-urlencoded';\n                    }\n                    this[kBody] = (new url_1.URLSearchParams(options.form)).toString();\n                }\n                else {\n                    if (noContentType) {\n                        headers['content-type'] = 'application/json';\n                    }\n                    this[kBody] = options.stringifyJson(options.json);\n                }\n                const uploadBodySize = await get_body_size_1.default(this[kBody], options.headers);\n                // See https://tools.ietf.org/html/rfc7230#section-3.3.2\n                // A user agent SHOULD send a Content-Length in a request message when\n                // no Transfer-Encoding is sent and the request method defines a meaning\n                // for an enclosed payload body.  For example, a Content-Length header\n                // field is normally sent in a POST request even when the value is 0\n                // (indicating an empty payload body).  A user agent SHOULD NOT send a\n                // Content-Length header field when the request message does not contain\n                // a payload body and the method semantics do not anticipate such a\n                // body.\n                if (is_1.default.undefined(headers['content-length']) && is_1.default.undefined(headers['transfer-encoding'])) {\n                    if (!cannotHaveBody && !is_1.default.undefined(uploadBodySize)) {\n                        headers['content-length'] = String(uploadBodySize);\n                    }\n                }\n            }\n        }\n        else if (cannotHaveBody) {\n            this._lockWrite();\n        }\n        else {\n            this._unlockWrite();\n        }\n        this[kBodySize] = Number(headers['content-length']) || undefined;\n    }\n    async _onResponseBase(response) {\n        const { options } = this;\n        const { url } = options;\n        this[kOriginalResponse] = response;\n        if (options.decompress) {\n            response = decompressResponse(response);\n        }\n        const statusCode = response.statusCode;\n        const typedResponse = response;\n        typedResponse.statusMessage = typedResponse.statusMessage ? typedResponse.statusMessage : http.STATUS_CODES[statusCode];\n        typedResponse.url = options.url.toString();\n        typedResponse.requestUrl = this.requestUrl;\n        typedResponse.redirectUrls = this.redirects;\n        typedResponse.request = this;\n        typedResponse.isFromCache = response.fromCache || false;\n        typedResponse.ip = this.ip;\n        typedResponse.retryCount = this.retryCount;\n        this[kIsFromCache] = typedResponse.isFromCache;\n        this[kResponseSize] = Number(response.headers['content-length']) || undefined;\n        this[kResponse] = response;\n        response.once('end', () => {\n            this[kResponseSize] = this[kDownloadedSize];\n            this.emit('downloadProgress', this.downloadProgress);\n        });\n        response.once('error', (error) => {\n            // Force clean-up, because some packages don't do this.\n            // TODO: Fix decompress-response\n            response.destroy();\n            this._beforeError(new ReadError(error, this));\n        });\n        response.once('aborted', () => {\n            this._beforeError(new ReadError({\n                name: 'Error',\n                message: 'The server aborted pending request',\n                code: 'ECONNRESET'\n            }, this));\n        });\n        this.emit('downloadProgress', this.downloadProgress);\n        const rawCookies = response.headers['set-cookie'];\n        if (is_1.default.object(options.cookieJar) && rawCookies) {\n            let promises = rawCookies.map(async (rawCookie) => options.cookieJar.setCookie(rawCookie, url.toString()));\n            if (options.ignoreInvalidCookies) {\n                promises = promises.map(async (p) => p.catch(() => { }));\n            }\n            try {\n                await Promise.all(promises);\n            }\n            catch (error) {\n                this._beforeError(error);\n                return;\n            }\n        }\n        if (options.followRedirect && response.headers.location && redirectCodes.has(statusCode)) {\n            // We're being redirected, we don't care about the response.\n            // It'd be best to abort the request, but we can't because\n            // we would have to sacrifice the TCP connection. We don't want that.\n            response.resume();\n            if (this[kRequest]) {\n                this[kCancelTimeouts]();\n                // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n                delete this[kRequest];\n                this[kUnproxyEvents]();\n            }\n            const shouldBeGet = statusCode === 303 && options.method !== 'GET' && options.method !== 'HEAD';\n            if (shouldBeGet || !options.methodRewriting) {\n                // Server responded with \"see other\", indicating that the resource exists at another location,\n                // and the client should request it from that location via GET or HEAD.\n                options.method = 'GET';\n                if ('body' in options) {\n                    delete options.body;\n                }\n                if ('json' in options) {\n                    delete options.json;\n                }\n                if ('form' in options) {\n                    delete options.form;\n                }\n                this[kBody] = undefined;\n                delete options.headers['content-length'];\n            }\n            if (this.redirects.length >= options.maxRedirects) {\n                this._beforeError(new MaxRedirectsError(this));\n                return;\n            }\n            try {\n                // Do not remove. See https://github.com/sindresorhus/got/pull/214\n                const redirectBuffer = Buffer.from(response.headers.location, 'binary').toString();\n                // Handles invalid URLs. See https://github.com/sindresorhus/got/issues/604\n                const redirectUrl = new url_1.URL(redirectBuffer, url);\n                const redirectString = redirectUrl.toString();\n                decodeURI(redirectString);\n                // Redirecting to a different site, clear sensitive data.\n                if (redirectUrl.hostname !== url.hostname || redirectUrl.port !== url.port) {\n                    if ('host' in options.headers) {\n                        delete options.headers.host;\n                    }\n                    if ('cookie' in options.headers) {\n                        delete options.headers.cookie;\n                    }\n                    if ('authorization' in options.headers) {\n                        delete options.headers.authorization;\n                    }\n                    if (options.username || options.password) {\n                        options.username = '';\n                        options.password = '';\n                    }\n                }\n                else {\n                    redirectUrl.username = options.username;\n                    redirectUrl.password = options.password;\n                }\n                this.redirects.push(redirectString);\n                options.url = redirectUrl;\n                for (const hook of options.hooks.beforeRedirect) {\n                    // eslint-disable-next-line no-await-in-loop\n                    await hook(options, typedResponse);\n                }\n                this.emit('redirect', typedResponse, options);\n                await this._makeRequest();\n            }\n            catch (error) {\n                this._beforeError(error);\n                return;\n            }\n            return;\n        }\n        if (options.isStream && options.throwHttpErrors && !is_response_ok_1.isResponseOk(typedResponse)) {\n            this._beforeError(new HTTPError(typedResponse));\n            return;\n        }\n        response.on('readable', () => {\n            if (this[kTriggerRead]) {\n                this._read();\n            }\n        });\n        this.on('resume', () => {\n            response.resume();\n        });\n        this.on('pause', () => {\n            response.pause();\n        });\n        response.once('end', () => {\n            this.push(null);\n        });\n        this.emit('response', response);\n        for (const destination of this[kServerResponsesPiped]) {\n            if (destination.headersSent) {\n                continue;\n            }\n            // eslint-disable-next-line guard-for-in\n            for (const key in response.headers) {\n                const isAllowed = options.decompress ? key !== 'content-encoding' : true;\n                const value = response.headers[key];\n                if (isAllowed) {\n                    destination.setHeader(key, value);\n                }\n            }\n            destination.statusCode = statusCode;\n        }\n    }\n    async _onResponse(response) {\n        try {\n            await this._onResponseBase(response);\n        }\n        catch (error) {\n            /* istanbul ignore next: better safe than sorry */\n            this._beforeError(error);\n        }\n    }\n    _onRequest(request) {\n        const { options } = this;\n        const { timeout, url } = options;\n        http_timer_1.default(request);\n        this[kCancelTimeouts] = timed_out_1.default(request, timeout, url);\n        const responseEventName = options.cache ? 'cacheableResponse' : 'response';\n        request.once(responseEventName, (response) => {\n            void this._onResponse(response);\n        });\n        request.once('error', (error) => {\n            var _a;\n            // Force clean-up, because some packages (e.g. nock) don't do this.\n            request.destroy();\n            // Node.js <= 12.18.2 mistakenly emits the response `end` first.\n            (_a = request.res) === null || _a === void 0 ? void 0 : _a.removeAllListeners('end');\n            error = error instanceof timed_out_1.TimeoutError ? new TimeoutError(error, this.timings, this) : new RequestError(error.message, error, this);\n            this._beforeError(error);\n        });\n        this[kUnproxyEvents] = proxy_events_1.default(request, this, proxiedRequestEvents);\n        this[kRequest] = request;\n        this.emit('uploadProgress', this.uploadProgress);\n        // Send body\n        const body = this[kBody];\n        const currentRequest = this.redirects.length === 0 ? this : request;\n        if (is_1.default.nodeStream(body)) {\n            body.pipe(currentRequest);\n            body.once('error', (error) => {\n                this._beforeError(new UploadError(error, this));\n            });\n        }\n        else {\n            this._unlockWrite();\n            if (!is_1.default.undefined(body)) {\n                this._writeRequest(body, undefined, () => { });\n                currentRequest.end();\n                this._lockWrite();\n            }\n            else if (this._cannotHaveBody || this._noPipe) {\n                currentRequest.end();\n                this._lockWrite();\n            }\n        }\n        this.emit('request', request);\n    }\n    async _createCacheableRequest(url, options) {\n        return new Promise((resolve, reject) => {\n            // TODO: Remove `utils/url-to-options.ts` when `cacheable-request` is fixed\n            Object.assign(options, url_to_options_1.default(url));\n            // `http-cache-semantics` checks this\n            // TODO: Fix this ignore.\n            // @ts-expect-error\n            delete options.url;\n            let request;\n            // This is ugly\n            const cacheRequest = cacheableStore.get(options.cache)(options, async (response) => {\n                // TODO: Fix `cacheable-response`\n                response._readableState.autoDestroy = false;\n                if (request) {\n                    (await request).emit('cacheableResponse', response);\n                }\n                resolve(response);\n            });\n            // Restore options\n            options.url = url;\n            cacheRequest.once('error', reject);\n            cacheRequest.once('request', async (requestOrPromise) => {\n                request = requestOrPromise;\n                resolve(request);\n            });\n        });\n    }\n    async _makeRequest() {\n        var _a, _b, _c, _d, _e;\n        const { options } = this;\n        const { headers } = options;\n        for (const key in headers) {\n            if (is_1.default.undefined(headers[key])) {\n                // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n                delete headers[key];\n            }\n            else if (is_1.default.null_(headers[key])) {\n                throw new TypeError(`Use \\`undefined\\` instead of \\`null\\` to delete the \\`${key}\\` header`);\n            }\n        }\n        if (options.decompress && is_1.default.undefined(headers['accept-encoding'])) {\n            headers['accept-encoding'] = supportsBrotli ? 'gzip, deflate, br' : 'gzip, deflate';\n        }\n        // Set cookies\n        if (options.cookieJar) {\n            const cookieString = await options.cookieJar.getCookieString(options.url.toString());\n            if (is_1.default.nonEmptyString(cookieString)) {\n                options.headers.cookie = cookieString;\n            }\n        }\n        for (const hook of options.hooks.beforeRequest) {\n            // eslint-disable-next-line no-await-in-loop\n            const result = await hook(options);\n            if (!is_1.default.undefined(result)) {\n                // @ts-expect-error Skip the type mismatch to support abstract responses\n                options.request = () => result;\n                break;\n            }\n        }\n        if (options.body && this[kBody] !== options.body) {\n            this[kBody] = options.body;\n        }\n        const { agent, request, timeout, url } = options;\n        if (options.dnsCache && !('lookup' in options)) {\n            options.lookup = options.dnsCache.lookup;\n        }\n        // UNIX sockets\n        if (url.hostname === 'unix') {\n            const matches = /(?<socketPath>.+?):(?<path>.+)/.exec(`${url.pathname}${url.search}`);\n            if (matches === null || matches === void 0 ? void 0 : matches.groups) {\n                const { socketPath, path } = matches.groups;\n                Object.assign(options, {\n                    socketPath,\n                    path,\n                    host: ''\n                });\n            }\n        }\n        const isHttps = url.protocol === 'https:';\n        // Fallback function\n        let fallbackFn;\n        if (options.http2) {\n            fallbackFn = http2wrapper.auto;\n        }\n        else {\n            fallbackFn = isHttps ? https.request : http.request;\n        }\n        const realFn = (_a = options.request) !== null && _a !== void 0 ? _a : fallbackFn;\n        // Cache support\n        const fn = options.cache ? this._createCacheableRequest : realFn;\n        // Pass an agent directly when HTTP2 is disabled\n        if (agent && !options.http2) {\n            options.agent = agent[isHttps ? 'https' : 'http'];\n        }\n        // Prepare plain HTTP request options\n        options[kRequest] = realFn;\n        delete options.request;\n        // TODO: Fix this ignore.\n        // @ts-expect-error\n        delete options.timeout;\n        const requestOptions = options;\n        requestOptions.shared = (_b = options.cacheOptions) === null || _b === void 0 ? void 0 : _b.shared;\n        requestOptions.cacheHeuristic = (_c = options.cacheOptions) === null || _c === void 0 ? void 0 : _c.cacheHeuristic;\n        requestOptions.immutableMinTimeToLive = (_d = options.cacheOptions) === null || _d === void 0 ? void 0 : _d.immutableMinTimeToLive;\n        requestOptions.ignoreCargoCult = (_e = options.cacheOptions) === null || _e === void 0 ? void 0 : _e.ignoreCargoCult;\n        // If `dnsLookupIpVersion` is not present do not override `family`\n        if (options.dnsLookupIpVersion !== undefined) {\n            try {\n                requestOptions.family = dns_ip_version_1.dnsLookupIpVersionToFamily(options.dnsLookupIpVersion);\n            }\n            catch (_f) {\n                throw new Error('Invalid `dnsLookupIpVersion` option value');\n            }\n        }\n        // HTTPS options remapping\n        if (options.https) {\n            if ('rejectUnauthorized' in options.https) {\n                requestOptions.rejectUnauthorized = options.https.rejectUnauthorized;\n            }\n            if (options.https.checkServerIdentity) {\n                requestOptions.checkServerIdentity = options.https.checkServerIdentity;\n            }\n            if (options.https.certificateAuthority) {\n                requestOptions.ca = options.https.certificateAuthority;\n            }\n            if (options.https.certificate) {\n                requestOptions.cert = options.https.certificate;\n            }\n            if (options.https.key) {\n                requestOptions.key = options.https.key;\n            }\n            if (options.https.passphrase) {\n                requestOptions.passphrase = options.https.passphrase;\n            }\n            if (options.https.pfx) {\n                requestOptions.pfx = options.https.pfx;\n            }\n        }\n        try {\n            let requestOrResponse = await fn(url, requestOptions);\n            if (is_1.default.undefined(requestOrResponse)) {\n                requestOrResponse = fallbackFn(url, requestOptions);\n            }\n            // Restore options\n            options.request = request;\n            options.timeout = timeout;\n            options.agent = agent;\n            // HTTPS options restore\n            if (options.https) {\n                if ('rejectUnauthorized' in options.https) {\n                    delete requestOptions.rejectUnauthorized;\n                }\n                if (options.https.checkServerIdentity) {\n                    // @ts-expect-error - This one will be removed when we remove the alias.\n                    delete requestOptions.checkServerIdentity;\n                }\n                if (options.https.certificateAuthority) {\n                    delete requestOptions.ca;\n                }\n                if (options.https.certificate) {\n                    delete requestOptions.cert;\n                }\n                if (options.https.key) {\n                    delete requestOptions.key;\n                }\n                if (options.https.passphrase) {\n                    delete requestOptions.passphrase;\n                }\n                if (options.https.pfx) {\n                    delete requestOptions.pfx;\n                }\n            }\n            if (isClientRequest(requestOrResponse)) {\n                this._onRequest(requestOrResponse);\n                // Emit the response after the stream has been ended\n            }\n            else if (this.writable) {\n                this.once('finish', () => {\n                    void this._onResponse(requestOrResponse);\n                });\n                this._unlockWrite();\n                this.end();\n                this._lockWrite();\n            }\n            else {\n                void this._onResponse(requestOrResponse);\n            }\n        }\n        catch (error) {\n            if (error instanceof CacheableRequest.CacheError) {\n                throw new CacheError(error, this);\n            }\n            throw new RequestError(error.message, error, this);\n        }\n    }\n    async _error(error) {\n        try {\n            for (const hook of this.options.hooks.beforeError) {\n                // eslint-disable-next-line no-await-in-loop\n                error = await hook(error);\n            }\n        }\n        catch (error_) {\n            error = new RequestError(error_.message, error_, this);\n        }\n        this.destroy(error);\n    }\n    _beforeError(error) {\n        if (this[kStopReading]) {\n            return;\n        }\n        const { options } = this;\n        const retryCount = this.retryCount + 1;\n        this[kStopReading] = true;\n        if (!(error instanceof RequestError)) {\n            error = new RequestError(error.message, error, this);\n        }\n        const typedError = error;\n        const { response } = typedError;\n        void (async () => {\n            if (response && !response.body) {\n                response.setEncoding(this._readableState.encoding);\n                try {\n                    response.rawBody = await get_buffer_1.default(response);\n                    response.body = response.rawBody.toString();\n                }\n                catch (_a) { }\n            }\n            if (this.listenerCount('retry') !== 0) {\n                let backoff;\n                try {\n                    let retryAfter;\n                    if (response && 'retry-after' in response.headers) {\n                        retryAfter = Number(response.headers['retry-after']);\n                        if (Number.isNaN(retryAfter)) {\n                            retryAfter = Date.parse(response.headers['retry-after']) - Date.now();\n                            if (retryAfter <= 0) {\n                                retryAfter = 1;\n                            }\n                        }\n                        else {\n                            retryAfter *= 1000;\n                        }\n                    }\n                    backoff = await options.retry.calculateDelay({\n                        attemptCount: retryCount,\n                        retryOptions: options.retry,\n                        error: typedError,\n                        retryAfter,\n                        computedValue: calculate_retry_delay_1.default({\n                            attemptCount: retryCount,\n                            retryOptions: options.retry,\n                            error: typedError,\n                            retryAfter,\n                            computedValue: 0\n                        })\n                    });\n                }\n                catch (error_) {\n                    void this._error(new RequestError(error_.message, error_, this));\n                    return;\n                }\n                if (backoff) {\n                    const retry = async () => {\n                        try {\n                            for (const hook of this.options.hooks.beforeRetry) {\n                                // eslint-disable-next-line no-await-in-loop\n                                await hook(this.options, typedError, retryCount);\n                            }\n                        }\n                        catch (error_) {\n                            void this._error(new RequestError(error_.message, error, this));\n                            return;\n                        }\n                        // Something forced us to abort the retry\n                        if (this.destroyed) {\n                            return;\n                        }\n                        this.destroy();\n                        this.emit('retry', retryCount, error);\n                    };\n                    this[kRetryTimeout] = setTimeout(retry, backoff);\n                    return;\n                }\n            }\n            void this._error(typedError);\n        })();\n    }\n    _read() {\n        this[kTriggerRead] = true;\n        const response = this[kResponse];\n        if (response && !this[kStopReading]) {\n            // We cannot put this in the `if` above\n            // because `.read()` also triggers the `end` event\n            if (response.readableLength) {\n                this[kTriggerRead] = false;\n            }\n            let data;\n            while ((data = response.read()) !== null) {\n                this[kDownloadedSize] += data.length;\n                this[kStartedReading] = true;\n                const progress = this.downloadProgress;\n                if (progress.percent < 1) {\n                    this.emit('downloadProgress', progress);\n                }\n                this.push(data);\n            }\n        }\n    }\n    // Node.js 12 has incorrect types, so the encoding must be a string\n    _write(chunk, encoding, callback) {\n        const write = () => {\n            this._writeRequest(chunk, encoding, callback);\n        };\n        if (this.requestInitialized) {\n            write();\n        }\n        else {\n            this[kJobs].push(write);\n        }\n    }\n    _writeRequest(chunk, encoding, callback) {\n        if (this[kRequest].destroyed) {\n            // Probably the `ClientRequest` instance will throw\n            return;\n        }\n        this._progressCallbacks.push(() => {\n            this[kUploadedSize] += Buffer.byteLength(chunk, encoding);\n            const progress = this.uploadProgress;\n            if (progress.percent < 1) {\n                this.emit('uploadProgress', progress);\n            }\n        });\n        // TODO: What happens if it's from cache? Then this[kRequest] won't be defined.\n        this[kRequest].write(chunk, encoding, (error) => {\n            if (!error && this._progressCallbacks.length > 0) {\n                this._progressCallbacks.shift()();\n            }\n            callback(error);\n        });\n    }\n    _final(callback) {\n        const endRequest = () => {\n            // FIX: Node.js 10 calls the write callback AFTER the end callback!\n            while (this._progressCallbacks.length !== 0) {\n                this._progressCallbacks.shift()();\n            }\n            // We need to check if `this[kRequest]` is present,\n            // because it isn't when we use cache.\n            if (!(kRequest in this)) {\n                callback();\n                return;\n            }\n            if (this[kRequest].destroyed) {\n                callback();\n                return;\n            }\n            this[kRequest].end((error) => {\n                if (!error) {\n                    this[kBodySize] = this[kUploadedSize];\n                    this.emit('uploadProgress', this.uploadProgress);\n                    this[kRequest].emit('upload-complete');\n                }\n                callback(error);\n            });\n        };\n        if (this.requestInitialized) {\n            endRequest();\n        }\n        else {\n            this[kJobs].push(endRequest);\n        }\n    }\n    _destroy(error, callback) {\n        var _a;\n        this[kStopReading] = true;\n        // Prevent further retries\n        clearTimeout(this[kRetryTimeout]);\n        if (kRequest in this) {\n            this[kCancelTimeouts]();\n            // TODO: Remove the next `if` when these get fixed:\n            // - https://github.com/nodejs/node/issues/32851\n            if (!((_a = this[kResponse]) === null || _a === void 0 ? void 0 : _a.complete)) {\n                this[kRequest].destroy();\n            }\n        }\n        if (error !== null && !is_1.default.undefined(error) && !(error instanceof RequestError)) {\n            error = new RequestError(error.message, error, this);\n        }\n        callback(error);\n    }\n    get _isAboutToError() {\n        return this[kStopReading];\n    }\n    /**\n    The remote IP address.\n    */\n    get ip() {\n        var _a;\n        return (_a = this.socket) === null || _a === void 0 ? void 0 : _a.remoteAddress;\n    }\n    /**\n    Indicates whether the request has been aborted or not.\n    */\n    get aborted() {\n        var _a, _b, _c;\n        return ((_b = (_a = this[kRequest]) === null || _a === void 0 ? void 0 : _a.destroyed) !== null && _b !== void 0 ? _b : this.destroyed) && !((_c = this[kOriginalResponse]) === null || _c === void 0 ? void 0 : _c.complete);\n    }\n    get socket() {\n        var _a, _b;\n        return (_b = (_a = this[kRequest]) === null || _a === void 0 ? void 0 : _a.socket) !== null && _b !== void 0 ? _b : undefined;\n    }\n    /**\n    Progress event for downloading (receiving a response).\n    */\n    get downloadProgress() {\n        let percent;\n        if (this[kResponseSize]) {\n            percent = this[kDownloadedSize] / this[kResponseSize];\n        }\n        else if (this[kResponseSize] === this[kDownloadedSize]) {\n            percent = 1;\n        }\n        else {\n            percent = 0;\n        }\n        return {\n            percent,\n            transferred: this[kDownloadedSize],\n            total: this[kResponseSize]\n        };\n    }\n    /**\n    Progress event for uploading (sending a request).\n    */\n    get uploadProgress() {\n        let percent;\n        if (this[kBodySize]) {\n            percent = this[kUploadedSize] / this[kBodySize];\n        }\n        else if (this[kBodySize] === this[kUploadedSize]) {\n            percent = 1;\n        }\n        else {\n            percent = 0;\n        }\n        return {\n            percent,\n            transferred: this[kUploadedSize],\n            total: this[kBodySize]\n        };\n    }\n    /**\n    The object contains the following properties:\n\n    - `start` - Time when the request started.\n    - `socket` - Time when a socket was assigned to the request.\n    - `lookup` - Time when the DNS lookup finished.\n    - `connect` - Time when the socket successfully connected.\n    - `secureConnect` - Time when the socket securely connected.\n    - `upload` - Time when the request finished uploading.\n    - `response` - Time when the request fired `response` event.\n    - `end` - Time when the response fired `end` event.\n    - `error` - Time when the request fired `error` event.\n    - `abort` - Time when the request fired `abort` event.\n    - `phases`\n        - `wait` - `timings.socket - timings.start`\n        - `dns` - `timings.lookup - timings.socket`\n        - `tcp` - `timings.connect - timings.lookup`\n        - `tls` - `timings.secureConnect - timings.connect`\n        - `request` - `timings.upload - (timings.secureConnect || timings.connect)`\n        - `firstByte` - `timings.response - timings.upload`\n        - `download` - `timings.end - timings.response`\n        - `total` - `(timings.end || timings.error || timings.abort) - timings.start`\n\n    If something has not been measured yet, it will be `undefined`.\n\n    __Note__: The time is a `number` representing the milliseconds elapsed since the UNIX epoch.\n    */\n    get timings() {\n        var _a;\n        return (_a = this[kRequest]) === null || _a === void 0 ? void 0 : _a.timings;\n    }\n    /**\n    Whether the response was retrieved from the cache.\n    */\n    get isFromCache() {\n        return this[kIsFromCache];\n    }\n    pipe(destination, options) {\n        if (this[kStartedReading]) {\n            throw new Error('Failed to pipe. The response has been emitted already.');\n        }\n        if (destination instanceof http_1.ServerResponse) {\n            this[kServerResponsesPiped].add(destination);\n        }\n        return super.pipe(destination, options);\n    }\n    unpipe(destination) {\n        if (destination instanceof http_1.ServerResponse) {\n            this[kServerResponsesPiped].delete(destination);\n        }\n        super.unpipe(destination);\n        return this;\n    }\n}\nexports[\"default\"] = Request;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/got/dist/source/core/index.js?")},"./node_modules/got/dist/source/core/utils/dns-ip-version.js":
/*!*******************************************************************!*\
  !*** ./node_modules/got/dist/source/core/utils/dns-ip-version.js ***!
  \*******************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.dnsLookupIpVersionToFamily = exports.isDnsLookupIpVersion = void 0;\nconst conversionTable = {\n    auto: 0,\n    ipv4: 4,\n    ipv6: 6\n};\nexports.isDnsLookupIpVersion = (value) => {\n    return value in conversionTable;\n};\nexports.dnsLookupIpVersionToFamily = (dnsLookupIpVersion) => {\n    if (exports.isDnsLookupIpVersion(dnsLookupIpVersion)) {\n        return conversionTable[dnsLookupIpVersion];\n    }\n    throw new Error('Invalid DNS lookup IP version');\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/got/dist/source/core/utils/dns-ip-version.js?")},"./node_modules/got/dist/source/core/utils/get-body-size.js":
/*!******************************************************************!*\
  !*** ./node_modules/got/dist/source/core/utils/get-body-size.js ***!
  \******************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst fs_1 = __webpack_require__(/*! fs */ "fs");\nconst util_1 = __webpack_require__(/*! util */ "util");\nconst is_1 = __webpack_require__(/*! @sindresorhus/is */ "./node_modules/@sindresorhus/is/dist/index.js");\nconst is_form_data_1 = __webpack_require__(/*! ./is-form-data */ "./node_modules/got/dist/source/core/utils/is-form-data.js");\nconst statAsync = util_1.promisify(fs_1.stat);\nexports["default"] = async (body, headers) => {\n    if (headers && \'content-length\' in headers) {\n        return Number(headers[\'content-length\']);\n    }\n    if (!body) {\n        return 0;\n    }\n    if (is_1.default.string(body)) {\n        return Buffer.byteLength(body);\n    }\n    if (is_1.default.buffer(body)) {\n        return body.length;\n    }\n    if (is_form_data_1.default(body)) {\n        return util_1.promisify(body.getLength.bind(body))();\n    }\n    if (body instanceof fs_1.ReadStream) {\n        const { size } = await statAsync(body.path);\n        if (size === 0) {\n            return undefined;\n        }\n        return size;\n    }\n    return undefined;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/got/dist/source/core/utils/get-body-size.js?')},"./node_modules/got/dist/source/core/utils/get-buffer.js":
/*!***************************************************************!*\
  !*** ./node_modules/got/dist/source/core/utils/get-buffer.js ***!
  \***************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\n// TODO: Update https://github.com/sindresorhus/get-stream\nconst getBuffer = async (stream) => {\n    const chunks = [];\n    let length = 0;\n    for await (const chunk of stream) {\n        chunks.push(chunk);\n        length += Buffer.byteLength(chunk);\n    }\n    if (Buffer.isBuffer(chunks[0])) {\n        return Buffer.concat(chunks, length);\n    }\n    return Buffer.from(chunks.join(\'\'));\n};\nexports["default"] = getBuffer;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/got/dist/source/core/utils/get-buffer.js?')},"./node_modules/got/dist/source/core/utils/is-form-data.js":
/*!*****************************************************************!*\
  !*** ./node_modules/got/dist/source/core/utils/is-form-data.js ***!
  \*****************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst is_1 = __webpack_require__(/*! @sindresorhus/is */ "./node_modules/@sindresorhus/is/dist/index.js");\nexports["default"] = (body) => is_1.default.nodeStream(body) && is_1.default.function_(body.getBoundary);\n\n\n//# sourceURL=webpack://txadmin/./node_modules/got/dist/source/core/utils/is-form-data.js?')},"./node_modules/got/dist/source/core/utils/is-response-ok.js":
/*!*******************************************************************!*\
  !*** ./node_modules/got/dist/source/core/utils/is-response-ok.js ***!
  \*******************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.isResponseOk = void 0;\nexports.isResponseOk = (response) => {\n    const { statusCode } = response;\n    const limitStatusCode = response.request.options.followRedirect ? 299 : 399;\n    return (statusCode >= 200 && statusCode <= limitStatusCode) || statusCode === 304;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/got/dist/source/core/utils/is-response-ok.js?')},"./node_modules/got/dist/source/core/utils/options-to-url.js":
/*!*******************************************************************!*\
  !*** ./node_modules/got/dist/source/core/utils/options-to-url.js ***!
  \*******************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/* istanbul ignore file: deprecated */\nconst url_1 = __webpack_require__(/*! url */ \"url\");\nconst keys = [\n    'protocol',\n    'host',\n    'hostname',\n    'port',\n    'pathname',\n    'search'\n];\nexports[\"default\"] = (origin, options) => {\n    var _a, _b;\n    if (options.path) {\n        if (options.pathname) {\n            throw new TypeError('Parameters `path` and `pathname` are mutually exclusive.');\n        }\n        if (options.search) {\n            throw new TypeError('Parameters `path` and `search` are mutually exclusive.');\n        }\n        if (options.searchParams) {\n            throw new TypeError('Parameters `path` and `searchParams` are mutually exclusive.');\n        }\n    }\n    if (options.search && options.searchParams) {\n        throw new TypeError('Parameters `search` and `searchParams` are mutually exclusive.');\n    }\n    if (!origin) {\n        if (!options.protocol) {\n            throw new TypeError('No URL protocol specified');\n        }\n        origin = `${options.protocol}//${(_b = (_a = options.hostname) !== null && _a !== void 0 ? _a : options.host) !== null && _b !== void 0 ? _b : ''}`;\n    }\n    const url = new url_1.URL(origin);\n    if (options.path) {\n        const searchIndex = options.path.indexOf('?');\n        if (searchIndex === -1) {\n            options.pathname = options.path;\n        }\n        else {\n            options.pathname = options.path.slice(0, searchIndex);\n            options.search = options.path.slice(searchIndex + 1);\n        }\n        delete options.path;\n    }\n    for (const key of keys) {\n        if (options[key]) {\n            url[key] = options[key].toString();\n        }\n    }\n    return url;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/got/dist/source/core/utils/options-to-url.js?")},"./node_modules/got/dist/source/core/utils/proxy-events.js":
/*!*****************************************************************!*\
  !*** ./node_modules/got/dist/source/core/utils/proxy-events.js ***!
  \*****************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nfunction default_1(from, to, events) {\n    const fns = {};\n    for (const event of events) {\n        fns[event] = (...args) => {\n            to.emit(event, ...args);\n        };\n        from.on(event, fns[event]);\n    }\n    return () => {\n        for (const event of events) {\n            from.off(event, fns[event]);\n        }\n    };\n}\nexports["default"] = default_1;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/got/dist/source/core/utils/proxy-events.js?')},"./node_modules/got/dist/source/core/utils/timed-out.js":
/*!**************************************************************!*\
  !*** ./node_modules/got/dist/source/core/utils/timed-out.js ***!
  \**************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TimeoutError = void 0;\nconst net = __webpack_require__(/*! net */ \"net\");\nconst unhandle_1 = __webpack_require__(/*! ./unhandle */ \"./node_modules/got/dist/source/core/utils/unhandle.js\");\nconst reentry = Symbol('reentry');\nconst noop = () => { };\nclass TimeoutError extends Error {\n    constructor(threshold, event) {\n        super(`Timeout awaiting '${event}' for ${threshold}ms`);\n        this.event = event;\n        this.name = 'TimeoutError';\n        this.code = 'ETIMEDOUT';\n    }\n}\nexports.TimeoutError = TimeoutError;\nexports[\"default\"] = (request, delays, options) => {\n    if (reentry in request) {\n        return noop;\n    }\n    request[reentry] = true;\n    const cancelers = [];\n    const { once, unhandleAll } = unhandle_1.default();\n    const addTimeout = (delay, callback, event) => {\n        var _a;\n        const timeout = setTimeout(callback, delay, delay, event);\n        (_a = timeout.unref) === null || _a === void 0 ? void 0 : _a.call(timeout);\n        const cancel = () => {\n            clearTimeout(timeout);\n        };\n        cancelers.push(cancel);\n        return cancel;\n    };\n    const { host, hostname } = options;\n    const timeoutHandler = (delay, event) => {\n        request.destroy(new TimeoutError(delay, event));\n    };\n    const cancelTimeouts = () => {\n        for (const cancel of cancelers) {\n            cancel();\n        }\n        unhandleAll();\n    };\n    request.once('error', error => {\n        cancelTimeouts();\n        // Save original behavior\n        /* istanbul ignore next */\n        if (request.listenerCount('error') === 0) {\n            throw error;\n        }\n    });\n    request.once('close', cancelTimeouts);\n    once(request, 'response', (response) => {\n        once(response, 'end', cancelTimeouts);\n    });\n    if (typeof delays.request !== 'undefined') {\n        addTimeout(delays.request, timeoutHandler, 'request');\n    }\n    if (typeof delays.socket !== 'undefined') {\n        const socketTimeoutHandler = () => {\n            timeoutHandler(delays.socket, 'socket');\n        };\n        request.setTimeout(delays.socket, socketTimeoutHandler);\n        // `request.setTimeout(0)` causes a memory leak.\n        // We can just remove the listener and forget about the timer - it's unreffed.\n        // See https://github.com/sindresorhus/got/issues/690\n        cancelers.push(() => {\n            request.removeListener('timeout', socketTimeoutHandler);\n        });\n    }\n    once(request, 'socket', (socket) => {\n        var _a;\n        const { socketPath } = request;\n        /* istanbul ignore next: hard to test */\n        if (socket.connecting) {\n            const hasPath = Boolean(socketPath !== null && socketPath !== void 0 ? socketPath : net.isIP((_a = hostname !== null && hostname !== void 0 ? hostname : host) !== null && _a !== void 0 ? _a : '') !== 0);\n            if (typeof delays.lookup !== 'undefined' && !hasPath && typeof socket.address().address === 'undefined') {\n                const cancelTimeout = addTimeout(delays.lookup, timeoutHandler, 'lookup');\n                once(socket, 'lookup', cancelTimeout);\n            }\n            if (typeof delays.connect !== 'undefined') {\n                const timeConnect = () => addTimeout(delays.connect, timeoutHandler, 'connect');\n                if (hasPath) {\n                    once(socket, 'connect', timeConnect());\n                }\n                else {\n                    once(socket, 'lookup', (error) => {\n                        if (error === null) {\n                            once(socket, 'connect', timeConnect());\n                        }\n                    });\n                }\n            }\n            if (typeof delays.secureConnect !== 'undefined' && options.protocol === 'https:') {\n                once(socket, 'connect', () => {\n                    const cancelTimeout = addTimeout(delays.secureConnect, timeoutHandler, 'secureConnect');\n                    once(socket, 'secureConnect', cancelTimeout);\n                });\n            }\n        }\n        if (typeof delays.send !== 'undefined') {\n            const timeRequest = () => addTimeout(delays.send, timeoutHandler, 'send');\n            /* istanbul ignore next: hard to test */\n            if (socket.connecting) {\n                once(socket, 'connect', () => {\n                    once(request, 'upload-complete', timeRequest());\n                });\n            }\n            else {\n                once(request, 'upload-complete', timeRequest());\n            }\n        }\n    });\n    if (typeof delays.response !== 'undefined') {\n        once(request, 'upload-complete', () => {\n            const cancelTimeout = addTimeout(delays.response, timeoutHandler, 'response');\n            once(request, 'response', cancelTimeout);\n        });\n    }\n    return cancelTimeouts;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/got/dist/source/core/utils/timed-out.js?")},"./node_modules/got/dist/source/core/utils/unhandle.js":
/*!*************************************************************!*\
  !*** ./node_modules/got/dist/source/core/utils/unhandle.js ***!
  \*************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\n// When attaching listeners, it\'s very easy to forget about them.\n// Especially if you do error handling and set timeouts.\n// So instead of checking if it\'s proper to throw an error on every timeout ever,\n// use this simple tool which will remove all listeners you have attached.\nexports["default"] = () => {\n    const handlers = [];\n    return {\n        once(origin, event, fn) {\n            origin.once(event, fn);\n            handlers.push({ origin, event, fn });\n        },\n        unhandleAll() {\n            for (const handler of handlers) {\n                const { origin, event, fn } = handler;\n                origin.removeListener(event, fn);\n            }\n            handlers.length = 0;\n        }\n    };\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/got/dist/source/core/utils/unhandle.js?')},"./node_modules/got/dist/source/core/utils/url-to-options.js":
/*!*******************************************************************!*\
  !*** ./node_modules/got/dist/source/core/utils/url-to-options.js ***!
  \*******************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst is_1 = __webpack_require__(/*! @sindresorhus/is */ \"./node_modules/@sindresorhus/is/dist/index.js\");\nexports[\"default\"] = (url) => {\n    // Cast to URL\n    url = url;\n    const options = {\n        protocol: url.protocol,\n        hostname: is_1.default.string(url.hostname) && url.hostname.startsWith('[') ? url.hostname.slice(1, -1) : url.hostname,\n        host: url.host,\n        hash: url.hash,\n        search: url.search,\n        pathname: url.pathname,\n        href: url.href,\n        path: `${url.pathname || ''}${url.search || ''}`\n    };\n    if (is_1.default.string(url.port) && url.port.length > 0) {\n        options.port = Number(url.port);\n    }\n    if (url.username || url.password) {\n        options.auth = `${url.username || ''}:${url.password || ''}`;\n    }\n    return options;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/got/dist/source/core/utils/url-to-options.js?")},"./node_modules/got/dist/source/core/utils/weakable-map.js":
/*!*****************************************************************!*\
  !*** ./node_modules/got/dist/source/core/utils/weakable-map.js ***!
  \*****************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nclass WeakableMap {\n    constructor() {\n        this.weakMap = new WeakMap();\n        this.map = new Map();\n    }\n    set(key, value) {\n        if (typeof key === 'object') {\n            this.weakMap.set(key, value);\n        }\n        else {\n            this.map.set(key, value);\n        }\n    }\n    get(key) {\n        if (typeof key === 'object') {\n            return this.weakMap.get(key);\n        }\n        return this.map.get(key);\n    }\n    has(key) {\n        if (typeof key === 'object') {\n            return this.weakMap.has(key);\n        }\n        return this.map.has(key);\n    }\n}\nexports[\"default\"] = WeakableMap;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/got/dist/source/core/utils/weakable-map.js?")},"./node_modules/got/dist/source/create.js":
/*!************************************************!*\
  !*** ./node_modules/got/dist/source/create.js ***!
  \************************************************/function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.defaultHandler = void 0;\nconst is_1 = __webpack_require__(/*! @sindresorhus/is */ \"./node_modules/@sindresorhus/is/dist/index.js\");\nconst as_promise_1 = __webpack_require__(/*! ./as-promise */ \"./node_modules/got/dist/source/as-promise/index.js\");\nconst create_rejection_1 = __webpack_require__(/*! ./as-promise/create-rejection */ \"./node_modules/got/dist/source/as-promise/create-rejection.js\");\nconst core_1 = __webpack_require__(/*! ./core */ \"./node_modules/got/dist/source/core/index.js\");\nconst deep_freeze_1 = __webpack_require__(/*! ./utils/deep-freeze */ \"./node_modules/got/dist/source/utils/deep-freeze.js\");\nconst errors = {\n    RequestError: as_promise_1.RequestError,\n    CacheError: as_promise_1.CacheError,\n    ReadError: as_promise_1.ReadError,\n    HTTPError: as_promise_1.HTTPError,\n    MaxRedirectsError: as_promise_1.MaxRedirectsError,\n    TimeoutError: as_promise_1.TimeoutError,\n    ParseError: as_promise_1.ParseError,\n    CancelError: as_promise_1.CancelError,\n    UnsupportedProtocolError: as_promise_1.UnsupportedProtocolError,\n    UploadError: as_promise_1.UploadError\n};\n// The `delay` package weighs 10KB (!)\nconst delay = async (ms) => new Promise(resolve => {\n    setTimeout(resolve, ms);\n});\nconst { normalizeArguments } = core_1.default;\nconst mergeOptions = (...sources) => {\n    let mergedOptions;\n    for (const source of sources) {\n        mergedOptions = normalizeArguments(undefined, source, mergedOptions);\n    }\n    return mergedOptions;\n};\nconst getPromiseOrStream = (options) => options.isStream ? new core_1.default(undefined, options) : as_promise_1.default(options);\nconst isGotInstance = (value) => ('defaults' in value && 'options' in value.defaults);\nconst aliases = [\n    'get',\n    'post',\n    'put',\n    'patch',\n    'head',\n    'delete'\n];\nexports.defaultHandler = (options, next) => next(options);\nconst callInitHooks = (hooks, options) => {\n    if (hooks) {\n        for (const hook of hooks) {\n            hook(options);\n        }\n    }\n};\nconst create = (defaults) => {\n    // Proxy properties from next handlers\n    defaults._rawHandlers = defaults.handlers;\n    defaults.handlers = defaults.handlers.map(fn => ((options, next) => {\n        // This will be assigned by assigning result\n        let root;\n        const result = fn(options, newOptions => {\n            root = next(newOptions);\n            return root;\n        });\n        if (result !== root && !options.isStream && root) {\n            const typedResult = result;\n            const { then: promiseThen, catch: promiseCatch, finally: promiseFianlly } = typedResult;\n            Object.setPrototypeOf(typedResult, Object.getPrototypeOf(root));\n            Object.defineProperties(typedResult, Object.getOwnPropertyDescriptors(root));\n            // These should point to the new promise\n            // eslint-disable-next-line promise/prefer-await-to-then\n            typedResult.then = promiseThen;\n            typedResult.catch = promiseCatch;\n            typedResult.finally = promiseFianlly;\n        }\n        return result;\n    }));\n    // Got interface\n    const got = ((url, options = {}, _defaults) => {\n        var _a, _b;\n        let iteration = 0;\n        const iterateHandlers = (newOptions) => {\n            return defaults.handlers[iteration++](newOptions, iteration === defaults.handlers.length ? getPromiseOrStream : iterateHandlers);\n        };\n        // TODO: Remove this in Got 12.\n        if (is_1.default.plainObject(url)) {\n            const mergedOptions = {\n                ...url,\n                ...options\n            };\n            core_1.setNonEnumerableProperties([url, options], mergedOptions);\n            options = mergedOptions;\n            url = undefined;\n        }\n        try {\n            // Call `init` hooks\n            let initHookError;\n            try {\n                callInitHooks(defaults.options.hooks.init, options);\n                callInitHooks((_a = options.hooks) === null || _a === void 0 ? void 0 : _a.init, options);\n            }\n            catch (error) {\n                initHookError = error;\n            }\n            // Normalize options & call handlers\n            const normalizedOptions = normalizeArguments(url, options, _defaults !== null && _defaults !== void 0 ? _defaults : defaults.options);\n            normalizedOptions[core_1.kIsNormalizedAlready] = true;\n            if (initHookError) {\n                throw new as_promise_1.RequestError(initHookError.message, initHookError, normalizedOptions);\n            }\n            return iterateHandlers(normalizedOptions);\n        }\n        catch (error) {\n            if (options.isStream) {\n                throw error;\n            }\n            else {\n                return create_rejection_1.default(error, defaults.options.hooks.beforeError, (_b = options.hooks) === null || _b === void 0 ? void 0 : _b.beforeError);\n            }\n        }\n    });\n    got.extend = (...instancesOrOptions) => {\n        const optionsArray = [defaults.options];\n        let handlers = [...defaults._rawHandlers];\n        let isMutableDefaults;\n        for (const value of instancesOrOptions) {\n            if (isGotInstance(value)) {\n                optionsArray.push(value.defaults.options);\n                handlers.push(...value.defaults._rawHandlers);\n                isMutableDefaults = value.defaults.mutableDefaults;\n            }\n            else {\n                optionsArray.push(value);\n                if ('handlers' in value) {\n                    handlers.push(...value.handlers);\n                }\n                isMutableDefaults = value.mutableDefaults;\n            }\n        }\n        handlers = handlers.filter(handler => handler !== exports.defaultHandler);\n        if (handlers.length === 0) {\n            handlers.push(exports.defaultHandler);\n        }\n        return create({\n            options: mergeOptions(...optionsArray),\n            handlers,\n            mutableDefaults: Boolean(isMutableDefaults)\n        });\n    };\n    // Pagination\n    const paginateEach = (async function* (url, options) {\n        // TODO: Remove this `@ts-expect-error` when upgrading to TypeScript 4.\n        // Error: Argument of type 'Merge<Options, PaginationOptions<T, R>> | undefined' is not assignable to parameter of type 'Options | undefined'.\n        // @ts-expect-error\n        let normalizedOptions = normalizeArguments(url, options, defaults.options);\n        normalizedOptions.resolveBodyOnly = false;\n        const pagination = normalizedOptions.pagination;\n        if (!is_1.default.object(pagination)) {\n            throw new TypeError('`options.pagination` must be implemented');\n        }\n        const all = [];\n        let { countLimit } = pagination;\n        let numberOfRequests = 0;\n        while (numberOfRequests < pagination.requestLimit) {\n            if (numberOfRequests !== 0) {\n                // eslint-disable-next-line no-await-in-loop\n                await delay(pagination.backoff);\n            }\n            // @ts-expect-error FIXME!\n            // TODO: Throw when result is not an instance of Response\n            // eslint-disable-next-line no-await-in-loop\n            const result = (await got(undefined, undefined, normalizedOptions));\n            // eslint-disable-next-line no-await-in-loop\n            const parsed = await pagination.transform(result);\n            const current = [];\n            for (const item of parsed) {\n                if (pagination.filter(item, all, current)) {\n                    if (!pagination.shouldContinue(item, all, current)) {\n                        return;\n                    }\n                    yield item;\n                    if (pagination.stackAllItems) {\n                        all.push(item);\n                    }\n                    current.push(item);\n                    if (--countLimit <= 0) {\n                        return;\n                    }\n                }\n            }\n            const optionsToMerge = pagination.paginate(result, all, current);\n            if (optionsToMerge === false) {\n                return;\n            }\n            if (optionsToMerge === result.request.options) {\n                normalizedOptions = result.request.options;\n            }\n            else if (optionsToMerge !== undefined) {\n                normalizedOptions = normalizeArguments(undefined, optionsToMerge, normalizedOptions);\n            }\n            numberOfRequests++;\n        }\n    });\n    got.paginate = paginateEach;\n    got.paginate.all = (async (url, options) => {\n        const results = [];\n        for await (const item of paginateEach(url, options)) {\n            results.push(item);\n        }\n        return results;\n    });\n    // For those who like very descriptive names\n    got.paginate.each = paginateEach;\n    // Stream API\n    got.stream = ((url, options) => got(url, { ...options, isStream: true }));\n    // Shortcuts\n    for (const method of aliases) {\n        got[method] = ((url, options) => got(url, { ...options, method }));\n        got.stream[method] = ((url, options) => {\n            return got(url, { ...options, method, isStream: true });\n        });\n    }\n    Object.assign(got, errors);\n    Object.defineProperty(got, 'defaults', {\n        value: defaults.mutableDefaults ? defaults : deep_freeze_1.default(defaults),\n        writable: defaults.mutableDefaults,\n        configurable: defaults.mutableDefaults,\n        enumerable: true\n    });\n    got.mergeOptions = mergeOptions;\n    return got;\n};\nexports[\"default\"] = create;\n__exportStar(__webpack_require__(/*! ./types */ \"./node_modules/got/dist/source/types.js\"), exports);\n\n\n//# sourceURL=webpack://txadmin/./node_modules/got/dist/source/create.js?")},"./node_modules/got/dist/source/index.js":
/*!***********************************************!*\
  !*** ./node_modules/got/dist/source/index.js ***!
  \***********************************************/function(module,exports,__webpack_require__){"use strict";eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst url_1 = __webpack_require__(/*! url */ \"url\");\nconst create_1 = __webpack_require__(/*! ./create */ \"./node_modules/got/dist/source/create.js\");\nconst defaults = {\n    options: {\n        method: 'GET',\n        retry: {\n            limit: 2,\n            methods: [\n                'GET',\n                'PUT',\n                'HEAD',\n                'DELETE',\n                'OPTIONS',\n                'TRACE'\n            ],\n            statusCodes: [\n                408,\n                413,\n                429,\n                500,\n                502,\n                503,\n                504,\n                521,\n                522,\n                524\n            ],\n            errorCodes: [\n                'ETIMEDOUT',\n                'ECONNRESET',\n                'EADDRINUSE',\n                'ECONNREFUSED',\n                'EPIPE',\n                'ENOTFOUND',\n                'ENETUNREACH',\n                'EAI_AGAIN'\n            ],\n            maxRetryAfter: undefined,\n            calculateDelay: ({ computedValue }) => computedValue\n        },\n        timeout: {},\n        headers: {\n            'user-agent': 'got (https://github.com/sindresorhus/got)'\n        },\n        hooks: {\n            init: [],\n            beforeRequest: [],\n            beforeRedirect: [],\n            beforeRetry: [],\n            beforeError: [],\n            afterResponse: []\n        },\n        cache: undefined,\n        dnsCache: undefined,\n        decompress: true,\n        throwHttpErrors: true,\n        followRedirect: true,\n        isStream: false,\n        responseType: 'text',\n        resolveBodyOnly: false,\n        maxRedirects: 10,\n        prefixUrl: '',\n        methodRewriting: true,\n        ignoreInvalidCookies: false,\n        context: {},\n        // TODO: Set this to `true` when Got 12 gets released\n        http2: false,\n        allowGetBody: false,\n        https: undefined,\n        pagination: {\n            transform: (response) => {\n                if (response.request.options.responseType === 'json') {\n                    return response.body;\n                }\n                return JSON.parse(response.body);\n            },\n            paginate: response => {\n                if (!Reflect.has(response.headers, 'link')) {\n                    return false;\n                }\n                const items = response.headers.link.split(',');\n                let next;\n                for (const item of items) {\n                    const parsed = item.split(';');\n                    if (parsed[1].includes('next')) {\n                        next = parsed[0].trimStart().trim();\n                        next = next.slice(1, -1);\n                        break;\n                    }\n                }\n                if (next) {\n                    const options = {\n                        url: new url_1.URL(next)\n                    };\n                    return options;\n                }\n                return false;\n            },\n            filter: () => true,\n            shouldContinue: () => true,\n            countLimit: Infinity,\n            backoff: 0,\n            requestLimit: 10000,\n            stackAllItems: true\n        },\n        parseJson: (text) => JSON.parse(text),\n        stringifyJson: (object) => JSON.stringify(object),\n        cacheOptions: {}\n    },\n    handlers: [create_1.defaultHandler],\n    mutableDefaults: false\n};\nconst got = create_1.default(defaults);\nexports[\"default\"] = got;\n// For CommonJS default export support\nmodule.exports = got;\nmodule.exports[\"default\"] = got;\nmodule.exports.__esModule = true; // Workaround for TS issue: https://github.com/sindresorhus/got/pull/1267\n__exportStar(__webpack_require__(/*! ./create */ \"./node_modules/got/dist/source/create.js\"), exports);\n__exportStar(__webpack_require__(/*! ./as-promise */ \"./node_modules/got/dist/source/as-promise/index.js\"), exports);\n\n\n//# sourceURL=webpack://txadmin/./node_modules/got/dist/source/index.js?")},"./node_modules/got/dist/source/types.js":
/*!***********************************************!*\
  !*** ./node_modules/got/dist/source/types.js ***!
  \***********************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\n\n\n//# sourceURL=webpack://txadmin/./node_modules/got/dist/source/types.js?')},"./node_modules/got/dist/source/utils/deep-freeze.js":
/*!***********************************************************!*\
  !*** ./node_modules/got/dist/source/utils/deep-freeze.js ***!
  \***********************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst is_1 = __webpack_require__(/*! @sindresorhus/is */ "./node_modules/@sindresorhus/is/dist/index.js");\nfunction deepFreeze(object) {\n    for (const value of Object.values(object)) {\n        if (is_1.default.plainObject(value) || is_1.default.array(value)) {\n            deepFreeze(value);\n        }\n    }\n    return Object.freeze(object);\n}\nexports["default"] = deepFreeze;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/got/dist/source/utils/deep-freeze.js?')},"./node_modules/got/dist/source/utils/deprecation-warning.js":
/*!*******************************************************************!*\
  !*** ./node_modules/got/dist/source/utils/deprecation-warning.js ***!
  \*******************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst alreadyWarned = new Set();\nexports["default"] = (message) => {\n    if (alreadyWarned.has(message)) {\n        return;\n    }\n    alreadyWarned.add(message);\n    // @ts-expect-error Missing types.\n    process.emitWarning(`Got: ${message}`, {\n        type: \'DeprecationWarning\'\n    });\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/got/dist/source/utils/deprecation-warning.js?')},"./node_modules/graceful-fs/clone.js":
/*!*******************************************!*\
  !*** ./node_modules/graceful-fs/clone.js ***!
  \*******************************************/module=>{"use strict";eval("\n\nmodule.exports = clone\n\nvar getPrototypeOf = Object.getPrototypeOf || function (obj) {\n  return obj.__proto__\n}\n\nfunction clone (obj) {\n  if (obj === null || typeof obj !== 'object')\n    return obj\n\n  if (obj instanceof Object)\n    var copy = { __proto__: getPrototypeOf(obj) }\n  else\n    var copy = Object.create(null)\n\n  Object.getOwnPropertyNames(obj).forEach(function (key) {\n    Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key))\n  })\n\n  return copy\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/graceful-fs/clone.js?")},"./node_modules/graceful-fs/graceful-fs.js":
/*!*************************************************!*\
  !*** ./node_modules/graceful-fs/graceful-fs.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var fs = __webpack_require__(/*! fs */ \"fs\")\nvar polyfills = __webpack_require__(/*! ./polyfills.js */ \"./node_modules/graceful-fs/polyfills.js\")\nvar legacy = __webpack_require__(/*! ./legacy-streams.js */ \"./node_modules/graceful-fs/legacy-streams.js\")\nvar clone = __webpack_require__(/*! ./clone.js */ \"./node_modules/graceful-fs/clone.js\")\n\nvar util = __webpack_require__(/*! util */ \"util\")\n\n/* istanbul ignore next - node 0.x polyfill */\nvar gracefulQueue\nvar previousSymbol\n\n/* istanbul ignore else - node 0.x polyfill */\nif (typeof Symbol === 'function' && typeof Symbol.for === 'function') {\n  gracefulQueue = Symbol.for('graceful-fs.queue')\n  // This is used in testing by future versions\n  previousSymbol = Symbol.for('graceful-fs.previous')\n} else {\n  gracefulQueue = '___graceful-fs.queue'\n  previousSymbol = '___graceful-fs.previous'\n}\n\nfunction noop () {}\n\nfunction publishQueue(context, queue) {\n  Object.defineProperty(context, gracefulQueue, {\n    get: function() {\n      return queue\n    }\n  })\n}\n\nvar debug = noop\nif (util.debuglog)\n  debug = util.debuglog('gfs4')\nelse if (/\\bgfs4\\b/i.test(({\"APP_ENV\":\"webpack\"}).NODE_DEBUG || ''))\n  debug = function() {\n    var m = util.format.apply(util, arguments)\n    m = 'GFS4: ' + m.split(/\\n/).join('\\nGFS4: ')\n    console.error(m)\n  }\n\n// Once time initialization\nif (!fs[gracefulQueue]) {\n  // This queue can be shared by multiple loaded instances\n  var queue = global[gracefulQueue] || []\n  publishQueue(fs, queue)\n\n  // Patch fs.close/closeSync to shared queue version, because we need\n  // to retry() whenever a close happens *anywhere* in the program.\n  // This is essential when multiple graceful-fs instances are\n  // in play at the same time.\n  fs.close = (function (fs$close) {\n    function close (fd, cb) {\n      return fs$close.call(fs, fd, function (err) {\n        // This function uses the graceful-fs shared queue\n        if (!err) {\n          resetQueue()\n        }\n\n        if (typeof cb === 'function')\n          cb.apply(this, arguments)\n      })\n    }\n\n    Object.defineProperty(close, previousSymbol, {\n      value: fs$close\n    })\n    return close\n  })(fs.close)\n\n  fs.closeSync = (function (fs$closeSync) {\n    function closeSync (fd) {\n      // This function uses the graceful-fs shared queue\n      fs$closeSync.apply(fs, arguments)\n      resetQueue()\n    }\n\n    Object.defineProperty(closeSync, previousSymbol, {\n      value: fs$closeSync\n    })\n    return closeSync\n  })(fs.closeSync)\n\n  if (/\\bgfs4\\b/i.test(({\"APP_ENV\":\"webpack\"}).NODE_DEBUG || '')) {\n    process.on('exit', function() {\n      debug(fs[gracefulQueue])\n      __webpack_require__(/*! assert */ \"assert\").equal(fs[gracefulQueue].length, 0)\n    })\n  }\n}\n\nif (!global[gracefulQueue]) {\n  publishQueue(global, fs[gracefulQueue]);\n}\n\nmodule.exports = patch(clone(fs))\nif (({\"APP_ENV\":\"webpack\"}).TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {\n    module.exports = patch(fs)\n    fs.__patched = true;\n}\n\nfunction patch (fs) {\n  // Everything that references the open() function needs to be in here\n  polyfills(fs)\n  fs.gracefulify = patch\n\n  fs.createReadStream = createReadStream\n  fs.createWriteStream = createWriteStream\n  var fs$readFile = fs.readFile\n  fs.readFile = readFile\n  function readFile (path, options, cb) {\n    if (typeof options === 'function')\n      cb = options, options = null\n\n    return go$readFile(path, options, cb)\n\n    function go$readFile (path, options, cb, startTime) {\n      return fs$readFile(path, options, function (err) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  var fs$writeFile = fs.writeFile\n  fs.writeFile = writeFile\n  function writeFile (path, data, options, cb) {\n    if (typeof options === 'function')\n      cb = options, options = null\n\n    return go$writeFile(path, data, options, cb)\n\n    function go$writeFile (path, data, options, cb, startTime) {\n      return fs$writeFile(path, data, options, function (err) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  var fs$appendFile = fs.appendFile\n  if (fs$appendFile)\n    fs.appendFile = appendFile\n  function appendFile (path, data, options, cb) {\n    if (typeof options === 'function')\n      cb = options, options = null\n\n    return go$appendFile(path, data, options, cb)\n\n    function go$appendFile (path, data, options, cb, startTime) {\n      return fs$appendFile(path, data, options, function (err) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  var fs$copyFile = fs.copyFile\n  if (fs$copyFile)\n    fs.copyFile = copyFile\n  function copyFile (src, dest, flags, cb) {\n    if (typeof flags === 'function') {\n      cb = flags\n      flags = 0\n    }\n    return go$copyFile(src, dest, flags, cb)\n\n    function go$copyFile (src, dest, flags, cb, startTime) {\n      return fs$copyFile(src, dest, flags, function (err) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  var fs$readdir = fs.readdir\n  fs.readdir = readdir\n  function readdir (path, options, cb) {\n    if (typeof options === 'function')\n      cb = options, options = null\n\n    return go$readdir(path, options, cb)\n\n    function go$readdir (path, options, cb, startTime) {\n      return fs$readdir(path, options, function (err, files) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$readdir, [path, options, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (files && files.sort)\n            files.sort()\n\n          if (typeof cb === 'function')\n            cb.call(this, err, files)\n        }\n      })\n    }\n  }\n\n  if (process.version.substr(0, 4) === 'v0.8') {\n    var legStreams = legacy(fs)\n    ReadStream = legStreams.ReadStream\n    WriteStream = legStreams.WriteStream\n  }\n\n  var fs$ReadStream = fs.ReadStream\n  if (fs$ReadStream) {\n    ReadStream.prototype = Object.create(fs$ReadStream.prototype)\n    ReadStream.prototype.open = ReadStream$open\n  }\n\n  var fs$WriteStream = fs.WriteStream\n  if (fs$WriteStream) {\n    WriteStream.prototype = Object.create(fs$WriteStream.prototype)\n    WriteStream.prototype.open = WriteStream$open\n  }\n\n  Object.defineProperty(fs, 'ReadStream', {\n    get: function () {\n      return ReadStream\n    },\n    set: function (val) {\n      ReadStream = val\n    },\n    enumerable: true,\n    configurable: true\n  })\n  Object.defineProperty(fs, 'WriteStream', {\n    get: function () {\n      return WriteStream\n    },\n    set: function (val) {\n      WriteStream = val\n    },\n    enumerable: true,\n    configurable: true\n  })\n\n  // legacy names\n  var FileReadStream = ReadStream\n  Object.defineProperty(fs, 'FileReadStream', {\n    get: function () {\n      return FileReadStream\n    },\n    set: function (val) {\n      FileReadStream = val\n    },\n    enumerable: true,\n    configurable: true\n  })\n  var FileWriteStream = WriteStream\n  Object.defineProperty(fs, 'FileWriteStream', {\n    get: function () {\n      return FileWriteStream\n    },\n    set: function (val) {\n      FileWriteStream = val\n    },\n    enumerable: true,\n    configurable: true\n  })\n\n  function ReadStream (path, options) {\n    if (this instanceof ReadStream)\n      return fs$ReadStream.apply(this, arguments), this\n    else\n      return ReadStream.apply(Object.create(ReadStream.prototype), arguments)\n  }\n\n  function ReadStream$open () {\n    var that = this\n    open(that.path, that.flags, that.mode, function (err, fd) {\n      if (err) {\n        if (that.autoClose)\n          that.destroy()\n\n        that.emit('error', err)\n      } else {\n        that.fd = fd\n        that.emit('open', fd)\n        that.read()\n      }\n    })\n  }\n\n  function WriteStream (path, options) {\n    if (this instanceof WriteStream)\n      return fs$WriteStream.apply(this, arguments), this\n    else\n      return WriteStream.apply(Object.create(WriteStream.prototype), arguments)\n  }\n\n  function WriteStream$open () {\n    var that = this\n    open(that.path, that.flags, that.mode, function (err, fd) {\n      if (err) {\n        that.destroy()\n        that.emit('error', err)\n      } else {\n        that.fd = fd\n        that.emit('open', fd)\n      }\n    })\n  }\n\n  function createReadStream (path, options) {\n    return new fs.ReadStream(path, options)\n  }\n\n  function createWriteStream (path, options) {\n    return new fs.WriteStream(path, options)\n  }\n\n  var fs$open = fs.open\n  fs.open = open\n  function open (path, flags, mode, cb) {\n    if (typeof mode === 'function')\n      cb = mode, mode = null\n\n    return go$open(path, flags, mode, cb)\n\n    function go$open (path, flags, mode, cb, startTime) {\n      return fs$open(path, flags, mode, function (err, fd) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  return fs\n}\n\nfunction enqueue (elem) {\n  debug('ENQUEUE', elem[0].name, elem[1])\n  fs[gracefulQueue].push(elem)\n  retry()\n}\n\n// keep track of the timeout between retry() calls\nvar retryTimer\n\n// reset the startTime and lastTime to now\n// this resets the start of the 60 second overall timeout as well as the\n// delay between attempts so that we'll retry these jobs sooner\nfunction resetQueue () {\n  var now = Date.now()\n  for (var i = 0; i < fs[gracefulQueue].length; ++i) {\n    // entries that are only a length of 2 are from an older version, don't\n    // bother modifying those since they'll be retried anyway.\n    if (fs[gracefulQueue][i].length > 2) {\n      fs[gracefulQueue][i][3] = now // startTime\n      fs[gracefulQueue][i][4] = now // lastTime\n    }\n  }\n  // call retry to make sure we're actively processing the queue\n  retry()\n}\n\nfunction retry () {\n  // clear the timer and remove it to help prevent unintended concurrency\n  clearTimeout(retryTimer)\n  retryTimer = undefined\n\n  if (fs[gracefulQueue].length === 0)\n    return\n\n  var elem = fs[gracefulQueue].shift()\n  var fn = elem[0]\n  var args = elem[1]\n  // these items may be unset if they were added by an older graceful-fs\n  var err = elem[2]\n  var startTime = elem[3]\n  var lastTime = elem[4]\n\n  // if we don't have a startTime we have no way of knowing if we've waited\n  // long enough, so go ahead and retry this item now\n  if (startTime === undefined) {\n    debug('RETRY', fn.name, args)\n    fn.apply(null, args)\n  } else if (Date.now() - startTime >= 60000) {\n    // it's been more than 60 seconds total, bail now\n    debug('TIMEOUT', fn.name, args)\n    var cb = args.pop()\n    if (typeof cb === 'function')\n      cb.call(null, err)\n  } else {\n    // the amount of time between the last attempt and right now\n    var sinceAttempt = Date.now() - lastTime\n    // the amount of time between when we first tried, and when we last tried\n    // rounded up to at least 1\n    var sinceStart = Math.max(lastTime - startTime, 1)\n    // backoff. wait longer than the total time we've been retrying, but only\n    // up to a maximum of 100ms\n    var desiredDelay = Math.min(sinceStart * 1.2, 100)\n    // it's been long enough since the last retry, do it again\n    if (sinceAttempt >= desiredDelay) {\n      debug('RETRY', fn.name, args)\n      fn.apply(null, args.concat([startTime]))\n    } else {\n      // if we can't do this job yet, push it to the end of the queue\n      // and let the next iteration check again\n      fs[gracefulQueue].push(elem)\n    }\n  }\n\n  // schedule our next run if one isn't already scheduled\n  if (retryTimer === undefined) {\n    retryTimer = setTimeout(retry, 0)\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/graceful-fs/graceful-fs.js?")},"./node_modules/graceful-fs/legacy-streams.js":
/*!****************************************************!*\
  !*** ./node_modules/graceful-fs/legacy-streams.js ***!
  \****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var Stream = (__webpack_require__(/*! stream */ \"stream\").Stream)\n\nmodule.exports = legacy\n\nfunction legacy (fs) {\n  return {\n    ReadStream: ReadStream,\n    WriteStream: WriteStream\n  }\n\n  function ReadStream (path, options) {\n    if (!(this instanceof ReadStream)) return new ReadStream(path, options);\n\n    Stream.call(this);\n\n    var self = this;\n\n    this.path = path;\n    this.fd = null;\n    this.readable = true;\n    this.paused = false;\n\n    this.flags = 'r';\n    this.mode = 438; /*=0666*/\n    this.bufferSize = 64 * 1024;\n\n    options = options || {};\n\n    // Mixin options into this\n    var keys = Object.keys(options);\n    for (var index = 0, length = keys.length; index < length; index++) {\n      var key = keys[index];\n      this[key] = options[key];\n    }\n\n    if (this.encoding) this.setEncoding(this.encoding);\n\n    if (this.start !== undefined) {\n      if ('number' !== typeof this.start) {\n        throw TypeError('start must be a Number');\n      }\n      if (this.end === undefined) {\n        this.end = Infinity;\n      } else if ('number' !== typeof this.end) {\n        throw TypeError('end must be a Number');\n      }\n\n      if (this.start > this.end) {\n        throw new Error('start must be <= end');\n      }\n\n      this.pos = this.start;\n    }\n\n    if (this.fd !== null) {\n      process.nextTick(function() {\n        self._read();\n      });\n      return;\n    }\n\n    fs.open(this.path, this.flags, this.mode, function (err, fd) {\n      if (err) {\n        self.emit('error', err);\n        self.readable = false;\n        return;\n      }\n\n      self.fd = fd;\n      self.emit('open', fd);\n      self._read();\n    })\n  }\n\n  function WriteStream (path, options) {\n    if (!(this instanceof WriteStream)) return new WriteStream(path, options);\n\n    Stream.call(this);\n\n    this.path = path;\n    this.fd = null;\n    this.writable = true;\n\n    this.flags = 'w';\n    this.encoding = 'binary';\n    this.mode = 438; /*=0666*/\n    this.bytesWritten = 0;\n\n    options = options || {};\n\n    // Mixin options into this\n    var keys = Object.keys(options);\n    for (var index = 0, length = keys.length; index < length; index++) {\n      var key = keys[index];\n      this[key] = options[key];\n    }\n\n    if (this.start !== undefined) {\n      if ('number' !== typeof this.start) {\n        throw TypeError('start must be a Number');\n      }\n      if (this.start < 0) {\n        throw new Error('start must be >= zero');\n      }\n\n      this.pos = this.start;\n    }\n\n    this.busy = false;\n    this._queue = [];\n\n    if (this.fd === null) {\n      this._open = fs.open;\n      this._queue.push([this._open, this.path, this.flags, this.mode, undefined]);\n      this.flush();\n    }\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/graceful-fs/legacy-streams.js?")},"./node_modules/graceful-fs/polyfills.js":
/*!***********************************************!*\
  !*** ./node_modules/graceful-fs/polyfills.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var constants = __webpack_require__(/*! constants */ "constants")\n\nvar origCwd = process.cwd\nvar cwd = null\n\nvar platform = ({"APP_ENV":"webpack"}).GRACEFUL_FS_PLATFORM || process.platform\n\nprocess.cwd = function() {\n  if (!cwd)\n    cwd = origCwd.call(process)\n  return cwd\n}\ntry {\n  process.cwd()\n} catch (er) {}\n\n// This check is needed until node.js 12 is required\nif (typeof process.chdir === \'function\') {\n  var chdir = process.chdir\n  process.chdir = function (d) {\n    cwd = null\n    chdir.call(process, d)\n  }\n  if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir)\n}\n\nmodule.exports = patch\n\nfunction patch (fs) {\n  // (re-)implement some things that are known busted or missing.\n\n  // lchmod, broken prior to 0.6.2\n  // back-port the fix here.\n  if (constants.hasOwnProperty(\'O_SYMLINK\') &&\n      process.version.match(/^v0\\.6\\.[0-2]|^v0\\.5\\./)) {\n    patchLchmod(fs)\n  }\n\n  // lutimes implementation, or no-op\n  if (!fs.lutimes) {\n    patchLutimes(fs)\n  }\n\n  // https://github.com/isaacs/node-graceful-fs/issues/4\n  // Chown should not fail on einval or eperm if non-root.\n  // It should not fail on enosys ever, as this just indicates\n  // that a fs doesn\'t support the intended operation.\n\n  fs.chown = chownFix(fs.chown)\n  fs.fchown = chownFix(fs.fchown)\n  fs.lchown = chownFix(fs.lchown)\n\n  fs.chmod = chmodFix(fs.chmod)\n  fs.fchmod = chmodFix(fs.fchmod)\n  fs.lchmod = chmodFix(fs.lchmod)\n\n  fs.chownSync = chownFixSync(fs.chownSync)\n  fs.fchownSync = chownFixSync(fs.fchownSync)\n  fs.lchownSync = chownFixSync(fs.lchownSync)\n\n  fs.chmodSync = chmodFixSync(fs.chmodSync)\n  fs.fchmodSync = chmodFixSync(fs.fchmodSync)\n  fs.lchmodSync = chmodFixSync(fs.lchmodSync)\n\n  fs.stat = statFix(fs.stat)\n  fs.fstat = statFix(fs.fstat)\n  fs.lstat = statFix(fs.lstat)\n\n  fs.statSync = statFixSync(fs.statSync)\n  fs.fstatSync = statFixSync(fs.fstatSync)\n  fs.lstatSync = statFixSync(fs.lstatSync)\n\n  // if lchmod/lchown do not exist, then make them no-ops\n  if (!fs.lchmod) {\n    fs.lchmod = function (path, mode, cb) {\n      if (cb) process.nextTick(cb)\n    }\n    fs.lchmodSync = function () {}\n  }\n  if (!fs.lchown) {\n    fs.lchown = function (path, uid, gid, cb) {\n      if (cb) process.nextTick(cb)\n    }\n    fs.lchownSync = function () {}\n  }\n\n  // on Windows, A/V software can lock the directory, causing this\n  // to fail with an EACCES or EPERM if the directory contains newly\n  // created files.  Try again on failure, for up to 60 seconds.\n\n  // Set the timeout this long because some Windows Anti-Virus, such as Parity\n  // bit9, may lock files for up to a minute, causing npm package install\n  // failures. Also, take care to yield the scheduler. Windows scheduling gives\n  // CPU to a busy looping process, which can cause the program causing the lock\n  // contention to be starved of CPU by node, so the contention doesn\'t resolve.\n  if (platform === "win32") {\n    fs.rename = (function (fs$rename) { return function (from, to, cb) {\n      var start = Date.now()\n      var backoff = 0;\n      fs$rename(from, to, function CB (er) {\n        if (er\n            && (er.code === "EACCES" || er.code === "EPERM")\n            && Date.now() - start < 60000) {\n          setTimeout(function() {\n            fs.stat(to, function (stater, st) {\n              if (stater && stater.code === "ENOENT")\n                fs$rename(from, to, CB);\n              else\n                cb(er)\n            })\n          }, backoff)\n          if (backoff < 100)\n            backoff += 10;\n          return;\n        }\n        if (cb) cb(er)\n      })\n    }})(fs.rename)\n  }\n\n  // if read() returns EAGAIN, then just try it again.\n  fs.read = (function (fs$read) {\n    function read (fd, buffer, offset, length, position, callback_) {\n      var callback\n      if (callback_ && typeof callback_ === \'function\') {\n        var eagCounter = 0\n        callback = function (er, _, __) {\n          if (er && er.code === \'EAGAIN\' && eagCounter < 10) {\n            eagCounter ++\n            return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n          }\n          callback_.apply(this, arguments)\n        }\n      }\n      return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n    }\n\n    // This ensures `util.promisify` works as it does for native `fs.read`.\n    if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read)\n    return read\n  })(fs.read)\n\n  fs.readSync = (function (fs$readSync) { return function (fd, buffer, offset, length, position) {\n    var eagCounter = 0\n    while (true) {\n      try {\n        return fs$readSync.call(fs, fd, buffer, offset, length, position)\n      } catch (er) {\n        if (er.code === \'EAGAIN\' && eagCounter < 10) {\n          eagCounter ++\n          continue\n        }\n        throw er\n      }\n    }\n  }})(fs.readSync)\n\n  function patchLchmod (fs) {\n    fs.lchmod = function (path, mode, callback) {\n      fs.open( path\n             , constants.O_WRONLY | constants.O_SYMLINK\n             , mode\n             , function (err, fd) {\n        if (err) {\n          if (callback) callback(err)\n          return\n        }\n        // prefer to return the chmod error, if one occurs,\n        // but still try to close, and report closing errors if they occur.\n        fs.fchmod(fd, mode, function (err) {\n          fs.close(fd, function(err2) {\n            if (callback) callback(err || err2)\n          })\n        })\n      })\n    }\n\n    fs.lchmodSync = function (path, mode) {\n      var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)\n\n      // prefer to return the chmod error, if one occurs,\n      // but still try to close, and report closing errors if they occur.\n      var threw = true\n      var ret\n      try {\n        ret = fs.fchmodSync(fd, mode)\n        threw = false\n      } finally {\n        if (threw) {\n          try {\n            fs.closeSync(fd)\n          } catch (er) {}\n        } else {\n          fs.closeSync(fd)\n        }\n      }\n      return ret\n    }\n  }\n\n  function patchLutimes (fs) {\n    if (constants.hasOwnProperty("O_SYMLINK")) {\n      fs.lutimes = function (path, at, mt, cb) {\n        fs.open(path, constants.O_SYMLINK, function (er, fd) {\n          if (er) {\n            if (cb) cb(er)\n            return\n          }\n          fs.futimes(fd, at, mt, function (er) {\n            fs.close(fd, function (er2) {\n              if (cb) cb(er || er2)\n            })\n          })\n        })\n      }\n\n      fs.lutimesSync = function (path, at, mt) {\n        var fd = fs.openSync(path, constants.O_SYMLINK)\n        var ret\n        var threw = true\n        try {\n          ret = fs.futimesSync(fd, at, mt)\n          threw = false\n        } finally {\n          if (threw) {\n            try {\n              fs.closeSync(fd)\n            } catch (er) {}\n          } else {\n            fs.closeSync(fd)\n          }\n        }\n        return ret\n      }\n\n    } else {\n      fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }\n      fs.lutimesSync = function () {}\n    }\n  }\n\n  function chmodFix (orig) {\n    if (!orig) return orig\n    return function (target, mode, cb) {\n      return orig.call(fs, target, mode, function (er) {\n        if (chownErOk(er)) er = null\n        if (cb) cb.apply(this, arguments)\n      })\n    }\n  }\n\n  function chmodFixSync (orig) {\n    if (!orig) return orig\n    return function (target, mode) {\n      try {\n        return orig.call(fs, target, mode)\n      } catch (er) {\n        if (!chownErOk(er)) throw er\n      }\n    }\n  }\n\n\n  function chownFix (orig) {\n    if (!orig) return orig\n    return function (target, uid, gid, cb) {\n      return orig.call(fs, target, uid, gid, function (er) {\n        if (chownErOk(er)) er = null\n        if (cb) cb.apply(this, arguments)\n      })\n    }\n  }\n\n  function chownFixSync (orig) {\n    if (!orig) return orig\n    return function (target, uid, gid) {\n      try {\n        return orig.call(fs, target, uid, gid)\n      } catch (er) {\n        if (!chownErOk(er)) throw er\n      }\n    }\n  }\n\n  function statFix (orig) {\n    if (!orig) return orig\n    // Older versions of Node erroneously returned signed integers for\n    // uid + gid.\n    return function (target, options, cb) {\n      if (typeof options === \'function\') {\n        cb = options\n        options = null\n      }\n      function callback (er, stats) {\n        if (stats) {\n          if (stats.uid < 0) stats.uid += 0x100000000\n          if (stats.gid < 0) stats.gid += 0x100000000\n        }\n        if (cb) cb.apply(this, arguments)\n      }\n      return options ? orig.call(fs, target, options, callback)\n        : orig.call(fs, target, callback)\n    }\n  }\n\n  function statFixSync (orig) {\n    if (!orig) return orig\n    // Older versions of Node erroneously returned signed integers for\n    // uid + gid.\n    return function (target, options) {\n      var stats = options ? orig.call(fs, target, options)\n        : orig.call(fs, target)\n      if (stats) {\n        if (stats.uid < 0) stats.uid += 0x100000000\n        if (stats.gid < 0) stats.gid += 0x100000000\n      }\n      return stats;\n    }\n  }\n\n  // ENOSYS means that the fs doesn\'t support the op. Just ignore\n  // that, because it doesn\'t matter.\n  //\n  // if there\'s no getuid, or if getuid() is something other\n  // than 0, and the error is EINVAL or EPERM, then just ignore\n  // it.\n  //\n  // This specific case is a silent failure in cp, install, tar,\n  // and most other unix tools that manage permissions.\n  //\n  // When running as root, or if other types of errors are\n  // encountered, then it\'s strict.\n  function chownErOk (er) {\n    if (!er)\n      return true\n\n    if (er.code === "ENOSYS")\n      return true\n\n    var nonroot = !process.getuid || process.getuid() !== 0\n    if (nonroot) {\n      if (er.code === "EINVAL" || er.code === "EPERM")\n        return true\n    }\n\n    return false\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/graceful-fs/polyfills.js?')},"./node_modules/has-flag/index.js":
/*!****************************************!*\
  !*** ./node_modules/has-flag/index.js ***!
  \****************************************/module=>{"use strict";eval("\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/has-flag/index.js?")},"./node_modules/has-symbols/index.js":
/*!*******************************************!*\
  !*** ./node_modules/has-symbols/index.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = __webpack_require__(/*! ./shams */ \"./node_modules/has-symbols/shams.js\");\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/has-symbols/index.js?")},"./node_modules/has-symbols/shams.js":
/*!*******************************************!*\
  !*** ./node_modules/has-symbols/shams.js ***!
  \*******************************************/module=>{"use strict";eval("\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/has-symbols/shams.js?")},"./node_modules/has-tostringtag/shams.js":
/*!***********************************************!*\
  !*** ./node_modules/has-tostringtag/shams.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nvar hasSymbols = __webpack_require__(/*! has-symbols/shams */ "./node_modules/has-symbols/shams.js");\n\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/has-tostringtag/shams.js?')},"./node_modules/has/src/index.js":
/*!***************************************!*\
  !*** ./node_modules/has/src/index.js ***!
  \***************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nvar bind = __webpack_require__(/*! function-bind */ "./node_modules/function-bind/index.js");\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n\n\n//# sourceURL=webpack://txadmin/./node_modules/has/src/index.js?')},"./node_modules/http-assert/index.js":
/*!*******************************************!*\
  !*** ./node_modules/http-assert/index.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var createError = __webpack_require__(/*! http-errors */ "./node_modules/http-assert/node_modules/http-errors/index.js")\nvar eql = __webpack_require__(/*! deep-equal */ "./node_modules/deep-equal/index.js")\n\nmodule.exports = assert\n\nfunction assert (value, status, msg, opts) {\n  if (value) return\n  throw createError(status, msg, opts)\n}\n\nassert.equal = function (a, b, status, msg, opts) {\n  assert(a == b, status, msg, opts) // eslint-disable-line eqeqeq\n}\n\nassert.notEqual = function (a, b, status, msg, opts) {\n  assert(a != b, status, msg, opts) // eslint-disable-line eqeqeq\n}\n\nassert.ok = function (value, status, msg, opts) {\n  assert(value, status, msg, opts)\n}\n\nassert.strictEqual = function (a, b, status, msg, opts) {\n  assert(a === b, status, msg, opts)\n}\n\nassert.notStrictEqual = function (a, b, status, msg, opts) {\n  assert(a !== b, status, msg, opts)\n}\n\nassert.deepEqual = function (a, b, status, msg, opts) {\n  assert(eql(a, b), status, msg, opts)\n}\n\nassert.notDeepEqual = function (a, b, status, msg, opts) {\n  assert(!eql(a, b), status, msg, opts)\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/http-assert/index.js?')},"./node_modules/http-assert/node_modules/http-errors/index.js":
/*!********************************************************************!*\
  !*** ./node_modules/http-assert/node_modules/http-errors/index.js ***!
  \********************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("/*!\n * http-errors\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar deprecate = __webpack_require__(/*! depd */ \"./node_modules/depd/index.js\")('http-errors')\nvar setPrototypeOf = __webpack_require__(/*! setprototypeof */ \"./node_modules/http-assert/node_modules/setprototypeof/index.js\")\nvar statuses = __webpack_require__(/*! statuses */ \"./node_modules/statuses/index.js\")\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits.js\")\nvar toIdentifier = __webpack_require__(/*! toidentifier */ \"./node_modules/toidentifier/index.js\")\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = createError\nmodule.exports.HttpError = createHttpErrorConstructor()\n\n// Populate exports for all constructors\npopulateConstructorExports(module.exports, statuses.codes, module.exports.HttpError)\n\n/**\n * Get the code class of a status code.\n * @private\n */\n\nfunction codeClass (status) {\n  return Number(String(status).charAt(0) + '00')\n}\n\n/**\n * Create a new HTTP Error.\n *\n * @returns {Error}\n * @public\n */\n\nfunction createError () {\n  // so much arity going on ~_~\n  var err\n  var msg\n  var status = 500\n  var props = {}\n  for (var i = 0; i < arguments.length; i++) {\n    var arg = arguments[i]\n    if (arg instanceof Error) {\n      err = arg\n      status = err.status || err.statusCode || status\n      continue\n    }\n    switch (typeof arg) {\n      case 'string':\n        msg = arg\n        break\n      case 'number':\n        status = arg\n        if (i !== 0) {\n          deprecate('non-first-argument status code; replace with createError(' + arg + ', ...)')\n        }\n        break\n      case 'object':\n        props = arg\n        break\n    }\n  }\n\n  if (typeof status === 'number' && (status < 400 || status >= 600)) {\n    deprecate('non-error status code; use only 4xx or 5xx status codes')\n  }\n\n  if (typeof status !== 'number' ||\n    (!statuses[status] && (status < 400 || status >= 600))) {\n    status = 500\n  }\n\n  // constructor\n  var HttpError = createError[status] || createError[codeClass(status)]\n\n  if (!err) {\n    // create error\n    err = HttpError\n      ? new HttpError(msg)\n      : new Error(msg || statuses[status])\n    Error.captureStackTrace(err, createError)\n  }\n\n  if (!HttpError || !(err instanceof HttpError) || err.status !== status) {\n    // add properties to generic error\n    err.expose = status < 500\n    err.status = err.statusCode = status\n  }\n\n  for (var key in props) {\n    if (key !== 'status' && key !== 'statusCode') {\n      err[key] = props[key]\n    }\n  }\n\n  return err\n}\n\n/**\n * Create HTTP error abstract base class.\n * @private\n */\n\nfunction createHttpErrorConstructor () {\n  function HttpError () {\n    throw new TypeError('cannot construct abstract class')\n  }\n\n  inherits(HttpError, Error)\n\n  return HttpError\n}\n\n/**\n * Create a constructor for a client error.\n * @private\n */\n\nfunction createClientErrorConstructor (HttpError, name, code) {\n  var className = name.match(/Error$/) ? name : name + 'Error'\n\n  function ClientError (message) {\n    // create the error object\n    var msg = message != null ? message : statuses[code]\n    var err = new Error(msg)\n\n    // capture a stack trace to the construction point\n    Error.captureStackTrace(err, ClientError)\n\n    // adjust the [[Prototype]]\n    setPrototypeOf(err, ClientError.prototype)\n\n    // redefine the error message\n    Object.defineProperty(err, 'message', {\n      enumerable: true,\n      configurable: true,\n      value: msg,\n      writable: true\n    })\n\n    // redefine the error name\n    Object.defineProperty(err, 'name', {\n      enumerable: false,\n      configurable: true,\n      value: className,\n      writable: true\n    })\n\n    return err\n  }\n\n  inherits(ClientError, HttpError)\n  nameFunc(ClientError, className)\n\n  ClientError.prototype.status = code\n  ClientError.prototype.statusCode = code\n  ClientError.prototype.expose = true\n\n  return ClientError\n}\n\n/**\n * Create a constructor for a server error.\n * @private\n */\n\nfunction createServerErrorConstructor (HttpError, name, code) {\n  var className = name.match(/Error$/) ? name : name + 'Error'\n\n  function ServerError (message) {\n    // create the error object\n    var msg = message != null ? message : statuses[code]\n    var err = new Error(msg)\n\n    // capture a stack trace to the construction point\n    Error.captureStackTrace(err, ServerError)\n\n    // adjust the [[Prototype]]\n    setPrototypeOf(err, ServerError.prototype)\n\n    // redefine the error message\n    Object.defineProperty(err, 'message', {\n      enumerable: true,\n      configurable: true,\n      value: msg,\n      writable: true\n    })\n\n    // redefine the error name\n    Object.defineProperty(err, 'name', {\n      enumerable: false,\n      configurable: true,\n      value: className,\n      writable: true\n    })\n\n    return err\n  }\n\n  inherits(ServerError, HttpError)\n  nameFunc(ServerError, className)\n\n  ServerError.prototype.status = code\n  ServerError.prototype.statusCode = code\n  ServerError.prototype.expose = false\n\n  return ServerError\n}\n\n/**\n * Set the name of a function, if possible.\n * @private\n */\n\nfunction nameFunc (func, name) {\n  var desc = Object.getOwnPropertyDescriptor(func, 'name')\n\n  if (desc && desc.configurable) {\n    desc.value = name\n    Object.defineProperty(func, 'name', desc)\n  }\n}\n\n/**\n * Populate the exports object with constructors for every error class.\n * @private\n */\n\nfunction populateConstructorExports (exports, codes, HttpError) {\n  codes.forEach(function forEachCode (code) {\n    var CodeError\n    var name = toIdentifier(statuses[code])\n\n    switch (codeClass(code)) {\n      case 400:\n        CodeError = createClientErrorConstructor(HttpError, name, code)\n        break\n      case 500:\n        CodeError = createServerErrorConstructor(HttpError, name, code)\n        break\n    }\n\n    if (CodeError) {\n      // export the constructor\n      exports[code] = CodeError\n      exports[name] = CodeError\n    }\n  })\n\n  // backwards-compatibility\n  exports[\"I'mateapot\"] = deprecate.function(exports.ImATeapot,\n    '\"I\\'mateapot\"; use \"ImATeapot\" instead')\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/http-assert/node_modules/http-errors/index.js?")},"./node_modules/http-assert/node_modules/setprototypeof/index.js":
/*!***********************************************************************!*\
  !*** ./node_modules/http-assert/node_modules/setprototypeof/index.js ***!
  \***********************************************************************/module=>{"use strict";eval("\n/* eslint no-proto: 0 */\nmodule.exports = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties)\n\nfunction setProtoOf (obj, proto) {\n  obj.__proto__ = proto\n  return obj\n}\n\nfunction mixinProperties (obj, proto) {\n  for (var prop in proto) {\n    if (!obj.hasOwnProperty(prop)) {\n      obj[prop] = proto[prop]\n    }\n  }\n  return obj\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/http-assert/node_modules/setprototypeof/index.js?")},"./node_modules/http-cache-semantics/index.js":
/*!****************************************************!*\
  !*** ./node_modules/http-cache-semantics/index.js ***!
  \****************************************************/module=>{"use strict";eval("\n// rfc7231 6.1\nconst statusCodeCacheableByDefault = new Set([\n    200,\n    203,\n    204,\n    206,\n    300,\n    301,\n    404,\n    405,\n    410,\n    414,\n    501,\n]);\n\n// This implementation does not understand partial responses (206)\nconst understoodStatuses = new Set([\n    200,\n    203,\n    204,\n    300,\n    301,\n    302,\n    303,\n    307,\n    308,\n    404,\n    405,\n    410,\n    414,\n    501,\n]);\n\nconst errorStatusCodes = new Set([\n    500,\n    502,\n    503, \n    504,\n]);\n\nconst hopByHopHeaders = {\n    date: true, // included, because we add Age update Date\n    connection: true,\n    'keep-alive': true,\n    'proxy-authenticate': true,\n    'proxy-authorization': true,\n    te: true,\n    trailer: true,\n    'transfer-encoding': true,\n    upgrade: true,\n};\n\nconst excludedFromRevalidationUpdate = {\n    // Since the old body is reused, it doesn't make sense to change properties of the body\n    'content-length': true,\n    'content-encoding': true,\n    'transfer-encoding': true,\n    'content-range': true,\n};\n\nfunction toNumberOrZero(s) {\n    const n = parseInt(s, 10);\n    return isFinite(n) ? n : 0;\n}\n\n// RFC 5861\nfunction isErrorResponse(response) {\n    // consider undefined response as faulty\n    if(!response) {\n        return true\n    }\n    return errorStatusCodes.has(response.status);\n}\n\nfunction parseCacheControl(header) {\n    const cc = {};\n    if (!header) return cc;\n\n    // TODO: When there is more than one value present for a given directive (e.g., two Expires header fields, multiple Cache-Control: max-age directives),\n    // the directive's value is considered invalid. Caches are encouraged to consider responses that have invalid freshness information to be stale\n    const parts = header.trim().split(/\\s*,\\s*/); // TODO: lame parsing\n    for (const part of parts) {\n        const [k, v] = part.split(/\\s*=\\s*/, 2);\n        cc[k] = v === undefined ? true : v.replace(/^\"|\"$/g, ''); // TODO: lame unquoting\n    }\n\n    return cc;\n}\n\nfunction formatCacheControl(cc) {\n    let parts = [];\n    for (const k in cc) {\n        const v = cc[k];\n        parts.push(v === true ? k : k + '=' + v);\n    }\n    if (!parts.length) {\n        return undefined;\n    }\n    return parts.join(', ');\n}\n\nmodule.exports = class CachePolicy {\n    constructor(\n        req,\n        res,\n        {\n            shared,\n            cacheHeuristic,\n            immutableMinTimeToLive,\n            ignoreCargoCult,\n            _fromObject,\n        } = {}\n    ) {\n        if (_fromObject) {\n            this._fromObject(_fromObject);\n            return;\n        }\n\n        if (!res || !res.headers) {\n            throw Error('Response headers missing');\n        }\n        this._assertRequestHasHeaders(req);\n\n        this._responseTime = this.now();\n        this._isShared = shared !== false;\n        this._cacheHeuristic =\n            undefined !== cacheHeuristic ? cacheHeuristic : 0.1; // 10% matches IE\n        this._immutableMinTtl =\n            undefined !== immutableMinTimeToLive\n                ? immutableMinTimeToLive\n                : 24 * 3600 * 1000;\n\n        this._status = 'status' in res ? res.status : 200;\n        this._resHeaders = res.headers;\n        this._rescc = parseCacheControl(res.headers['cache-control']);\n        this._method = 'method' in req ? req.method : 'GET';\n        this._url = req.url;\n        this._host = req.headers.host;\n        this._noAuthorization = !req.headers.authorization;\n        this._reqHeaders = res.headers.vary ? req.headers : null; // Don't keep all request headers if they won't be used\n        this._reqcc = parseCacheControl(req.headers['cache-control']);\n\n        // Assume that if someone uses legacy, non-standard uncecessary options they don't understand caching,\n        // so there's no point stricly adhering to the blindly copy&pasted directives.\n        if (\n            ignoreCargoCult &&\n            'pre-check' in this._rescc &&\n            'post-check' in this._rescc\n        ) {\n            delete this._rescc['pre-check'];\n            delete this._rescc['post-check'];\n            delete this._rescc['no-cache'];\n            delete this._rescc['no-store'];\n            delete this._rescc['must-revalidate'];\n            this._resHeaders = Object.assign({}, this._resHeaders, {\n                'cache-control': formatCacheControl(this._rescc),\n            });\n            delete this._resHeaders.expires;\n            delete this._resHeaders.pragma;\n        }\n\n        // When the Cache-Control header field is not present in a request, caches MUST consider the no-cache request pragma-directive\n        // as having the same effect as if \"Cache-Control: no-cache\" were present (see Section 5.2.1).\n        if (\n            res.headers['cache-control'] == null &&\n            /no-cache/.test(res.headers.pragma)\n        ) {\n            this._rescc['no-cache'] = true;\n        }\n    }\n\n    now() {\n        return Date.now();\n    }\n\n    storable() {\n        // The \"no-store\" request directive indicates that a cache MUST NOT store any part of either this request or any response to it.\n        return !!(\n            !this._reqcc['no-store'] &&\n            // A cache MUST NOT store a response to any request, unless:\n            // The request method is understood by the cache and defined as being cacheable, and\n            ('GET' === this._method ||\n                'HEAD' === this._method ||\n                ('POST' === this._method && this._hasExplicitExpiration())) &&\n            // the response status code is understood by the cache, and\n            understoodStatuses.has(this._status) &&\n            // the \"no-store\" cache directive does not appear in request or response header fields, and\n            !this._rescc['no-store'] &&\n            // the \"private\" response directive does not appear in the response, if the cache is shared, and\n            (!this._isShared || !this._rescc.private) &&\n            // the Authorization header field does not appear in the request, if the cache is shared,\n            (!this._isShared ||\n                this._noAuthorization ||\n                this._allowsStoringAuthenticated()) &&\n            // the response either:\n            // contains an Expires header field, or\n            (this._resHeaders.expires ||\n                // contains a max-age response directive, or\n                // contains a s-maxage response directive and the cache is shared, or\n                // contains a public response directive.\n                this._rescc['max-age'] ||\n                (this._isShared && this._rescc['s-maxage']) ||\n                this._rescc.public ||\n                // has a status code that is defined as cacheable by default\n                statusCodeCacheableByDefault.has(this._status))\n        );\n    }\n\n    _hasExplicitExpiration() {\n        // 4.2.1 Calculating Freshness Lifetime\n        return (\n            (this._isShared && this._rescc['s-maxage']) ||\n            this._rescc['max-age'] ||\n            this._resHeaders.expires\n        );\n    }\n\n    _assertRequestHasHeaders(req) {\n        if (!req || !req.headers) {\n            throw Error('Request headers missing');\n        }\n    }\n\n    satisfiesWithoutRevalidation(req) {\n        this._assertRequestHasHeaders(req);\n\n        // When presented with a request, a cache MUST NOT reuse a stored response, unless:\n        // the presented request does not contain the no-cache pragma (Section 5.4), nor the no-cache cache directive,\n        // unless the stored response is successfully validated (Section 4.3), and\n        const requestCC = parseCacheControl(req.headers['cache-control']);\n        if (requestCC['no-cache'] || /no-cache/.test(req.headers.pragma)) {\n            return false;\n        }\n\n        if (requestCC['max-age'] && this.age() > requestCC['max-age']) {\n            return false;\n        }\n\n        if (\n            requestCC['min-fresh'] &&\n            this.timeToLive() < 1000 * requestCC['min-fresh']\n        ) {\n            return false;\n        }\n\n        // the stored response is either:\n        // fresh, or allowed to be served stale\n        if (this.stale()) {\n            const allowsStale =\n                requestCC['max-stale'] &&\n                !this._rescc['must-revalidate'] &&\n                (true === requestCC['max-stale'] ||\n                    requestCC['max-stale'] > this.age() - this.maxAge());\n            if (!allowsStale) {\n                return false;\n            }\n        }\n\n        return this._requestMatches(req, false);\n    }\n\n    _requestMatches(req, allowHeadMethod) {\n        // The presented effective request URI and that of the stored response match, and\n        return (\n            (!this._url || this._url === req.url) &&\n            this._host === req.headers.host &&\n            // the request method associated with the stored response allows it to be used for the presented request, and\n            (!req.method ||\n                this._method === req.method ||\n                (allowHeadMethod && 'HEAD' === req.method)) &&\n            // selecting header fields nominated by the stored response (if any) match those presented, and\n            this._varyMatches(req)\n        );\n    }\n\n    _allowsStoringAuthenticated() {\n        //  following Cache-Control response directives (Section 5.2.2) have such an effect: must-revalidate, public, and s-maxage.\n        return (\n            this._rescc['must-revalidate'] ||\n            this._rescc.public ||\n            this._rescc['s-maxage']\n        );\n    }\n\n    _varyMatches(req) {\n        if (!this._resHeaders.vary) {\n            return true;\n        }\n\n        // A Vary header field-value of \"*\" always fails to match\n        if (this._resHeaders.vary === '*') {\n            return false;\n        }\n\n        const fields = this._resHeaders.vary\n            .trim()\n            .toLowerCase()\n            .split(/\\s*,\\s*/);\n        for (const name of fields) {\n            if (req.headers[name] !== this._reqHeaders[name]) return false;\n        }\n        return true;\n    }\n\n    _copyWithoutHopByHopHeaders(inHeaders) {\n        const headers = {};\n        for (const name in inHeaders) {\n            if (hopByHopHeaders[name]) continue;\n            headers[name] = inHeaders[name];\n        }\n        // 9.1.  Connection\n        if (inHeaders.connection) {\n            const tokens = inHeaders.connection.trim().split(/\\s*,\\s*/);\n            for (const name of tokens) {\n                delete headers[name];\n            }\n        }\n        if (headers.warning) {\n            const warnings = headers.warning.split(/,/).filter(warning => {\n                return !/^\\s*1[0-9][0-9]/.test(warning);\n            });\n            if (!warnings.length) {\n                delete headers.warning;\n            } else {\n                headers.warning = warnings.join(',').trim();\n            }\n        }\n        return headers;\n    }\n\n    responseHeaders() {\n        const headers = this._copyWithoutHopByHopHeaders(this._resHeaders);\n        const age = this.age();\n\n        // A cache SHOULD generate 113 warning if it heuristically chose a freshness\n        // lifetime greater than 24 hours and the response's age is greater than 24 hours.\n        if (\n            age > 3600 * 24 &&\n            !this._hasExplicitExpiration() &&\n            this.maxAge() > 3600 * 24\n        ) {\n            headers.warning =\n                (headers.warning ? `${headers.warning}, ` : '') +\n                '113 - \"rfc7234 5.5.4\"';\n        }\n        headers.age = `${Math.round(age)}`;\n        headers.date = new Date(this.now()).toUTCString();\n        return headers;\n    }\n\n    /**\n     * Value of the Date response header or current time if Date was invalid\n     * @return timestamp\n     */\n    date() {\n        const serverDate = Date.parse(this._resHeaders.date);\n        if (isFinite(serverDate)) {\n            return serverDate;\n        }\n        return this._responseTime;\n    }\n\n    /**\n     * Value of the Age header, in seconds, updated for the current time.\n     * May be fractional.\n     *\n     * @return Number\n     */\n    age() {\n        let age = this._ageValue();\n\n        const residentTime = (this.now() - this._responseTime) / 1000;\n        return age + residentTime;\n    }\n\n    _ageValue() {\n        return toNumberOrZero(this._resHeaders.age);\n    }\n\n    /**\n     * Value of applicable max-age (or heuristic equivalent) in seconds. This counts since response's `Date`.\n     *\n     * For an up-to-date value, see `timeToLive()`.\n     *\n     * @return Number\n     */\n    maxAge() {\n        if (!this.storable() || this._rescc['no-cache']) {\n            return 0;\n        }\n\n        // Shared responses with cookies are cacheable according to the RFC, but IMHO it'd be unwise to do so by default\n        // so this implementation requires explicit opt-in via public header\n        if (\n            this._isShared &&\n            (this._resHeaders['set-cookie'] &&\n                !this._rescc.public &&\n                !this._rescc.immutable)\n        ) {\n            return 0;\n        }\n\n        if (this._resHeaders.vary === '*') {\n            return 0;\n        }\n\n        if (this._isShared) {\n            if (this._rescc['proxy-revalidate']) {\n                return 0;\n            }\n            // if a response includes the s-maxage directive, a shared cache recipient MUST ignore the Expires field.\n            if (this._rescc['s-maxage']) {\n                return toNumberOrZero(this._rescc['s-maxage']);\n            }\n        }\n\n        // If a response includes a Cache-Control field with the max-age directive, a recipient MUST ignore the Expires field.\n        if (this._rescc['max-age']) {\n            return toNumberOrZero(this._rescc['max-age']);\n        }\n\n        const defaultMinTtl = this._rescc.immutable ? this._immutableMinTtl : 0;\n\n        const serverDate = this.date();\n        if (this._resHeaders.expires) {\n            const expires = Date.parse(this._resHeaders.expires);\n            // A cache recipient MUST interpret invalid date formats, especially the value \"0\", as representing a time in the past (i.e., \"already expired\").\n            if (Number.isNaN(expires) || expires < serverDate) {\n                return 0;\n            }\n            return Math.max(defaultMinTtl, (expires - serverDate) / 1000);\n        }\n\n        if (this._resHeaders['last-modified']) {\n            const lastModified = Date.parse(this._resHeaders['last-modified']);\n            if (isFinite(lastModified) && serverDate > lastModified) {\n                return Math.max(\n                    defaultMinTtl,\n                    ((serverDate - lastModified) / 1000) * this._cacheHeuristic\n                );\n            }\n        }\n\n        return defaultMinTtl;\n    }\n\n    timeToLive() {\n        const age = this.maxAge() - this.age();\n        const staleIfErrorAge = age + toNumberOrZero(this._rescc['stale-if-error']);\n        const staleWhileRevalidateAge = age + toNumberOrZero(this._rescc['stale-while-revalidate']);\n        return Math.max(0, age, staleIfErrorAge, staleWhileRevalidateAge) * 1000;\n    }\n\n    stale() {\n        return this.maxAge() <= this.age();\n    }\n\n    _useStaleIfError() {\n        return this.maxAge() + toNumberOrZero(this._rescc['stale-if-error']) > this.age();\n    }\n\n    useStaleWhileRevalidate() {\n        return this.maxAge() + toNumberOrZero(this._rescc['stale-while-revalidate']) > this.age();\n    }\n\n    static fromObject(obj) {\n        return new this(undefined, undefined, { _fromObject: obj });\n    }\n\n    _fromObject(obj) {\n        if (this._responseTime) throw Error('Reinitialized');\n        if (!obj || obj.v !== 1) throw Error('Invalid serialization');\n\n        this._responseTime = obj.t;\n        this._isShared = obj.sh;\n        this._cacheHeuristic = obj.ch;\n        this._immutableMinTtl =\n            obj.imm !== undefined ? obj.imm : 24 * 3600 * 1000;\n        this._status = obj.st;\n        this._resHeaders = obj.resh;\n        this._rescc = obj.rescc;\n        this._method = obj.m;\n        this._url = obj.u;\n        this._host = obj.h;\n        this._noAuthorization = obj.a;\n        this._reqHeaders = obj.reqh;\n        this._reqcc = obj.reqcc;\n    }\n\n    toObject() {\n        return {\n            v: 1,\n            t: this._responseTime,\n            sh: this._isShared,\n            ch: this._cacheHeuristic,\n            imm: this._immutableMinTtl,\n            st: this._status,\n            resh: this._resHeaders,\n            rescc: this._rescc,\n            m: this._method,\n            u: this._url,\n            h: this._host,\n            a: this._noAuthorization,\n            reqh: this._reqHeaders,\n            reqcc: this._reqcc,\n        };\n    }\n\n    /**\n     * Headers for sending to the origin server to revalidate stale response.\n     * Allows server to return 304 to allow reuse of the previous response.\n     *\n     * Hop by hop headers are always stripped.\n     * Revalidation headers may be added or removed, depending on request.\n     */\n    revalidationHeaders(incomingReq) {\n        this._assertRequestHasHeaders(incomingReq);\n        const headers = this._copyWithoutHopByHopHeaders(incomingReq.headers);\n\n        // This implementation does not understand range requests\n        delete headers['if-range'];\n\n        if (!this._requestMatches(incomingReq, true) || !this.storable()) {\n            // revalidation allowed via HEAD\n            // not for the same resource, or wasn't allowed to be cached anyway\n            delete headers['if-none-match'];\n            delete headers['if-modified-since'];\n            return headers;\n        }\n\n        /* MUST send that entity-tag in any cache validation request (using If-Match or If-None-Match) if an entity-tag has been provided by the origin server. */\n        if (this._resHeaders.etag) {\n            headers['if-none-match'] = headers['if-none-match']\n                ? `${headers['if-none-match']}, ${this._resHeaders.etag}`\n                : this._resHeaders.etag;\n        }\n\n        // Clients MAY issue simple (non-subrange) GET requests with either weak validators or strong validators. Clients MUST NOT use weak validators in other forms of request.\n        const forbidsWeakValidators =\n            headers['accept-ranges'] ||\n            headers['if-match'] ||\n            headers['if-unmodified-since'] ||\n            (this._method && this._method != 'GET');\n\n        /* SHOULD send the Last-Modified value in non-subrange cache validation requests (using If-Modified-Since) if only a Last-Modified value has been provided by the origin server.\n        Note: This implementation does not understand partial responses (206) */\n        if (forbidsWeakValidators) {\n            delete headers['if-modified-since'];\n\n            if (headers['if-none-match']) {\n                const etags = headers['if-none-match']\n                    .split(/,/)\n                    .filter(etag => {\n                        return !/^\\s*W\\//.test(etag);\n                    });\n                if (!etags.length) {\n                    delete headers['if-none-match'];\n                } else {\n                    headers['if-none-match'] = etags.join(',').trim();\n                }\n            }\n        } else if (\n            this._resHeaders['last-modified'] &&\n            !headers['if-modified-since']\n        ) {\n            headers['if-modified-since'] = this._resHeaders['last-modified'];\n        }\n\n        return headers;\n    }\n\n    /**\n     * Creates new CachePolicy with information combined from the previews response,\n     * and the new revalidation response.\n     *\n     * Returns {policy, modified} where modified is a boolean indicating\n     * whether the response body has been modified, and old cached body can't be used.\n     *\n     * @return {Object} {policy: CachePolicy, modified: Boolean}\n     */\n    revalidatedPolicy(request, response) {\n        this._assertRequestHasHeaders(request);\n        if(this._useStaleIfError() && isErrorResponse(response)) {  // I consider the revalidation request unsuccessful\n          return {\n            modified: false,\n            matches: false,\n            policy: this,\n          };\n        }\n        if (!response || !response.headers) {\n            throw Error('Response headers missing');\n        }\n\n        // These aren't going to be supported exactly, since one CachePolicy object\n        // doesn't know about all the other cached objects.\n        let matches = false;\n        if (response.status !== undefined && response.status != 304) {\n            matches = false;\n        } else if (\n            response.headers.etag &&\n            !/^\\s*W\\//.test(response.headers.etag)\n        ) {\n            // \"All of the stored responses with the same strong validator are selected.\n            // If none of the stored responses contain the same strong validator,\n            // then the cache MUST NOT use the new response to update any stored responses.\"\n            matches =\n                this._resHeaders.etag &&\n                this._resHeaders.etag.replace(/^\\s*W\\//, '') ===\n                    response.headers.etag;\n        } else if (this._resHeaders.etag && response.headers.etag) {\n            // \"If the new response contains a weak validator and that validator corresponds\n            // to one of the cache's stored responses,\n            // then the most recent of those matching stored responses is selected for update.\"\n            matches =\n                this._resHeaders.etag.replace(/^\\s*W\\//, '') ===\n                response.headers.etag.replace(/^\\s*W\\//, '');\n        } else if (this._resHeaders['last-modified']) {\n            matches =\n                this._resHeaders['last-modified'] ===\n                response.headers['last-modified'];\n        } else {\n            // If the new response does not include any form of validator (such as in the case where\n            // a client generates an If-Modified-Since request from a source other than the Last-Modified\n            // response header field), and there is only one stored response, and that stored response also\n            // lacks a validator, then that stored response is selected for update.\n            if (\n                !this._resHeaders.etag &&\n                !this._resHeaders['last-modified'] &&\n                !response.headers.etag &&\n                !response.headers['last-modified']\n            ) {\n                matches = true;\n            }\n        }\n\n        if (!matches) {\n            return {\n                policy: new this.constructor(request, response),\n                // Client receiving 304 without body, even if it's invalid/mismatched has no option\n                // but to reuse a cached body. We don't have a good way to tell clients to do\n                // error recovery in such case.\n                modified: response.status != 304,\n                matches: false,\n            };\n        }\n\n        // use other header fields provided in the 304 (Not Modified) response to replace all instances\n        // of the corresponding header fields in the stored response.\n        const headers = {};\n        for (const k in this._resHeaders) {\n            headers[k] =\n                k in response.headers && !excludedFromRevalidationUpdate[k]\n                    ? response.headers[k]\n                    : this._resHeaders[k];\n        }\n\n        const newResponse = Object.assign({}, response, {\n            status: this._status,\n            method: this._method,\n            headers,\n        });\n        return {\n            policy: new this.constructor(request, newResponse, {\n                shared: this._isShared,\n                cacheHeuristic: this._cacheHeuristic,\n                immutableMinTimeToLive: this._immutableMinTtl,\n            }),\n            modified: false,\n            matches: true,\n        };\n    }\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/http-cache-semantics/index.js?")},"./node_modules/http-errors/index.js":
/*!*******************************************!*\
  !*** ./node_modules/http-errors/index.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("/*!\n * http-errors\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar deprecate = __webpack_require__(/*! depd */ \"./node_modules/depd/index.js\")('http-errors')\nvar setPrototypeOf = __webpack_require__(/*! setprototypeof */ \"./node_modules/setprototypeof/index.js\")\nvar statuses = __webpack_require__(/*! statuses */ \"./node_modules/statuses/index.js\")\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits.js\")\nvar toIdentifier = __webpack_require__(/*! toidentifier */ \"./node_modules/http-errors/node_modules/toidentifier/index.js\")\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = createError\nmodule.exports.HttpError = createHttpErrorConstructor()\nmodule.exports.isHttpError = createIsHttpErrorFunction(module.exports.HttpError)\n\n// Populate exports for all constructors\npopulateConstructorExports(module.exports, statuses.codes, module.exports.HttpError)\n\n/**\n * Get the code class of a status code.\n * @private\n */\n\nfunction codeClass (status) {\n  return Number(String(status).charAt(0) + '00')\n}\n\n/**\n * Create a new HTTP Error.\n *\n * @returns {Error}\n * @public\n */\n\nfunction createError () {\n  // so much arity going on ~_~\n  var err\n  var msg\n  var status = 500\n  var props = {}\n  for (var i = 0; i < arguments.length; i++) {\n    var arg = arguments[i]\n    if (arg instanceof Error) {\n      err = arg\n      status = err.status || err.statusCode || status\n      continue\n    }\n    switch (typeof arg) {\n      case 'string':\n        msg = arg\n        break\n      case 'number':\n        status = arg\n        if (i !== 0) {\n          deprecate('non-first-argument status code; replace with createError(' + arg + ', ...)')\n        }\n        break\n      case 'object':\n        props = arg\n        break\n    }\n  }\n\n  if (typeof status === 'number' && (status < 400 || status >= 600)) {\n    deprecate('non-error status code; use only 4xx or 5xx status codes')\n  }\n\n  if (typeof status !== 'number' ||\n    (!statuses[status] && (status < 400 || status >= 600))) {\n    status = 500\n  }\n\n  // constructor\n  var HttpError = createError[status] || createError[codeClass(status)]\n\n  if (!err) {\n    // create error\n    err = HttpError\n      ? new HttpError(msg)\n      : new Error(msg || statuses[status])\n    Error.captureStackTrace(err, createError)\n  }\n\n  if (!HttpError || !(err instanceof HttpError) || err.status !== status) {\n    // add properties to generic error\n    err.expose = status < 500\n    err.status = err.statusCode = status\n  }\n\n  for (var key in props) {\n    if (key !== 'status' && key !== 'statusCode') {\n      err[key] = props[key]\n    }\n  }\n\n  return err\n}\n\n/**\n * Create HTTP error abstract base class.\n * @private\n */\n\nfunction createHttpErrorConstructor () {\n  function HttpError () {\n    throw new TypeError('cannot construct abstract class')\n  }\n\n  inherits(HttpError, Error)\n\n  return HttpError\n}\n\n/**\n * Create a constructor for a client error.\n * @private\n */\n\nfunction createClientErrorConstructor (HttpError, name, code) {\n  var className = toClassName(name)\n\n  function ClientError (message) {\n    // create the error object\n    var msg = message != null ? message : statuses[code]\n    var err = new Error(msg)\n\n    // capture a stack trace to the construction point\n    Error.captureStackTrace(err, ClientError)\n\n    // adjust the [[Prototype]]\n    setPrototypeOf(err, ClientError.prototype)\n\n    // redefine the error message\n    Object.defineProperty(err, 'message', {\n      enumerable: true,\n      configurable: true,\n      value: msg,\n      writable: true\n    })\n\n    // redefine the error name\n    Object.defineProperty(err, 'name', {\n      enumerable: false,\n      configurable: true,\n      value: className,\n      writable: true\n    })\n\n    return err\n  }\n\n  inherits(ClientError, HttpError)\n  nameFunc(ClientError, className)\n\n  ClientError.prototype.status = code\n  ClientError.prototype.statusCode = code\n  ClientError.prototype.expose = true\n\n  return ClientError\n}\n\n/**\n * Create function to test is a value is a HttpError.\n * @private\n */\n\nfunction createIsHttpErrorFunction (HttpError) {\n  return function isHttpError (val) {\n    if (!val || typeof val !== 'object') {\n      return false\n    }\n\n    if (val instanceof HttpError) {\n      return true\n    }\n\n    return val instanceof Error &&\n      typeof val.expose === 'boolean' &&\n      typeof val.statusCode === 'number' && val.status === val.statusCode\n  }\n}\n\n/**\n * Create a constructor for a server error.\n * @private\n */\n\nfunction createServerErrorConstructor (HttpError, name, code) {\n  var className = toClassName(name)\n\n  function ServerError (message) {\n    // create the error object\n    var msg = message != null ? message : statuses[code]\n    var err = new Error(msg)\n\n    // capture a stack trace to the construction point\n    Error.captureStackTrace(err, ServerError)\n\n    // adjust the [[Prototype]]\n    setPrototypeOf(err, ServerError.prototype)\n\n    // redefine the error message\n    Object.defineProperty(err, 'message', {\n      enumerable: true,\n      configurable: true,\n      value: msg,\n      writable: true\n    })\n\n    // redefine the error name\n    Object.defineProperty(err, 'name', {\n      enumerable: false,\n      configurable: true,\n      value: className,\n      writable: true\n    })\n\n    return err\n  }\n\n  inherits(ServerError, HttpError)\n  nameFunc(ServerError, className)\n\n  ServerError.prototype.status = code\n  ServerError.prototype.statusCode = code\n  ServerError.prototype.expose = false\n\n  return ServerError\n}\n\n/**\n * Set the name of a function, if possible.\n * @private\n */\n\nfunction nameFunc (func, name) {\n  var desc = Object.getOwnPropertyDescriptor(func, 'name')\n\n  if (desc && desc.configurable) {\n    desc.value = name\n    Object.defineProperty(func, 'name', desc)\n  }\n}\n\n/**\n * Populate the exports object with constructors for every error class.\n * @private\n */\n\nfunction populateConstructorExports (exports, codes, HttpError) {\n  codes.forEach(function forEachCode (code) {\n    var CodeError\n    var name = toIdentifier(statuses[code])\n\n    switch (codeClass(code)) {\n      case 400:\n        CodeError = createClientErrorConstructor(HttpError, name, code)\n        break\n      case 500:\n        CodeError = createServerErrorConstructor(HttpError, name, code)\n        break\n    }\n\n    if (CodeError) {\n      // export the constructor\n      exports[code] = CodeError\n      exports[name] = CodeError\n    }\n  })\n\n  // backwards-compatibility\n  exports[\"I'mateapot\"] = deprecate.function(exports.ImATeapot,\n    '\"I\\'mateapot\"; use \"ImATeapot\" instead')\n}\n\n/**\n * Get a class name from a name identifier.\n * @private\n */\n\nfunction toClassName (name) {\n  return name.substr(-5) !== 'Error'\n    ? name + 'Error'\n    : name\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/http-errors/index.js?")},"./node_modules/http-errors/node_modules/toidentifier/index.js":
/*!*********************************************************************!*\
  !*** ./node_modules/http-errors/node_modules/toidentifier/index.js ***!
  \*********************************************************************/module=>{"use strict";eval("/*!\n * toidentifier\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = toIdentifier\n\n/**\n * Trasform the given string into a JavaScript identifier\n *\n * @param {string} str\n * @returns {string}\n * @public\n */\n\nfunction toIdentifier (str) {\n  return str\n    .split(' ')\n    .map(function (token) {\n      return token.slice(0, 1).toUpperCase() + token.slice(1)\n    })\n    .join('')\n    .replace(/[^ _0-9a-z]/gi, '')\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/http-errors/node_modules/toidentifier/index.js?")},"./node_modules/http2-wrapper/source/agent.js":
/*!****************************************************!*\
  !*** ./node_modules/http2-wrapper/source/agent.js ***!
  \****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nconst EventEmitter = __webpack_require__(/*! events */ \"events\");\nconst tls = __webpack_require__(/*! tls */ \"tls\");\nconst http2 = __webpack_require__(/*! http2 */ \"http2\");\nconst QuickLRU = __webpack_require__(/*! quick-lru */ \"./node_modules/quick-lru/index.js\");\n\nconst kCurrentStreamsCount = Symbol('currentStreamsCount');\nconst kRequest = Symbol('request');\nconst kOriginSet = Symbol('cachedOriginSet');\nconst kGracefullyClosing = Symbol('gracefullyClosing');\n\nconst nameKeys = [\n\t// `http2.connect()` options\n\t'maxDeflateDynamicTableSize',\n\t'maxSessionMemory',\n\t'maxHeaderListPairs',\n\t'maxOutstandingPings',\n\t'maxReservedRemoteStreams',\n\t'maxSendHeaderBlockLength',\n\t'paddingStrategy',\n\n\t// `tls.connect()` options\n\t'localAddress',\n\t'path',\n\t'rejectUnauthorized',\n\t'minDHSize',\n\n\t// `tls.createSecureContext()` options\n\t'ca',\n\t'cert',\n\t'clientCertEngine',\n\t'ciphers',\n\t'key',\n\t'pfx',\n\t'servername',\n\t'minVersion',\n\t'maxVersion',\n\t'secureProtocol',\n\t'crl',\n\t'honorCipherOrder',\n\t'ecdhCurve',\n\t'dhparam',\n\t'secureOptions',\n\t'sessionIdContext'\n];\n\nconst getSortedIndex = (array, value, compare) => {\n\tlet low = 0;\n\tlet high = array.length;\n\n\twhile (low < high) {\n\t\tconst mid = (low + high) >>> 1;\n\n\t\t/* istanbul ignore next */\n\t\tif (compare(array[mid], value)) {\n\t\t\t// This never gets called because we use descending sort. Better to have this anyway.\n\t\t\tlow = mid + 1;\n\t\t} else {\n\t\t\thigh = mid;\n\t\t}\n\t}\n\n\treturn low;\n};\n\nconst compareSessions = (a, b) => {\n\treturn a.remoteSettings.maxConcurrentStreams > b.remoteSettings.maxConcurrentStreams;\n};\n\n// See https://tools.ietf.org/html/rfc8336\nconst closeCoveredSessions = (where, session) => {\n\t// Clients SHOULD NOT emit new requests on any connection whose Origin\n\t// Set is a proper subset of another connection's Origin Set, and they\n\t// SHOULD close it once all outstanding requests are satisfied.\n\tfor (const coveredSession of where) {\n\t\tif (\n\t\t\t// The set is a proper subset when its length is less than the other set.\n\t\t\tcoveredSession[kOriginSet].length < session[kOriginSet].length &&\n\n\t\t\t// And the other set includes all elements of the subset.\n\t\t\tcoveredSession[kOriginSet].every(origin => session[kOriginSet].includes(origin)) &&\n\n\t\t\t// Makes sure that the session can handle all requests from the covered session.\n\t\t\tcoveredSession[kCurrentStreamsCount] + session[kCurrentStreamsCount] <= session.remoteSettings.maxConcurrentStreams\n\t\t) {\n\t\t\t// This allows pending requests to finish and prevents making new requests.\n\t\t\tgracefullyClose(coveredSession);\n\t\t}\n\t}\n};\n\n// This is basically inverted `closeCoveredSessions(...)`.\nconst closeSessionIfCovered = (where, coveredSession) => {\n\tfor (const session of where) {\n\t\tif (\n\t\t\tcoveredSession[kOriginSet].length < session[kOriginSet].length &&\n\t\t\tcoveredSession[kOriginSet].every(origin => session[kOriginSet].includes(origin)) &&\n\t\t\tcoveredSession[kCurrentStreamsCount] + session[kCurrentStreamsCount] <= session.remoteSettings.maxConcurrentStreams\n\t\t) {\n\t\t\tgracefullyClose(coveredSession);\n\t\t}\n\t}\n};\n\nconst getSessions = ({agent, isFree}) => {\n\tconst result = {};\n\n\t// eslint-disable-next-line guard-for-in\n\tfor (const normalizedOptions in agent.sessions) {\n\t\tconst sessions = agent.sessions[normalizedOptions];\n\n\t\tconst filtered = sessions.filter(session => {\n\t\t\tconst result = session[Agent.kCurrentStreamsCount] < session.remoteSettings.maxConcurrentStreams;\n\n\t\t\treturn isFree ? result : !result;\n\t\t});\n\n\t\tif (filtered.length !== 0) {\n\t\t\tresult[normalizedOptions] = filtered;\n\t\t}\n\t}\n\n\treturn result;\n};\n\nconst gracefullyClose = session => {\n\tsession[kGracefullyClosing] = true;\n\n\tif (session[kCurrentStreamsCount] === 0) {\n\t\tsession.close();\n\t}\n};\n\nclass Agent extends EventEmitter {\n\tconstructor({timeout = 60000, maxSessions = Infinity, maxFreeSessions = 10, maxCachedTlsSessions = 100} = {}) {\n\t\tsuper();\n\n\t\t// A session is considered busy when its current streams count\n\t\t// is equal to or greater than the `maxConcurrentStreams` value.\n\n\t\t// A session is considered free when its current streams count\n\t\t// is less than the `maxConcurrentStreams` value.\n\n\t\t// SESSIONS[NORMALIZED_OPTIONS] = [];\n\t\tthis.sessions = {};\n\n\t\t// The queue for creating new sessions. It looks like this:\n\t\t// QUEUE[NORMALIZED_OPTIONS][NORMALIZED_ORIGIN] = ENTRY_FUNCTION\n\t\t//\n\t\t// The entry function has `listeners`, `completed` and `destroyed` properties.\n\t\t// `listeners` is an array of objects containing `resolve` and `reject` functions.\n\t\t// `completed` is a boolean. It's set to true after ENTRY_FUNCTION is executed.\n\t\t// `destroyed` is a boolean. If it's set to true, the session will be destroyed if hasn't connected yet.\n\t\tthis.queue = {};\n\n\t\t// Each session will use this timeout value.\n\t\tthis.timeout = timeout;\n\n\t\t// Max sessions in total\n\t\tthis.maxSessions = maxSessions;\n\n\t\t// Max free sessions in total\n\t\t// TODO: decreasing `maxFreeSessions` should close some sessions\n\t\tthis.maxFreeSessions = maxFreeSessions;\n\n\t\tthis._freeSessionsCount = 0;\n\t\tthis._sessionsCount = 0;\n\n\t\t// We don't support push streams by default.\n\t\tthis.settings = {\n\t\t\tenablePush: false\n\t\t};\n\n\t\t// Reusing TLS sessions increases performance.\n\t\tthis.tlsSessionCache = new QuickLRU({maxSize: maxCachedTlsSessions});\n\t}\n\n\tstatic normalizeOrigin(url, servername) {\n\t\tif (typeof url === 'string') {\n\t\t\turl = new URL(url);\n\t\t}\n\n\t\tif (servername && url.hostname !== servername) {\n\t\t\turl.hostname = servername;\n\t\t}\n\n\t\treturn url.origin;\n\t}\n\n\tnormalizeOptions(options) {\n\t\tlet normalized = '';\n\n\t\tif (options) {\n\t\t\tfor (const key of nameKeys) {\n\t\t\t\tif (options[key]) {\n\t\t\t\t\tnormalized += `:${options[key]}`;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn normalized;\n\t}\n\n\t_tryToCreateNewSession(normalizedOptions, normalizedOrigin) {\n\t\tif (!(normalizedOptions in this.queue) || !(normalizedOrigin in this.queue[normalizedOptions])) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst item = this.queue[normalizedOptions][normalizedOrigin];\n\n\t\t// The entry function can be run only once.\n\t\t// BUG: The session may be never created when:\n\t\t// - the first condition is false AND\n\t\t// - this function is never called with the same arguments in the future.\n\t\tif (this._sessionsCount < this.maxSessions && !item.completed) {\n\t\t\titem.completed = true;\n\n\t\t\titem();\n\t\t}\n\t}\n\n\tgetSession(origin, options, listeners) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (Array.isArray(listeners)) {\n\t\t\t\tlisteners = [...listeners];\n\n\t\t\t\t// Resolve the current promise ASAP, we're just moving the listeners.\n\t\t\t\t// They will be executed at a different time.\n\t\t\t\tresolve();\n\t\t\t} else {\n\t\t\t\tlisteners = [{resolve, reject}];\n\t\t\t}\n\n\t\t\tconst normalizedOptions = this.normalizeOptions(options);\n\t\t\tconst normalizedOrigin = Agent.normalizeOrigin(origin, options && options.servername);\n\n\t\t\tif (normalizedOrigin === undefined) {\n\t\t\t\tfor (const {reject} of listeners) {\n\t\t\t\t\treject(new TypeError('The `origin` argument needs to be a string or an URL object'));\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (normalizedOptions in this.sessions) {\n\t\t\t\tconst sessions = this.sessions[normalizedOptions];\n\n\t\t\t\tlet maxConcurrentStreams = -1;\n\t\t\t\tlet currentStreamsCount = -1;\n\t\t\t\tlet optimalSession;\n\n\t\t\t\t// We could just do this.sessions[normalizedOptions].find(...) but that isn't optimal.\n\t\t\t\t// Additionally, we are looking for session which has biggest current pending streams count.\n\t\t\t\tfor (const session of sessions) {\n\t\t\t\t\tconst sessionMaxConcurrentStreams = session.remoteSettings.maxConcurrentStreams;\n\n\t\t\t\t\tif (sessionMaxConcurrentStreams < maxConcurrentStreams) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (session[kOriginSet].includes(normalizedOrigin)) {\n\t\t\t\t\t\tconst sessionCurrentStreamsCount = session[kCurrentStreamsCount];\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tsessionCurrentStreamsCount >= sessionMaxConcurrentStreams ||\n\t\t\t\t\t\t\tsession[kGracefullyClosing] ||\n\t\t\t\t\t\t\t// Unfortunately the `close` event isn't called immediately,\n\t\t\t\t\t\t\t// so `session.destroyed` is `true`, but `session.closed` is `false`.\n\t\t\t\t\t\t\tsession.destroyed\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// We only need set this once.\n\t\t\t\t\t\tif (!optimalSession) {\n\t\t\t\t\t\t\tmaxConcurrentStreams = sessionMaxConcurrentStreams;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// We're looking for the session which has biggest current pending stream count,\n\t\t\t\t\t\t// in order to minimalize the amount of active sessions.\n\t\t\t\t\t\tif (sessionCurrentStreamsCount > currentStreamsCount) {\n\t\t\t\t\t\t\toptimalSession = session;\n\t\t\t\t\t\t\tcurrentStreamsCount = sessionCurrentStreamsCount;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (optimalSession) {\n\t\t\t\t\t/* istanbul ignore next: safety check */\n\t\t\t\t\tif (listeners.length !== 1) {\n\t\t\t\t\t\tfor (const {reject} of listeners) {\n\t\t\t\t\t\t\tconst error = new Error(\n\t\t\t\t\t\t\t\t`Expected the length of listeners to be 1, got ${listeners.length}.\\n` +\n\t\t\t\t\t\t\t\t'Please report this to https://github.com/szmarczak/http2-wrapper/'\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tlisteners[0].resolve(optimalSession);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (normalizedOptions in this.queue) {\n\t\t\t\tif (normalizedOrigin in this.queue[normalizedOptions]) {\n\t\t\t\t\t// There's already an item in the queue, just attach ourselves to it.\n\t\t\t\t\tthis.queue[normalizedOptions][normalizedOrigin].listeners.push(...listeners);\n\n\t\t\t\t\t// This shouldn't be executed here.\n\t\t\t\t\t// See the comment inside _tryToCreateNewSession.\n\t\t\t\t\tthis._tryToCreateNewSession(normalizedOptions, normalizedOrigin);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.queue[normalizedOptions] = {};\n\t\t\t}\n\n\t\t\t// The entry must be removed from the queue IMMEDIATELY when:\n\t\t\t// 1. the session connects successfully,\n\t\t\t// 2. an error occurs.\n\t\t\tconst removeFromQueue = () => {\n\t\t\t\t// Our entry can be replaced. We cannot remove the new one.\n\t\t\t\tif (normalizedOptions in this.queue && this.queue[normalizedOptions][normalizedOrigin] === entry) {\n\t\t\t\t\tdelete this.queue[normalizedOptions][normalizedOrigin];\n\n\t\t\t\t\tif (Object.keys(this.queue[normalizedOptions]).length === 0) {\n\t\t\t\t\t\tdelete this.queue[normalizedOptions];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// The main logic is here\n\t\t\tconst entry = () => {\n\t\t\t\tconst name = `${normalizedOrigin}:${normalizedOptions}`;\n\t\t\t\tlet receivedSettings = false;\n\n\t\t\t\ttry {\n\t\t\t\t\tconst session = http2.connect(origin, {\n\t\t\t\t\t\tcreateConnection: this.createConnection,\n\t\t\t\t\t\tsettings: this.settings,\n\t\t\t\t\t\tsession: this.tlsSessionCache.get(name),\n\t\t\t\t\t\t...options\n\t\t\t\t\t});\n\t\t\t\t\tsession[kCurrentStreamsCount] = 0;\n\t\t\t\t\tsession[kGracefullyClosing] = false;\n\n\t\t\t\t\tconst isFree = () => session[kCurrentStreamsCount] < session.remoteSettings.maxConcurrentStreams;\n\t\t\t\t\tlet wasFree = true;\n\n\t\t\t\t\tsession.socket.once('session', tlsSession => {\n\t\t\t\t\t\tthis.tlsSessionCache.set(name, tlsSession);\n\t\t\t\t\t});\n\n\t\t\t\t\tsession.once('error', error => {\n\t\t\t\t\t\t// Listeners are empty when the session successfully connected.\n\t\t\t\t\t\tfor (const {reject} of listeners) {\n\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// The connection got broken, purge the cache.\n\t\t\t\t\t\tthis.tlsSessionCache.delete(name);\n\t\t\t\t\t});\n\n\t\t\t\t\tsession.setTimeout(this.timeout, () => {\n\t\t\t\t\t\t// Terminates all streams owned by this session.\n\t\t\t\t\t\t// TODO: Maybe the streams should have a \"Session timed out\" error?\n\t\t\t\t\t\tsession.destroy();\n\t\t\t\t\t});\n\n\t\t\t\t\tsession.once('close', () => {\n\t\t\t\t\t\tif (receivedSettings) {\n\t\t\t\t\t\t\t// 1. If it wasn't free then no need to decrease because\n\t\t\t\t\t\t\t//    it has been decreased already in session.request().\n\t\t\t\t\t\t\t// 2. `stream.once('close')` won't increment the count\n\t\t\t\t\t\t\t//    because the session is already closed.\n\t\t\t\t\t\t\tif (wasFree) {\n\t\t\t\t\t\t\t\tthis._freeSessionsCount--;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis._sessionsCount--;\n\n\t\t\t\t\t\t\t// This cannot be moved to the stream logic,\n\t\t\t\t\t\t\t// because there may be a session that hadn't made a single request.\n\t\t\t\t\t\t\tconst where = this.sessions[normalizedOptions];\n\t\t\t\t\t\t\twhere.splice(where.indexOf(session), 1);\n\n\t\t\t\t\t\t\tif (where.length === 0) {\n\t\t\t\t\t\t\t\tdelete this.sessions[normalizedOptions];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Broken connection\n\t\t\t\t\t\t\tconst error = new Error('Session closed without receiving a SETTINGS frame');\n\t\t\t\t\t\t\terror.code = 'HTTP2WRAPPER_NOSETTINGS';\n\n\t\t\t\t\t\t\tfor (const {reject} of listeners) {\n\t\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tremoveFromQueue();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// There may be another session awaiting.\n\t\t\t\t\t\tthis._tryToCreateNewSession(normalizedOptions, normalizedOrigin);\n\t\t\t\t\t});\n\n\t\t\t\t\t// Iterates over the queue and processes listeners.\n\t\t\t\t\tconst processListeners = () => {\n\t\t\t\t\t\tif (!(normalizedOptions in this.queue) || !isFree()) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor (const origin of session[kOriginSet]) {\n\t\t\t\t\t\t\tif (origin in this.queue[normalizedOptions]) {\n\t\t\t\t\t\t\t\tconst {listeners} = this.queue[normalizedOptions][origin];\n\n\t\t\t\t\t\t\t\t// Prevents session overloading.\n\t\t\t\t\t\t\t\twhile (listeners.length !== 0 && isFree()) {\n\t\t\t\t\t\t\t\t\t// We assume `resolve(...)` calls `request(...)` *directly*,\n\t\t\t\t\t\t\t\t\t// otherwise the session will get overloaded.\n\t\t\t\t\t\t\t\t\tlisteners.shift().resolve(session);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tconst where = this.queue[normalizedOptions];\n\t\t\t\t\t\t\t\tif (where[origin].listeners.length === 0) {\n\t\t\t\t\t\t\t\t\tdelete where[origin];\n\n\t\t\t\t\t\t\t\t\tif (Object.keys(where).length === 0) {\n\t\t\t\t\t\t\t\t\t\tdelete this.queue[normalizedOptions];\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// We're no longer free, no point in continuing.\n\t\t\t\t\t\t\t\tif (!isFree()) {\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\t// The Origin Set cannot shrink. No need to check if it suddenly became covered by another one.\n\t\t\t\t\tsession.on('origin', () => {\n\t\t\t\t\t\tsession[kOriginSet] = session.originSet;\n\n\t\t\t\t\t\tif (!isFree()) {\n\t\t\t\t\t\t\t// The session is full.\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tprocessListeners();\n\n\t\t\t\t\t\t// Close covered sessions (if possible).\n\t\t\t\t\t\tcloseCoveredSessions(this.sessions[normalizedOptions], session);\n\t\t\t\t\t});\n\n\t\t\t\t\tsession.once('remoteSettings', () => {\n\t\t\t\t\t\t// Fix Node.js bug preventing the process from exiting\n\t\t\t\t\t\tsession.ref();\n\t\t\t\t\t\tsession.unref();\n\n\t\t\t\t\t\tthis._sessionsCount++;\n\n\t\t\t\t\t\t// The Agent could have been destroyed already.\n\t\t\t\t\t\tif (entry.destroyed) {\n\t\t\t\t\t\t\tconst error = new Error('Agent has been destroyed');\n\n\t\t\t\t\t\t\tfor (const listener of listeners) {\n\t\t\t\t\t\t\t\tlistener.reject(error);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsession.destroy();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tsession[kOriginSet] = session.originSet;\n\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconst where = this.sessions;\n\n\t\t\t\t\t\t\tif (normalizedOptions in where) {\n\t\t\t\t\t\t\t\tconst sessions = where[normalizedOptions];\n\t\t\t\t\t\t\t\tsessions.splice(getSortedIndex(sessions, session, compareSessions), 0, session);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twhere[normalizedOptions] = [session];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis._freeSessionsCount += 1;\n\t\t\t\t\t\treceivedSettings = true;\n\n\t\t\t\t\t\tthis.emit('session', session);\n\n\t\t\t\t\t\tprocessListeners();\n\t\t\t\t\t\tremoveFromQueue();\n\n\t\t\t\t\t\t// TODO: Close last recently used (or least used?) session\n\t\t\t\t\t\tif (session[kCurrentStreamsCount] === 0 && this._freeSessionsCount > this.maxFreeSessions) {\n\t\t\t\t\t\t\tsession.close();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Check if we haven't managed to execute all listeners.\n\t\t\t\t\t\tif (listeners.length !== 0) {\n\t\t\t\t\t\t\t// Request for a new session with predefined listeners.\n\t\t\t\t\t\t\tthis.getSession(normalizedOrigin, options, listeners);\n\t\t\t\t\t\t\tlisteners.length = 0;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// `session.remoteSettings.maxConcurrentStreams` might get increased\n\t\t\t\t\t\tsession.on('remoteSettings', () => {\n\t\t\t\t\t\t\tprocessListeners();\n\n\t\t\t\t\t\t\t// In case the Origin Set changes\n\t\t\t\t\t\t\tcloseCoveredSessions(this.sessions[normalizedOptions], session);\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\t// Shim `session.request()` in order to catch all streams\n\t\t\t\t\tsession[kRequest] = session.request;\n\t\t\t\t\tsession.request = (headers, streamOptions) => {\n\t\t\t\t\t\tif (session[kGracefullyClosing]) {\n\t\t\t\t\t\t\tthrow new Error('The session is gracefully closing. No new streams are allowed.');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst stream = session[kRequest](headers, streamOptions);\n\n\t\t\t\t\t\t// The process won't exit until the session is closed or all requests are gone.\n\t\t\t\t\t\tsession.ref();\n\n\t\t\t\t\t\t++session[kCurrentStreamsCount];\n\n\t\t\t\t\t\tif (session[kCurrentStreamsCount] === session.remoteSettings.maxConcurrentStreams) {\n\t\t\t\t\t\t\tthis._freeSessionsCount--;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstream.once('close', () => {\n\t\t\t\t\t\t\twasFree = isFree();\n\n\t\t\t\t\t\t\t--session[kCurrentStreamsCount];\n\n\t\t\t\t\t\t\tif (!session.destroyed && !session.closed) {\n\t\t\t\t\t\t\t\tcloseSessionIfCovered(this.sessions[normalizedOptions], session);\n\n\t\t\t\t\t\t\t\tif (isFree() && !session.closed) {\n\t\t\t\t\t\t\t\t\tif (!wasFree) {\n\t\t\t\t\t\t\t\t\t\tthis._freeSessionsCount++;\n\n\t\t\t\t\t\t\t\t\t\twasFree = true;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tconst isEmpty = session[kCurrentStreamsCount] === 0;\n\n\t\t\t\t\t\t\t\t\tif (isEmpty) {\n\t\t\t\t\t\t\t\t\t\tsession.unref();\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\tisEmpty &&\n\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\tthis._freeSessionsCount > this.maxFreeSessions ||\n\t\t\t\t\t\t\t\t\t\t\tsession[kGracefullyClosing]\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tsession.close();\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tcloseCoveredSessions(this.sessions[normalizedOptions], session);\n\t\t\t\t\t\t\t\t\t\tprocessListeners();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn stream;\n\t\t\t\t\t};\n\t\t\t\t} catch (error) {\n\t\t\t\t\tfor (const listener of listeners) {\n\t\t\t\t\t\tlistener.reject(error);\n\t\t\t\t\t}\n\n\t\t\t\t\tremoveFromQueue();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tentry.listeners = listeners;\n\t\t\tentry.completed = false;\n\t\t\tentry.destroyed = false;\n\n\t\t\tthis.queue[normalizedOptions][normalizedOrigin] = entry;\n\t\t\tthis._tryToCreateNewSession(normalizedOptions, normalizedOrigin);\n\t\t});\n\t}\n\n\trequest(origin, options, headers, streamOptions) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.getSession(origin, options, [{\n\t\t\t\treject,\n\t\t\t\tresolve: session => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tresolve(session.request(headers, streamOptions));\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}]);\n\t\t});\n\t}\n\n\tcreateConnection(origin, options) {\n\t\treturn Agent.connect(origin, options);\n\t}\n\n\tstatic connect(origin, options) {\n\t\toptions.ALPNProtocols = ['h2'];\n\n\t\tconst port = origin.port || 443;\n\t\tconst host = origin.hostname || origin.host;\n\n\t\tif (typeof options.servername === 'undefined') {\n\t\t\toptions.servername = host;\n\t\t}\n\n\t\treturn tls.connect(port, host, options);\n\t}\n\n\tcloseFreeSessions() {\n\t\tfor (const sessions of Object.values(this.sessions)) {\n\t\t\tfor (const session of sessions) {\n\t\t\t\tif (session[kCurrentStreamsCount] === 0) {\n\t\t\t\t\tsession.close();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tdestroy(reason) {\n\t\tfor (const sessions of Object.values(this.sessions)) {\n\t\t\tfor (const session of sessions) {\n\t\t\t\tsession.destroy(reason);\n\t\t\t}\n\t\t}\n\n\t\tfor (const entriesOfAuthority of Object.values(this.queue)) {\n\t\t\tfor (const entry of Object.values(entriesOfAuthority)) {\n\t\t\t\tentry.destroyed = true;\n\t\t\t}\n\t\t}\n\n\t\t// New requests should NOT attach to destroyed sessions\n\t\tthis.queue = {};\n\t}\n\n\tget freeSessions() {\n\t\treturn getSessions({agent: this, isFree: true});\n\t}\n\n\tget busySessions() {\n\t\treturn getSessions({agent: this, isFree: false});\n\t}\n}\n\nAgent.kCurrentStreamsCount = kCurrentStreamsCount;\nAgent.kGracefullyClosing = kGracefullyClosing;\n\nmodule.exports = {\n\tAgent,\n\tglobalAgent: new Agent()\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/http2-wrapper/source/agent.js?")},"./node_modules/http2-wrapper/source/auto.js":
/*!***************************************************!*\
  !*** ./node_modules/http2-wrapper/source/auto.js ***!
  \***************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nconst http = __webpack_require__(/*! http */ \"http\");\nconst https = __webpack_require__(/*! https */ \"https\");\nconst resolveALPN = __webpack_require__(/*! resolve-alpn */ \"./node_modules/resolve-alpn/index.js\");\nconst QuickLRU = __webpack_require__(/*! quick-lru */ \"./node_modules/quick-lru/index.js\");\nconst Http2ClientRequest = __webpack_require__(/*! ./client-request */ \"./node_modules/http2-wrapper/source/client-request.js\");\nconst calculateServerName = __webpack_require__(/*! ./utils/calculate-server-name */ \"./node_modules/http2-wrapper/source/utils/calculate-server-name.js\");\nconst urlToOptions = __webpack_require__(/*! ./utils/url-to-options */ \"./node_modules/http2-wrapper/source/utils/url-to-options.js\");\n\nconst cache = new QuickLRU({maxSize: 100});\nconst queue = new Map();\n\nconst installSocket = (agent, socket, options) => {\n\tsocket._httpMessage = {shouldKeepAlive: true};\n\n\tconst onFree = () => {\n\t\tagent.emit('free', socket, options);\n\t};\n\n\tsocket.on('free', onFree);\n\n\tconst onClose = () => {\n\t\tagent.removeSocket(socket, options);\n\t};\n\n\tsocket.on('close', onClose);\n\n\tconst onRemove = () => {\n\t\tagent.removeSocket(socket, options);\n\t\tsocket.off('close', onClose);\n\t\tsocket.off('free', onFree);\n\t\tsocket.off('agentRemove', onRemove);\n\t};\n\n\tsocket.on('agentRemove', onRemove);\n\n\tagent.emit('free', socket, options);\n};\n\nconst resolveProtocol = async options => {\n\tconst name = `${options.host}:${options.port}:${options.ALPNProtocols.sort()}`;\n\n\tif (!cache.has(name)) {\n\t\tif (queue.has(name)) {\n\t\t\tconst result = await queue.get(name);\n\t\t\treturn result.alpnProtocol;\n\t\t}\n\n\t\tconst {path, agent} = options;\n\t\toptions.path = options.socketPath;\n\n\t\tconst resultPromise = resolveALPN(options);\n\t\tqueue.set(name, resultPromise);\n\n\t\ttry {\n\t\t\tconst {socket, alpnProtocol} = await resultPromise;\n\t\t\tcache.set(name, alpnProtocol);\n\n\t\t\toptions.path = path;\n\n\t\t\tif (alpnProtocol === 'h2') {\n\t\t\t\t// https://github.com/nodejs/node/issues/33343\n\t\t\t\tsocket.destroy();\n\t\t\t} else {\n\t\t\t\tconst {globalAgent} = https;\n\t\t\t\tconst defaultCreateConnection = https.Agent.prototype.createConnection;\n\n\t\t\t\tif (agent) {\n\t\t\t\t\tif (agent.createConnection === defaultCreateConnection) {\n\t\t\t\t\t\tinstallSocket(agent, socket, options);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsocket.destroy();\n\t\t\t\t\t}\n\t\t\t\t} else if (globalAgent.createConnection === defaultCreateConnection) {\n\t\t\t\t\tinstallSocket(globalAgent, socket, options);\n\t\t\t\t} else {\n\t\t\t\t\tsocket.destroy();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tqueue.delete(name);\n\n\t\t\treturn alpnProtocol;\n\t\t} catch (error) {\n\t\t\tqueue.delete(name);\n\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\treturn cache.get(name);\n};\n\nmodule.exports = async (input, options, callback) => {\n\tif (typeof input === 'string' || input instanceof URL) {\n\t\tinput = urlToOptions(new URL(input));\n\t}\n\n\tif (typeof options === 'function') {\n\t\tcallback = options;\n\t\toptions = undefined;\n\t}\n\n\toptions = {\n\t\tALPNProtocols: ['h2', 'http/1.1'],\n\t\t...input,\n\t\t...options,\n\t\tresolveSocket: true\n\t};\n\n\tif (!Array.isArray(options.ALPNProtocols) || options.ALPNProtocols.length === 0) {\n\t\tthrow new Error('The `ALPNProtocols` option must be an Array with at least one entry');\n\t}\n\n\toptions.protocol = options.protocol || 'https:';\n\tconst isHttps = options.protocol === 'https:';\n\n\toptions.host = options.hostname || options.host || 'localhost';\n\toptions.session = options.tlsSession;\n\toptions.servername = options.servername || calculateServerName(options);\n\toptions.port = options.port || (isHttps ? 443 : 80);\n\toptions._defaultAgent = isHttps ? https.globalAgent : http.globalAgent;\n\n\tconst agents = options.agent;\n\n\tif (agents) {\n\t\tif (agents.addRequest) {\n\t\t\tthrow new Error('The `options.agent` object can contain only `http`, `https` or `http2` properties');\n\t\t}\n\n\t\toptions.agent = agents[isHttps ? 'https' : 'http'];\n\t}\n\n\tif (isHttps) {\n\t\tconst protocol = await resolveProtocol(options);\n\n\t\tif (protocol === 'h2') {\n\t\t\tif (agents) {\n\t\t\t\toptions.agent = agents.http2;\n\t\t\t}\n\n\t\t\treturn new Http2ClientRequest(options, callback);\n\t\t}\n\t}\n\n\treturn http.request(options, callback);\n};\n\nmodule.exports.protocolCache = cache;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/http2-wrapper/source/auto.js?")},"./node_modules/http2-wrapper/source/client-request.js":
/*!*************************************************************!*\
  !*** ./node_modules/http2-wrapper/source/client-request.js ***!
  \*************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nconst http2 = __webpack_require__(/*! http2 */ \"http2\");\nconst {Writable} = __webpack_require__(/*! stream */ \"stream\");\nconst {Agent, globalAgent} = __webpack_require__(/*! ./agent */ \"./node_modules/http2-wrapper/source/agent.js\");\nconst IncomingMessage = __webpack_require__(/*! ./incoming-message */ \"./node_modules/http2-wrapper/source/incoming-message.js\");\nconst urlToOptions = __webpack_require__(/*! ./utils/url-to-options */ \"./node_modules/http2-wrapper/source/utils/url-to-options.js\");\nconst proxyEvents = __webpack_require__(/*! ./utils/proxy-events */ \"./node_modules/http2-wrapper/source/utils/proxy-events.js\");\nconst isRequestPseudoHeader = __webpack_require__(/*! ./utils/is-request-pseudo-header */ \"./node_modules/http2-wrapper/source/utils/is-request-pseudo-header.js\");\nconst {\n\tERR_INVALID_ARG_TYPE,\n\tERR_INVALID_PROTOCOL,\n\tERR_HTTP_HEADERS_SENT,\n\tERR_INVALID_HTTP_TOKEN,\n\tERR_HTTP_INVALID_HEADER_VALUE,\n\tERR_INVALID_CHAR\n} = __webpack_require__(/*! ./utils/errors */ \"./node_modules/http2-wrapper/source/utils/errors.js\");\n\nconst {\n\tHTTP2_HEADER_STATUS,\n\tHTTP2_HEADER_METHOD,\n\tHTTP2_HEADER_PATH,\n\tHTTP2_METHOD_CONNECT\n} = http2.constants;\n\nconst kHeaders = Symbol('headers');\nconst kOrigin = Symbol('origin');\nconst kSession = Symbol('session');\nconst kOptions = Symbol('options');\nconst kFlushedHeaders = Symbol('flushedHeaders');\nconst kJobs = Symbol('jobs');\n\nconst isValidHttpToken = /^[\\^`\\-\\w!#$%&*+.|~]+$/;\nconst isInvalidHeaderValue = /[^\\t\\u0020-\\u007E\\u0080-\\u00FF]/;\n\nclass ClientRequest extends Writable {\n\tconstructor(input, options, callback) {\n\t\tsuper({\n\t\t\tautoDestroy: false\n\t\t});\n\n\t\tconst hasInput = typeof input === 'string' || input instanceof URL;\n\t\tif (hasInput) {\n\t\t\tinput = urlToOptions(input instanceof URL ? input : new URL(input));\n\t\t}\n\n\t\tif (typeof options === 'function' || options === undefined) {\n\t\t\t// (options, callback)\n\t\t\tcallback = options;\n\t\t\toptions = hasInput ? input : {...input};\n\t\t} else {\n\t\t\t// (input, options, callback)\n\t\t\toptions = {...input, ...options};\n\t\t}\n\n\t\tif (options.h2session) {\n\t\t\tthis[kSession] = options.h2session;\n\t\t} else if (options.agent === false) {\n\t\t\tthis.agent = new Agent({maxFreeSessions: 0});\n\t\t} else if (typeof options.agent === 'undefined' || options.agent === null) {\n\t\t\tif (typeof options.createConnection === 'function') {\n\t\t\t\t// This is a workaround - we don't have to create the session on our own.\n\t\t\t\tthis.agent = new Agent({maxFreeSessions: 0});\n\t\t\t\tthis.agent.createConnection = options.createConnection;\n\t\t\t} else {\n\t\t\t\tthis.agent = globalAgent;\n\t\t\t}\n\t\t} else if (typeof options.agent.request === 'function') {\n\t\t\tthis.agent = options.agent;\n\t\t} else {\n\t\t\tthrow new ERR_INVALID_ARG_TYPE('options.agent', ['Agent-like Object', 'undefined', 'false'], options.agent);\n\t\t}\n\n\t\tif (options.protocol && options.protocol !== 'https:') {\n\t\t\tthrow new ERR_INVALID_PROTOCOL(options.protocol, 'https:');\n\t\t}\n\n\t\tconst port = options.port || options.defaultPort || (this.agent && this.agent.defaultPort) || 443;\n\t\tconst host = options.hostname || options.host || 'localhost';\n\n\t\t// Don't enforce the origin via options. It may be changed in an Agent.\n\t\tdelete options.hostname;\n\t\tdelete options.host;\n\t\tdelete options.port;\n\n\t\tconst {timeout} = options;\n\t\toptions.timeout = undefined;\n\n\t\tthis[kHeaders] = Object.create(null);\n\t\tthis[kJobs] = [];\n\n\t\tthis.socket = null;\n\t\tthis.connection = null;\n\n\t\tthis.method = options.method || 'GET';\n\t\tthis.path = options.path;\n\n\t\tthis.res = null;\n\t\tthis.aborted = false;\n\t\tthis.reusedSocket = false;\n\n\t\tif (options.headers) {\n\t\t\tfor (const [header, value] of Object.entries(options.headers)) {\n\t\t\t\tthis.setHeader(header, value);\n\t\t\t}\n\t\t}\n\n\t\tif (options.auth && !('authorization' in this[kHeaders])) {\n\t\t\tthis[kHeaders].authorization = 'Basic ' + Buffer.from(options.auth).toString('base64');\n\t\t}\n\n\t\toptions.session = options.tlsSession;\n\t\toptions.path = options.socketPath;\n\n\t\tthis[kOptions] = options;\n\n\t\t// Clients that generate HTTP/2 requests directly SHOULD use the :authority pseudo-header field instead of the Host header field.\n\t\tif (port === 443) {\n\t\t\tthis[kOrigin] = `https://${host}`;\n\n\t\t\tif (!(':authority' in this[kHeaders])) {\n\t\t\t\tthis[kHeaders][':authority'] = host;\n\t\t\t}\n\t\t} else {\n\t\t\tthis[kOrigin] = `https://${host}:${port}`;\n\n\t\t\tif (!(':authority' in this[kHeaders])) {\n\t\t\t\tthis[kHeaders][':authority'] = `${host}:${port}`;\n\t\t\t}\n\t\t}\n\n\t\tif (timeout) {\n\t\t\tthis.setTimeout(timeout);\n\t\t}\n\n\t\tif (callback) {\n\t\t\tthis.once('response', callback);\n\t\t}\n\n\t\tthis[kFlushedHeaders] = false;\n\t}\n\n\tget method() {\n\t\treturn this[kHeaders][HTTP2_HEADER_METHOD];\n\t}\n\n\tset method(value) {\n\t\tif (value) {\n\t\t\tthis[kHeaders][HTTP2_HEADER_METHOD] = value.toUpperCase();\n\t\t}\n\t}\n\n\tget path() {\n\t\treturn this[kHeaders][HTTP2_HEADER_PATH];\n\t}\n\n\tset path(value) {\n\t\tif (value) {\n\t\t\tthis[kHeaders][HTTP2_HEADER_PATH] = value;\n\t\t}\n\t}\n\n\tget _mustNotHaveABody() {\n\t\treturn this.method === 'GET' || this.method === 'HEAD' || this.method === 'DELETE';\n\t}\n\n\t_write(chunk, encoding, callback) {\n\t\t// https://github.com/nodejs/node/blob/654df09ae0c5e17d1b52a900a545f0664d8c7627/lib/internal/http2/util.js#L148-L156\n\t\tif (this._mustNotHaveABody) {\n\t\t\tcallback(new Error('The GET, HEAD and DELETE methods must NOT have a body'));\n\t\t\t/* istanbul ignore next: Node.js 12 throws directly */\n\t\t\treturn;\n\t\t}\n\n\t\tthis.flushHeaders();\n\n\t\tconst callWrite = () => this._request.write(chunk, encoding, callback);\n\t\tif (this._request) {\n\t\t\tcallWrite();\n\t\t} else {\n\t\t\tthis[kJobs].push(callWrite);\n\t\t}\n\t}\n\n\t_final(callback) {\n\t\tif (this.destroyed) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.flushHeaders();\n\n\t\tconst callEnd = () => {\n\t\t\t// For GET, HEAD and DELETE\n\t\t\tif (this._mustNotHaveABody) {\n\t\t\t\tcallback();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._request.end(callback);\n\t\t};\n\n\t\tif (this._request) {\n\t\t\tcallEnd();\n\t\t} else {\n\t\t\tthis[kJobs].push(callEnd);\n\t\t}\n\t}\n\n\tabort() {\n\t\tif (this.res && this.res.complete) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.aborted) {\n\t\t\tprocess.nextTick(() => this.emit('abort'));\n\t\t}\n\n\t\tthis.aborted = true;\n\n\t\tthis.destroy();\n\t}\n\n\t_destroy(error, callback) {\n\t\tif (this.res) {\n\t\t\tthis.res._dump();\n\t\t}\n\n\t\tif (this._request) {\n\t\t\tthis._request.destroy();\n\t\t}\n\n\t\tcallback(error);\n\t}\n\n\tasync flushHeaders() {\n\t\tif (this[kFlushedHeaders] || this.destroyed) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis[kFlushedHeaders] = true;\n\n\t\tconst isConnectMethod = this.method === HTTP2_METHOD_CONNECT;\n\n\t\t// The real magic is here\n\t\tconst onStream = stream => {\n\t\t\tthis._request = stream;\n\n\t\t\tif (this.destroyed) {\n\t\t\t\tstream.destroy();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Forwards `timeout`, `continue`, `close` and `error` events to this instance.\n\t\t\tif (!isConnectMethod) {\n\t\t\t\tproxyEvents(stream, this, ['timeout', 'continue', 'close', 'error']);\n\t\t\t}\n\n\t\t\t// Wait for the `finish` event. We don't want to emit the `response` event\n\t\t\t// before `request.end()` is called.\n\t\t\tconst waitForEnd = fn => {\n\t\t\t\treturn (...args) => {\n\t\t\t\t\tif (!this.writable && !this.destroyed) {\n\t\t\t\t\t\tfn(...args);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.once('finish', () => {\n\t\t\t\t\t\t\tfn(...args);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t\t// This event tells we are ready to listen for the data.\n\t\t\tstream.once('response', waitForEnd((headers, flags, rawHeaders) => {\n\t\t\t\t// If we were to emit raw request stream, it would be as fast as the native approach.\n\t\t\t\t// Note that wrapping the raw stream in a Proxy instance won't improve the performance (already tested it).\n\t\t\t\tconst response = new IncomingMessage(this.socket, stream.readableHighWaterMark);\n\t\t\t\tthis.res = response;\n\n\t\t\t\tresponse.req = this;\n\t\t\t\tresponse.statusCode = headers[HTTP2_HEADER_STATUS];\n\t\t\t\tresponse.headers = headers;\n\t\t\t\tresponse.rawHeaders = rawHeaders;\n\n\t\t\t\tresponse.once('end', () => {\n\t\t\t\t\tif (this.aborted) {\n\t\t\t\t\t\tresponse.aborted = true;\n\t\t\t\t\t\tresponse.emit('aborted');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresponse.complete = true;\n\n\t\t\t\t\t\t// Has no effect, just be consistent with the Node.js behavior\n\t\t\t\t\t\tresponse.socket = null;\n\t\t\t\t\t\tresponse.connection = null;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (isConnectMethod) {\n\t\t\t\t\tresponse.upgrade = true;\n\n\t\t\t\t\t// The HTTP1 API says the socket is detached here,\n\t\t\t\t\t// but we can't do that so we pass the original HTTP2 request.\n\t\t\t\t\tif (this.emit('connect', response, stream, Buffer.alloc(0))) {\n\t\t\t\t\t\tthis.emit('close');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// No listeners attached, destroy the original request.\n\t\t\t\t\t\tstream.destroy();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Forwards data\n\t\t\t\t\tstream.on('data', chunk => {\n\t\t\t\t\t\tif (!response._dumped && !response.push(chunk)) {\n\t\t\t\t\t\t\tstream.pause();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tstream.once('end', () => {\n\t\t\t\t\t\tresponse.push(null);\n\t\t\t\t\t});\n\n\t\t\t\t\tif (!this.emit('response', response)) {\n\t\t\t\t\t\t// No listeners attached, dump the response.\n\t\t\t\t\t\tresponse._dump();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}));\n\n\t\t\t// Emits `information` event\n\t\t\tstream.once('headers', waitForEnd(\n\t\t\t\theaders => this.emit('information', {statusCode: headers[HTTP2_HEADER_STATUS]})\n\t\t\t));\n\n\t\t\tstream.once('trailers', waitForEnd((trailers, flags, rawTrailers) => {\n\t\t\t\tconst {res} = this;\n\n\t\t\t\t// Assigns trailers to the response object.\n\t\t\t\tres.trailers = trailers;\n\t\t\t\tres.rawTrailers = rawTrailers;\n\t\t\t}));\n\n\t\t\tconst {socket} = stream.session;\n\t\t\tthis.socket = socket;\n\t\t\tthis.connection = socket;\n\n\t\t\tfor (const job of this[kJobs]) {\n\t\t\t\tjob();\n\t\t\t}\n\n\t\t\tthis.emit('socket', this.socket);\n\t\t};\n\n\t\t// Makes a HTTP2 request\n\t\tif (this[kSession]) {\n\t\t\ttry {\n\t\t\t\tonStream(this[kSession].request(this[kHeaders]));\n\t\t\t} catch (error) {\n\t\t\t\tthis.emit('error', error);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.reusedSocket = true;\n\n\t\t\ttry {\n\t\t\t\tonStream(await this.agent.request(this[kOrigin], this[kOptions], this[kHeaders]));\n\t\t\t} catch (error) {\n\t\t\t\tthis.emit('error', error);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetHeader(name) {\n\t\tif (typeof name !== 'string') {\n\t\t\tthrow new ERR_INVALID_ARG_TYPE('name', 'string', name);\n\t\t}\n\n\t\treturn this[kHeaders][name.toLowerCase()];\n\t}\n\n\tget headersSent() {\n\t\treturn this[kFlushedHeaders];\n\t}\n\n\tremoveHeader(name) {\n\t\tif (typeof name !== 'string') {\n\t\t\tthrow new ERR_INVALID_ARG_TYPE('name', 'string', name);\n\t\t}\n\n\t\tif (this.headersSent) {\n\t\t\tthrow new ERR_HTTP_HEADERS_SENT('remove');\n\t\t}\n\n\t\tdelete this[kHeaders][name.toLowerCase()];\n\t}\n\n\tsetHeader(name, value) {\n\t\tif (this.headersSent) {\n\t\t\tthrow new ERR_HTTP_HEADERS_SENT('set');\n\t\t}\n\n\t\tif (typeof name !== 'string' || (!isValidHttpToken.test(name) && !isRequestPseudoHeader(name))) {\n\t\t\tthrow new ERR_INVALID_HTTP_TOKEN('Header name', name);\n\t\t}\n\n\t\tif (typeof value === 'undefined') {\n\t\t\tthrow new ERR_HTTP_INVALID_HEADER_VALUE(value, name);\n\t\t}\n\n\t\tif (isInvalidHeaderValue.test(value)) {\n\t\t\tthrow new ERR_INVALID_CHAR('header content', name);\n\t\t}\n\n\t\tthis[kHeaders][name.toLowerCase()] = value;\n\t}\n\n\tsetNoDelay() {\n\t\t// HTTP2 sockets cannot be malformed, do nothing.\n\t}\n\n\tsetSocketKeepAlive() {\n\t\t// HTTP2 sockets cannot be malformed, do nothing.\n\t}\n\n\tsetTimeout(ms, callback) {\n\t\tconst applyTimeout = () => this._request.setTimeout(ms, callback);\n\n\t\tif (this._request) {\n\t\t\tapplyTimeout();\n\t\t} else {\n\t\t\tthis[kJobs].push(applyTimeout);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tget maxHeadersCount() {\n\t\tif (!this.destroyed && this._request) {\n\t\t\treturn this._request.session.localSettings.maxHeaderListSize;\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tset maxHeadersCount(_value) {\n\t\t// Updating HTTP2 settings would affect all requests, do nothing.\n\t}\n}\n\nmodule.exports = ClientRequest;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/http2-wrapper/source/client-request.js?")},"./node_modules/http2-wrapper/source/incoming-message.js":
/*!***************************************************************!*\
  !*** ./node_modules/http2-wrapper/source/incoming-message.js ***!
  \***************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nconst {Readable} = __webpack_require__(/*! stream */ \"stream\");\n\nclass IncomingMessage extends Readable {\n\tconstructor(socket, highWaterMark) {\n\t\tsuper({\n\t\t\thighWaterMark,\n\t\t\tautoDestroy: false\n\t\t});\n\n\t\tthis.statusCode = null;\n\t\tthis.statusMessage = '';\n\t\tthis.httpVersion = '2.0';\n\t\tthis.httpVersionMajor = 2;\n\t\tthis.httpVersionMinor = 0;\n\t\tthis.headers = {};\n\t\tthis.trailers = {};\n\t\tthis.req = null;\n\n\t\tthis.aborted = false;\n\t\tthis.complete = false;\n\t\tthis.upgrade = null;\n\n\t\tthis.rawHeaders = [];\n\t\tthis.rawTrailers = [];\n\n\t\tthis.socket = socket;\n\t\tthis.connection = socket;\n\n\t\tthis._dumped = false;\n\t}\n\n\t_destroy(error) {\n\t\tthis.req._request.destroy(error);\n\t}\n\n\tsetTimeout(ms, callback) {\n\t\tthis.req.setTimeout(ms, callback);\n\t\treturn this;\n\t}\n\n\t_dump() {\n\t\tif (!this._dumped) {\n\t\t\tthis._dumped = true;\n\n\t\t\tthis.removeAllListeners('data');\n\t\t\tthis.resume();\n\t\t}\n\t}\n\n\t_read() {\n\t\tif (this.req) {\n\t\t\tthis.req._request.resume();\n\t\t}\n\t}\n}\n\nmodule.exports = IncomingMessage;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/http2-wrapper/source/incoming-message.js?")},"./node_modules/http2-wrapper/source/index.js":
/*!****************************************************!*\
  !*** ./node_modules/http2-wrapper/source/index.js ***!
  \****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\nconst http2 = __webpack_require__(/*! http2 */ "http2");\nconst agent = __webpack_require__(/*! ./agent */ "./node_modules/http2-wrapper/source/agent.js");\nconst ClientRequest = __webpack_require__(/*! ./client-request */ "./node_modules/http2-wrapper/source/client-request.js");\nconst IncomingMessage = __webpack_require__(/*! ./incoming-message */ "./node_modules/http2-wrapper/source/incoming-message.js");\nconst auto = __webpack_require__(/*! ./auto */ "./node_modules/http2-wrapper/source/auto.js");\n\nconst request = (url, options, callback) => {\n\treturn new ClientRequest(url, options, callback);\n};\n\nconst get = (url, options, callback) => {\n\t// eslint-disable-next-line unicorn/prevent-abbreviations\n\tconst req = new ClientRequest(url, options, callback);\n\treq.end();\n\n\treturn req;\n};\n\nmodule.exports = {\n\t...http2,\n\tClientRequest,\n\tIncomingMessage,\n\t...agent,\n\trequest,\n\tget,\n\tauto\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/http2-wrapper/source/index.js?')},"./node_modules/http2-wrapper/source/utils/calculate-server-name.js":
/*!**************************************************************************!*\
  !*** ./node_modules/http2-wrapper/source/utils/calculate-server-name.js ***!
  \**************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nconst net = __webpack_require__(/*! net */ \"net\");\n/* istanbul ignore file: https://github.com/nodejs/node/blob/v13.0.1/lib/_http_agent.js */\n\nmodule.exports = options => {\n\tlet servername = options.host;\n\tconst hostHeader = options.headers && options.headers.host;\n\n\tif (hostHeader) {\n\t\tif (hostHeader.startsWith('[')) {\n\t\t\tconst index = hostHeader.indexOf(']');\n\t\t\tif (index === -1) {\n\t\t\t\tservername = hostHeader;\n\t\t\t} else {\n\t\t\t\tservername = hostHeader.slice(1, -1);\n\t\t\t}\n\t\t} else {\n\t\t\tservername = hostHeader.split(':', 1)[0];\n\t\t}\n\t}\n\n\tif (net.isIP(servername)) {\n\t\treturn '';\n\t}\n\n\treturn servername;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/http2-wrapper/source/utils/calculate-server-name.js?")},"./node_modules/http2-wrapper/source/utils/errors.js":
/*!***********************************************************!*\
  !*** ./node_modules/http2-wrapper/source/utils/errors.js ***!
  \***********************************************************/module=>{"use strict";eval("\n/* istanbul ignore file: https://github.com/nodejs/node/blob/master/lib/internal/errors.js */\n\nconst makeError = (Base, key, getMessage) => {\n\tmodule.exports[key] = class NodeError extends Base {\n\t\tconstructor(...args) {\n\t\t\tsuper(typeof getMessage === 'string' ? getMessage : getMessage(args));\n\t\t\tthis.name = `${super.name} [${key}]`;\n\t\t\tthis.code = key;\n\t\t}\n\t};\n};\n\nmakeError(TypeError, 'ERR_INVALID_ARG_TYPE', args => {\n\tconst type = args[0].includes('.') ? 'property' : 'argument';\n\n\tlet valid = args[1];\n\tconst isManyTypes = Array.isArray(valid);\n\n\tif (isManyTypes) {\n\t\tvalid = `${valid.slice(0, -1).join(', ')} or ${valid.slice(-1)}`;\n\t}\n\n\treturn `The \"${args[0]}\" ${type} must be ${isManyTypes ? 'one of' : 'of'} type ${valid}. Received ${typeof args[2]}`;\n});\n\nmakeError(TypeError, 'ERR_INVALID_PROTOCOL', args => {\n\treturn `Protocol \"${args[0]}\" not supported. Expected \"${args[1]}\"`;\n});\n\nmakeError(Error, 'ERR_HTTP_HEADERS_SENT', args => {\n\treturn `Cannot ${args[0]} headers after they are sent to the client`;\n});\n\nmakeError(TypeError, 'ERR_INVALID_HTTP_TOKEN', args => {\n\treturn `${args[0]} must be a valid HTTP token [${args[1]}]`;\n});\n\nmakeError(TypeError, 'ERR_HTTP_INVALID_HEADER_VALUE', args => {\n\treturn `Invalid value \"${args[0]} for header \"${args[1]}\"`;\n});\n\nmakeError(TypeError, 'ERR_INVALID_CHAR', args => {\n\treturn `Invalid character in ${args[0]} [${args[1]}]`;\n});\n\n\n//# sourceURL=webpack://txadmin/./node_modules/http2-wrapper/source/utils/errors.js?")},"./node_modules/http2-wrapper/source/utils/is-request-pseudo-header.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/http2-wrapper/source/utils/is-request-pseudo-header.js ***!
  \*****************************************************************************/module=>{"use strict";eval("\n\nmodule.exports = header => {\n\tswitch (header) {\n\t\tcase ':method':\n\t\tcase ':scheme':\n\t\tcase ':authority':\n\t\tcase ':path':\n\t\t\treturn true;\n\t\tdefault:\n\t\t\treturn false;\n\t}\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/http2-wrapper/source/utils/is-request-pseudo-header.js?")},"./node_modules/http2-wrapper/source/utils/proxy-events.js":
/*!*****************************************************************!*\
  !*** ./node_modules/http2-wrapper/source/utils/proxy-events.js ***!
  \*****************************************************************/module=>{"use strict";eval("\n\nmodule.exports = (from, to, events) => {\n\tfor (const event of events) {\n\t\tfrom.on(event, (...args) => to.emit(event, ...args));\n\t}\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/http2-wrapper/source/utils/proxy-events.js?")},"./node_modules/http2-wrapper/source/utils/url-to-options.js":
/*!*******************************************************************!*\
  !*** ./node_modules/http2-wrapper/source/utils/url-to-options.js ***!
  \*******************************************************************/module=>{"use strict";eval("\n/* istanbul ignore file: https://github.com/nodejs/node/blob/a91293d4d9ab403046ab5eb022332e4e3d249bd3/lib/internal/url.js#L1257 */\n\nmodule.exports = url => {\n\tconst options = {\n\t\tprotocol: url.protocol,\n\t\thostname: typeof url.hostname === 'string' && url.hostname.startsWith('[') ? url.hostname.slice(1, -1) : url.hostname,\n\t\thost: url.host,\n\t\thash: url.hash,\n\t\tsearch: url.search,\n\t\tpathname: url.pathname,\n\t\thref: url.href,\n\t\tpath: `${url.pathname || ''}${url.search || ''}`\n\t};\n\n\tif (typeof url.port === 'string' && url.port.length !== 0) {\n\t\toptions.port = Number(url.port);\n\t}\n\n\tif (url.username || url.password) {\n\t\toptions.auth = `${url.username || ''}:${url.password || ''}`;\n\t}\n\n\treturn options;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/http2-wrapper/source/utils/url-to-options.js?")},"./node_modules/human-signals/build/src/core.js":
/*!******************************************************!*\
  !*** ./node_modules/human-signals/build/src/core.js ***!
  \******************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('Object.defineProperty(exports, "__esModule", ({value:true}));exports.SIGNALS=void 0;\n\nconst SIGNALS=[\n{\nname:"SIGHUP",\nnumber:1,\naction:"terminate",\ndescription:"Terminal closed",\nstandard:"posix"},\n\n{\nname:"SIGINT",\nnumber:2,\naction:"terminate",\ndescription:"User interruption with CTRL-C",\nstandard:"ansi"},\n\n{\nname:"SIGQUIT",\nnumber:3,\naction:"core",\ndescription:"User interruption with CTRL-\\\\",\nstandard:"posix"},\n\n{\nname:"SIGILL",\nnumber:4,\naction:"core",\ndescription:"Invalid machine instruction",\nstandard:"ansi"},\n\n{\nname:"SIGTRAP",\nnumber:5,\naction:"core",\ndescription:"Debugger breakpoint",\nstandard:"posix"},\n\n{\nname:"SIGABRT",\nnumber:6,\naction:"core",\ndescription:"Aborted",\nstandard:"ansi"},\n\n{\nname:"SIGIOT",\nnumber:6,\naction:"core",\ndescription:"Aborted",\nstandard:"bsd"},\n\n{\nname:"SIGBUS",\nnumber:7,\naction:"core",\ndescription:\n"Bus error due to misaligned, non-existing address or paging error",\nstandard:"bsd"},\n\n{\nname:"SIGEMT",\nnumber:7,\naction:"terminate",\ndescription:"Command should be emulated but is not implemented",\nstandard:"other"},\n\n{\nname:"SIGFPE",\nnumber:8,\naction:"core",\ndescription:"Floating point arithmetic error",\nstandard:"ansi"},\n\n{\nname:"SIGKILL",\nnumber:9,\naction:"terminate",\ndescription:"Forced termination",\nstandard:"posix",\nforced:true},\n\n{\nname:"SIGUSR1",\nnumber:10,\naction:"terminate",\ndescription:"Application-specific signal",\nstandard:"posix"},\n\n{\nname:"SIGSEGV",\nnumber:11,\naction:"core",\ndescription:"Segmentation fault",\nstandard:"ansi"},\n\n{\nname:"SIGUSR2",\nnumber:12,\naction:"terminate",\ndescription:"Application-specific signal",\nstandard:"posix"},\n\n{\nname:"SIGPIPE",\nnumber:13,\naction:"terminate",\ndescription:"Broken pipe or socket",\nstandard:"posix"},\n\n{\nname:"SIGALRM",\nnumber:14,\naction:"terminate",\ndescription:"Timeout or timer",\nstandard:"posix"},\n\n{\nname:"SIGTERM",\nnumber:15,\naction:"terminate",\ndescription:"Termination",\nstandard:"ansi"},\n\n{\nname:"SIGSTKFLT",\nnumber:16,\naction:"terminate",\ndescription:"Stack is empty or overflowed",\nstandard:"other"},\n\n{\nname:"SIGCHLD",\nnumber:17,\naction:"ignore",\ndescription:"Child process terminated, paused or unpaused",\nstandard:"posix"},\n\n{\nname:"SIGCLD",\nnumber:17,\naction:"ignore",\ndescription:"Child process terminated, paused or unpaused",\nstandard:"other"},\n\n{\nname:"SIGCONT",\nnumber:18,\naction:"unpause",\ndescription:"Unpaused",\nstandard:"posix",\nforced:true},\n\n{\nname:"SIGSTOP",\nnumber:19,\naction:"pause",\ndescription:"Paused",\nstandard:"posix",\nforced:true},\n\n{\nname:"SIGTSTP",\nnumber:20,\naction:"pause",\ndescription:"Paused using CTRL-Z or \\"suspend\\"",\nstandard:"posix"},\n\n{\nname:"SIGTTIN",\nnumber:21,\naction:"pause",\ndescription:"Background process cannot read terminal input",\nstandard:"posix"},\n\n{\nname:"SIGBREAK",\nnumber:21,\naction:"terminate",\ndescription:"User interruption with CTRL-BREAK",\nstandard:"other"},\n\n{\nname:"SIGTTOU",\nnumber:22,\naction:"pause",\ndescription:"Background process cannot write to terminal output",\nstandard:"posix"},\n\n{\nname:"SIGURG",\nnumber:23,\naction:"ignore",\ndescription:"Socket received out-of-band data",\nstandard:"bsd"},\n\n{\nname:"SIGXCPU",\nnumber:24,\naction:"core",\ndescription:"Process timed out",\nstandard:"bsd"},\n\n{\nname:"SIGXFSZ",\nnumber:25,\naction:"core",\ndescription:"File too big",\nstandard:"bsd"},\n\n{\nname:"SIGVTALRM",\nnumber:26,\naction:"terminate",\ndescription:"Timeout or timer",\nstandard:"bsd"},\n\n{\nname:"SIGPROF",\nnumber:27,\naction:"terminate",\ndescription:"Timeout or timer",\nstandard:"bsd"},\n\n{\nname:"SIGWINCH",\nnumber:28,\naction:"ignore",\ndescription:"Terminal window size changed",\nstandard:"bsd"},\n\n{\nname:"SIGIO",\nnumber:29,\naction:"terminate",\ndescription:"I/O is available",\nstandard:"other"},\n\n{\nname:"SIGPOLL",\nnumber:29,\naction:"terminate",\ndescription:"Watched event",\nstandard:"other"},\n\n{\nname:"SIGINFO",\nnumber:29,\naction:"ignore",\ndescription:"Request for process information",\nstandard:"other"},\n\n{\nname:"SIGPWR",\nnumber:30,\naction:"terminate",\ndescription:"Device running out of power",\nstandard:"systemv"},\n\n{\nname:"SIGSYS",\nnumber:31,\naction:"core",\ndescription:"Invalid system call",\nstandard:"other"},\n\n{\nname:"SIGUNUSED",\nnumber:31,\naction:"terminate",\ndescription:"Invalid system call",\nstandard:"other"}];exports.SIGNALS=SIGNALS;\n//# sourceMappingURL=core.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/human-signals/build/src/core.js?')},"./node_modules/human-signals/build/src/main.js":
/*!******************************************************!*\
  !*** ./node_modules/human-signals/build/src/main.js ***!
  \******************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('Object.defineProperty(exports, "__esModule", ({value:true}));exports.signalsByNumber=exports.signalsByName=void 0;var _os=__webpack_require__(/*! os */ "os");\n\nvar _signals=__webpack_require__(/*! ./signals.js */ "./node_modules/human-signals/build/src/signals.js");\nvar _realtime=__webpack_require__(/*! ./realtime.js */ "./node_modules/human-signals/build/src/realtime.js");\n\n\n\nconst getSignalsByName=function(){\nconst signals=(0,_signals.getSignals)();\nreturn signals.reduce(getSignalByName,{});\n};\n\nconst getSignalByName=function(\nsignalByNameMemo,\n{name,number,description,supported,action,forced,standard})\n{\nreturn{\n...signalByNameMemo,\n[name]:{name,number,description,supported,action,forced,standard}};\n\n};\n\nconst signalsByName=getSignalsByName();exports.signalsByName=signalsByName;\n\n\n\n\nconst getSignalsByNumber=function(){\nconst signals=(0,_signals.getSignals)();\nconst length=_realtime.SIGRTMAX+1;\nconst signalsA=Array.from({length},(value,number)=>\ngetSignalByNumber(number,signals));\n\nreturn Object.assign({},...signalsA);\n};\n\nconst getSignalByNumber=function(number,signals){\nconst signal=findSignalByNumber(number,signals);\n\nif(signal===undefined){\nreturn{};\n}\n\nconst{name,description,supported,action,forced,standard}=signal;\nreturn{\n[number]:{\nname,\nnumber,\ndescription,\nsupported,\naction,\nforced,\nstandard}};\n\n\n};\n\n\n\nconst findSignalByNumber=function(number,signals){\nconst signal=signals.find(({name})=>_os.constants.signals[name]===number);\n\nif(signal!==undefined){\nreturn signal;\n}\n\nreturn signals.find(signalA=>signalA.number===number);\n};\n\nconst signalsByNumber=getSignalsByNumber();exports.signalsByNumber=signalsByNumber;\n//# sourceMappingURL=main.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/human-signals/build/src/main.js?')},"./node_modules/human-signals/build/src/realtime.js":
/*!**********************************************************!*\
  !*** ./node_modules/human-signals/build/src/realtime.js ***!
  \**********************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('Object.defineProperty(exports, "__esModule", ({value:true}));exports.SIGRTMAX=exports.getRealtimeSignals=void 0;\nconst getRealtimeSignals=function(){\nconst length=SIGRTMAX-SIGRTMIN+1;\nreturn Array.from({length},getRealtimeSignal);\n};exports.getRealtimeSignals=getRealtimeSignals;\n\nconst getRealtimeSignal=function(value,index){\nreturn{\nname:`SIGRT${index+1}`,\nnumber:SIGRTMIN+index,\naction:"terminate",\ndescription:"Application-specific signal (realtime)",\nstandard:"posix"};\n\n};\n\nconst SIGRTMIN=34;\nconst SIGRTMAX=64;exports.SIGRTMAX=SIGRTMAX;\n//# sourceMappingURL=realtime.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/human-signals/build/src/realtime.js?')},"./node_modules/human-signals/build/src/signals.js":
/*!*********************************************************!*\
  !*** ./node_modules/human-signals/build/src/signals.js ***!
  \*********************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('Object.defineProperty(exports, "__esModule", ({value:true}));exports.getSignals=void 0;var _os=__webpack_require__(/*! os */ "os");\n\nvar _core=__webpack_require__(/*! ./core.js */ "./node_modules/human-signals/build/src/core.js");\nvar _realtime=__webpack_require__(/*! ./realtime.js */ "./node_modules/human-signals/build/src/realtime.js");\n\n\n\nconst getSignals=function(){\nconst realtimeSignals=(0,_realtime.getRealtimeSignals)();\nconst signals=[..._core.SIGNALS,...realtimeSignals].map(normalizeSignal);\nreturn signals;\n};exports.getSignals=getSignals;\n\n\n\n\n\n\n\nconst normalizeSignal=function({\nname,\nnumber:defaultNumber,\ndescription,\naction,\nforced=false,\nstandard})\n{\nconst{\nsignals:{[name]:constantSignal}}=\n_os.constants;\nconst supported=constantSignal!==undefined;\nconst number=supported?constantSignal:defaultNumber;\nreturn{name,number,description,supported,action,forced,standard};\n};\n//# sourceMappingURL=signals.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/human-signals/build/src/signals.js?')},"./node_modules/humanize-duration/humanize-duration.js":
/*!*************************************************************!*\
  !*** ./node_modules/humanize-duration/humanize-duration.js ***!
  \*************************************************************/(module,exports,__webpack_require__)=>{eval('var __WEBPACK_AMD_DEFINE_RESULT__;// HumanizeDuration.js - https://git.io/j0HgmQ\n\n/* global define, module */\n\n(function () {\n  // This has to be defined separately because of a bug: we want to alias\n  // `gr` and `el` for backwards-compatiblity. In a breaking change, we can\n  // remove `gr` entirely.\n  // See https://github.com/EvanHahn/HumanizeDuration.js/issues/143 for more.\n  var greek = {\n    y: function (c) {\n      return c === 1 ? "χρόνος" : "χρόνια";\n    },\n    mo: function (c) {\n      return c === 1 ? "μήνας" : "μήνες";\n    },\n    w: function (c) {\n      return c === 1 ? "εβδομάδα" : "εβδομάδες";\n    },\n    d: function (c) {\n      return c === 1 ? "μέρα" : "μέρες";\n    },\n    h: function (c) {\n      return c === 1 ? "ώρα" : "ώρες";\n    },\n    m: function (c) {\n      return c === 1 ? "λεπτό" : "λεπτά";\n    },\n    s: function (c) {\n      return c === 1 ? "δευτερόλεπτο" : "δευτερόλεπτα";\n    },\n    ms: function (c) {\n      return (c === 1 ? "χιλιοστό" : "χιλιοστά") + " του δευτερολέπτου";\n    },\n    decimal: ","\n  };\n\n  var ARABIC_DIGITS = ["۰", "١", "٢", "٣", "٤", "٥", "٦", "٧", "٨", "٩"];\n\n  var LANGUAGES = {\n    af: {\n      y: "jaar",\n      mo: function (c) {\n        return "maand" + (c === 1 ? "" : "e");\n      },\n      w: function (c) {\n        return c === 1 ? "week" : "weke";\n      },\n      d: function (c) {\n        return c === 1 ? "dag" : "dae";\n      },\n      h: function (c) {\n        return c === 1 ? "uur" : "ure";\n      },\n      m: function (c) {\n        return c === 1 ? "minuut" : "minute";\n      },\n      s: function (c) {\n        return "sekonde" + (c === 1 ? "" : "s");\n      },\n      ms: function (c) {\n        return "millisekonde" + (c === 1 ? "" : "s");\n      },\n      decimal: ","\n    },\n    ar: {\n      y: function (c) {\n        return ["سنة", "سنتان", "سنوات"][getArabicForm(c)];\n      },\n      mo: function (c) {\n        return ["شهر", "شهران", "أشهر"][getArabicForm(c)];\n      },\n      w: function (c) {\n        return ["أسبوع", "أسبوعين", "أسابيع"][getArabicForm(c)];\n      },\n      d: function (c) {\n        return ["يوم", "يومين", "أيام"][getArabicForm(c)];\n      },\n      h: function (c) {\n        return ["ساعة", "ساعتين", "ساعات"][getArabicForm(c)];\n      },\n      m: function (c) {\n        return ["دقيقة", "دقيقتان", "دقائق"][getArabicForm(c)];\n      },\n      s: function (c) {\n        return ["ثانية", "ثانيتان", "ثواني"][getArabicForm(c)];\n      },\n      ms: function (c) {\n        return ["جزء من الثانية", "جزآن من الثانية", "أجزاء من الثانية"][\n          getArabicForm(c)\n        ];\n      },\n      decimal: ",",\n      delimiter: " و ",\n      _formatCount: function (count, decimal) {\n        var replacements = assign(ARABIC_DIGITS, { ".": decimal });\n        var characters = count.toString().split("");\n        for (var i = 0; i < characters.length; i++) {\n          var character = characters[i];\n          if (has(replacements, character)) {\n            characters[i] = replacements[character];\n          }\n        }\n        return characters.join("");\n      }\n    },\n    bg: {\n      y: function (c) {\n        return ["години", "година", "години"][getSlavicForm(c)];\n      },\n      mo: function (c) {\n        return ["месеца", "месец", "месеца"][getSlavicForm(c)];\n      },\n      w: function (c) {\n        return ["седмици", "седмица", "седмици"][getSlavicForm(c)];\n      },\n      d: function (c) {\n        return ["дни", "ден", "дни"][getSlavicForm(c)];\n      },\n      h: function (c) {\n        return ["часа", "час", "часа"][getSlavicForm(c)];\n      },\n      m: function (c) {\n        return ["минути", "минута", "минути"][getSlavicForm(c)];\n      },\n      s: function (c) {\n        return ["секунди", "секунда", "секунди"][getSlavicForm(c)];\n      },\n      ms: function (c) {\n        return ["милисекунди", "милисекунда", "милисекунди"][getSlavicForm(c)];\n      },\n      decimal: ","\n    },\n    bn: {\n      y: "বছর",\n      mo: "মাস",\n      w: "সপ্তাহ",\n      d: "দিন",\n      h: "ঘন্টা",\n      m: "মিনিট",\n      s: "সেকেন্ড",\n      ms: "মিলিসেকেন্ড"\n    },\n    ca: {\n      y: function (c) {\n        return "any" + (c === 1 ? "" : "s");\n      },\n      mo: function (c) {\n        return "mes" + (c === 1 ? "" : "os");\n      },\n      w: function (c) {\n        return "setman" + (c === 1 ? "a" : "es");\n      },\n      d: function (c) {\n        return "di" + (c === 1 ? "a" : "es");\n      },\n      h: function (c) {\n        return "hor" + (c === 1 ? "a" : "es");\n      },\n      m: function (c) {\n        return "minut" + (c === 1 ? "" : "s");\n      },\n      s: function (c) {\n        return "segon" + (c === 1 ? "" : "s");\n      },\n      ms: function (c) {\n        return "milisegon" + (c === 1 ? "" : "s");\n      },\n      decimal: ","\n    },\n    cs: {\n      y: function (c) {\n        return ["rok", "roku", "roky", "let"][getCzechOrSlovakForm(c)];\n      },\n      mo: function (c) {\n        return ["měsíc", "měsíce", "měsíce", "měsíců"][getCzechOrSlovakForm(c)];\n      },\n      w: function (c) {\n        return ["týden", "týdne", "týdny", "týdnů"][getCzechOrSlovakForm(c)];\n      },\n      d: function (c) {\n        return ["den", "dne", "dny", "dní"][getCzechOrSlovakForm(c)];\n      },\n      h: function (c) {\n        return ["hodina", "hodiny", "hodiny", "hodin"][getCzechOrSlovakForm(c)];\n      },\n      m: function (c) {\n        return ["minuta", "minuty", "minuty", "minut"][getCzechOrSlovakForm(c)];\n      },\n      s: function (c) {\n        return ["sekunda", "sekundy", "sekundy", "sekund"][\n          getCzechOrSlovakForm(c)\n        ];\n      },\n      ms: function (c) {\n        return ["milisekunda", "milisekundy", "milisekundy", "milisekund"][\n          getCzechOrSlovakForm(c)\n        ];\n      },\n      decimal: ","\n    },\n    cy: {\n      y: "flwyddyn",\n      mo: "mis",\n      w: "wythnos",\n      d: "diwrnod",\n      h: "awr",\n      m: "munud",\n      s: "eiliad",\n      ms: "milieiliad"\n    },\n    da: {\n      y: "år",\n      mo: function (c) {\n        return "måned" + (c === 1 ? "" : "er");\n      },\n      w: function (c) {\n        return "uge" + (c === 1 ? "" : "r");\n      },\n      d: function (c) {\n        return "dag" + (c === 1 ? "" : "e");\n      },\n      h: function (c) {\n        return "time" + (c === 1 ? "" : "r");\n      },\n      m: function (c) {\n        return "minut" + (c === 1 ? "" : "ter");\n      },\n      s: function (c) {\n        return "sekund" + (c === 1 ? "" : "er");\n      },\n      ms: function (c) {\n        return "millisekund" + (c === 1 ? "" : "er");\n      },\n      decimal: ","\n    },\n    de: {\n      y: function (c) {\n        return "Jahr" + (c === 1 ? "" : "e");\n      },\n      mo: function (c) {\n        return "Monat" + (c === 1 ? "" : "e");\n      },\n      w: function (c) {\n        return "Woche" + (c === 1 ? "" : "n");\n      },\n      d: function (c) {\n        return "Tag" + (c === 1 ? "" : "e");\n      },\n      h: function (c) {\n        return "Stunde" + (c === 1 ? "" : "n");\n      },\n      m: function (c) {\n        return "Minute" + (c === 1 ? "" : "n");\n      },\n      s: function (c) {\n        return "Sekunde" + (c === 1 ? "" : "n");\n      },\n      ms: function (c) {\n        return "Millisekunde" + (c === 1 ? "" : "n");\n      },\n      decimal: ","\n    },\n    el: greek,\n    en: {\n      y: function (c) {\n        return "year" + (c === 1 ? "" : "s");\n      },\n      mo: function (c) {\n        return "month" + (c === 1 ? "" : "s");\n      },\n      w: function (c) {\n        return "week" + (c === 1 ? "" : "s");\n      },\n      d: function (c) {\n        return "day" + (c === 1 ? "" : "s");\n      },\n      h: function (c) {\n        return "hour" + (c === 1 ? "" : "s");\n      },\n      m: function (c) {\n        return "minute" + (c === 1 ? "" : "s");\n      },\n      s: function (c) {\n        return "second" + (c === 1 ? "" : "s");\n      },\n      ms: function (c) {\n        return "millisecond" + (c === 1 ? "" : "s");\n      },\n      decimal: "."\n    },\n    eo: {\n      y: function (c) {\n        return "jaro" + (c === 1 ? "" : "j");\n      },\n      mo: function (c) {\n        return "monato" + (c === 1 ? "" : "j");\n      },\n      w: function (c) {\n        return "semajno" + (c === 1 ? "" : "j");\n      },\n      d: function (c) {\n        return "tago" + (c === 1 ? "" : "j");\n      },\n      h: function (c) {\n        return "horo" + (c === 1 ? "" : "j");\n      },\n      m: function (c) {\n        return "minuto" + (c === 1 ? "" : "j");\n      },\n      s: function (c) {\n        return "sekundo" + (c === 1 ? "" : "j");\n      },\n      ms: function (c) {\n        return "milisekundo" + (c === 1 ? "" : "j");\n      },\n      decimal: ","\n    },\n    es: {\n      y: function (c) {\n        return "año" + (c === 1 ? "" : "s");\n      },\n      mo: function (c) {\n        return "mes" + (c === 1 ? "" : "es");\n      },\n      w: function (c) {\n        return "semana" + (c === 1 ? "" : "s");\n      },\n      d: function (c) {\n        return "día" + (c === 1 ? "" : "s");\n      },\n      h: function (c) {\n        return "hora" + (c === 1 ? "" : "s");\n      },\n      m: function (c) {\n        return "minuto" + (c === 1 ? "" : "s");\n      },\n      s: function (c) {\n        return "segundo" + (c === 1 ? "" : "s");\n      },\n      ms: function (c) {\n        return "milisegundo" + (c === 1 ? "" : "s");\n      },\n      decimal: ","\n    },\n    et: {\n      y: function (c) {\n        return "aasta" + (c === 1 ? "" : "t");\n      },\n      mo: function (c) {\n        return "kuu" + (c === 1 ? "" : "d");\n      },\n      w: function (c) {\n        return "nädal" + (c === 1 ? "" : "at");\n      },\n      d: function (c) {\n        return "päev" + (c === 1 ? "" : "a");\n      },\n      h: function (c) {\n        return "tund" + (c === 1 ? "" : "i");\n      },\n      m: function (c) {\n        return "minut" + (c === 1 ? "" : "it");\n      },\n      s: function (c) {\n        return "sekund" + (c === 1 ? "" : "it");\n      },\n      ms: function (c) {\n        return "millisekund" + (c === 1 ? "" : "it");\n      },\n      decimal: ","\n    },\n    eu: {\n      y: "urte",\n      mo: "hilabete",\n      w: "aste",\n      d: "egun",\n      h: "ordu",\n      m: "minutu",\n      s: "segundo",\n      ms: "milisegundo",\n      decimal: ","\n    },\n    fa: {\n      y: "سال",\n      mo: "ماه",\n      w: "هفته",\n      d: "روز",\n      h: "ساعت",\n      m: "دقیقه",\n      s: "ثانیه",\n      ms: "میلی ثانیه",\n      decimal: "."\n    },\n    fi: {\n      y: function (c) {\n        return c === 1 ? "vuosi" : "vuotta";\n      },\n      mo: function (c) {\n        return c === 1 ? "kuukausi" : "kuukautta";\n      },\n      w: function (c) {\n        return "viikko" + (c === 1 ? "" : "a");\n      },\n      d: function (c) {\n        return "päivä" + (c === 1 ? "" : "ä");\n      },\n      h: function (c) {\n        return "tunti" + (c === 1 ? "" : "a");\n      },\n      m: function (c) {\n        return "minuutti" + (c === 1 ? "" : "a");\n      },\n      s: function (c) {\n        return "sekunti" + (c === 1 ? "" : "a");\n      },\n      ms: function (c) {\n        return "millisekunti" + (c === 1 ? "" : "a");\n      },\n      decimal: ","\n    },\n    fo: {\n      y: "ár",\n      mo: function (c) {\n        return c === 1 ? "mánaður" : "mánaðir";\n      },\n      w: function (c) {\n        return c === 1 ? "vika" : "vikur";\n      },\n      d: function (c) {\n        return c === 1 ? "dagur" : "dagar";\n      },\n      h: function (c) {\n        return c === 1 ? "tími" : "tímar";\n      },\n      m: function (c) {\n        return c === 1 ? "minuttur" : "minuttir";\n      },\n      s: "sekund",\n      ms: "millisekund",\n      decimal: ","\n    },\n    fr: {\n      y: function (c) {\n        return "an" + (c >= 2 ? "s" : "");\n      },\n      mo: "mois",\n      w: function (c) {\n        return "semaine" + (c >= 2 ? "s" : "");\n      },\n      d: function (c) {\n        return "jour" + (c >= 2 ? "s" : "");\n      },\n      h: function (c) {\n        return "heure" + (c >= 2 ? "s" : "");\n      },\n      m: function (c) {\n        return "minute" + (c >= 2 ? "s" : "");\n      },\n      s: function (c) {\n        return "seconde" + (c >= 2 ? "s" : "");\n      },\n      ms: function (c) {\n        return "milliseconde" + (c >= 2 ? "s" : "");\n      },\n      decimal: ","\n    },\n    gr: greek,\n    he: {\n      y: function (c) {\n        return c === 1 ? "שנה" : "שנים";\n      },\n      mo: function (c) {\n        return c === 1 ? "חודש" : "חודשים";\n      },\n      w: function (c) {\n        return c === 1 ? "שבוע" : "שבועות";\n      },\n      d: function (c) {\n        return c === 1 ? "יום" : "ימים";\n      },\n      h: function (c) {\n        return c === 1 ? "שעה" : "שעות";\n      },\n      m: function (c) {\n        return c === 1 ? "דקה" : "דקות";\n      },\n      s: function (c) {\n        return c === 1 ? "שניה" : "שניות";\n      },\n      ms: function (c) {\n        return c === 1 ? "מילישנייה" : "מילישניות";\n      },\n      decimal: "."\n    },\n    hr: {\n      y: function (c) {\n        if (c % 10 === 2 || c % 10 === 3 || c % 10 === 4) {\n          return "godine";\n        }\n        return "godina";\n      },\n      mo: function (c) {\n        if (c === 1) {\n          return "mjesec";\n        } else if (c === 2 || c === 3 || c === 4) {\n          return "mjeseca";\n        }\n        return "mjeseci";\n      },\n      w: function (c) {\n        if (c % 10 === 1 && c !== 11) {\n          return "tjedan";\n        }\n        return "tjedna";\n      },\n      d: function (c) {\n        return c === 1 ? "dan" : "dana";\n      },\n      h: function (c) {\n        if (c === 1) {\n          return "sat";\n        } else if (c === 2 || c === 3 || c === 4) {\n          return "sata";\n        }\n        return "sati";\n      },\n      m: function (c) {\n        var mod10 = c % 10;\n        if ((mod10 === 2 || mod10 === 3 || mod10 === 4) && (c < 10 || c > 14)) {\n          return "minute";\n        }\n        return "minuta";\n      },\n      s: function (c) {\n        var mod10 = c % 10;\n        if (mod10 === 5 || (Math.floor(c) === c && c >= 10 && c <= 19)) {\n          return "sekundi";\n        } else if (mod10 === 1) {\n          return "sekunda";\n        } else if (mod10 === 2 || mod10 === 3 || mod10 === 4) {\n          return "sekunde";\n        }\n        return "sekundi";\n      },\n      ms: function (c) {\n        if (c === 1) {\n          return "milisekunda";\n        } else if (c % 10 === 2 || c % 10 === 3 || c % 10 === 4) {\n          return "milisekunde";\n        }\n        return "milisekundi";\n      },\n      decimal: ","\n    },\n    hi: {\n      y: "साल",\n      mo: function (c) {\n        return c === 1 ? "महीना" : "महीने";\n      },\n      w: function (c) {\n        return c === 1 ? "हफ़्ता" : "हफ्ते";\n      },\n      d: "दिन",\n      h: function (c) {\n        return c === 1 ? "घंटा" : "घंटे";\n      },\n      m: "मिनट",\n      s: "सेकंड",\n      ms: "मिलीसेकंड",\n      decimal: "."\n    },\n    hu: {\n      y: "év",\n      mo: "hónap",\n      w: "hét",\n      d: "nap",\n      h: "óra",\n      m: "perc",\n      s: "másodperc",\n      ms: "ezredmásodperc",\n      decimal: ","\n    },\n    id: {\n      y: "tahun",\n      mo: "bulan",\n      w: "minggu",\n      d: "hari",\n      h: "jam",\n      m: "menit",\n      s: "detik",\n      ms: "milidetik",\n      decimal: "."\n    },\n    is: {\n      y: "ár",\n      mo: function (c) {\n        return "mánuð" + (c === 1 ? "ur" : "ir");\n      },\n      w: function (c) {\n        return "vik" + (c === 1 ? "a" : "ur");\n      },\n      d: function (c) {\n        return "dag" + (c === 1 ? "ur" : "ar");\n      },\n      h: function (c) {\n        return "klukkutím" + (c === 1 ? "i" : "ar");\n      },\n      m: function (c) {\n        return "mínút" + (c === 1 ? "a" : "ur");\n      },\n      s: function (c) {\n        return "sekúnd" + (c === 1 ? "a" : "ur");\n      },\n      ms: function (c) {\n        return "millisekúnd" + (c === 1 ? "a" : "ur");\n      },\n      decimal: "."\n    },\n    it: {\n      y: function (c) {\n        return "ann" + (c === 1 ? "o" : "i");\n      },\n      mo: function (c) {\n        return "mes" + (c === 1 ? "e" : "i");\n      },\n      w: function (c) {\n        return "settiman" + (c === 1 ? "a" : "e");\n      },\n      d: function (c) {\n        return "giorn" + (c === 1 ? "o" : "i");\n      },\n      h: function (c) {\n        return "or" + (c === 1 ? "a" : "e");\n      },\n      m: function (c) {\n        return "minut" + (c === 1 ? "o" : "i");\n      },\n      s: function (c) {\n        return "second" + (c === 1 ? "o" : "i");\n      },\n      ms: function (c) {\n        return "millisecond" + (c === 1 ? "o" : "i");\n      },\n      decimal: ","\n    },\n    ja: {\n      y: "年",\n      mo: "ヶ月",\n      w: "週",\n      d: "日",\n      h: "時間",\n      m: "分",\n      s: "秒",\n      ms: "ミリ秒",\n      decimal: "."\n    },\n    km: {\n      y: "ឆ្នាំ",\n      mo: "ខែ",\n      w: "សប្តាហ៍",\n      d: "ថ្ងៃ",\n      h: "ម៉ោង",\n      m: "នាទី",\n      s: "វិនាទី",\n      ms: "មិល្លីវិនាទី"\n    },\n    kn: {\n      y: function (c) {\n        return c === 1 ? "ವರ್ಷ" : "ವರ್ಷಗಳು";\n      },\n      mo: function (c) {\n        return c === 1 ? "ತಿಂಗಳು" : "ತಿಂಗಳುಗಳು";\n      },\n      w: function (c) {\n        return c === 1 ? "ವಾರ" : "ವಾರಗಳು";\n      },\n      d: function (c) {\n        return c === 1 ? "ದಿನ" : "ದಿನಗಳು";\n      },\n      h: function (c) {\n        return c === 1 ? "ಗಂಟೆ" : "ಗಂಟೆಗಳು";\n      },\n      m: function (c) {\n        return c === 1 ? "ನಿಮಿಷ" : "ನಿಮಿಷಗಳು";\n      },\n      s: function (c) {\n        return c === 1 ? "ಸೆಕೆಂಡ್" : "ಸೆಕೆಂಡುಗಳು";\n      },\n      ms: function (c) {\n        return c === 1 ? "ಮಿಲಿಸೆಕೆಂಡ್" : "ಮಿಲಿಸೆಕೆಂಡುಗಳು";\n      }\n    },\n    ko: {\n      y: "년",\n      mo: "개월",\n      w: "주일",\n      d: "일",\n      h: "시간",\n      m: "분",\n      s: "초",\n      ms: "밀리 초",\n      decimal: "."\n    },\n    ku: {\n      y: "sal",\n      mo: "meh",\n      w: "hefte",\n      d: "roj",\n      h: "seet",\n      m: "deqe",\n      s: "saniye",\n      ms: "mîlîçirk",\n      decimal: ","\n    },\n    lo: {\n      y: "ປີ",\n      mo: "ເດືອນ",\n      w: "ອາທິດ",\n      d: "ມື້",\n      h: "ຊົ່ວໂມງ",\n      m: "ນາທີ",\n      s: "ວິນາທີ",\n      ms: "ມິນລິວິນາທີ",\n      decimal: ","\n    },\n    lt: {\n      y: function (c) {\n        return c % 10 === 0 || (c % 100 >= 10 && c % 100 <= 20)\n          ? "metų"\n          : "metai";\n      },\n      mo: function (c) {\n        return ["mėnuo", "mėnesiai", "mėnesių"][getLithuanianForm(c)];\n      },\n      w: function (c) {\n        return ["savaitė", "savaitės", "savaičių"][getLithuanianForm(c)];\n      },\n      d: function (c) {\n        return ["diena", "dienos", "dienų"][getLithuanianForm(c)];\n      },\n      h: function (c) {\n        return ["valanda", "valandos", "valandų"][getLithuanianForm(c)];\n      },\n      m: function (c) {\n        return ["minutė", "minutės", "minučių"][getLithuanianForm(c)];\n      },\n      s: function (c) {\n        return ["sekundė", "sekundės", "sekundžių"][getLithuanianForm(c)];\n      },\n      ms: function (c) {\n        return ["milisekundė", "milisekundės", "milisekundžių"][\n          getLithuanianForm(c)\n        ];\n      },\n      decimal: ","\n    },\n    lv: {\n      y: function (c) {\n        return getLatvianForm(c) ? "gads" : "gadi";\n      },\n      mo: function (c) {\n        return getLatvianForm(c) ? "mēnesis" : "mēneši";\n      },\n      w: function (c) {\n        return getLatvianForm(c) ? "nedēļa" : "nedēļas";\n      },\n      d: function (c) {\n        return getLatvianForm(c) ? "diena" : "dienas";\n      },\n      h: function (c) {\n        return getLatvianForm(c) ? "stunda" : "stundas";\n      },\n      m: function (c) {\n        return getLatvianForm(c) ? "minūte" : "minūtes";\n      },\n      s: function (c) {\n        return getLatvianForm(c) ? "sekunde" : "sekundes";\n      },\n      ms: function (c) {\n        return getLatvianForm(c) ? "milisekunde" : "milisekundes";\n      },\n      decimal: ","\n    },\n    mk: {\n      y: function (c) {\n        return c === 1 ? "година" : "години";\n      },\n      mo: function (c) {\n        return c === 1 ? "месец" : "месеци";\n      },\n      w: function (c) {\n        return c === 1 ? "недела" : "недели";\n      },\n      d: function (c) {\n        return c === 1 ? "ден" : "дена";\n      },\n      h: function (c) {\n        return c === 1 ? "час" : "часа";\n      },\n      m: function (c) {\n        return c === 1 ? "минута" : "минути";\n      },\n      s: function (c) {\n        return c === 1 ? "секунда" : "секунди";\n      },\n      ms: function (c) {\n        return c === 1 ? "милисекунда" : "милисекунди";\n      },\n      decimal: ","\n    },\n    mr: {\n      y: function (c) {\n        return c === 1 ? "वर्ष" : "वर्षे";\n      },\n      mo: function (c) {\n        return c === 1 ? "महिना" : "महिने";\n      },\n      w: function (c) {\n        return c === 1 ? "आठवडा" : "आठवडे";\n      },\n      d: "दिवस",\n      h: "तास",\n      m: function (c) {\n        return c === 1 ? "मिनिट" : "मिनिटे";\n      },\n      s: "सेकंद",\n      ms: "मिलिसेकंद"\n    },\n    ms: {\n      y: "tahun",\n      mo: "bulan",\n      w: "minggu",\n      d: "hari",\n      h: "jam",\n      m: "minit",\n      s: "saat",\n      ms: "milisaat",\n      decimal: "."\n    },\n    nl: {\n      y: "jaar",\n      mo: function (c) {\n        return c === 1 ? "maand" : "maanden";\n      },\n      w: function (c) {\n        return c === 1 ? "week" : "weken";\n      },\n      d: function (c) {\n        return c === 1 ? "dag" : "dagen";\n      },\n      h: "uur",\n      m: function (c) {\n        return c === 1 ? "minuut" : "minuten";\n      },\n      s: function (c) {\n        return c === 1 ? "seconde" : "seconden";\n      },\n      ms: function (c) {\n        return c === 1 ? "milliseconde" : "milliseconden";\n      },\n      decimal: ","\n    },\n    no: {\n      y: "år",\n      mo: function (c) {\n        return "måned" + (c === 1 ? "" : "er");\n      },\n      w: function (c) {\n        return "uke" + (c === 1 ? "" : "r");\n      },\n      d: function (c) {\n        return "dag" + (c === 1 ? "" : "er");\n      },\n      h: function (c) {\n        return "time" + (c === 1 ? "" : "r");\n      },\n      m: function (c) {\n        return "minutt" + (c === 1 ? "" : "er");\n      },\n      s: function (c) {\n        return "sekund" + (c === 1 ? "" : "er");\n      },\n      ms: function (c) {\n        return "millisekund" + (c === 1 ? "" : "er");\n      },\n      decimal: ","\n    },\n    pl: {\n      y: function (c) {\n        return ["rok", "roku", "lata", "lat"][getPolishForm(c)];\n      },\n      mo: function (c) {\n        return ["miesiąc", "miesiąca", "miesiące", "miesięcy"][\n          getPolishForm(c)\n        ];\n      },\n      w: function (c) {\n        return ["tydzień", "tygodnia", "tygodnie", "tygodni"][getPolishForm(c)];\n      },\n      d: function (c) {\n        return ["dzień", "dnia", "dni", "dni"][getPolishForm(c)];\n      },\n      h: function (c) {\n        return ["godzina", "godziny", "godziny", "godzin"][getPolishForm(c)];\n      },\n      m: function (c) {\n        return ["minuta", "minuty", "minuty", "minut"][getPolishForm(c)];\n      },\n      s: function (c) {\n        return ["sekunda", "sekundy", "sekundy", "sekund"][getPolishForm(c)];\n      },\n      ms: function (c) {\n        return ["milisekunda", "milisekundy", "milisekundy", "milisekund"][\n          getPolishForm(c)\n        ];\n      },\n      decimal: ","\n    },\n    pt: {\n      y: function (c) {\n        return "ano" + (c === 1 ? "" : "s");\n      },\n      mo: function (c) {\n        return c === 1 ? "mês" : "meses";\n      },\n      w: function (c) {\n        return "semana" + (c === 1 ? "" : "s");\n      },\n      d: function (c) {\n        return "dia" + (c === 1 ? "" : "s");\n      },\n      h: function (c) {\n        return "hora" + (c === 1 ? "" : "s");\n      },\n      m: function (c) {\n        return "minuto" + (c === 1 ? "" : "s");\n      },\n      s: function (c) {\n        return "segundo" + (c === 1 ? "" : "s");\n      },\n      ms: function (c) {\n        return "milissegundo" + (c === 1 ? "" : "s");\n      },\n      decimal: ","\n    },\n    ro: {\n      y: function (c) {\n        return c === 1 ? "an" : "ani";\n      },\n      mo: function (c) {\n        return c === 1 ? "lună" : "luni";\n      },\n      w: function (c) {\n        return c === 1 ? "săptămână" : "săptămâni";\n      },\n      d: function (c) {\n        return c === 1 ? "zi" : "zile";\n      },\n      h: function (c) {\n        return c === 1 ? "oră" : "ore";\n      },\n      m: function (c) {\n        return c === 1 ? "minut" : "minute";\n      },\n      s: function (c) {\n        return c === 1 ? "secundă" : "secunde";\n      },\n      ms: function (c) {\n        return c === 1 ? "milisecundă" : "milisecunde";\n      },\n      decimal: ","\n    },\n    ru: {\n      y: function (c) {\n        return ["лет", "год", "года"][getSlavicForm(c)];\n      },\n      mo: function (c) {\n        return ["месяцев", "месяц", "месяца"][getSlavicForm(c)];\n      },\n      w: function (c) {\n        return ["недель", "неделя", "недели"][getSlavicForm(c)];\n      },\n      d: function (c) {\n        return ["дней", "день", "дня"][getSlavicForm(c)];\n      },\n      h: function (c) {\n        return ["часов", "час", "часа"][getSlavicForm(c)];\n      },\n      m: function (c) {\n        return ["минут", "минута", "минуты"][getSlavicForm(c)];\n      },\n      s: function (c) {\n        return ["секунд", "секунда", "секунды"][getSlavicForm(c)];\n      },\n      ms: function (c) {\n        return ["миллисекунд", "миллисекунда", "миллисекунды"][\n          getSlavicForm(c)\n        ];\n      },\n      decimal: ","\n    },\n    sq: {\n      y: function (c) {\n        return c === 1 ? "vit" : "vjet";\n      },\n      mo: "muaj",\n      w: "javë",\n      d: "ditë",\n      h: "orë",\n      m: function (c) {\n        return "minut" + (c === 1 ? "ë" : "a");\n      },\n      s: function (c) {\n        return "sekond" + (c === 1 ? "ë" : "a");\n      },\n      ms: function (c) {\n        return "milisekond" + (c === 1 ? "ë" : "a");\n      },\n      decimal: ","\n    },\n    sr: {\n      y: function (c) {\n        return ["години", "година", "године"][getSlavicForm(c)];\n      },\n      mo: function (c) {\n        return ["месеци", "месец", "месеца"][getSlavicForm(c)];\n      },\n      w: function (c) {\n        return ["недељи", "недеља", "недеље"][getSlavicForm(c)];\n      },\n      d: function (c) {\n        return ["дани", "дан", "дана"][getSlavicForm(c)];\n      },\n      h: function (c) {\n        return ["сати", "сат", "сата"][getSlavicForm(c)];\n      },\n      m: function (c) {\n        return ["минута", "минут", "минута"][getSlavicForm(c)];\n      },\n      s: function (c) {\n        return ["секунди", "секунда", "секунде"][getSlavicForm(c)];\n      },\n      ms: function (c) {\n        return ["милисекунди", "милисекунда", "милисекунде"][getSlavicForm(c)];\n      },\n      decimal: ","\n    },\n    ta: {\n      y: function (c) {\n        return c === 1 ? "வருடம்" : "ஆண்டுகள்";\n      },\n      mo: function (c) {\n        return c === 1 ? "மாதம்" : "மாதங்கள்";\n      },\n      w: function (c) {\n        return c === 1 ? "வாரம்" : "வாரங்கள்";\n      },\n      d: function (c) {\n        return c === 1 ? "நாள்" : "நாட்கள்";\n      },\n      h: function (c) {\n        return c === 1 ? "மணி" : "மணிநேரம்";\n      },\n      m: function (c) {\n        return "நிமிட" + (c === 1 ? "ம்" : "ங்கள்");\n      },\n      s: function (c) {\n        return "வினாடி" + (c === 1 ? "" : "கள்");\n      },\n      ms: function (c) {\n        return "மில்லி விநாடி" + (c === 1 ? "" : "கள்");\n      }\n    },\n    te: {\n      y: function (c) {\n        return "సంవత్స" + (c === 1 ? "రం" : "రాల");\n      },\n      mo: function (c) {\n        return "నెల" + (c === 1 ? "" : "ల");\n      },\n      w: function (c) {\n        return c === 1 ? "వారం" : "వారాలు";\n      },\n      d: function (c) {\n        return "రోజు" + (c === 1 ? "" : "లు");\n      },\n      h: function (c) {\n        return "గంట" + (c === 1 ? "" : "లు");\n      },\n      m: function (c) {\n        return c === 1 ? "నిమిషం" : "నిమిషాలు";\n      },\n      s: function (c) {\n        return c === 1 ? "సెకను" : "సెకన్లు";\n      },\n      ms: function (c) {\n        return c === 1 ? "మిల్లీసెకన్" : "మిల్లీసెకన్లు";\n      }\n    },\n    uk: {\n      y: function (c) {\n        return ["років", "рік", "роки"][getSlavicForm(c)];\n      },\n      mo: function (c) {\n        return ["місяців", "місяць", "місяці"][getSlavicForm(c)];\n      },\n      w: function (c) {\n        return ["тижнів", "тиждень", "тижні"][getSlavicForm(c)];\n      },\n      d: function (c) {\n        return ["днів", "день", "дні"][getSlavicForm(c)];\n      },\n      h: function (c) {\n        return ["годин", "година", "години"][getSlavicForm(c)];\n      },\n      m: function (c) {\n        return ["хвилин", "хвилина", "хвилини"][getSlavicForm(c)];\n      },\n      s: function (c) {\n        return ["секунд", "секунда", "секунди"][getSlavicForm(c)];\n      },\n      ms: function (c) {\n        return ["мілісекунд", "мілісекунда", "мілісекунди"][getSlavicForm(c)];\n      },\n      decimal: ","\n    },\n    ur: {\n      y: "سال",\n      mo: function (c) {\n        return c === 1 ? "مہینہ" : "مہینے";\n      },\n      w: function (c) {\n        return c === 1 ? "ہفتہ" : "ہفتے";\n      },\n      d: "دن",\n      h: function (c) {\n        return c === 1 ? "گھنٹہ" : "گھنٹے";\n      },\n      m: "منٹ",\n      s: "سیکنڈ",\n      ms: "ملی سیکنڈ",\n      decimal: "."\n    },\n    sk: {\n      y: function (c) {\n        return ["rok", "roky", "roky", "rokov"][getCzechOrSlovakForm(c)];\n      },\n      mo: function (c) {\n        return ["mesiac", "mesiace", "mesiace", "mesiacov"][\n          getCzechOrSlovakForm(c)\n        ];\n      },\n      w: function (c) {\n        return ["týždeň", "týždne", "týždne", "týždňov"][\n          getCzechOrSlovakForm(c)\n        ];\n      },\n      d: function (c) {\n        return ["deň", "dni", "dni", "dní"][getCzechOrSlovakForm(c)];\n      },\n      h: function (c) {\n        return ["hodina", "hodiny", "hodiny", "hodín"][getCzechOrSlovakForm(c)];\n      },\n      m: function (c) {\n        return ["minúta", "minúty", "minúty", "minút"][getCzechOrSlovakForm(c)];\n      },\n      s: function (c) {\n        return ["sekunda", "sekundy", "sekundy", "sekúnd"][\n          getCzechOrSlovakForm(c)\n        ];\n      },\n      ms: function (c) {\n        return ["milisekunda", "milisekundy", "milisekundy", "milisekúnd"][\n          getCzechOrSlovakForm(c)\n        ];\n      },\n      decimal: ","\n    },\n    sl: {\n      y: function (c) {\n        if (c % 10 === 1) {\n          return "leto";\n        } else if (c % 100 === 2) {\n          return "leti";\n        } else if (\n          c % 100 === 3 ||\n          c % 100 === 4 ||\n          (Math.floor(c) !== c && c % 100 <= 5)\n        ) {\n          return "leta";\n        } else {\n          return "let";\n        }\n      },\n      mo: function (c) {\n        if (c % 10 === 1) {\n          return "mesec";\n        } else if (c % 100 === 2 || (Math.floor(c) !== c && c % 100 <= 5)) {\n          return "meseca";\n        } else if (c % 10 === 3 || c % 10 === 4) {\n          return "mesece";\n        } else {\n          return "mesecev";\n        }\n      },\n      w: function (c) {\n        if (c % 10 === 1) {\n          return "teden";\n        } else if (c % 10 === 2 || (Math.floor(c) !== c && c % 100 <= 4)) {\n          return "tedna";\n        } else if (c % 10 === 3 || c % 10 === 4) {\n          return "tedne";\n        } else {\n          return "tednov";\n        }\n      },\n      d: function (c) {\n        return c % 100 === 1 ? "dan" : "dni";\n      },\n      h: function (c) {\n        if (c % 10 === 1) {\n          return "ura";\n        } else if (c % 100 === 2) {\n          return "uri";\n        } else if (c % 10 === 3 || c % 10 === 4 || Math.floor(c) !== c) {\n          return "ure";\n        } else {\n          return "ur";\n        }\n      },\n      m: function (c) {\n        if (c % 10 === 1) {\n          return "minuta";\n        } else if (c % 10 === 2) {\n          return "minuti";\n        } else if (\n          c % 10 === 3 ||\n          c % 10 === 4 ||\n          (Math.floor(c) !== c && c % 100 <= 4)\n        ) {\n          return "minute";\n        } else {\n          return "minut";\n        }\n      },\n      s: function (c) {\n        if (c % 10 === 1) {\n          return "sekunda";\n        } else if (c % 100 === 2) {\n          return "sekundi";\n        } else if (c % 100 === 3 || c % 100 === 4 || Math.floor(c) !== c) {\n          return "sekunde";\n        } else {\n          return "sekund";\n        }\n      },\n      ms: function (c) {\n        if (c % 10 === 1) {\n          return "milisekunda";\n        } else if (c % 100 === 2) {\n          return "milisekundi";\n        } else if (c % 100 === 3 || c % 100 === 4 || Math.floor(c) !== c) {\n          return "milisekunde";\n        } else {\n          return "milisekund";\n        }\n      },\n      decimal: ","\n    },\n    sv: {\n      y: "år",\n      mo: function (c) {\n        return "månad" + (c === 1 ? "" : "er");\n      },\n      w: function (c) {\n        return "veck" + (c === 1 ? "a" : "or");\n      },\n      d: function (c) {\n        return "dag" + (c === 1 ? "" : "ar");\n      },\n      h: function (c) {\n        return "timm" + (c === 1 ? "e" : "ar");\n      },\n      m: function (c) {\n        return "minut" + (c === 1 ? "" : "er");\n      },\n      s: function (c) {\n        return "sekund" + (c === 1 ? "" : "er");\n      },\n      ms: function (c) {\n        return "millisekund" + (c === 1 ? "" : "er");\n      },\n      decimal: ","\n    },\n    sw: {\n      y: function (c) {\n        return c === 1 ? "mwaka" : "miaka";\n      },\n      mo: function (c) {\n        return c === 1 ? "mwezi" : "miezi";\n      },\n      w: "wiki",\n      d: function (c) {\n        return c === 1 ? "siku" : "masiku";\n      },\n      h: function (c) {\n        return c === 1 ? "saa" : "masaa";\n      },\n      m: "dakika",\n      s: "sekunde",\n      ms: "milisekunde",\n      decimal: "."\n    },\n    tr: {\n      y: "yıl",\n      mo: "ay",\n      w: "hafta",\n      d: "gün",\n      h: "saat",\n      m: "dakika",\n      s: "saniye",\n      ms: "milisaniye",\n      decimal: ","\n    },\n    th: {\n      y: "ปี",\n      mo: "เดือน",\n      w: "สัปดาห์",\n      d: "วัน",\n      h: "ชั่วโมง",\n      m: "นาที",\n      s: "วินาที",\n      ms: "มิลลิวินาที",\n      decimal: "."\n    },\n    vi: {\n      y: "năm",\n      mo: "tháng",\n      w: "tuần",\n      d: "ngày",\n      h: "giờ",\n      m: "phút",\n      s: "giây",\n      ms: "mili giây",\n      decimal: ","\n    },\n    zh_CN: {\n      y: "年",\n      mo: "个月",\n      w: "周",\n      d: "天",\n      h: "小时",\n      m: "分钟",\n      s: "秒",\n      ms: "毫秒",\n      decimal: "."\n    },\n    zh_TW: {\n      y: "年",\n      mo: "個月",\n      w: "周",\n      d: "天",\n      h: "小時",\n      m: "分鐘",\n      s: "秒",\n      ms: "毫秒",\n      decimal: "."\n    }\n  };\n\n  // You can create a humanizer, which returns a function with default\n  // parameters.\n  function humanizer(passedOptions) {\n    var result = function humanizer(ms, humanizerOptions) {\n      var options = assign({}, result, humanizerOptions || {});\n      return doHumanization(ms, options);\n    };\n\n    return assign(\n      result,\n      {\n        language: "en",\n        spacer: " ",\n        conjunction: "",\n        serialComma: true,\n        units: ["y", "mo", "w", "d", "h", "m", "s"],\n        languages: {},\n        round: false,\n        unitMeasures: {\n          y: 31557600000,\n          mo: 2629800000,\n          w: 604800000,\n          d: 86400000,\n          h: 3600000,\n          m: 60000,\n          s: 1000,\n          ms: 1\n        }\n      },\n      passedOptions\n    );\n  }\n\n  // The main function is just a wrapper around a default humanizer.\n  var humanizeDuration = humanizer({});\n\n  // Build dictionary from options\n  function getDictionary(options) {\n    var languagesFromOptions = [options.language];\n\n    if (has(options, "fallbacks")) {\n      if (isArray(options.fallbacks) && options.fallbacks.length) {\n        languagesFromOptions = languagesFromOptions.concat(options.fallbacks);\n      } else {\n        throw new Error("fallbacks must be an array with at least one element");\n      }\n    }\n\n    for (var i = 0; i < languagesFromOptions.length; i++) {\n      var languageToTry = languagesFromOptions[i];\n      if (has(options.languages, languageToTry)) {\n        return options.languages[languageToTry];\n      } else if (has(LANGUAGES, languageToTry)) {\n        return LANGUAGES[languageToTry];\n      }\n    }\n\n    throw new Error("No language found.");\n  }\n\n  // doHumanization does the bulk of the work.\n  function doHumanization(ms, options) {\n    var i, len, piece;\n\n    // Make sure we have a positive number.\n    // Has the nice sideffect of turning Number objects into primitives.\n    ms = Math.abs(ms);\n\n    var dictionary = getDictionary(options);\n    var pieces = [];\n\n    // Start at the top and keep removing units, bit by bit.\n    var unitName, unitMS, unitCount;\n    for (i = 0, len = options.units.length; i < len; i++) {\n      unitName = options.units[i];\n      unitMS = options.unitMeasures[unitName];\n\n      // What\'s the number of full units we can fit?\n      if (i + 1 === len) {\n        if (has(options, "maxDecimalPoints")) {\n          // We need to use this expValue to avoid rounding functionality of toFixed call\n          var expValue = Math.pow(10, options.maxDecimalPoints);\n          var unitCountFloat = ms / unitMS;\n          unitCount = parseFloat(\n            (Math.floor(expValue * unitCountFloat) / expValue).toFixed(\n              options.maxDecimalPoints\n            )\n          );\n        } else {\n          unitCount = ms / unitMS;\n        }\n      } else {\n        unitCount = Math.floor(ms / unitMS);\n      }\n\n      // Add the string.\n      pieces.push({\n        unitCount: unitCount,\n        unitName: unitName\n      });\n\n      // Remove what we just figured out.\n      ms -= unitCount * unitMS;\n    }\n\n    var firstOccupiedUnitIndex = 0;\n    for (i = 0; i < pieces.length; i++) {\n      if (pieces[i].unitCount) {\n        firstOccupiedUnitIndex = i;\n        break;\n      }\n    }\n\n    if (options.round) {\n      var ratioToLargerUnit, previousPiece;\n      for (i = pieces.length - 1; i >= 0; i--) {\n        piece = pieces[i];\n        piece.unitCount = Math.round(piece.unitCount);\n\n        if (i === 0) {\n          break;\n        }\n\n        previousPiece = pieces[i - 1];\n\n        ratioToLargerUnit =\n          options.unitMeasures[previousPiece.unitName] /\n          options.unitMeasures[piece.unitName];\n        if (\n          piece.unitCount % ratioToLargerUnit === 0 ||\n          (options.largest && options.largest - 1 < i - firstOccupiedUnitIndex)\n        ) {\n          previousPiece.unitCount += piece.unitCount / ratioToLargerUnit;\n          piece.unitCount = 0;\n        }\n      }\n    }\n\n    var result = [];\n    for (i = 0, pieces.length; i < len; i++) {\n      piece = pieces[i];\n      if (piece.unitCount) {\n        result.push(\n          render(piece.unitCount, piece.unitName, dictionary, options)\n        );\n      }\n\n      if (result.length === options.largest) {\n        break;\n      }\n    }\n\n    if (result.length) {\n      var delimiter;\n      if (has(options, "delimiter")) {\n        delimiter = options.delimiter;\n      } else if (has(dictionary, "delimiter")) {\n        delimiter = dictionary.delimiter;\n      } else {\n        delimiter = ", ";\n      }\n\n      if (!options.conjunction || result.length === 1) {\n        return result.join(delimiter);\n      } else if (result.length === 2) {\n        return result.join(options.conjunction);\n      } else if (result.length > 2) {\n        return (\n          result.slice(0, -1).join(delimiter) +\n          (options.serialComma ? "," : "") +\n          options.conjunction +\n          result.slice(-1)\n        );\n      }\n    } else {\n      return render(\n        0,\n        options.units[options.units.length - 1],\n        dictionary,\n        options\n      );\n    }\n  }\n\n  function render(count, type, dictionary, options) {\n    var decimal;\n    if (has(options, "decimal")) {\n      decimal = options.decimal;\n    } else if (has(dictionary, "decimal")) {\n      decimal = dictionary.decimal;\n    } else {\n      decimal = ".";\n    }\n\n    var countStr;\n    if (typeof dictionary._formatCount === "function") {\n      countStr = dictionary._formatCount(count, decimal);\n    } else {\n      countStr = count.toString().replace(".", decimal);\n    }\n\n    var dictionaryValue = dictionary[type];\n    var word;\n    if (typeof dictionaryValue === "function") {\n      word = dictionaryValue(count);\n    } else {\n      word = dictionaryValue;\n    }\n\n    return countStr + options.spacer + word;\n  }\n\n  function assign(destination) {\n    var source;\n    for (var i = 1; i < arguments.length; i++) {\n      source = arguments[i];\n      for (var prop in source) {\n        if (has(source, prop)) {\n          destination[prop] = source[prop];\n        }\n      }\n    }\n    return destination;\n  }\n\n  function getArabicForm(c) {\n    if (c === 1) {\n      return 0;\n    }\n    if (c === 2) {\n      return 1;\n    }\n    if (c > 2 && c < 11) {\n      return 2;\n    }\n    return 0;\n  }\n\n  function getPolishForm(c) {\n    if (c === 1) {\n      return 0;\n    } else if (Math.floor(c) !== c) {\n      return 1;\n    } else if (c % 10 >= 2 && c % 10 <= 4 && !(c % 100 > 10 && c % 100 < 20)) {\n      return 2;\n    } else {\n      return 3;\n    }\n  }\n\n  function getSlavicForm(c) {\n    if (Math.floor(c) !== c) {\n      return 2;\n    } else if (\n      (c % 100 >= 5 && c % 100 <= 20) ||\n      (c % 10 >= 5 && c % 10 <= 9) ||\n      c % 10 === 0\n    ) {\n      return 0;\n    } else if (c % 10 === 1) {\n      return 1;\n    } else if (c > 1) {\n      return 2;\n    } else {\n      return 0;\n    }\n  }\n\n  function getCzechOrSlovakForm(c) {\n    if (c === 1) {\n      return 0;\n    } else if (Math.floor(c) !== c) {\n      return 1;\n    } else if (c % 10 >= 2 && c % 10 <= 4 && c % 100 < 10) {\n      return 2;\n    } else {\n      return 3;\n    }\n  }\n\n  function getLithuanianForm(c) {\n    if (c === 1 || (c % 10 === 1 && c % 100 > 20)) {\n      return 0;\n    } else if (\n      Math.floor(c) !== c ||\n      (c % 10 >= 2 && c % 100 > 20) ||\n      (c % 10 >= 2 && c % 100 < 10)\n    ) {\n      return 1;\n    } else {\n      return 2;\n    }\n  }\n\n  function getLatvianForm(c) {\n    return c % 10 === 1 && c % 100 !== 11;\n  }\n\n  // We need to make sure we support browsers that don\'t have\n  // `Array.isArray`, so we define a fallback here.\n  var isArray =\n    Array.isArray ||\n    function (arg) {\n      return Object.prototype.toString.call(arg) === "[object Array]";\n    };\n\n  function has(obj, key) {\n    return Object.prototype.hasOwnProperty.call(obj, key);\n  }\n\n  humanizeDuration.getSupportedLanguages = function getSupportedLanguages() {\n    var result = [];\n    for (var language in LANGUAGES) {\n      if (has(LANGUAGES, language) && language !== "gr") {\n        result.push(language);\n      }\n    }\n    return result;\n  };\n\n  humanizeDuration.humanizer = humanizer;\n\n  if (true) {\n    !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n      return humanizeDuration;\n    }).call(exports, __webpack_require__, exports, module),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n  } else {}\n})();\n\n\n//# sourceURL=webpack://txadmin/./node_modules/humanize-duration/humanize-duration.js?')},"./node_modules/iconv-lite/encodings/dbcs-codec.js":
/*!*********************************************************!*\
  !*** ./node_modules/iconv-lite/encodings/dbcs-codec.js ***!
  \*********************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nvar Buffer = (__webpack_require__(/*! safer-buffer */ "./node_modules/safer-buffer/safer.js").Buffer);\n\n// Multibyte codec. In this scheme, a character is represented by 1 or more bytes.\n// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences.\n// To save memory and loading time, we read table files only when requested.\n\nexports._dbcs = DBCSCodec;\n\nvar UNASSIGNED = -1,\n    GB18030_CODE = -2,\n    SEQ_START  = -10,\n    NODE_START = -1000,\n    UNASSIGNED_NODE = new Array(0x100),\n    DEF_CHAR = -1;\n\nfor (var i = 0; i < 0x100; i++)\n    UNASSIGNED_NODE[i] = UNASSIGNED;\n\n\n// Class DBCSCodec reads and initializes mapping tables.\nfunction DBCSCodec(codecOptions, iconv) {\n    this.encodingName = codecOptions.encodingName;\n    if (!codecOptions)\n        throw new Error("DBCS codec is called without the data.")\n    if (!codecOptions.table)\n        throw new Error("Encoding \'" + this.encodingName + "\' has no data.");\n\n    // Load tables.\n    var mappingTable = codecOptions.table();\n\n\n    // Decode tables: MBCS -> Unicode.\n\n    // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256.\n    // Trie root is decodeTables[0].\n    // Values: >=  0 -> unicode character code. can be > 0xFFFF\n    //         == UNASSIGNED -> unknown/unassigned sequence.\n    //         == GB18030_CODE -> this is the end of a GB18030 4-byte sequence.\n    //         <= NODE_START -> index of the next node in our trie to process next byte.\n    //         <= SEQ_START  -> index of the start of a character code sequence, in decodeTableSeq.\n    this.decodeTables = [];\n    this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node.\n\n    // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. \n    this.decodeTableSeq = [];\n\n    // Actual mapping tables consist of chunks. Use them to fill up decode tables.\n    for (var i = 0; i < mappingTable.length; i++)\n        this._addDecodeChunk(mappingTable[i]);\n\n    // Load & create GB18030 tables when needed.\n    if (typeof codecOptions.gb18030 === \'function\') {\n        this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges.\n\n        // Add GB18030 common decode nodes.\n        var commonThirdByteNodeIdx = this.decodeTables.length;\n        this.decodeTables.push(UNASSIGNED_NODE.slice(0));\n\n        var commonFourthByteNodeIdx = this.decodeTables.length;\n        this.decodeTables.push(UNASSIGNED_NODE.slice(0));\n\n        // Fill out the tree\n        var firstByteNode = this.decodeTables[0];\n        for (var i = 0x81; i <= 0xFE; i++) {\n            var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i]];\n            for (var j = 0x30; j <= 0x39; j++) {\n                if (secondByteNode[j] === UNASSIGNED) {\n                    secondByteNode[j] = NODE_START - commonThirdByteNodeIdx;\n                } else if (secondByteNode[j] > NODE_START) {\n                    throw new Error("gb18030 decode tables conflict at byte 2");\n                }\n\n                var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]];\n                for (var k = 0x81; k <= 0xFE; k++) {\n                    if (thirdByteNode[k] === UNASSIGNED) {\n                        thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx;\n                    } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) {\n                        continue;\n                    } else if (thirdByteNode[k] > NODE_START) {\n                        throw new Error("gb18030 decode tables conflict at byte 3");\n                    }\n\n                    var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]];\n                    for (var l = 0x30; l <= 0x39; l++) {\n                        if (fourthByteNode[l] === UNASSIGNED)\n                            fourthByteNode[l] = GB18030_CODE;\n                    }\n                }\n            }\n        }\n    }\n\n    this.defaultCharUnicode = iconv.defaultCharUnicode;\n\n    \n    // Encode tables: Unicode -> DBCS.\n\n    // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance.\n    // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null.\n    // Values: >=  0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.).\n    //         == UNASSIGNED -> no conversion found. Output a default char.\n    //         <= SEQ_START  -> it\'s an index in encodeTableSeq, see below. The character starts a sequence.\n    this.encodeTable = [];\n    \n    // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of\n    // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key\n    // means end of sequence (needed when one sequence is a strict subsequence of another).\n    // Objects are kept separately from encodeTable to increase performance.\n    this.encodeTableSeq = [];\n\n    // Some chars can be decoded, but need not be encoded.\n    var skipEncodeChars = {};\n    if (codecOptions.encodeSkipVals)\n        for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) {\n            var val = codecOptions.encodeSkipVals[i];\n            if (typeof val === \'number\')\n                skipEncodeChars[val] = true;\n            else\n                for (var j = val.from; j <= val.to; j++)\n                    skipEncodeChars[j] = true;\n        }\n        \n    // Use decode trie to recursively fill out encode tables.\n    this._fillEncodeTable(0, 0, skipEncodeChars);\n\n    // Add more encoding pairs when needed.\n    if (codecOptions.encodeAdd) {\n        for (var uChar in codecOptions.encodeAdd)\n            if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar))\n                this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]);\n    }\n\n    this.defCharSB  = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)];\n    if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0][\'?\'];\n    if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0);\n}\n\nDBCSCodec.prototype.encoder = DBCSEncoder;\nDBCSCodec.prototype.decoder = DBCSDecoder;\n\n// Decoder helpers\nDBCSCodec.prototype._getDecodeTrieNode = function(addr) {\n    var bytes = [];\n    for (; addr > 0; addr >>>= 8)\n        bytes.push(addr & 0xFF);\n    if (bytes.length == 0)\n        bytes.push(0);\n\n    var node = this.decodeTables[0];\n    for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie.\n        var val = node[bytes[i]];\n\n        if (val == UNASSIGNED) { // Create new node.\n            node[bytes[i]] = NODE_START - this.decodeTables.length;\n            this.decodeTables.push(node = UNASSIGNED_NODE.slice(0));\n        }\n        else if (val <= NODE_START) { // Existing node.\n            node = this.decodeTables[NODE_START - val];\n        }\n        else\n            throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16));\n    }\n    return node;\n}\n\n\nDBCSCodec.prototype._addDecodeChunk = function(chunk) {\n    // First element of chunk is the hex mbcs code where we start.\n    var curAddr = parseInt(chunk[0], 16);\n\n    // Choose the decoding node where we\'ll write our chars.\n    var writeTable = this._getDecodeTrieNode(curAddr);\n    curAddr = curAddr & 0xFF;\n\n    // Write all other elements of the chunk to the table.\n    for (var k = 1; k < chunk.length; k++) {\n        var part = chunk[k];\n        if (typeof part === "string") { // String, write as-is.\n            for (var l = 0; l < part.length;) {\n                var code = part.charCodeAt(l++);\n                if (0xD800 <= code && code < 0xDC00) { // Decode surrogate\n                    var codeTrail = part.charCodeAt(l++);\n                    if (0xDC00 <= codeTrail && codeTrail < 0xE000)\n                        writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00);\n                    else\n                        throw new Error("Incorrect surrogate pair in "  + this.encodingName + " at chunk " + chunk[0]);\n                }\n                else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used)\n                    var len = 0xFFF - code + 2;\n                    var seq = [];\n                    for (var m = 0; m < len; m++)\n                        seq.push(part.charCodeAt(l++)); // Simple variation: don\'t support surrogates or subsequences in seq.\n\n                    writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length;\n                    this.decodeTableSeq.push(seq);\n                }\n                else\n                    writeTable[curAddr++] = code; // Basic char\n            }\n        } \n        else if (typeof part === "number") { // Integer, meaning increasing sequence starting with prev character.\n            var charCode = writeTable[curAddr - 1] + 1;\n            for (var l = 0; l < part; l++)\n                writeTable[curAddr++] = charCode++;\n        }\n        else\n            throw new Error("Incorrect type \'" + typeof part + "\' given in "  + this.encodingName + " at chunk " + chunk[0]);\n    }\n    if (curAddr > 0xFF)\n        throw new Error("Incorrect chunk in "  + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr);\n}\n\n// Encoder helpers\nDBCSCodec.prototype._getEncodeBucket = function(uCode) {\n    var high = uCode >> 8; // This could be > 0xFF because of astral characters.\n    if (this.encodeTable[high] === undefined)\n        this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand.\n    return this.encodeTable[high];\n}\n\nDBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) {\n    var bucket = this._getEncodeBucket(uCode);\n    var low = uCode & 0xFF;\n    if (bucket[low] <= SEQ_START)\n        this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There\'s already a sequence, set a single-char subsequence of it.\n    else if (bucket[low] == UNASSIGNED)\n        bucket[low] = dbcsCode;\n}\n\nDBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) {\n    \n    // Get the root of character tree according to first character of the sequence.\n    var uCode = seq[0];\n    var bucket = this._getEncodeBucket(uCode);\n    var low = uCode & 0xFF;\n\n    var node;\n    if (bucket[low] <= SEQ_START) {\n        // There\'s already a sequence with  - use it.\n        node = this.encodeTableSeq[SEQ_START-bucket[low]];\n    }\n    else {\n        // There was no sequence object - allocate a new one.\n        node = {};\n        if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence.\n        bucket[low] = SEQ_START - this.encodeTableSeq.length;\n        this.encodeTableSeq.push(node);\n    }\n\n    // Traverse the character tree, allocating new nodes as needed.\n    for (var j = 1; j < seq.length-1; j++) {\n        var oldVal = node[uCode];\n        if (typeof oldVal === \'object\')\n            node = oldVal;\n        else {\n            node = node[uCode] = {}\n            if (oldVal !== undefined)\n                node[DEF_CHAR] = oldVal\n        }\n    }\n\n    // Set the leaf to given dbcsCode.\n    uCode = seq[seq.length-1];\n    node[uCode] = dbcsCode;\n}\n\nDBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) {\n    var node = this.decodeTables[nodeIdx];\n    var hasValues = false;\n    var subNodeEmpty = {};\n    for (var i = 0; i < 0x100; i++) {\n        var uCode = node[i];\n        var mbCode = prefix + i;\n        if (skipEncodeChars[mbCode])\n            continue;\n\n        if (uCode >= 0) {\n            this._setEncodeChar(uCode, mbCode);\n            hasValues = true;\n        } else if (uCode <= NODE_START) {\n            var subNodeIdx = NODE_START - uCode;\n            if (!subNodeEmpty[subNodeIdx]) {  // Skip empty subtrees (they are too large in gb18030).\n                var newPrefix = (mbCode << 8) >>> 0;  // NOTE: \'>>> 0\' keeps 32-bit num positive.\n                if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars))\n                    hasValues = true;\n                else\n                    subNodeEmpty[subNodeIdx] = true;\n            }\n        } else if (uCode <= SEQ_START) {\n            this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode);\n            hasValues = true;\n        }\n    }\n    return hasValues;\n}\n\n\n\n// == Encoder ==================================================================\n\nfunction DBCSEncoder(options, codec) {\n    // Encoder state\n    this.leadSurrogate = -1;\n    this.seqObj = undefined;\n    \n    // Static data\n    this.encodeTable = codec.encodeTable;\n    this.encodeTableSeq = codec.encodeTableSeq;\n    this.defaultCharSingleByte = codec.defCharSB;\n    this.gb18030 = codec.gb18030;\n}\n\nDBCSEncoder.prototype.write = function(str) {\n    var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)),\n        leadSurrogate = this.leadSurrogate,\n        seqObj = this.seqObj, nextChar = -1,\n        i = 0, j = 0;\n\n    while (true) {\n        // 0. Get next character.\n        if (nextChar === -1) {\n            if (i == str.length) break;\n            var uCode = str.charCodeAt(i++);\n        }\n        else {\n            var uCode = nextChar;\n            nextChar = -1;    \n        }\n\n        // 1. Handle surrogates.\n        if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates.\n            if (uCode < 0xDC00) { // We\'ve got lead surrogate.\n                if (leadSurrogate === -1) {\n                    leadSurrogate = uCode;\n                    continue;\n                } else {\n                    leadSurrogate = uCode;\n                    // Double lead surrogate found.\n                    uCode = UNASSIGNED;\n                }\n            } else { // We\'ve got trail surrogate.\n                if (leadSurrogate !== -1) {\n                    uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00);\n                    leadSurrogate = -1;\n                } else {\n                    // Incomplete surrogate pair - only trail surrogate found.\n                    uCode = UNASSIGNED;\n                }\n                \n            }\n        }\n        else if (leadSurrogate !== -1) {\n            // Incomplete surrogate pair - only lead surrogate found.\n            nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char.\n            leadSurrogate = -1;\n        }\n\n        // 2. Convert uCode character.\n        var dbcsCode = UNASSIGNED;\n        if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence\n            var resCode = seqObj[uCode];\n            if (typeof resCode === \'object\') { // Sequence continues.\n                seqObj = resCode;\n                continue;\n\n            } else if (typeof resCode == \'number\') { // Sequence finished. Write it.\n                dbcsCode = resCode;\n\n            } else if (resCode == undefined) { // Current character is not part of the sequence.\n\n                // Try default character for this sequence\n                resCode = seqObj[DEF_CHAR];\n                if (resCode !== undefined) {\n                    dbcsCode = resCode; // Found. Write it.\n                    nextChar = uCode; // Current character will be written too in the next iteration.\n\n                } else {\n                    // TODO: What if we have no default? (resCode == undefined)\n                    // Then, we should write first char of the sequence as-is and try the rest recursively.\n                    // Didn\'t do it for now because no encoding has this situation yet.\n                    // Currently, just skip the sequence and write current char.\n                }\n            }\n            seqObj = undefined;\n        }\n        else if (uCode >= 0) {  // Regular character\n            var subtable = this.encodeTable[uCode >> 8];\n            if (subtable !== undefined)\n                dbcsCode = subtable[uCode & 0xFF];\n            \n            if (dbcsCode <= SEQ_START) { // Sequence start\n                seqObj = this.encodeTableSeq[SEQ_START-dbcsCode];\n                continue;\n            }\n\n            if (dbcsCode == UNASSIGNED && this.gb18030) {\n                // Use GB18030 algorithm to find character(s) to write.\n                var idx = findIdx(this.gb18030.uChars, uCode);\n                if (idx != -1) {\n                    var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]);\n                    newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600;\n                    newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260;\n                    newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10;\n                    newBuf[j++] = 0x30 + dbcsCode;\n                    continue;\n                }\n            }\n        }\n\n        // 3. Write dbcsCode character.\n        if (dbcsCode === UNASSIGNED)\n            dbcsCode = this.defaultCharSingleByte;\n        \n        if (dbcsCode < 0x100) {\n            newBuf[j++] = dbcsCode;\n        }\n        else if (dbcsCode < 0x10000) {\n            newBuf[j++] = dbcsCode >> 8;   // high byte\n            newBuf[j++] = dbcsCode & 0xFF; // low byte\n        }\n        else if (dbcsCode < 0x1000000) {\n            newBuf[j++] = dbcsCode >> 16;\n            newBuf[j++] = (dbcsCode >> 8) & 0xFF;\n            newBuf[j++] = dbcsCode & 0xFF;\n        } else {\n            newBuf[j++] = dbcsCode >>> 24;\n            newBuf[j++] = (dbcsCode >>> 16) & 0xFF;\n            newBuf[j++] = (dbcsCode >>> 8) & 0xFF;\n            newBuf[j++] = dbcsCode & 0xFF;\n        }\n    }\n\n    this.seqObj = seqObj;\n    this.leadSurrogate = leadSurrogate;\n    return newBuf.slice(0, j);\n}\n\nDBCSEncoder.prototype.end = function() {\n    if (this.leadSurrogate === -1 && this.seqObj === undefined)\n        return; // All clean. Most often case.\n\n    var newBuf = Buffer.alloc(10), j = 0;\n\n    if (this.seqObj) { // We\'re in the sequence.\n        var dbcsCode = this.seqObj[DEF_CHAR];\n        if (dbcsCode !== undefined) { // Write beginning of the sequence.\n            if (dbcsCode < 0x100) {\n                newBuf[j++] = dbcsCode;\n            }\n            else {\n                newBuf[j++] = dbcsCode >> 8;   // high byte\n                newBuf[j++] = dbcsCode & 0xFF; // low byte\n            }\n        } else {\n            // See todo above.\n        }\n        this.seqObj = undefined;\n    }\n\n    if (this.leadSurrogate !== -1) {\n        // Incomplete surrogate pair - only lead surrogate found.\n        newBuf[j++] = this.defaultCharSingleByte;\n        this.leadSurrogate = -1;\n    }\n    \n    return newBuf.slice(0, j);\n}\n\n// Export for testing\nDBCSEncoder.prototype.findIdx = findIdx;\n\n\n// == Decoder ==================================================================\n\nfunction DBCSDecoder(options, codec) {\n    // Decoder state\n    this.nodeIdx = 0;\n    this.prevBytes = [];\n\n    // Static data\n    this.decodeTables = codec.decodeTables;\n    this.decodeTableSeq = codec.decodeTableSeq;\n    this.defaultCharUnicode = codec.defaultCharUnicode;\n    this.gb18030 = codec.gb18030;\n}\n\nDBCSDecoder.prototype.write = function(buf) {\n    var newBuf = Buffer.alloc(buf.length*2),\n        nodeIdx = this.nodeIdx, \n        prevBytes = this.prevBytes, prevOffset = this.prevBytes.length,\n        seqStart = -this.prevBytes.length, // idx of the start of current parsed sequence.\n        uCode;\n\n    for (var i = 0, j = 0; i < buf.length; i++) {\n        var curByte = (i >= 0) ? buf[i] : prevBytes[i + prevOffset];\n\n        // Lookup in current trie node.\n        var uCode = this.decodeTables[nodeIdx][curByte];\n\n        if (uCode >= 0) { \n            // Normal character, just use it.\n        }\n        else if (uCode === UNASSIGNED) { // Unknown char.\n            // TODO: Callback with seq.\n            uCode = this.defaultCharUnicode.charCodeAt(0);\n            i = seqStart; // Skip one byte (\'i\' will be incremented by the for loop) and try to parse again.\n        }\n        else if (uCode === GB18030_CODE) {\n            if (i >= 3) {\n                var ptr = (buf[i-3]-0x81)*12600 + (buf[i-2]-0x30)*1260 + (buf[i-1]-0x81)*10 + (curByte-0x30);\n            } else {\n                var ptr = (prevBytes[i-3+prevOffset]-0x81)*12600 + \n                          (((i-2 >= 0) ? buf[i-2] : prevBytes[i-2+prevOffset])-0x30)*1260 + \n                          (((i-1 >= 0) ? buf[i-1] : prevBytes[i-1+prevOffset])-0x81)*10 + \n                          (curByte-0x30);\n            }\n            var idx = findIdx(this.gb18030.gbChars, ptr);\n            uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx];\n        }\n        else if (uCode <= NODE_START) { // Go to next trie node.\n            nodeIdx = NODE_START - uCode;\n            continue;\n        }\n        else if (uCode <= SEQ_START) { // Output a sequence of chars.\n            var seq = this.decodeTableSeq[SEQ_START - uCode];\n            for (var k = 0; k < seq.length - 1; k++) {\n                uCode = seq[k];\n                newBuf[j++] = uCode & 0xFF;\n                newBuf[j++] = uCode >> 8;\n            }\n            uCode = seq[seq.length-1];\n        }\n        else\n            throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte);\n\n        // Write the character to buffer, handling higher planes using surrogate pair.\n        if (uCode >= 0x10000) { \n            uCode -= 0x10000;\n            var uCodeLead = 0xD800 | (uCode >> 10);\n            newBuf[j++] = uCodeLead & 0xFF;\n            newBuf[j++] = uCodeLead >> 8;\n\n            uCode = 0xDC00 | (uCode & 0x3FF);\n        }\n        newBuf[j++] = uCode & 0xFF;\n        newBuf[j++] = uCode >> 8;\n\n        // Reset trie node.\n        nodeIdx = 0; seqStart = i+1;\n    }\n\n    this.nodeIdx = nodeIdx;\n    this.prevBytes = (seqStart >= 0)\n        ? Array.prototype.slice.call(buf, seqStart)\n        : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf));\n\n    return newBuf.slice(0, j).toString(\'ucs2\');\n}\n\nDBCSDecoder.prototype.end = function() {\n    var ret = \'\';\n\n    // Try to parse all remaining chars.\n    while (this.prevBytes.length > 0) {\n        // Skip 1 character in the buffer.\n        ret += this.defaultCharUnicode;\n        var bytesArr = this.prevBytes.slice(1);\n\n        // Parse remaining as usual.\n        this.prevBytes = [];\n        this.nodeIdx = 0;\n        if (bytesArr.length > 0)\n            ret += this.write(bytesArr);\n    }\n\n    this.prevBytes = [];\n    this.nodeIdx = 0;\n    return ret;\n}\n\n// Binary search for GB18030. Returns largest i such that table[i] <= val.\nfunction findIdx(table, val) {\n    if (table[0] > val)\n        return -1;\n\n    var l = 0, r = table.length;\n    while (l < r-1) { // always table[l] <= val < table[r]\n        var mid = l + ((r-l+1) >> 1);\n        if (table[mid] <= val)\n            l = mid;\n        else\n            r = mid;\n    }\n    return l;\n}\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/iconv-lite/encodings/dbcs-codec.js?')},"./node_modules/iconv-lite/encodings/dbcs-data.js":
/*!********************************************************!*\
  !*** ./node_modules/iconv-lite/encodings/dbcs-data.js ***!
  \********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n// Description of supported double byte encodings and aliases.\n// Tables are not require()-d until they are needed to speed up library load.\n// require()-s are direct to support Browserify.\n\nmodule.exports = {\n    \n    // == Japanese/ShiftJIS ====================================================\n    // All japanese encodings are based on JIS X set of standards:\n    // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF.\n    // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. \n    //              Has several variations in 1978, 1983, 1990 and 1997.\n    // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.\n    // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.\n    //              2 planes, first is superset of 0208, second - revised 0212.\n    //              Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)\n\n    // Byte encodings are:\n    //  * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte\n    //               encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.\n    //               Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.\n    //  * EUC-JP:    Up to 3 bytes per character. Used mostly on *nixes.\n    //               0x00-0x7F       - lower part of 0201\n    //               0x8E, 0xA1-0xDF - upper part of 0201\n    //               (0xA1-0xFE)x2   - 0208 plane (94x94).\n    //               0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).\n    //  * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.\n    //               Used as-is in ISO2022 family.\n    //  * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, \n    //                0201-1976 Roman, 0208-1978, 0208-1983.\n    //  * ISO2022-JP-1: Adds esc seq for 0212-1990.\n    //  * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.\n    //  * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.\n    //  * ISO2022-JP-2004: Adds 0213-2004 Plane 1.\n    //\n    // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.\n    //\n    // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html\n\n    'shiftjis': {\n        type: '_dbcs',\n        table: function() { return __webpack_require__(/*! ./tables/shiftjis.json */ \"./node_modules/iconv-lite/encodings/tables/shiftjis.json\") },\n        encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n        encodeSkipVals: [{from: 0xED40, to: 0xF940}],\n    },\n    'csshiftjis': 'shiftjis',\n    'mskanji': 'shiftjis',\n    'sjis': 'shiftjis',\n    'windows31j': 'shiftjis',\n    'ms31j': 'shiftjis',\n    'xsjis': 'shiftjis',\n    'windows932': 'shiftjis',\n    'ms932': 'shiftjis',\n    '932': 'shiftjis',\n    'cp932': 'shiftjis',\n\n    'eucjp': {\n        type: '_dbcs',\n        table: function() { return __webpack_require__(/*! ./tables/eucjp.json */ \"./node_modules/iconv-lite/encodings/tables/eucjp.json\") },\n        encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n    },\n\n    // TODO: KDDI extension to Shift_JIS\n    // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.\n    // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.\n\n\n    // == Chinese/GBK ==========================================================\n    // http://en.wikipedia.org/wiki/GBK\n    // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder\n\n    // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936\n    'gb2312': 'cp936',\n    'gb231280': 'cp936',\n    'gb23121980': 'cp936',\n    'csgb2312': 'cp936',\n    'csiso58gb231280': 'cp936',\n    'euccn': 'cp936',\n\n    // Microsoft's CP936 is a subset and approximation of GBK.\n    'windows936': 'cp936',\n    'ms936': 'cp936',\n    '936': 'cp936',\n    'cp936': {\n        type: '_dbcs',\n        table: function() { return __webpack_require__(/*! ./tables/cp936.json */ \"./node_modules/iconv-lite/encodings/tables/cp936.json\") },\n    },\n\n    // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.\n    'gbk': {\n        type: '_dbcs',\n        table: function() { return (__webpack_require__(/*! ./tables/cp936.json */ \"./node_modules/iconv-lite/encodings/tables/cp936.json\").concat)(__webpack_require__(/*! ./tables/gbk-added.json */ \"./node_modules/iconv-lite/encodings/tables/gbk-added.json\")) },\n    },\n    'xgbk': 'gbk',\n    'isoir58': 'gbk',\n\n    // GB18030 is an algorithmic extension of GBK.\n    // Main source: https://www.w3.org/TR/encoding/#gbk-encoder\n    // http://icu-project.org/docs/papers/gb18030.html\n    // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml\n    // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0\n    'gb18030': {\n        type: '_dbcs',\n        table: function() { return (__webpack_require__(/*! ./tables/cp936.json */ \"./node_modules/iconv-lite/encodings/tables/cp936.json\").concat)(__webpack_require__(/*! ./tables/gbk-added.json */ \"./node_modules/iconv-lite/encodings/tables/gbk-added.json\")) },\n        gb18030: function() { return __webpack_require__(/*! ./tables/gb18030-ranges.json */ \"./node_modules/iconv-lite/encodings/tables/gb18030-ranges.json\") },\n        encodeSkipVals: [0x80],\n        encodeAdd: {'€': 0xA2E3},\n    },\n\n    'chinese': 'gb18030',\n\n\n    // == Korean ===============================================================\n    // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.\n    'windows949': 'cp949',\n    'ms949': 'cp949',\n    '949': 'cp949',\n    'cp949': {\n        type: '_dbcs',\n        table: function() { return __webpack_require__(/*! ./tables/cp949.json */ \"./node_modules/iconv-lite/encodings/tables/cp949.json\") },\n    },\n\n    'cseuckr': 'cp949',\n    'csksc56011987': 'cp949',\n    'euckr': 'cp949',\n    'isoir149': 'cp949',\n    'korean': 'cp949',\n    'ksc56011987': 'cp949',\n    'ksc56011989': 'cp949',\n    'ksc5601': 'cp949',\n\n\n    // == Big5/Taiwan/Hong Kong ================================================\n    // There are lots of tables for Big5 and cp950. Please see the following links for history:\n    // http://moztw.org/docs/big5/  http://www.haible.de/bruno/charsets/conversion-tables/Big5.html\n    // Variations, in roughly number of defined chars:\n    //  * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT\n    //  * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/\n    //  * Big5-2003 (Taiwan standard) almost superset of cp950.\n    //  * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.\n    //  * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. \n    //    many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.\n    //    Plus, it has 4 combining sequences.\n    //    Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299\n    //    because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.\n    //    Implementations are not consistent within browsers; sometimes labeled as just big5.\n    //    MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.\n    //    Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31\n    //    In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.\n    //    Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt\n    //                   http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt\n    // \n    // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder\n    // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.\n\n    'windows950': 'cp950',\n    'ms950': 'cp950',\n    '950': 'cp950',\n    'cp950': {\n        type: '_dbcs',\n        table: function() { return __webpack_require__(/*! ./tables/cp950.json */ \"./node_modules/iconv-lite/encodings/tables/cp950.json\") },\n    },\n\n    // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.\n    'big5': 'big5hkscs',\n    'big5hkscs': {\n        type: '_dbcs',\n        table: function() { return (__webpack_require__(/*! ./tables/cp950.json */ \"./node_modules/iconv-lite/encodings/tables/cp950.json\").concat)(__webpack_require__(/*! ./tables/big5-added.json */ \"./node_modules/iconv-lite/encodings/tables/big5-added.json\")) },\n        encodeSkipVals: [\n            // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of\n            // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU.\n            // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter.\n            0x8e69, 0x8e6f, 0x8e7e, 0x8eab, 0x8eb4, 0x8ecd, 0x8ed0, 0x8f57, 0x8f69, 0x8f6e, 0x8fcb, 0x8ffe,\n            0x906d, 0x907a, 0x90c4, 0x90dc, 0x90f1, 0x91bf, 0x92af, 0x92b0, 0x92b1, 0x92b2, 0x92d1, 0x9447, 0x94ca,\n            0x95d9, 0x96fc, 0x9975, 0x9b76, 0x9b78, 0x9b7b, 0x9bc6, 0x9bde, 0x9bec, 0x9bf6, 0x9c42, 0x9c53, 0x9c62,\n            0x9c68, 0x9c6b, 0x9c77, 0x9cbc, 0x9cbd, 0x9cd0, 0x9d57, 0x9d5a, 0x9dc4, 0x9def, 0x9dfb, 0x9ea9, 0x9eef,\n            0x9efd, 0x9f60, 0x9fcb, 0xa077, 0xa0dc, 0xa0df, 0x8fcc, 0x92c8, 0x9644, 0x96ed,\n\n            // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345\n            0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa2cc, 0xa2ce,\n        ],\n    },\n\n    'cnbig5': 'big5hkscs',\n    'csbig5': 'big5hkscs',\n    'xxbig5': 'big5hkscs',\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/iconv-lite/encodings/dbcs-data.js?")},"./node_modules/iconv-lite/encodings/index.js":
/*!****************************************************!*\
  !*** ./node_modules/iconv-lite/encodings/index.js ***!
  \****************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n\n// Update this array if you add/rename/remove files in this directory.\n// We support Browserify by skipping automatic module discovery and requiring modules directly.\nvar modules = [\n    __webpack_require__(/*! ./internal */ "./node_modules/iconv-lite/encodings/internal.js"),\n    __webpack_require__(/*! ./utf32 */ "./node_modules/iconv-lite/encodings/utf32.js"),\n    __webpack_require__(/*! ./utf16 */ "./node_modules/iconv-lite/encodings/utf16.js"),\n    __webpack_require__(/*! ./utf7 */ "./node_modules/iconv-lite/encodings/utf7.js"),\n    __webpack_require__(/*! ./sbcs-codec */ "./node_modules/iconv-lite/encodings/sbcs-codec.js"),\n    __webpack_require__(/*! ./sbcs-data */ "./node_modules/iconv-lite/encodings/sbcs-data.js"),\n    __webpack_require__(/*! ./sbcs-data-generated */ "./node_modules/iconv-lite/encodings/sbcs-data-generated.js"),\n    __webpack_require__(/*! ./dbcs-codec */ "./node_modules/iconv-lite/encodings/dbcs-codec.js"),\n    __webpack_require__(/*! ./dbcs-data */ "./node_modules/iconv-lite/encodings/dbcs-data.js"),\n];\n\n// Put all encoding/alias/codec definitions to single object and export it.\nfor (var i = 0; i < modules.length; i++) {\n    var module = modules[i];\n    for (var enc in module)\n        if (Object.prototype.hasOwnProperty.call(module, enc))\n            exports[enc] = module[enc];\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/iconv-lite/encodings/index.js?')},"./node_modules/iconv-lite/encodings/internal.js":
/*!*******************************************************!*\
  !*** ./node_modules/iconv-lite/encodings/internal.js ***!
  \*******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\nvar Buffer = (__webpack_require__(/*! safer-buffer */ "./node_modules/safer-buffer/safer.js").Buffer);\n\n// Export Node.js internal encodings.\n\nmodule.exports = {\n    // Encodings\n    utf8:   { type: "_internal", bomAware: true},\n    cesu8:  { type: "_internal", bomAware: true},\n    unicode11utf8: "utf8",\n\n    ucs2:   { type: "_internal", bomAware: true},\n    utf16le: "ucs2",\n\n    binary: { type: "_internal" },\n    base64: { type: "_internal" },\n    hex:    { type: "_internal" },\n\n    // Codec.\n    _internal: InternalCodec,\n};\n\n//------------------------------------------------------------------------------\n\nfunction InternalCodec(codecOptions, iconv) {\n    this.enc = codecOptions.encodingName;\n    this.bomAware = codecOptions.bomAware;\n\n    if (this.enc === "base64")\n        this.encoder = InternalEncoderBase64;\n    else if (this.enc === "cesu8") {\n        this.enc = "utf8"; // Use utf8 for decoding.\n        this.encoder = InternalEncoderCesu8;\n\n        // Add decoder for versions of Node not supporting CESU-8\n        if (Buffer.from(\'eda0bdedb2a9\', \'hex\').toString() !== \'💩\') {\n            this.decoder = InternalDecoderCesu8;\n            this.defaultCharUnicode = iconv.defaultCharUnicode;\n        }\n    }\n}\n\nInternalCodec.prototype.encoder = InternalEncoder;\nInternalCodec.prototype.decoder = InternalDecoder;\n\n//------------------------------------------------------------------------------\n\n// We use node.js internal decoder. Its signature is the same as ours.\nvar StringDecoder = (__webpack_require__(/*! string_decoder */ "string_decoder").StringDecoder);\n\nif (!StringDecoder.prototype.end) // Node v0.8 doesn\'t have this method.\n    StringDecoder.prototype.end = function() {};\n\n\nfunction InternalDecoder(options, codec) {\n    this.decoder = new StringDecoder(codec.enc);\n}\n\nInternalDecoder.prototype.write = function(buf) {\n    if (!Buffer.isBuffer(buf)) {\n        buf = Buffer.from(buf);\n    }\n\n    return this.decoder.write(buf);\n}\n\nInternalDecoder.prototype.end = function() {\n    return this.decoder.end();\n}\n\n\n//------------------------------------------------------------------------------\n// Encoder is mostly trivial\n\nfunction InternalEncoder(options, codec) {\n    this.enc = codec.enc;\n}\n\nInternalEncoder.prototype.write = function(str) {\n    return Buffer.from(str, this.enc);\n}\n\nInternalEncoder.prototype.end = function() {\n}\n\n\n//------------------------------------------------------------------------------\n// Except base64 encoder, which must keep its state.\n\nfunction InternalEncoderBase64(options, codec) {\n    this.prevStr = \'\';\n}\n\nInternalEncoderBase64.prototype.write = function(str) {\n    str = this.prevStr + str;\n    var completeQuads = str.length - (str.length % 4);\n    this.prevStr = str.slice(completeQuads);\n    str = str.slice(0, completeQuads);\n\n    return Buffer.from(str, "base64");\n}\n\nInternalEncoderBase64.prototype.end = function() {\n    return Buffer.from(this.prevStr, "base64");\n}\n\n\n//------------------------------------------------------------------------------\n// CESU-8 encoder is also special.\n\nfunction InternalEncoderCesu8(options, codec) {\n}\n\nInternalEncoderCesu8.prototype.write = function(str) {\n    var buf = Buffer.alloc(str.length * 3), bufIdx = 0;\n    for (var i = 0; i < str.length; i++) {\n        var charCode = str.charCodeAt(i);\n        // Naive implementation, but it works because CESU-8 is especially easy\n        // to convert from UTF-16 (which all JS strings are encoded in).\n        if (charCode < 0x80)\n            buf[bufIdx++] = charCode;\n        else if (charCode < 0x800) {\n            buf[bufIdx++] = 0xC0 + (charCode >>> 6);\n            buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n        }\n        else { // charCode will always be < 0x10000 in javascript.\n            buf[bufIdx++] = 0xE0 + (charCode >>> 12);\n            buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f);\n            buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n        }\n    }\n    return buf.slice(0, bufIdx);\n}\n\nInternalEncoderCesu8.prototype.end = function() {\n}\n\n//------------------------------------------------------------------------------\n// CESU-8 decoder is not implemented in Node v4.0+\n\nfunction InternalDecoderCesu8(options, codec) {\n    this.acc = 0;\n    this.contBytes = 0;\n    this.accBytes = 0;\n    this.defaultCharUnicode = codec.defaultCharUnicode;\n}\n\nInternalDecoderCesu8.prototype.write = function(buf) {\n    var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, \n        res = \'\';\n    for (var i = 0; i < buf.length; i++) {\n        var curByte = buf[i];\n        if ((curByte & 0xC0) !== 0x80) { // Leading byte\n            if (contBytes > 0) { // Previous code is invalid\n                res += this.defaultCharUnicode;\n                contBytes = 0;\n            }\n\n            if (curByte < 0x80) { // Single-byte code\n                res += String.fromCharCode(curByte);\n            } else if (curByte < 0xE0) { // Two-byte code\n                acc = curByte & 0x1F;\n                contBytes = 1; accBytes = 1;\n            } else if (curByte < 0xF0) { // Three-byte code\n                acc = curByte & 0x0F;\n                contBytes = 2; accBytes = 1;\n            } else { // Four or more are not supported for CESU-8.\n                res += this.defaultCharUnicode;\n            }\n        } else { // Continuation byte\n            if (contBytes > 0) { // We\'re waiting for it.\n                acc = (acc << 6) | (curByte & 0x3f);\n                contBytes--; accBytes++;\n                if (contBytes === 0) {\n                    // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80)\n                    if (accBytes === 2 && acc < 0x80 && acc > 0)\n                        res += this.defaultCharUnicode;\n                    else if (accBytes === 3 && acc < 0x800)\n                        res += this.defaultCharUnicode;\n                    else\n                        // Actually add character.\n                        res += String.fromCharCode(acc);\n                }\n            } else { // Unexpected continuation byte\n                res += this.defaultCharUnicode;\n            }\n        }\n    }\n    this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes;\n    return res;\n}\n\nInternalDecoderCesu8.prototype.end = function() {\n    var res = 0;\n    if (this.contBytes > 0)\n        res += this.defaultCharUnicode;\n    return res;\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/iconv-lite/encodings/internal.js?')},"./node_modules/iconv-lite/encodings/sbcs-codec.js":
/*!*********************************************************!*\
  !*** ./node_modules/iconv-lite/encodings/sbcs-codec.js ***!
  \*********************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nvar Buffer = (__webpack_require__(/*! safer-buffer */ \"./node_modules/safer-buffer/safer.js\").Buffer);\n\n// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that\n// correspond to encoded bytes (if 128 - then lower half is ASCII). \n\nexports._sbcs = SBCSCodec;\nfunction SBCSCodec(codecOptions, iconv) {\n    if (!codecOptions)\n        throw new Error(\"SBCS codec is called without the data.\")\n    \n    // Prepare char buffer for decoding.\n    if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256))\n        throw new Error(\"Encoding '\"+codecOptions.type+\"' has incorrect 'chars' (must be of len 128 or 256)\");\n    \n    if (codecOptions.chars.length === 128) {\n        var asciiString = \"\";\n        for (var i = 0; i < 128; i++)\n            asciiString += String.fromCharCode(i);\n        codecOptions.chars = asciiString + codecOptions.chars;\n    }\n\n    this.decodeBuf = Buffer.from(codecOptions.chars, 'ucs2');\n    \n    // Encoding buffer.\n    var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0));\n\n    for (var i = 0; i < codecOptions.chars.length; i++)\n        encodeBuf[codecOptions.chars.charCodeAt(i)] = i;\n\n    this.encodeBuf = encodeBuf;\n}\n\nSBCSCodec.prototype.encoder = SBCSEncoder;\nSBCSCodec.prototype.decoder = SBCSDecoder;\n\n\nfunction SBCSEncoder(options, codec) {\n    this.encodeBuf = codec.encodeBuf;\n}\n\nSBCSEncoder.prototype.write = function(str) {\n    var buf = Buffer.alloc(str.length);\n    for (var i = 0; i < str.length; i++)\n        buf[i] = this.encodeBuf[str.charCodeAt(i)];\n    \n    return buf;\n}\n\nSBCSEncoder.prototype.end = function() {\n}\n\n\nfunction SBCSDecoder(options, codec) {\n    this.decodeBuf = codec.decodeBuf;\n}\n\nSBCSDecoder.prototype.write = function(buf) {\n    // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.\n    var decodeBuf = this.decodeBuf;\n    var newBuf = Buffer.alloc(buf.length*2);\n    var idx1 = 0, idx2 = 0;\n    for (var i = 0; i < buf.length; i++) {\n        idx1 = buf[i]*2; idx2 = i*2;\n        newBuf[idx2] = decodeBuf[idx1];\n        newBuf[idx2+1] = decodeBuf[idx1+1];\n    }\n    return newBuf.toString('ucs2');\n}\n\nSBCSDecoder.prototype.end = function() {\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/iconv-lite/encodings/sbcs-codec.js?")},"./node_modules/iconv-lite/encodings/sbcs-data-generated.js":
/*!******************************************************************!*\
  !*** ./node_modules/iconv-lite/encodings/sbcs-data-generated.js ***!
  \******************************************************************/module=>{"use strict";eval('\n\n// Generated data for sbcs codec. Don\'t edit manually. Regenerate using generation/gen-sbcs.js script.\nmodule.exports = {\n  "437": "cp437",\n  "737": "cp737",\n  "775": "cp775",\n  "850": "cp850",\n  "852": "cp852",\n  "855": "cp855",\n  "856": "cp856",\n  "857": "cp857",\n  "858": "cp858",\n  "860": "cp860",\n  "861": "cp861",\n  "862": "cp862",\n  "863": "cp863",\n  "864": "cp864",\n  "865": "cp865",\n  "866": "cp866",\n  "869": "cp869",\n  "874": "windows874",\n  "922": "cp922",\n  "1046": "cp1046",\n  "1124": "cp1124",\n  "1125": "cp1125",\n  "1129": "cp1129",\n  "1133": "cp1133",\n  "1161": "cp1161",\n  "1162": "cp1162",\n  "1163": "cp1163",\n  "1250": "windows1250",\n  "1251": "windows1251",\n  "1252": "windows1252",\n  "1253": "windows1253",\n  "1254": "windows1254",\n  "1255": "windows1255",\n  "1256": "windows1256",\n  "1257": "windows1257",\n  "1258": "windows1258",\n  "28591": "iso88591",\n  "28592": "iso88592",\n  "28593": "iso88593",\n  "28594": "iso88594",\n  "28595": "iso88595",\n  "28596": "iso88596",\n  "28597": "iso88597",\n  "28598": "iso88598",\n  "28599": "iso88599",\n  "28600": "iso885910",\n  "28601": "iso885911",\n  "28603": "iso885913",\n  "28604": "iso885914",\n  "28605": "iso885915",\n  "28606": "iso885916",\n  "windows874": {\n    "type": "_sbcs",\n    "chars": "€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"\n  },\n  "win874": "windows874",\n  "cp874": "windows874",\n  "windows1250": {\n    "type": "_sbcs",\n    "chars": "€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙"\n  },\n  "win1250": "windows1250",\n  "cp1250": "windows1250",\n  "windows1251": {\n    "type": "_sbcs",\n    "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"\n  },\n  "win1251": "windows1251",\n  "cp1251": "windows1251",\n  "windows1252": {\n    "type": "_sbcs",\n    "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"\n  },\n  "win1252": "windows1252",\n  "cp1252": "windows1252",\n  "windows1253": {\n    "type": "_sbcs",\n    "chars": "€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�"\n  },\n  "win1253": "windows1253",\n  "cp1253": "windows1253",\n  "windows1254": {\n    "type": "_sbcs",\n    "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ"\n  },\n  "win1254": "windows1254",\n  "cp1254": "windows1254",\n  "windows1255": {\n    "type": "_sbcs",\n    "chars": "€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�"\n  },\n  "win1255": "windows1255",\n  "cp1255": "windows1255",\n  "windows1256": {\n    "type": "_sbcs",\n    "chars": "€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے"\n  },\n  "win1256": "windows1256",\n  "cp1256": "windows1256",\n  "windows1257": {\n    "type": "_sbcs",\n    "chars": "€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙"\n  },\n  "win1257": "windows1257",\n  "cp1257": "windows1257",\n  "windows1258": {\n    "type": "_sbcs",\n    "chars": "€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"\n  },\n  "win1258": "windows1258",\n  "cp1258": "windows1258",\n  "iso88591": {\n    "type": "_sbcs",\n    "chars": " ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"\n  },\n  "cp28591": "iso88591",\n  "iso88592": {\n    "type": "_sbcs",\n    "chars": " Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙"\n  },\n  "cp28592": "iso88592",\n  "iso88593": {\n    "type": "_sbcs",\n    "chars": " Ħ˘£¤�Ĥ§¨İŞĞĴ­�Ż°ħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙"\n  },\n  "cp28593": "iso88593",\n  "iso88594": {\n    "type": "_sbcs",\n    "chars": " ĄĸŖ¤ĨĻ§¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩļˇ¸šēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖ×ØŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙"\n  },\n  "cp28594": "iso88594",\n  "iso88595": {\n    "type": "_sbcs",\n    "chars": " ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ"\n  },\n  "cp28595": "iso88595",\n  "iso88596": {\n    "type": "_sbcs",\n    "chars": " ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������"\n  },\n  "cp28596": "iso88596",\n  "iso88597": {\n    "type": "_sbcs",\n    "chars": " ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�"\n  },\n  "cp28597": "iso88597",\n  "iso88598": {\n    "type": "_sbcs",\n    "chars": " �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�"\n  },\n  "cp28598": "iso88598",\n  "iso88599": {\n    "type": "_sbcs",\n    "chars": " ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ"\n  },\n  "cp28599": "iso88599",\n  "iso885910": {\n    "type": "_sbcs",\n    "chars": " ĄĒĢĪĨĶ§ĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ"\n  },\n  "cp28600": "iso885910",\n  "iso885911": {\n    "type": "_sbcs",\n    "chars": " กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"\n  },\n  "cp28601": "iso885911",\n  "iso885913": {\n    "type": "_sbcs",\n    "chars": " ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’"\n  },\n  "cp28603": "iso885913",\n  "iso885914": {\n    "type": "_sbcs",\n    "chars": " Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ"\n  },\n  "cp28604": "iso885914",\n  "iso885915": {\n    "type": "_sbcs",\n    "chars": " ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"\n  },\n  "cp28605": "iso885915",\n  "iso885916": {\n    "type": "_sbcs",\n    "chars": " ĄąŁ€„Š§š©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ"\n  },\n  "cp28606": "iso885916",\n  "cp437": {\n    "type": "_sbcs",\n    "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñÑªº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "\n  },\n  "ibm437": "cp437",\n  "csibm437": "cp437",\n  "cp737": {\n    "type": "_sbcs",\n    "chars": "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ "\n  },\n  "ibm737": "cp737",\n  "csibm737": "cp737",\n  "cp775": {\n    "type": "_sbcs",\n    "chars": "ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ "\n  },\n  "ibm775": "cp775",\n  "csibm775": "cp775",\n  "cp850": {\n    "type": "_sbcs",\n    "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñÑªº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýÝ¯´­±‗¾¶§÷¸°¨·¹³²■ "\n  },\n  "ibm850": "cp850",\n  "csibm850": "cp850",\n  "cp852": {\n    "type": "_sbcs",\n    "chars": "ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘę¬źČş«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ "\n  },\n  "ibm852": "cp852",\n  "csibm852": "cp852",\n  "cp855": {\n    "type": "_sbcs",\n    "chars": "ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ "\n  },\n  "ibm855": "cp855",\n  "csibm855": "cp855",\n  "cp856": {\n    "type": "_sbcs",\n    "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´­±‗¾¶§÷¸°¨·¹³²■ "\n  },\n  "ibm856": "cp856",\n  "csibm856": "cp856",\n  "cp857": {\n    "type": "_sbcs",\n    "chars": "ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞğ¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ "\n  },\n  "ibm857": "cp857",\n  "csibm857": "cp857",\n  "cp858": {\n    "type": "_sbcs",\n    "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñÑªº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýÝ¯´­±‗¾¶§÷¸°¨·¹³²■ "\n  },\n  "ibm858": "cp858",\n  "csibm858": "cp858",\n  "cp860": {\n    "type": "_sbcs",\n    "chars": "ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñÑªº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "\n  },\n  "ibm860": "cp860",\n  "csibm860": "cp860",\n  "cp861": {\n    "type": "_sbcs",\n    "chars": "ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "\n  },\n  "ibm861": "cp861",\n  "csibm861": "cp861",\n  "cp862": {\n    "type": "_sbcs",\n    "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñÑªº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "\n  },\n  "ibm862": "cp862",\n  "csibm862": "cp862",\n  "cp863": {\n    "type": "_sbcs",\n    "chars": "ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "\n  },\n  "ibm863": "cp863",\n  "csibm863": "cp863",\n  "cp864": {\n    "type": "_sbcs",\n    "chars": "\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\"#$٪&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�"\n  },\n  "ibm864": "cp864",\n  "csibm864": "cp864",\n  "cp865": {\n    "type": "_sbcs",\n    "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñÑªº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "\n  },\n  "ibm865": "cp865",\n  "csibm865": "cp865",\n  "cp866": {\n    "type": "_sbcs",\n    "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ "\n  },\n  "ibm866": "cp866",\n  "csibm866": "cp866",\n  "cp869": {\n    "type": "_sbcs",\n    "chars": "������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ "\n  },\n  "ibm869": "cp869",\n  "csibm869": "cp869",\n  "cp922": {\n    "type": "_sbcs",\n    "chars": " ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖ×ØÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ"\n  },\n  "ibm922": "cp922",\n  "csibm922": "cp922",\n  "cp1046": {\n    "type": "_sbcs",\n    "chars": "ﺈ×÷ﹱ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�"\n  },\n  "ibm1046": "cp1046",\n  "csibm1046": "cp1046",\n  "cp1124": {\n    "type": "_sbcs",\n    "chars": " ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ"\n  },\n  "ibm1124": "cp1124",\n  "csibm1124": "cp1124",\n  "cp1125": {\n    "type": "_sbcs",\n    "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ "\n  },\n  "ibm1125": "cp1125",\n  "csibm1125": "cp1125",\n  "cp1129": {\n    "type": "_sbcs",\n    "chars": " ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"\n  },\n  "ibm1129": "cp1129",\n  "csibm1129": "cp1129",\n  "cp1133": {\n    "type": "_sbcs",\n    "chars": " ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�"\n  },\n  "ibm1133": "cp1133",\n  "csibm1133": "cp1133",\n  "cp1161": {\n    "type": "_sbcs",\n    "chars": "��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ "\n  },\n  "ibm1161": "cp1161",\n  "csibm1161": "cp1161",\n  "cp1162": {\n    "type": "_sbcs",\n    "chars": "€…‘’“”•–— กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"\n  },\n  "ibm1162": "cp1162",\n  "csibm1162": "cp1162",\n  "cp1163": {\n    "type": "_sbcs",\n    "chars": " ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"\n  },\n  "ibm1163": "cp1163",\n  "csibm1163": "cp1163",\n  "maccroatian": {\n    "type": "_sbcs",\n    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈Ć«Č… ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ"\n  },\n  "maccyrillic": {\n    "type": "_sbcs",\n    "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"\n  },\n  "macgreek": {\n    "type": "_sbcs",\n    "chars": "Ä¹²É³ÖÜ΅àâä΄¨çéèêë£™îï•½‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�"\n  },\n  "maciceland": {\n    "type": "_sbcs",\n    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüÝ°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"\n  },\n  "macroman": {\n    "type": "_sbcs",\n    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›ﬁﬂ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"\n  },\n  "macromania": {\n    "type": "_sbcs",\n    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"\n  },\n  "macthai": {\n    "type": "_sbcs",\n    "chars": "«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู\ufeff​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����"\n  },\n  "macturkish": {\n    "type": "_sbcs",\n    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ"\n  },\n  "macukraine": {\n    "type": "_sbcs",\n    "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"\n  },\n  "koi8r": {\n    "type": "_sbcs",\n    "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"\n  },\n  "koi8u": {\n    "type": "_sbcs",\n    "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"\n  },\n  "koi8ru": {\n    "type": "_sbcs",\n    "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"\n  },\n  "koi8t": {\n    "type": "_sbcs",\n    "chars": "қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"\n  },\n  "armscii8": {\n    "type": "_sbcs",\n    "chars": " �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�"\n  },\n  "rk1048": {\n    "type": "_sbcs",\n    "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"\n  },\n  "tcvn": {\n    "type": "_sbcs",\n    "chars": "\\u0000ÚỤ\\u0003ỪỬỮ\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010ỨỰỲỶỸÝỴ\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ"\n  },\n  "georgianacademy": {\n    "type": "_sbcs",\n    "chars": "‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ"\n  },\n  "georgianps": {\n    "type": "_sbcs",\n    "chars": "‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"\n  },\n  "pt154": {\n    "type": "_sbcs",\n    "chars": "ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"\n  },\n  "viscii": {\n    "type": "_sbcs",\n    "chars": "\\u0000\\u0001Ẳ\\u0003\\u0004ẴẪ\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Ỷ\\u0015\\u0016\\u0017\\u0018Ỹ\\u001a\\u001b\\u001c\\u001dỴ\\u001f !\\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ"\n  },\n  "iso646cn": {\n    "type": "_sbcs",\n    "chars": "\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\"#¥%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"\n  },\n  "iso646jp": {\n    "type": "_sbcs",\n    "chars": "\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"\n  },\n  "hproman8": {\n    "type": "_sbcs",\n    "chars": " ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�"\n  },\n  "macintosh": {\n    "type": "_sbcs",\n    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›ﬁﬂ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"\n  },\n  "ascii": {\n    "type": "_sbcs",\n    "chars": "��������������������������������������������������������������������������������������������������������������������������������"\n  },\n  "tis620": {\n    "type": "_sbcs",\n    "chars": "���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"\n  }\n}\n\n//# sourceURL=webpack://txadmin/./node_modules/iconv-lite/encodings/sbcs-data-generated.js?')},"./node_modules/iconv-lite/encodings/sbcs-data.js":
/*!********************************************************!*\
  !*** ./node_modules/iconv-lite/encodings/sbcs-data.js ***!
  \********************************************************/module=>{"use strict";eval('\n\n// Manually added data to be used by sbcs codec in addition to generated one.\n\nmodule.exports = {\n    // Not supported by iconv, not sure why.\n    "10029": "maccenteuro",\n    "maccenteuro": {\n        "type": "_sbcs",\n        "chars": "ÄĀāÉĄÖÜáąČäčĆćéŹźĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņŃ¬√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ"\n    },\n\n    "808": "cp808",\n    "ibm808": "cp808",\n    "cp808": {\n        "type": "_sbcs",\n        "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ "\n    },\n\n    "mik": {\n        "type": "_sbcs",\n        "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя└┴┬├─┼╣║╚╔╩╦╠═╬┐░▒▓│┤№§╗╝┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "\n    },\n\n    "cp720": {\n        "type": "_sbcs",\n        "chars": "\\x80\\x81éâ\\x84à\\x86çêëèïî\\x8d\\x8e\\x8f\\x90\\u0651\\u0652ô¤ـûùءآأؤ£إئابةتثجحخدذرزسشص«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ضطظعغفµقكلمنهوىي≡\\u064b\\u064c\\u064d\\u064e\\u064f\\u0650≈°∙·√ⁿ²■\\u00a0"\n    },\n\n    // Aliases of generated encodings.\n    "ascii8bit": "ascii",\n    "usascii": "ascii",\n    "ansix34": "ascii",\n    "ansix341968": "ascii",\n    "ansix341986": "ascii",\n    "csascii": "ascii",\n    "cp367": "ascii",\n    "ibm367": "ascii",\n    "isoir6": "ascii",\n    "iso646us": "ascii",\n    "iso646irv": "ascii",\n    "us": "ascii",\n\n    "latin1": "iso88591",\n    "latin2": "iso88592",\n    "latin3": "iso88593",\n    "latin4": "iso88594",\n    "latin5": "iso88599",\n    "latin6": "iso885910",\n    "latin7": "iso885913",\n    "latin8": "iso885914",\n    "latin9": "iso885915",\n    "latin10": "iso885916",\n\n    "csisolatin1": "iso88591",\n    "csisolatin2": "iso88592",\n    "csisolatin3": "iso88593",\n    "csisolatin4": "iso88594",\n    "csisolatincyrillic": "iso88595",\n    "csisolatinarabic": "iso88596",\n    "csisolatingreek" : "iso88597",\n    "csisolatinhebrew": "iso88598",\n    "csisolatin5": "iso88599",\n    "csisolatin6": "iso885910",\n\n    "l1": "iso88591",\n    "l2": "iso88592",\n    "l3": "iso88593",\n    "l4": "iso88594",\n    "l5": "iso88599",\n    "l6": "iso885910",\n    "l7": "iso885913",\n    "l8": "iso885914",\n    "l9": "iso885915",\n    "l10": "iso885916",\n\n    "isoir14": "iso646jp",\n    "isoir57": "iso646cn",\n    "isoir100": "iso88591",\n    "isoir101": "iso88592",\n    "isoir109": "iso88593",\n    "isoir110": "iso88594",\n    "isoir144": "iso88595",\n    "isoir127": "iso88596",\n    "isoir126": "iso88597",\n    "isoir138": "iso88598",\n    "isoir148": "iso88599",\n    "isoir157": "iso885910",\n    "isoir166": "tis620",\n    "isoir179": "iso885913",\n    "isoir199": "iso885914",\n    "isoir203": "iso885915",\n    "isoir226": "iso885916",\n\n    "cp819": "iso88591",\n    "ibm819": "iso88591",\n\n    "cyrillic": "iso88595",\n\n    "arabic": "iso88596",\n    "arabic8": "iso88596",\n    "ecma114": "iso88596",\n    "asmo708": "iso88596",\n\n    "greek" : "iso88597",\n    "greek8" : "iso88597",\n    "ecma118" : "iso88597",\n    "elot928" : "iso88597",\n\n    "hebrew": "iso88598",\n    "hebrew8": "iso88598",\n\n    "turkish": "iso88599",\n    "turkish8": "iso88599",\n\n    "thai": "iso885911",\n    "thai8": "iso885911",\n\n    "celtic": "iso885914",\n    "celtic8": "iso885914",\n    "isoceltic": "iso885914",\n\n    "tis6200": "tis620",\n    "tis62025291": "tis620",\n    "tis62025330": "tis620",\n\n    "10000": "macroman",\n    "10006": "macgreek",\n    "10007": "maccyrillic",\n    "10079": "maciceland",\n    "10081": "macturkish",\n\n    "cspc8codepage437": "cp437",\n    "cspc775baltic": "cp775",\n    "cspc850multilingual": "cp850",\n    "cspcp852": "cp852",\n    "cspc862latinhebrew": "cp862",\n    "cpgr": "cp869",\n\n    "msee": "cp1250",\n    "mscyrl": "cp1251",\n    "msansi": "cp1252",\n    "msgreek": "cp1253",\n    "msturk": "cp1254",\n    "mshebr": "cp1255",\n    "msarab": "cp1256",\n    "winbaltrim": "cp1257",\n\n    "cp20866": "koi8r",\n    "20866": "koi8r",\n    "ibm878": "koi8r",\n    "cskoi8r": "koi8r",\n\n    "cp21866": "koi8u",\n    "21866": "koi8u",\n    "ibm1168": "koi8u",\n\n    "strk10482002": "rk1048",\n\n    "tcvn5712": "tcvn",\n    "tcvn57121": "tcvn",\n\n    "gb198880": "iso646cn",\n    "cn": "iso646cn",\n\n    "csiso14jisc6220ro": "iso646jp",\n    "jisc62201969ro": "iso646jp",\n    "jp": "iso646jp",\n\n    "cshproman8": "hproman8",\n    "r8": "hproman8",\n    "roman8": "hproman8",\n    "xroman8": "hproman8",\n    "ibm1051": "hproman8",\n\n    "mac": "macintosh",\n    "csmacintosh": "macintosh",\n};\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/iconv-lite/encodings/sbcs-data.js?')},"./node_modules/iconv-lite/encodings/utf16.js":
/*!****************************************************!*\
  !*** ./node_modules/iconv-lite/encodings/utf16.js ***!
  \****************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nvar Buffer = (__webpack_require__(/*! safer-buffer */ \"./node_modules/safer-buffer/safer.js\").Buffer);\n\n// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js\n\n// == UTF16-BE codec. ==========================================================\n\nexports.utf16be = Utf16BECodec;\nfunction Utf16BECodec() {\n}\n\nUtf16BECodec.prototype.encoder = Utf16BEEncoder;\nUtf16BECodec.prototype.decoder = Utf16BEDecoder;\nUtf16BECodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf16BEEncoder() {\n}\n\nUtf16BEEncoder.prototype.write = function(str) {\n    var buf = Buffer.from(str, 'ucs2');\n    for (var i = 0; i < buf.length; i += 2) {\n        var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp;\n    }\n    return buf;\n}\n\nUtf16BEEncoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf16BEDecoder() {\n    this.overflowByte = -1;\n}\n\nUtf16BEDecoder.prototype.write = function(buf) {\n    if (buf.length == 0)\n        return '';\n\n    var buf2 = Buffer.alloc(buf.length + 1),\n        i = 0, j = 0;\n\n    if (this.overflowByte !== -1) {\n        buf2[0] = buf[0];\n        buf2[1] = this.overflowByte;\n        i = 1; j = 2;\n    }\n\n    for (; i < buf.length-1; i += 2, j+= 2) {\n        buf2[j] = buf[i+1];\n        buf2[j+1] = buf[i];\n    }\n\n    this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1;\n\n    return buf2.slice(0, j).toString('ucs2');\n}\n\nUtf16BEDecoder.prototype.end = function() {\n    this.overflowByte = -1;\n}\n\n\n// == UTF-16 codec =============================================================\n// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic.\n// Defaults to UTF-16LE, as it's prevalent and default in Node.\n// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le\n// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'});\n\n// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false).\n\nexports.utf16 = Utf16Codec;\nfunction Utf16Codec(codecOptions, iconv) {\n    this.iconv = iconv;\n}\n\nUtf16Codec.prototype.encoder = Utf16Encoder;\nUtf16Codec.prototype.decoder = Utf16Decoder;\n\n\n// -- Encoding (pass-through)\n\nfunction Utf16Encoder(options, codec) {\n    options = options || {};\n    if (options.addBOM === undefined)\n        options.addBOM = true;\n    this.encoder = codec.iconv.getEncoder('utf-16le', options);\n}\n\nUtf16Encoder.prototype.write = function(str) {\n    return this.encoder.write(str);\n}\n\nUtf16Encoder.prototype.end = function() {\n    return this.encoder.end();\n}\n\n\n// -- Decoding\n\nfunction Utf16Decoder(options, codec) {\n    this.decoder = null;\n    this.initialBufs = [];\n    this.initialBufsLen = 0;\n\n    this.options = options || {};\n    this.iconv = codec.iconv;\n}\n\nUtf16Decoder.prototype.write = function(buf) {\n    if (!this.decoder) {\n        // Codec is not chosen yet. Accumulate initial bytes.\n        this.initialBufs.push(buf);\n        this.initialBufsLen += buf.length;\n        \n        if (this.initialBufsLen < 16) // We need more bytes to use space heuristic (see below)\n            return '';\n\n        // We have enough bytes -> detect endianness.\n        var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n        this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n        var resStr = '';\n        for (var i = 0; i < this.initialBufs.length; i++)\n            resStr += this.decoder.write(this.initialBufs[i]);\n\n        this.initialBufs.length = this.initialBufsLen = 0;\n        return resStr;\n    }\n\n    return this.decoder.write(buf);\n}\n\nUtf16Decoder.prototype.end = function() {\n    if (!this.decoder) {\n        var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n        this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n        var resStr = '';\n        for (var i = 0; i < this.initialBufs.length; i++)\n            resStr += this.decoder.write(this.initialBufs[i]);\n\n        var trail = this.decoder.end();\n        if (trail)\n            resStr += trail;\n\n        this.initialBufs.length = this.initialBufsLen = 0;\n        return resStr;\n    }\n    return this.decoder.end();\n}\n\nfunction detectEncoding(bufs, defaultEncoding) {\n    var b = [];\n    var charsProcessed = 0;\n    var asciiCharsLE = 0, asciiCharsBE = 0; // Number of ASCII chars when decoded as LE or BE.\n\n    outer_loop:\n    for (var i = 0; i < bufs.length; i++) {\n        var buf = bufs[i];\n        for (var j = 0; j < buf.length; j++) {\n            b.push(buf[j]);\n            if (b.length === 2) {\n                if (charsProcessed === 0) {\n                    // Check BOM first.\n                    if (b[0] === 0xFF && b[1] === 0xFE) return 'utf-16le';\n                    if (b[0] === 0xFE && b[1] === 0xFF) return 'utf-16be';\n                }\n\n                if (b[0] === 0 && b[1] !== 0) asciiCharsBE++;\n                if (b[0] !== 0 && b[1] === 0) asciiCharsLE++;\n\n                b.length = 0;\n                charsProcessed++;\n\n                if (charsProcessed >= 100) {\n                    break outer_loop;\n                }\n            }\n        }\n    }\n\n    // Make decisions.\n    // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon.\n    // So, we count ASCII as if it was LE or BE, and decide from that.\n    if (asciiCharsBE > asciiCharsLE) return 'utf-16be';\n    if (asciiCharsBE < asciiCharsLE) return 'utf-16le';\n\n    // Couldn't decide (likely all zeros or not enough data).\n    return defaultEncoding || 'utf-16le';\n}\n\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/iconv-lite/encodings/utf16.js?")},"./node_modules/iconv-lite/encodings/utf32.js":
/*!****************************************************!*\
  !*** ./node_modules/iconv-lite/encodings/utf32.js ***!
  \****************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nvar Buffer = (__webpack_require__(/*! safer-buffer */ \"./node_modules/safer-buffer/safer.js\").Buffer);\n\n// == UTF32-LE/BE codec. ==========================================================\n\nexports._utf32 = Utf32Codec;\n\nfunction Utf32Codec(codecOptions, iconv) {\n    this.iconv = iconv;\n    this.bomAware = true;\n    this.isLE = codecOptions.isLE;\n}\n\nexports.utf32le = { type: '_utf32', isLE: true };\nexports.utf32be = { type: '_utf32', isLE: false };\n\n// Aliases\nexports.ucs4le = 'utf32le';\nexports.ucs4be = 'utf32be';\n\nUtf32Codec.prototype.encoder = Utf32Encoder;\nUtf32Codec.prototype.decoder = Utf32Decoder;\n\n// -- Encoding\n\nfunction Utf32Encoder(options, codec) {\n    this.isLE = codec.isLE;\n    this.highSurrogate = 0;\n}\n\nUtf32Encoder.prototype.write = function(str) {\n    var src = Buffer.from(str, 'ucs2');\n    var dst = Buffer.alloc(src.length * 2);\n    var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE;\n    var offset = 0;\n\n    for (var i = 0; i < src.length; i += 2) {\n        var code = src.readUInt16LE(i);\n        var isHighSurrogate = (0xD800 <= code && code < 0xDC00);\n        var isLowSurrogate = (0xDC00 <= code && code < 0xE000);\n\n        if (this.highSurrogate) {\n            if (isHighSurrogate || !isLowSurrogate) {\n                // There shouldn't be two high surrogates in a row, nor a high surrogate which isn't followed by a low\n                // surrogate. If this happens, keep the pending high surrogate as a stand-alone semi-invalid character\n                // (technically wrong, but expected by some applications, like Windows file names).\n                write32.call(dst, this.highSurrogate, offset);\n                offset += 4;\n            }\n            else {\n                // Create 32-bit value from high and low surrogates;\n                var codepoint = (((this.highSurrogate - 0xD800) << 10) | (code - 0xDC00)) + 0x10000;\n\n                write32.call(dst, codepoint, offset);\n                offset += 4;\n                this.highSurrogate = 0;\n\n                continue;\n            }\n        }\n\n        if (isHighSurrogate)\n            this.highSurrogate = code;\n        else {\n            // Even if the current character is a low surrogate, with no previous high surrogate, we'll\n            // encode it as a semi-invalid stand-alone character for the same reasons expressed above for\n            // unpaired high surrogates.\n            write32.call(dst, code, offset);\n            offset += 4;\n            this.highSurrogate = 0;\n        }\n    }\n\n    if (offset < dst.length)\n        dst = dst.slice(0, offset);\n\n    return dst;\n};\n\nUtf32Encoder.prototype.end = function() {\n    // Treat any leftover high surrogate as a semi-valid independent character.\n    if (!this.highSurrogate)\n        return;\n\n    var buf = Buffer.alloc(4);\n\n    if (this.isLE)\n        buf.writeUInt32LE(this.highSurrogate, 0);\n    else\n        buf.writeUInt32BE(this.highSurrogate, 0);\n\n    this.highSurrogate = 0;\n\n    return buf;\n};\n\n// -- Decoding\n\nfunction Utf32Decoder(options, codec) {\n    this.isLE = codec.isLE;\n    this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0);\n    this.overflow = [];\n}\n\nUtf32Decoder.prototype.write = function(src) {\n    if (src.length === 0)\n        return '';\n\n    var i = 0;\n    var codepoint = 0;\n    var dst = Buffer.alloc(src.length + 4);\n    var offset = 0;\n    var isLE = this.isLE;\n    var overflow = this.overflow;\n    var badChar = this.badChar;\n\n    if (overflow.length > 0) {\n        for (; i < src.length && overflow.length < 4; i++)\n            overflow.push(src[i]);\n        \n        if (overflow.length === 4) {\n            // NOTE: codepoint is a signed int32 and can be negative.\n            // NOTE: We copied this block from below to help V8 optimize it (it works with array, not buffer).\n            if (isLE) {\n                codepoint = overflow[i] | (overflow[i+1] << 8) | (overflow[i+2] << 16) | (overflow[i+3] << 24);\n            } else {\n                codepoint = overflow[i+3] | (overflow[i+2] << 8) | (overflow[i+1] << 16) | (overflow[i] << 24);\n            }\n            overflow.length = 0;\n\n            offset = _writeCodepoint(dst, offset, codepoint, badChar);\n        }\n    }\n\n    // Main loop. Should be as optimized as possible.\n    for (; i < src.length - 3; i += 4) {\n        // NOTE: codepoint is a signed int32 and can be negative.\n        if (isLE) {\n            codepoint = src[i] | (src[i+1] << 8) | (src[i+2] << 16) | (src[i+3] << 24);\n        } else {\n            codepoint = src[i+3] | (src[i+2] << 8) | (src[i+1] << 16) | (src[i] << 24);\n        }\n        offset = _writeCodepoint(dst, offset, codepoint, badChar);\n    }\n\n    // Keep overflowing bytes.\n    for (; i < src.length; i++) {\n        overflow.push(src[i]);\n    }\n\n    return dst.slice(0, offset).toString('ucs2');\n};\n\nfunction _writeCodepoint(dst, offset, codepoint, badChar) {\n    // NOTE: codepoint is signed int32 and can be negative. We keep it that way to help V8 with optimizations.\n    if (codepoint < 0 || codepoint > 0x10FFFF) {\n        // Not a valid Unicode codepoint\n        codepoint = badChar;\n    } \n\n    // Ephemeral Planes: Write high surrogate.\n    if (codepoint >= 0x10000) {\n        codepoint -= 0x10000;\n\n        var high = 0xD800 | (codepoint >> 10);\n        dst[offset++] = high & 0xff;\n        dst[offset++] = high >> 8;\n\n        // Low surrogate is written below.\n        var codepoint = 0xDC00 | (codepoint & 0x3FF);\n    }\n\n    // Write BMP char or low surrogate.\n    dst[offset++] = codepoint & 0xff;\n    dst[offset++] = codepoint >> 8;\n\n    return offset;\n};\n\nUtf32Decoder.prototype.end = function() {\n    this.overflow.length = 0;\n};\n\n// == UTF-32 Auto codec =============================================================\n// Decoder chooses automatically from UTF-32LE and UTF-32BE using BOM and space-based heuristic.\n// Defaults to UTF-32LE. http://en.wikipedia.org/wiki/UTF-32\n// Encoder/decoder default can be changed: iconv.decode(buf, 'utf32', {defaultEncoding: 'utf-32be'});\n\n// Encoder prepends BOM (which can be overridden with (addBOM: false}).\n\nexports.utf32 = Utf32AutoCodec;\nexports.ucs4 = 'utf32';\n\nfunction Utf32AutoCodec(options, iconv) {\n    this.iconv = iconv;\n}\n\nUtf32AutoCodec.prototype.encoder = Utf32AutoEncoder;\nUtf32AutoCodec.prototype.decoder = Utf32AutoDecoder;\n\n// -- Encoding\n\nfunction Utf32AutoEncoder(options, codec) {\n    options = options || {};\n\n    if (options.addBOM === undefined)\n        options.addBOM = true;\n\n    this.encoder = codec.iconv.getEncoder(options.defaultEncoding || 'utf-32le', options);\n}\n\nUtf32AutoEncoder.prototype.write = function(str) {\n    return this.encoder.write(str);\n};\n\nUtf32AutoEncoder.prototype.end = function() {\n    return this.encoder.end();\n};\n\n// -- Decoding\n\nfunction Utf32AutoDecoder(options, codec) {\n    this.decoder = null;\n    this.initialBufs = [];\n    this.initialBufsLen = 0;\n    this.options = options || {};\n    this.iconv = codec.iconv;\n}\n\nUtf32AutoDecoder.prototype.write = function(buf) {\n    if (!this.decoder) { \n        // Codec is not chosen yet. Accumulate initial bytes.\n        this.initialBufs.push(buf);\n        this.initialBufsLen += buf.length;\n\n        if (this.initialBufsLen < 32) // We need more bytes to use space heuristic (see below)\n            return '';\n\n        // We have enough bytes -> detect endianness.\n        var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n        this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n        var resStr = '';\n        for (var i = 0; i < this.initialBufs.length; i++)\n            resStr += this.decoder.write(this.initialBufs[i]);\n\n        this.initialBufs.length = this.initialBufsLen = 0;\n        return resStr;\n    }\n\n    return this.decoder.write(buf);\n};\n\nUtf32AutoDecoder.prototype.end = function() {\n    if (!this.decoder) {\n        var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n        this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n        var resStr = '';\n        for (var i = 0; i < this.initialBufs.length; i++)\n            resStr += this.decoder.write(this.initialBufs[i]);\n\n        var trail = this.decoder.end();\n        if (trail)\n            resStr += trail;\n\n        this.initialBufs.length = this.initialBufsLen = 0;\n        return resStr;\n    }\n\n    return this.decoder.end();\n};\n\nfunction detectEncoding(bufs, defaultEncoding) {\n    var b = [];\n    var charsProcessed = 0;\n    var invalidLE = 0, invalidBE = 0;   // Number of invalid chars when decoded as LE or BE.\n    var bmpCharsLE = 0, bmpCharsBE = 0; // Number of BMP chars when decoded as LE or BE.\n\n    outer_loop:\n    for (var i = 0; i < bufs.length; i++) {\n        var buf = bufs[i];\n        for (var j = 0; j < buf.length; j++) {\n            b.push(buf[j]);\n            if (b.length === 4) {\n                if (charsProcessed === 0) {\n                    // Check BOM first.\n                    if (b[0] === 0xFF && b[1] === 0xFE && b[2] === 0 && b[3] === 0) {\n                        return 'utf-32le';\n                    }\n                    if (b[0] === 0 && b[1] === 0 && b[2] === 0xFE && b[3] === 0xFF) {\n                        return 'utf-32be';\n                    }\n                }\n\n                if (b[0] !== 0 || b[1] > 0x10) invalidBE++;\n                if (b[3] !== 0 || b[2] > 0x10) invalidLE++;\n\n                if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) bmpCharsBE++;\n                if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) bmpCharsLE++;\n\n                b.length = 0;\n                charsProcessed++;\n\n                if (charsProcessed >= 100) {\n                    break outer_loop;\n                }\n            }\n        }\n    }\n\n    // Make decisions.\n    if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE)  return 'utf-32be';\n    if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE)  return 'utf-32le';\n\n    // Couldn't decide (likely all zeros or not enough data).\n    return defaultEncoding || 'utf-32le';\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/iconv-lite/encodings/utf32.js?")},"./node_modules/iconv-lite/encodings/utf7.js":
/*!***************************************************!*\
  !*** ./node_modules/iconv-lite/encodings/utf7.js ***!
  \***************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nvar Buffer = (__webpack_require__(/*! safer-buffer */ \"./node_modules/safer-buffer/safer.js\").Buffer);\n\n// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152\n// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3\n\nexports.utf7 = Utf7Codec;\nexports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7\nfunction Utf7Codec(codecOptions, iconv) {\n    this.iconv = iconv;\n};\n\nUtf7Codec.prototype.encoder = Utf7Encoder;\nUtf7Codec.prototype.decoder = Utf7Decoder;\nUtf7Codec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nvar nonDirectChars = /[^A-Za-z0-9'\\(\\),-\\.\\/:\\? \\n\\r\\t]+/g;\n\nfunction Utf7Encoder(options, codec) {\n    this.iconv = codec.iconv;\n}\n\nUtf7Encoder.prototype.write = function(str) {\n    // Naive implementation.\n    // Non-direct chars are encoded as \"+<base64>-\"; single \"+\" char is encoded as \"+-\".\n    return Buffer.from(str.replace(nonDirectChars, function(chunk) {\n        return \"+\" + (chunk === '+' ? '' : \n            this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) \n            + \"-\";\n    }.bind(this)));\n}\n\nUtf7Encoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf7Decoder(options, codec) {\n    this.iconv = codec.iconv;\n    this.inBase64 = false;\n    this.base64Accum = '';\n}\n\nvar base64Regex = /[A-Za-z0-9\\/+]/;\nvar base64Chars = [];\nfor (var i = 0; i < 256; i++)\n    base64Chars[i] = base64Regex.test(String.fromCharCode(i));\n\nvar plusChar = '+'.charCodeAt(0), \n    minusChar = '-'.charCodeAt(0),\n    andChar = '&'.charCodeAt(0);\n\nUtf7Decoder.prototype.write = function(buf) {\n    var res = \"\", lastI = 0,\n        inBase64 = this.inBase64,\n        base64Accum = this.base64Accum;\n\n    // The decoder is more involved as we must handle chunks in stream.\n\n    for (var i = 0; i < buf.length; i++) {\n        if (!inBase64) { // We're in direct mode.\n            // Write direct chars until '+'\n            if (buf[i] == plusChar) {\n                res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n                lastI = i+1;\n                inBase64 = true;\n            }\n        } else { // We decode base64.\n            if (!base64Chars[buf[i]]) { // Base64 ended.\n                if (i == lastI && buf[i] == minusChar) {// \"+-\" -> \"+\"\n                    res += \"+\";\n                } else {\n                    var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), \"ascii\");\n                    res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n                }\n\n                if (buf[i] != minusChar) // Minus is absorbed after base64.\n                    i--;\n\n                lastI = i+1;\n                inBase64 = false;\n                base64Accum = '';\n            }\n        }\n    }\n\n    if (!inBase64) {\n        res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n    } else {\n        var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), \"ascii\");\n\n        var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n        base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n        b64str = b64str.slice(0, canBeDecoded);\n\n        res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n    }\n\n    this.inBase64 = inBase64;\n    this.base64Accum = base64Accum;\n\n    return res;\n}\n\nUtf7Decoder.prototype.end = function() {\n    var res = \"\";\n    if (this.inBase64 && this.base64Accum.length > 0)\n        res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n    this.inBase64 = false;\n    this.base64Accum = '';\n    return res;\n}\n\n\n// UTF-7-IMAP codec.\n// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3)\n// Differences:\n//  * Base64 part is started by \"&\" instead of \"+\"\n//  * Direct characters are 0x20-0x7E, except \"&\" (0x26)\n//  * In Base64, \",\" is used instead of \"/\"\n//  * Base64 must not be used to represent direct characters.\n//  * No implicit shift back from Base64 (should always end with '-')\n//  * String must end in non-shifted position.\n//  * \"-&\" while in base64 is not allowed.\n\n\nexports.utf7imap = Utf7IMAPCodec;\nfunction Utf7IMAPCodec(codecOptions, iconv) {\n    this.iconv = iconv;\n};\n\nUtf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder;\nUtf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder;\nUtf7IMAPCodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf7IMAPEncoder(options, codec) {\n    this.iconv = codec.iconv;\n    this.inBase64 = false;\n    this.base64Accum = Buffer.alloc(6);\n    this.base64AccumIdx = 0;\n}\n\nUtf7IMAPEncoder.prototype.write = function(str) {\n    var inBase64 = this.inBase64,\n        base64Accum = this.base64Accum,\n        base64AccumIdx = this.base64AccumIdx,\n        buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0;\n\n    for (var i = 0; i < str.length; i++) {\n        var uChar = str.charCodeAt(i);\n        if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'.\n            if (inBase64) {\n                if (base64AccumIdx > 0) {\n                    bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n                    base64AccumIdx = 0;\n                }\n\n                buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n                inBase64 = false;\n            }\n\n            if (!inBase64) {\n                buf[bufIdx++] = uChar; // Write direct character\n\n                if (uChar === andChar)  // Ampersand -> '&-'\n                    buf[bufIdx++] = minusChar;\n            }\n\n        } else { // Non-direct character\n            if (!inBase64) {\n                buf[bufIdx++] = andChar; // Write '&', then go to base64 mode.\n                inBase64 = true;\n            }\n            if (inBase64) {\n                base64Accum[base64AccumIdx++] = uChar >> 8;\n                base64Accum[base64AccumIdx++] = uChar & 0xFF;\n\n                if (base64AccumIdx == base64Accum.length) {\n                    bufIdx += buf.write(base64Accum.toString('base64').replace(/\\//g, ','), bufIdx);\n                    base64AccumIdx = 0;\n                }\n            }\n        }\n    }\n\n    this.inBase64 = inBase64;\n    this.base64AccumIdx = base64AccumIdx;\n\n    return buf.slice(0, bufIdx);\n}\n\nUtf7IMAPEncoder.prototype.end = function() {\n    var buf = Buffer.alloc(10), bufIdx = 0;\n    if (this.inBase64) {\n        if (this.base64AccumIdx > 0) {\n            bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n            this.base64AccumIdx = 0;\n        }\n\n        buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n        this.inBase64 = false;\n    }\n\n    return buf.slice(0, bufIdx);\n}\n\n\n// -- Decoding\n\nfunction Utf7IMAPDecoder(options, codec) {\n    this.iconv = codec.iconv;\n    this.inBase64 = false;\n    this.base64Accum = '';\n}\n\nvar base64IMAPChars = base64Chars.slice();\nbase64IMAPChars[','.charCodeAt(0)] = true;\n\nUtf7IMAPDecoder.prototype.write = function(buf) {\n    var res = \"\", lastI = 0,\n        inBase64 = this.inBase64,\n        base64Accum = this.base64Accum;\n\n    // The decoder is more involved as we must handle chunks in stream.\n    // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end).\n\n    for (var i = 0; i < buf.length; i++) {\n        if (!inBase64) { // We're in direct mode.\n            // Write direct chars until '&'\n            if (buf[i] == andChar) {\n                res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n                lastI = i+1;\n                inBase64 = true;\n            }\n        } else { // We decode base64.\n            if (!base64IMAPChars[buf[i]]) { // Base64 ended.\n                if (i == lastI && buf[i] == minusChar) { // \"&-\" -> \"&\"\n                    res += \"&\";\n                } else {\n                    var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), \"ascii\").replace(/,/g, '/');\n                    res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n                }\n\n                if (buf[i] != minusChar) // Minus may be absorbed after base64.\n                    i--;\n\n                lastI = i+1;\n                inBase64 = false;\n                base64Accum = '';\n            }\n        }\n    }\n\n    if (!inBase64) {\n        res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n    } else {\n        var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), \"ascii\").replace(/,/g, '/');\n\n        var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n        base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n        b64str = b64str.slice(0, canBeDecoded);\n\n        res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n    }\n\n    this.inBase64 = inBase64;\n    this.base64Accum = base64Accum;\n\n    return res;\n}\n\nUtf7IMAPDecoder.prototype.end = function() {\n    var res = \"\";\n    if (this.inBase64 && this.base64Accum.length > 0)\n        res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n    this.inBase64 = false;\n    this.base64Accum = '';\n    return res;\n}\n\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/iconv-lite/encodings/utf7.js?")},"./node_modules/iconv-lite/lib/bom-handling.js":
/*!*****************************************************!*\
  !*** ./node_modules/iconv-lite/lib/bom-handling.js ***!
  \*****************************************************/(__unused_webpack_module,exports)=>{"use strict";eval("\n\nvar BOMChar = '\\uFEFF';\n\nexports.PrependBOM = PrependBOMWrapper\nfunction PrependBOMWrapper(encoder, options) {\n    this.encoder = encoder;\n    this.addBOM = true;\n}\n\nPrependBOMWrapper.prototype.write = function(str) {\n    if (this.addBOM) {\n        str = BOMChar + str;\n        this.addBOM = false;\n    }\n\n    return this.encoder.write(str);\n}\n\nPrependBOMWrapper.prototype.end = function() {\n    return this.encoder.end();\n}\n\n\n//------------------------------------------------------------------------------\n\nexports.StripBOM = StripBOMWrapper;\nfunction StripBOMWrapper(decoder, options) {\n    this.decoder = decoder;\n    this.pass = false;\n    this.options = options || {};\n}\n\nStripBOMWrapper.prototype.write = function(buf) {\n    var res = this.decoder.write(buf);\n    if (this.pass || !res)\n        return res;\n\n    if (res[0] === BOMChar) {\n        res = res.slice(1);\n        if (typeof this.options.stripBOM === 'function')\n            this.options.stripBOM();\n    }\n\n    this.pass = true;\n    return res;\n}\n\nStripBOMWrapper.prototype.end = function() {\n    return this.decoder.end();\n}\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/iconv-lite/lib/bom-handling.js?")},"./node_modules/iconv-lite/lib/index.js":
/*!**********************************************!*\
  !*** ./node_modules/iconv-lite/lib/index.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nvar Buffer = (__webpack_require__(/*! safer-buffer */ "./node_modules/safer-buffer/safer.js").Buffer);\n\nvar bomHandling = __webpack_require__(/*! ./bom-handling */ "./node_modules/iconv-lite/lib/bom-handling.js"),\n    iconv = module.exports;\n\n// All codecs and aliases are kept here, keyed by encoding name/alias.\n// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`.\niconv.encodings = null;\n\n// Characters emitted in case of error.\niconv.defaultCharUnicode = \'�\';\niconv.defaultCharSingleByte = \'?\';\n\n// Public API.\niconv.encode = function encode(str, encoding, options) {\n    str = "" + (str || ""); // Ensure string.\n\n    var encoder = iconv.getEncoder(encoding, options);\n\n    var res = encoder.write(str);\n    var trail = encoder.end();\n    \n    return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res;\n}\n\niconv.decode = function decode(buf, encoding, options) {\n    if (typeof buf === \'string\') {\n        if (!iconv.skipDecodeWarning) {\n            console.error(\'Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding\');\n            iconv.skipDecodeWarning = true;\n        }\n\n        buf = Buffer.from("" + (buf || ""), "binary"); // Ensure buffer.\n    }\n\n    var decoder = iconv.getDecoder(encoding, options);\n\n    var res = decoder.write(buf);\n    var trail = decoder.end();\n\n    return trail ? (res + trail) : res;\n}\n\niconv.encodingExists = function encodingExists(enc) {\n    try {\n        iconv.getCodec(enc);\n        return true;\n    } catch (e) {\n        return false;\n    }\n}\n\n// Legacy aliases to convert functions\niconv.toEncoding = iconv.encode;\niconv.fromEncoding = iconv.decode;\n\n// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache.\niconv._codecDataCache = {};\niconv.getCodec = function getCodec(encoding) {\n    if (!iconv.encodings)\n        iconv.encodings = __webpack_require__(/*! ../encodings */ "./node_modules/iconv-lite/encodings/index.js"); // Lazy load all encoding definitions.\n    \n    // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n    var enc = iconv._canonicalizeEncoding(encoding);\n\n    // Traverse iconv.encodings to find actual codec.\n    var codecOptions = {};\n    while (true) {\n        var codec = iconv._codecDataCache[enc];\n        if (codec)\n            return codec;\n\n        var codecDef = iconv.encodings[enc];\n\n        switch (typeof codecDef) {\n            case "string": // Direct alias to other encoding.\n                enc = codecDef;\n                break;\n\n            case "object": // Alias with options. Can be layered.\n                for (var key in codecDef)\n                    codecOptions[key] = codecDef[key];\n\n                if (!codecOptions.encodingName)\n                    codecOptions.encodingName = enc;\n                \n                enc = codecDef.type;\n                break;\n\n            case "function": // Codec itself.\n                if (!codecOptions.encodingName)\n                    codecOptions.encodingName = enc;\n\n                // The codec function must load all tables and return object with .encoder and .decoder methods.\n                // It\'ll be called only once (for each different options object).\n                codec = new codecDef(codecOptions, iconv);\n\n                iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later.\n                return codec;\n\n            default:\n                throw new Error("Encoding not recognized: \'" + encoding + "\' (searched as: \'"+enc+"\')");\n        }\n    }\n}\n\niconv._canonicalizeEncoding = function(encoding) {\n    // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n    return (\'\'+encoding).toLowerCase().replace(/:\\d{4}$|[^0-9a-z]/g, "");\n}\n\niconv.getEncoder = function getEncoder(encoding, options) {\n    var codec = iconv.getCodec(encoding),\n        encoder = new codec.encoder(options, codec);\n\n    if (codec.bomAware && options && options.addBOM)\n        encoder = new bomHandling.PrependBOM(encoder, options);\n\n    return encoder;\n}\n\niconv.getDecoder = function getDecoder(encoding, options) {\n    var codec = iconv.getCodec(encoding),\n        decoder = new codec.decoder(options, codec);\n\n    if (codec.bomAware && !(options && options.stripBOM === false))\n        decoder = new bomHandling.StripBOM(decoder, options);\n\n    return decoder;\n}\n\n// Streaming API\n// NOTE: Streaming API naturally depends on \'stream\' module from Node.js. Unfortunately in browser environments this module can add\n// up to 100Kb to the output bundle. To avoid unnecessary code bloat, we don\'t enable Streaming API in browser by default.\n// If you would like to enable it explicitly, please add the following code to your app:\n// > iconv.enableStreamingAPI(require(\'stream\'));\niconv.enableStreamingAPI = function enableStreamingAPI(stream_module) {\n    if (iconv.supportsStreams)\n        return;\n\n    // Dependency-inject stream module to create IconvLite stream classes.\n    var streams = __webpack_require__(/*! ./streams */ "./node_modules/iconv-lite/lib/streams.js")(stream_module);\n\n    // Not public API yet, but expose the stream classes.\n    iconv.IconvLiteEncoderStream = streams.IconvLiteEncoderStream;\n    iconv.IconvLiteDecoderStream = streams.IconvLiteDecoderStream;\n\n    // Streaming API.\n    iconv.encodeStream = function encodeStream(encoding, options) {\n        return new iconv.IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options);\n    }\n\n    iconv.decodeStream = function decodeStream(encoding, options) {\n        return new iconv.IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options);\n    }\n\n    iconv.supportsStreams = true;\n}\n\n// Enable Streaming API automatically if \'stream\' module is available and non-empty (the majority of environments).\nvar stream_module;\ntry {\n    stream_module = __webpack_require__(/*! stream */ "stream");\n} catch (e) {}\n\nif (stream_module && stream_module.Transform) {\n    iconv.enableStreamingAPI(stream_module);\n\n} else {\n    // In rare cases where \'stream\' module is not available by default, throw a helpful exception.\n    iconv.encodeStream = iconv.decodeStream = function() {\n        throw new Error("iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require(\'stream\')); to enable it.");\n    };\n}\n\nif (false) {}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/iconv-lite/lib/index.js?')},"./node_modules/iconv-lite/lib/streams.js":
/*!************************************************!*\
  !*** ./node_modules/iconv-lite/lib/streams.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar Buffer = (__webpack_require__(/*! safer-buffer */ \"./node_modules/safer-buffer/safer.js\").Buffer);\n\n// NOTE: Due to 'stream' module being pretty large (~100Kb, significant in browser environments), \n// we opt to dependency-inject it instead of creating a hard dependency.\nmodule.exports = function(stream_module) {\n    var Transform = stream_module.Transform;\n\n    // == Encoder stream =======================================================\n\n    function IconvLiteEncoderStream(conv, options) {\n        this.conv = conv;\n        options = options || {};\n        options.decodeStrings = false; // We accept only strings, so we don't need to decode them.\n        Transform.call(this, options);\n    }\n\n    IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {\n        constructor: { value: IconvLiteEncoderStream }\n    });\n\n    IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) {\n        if (typeof chunk != 'string')\n            return done(new Error(\"Iconv encoding stream needs strings as its input.\"));\n        try {\n            var res = this.conv.write(chunk);\n            if (res && res.length) this.push(res);\n            done();\n        }\n        catch (e) {\n            done(e);\n        }\n    }\n\n    IconvLiteEncoderStream.prototype._flush = function(done) {\n        try {\n            var res = this.conv.end();\n            if (res && res.length) this.push(res);\n            done();\n        }\n        catch (e) {\n            done(e);\n        }\n    }\n\n    IconvLiteEncoderStream.prototype.collect = function(cb) {\n        var chunks = [];\n        this.on('error', cb);\n        this.on('data', function(chunk) { chunks.push(chunk); });\n        this.on('end', function() {\n            cb(null, Buffer.concat(chunks));\n        });\n        return this;\n    }\n\n\n    // == Decoder stream =======================================================\n\n    function IconvLiteDecoderStream(conv, options) {\n        this.conv = conv;\n        options = options || {};\n        options.encoding = this.encoding = 'utf8'; // We output strings.\n        Transform.call(this, options);\n    }\n\n    IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {\n        constructor: { value: IconvLiteDecoderStream }\n    });\n\n    IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) {\n        if (!Buffer.isBuffer(chunk) && !(chunk instanceof Uint8Array))\n            return done(new Error(\"Iconv decoding stream needs buffers as its input.\"));\n        try {\n            var res = this.conv.write(chunk);\n            if (res && res.length) this.push(res, this.encoding);\n            done();\n        }\n        catch (e) {\n            done(e);\n        }\n    }\n\n    IconvLiteDecoderStream.prototype._flush = function(done) {\n        try {\n            var res = this.conv.end();\n            if (res && res.length) this.push(res, this.encoding);                \n            done();\n        }\n        catch (e) {\n            done(e);\n        }\n    }\n\n    IconvLiteDecoderStream.prototype.collect = function(cb) {\n        var res = '';\n        this.on('error', cb);\n        this.on('data', function(chunk) { res += chunk; });\n        this.on('end', function() {\n            cb(null, res);\n        });\n        return this;\n    }\n\n    return {\n        IconvLiteEncoderStream: IconvLiteEncoderStream,\n        IconvLiteDecoderStream: IconvLiteDecoderStream,\n    };\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/iconv-lite/lib/streams.js?")},"./node_modules/inflation/index.js":
/*!*****************************************!*\
  !*** ./node_modules/inflation/index.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar zlib = __webpack_require__(/*! zlib */ \"zlib\")\n\nmodule.exports = inflate\n\nfunction inflate(stream, options) {\n  if (!stream) {\n    throw new TypeError('argument stream is required')\n  }\n\n  options = options || {}\n\n  var encoding = options.encoding\n    || (stream.headers && stream.headers['content-encoding'])\n    || 'identity'\n\n  switch (encoding) {\n  case 'gzip':\n  case 'deflate':\n    break\n  case 'identity':\n    return stream\n  default:\n    var err = new Error('Unsupported Content-Encoding: ' + encoding)\n    err.status = 415\n    throw err\n  }\n\n  // no not pass-through encoding\n  delete options.encoding\n\n  return stream.pipe(zlib.Unzip(options))\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/inflation/index.js?")},"./node_modules/inherits/inherits.js":
/*!*******************************************!*\
  !*** ./node_modules/inherits/inherits.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("try {\n  var util = __webpack_require__(/*! util */ \"util\");\n  /* istanbul ignore next */\n  if (typeof util.inherits !== 'function') throw '';\n  module.exports = util.inherits;\n} catch (e) {\n  /* istanbul ignore next */\n  module.exports = __webpack_require__(/*! ./inherits_browser.js */ \"./node_modules/inherits/inherits_browser.js\");\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/inherits/inherits.js?")},"./node_modules/inherits/inherits_browser.js":
/*!***************************************************!*\
  !*** ./node_modules/inherits/inherits_browser.js ***!
  \***************************************************/module=>{eval("if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      ctor.prototype = Object.create(superCtor.prototype, {\n        constructor: {\n          value: ctor,\n          enumerable: false,\n          writable: true,\n          configurable: true\n        }\n      })\n    }\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      var TempCtor = function () {}\n      TempCtor.prototype = superCtor.prototype\n      ctor.prototype = new TempCtor()\n      ctor.prototype.constructor = ctor\n    }\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/inherits/inherits_browser.js?")},"./node_modules/is-callable/index.js":
/*!*******************************************!*\
  !*** ./node_modules/is-callable/index.js ***!
  \*******************************************/module=>{"use strict";eval("\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n/* globals document: false */\nvar documentDotAll = typeof document === 'object' && typeof document.all === 'undefined' && document.all !== undefined ? document.all : {};\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (value === documentDotAll) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (typeof value === 'function' && !value.prototype) { return true; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (value === documentDotAll) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (typeof value === 'function' && !value.prototype) { return true; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\treturn strClass === fnClass || strClass === genClass;\n\t};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/is-callable/index.js?")},"./node_modules/is-class-hotfix/is-class.js":
/*!**************************************************!*\
  !*** ./node_modules/is-class-hotfix/is-class.js ***!
  \**************************************************/function(module,exports){eval("(function(root) {\n  var toString = Function.prototype.toString;\n\n  function fnBody(fn) {\n    return toString.call(fn).replace(/^[^{]*{\\s*/,'').replace(/\\s*}[^}]*$/,'');\n  }\n\n  function isClass(fn) {\n    return (typeof fn === 'function' &&\n            (/^class(?:\\s|{)/.test(toString.call(fn)) ||\n              (/^.*classCallCheck\\(/.test(fnBody(fn)))) // babel.js\n            );\n  }\n\n  if (true) {\n    if ( true && module.exports) {\n      exports = module.exports = isClass;\n    }\n    exports.isClass = isClass;\n  } else {}\n\n})(this);\n\n\n//# sourceURL=webpack://txadmin/./node_modules/is-class-hotfix/is-class.js?")},"./node_modules/is-date-object/index.js":
/*!**********************************************!*\
  !*** ./node_modules/is-date-object/index.js ***!
  \**********************************************/module=>{"use strict";eval("\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag;\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/is-date-object/index.js?")},"./node_modules/is-docker/index.js":
/*!*****************************************!*\
  !*** ./node_modules/is-docker/index.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nconst fs = __webpack_require__(/*! fs */ \"fs\");\n\nlet isDocker;\n\nfunction hasDockerEnv() {\n\ttry {\n\t\tfs.statSync('/.dockerenv');\n\t\treturn true;\n\t} catch (_) {\n\t\treturn false;\n\t}\n}\n\nfunction hasDockerCGroup() {\n\ttry {\n\t\treturn fs.readFileSync('/proc/self/cgroup', 'utf8').includes('docker');\n\t} catch (_) {\n\t\treturn false;\n\t}\n}\n\nmodule.exports = () => {\n\tif (isDocker === undefined) {\n\t\tisDocker = hasDockerEnv() || hasDockerCGroup();\n\t}\n\n\treturn isDocker;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/is-docker/index.js?")},"./node_modules/is-fullwidth-code-point/index.js":
/*!*******************************************************!*\
  !*** ./node_modules/is-fullwidth-code-point/index.js ***!
  \*******************************************************/module=>{"use strict";eval('/* eslint-disable yoda */\n\n\nconst isFullwidthCodePoint = codePoint => {\n\tif (Number.isNaN(codePoint)) {\n\t\treturn false;\n\t}\n\n\t// Code points are derived from:\n\t// http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt\n\tif (\n\t\tcodePoint >= 0x1100 && (\n\t\t\tcodePoint <= 0x115F || // Hangul Jamo\n\t\t\tcodePoint === 0x2329 || // LEFT-POINTING ANGLE BRACKET\n\t\t\tcodePoint === 0x232A || // RIGHT-POINTING ANGLE BRACKET\n\t\t\t// CJK Radicals Supplement .. Enclosed CJK Letters and Months\n\t\t\t(0x2E80 <= codePoint && codePoint <= 0x3247 && codePoint !== 0x303F) ||\n\t\t\t// Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A\n\t\t\t(0x3250 <= codePoint && codePoint <= 0x4DBF) ||\n\t\t\t// CJK Unified Ideographs .. Yi Radicals\n\t\t\t(0x4E00 <= codePoint && codePoint <= 0xA4C6) ||\n\t\t\t// Hangul Jamo Extended-A\n\t\t\t(0xA960 <= codePoint && codePoint <= 0xA97C) ||\n\t\t\t// Hangul Syllables\n\t\t\t(0xAC00 <= codePoint && codePoint <= 0xD7A3) ||\n\t\t\t// CJK Compatibility Ideographs\n\t\t\t(0xF900 <= codePoint && codePoint <= 0xFAFF) ||\n\t\t\t// Vertical Forms\n\t\t\t(0xFE10 <= codePoint && codePoint <= 0xFE19) ||\n\t\t\t// CJK Compatibility Forms .. Small Form Variants\n\t\t\t(0xFE30 <= codePoint && codePoint <= 0xFE6B) ||\n\t\t\t// Halfwidth and Fullwidth Forms\n\t\t\t(0xFF01 <= codePoint && codePoint <= 0xFF60) ||\n\t\t\t(0xFFE0 <= codePoint && codePoint <= 0xFFE6) ||\n\t\t\t// Kana Supplement\n\t\t\t(0x1B000 <= codePoint && codePoint <= 0x1B001) ||\n\t\t\t// Enclosed Ideographic Supplement\n\t\t\t(0x1F200 <= codePoint && codePoint <= 0x1F251) ||\n\t\t\t// CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane\n\t\t\t(0x20000 <= codePoint && codePoint <= 0x3FFFD)\n\t\t)\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nmodule.exports = isFullwidthCodePoint;\nmodule.exports["default"] = isFullwidthCodePoint;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/is-fullwidth-code-point/index.js?')},"./node_modules/is-generator-function/index.js":
/*!*****************************************************!*\
  !*** ./node_modules/is-generator-function/index.js ***!
  \*****************************************************/module=>{"use strict";eval("\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/is-generator-function/index.js?")},"./node_modules/is-localhost-ip/index.js":
/*!***********************************************!*\
  !*** ./node_modules/is-localhost-ip/index.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { isIP, isIPv4 } = __webpack_require__(/*! net */ \"net\");\nconst { createSocket } = __webpack_require__(/*! dgram */ \"dgram\");\nconst { ADDRCONFIG } = __webpack_require__(/*! dns */ \"dns\");\n\n/*\nDNS.promises were experimental until Node 11.4 and we don't want experimental warning\nhttps://nodejs.org/en/blog/release/v11.14.0/\n*/\nconst lookup =\n  process.versions.node\n    .split('.', 2)\n    .map((n) => n.padStart(2, '0'))\n    .join('.') >= '11.14'\n    ? // eslint-disable-next-line node/no-unsupported-features/node-builtins\n      (__webpack_require__(/*! dns */ \"dns\").promises.lookup)\n    : (__webpack_require__(/*! util */ \"util\").promisify)((__webpack_require__(/*! dns */ \"dns\").lookup));\n\n/**\n * Addresses reserved for private networks\n * @see {@link https://en.wikipedia.org/wiki/Private_network}\n * @see {@link https://en.wikipedia.org/wiki/Unique_local_address}\n */\nconst IP_RANGES = [\n  // 10.0.0.0 - 10.255.255.255\n  /^(:{2}f{4}:)?10(?:\\.\\d{1,3}){3}$/,\n  // 127.0.0.0 - 127.255.255.255\n  /^(:{2}f{4}:)?127(?:\\.\\d{1,3}){3}$/,\n  // 169.254.1.0 - 169.254.254.255\n  /^(::f{4}:)?169\\.254\\.([1-9]|1?\\d\\d|2[0-4]\\d|25[0-4])\\.\\d{1,3}$/,\n  // 172.16.0.0 - 172.31.255.255\n  /^(:{2}f{4}:)?(172\\.1[6-9]|172\\.2\\d|172\\.3[01])(?:\\.\\d{1,3}){2}$/,\n  // 192.168.0.0 - 192.168.255.255\n  /^(:{2}f{4}:)?192\\.168(?:\\.\\d{1,3}){2}$/,\n  // fc00::/7\n  /^f[cd][\\da-f]{2}(::1$|:[\\da-f]{1,4}){1,7}$/,\n  // fe80::/10\n  /^fe[89ab][\\da-f](::1$|:[\\da-f]{1,4}){1,7}$/,\n];\n\n// Concat all RegExes from above into one\nconst IP_TESTER_RE = new RegExp(\n  `^(${IP_RANGES.map((re) => re.source).join('|')})$`,\n);\n\n/**\n * Syntax validation RegExp for possible valid host names. Permits underscore.\n * Maximum total length 253 symbols, maximum segment length 63 symbols\n * @see {@link https://en.wikipedia.org/wiki/Hostname}\n */\nconst VALID_HOSTNAME = /(?![\\w-]{64,})((^(?=[\\w-.]{1,253}\\.?$)((\\w{1,63}|(\\w[\\w-]{0,61}\\w))\\.?)+$)(?<!\\.{2,}))/i;\n\n/**\n *\n * @param {string} ip\n * @returns {Promise<boolean>}\n */\nasync function canBindToIp(ip) {\n  const socket = createSocket(isIPv4(ip) ? 'udp4' : 'udp6');\n  return new Promise((resolve) => {\n    try {\n      socket\n        .once('error', () => socket.close(() => resolve(false)))\n        .once('listening', () => socket.close(() => resolve(true)))\n        .unref()\n        .bind(0, ip);\n    } catch {\n      socket.close(() => resolve(false));\n    }\n  });\n}\n\n/**\n * Checks if given strings is a local IP address or a DNS name that resolve into a local IP\n *\n * @param {string} ipOrHostname\n * @param {boolean} [canBind=false] - should check whether an interface with such address exists on the local machine\n * @returns {Promise.<boolean>} - true, if given strings is a local IP address or DNS names that resolves to local IP\n */\nasync function isLocalhost(ipOrHostname, canBind = false) {\n  if (typeof ipOrHostname !== 'string') return false;\n\n  // Check if given string is an IP address\n  if (isIP(ipOrHostname)) {\n    if (IP_TESTER_RE.test(ipOrHostname) && !canBind) return true;\n    return canBindToIp(ipOrHostname);\n  }\n\n  // May it be a hostname?\n  if (!VALID_HOSTNAME.test(ipOrHostname)) return false;\n\n  // it's a DNS name\n  try {\n    const addresses = await lookup(ipOrHostname, {\n      all: true,\n      family: 0,\n      verbatim: true,\n      hints: ADDRCONFIG,\n    });\n    if (!Array.isArray(addresses)) return false;\n    for (const { address } of addresses) {\n      if (await isLocalhost(address, canBind)) return true;\n    }\n    // eslint-disable-next-line no-empty\n  } catch {}\n  return false;\n}\n\nmodule.exports = isLocalhost;\nmodule.exports.VALID_HOSTNAME = VALID_HOSTNAME; // for tests\n\n\n//# sourceURL=webpack://txadmin/./node_modules/is-localhost-ip/index.js?")},"./node_modules/is-promise/index.js":
/*!******************************************!*\
  !*** ./node_modules/is-promise/index.js ***!
  \******************************************/module=>{eval("module.exports = isPromise;\nmodule.exports[\"default\"] = isPromise;\n\nfunction isPromise(obj) {\n  return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/is-promise/index.js?")},"./node_modules/is-property/is-property.js":
/*!*************************************************!*\
  !*** ./node_modules/is-property/is-property.js ***!
  \*************************************************/module=>{"use strict";eval("\nfunction isProperty(str) {\n  return /^[$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\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05d0-\\u05ea\\u05f0-\\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\\u08a0\\u08a2-\\u08ac\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097f\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\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\\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-\\u0c33\\u0c35-\\u0c39\\u0c3d\\u0c58\\u0c59\\u0c60\\u0c61\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d60\\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-\\u13f4\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f0\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1877\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191c\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19c1-\\u19c7\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\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\\u2119-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u212d\\u212f-\\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\\u2e2f\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309d-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312d\\u3131-\\u318e\\u31a0-\\u31ba\\u31f0-\\u31ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua697\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua78e\\ua790-\\ua793\\ua7a0-\\ua7aa\\ua7f8-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa80-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uabc0-\\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][$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\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05d0-\\u05ea\\u05f0-\\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\\u08a0\\u08a2-\\u08ac\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097f\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\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\\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-\\u0c33\\u0c35-\\u0c39\\u0c3d\\u0c58\\u0c59\\u0c60\\u0c61\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d60\\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-\\u13f4\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f0\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1877\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191c\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19c1-\\u19c7\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\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\\u2119-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u212d\\u212f-\\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\\u2e2f\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309d-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312d\\u3131-\\u318e\\u31a0-\\u31ba\\u31f0-\\u31ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua697\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua78e\\ua790-\\ua793\\ua7a0-\\ua7aa\\ua7f8-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa80-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uabc0-\\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-\\uffdc0-9\\u0300-\\u036f\\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\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u08e4-\\u08fe\\u0900-\\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\\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\\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\\u0c01-\\u0c03\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c82\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0d02\\u0d03\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d82\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\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\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u1810-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19b0-\\u19c0\\u19c8\\u19c9\\u19d0-\\u19d9\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\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\\u1dc0-\\u1de6\\u1dfc-\\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\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua880\\ua881\\ua8b4-\\ua8c4\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua900-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f]*$/.test(str)\n}\nmodule.exports = isProperty\n\n//# sourceURL=webpack://txadmin/./node_modules/is-property/is-property.js?")},"./node_modules/is-stream/index.js":
/*!*****************************************!*\
  !*** ./node_modules/is-stream/index.js ***!
  \*****************************************/module=>{"use strict";eval("\n\nconst isStream = stream =>\n\tstream !== null &&\n\ttypeof stream === 'object' &&\n\ttypeof stream.pipe === 'function';\n\nisStream.writable = stream =>\n\tisStream(stream) &&\n\tstream.writable !== false &&\n\ttypeof stream._write === 'function' &&\n\ttypeof stream._writableState === 'object';\n\nisStream.readable = stream =>\n\tisStream(stream) &&\n\tstream.readable !== false &&\n\ttypeof stream._read === 'function' &&\n\ttypeof stream._readableState === 'object';\n\nisStream.duplex = stream =>\n\tisStream.writable(stream) &&\n\tisStream.readable(stream);\n\nisStream.transform = stream =>\n\tisStream.duplex(stream) &&\n\ttypeof stream._transform === 'function' &&\n\ttypeof stream._transformState === 'object';\n\nmodule.exports = isStream;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/is-stream/index.js?")},"./node_modules/is-string/index.js":
/*!*****************************************!*\
  !*** ./node_modules/is-string/index.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar strValue = String.prototype.valueOf;\nvar tryStringObject = function tryStringObject(value) {\n\ttry {\n\t\tstrValue.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar strClass = '[object String]';\nvar hasToStringTag = __webpack_require__(/*! has-tostringtag/shams */ \"./node_modules/has-tostringtag/shams.js\")();\n\nmodule.exports = function isString(value) {\n\tif (typeof value === 'string') {\n\t\treturn true;\n\t}\n\tif (typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryStringObject(value) : toStr.call(value) === strClass;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/is-string/index.js?")},"./node_modules/is-symbol/index.js":
/*!*****************************************!*\
  !*** ./node_modules/is-symbol/index.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar toStr = Object.prototype.toString;\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \"./node_modules/has-symbols/index.js\")();\n\nif (hasSymbols) {\n\tvar symToStr = Symbol.prototype.toString;\n\tvar symStringRegex = /^Symbol\\(.*\\)$/;\n\tvar isSymbolObject = function isRealSymbolObject(value) {\n\t\tif (typeof value.valueOf() !== 'symbol') {\n\t\t\treturn false;\n\t\t}\n\t\treturn symStringRegex.test(symToStr.call(value));\n\t};\n\n\tmodule.exports = function isSymbol(value) {\n\t\tif (typeof value === 'symbol') {\n\t\t\treturn true;\n\t\t}\n\t\tif (toStr.call(value) !== '[object Symbol]') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\treturn isSymbolObject(value);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n} else {\n\n\tmodule.exports = function isSymbol(value) {\n\t\t// this environment does not support Symbols.\n\t\treturn  false && 0;\n\t};\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/is-symbol/index.js?")},"./node_modules/is-type-of/index.js":
/*!******************************************!*\
  !*** ./node_modules/is-type-of/index.js ***!
  \******************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nvar utils = __webpack_require__(/*! core-util-is */ \"./node_modules/core-util-is/lib/util.js\");\nvar isStearm = __webpack_require__(/*! isstream */ \"./node_modules/isstream/isstream.js\");\n// wait for https://github.com/miguelmota/is-class/pull/6 merge\nvar isClass = __webpack_require__(/*! is-class-hotfix */ \"./node_modules/is-class-hotfix/is-class.js\");\n\n/**\n * Expose all methods in core-util-is\n */\n\nObject.keys(utils).map(function (name) {\n  exports[transform(name)] = utils[name];\n});\n\n/**\n * Stream detected by isstream\n */\n\nexports.stream = isStearm;\nexports.readableStream = isStearm.isReadable;\nexports.writableStream = isStearm.isWritable;\nexports.duplexStream = isStearm.isDuplex;\n\n/**\n * Class detected by is-class\n */\n exports[\"class\"] = isClass;\n\n/**\n * Extend method\n */\n\nexports.finite = Number.isFinite;\n\nexports[NaN] = Number.isNaN\n\nexports.generator = function (obj) {\n  return obj\n    && 'function' === typeof obj.next\n    && 'function' === typeof obj.throw;\n};\n\nexports.generatorFunction = function (obj) {\n  return obj\n    && obj.constructor\n    && 'GeneratorFunction' === obj.constructor.name;\n};\n\nexports.asyncFunction = function (obj) {\n  return obj\n    && obj.constructor\n    && 'AsyncFunction' === obj.constructor.name;\n};\n\nexports.promise = function (obj) {\n  return obj\n    && 'function' === typeof obj.then;\n};\n\nvar MAX_INT_31 = Math.pow(2, 31);\n\nexports.int = function (obj) {\n  return utils.isNumber(obj)\n    && obj % 1 === 0;\n};\n\nexports.int32 = function (obj) {\n  return exports.int(obj)\n    && obj < MAX_INT_31\n    && obj >= -MAX_INT_31;\n};\n\nexports.long = function (obj) {\n  return exports.int(obj)\n    && (obj >= MAX_INT_31 || obj < -MAX_INT_31);\n};\n\nexports.Long = function (obj) {\n  return exports.object(obj)\n    && exports.number(obj.high)\n    && exports.number(obj.low);\n};\n\nexports.double = function (obj) {\n  return utils.isNumber(obj)\n    && !isNaN(obj)\n    && obj % 1 !== 0;\n};\n\n/**\n * override core-util-is\n */\n\nexports.date = function isDate(obj) {\n  return obj instanceof Date;\n};\n\nexports.regExp = function isRegExp(obj) {\n  return obj instanceof RegExp;\n};\nexports.regexp = exports.regExp;\n\nexports.error = function isError(obj) {\n  return obj instanceof Error;\n};\n\nexports.array = Array.isArray;\n\n/**\n * transform isNull type to null\n * @param {[type]} m [description]\n * @return {[type]} [description]\n */\n\nfunction transform(m) {\n  var name = m.slice(2);\n  name = name[0].toLowerCase() + name.slice(1);\n  return name;\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/is-type-of/index.js?")},"./node_modules/is-wsl/index.js":
/*!**************************************!*\
  !*** ./node_modules/is-wsl/index.js ***!
  \**************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nconst os = __webpack_require__(/*! os */ \"os\");\nconst fs = __webpack_require__(/*! fs */ \"fs\");\nconst isDocker = __webpack_require__(/*! is-docker */ \"./node_modules/is-docker/index.js\");\n\nconst isWsl = () => {\n\tif (process.platform !== 'linux') {\n\t\treturn false;\n\t}\n\n\tif (os.release().toLowerCase().includes('microsoft')) {\n\t\tif (isDocker()) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\ttry {\n\t\treturn fs.readFileSync('/proc/version', 'utf8').toLowerCase().includes('microsoft') ?\n\t\t\t!isDocker() : false;\n\t} catch (_) {\n\t\treturn false;\n\t}\n};\n\nif (({\"APP_ENV\":\"webpack\"}).__IS_WSL_TEST__) {\n\tmodule.exports = isWsl;\n} else {\n\tmodule.exports = isWsl();\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/is-wsl/index.js?")},"./node_modules/isexe/index.js":
/*!*************************************!*\
  !*** ./node_modules/isexe/index.js ***!
  \*************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var fs = __webpack_require__(/*! fs */ \"fs\")\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n  core = __webpack_require__(/*! ./windows.js */ \"./node_modules/isexe/windows.js\")\n} else {\n  core = __webpack_require__(/*! ./mode.js */ \"./node_modules/isexe/mode.js\")\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n  if (typeof options === 'function') {\n    cb = options\n    options = {}\n  }\n\n  if (!cb) {\n    if (typeof Promise !== 'function') {\n      throw new TypeError('callback not provided')\n    }\n\n    return new Promise(function (resolve, reject) {\n      isexe(path, options || {}, function (er, is) {\n        if (er) {\n          reject(er)\n        } else {\n          resolve(is)\n        }\n      })\n    })\n  }\n\n  core(path, options || {}, function (er, is) {\n    // ignore EACCES because that just means we aren't allowed to run it\n    if (er) {\n      if (er.code === 'EACCES' || options && options.ignoreErrors) {\n        er = null\n        is = false\n      }\n    }\n    cb(er, is)\n  })\n}\n\nfunction sync (path, options) {\n  // my kingdom for a filtered catch\n  try {\n    return core.sync(path, options || {})\n  } catch (er) {\n    if (options && options.ignoreErrors || er.code === 'EACCES') {\n      return false\n    } else {\n      throw er\n    }\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/isexe/index.js?")},"./node_modules/isexe/mode.js":
/*!************************************!*\
  !*** ./node_modules/isexe/mode.js ***!
  \************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("module.exports = isexe\nisexe.sync = sync\n\nvar fs = __webpack_require__(/*! fs */ \"fs\")\n\nfunction isexe (path, options, cb) {\n  fs.stat(path, function (er, stat) {\n    cb(er, er ? false : checkStat(stat, options))\n  })\n}\n\nfunction sync (path, options) {\n  return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n  return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n  var mod = stat.mode\n  var uid = stat.uid\n  var gid = stat.gid\n\n  var myUid = options.uid !== undefined ?\n    options.uid : process.getuid && process.getuid()\n  var myGid = options.gid !== undefined ?\n    options.gid : process.getgid && process.getgid()\n\n  var u = parseInt('100', 8)\n  var g = parseInt('010', 8)\n  var o = parseInt('001', 8)\n  var ug = u | g\n\n  var ret = (mod & o) ||\n    (mod & g) && gid === myGid ||\n    (mod & u) && uid === myUid ||\n    (mod & ug) && myUid === 0\n\n  return ret\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/isexe/mode.js?")},"./node_modules/isexe/windows.js":
/*!***************************************!*\
  !*** ./node_modules/isexe/windows.js ***!
  \***************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('module.exports = isexe\nisexe.sync = sync\n\nvar fs = __webpack_require__(/*! fs */ "fs")\n\nfunction checkPathExt (path, options) {\n  var pathext = options.pathExt !== undefined ?\n    options.pathExt : ({"APP_ENV":"webpack"}).PATHEXT\n\n  if (!pathext) {\n    return true\n  }\n\n  pathext = pathext.split(\';\')\n  if (pathext.indexOf(\'\') !== -1) {\n    return true\n  }\n  for (var i = 0; i < pathext.length; i++) {\n    var p = pathext[i].toLowerCase()\n    if (p && path.substr(-p.length).toLowerCase() === p) {\n      return true\n    }\n  }\n  return false\n}\n\nfunction checkStat (stat, path, options) {\n  if (!stat.isSymbolicLink() && !stat.isFile()) {\n    return false\n  }\n  return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n  fs.stat(path, function (er, stat) {\n    cb(er, er ? false : checkStat(stat, path, options))\n  })\n}\n\nfunction sync (path, options) {\n  return checkStat(fs.statSync(path), path, options)\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/isexe/windows.js?')},"./node_modules/isstream/isstream.js":
/*!*******************************************!*\
  !*** ./node_modules/isstream/isstream.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var stream = __webpack_require__(/*! stream */ \"stream\")\n\n\nfunction isStream (obj) {\n  return obj instanceof stream.Stream\n}\n\n\nfunction isReadable (obj) {\n  return isStream(obj) && typeof obj._read == 'function' && typeof obj._readableState == 'object'\n}\n\n\nfunction isWritable (obj) {\n  return isStream(obj) && typeof obj._write == 'function' && typeof obj._writableState == 'object'\n}\n\n\nfunction isDuplex (obj) {\n  return isReadable(obj) && isWritable(obj)\n}\n\n\nmodule.exports            = isStream\nmodule.exports.isReadable = isReadable\nmodule.exports.isWritable = isWritable\nmodule.exports.isDuplex   = isDuplex\n\n\n//# sourceURL=webpack://txadmin/./node_modules/isstream/isstream.js?")},"./node_modules/jose/lib/errors.js":
/*!*****************************************!*\
  !*** ./node_modules/jose/lib/errors.js ***!
  \*****************************************/module=>{eval("const CODES = {\n  JOSEAlgNotWhitelisted: 'ERR_JOSE_ALG_NOT_WHITELISTED',\n  JOSECritNotUnderstood: 'ERR_JOSE_CRIT_NOT_UNDERSTOOD',\n  JOSEInvalidEncoding: 'ERR_JOSE_INVALID_ENCODING',\n  JOSEMultiError: 'ERR_JOSE_MULTIPLE_ERRORS',\n  JOSENotSupported: 'ERR_JOSE_NOT_SUPPORTED',\n  JWEDecryptionFailed: 'ERR_JWE_DECRYPTION_FAILED',\n  JWEInvalid: 'ERR_JWE_INVALID',\n  JWKImportFailed: 'ERR_JWK_IMPORT_FAILED',\n  JWKInvalid: 'ERR_JWK_INVALID',\n  JWKKeySupport: 'ERR_JWK_KEY_SUPPORT',\n  JWKSNoMatchingKey: 'ERR_JWKS_NO_MATCHING_KEY',\n  JWSInvalid: 'ERR_JWS_INVALID',\n  JWSVerificationFailed: 'ERR_JWS_VERIFICATION_FAILED',\n  JWTClaimInvalid: 'ERR_JWT_CLAIM_INVALID',\n  JWTExpired: 'ERR_JWT_EXPIRED',\n  JWTMalformed: 'ERR_JWT_MALFORMED'\n}\n\nconst DEFAULT_MESSAGES = {\n  JWEDecryptionFailed: 'decryption operation failed',\n  JWEInvalid: 'JWE invalid',\n  JWKSNoMatchingKey: 'no matching key found in the KeyStore',\n  JWSInvalid: 'JWS invalid',\n  JWSVerificationFailed: 'signature verification failed'\n}\n\nclass JOSEError extends Error {\n  constructor (message) {\n    super(message)\n    if (message === undefined) {\n      this.message = DEFAULT_MESSAGES[this.constructor.name]\n    }\n    this.name = this.constructor.name\n    this.code = CODES[this.constructor.name]\n    Error.captureStackTrace(this, this.constructor)\n  }\n}\n\nconst isMulti = e => e instanceof JOSEMultiError\nclass JOSEMultiError extends JOSEError {\n  constructor (errors) {\n    super()\n    let i\n    while ((i = errors.findIndex(isMulti)) && i !== -1) {\n      errors.splice(i, 1, ...errors[i])\n    }\n    Object.defineProperty(this, 'errors', { value: errors })\n  }\n\n  * [Symbol.iterator] () {\n    for (const error of this.errors) {\n      yield error\n    }\n  }\n}\nmodule.exports.JOSEError = JOSEError\n\nmodule.exports.JOSEAlgNotWhitelisted = class JOSEAlgNotWhitelisted extends JOSEError {}\nmodule.exports.JOSECritNotUnderstood = class JOSECritNotUnderstood extends JOSEError {}\nmodule.exports.JOSEInvalidEncoding = class JOSEInvalidEncoding extends JOSEError {}\nmodule.exports.JOSEMultiError = JOSEMultiError\nmodule.exports.JOSENotSupported = class JOSENotSupported extends JOSEError {}\n\nmodule.exports.JWEDecryptionFailed = class JWEDecryptionFailed extends JOSEError {}\nmodule.exports.JWEInvalid = class JWEInvalid extends JOSEError {}\n\nmodule.exports.JWKImportFailed = class JWKImportFailed extends JOSEError {}\nmodule.exports.JWKInvalid = class JWKInvalid extends JOSEError {}\nmodule.exports.JWKKeySupport = class JWKKeySupport extends JOSEError {}\n\nmodule.exports.JWKSNoMatchingKey = class JWKSNoMatchingKey extends JOSEError {}\n\nmodule.exports.JWSInvalid = class JWSInvalid extends JOSEError {}\nmodule.exports.JWSVerificationFailed = class JWSVerificationFailed extends JOSEError {}\n\nclass JWTClaimInvalid extends JOSEError {\n  constructor (message, claim = 'unspecified', reason = 'unspecified') {\n    super(message)\n    this.claim = claim\n    this.reason = reason\n  }\n}\nmodule.exports.JWTClaimInvalid = JWTClaimInvalid\nmodule.exports.JWTExpired = class JWTExpired extends JWTClaimInvalid {}\nmodule.exports.JWTMalformed = class JWTMalformed extends JOSEError {}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/errors.js?")},"./node_modules/jose/lib/help/asn1/algorithm_identifier.js":
/*!*****************************************************************!*\
  !*** ./node_modules/jose/lib/help/asn1/algorithm_identifier.js ***!
  \*****************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const oids = __webpack_require__(/*! ./oids */ \"./node_modules/jose/lib/help/asn1/oids.js\")\n\nmodule.exports = function () {\n  this.seq().obj(\n    this.key('algorithm').objid(oids),\n    this.key('parameters').optional().choice({ namedCurve: this.objid(oids), null: this.null_() })\n  )\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/help/asn1/algorithm_identifier.js?")},"./node_modules/jose/lib/help/asn1/ec_private_key.js":
/*!***********************************************************!*\
  !*** ./node_modules/jose/lib/help/asn1/ec_private_key.js ***!
  \***********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const oids = __webpack_require__(/*! ./oids */ \"./node_modules/jose/lib/help/asn1/oids.js\")\n\nmodule.exports = function () {\n  this.seq().obj(\n    this.key('version').int(),\n    this.key('privateKey').octstr(),\n    this.key('parameters').explicit(0).optional().choice({ namedCurve: this.objid(oids) }),\n    this.key('publicKey').explicit(1).optional().bitstr()\n  )\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/help/asn1/ec_private_key.js?")},"./node_modules/jose/lib/help/asn1/index.js":
/*!**************************************************!*\
  !*** ./node_modules/jose/lib/help/asn1/index.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const asn1 = __webpack_require__(/*! @panva/asn1.js */ \"./node_modules/@panva/asn1.js/lib/asn1.js\")\n\nconst types = new Map()\n\nconst AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', __webpack_require__(/*! ./algorithm_identifier */ \"./node_modules/jose/lib/help/asn1/algorithm_identifier.js\"))\ntypes.set('AlgorithmIdentifier', AlgorithmIdentifier)\n\nconst ECPrivateKey = asn1.define('ECPrivateKey', __webpack_require__(/*! ./ec_private_key */ \"./node_modules/jose/lib/help/asn1/ec_private_key.js\"))\ntypes.set('ECPrivateKey', ECPrivateKey)\n\nconst PrivateKeyInfo = asn1.define('PrivateKeyInfo', __webpack_require__(/*! ./private_key_info */ \"./node_modules/jose/lib/help/asn1/private_key_info.js\")(AlgorithmIdentifier))\ntypes.set('PrivateKeyInfo', PrivateKeyInfo)\n\nconst PublicKeyInfo = asn1.define('PublicKeyInfo', __webpack_require__(/*! ./public_key_info */ \"./node_modules/jose/lib/help/asn1/public_key_info.js\")(AlgorithmIdentifier))\ntypes.set('PublicKeyInfo', PublicKeyInfo)\n\nconst PrivateKey = asn1.define('PrivateKey', __webpack_require__(/*! ./private_key */ \"./node_modules/jose/lib/help/asn1/private_key.js\"))\ntypes.set('PrivateKey', PrivateKey)\n\nconst OneAsymmetricKey = asn1.define('OneAsymmetricKey', __webpack_require__(/*! ./one_asymmetric_key */ \"./node_modules/jose/lib/help/asn1/one_asymmetric_key.js\")(AlgorithmIdentifier, PrivateKey))\ntypes.set('OneAsymmetricKey', OneAsymmetricKey)\n\nconst RSAPrivateKey = asn1.define('RSAPrivateKey', __webpack_require__(/*! ./rsa_private_key */ \"./node_modules/jose/lib/help/asn1/rsa_private_key.js\"))\ntypes.set('RSAPrivateKey', RSAPrivateKey)\n\nconst RSAPublicKey = asn1.define('RSAPublicKey', __webpack_require__(/*! ./rsa_public_key */ \"./node_modules/jose/lib/help/asn1/rsa_public_key.js\"))\ntypes.set('RSAPublicKey', RSAPublicKey)\n\nmodule.exports = types\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/help/asn1/index.js?")},"./node_modules/jose/lib/help/asn1/oids.js":
/*!*************************************************!*\
  !*** ./node_modules/jose/lib/help/asn1/oids.js ***!
  \*************************************************/module=>{eval("const oids = {\n  '1 2 840 10045 3 1 7': 'P-256',\n  '1 3 132 0 10': 'secp256k1',\n  '1 3 132 0 34': 'P-384',\n  '1 3 132 0 35': 'P-521',\n  '1 2 840 10045 2 1': 'ecPublicKey',\n  '1 2 840 113549 1 1 1': 'rsaEncryption',\n  '1 3 101 110': 'X25519',\n  '1 3 101 111': 'X448',\n  '1 3 101 112': 'Ed25519',\n  '1 3 101 113': 'Ed448'\n}\n\nmodule.exports = oids\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/help/asn1/oids.js?")},"./node_modules/jose/lib/help/asn1/one_asymmetric_key.js":
/*!***************************************************************!*\
  !*** ./node_modules/jose/lib/help/asn1/one_asymmetric_key.js ***!
  \***************************************************************/module=>{eval("module.exports = (AlgorithmIdentifier, PrivateKey) => function () {\n  this.seq().obj(\n    this.key('version').int(),\n    this.key('algorithm').use(AlgorithmIdentifier),\n    this.key('privateKey').use(PrivateKey)\n  )\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/help/asn1/one_asymmetric_key.js?")},"./node_modules/jose/lib/help/asn1/private_key.js":
/*!********************************************************!*\
  !*** ./node_modules/jose/lib/help/asn1/private_key.js ***!
  \********************************************************/module=>{eval("module.exports = function () {\n  this.octstr().contains().obj(\n    this.key('privateKey').octstr()\n  )\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/help/asn1/private_key.js?")},"./node_modules/jose/lib/help/asn1/private_key_info.js":
/*!*************************************************************!*\
  !*** ./node_modules/jose/lib/help/asn1/private_key_info.js ***!
  \*************************************************************/module=>{eval("module.exports = (AlgorithmIdentifier) => function () {\n  this.seq().obj(\n    this.key('version').int(),\n    this.key('algorithm').use(AlgorithmIdentifier),\n    this.key('privateKey').octstr()\n  )\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/help/asn1/private_key_info.js?")},"./node_modules/jose/lib/help/asn1/public_key_info.js":
/*!************************************************************!*\
  !*** ./node_modules/jose/lib/help/asn1/public_key_info.js ***!
  \************************************************************/module=>{eval("module.exports = AlgorithmIdentifier => function () {\n  this.seq().obj(\n    this.key('algorithm').use(AlgorithmIdentifier),\n    this.key('publicKey').bitstr()\n  )\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/help/asn1/public_key_info.js?")},"./node_modules/jose/lib/help/asn1/rsa_private_key.js":
/*!************************************************************!*\
  !*** ./node_modules/jose/lib/help/asn1/rsa_private_key.js ***!
  \************************************************************/module=>{eval("module.exports = function () {\n  this.seq().obj(\n    this.key('version').int({ 0: 'two-prime', 1: 'multi' }),\n    this.key('n').int(),\n    this.key('e').int(),\n    this.key('d').int(),\n    this.key('p').int(),\n    this.key('q').int(),\n    this.key('dp').int(),\n    this.key('dq').int(),\n    this.key('qi').int()\n  )\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/help/asn1/rsa_private_key.js?")},"./node_modules/jose/lib/help/asn1/rsa_public_key.js":
/*!***********************************************************!*\
  !*** ./node_modules/jose/lib/help/asn1/rsa_public_key.js ***!
  \***********************************************************/module=>{eval("module.exports = function () {\n  this.seq().obj(\n    this.key('n').int(),\n    this.key('e').int()\n  )\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/help/asn1/rsa_public_key.js?")},"./node_modules/jose/lib/help/base64url.js":
/*!*************************************************!*\
  !*** ./node_modules/jose/lib/help/base64url.js ***!
  \*************************************************/module=>{eval("let encode\nlet encodeBuffer\nif (Buffer.isEncoding('base64url')) {\n  encode = (input, encoding = 'utf8') => Buffer.from(input, encoding).toString('base64url')\n  encodeBuffer = (buf) => buf.toString('base64url')\n} else {\n  const fromBase64 = (base64) => base64.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_')\n  encode = (input, encoding = 'utf8') => fromBase64(Buffer.from(input, encoding).toString('base64'))\n  encodeBuffer = (buf) => fromBase64(buf.toString('base64'))\n}\n\nconst decodeToBuffer = (input) => {\n  return Buffer.from(input, 'base64')\n}\n\nconst decode = (input, encoding = 'utf8') => {\n  return decodeToBuffer(input).toString(encoding)\n}\n\nconst b64uJSON = {\n  encode: (input) => {\n    return encode(JSON.stringify(input))\n  },\n  decode: (input, encoding = 'utf8') => {\n    return JSON.parse(decode(input, encoding))\n  }\n}\n\nb64uJSON.decode.try = (input, encoding = 'utf8') => {\n  try {\n    return b64uJSON.decode(input, encoding)\n  } catch (err) {\n    return decode(input, encoding)\n  }\n}\n\nconst bnToBuf = (bn) => {\n  let hex = BigInt(bn).toString(16)\n  if (hex.length % 2) {\n    hex = `0${hex}`\n  }\n\n  const len = hex.length / 2\n  const u8 = new Uint8Array(len)\n\n  let i = 0\n  let j = 0\n  while (i < len) {\n    u8[i] = parseInt(hex.slice(j, j + 2), 16)\n    i += 1\n    j += 2\n  }\n\n  return u8\n}\n\nconst encodeBigInt = (bn) => encodeBuffer(Buffer.from(bnToBuf(bn)))\n\nmodule.exports.decode = decode\nmodule.exports.decodeToBuffer = decodeToBuffer\nmodule.exports.encode = encode\nmodule.exports.encodeBuffer = encodeBuffer\nmodule.exports.JSON = b64uJSON\nmodule.exports.encodeBigInt = encodeBigInt\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/help/base64url.js?")},"./node_modules/jose/lib/help/consts.js":
/*!**********************************************!*\
  !*** ./node_modules/jose/lib/help/consts.js ***!
  \**********************************************/module=>{eval("module.exports.KEYOBJECT = Symbol('KEYOBJECT')\nmodule.exports.PRIVATE_MEMBERS = Symbol('PRIVATE_MEMBERS')\nmodule.exports.PUBLIC_MEMBERS = Symbol('PUBLIC_MEMBERS')\nmodule.exports.THUMBPRINT_MATERIAL = Symbol('THUMBPRINT_MATERIAL')\nmodule.exports.JWK_MEMBERS = Symbol('JWK_MEMBERS')\nmodule.exports.KEY_MANAGEMENT_ENCRYPT = Symbol('KEY_MANAGEMENT_ENCRYPT')\nmodule.exports.KEY_MANAGEMENT_DECRYPT = Symbol('KEY_MANAGEMENT_DECRYPT')\n\nconst USES_MAPPING = {\n  sig: new Set(['sign', 'verify']),\n  enc: new Set(['encrypt', 'decrypt', 'wrapKey', 'unwrapKey', 'deriveKey'])\n}\nconst OPS = new Set([...USES_MAPPING.sig, ...USES_MAPPING.enc])\nconst USES = new Set(Object.keys(USES_MAPPING))\n\nmodule.exports.USES_MAPPING = USES_MAPPING\nmodule.exports.OPS = OPS\nmodule.exports.USES = USES\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/help/consts.js?")},"./node_modules/jose/lib/help/deep_clone.js":
/*!**************************************************!*\
  !*** ./node_modules/jose/lib/help/deep_clone.js ***!
  \**************************************************/module=>{eval("module.exports = obj => JSON.parse(JSON.stringify(obj))\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/help/deep_clone.js?")},"./node_modules/jose/lib/help/ecdsa_signatures.js":
/*!********************************************************!*\
  !*** ./node_modules/jose/lib/help/ecdsa_signatures.js ***!
  \********************************************************/module=>{eval('const MAX_OCTET = 0x80\nconst CLASS_UNIVERSAL = 0\nconst PRIMITIVE_BIT = 0x20\nconst TAG_SEQ = 0x10\nconst TAG_INT = 0x02\nconst ENCODED_TAG_SEQ = (TAG_SEQ | PRIMITIVE_BIT) | (CLASS_UNIVERSAL << 6)\nconst ENCODED_TAG_INT = TAG_INT | (CLASS_UNIVERSAL << 6)\n\nconst getParamSize = keySize => ((keySize / 8) | 0) + (keySize % 8 === 0 ? 0 : 1)\n\nconst paramBytesForAlg = {\n  ES256: getParamSize(256),\n  ES256K: getParamSize(256),\n  ES384: getParamSize(384),\n  ES512: getParamSize(521)\n}\n\nconst countPadding = (buf, start, stop) => {\n  let padding = 0\n  while (start + padding < stop && buf[start + padding] === 0) {\n    ++padding\n  }\n\n  const needsSign = buf[start + padding] >= MAX_OCTET\n  if (needsSign) {\n    --padding\n  }\n\n  return padding\n}\n\nmodule.exports.derToJose = (signature, alg) => {\n  if (!Buffer.isBuffer(signature)) {\n    throw new TypeError(\'ECDSA signature must be a Buffer\')\n  }\n\n  if (!paramBytesForAlg[alg]) {\n    throw new Error(`Unknown algorithm "${alg}"`)\n  }\n\n  const paramBytes = paramBytesForAlg[alg]\n\n  // the DER encoded param should at most be the param size, plus a padding\n  // zero, since due to being a signed integer\n  const maxEncodedParamLength = paramBytes + 1\n\n  const inputLength = signature.length\n\n  let offset = 0\n  if (signature[offset++] !== ENCODED_TAG_SEQ) {\n    throw new Error(\'Could not find expected "seq"\')\n  }\n\n  let seqLength = signature[offset++]\n  if (seqLength === (MAX_OCTET | 1)) {\n    seqLength = signature[offset++]\n  }\n\n  if (inputLength - offset < seqLength) {\n    throw new Error(`"seq" specified length of ${seqLength}", only ${inputLength - offset}" remaining`)\n  }\n\n  if (signature[offset++] !== ENCODED_TAG_INT) {\n    throw new Error(\'Could not find expected "int" for "r"\')\n  }\n\n  const rLength = signature[offset++]\n\n  if (inputLength - offset - 2 < rLength) {\n    throw new Error(`"r" specified length of "${rLength}", only "${inputLength - offset - 2}" available`)\n  }\n\n  if (maxEncodedParamLength < rLength) {\n    throw new Error(`"r" specified length of "${rLength}", max of "${maxEncodedParamLength}" is acceptable`)\n  }\n\n  const rOffset = offset\n  offset += rLength\n\n  if (signature[offset++] !== ENCODED_TAG_INT) {\n    throw new Error(\'Could not find expected "int" for "s"\')\n  }\n\n  const sLength = signature[offset++]\n\n  if (inputLength - offset !== sLength) {\n    throw new Error(`"s" specified length of "${sLength}", expected "${inputLength - offset}"`)\n  }\n\n  if (maxEncodedParamLength < sLength) {\n    throw new Error(`"s" specified length of "${sLength}", max of "${maxEncodedParamLength}" is acceptable`)\n  }\n\n  const sOffset = offset\n  offset += sLength\n\n  if (offset !== inputLength) {\n    throw new Error(`Expected to consume entire buffer, but "${inputLength - offset}" bytes remain`)\n  }\n\n  const rPadding = paramBytes - rLength\n\n  const sPadding = paramBytes - sLength\n\n  const dst = Buffer.allocUnsafe(rPadding + rLength + sPadding + sLength)\n\n  for (offset = 0; offset < rPadding; ++offset) {\n    dst[offset] = 0\n  }\n  signature.copy(dst, offset, rOffset + Math.max(-rPadding, 0), rOffset + rLength)\n\n  offset = paramBytes\n\n  for (const o = offset; offset < o + sPadding; ++offset) {\n    dst[offset] = 0\n  }\n  signature.copy(dst, offset, sOffset + Math.max(-sPadding, 0), sOffset + sLength)\n\n  return dst\n}\n\nmodule.exports.joseToDer = (signature, alg) => {\n  if (!Buffer.isBuffer(signature)) {\n    throw new TypeError(\'ECDSA signature must be a Buffer\')\n  }\n\n  if (!paramBytesForAlg[alg]) {\n    throw new TypeError(`Unknown algorithm "${alg}"`)\n  }\n\n  const paramBytes = paramBytesForAlg[alg]\n\n  const signatureBytes = signature.length\n  if (signatureBytes !== paramBytes * 2) {\n    throw new Error(`"${alg}" signatures must be "${paramBytes * 2}" bytes, saw "${signatureBytes}"`)\n  }\n\n  const rPadding = countPadding(signature, 0, paramBytes)\n  const sPadding = countPadding(signature, paramBytes, signature.length)\n  const rLength = paramBytes - rPadding\n  const sLength = paramBytes - sPadding\n\n  const rsBytes = 1 + 1 + rLength + 1 + 1 + sLength\n\n  const shortLength = rsBytes < MAX_OCTET\n\n  const dst = Buffer.allocUnsafe((shortLength ? 2 : 3) + rsBytes)\n\n  let offset = 0\n  dst[offset++] = ENCODED_TAG_SEQ\n  if (shortLength) {\n    // Bit 8 has value "0"\n    // bits 7-1 give the length.\n    dst[offset++] = rsBytes\n  } else {\n    // Bit 8 of first octet has value "1"\n    // bits 7-1 give the number of additional length octets.\n    dst[offset++] = MAX_OCTET\t| 1 // eslint-disable-line no-tabs\n    // length, base 256\n    dst[offset++] = rsBytes & 0xff\n  }\n  dst[offset++] = ENCODED_TAG_INT\n  dst[offset++] = rLength\n  if (rPadding < 0) {\n    dst[offset++] = 0\n    offset += signature.copy(dst, offset, 0, paramBytes)\n  } else {\n    offset += signature.copy(dst, offset, rPadding, paramBytes)\n  }\n  dst[offset++] = ENCODED_TAG_INT\n  dst[offset++] = sLength\n  if (sPadding < 0) {\n    dst[offset++] = 0\n    signature.copy(dst, offset, paramBytes)\n  } else {\n    signature.copy(dst, offset, paramBytes + sPadding)\n  }\n\n  return dst\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/help/ecdsa_signatures.js?')},"./node_modules/jose/lib/help/epoch.js":
/*!*********************************************!*\
  !*** ./node_modules/jose/lib/help/epoch.js ***!
  \*********************************************/module=>{eval("module.exports = (date) => Math.floor(date.getTime() / 1000)\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/help/epoch.js?")},"./node_modules/jose/lib/help/generate_iv.js":
/*!***************************************************!*\
  !*** ./node_modules/jose/lib/help/generate_iv.js ***!
  \***************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const { randomBytes } = __webpack_require__(/*! crypto */ "crypto")\n\nconst { IVLENGTHS } = __webpack_require__(/*! ../registry */ "./node_modules/jose/lib/registry/index.js")\n\nmodule.exports = alg => randomBytes(IVLENGTHS.get(alg) / 8)\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/help/generate_iv.js?')},"./node_modules/jose/lib/help/get_key.js":
/*!***********************************************!*\
  !*** ./node_modules/jose/lib/help/get_key.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const errors = __webpack_require__(/*! ../errors */ "./node_modules/jose/lib/errors.js")\nconst Key = __webpack_require__(/*! ../jwk/key/base */ "./node_modules/jose/lib/jwk/key/base.js")\nconst importKey = __webpack_require__(/*! ../jwk/import */ "./node_modules/jose/lib/jwk/import.js")\nconst { KeyStore } = __webpack_require__(/*! ../jwks/keystore */ "./node_modules/jose/lib/jwks/keystore.js")\n\nmodule.exports = (input, keyStoreAllowed = false) => {\n  if (input instanceof Key) {\n    return input\n  }\n\n  if (input instanceof KeyStore) {\n    if (!keyStoreAllowed) {\n      throw new TypeError(\'key argument for this operation must not be a JWKS.KeyStore instance\')\n    }\n\n    return input\n  }\n\n  try {\n    return importKey(input)\n  } catch (err) {\n    if (err instanceof errors.JOSEError && !(err instanceof errors.JWKImportFailed)) {\n      throw err\n    }\n\n    let msg\n    if (keyStoreAllowed) {\n      msg = \'key must be an instance of a key instantiated by JWK.asKey, a valid JWK.asKey input, or a JWKS.KeyStore instance\'\n    } else {\n      msg = \'key must be an instance of a key instantiated by JWK.asKey, or a valid JWK.asKey input\'\n    }\n\n    throw new TypeError(msg)\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/help/get_key.js?')},"./node_modules/jose/lib/help/is_disjoint.js":
/*!***************************************************!*\
  !*** ./node_modules/jose/lib/help/is_disjoint.js ***!
  \***************************************************/module=>{eval("module.exports = (a = {}, b = {}) => {\n  const keysA = Object.keys(a)\n  const keysB = new Set(Object.keys(b))\n  return !keysA.some((ka) => keysB.has(ka))\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/help/is_disjoint.js?")},"./node_modules/jose/lib/help/is_object.js":
/*!*************************************************!*\
  !*** ./node_modules/jose/lib/help/is_object.js ***!
  \*************************************************/module=>{eval("module.exports = a => !!a && a.constructor === Object\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/help/is_object.js?")},"./node_modules/jose/lib/help/key_object.js":
/*!**************************************************!*\
  !*** ./node_modules/jose/lib/help/key_object.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { keyObjectSupported } = __webpack_require__(/*! ./runtime_support */ \"./node_modules/jose/lib/help/runtime_support.js\")\n\nlet createPublicKey\nlet createPrivateKey\nlet createSecretKey\nlet KeyObject\nlet asInput\n\nif (keyObjectSupported) {\n  ({ createPublicKey, createPrivateKey, createSecretKey, KeyObject } = __webpack_require__(/*! crypto */ \"crypto\"))\n  asInput = (input) => input\n} else {\n  const { EOL } = __webpack_require__(/*! os */ \"os\")\n\n  const errors = __webpack_require__(/*! ../errors */ \"./node_modules/jose/lib/errors.js\")\n  const isObject = __webpack_require__(/*! ./is_object */ \"./node_modules/jose/lib/help/is_object.js\")\n  const asn1 = __webpack_require__(/*! ./asn1 */ \"./node_modules/jose/lib/help/asn1/index.js\")\n  const toInput = Symbol('toInput')\n\n  const namedCurve = Symbol('namedCurve')\n\n  asInput = (keyObject, needsPublic) => {\n    if (keyObject instanceof KeyObject) {\n      return keyObject[toInput](needsPublic)\n    }\n\n    return createSecretKey(keyObject)[toInput](needsPublic)\n  }\n\n  const pemToDer = pem => Buffer.from(pem.replace(/(?:-----(?:BEGIN|END)(?: (?:RSA|EC))? (?:PRIVATE|PUBLIC) KEY-----|\\s)/g, ''), 'base64')\n  const derToPem = (der, label) => `-----BEGIN ${label}-----${EOL}${(der.toString('base64').match(/.{1,64}/g) || []).join(EOL)}${EOL}-----END ${label}-----`\n  const unsupported = (input) => {\n    const label = typeof input === 'string' ? input : `OID ${input.join('.')}`\n    throw new errors.JOSENotSupported(`${label} is not supported in your Node.js runtime version`)\n  }\n\n  KeyObject = class KeyObject {\n    export ({ cipher, passphrase, type, format } = {}) {\n      if (this._type === 'secret') {\n        return this._buffer\n      }\n\n      if (this._type === 'public') {\n        if (this.asymmetricKeyType === 'rsa') {\n          switch (type) {\n            case 'pkcs1':\n              if (format === 'pem') {\n                return this._pem\n              }\n\n              return pemToDer(this._pem)\n            case 'spki': {\n              const PublicKeyInfo = asn1.get('PublicKeyInfo')\n              const pem = PublicKeyInfo.encode({\n                algorithm: {\n                  algorithm: 'rsaEncryption',\n                  parameters: { type: 'null' }\n                },\n                publicKey: {\n                  unused: 0,\n                  data: pemToDer(this._pem)\n                }\n              }, 'pem', { label: 'PUBLIC KEY' })\n\n              return format === 'pem' ? pem : pemToDer(pem)\n            }\n            default:\n              throw new TypeError(`The value ${type} is invalid for option \"type\"`)\n          }\n        }\n\n        if (this.asymmetricKeyType === 'ec') {\n          if (type !== 'spki') {\n            throw new TypeError(`The value ${type} is invalid for option \"type\"`)\n          }\n\n          if (format === 'pem') {\n            return this._pem\n          }\n\n          return pemToDer(this._pem)\n        }\n      }\n\n      if (this._type === 'private') {\n        if (passphrase !== undefined || cipher !== undefined) {\n          throw new errors.JOSENotSupported('encrypted private keys are not supported in your Node.js runtime version')\n        }\n\n        if (type === 'pkcs8') {\n          if (this._pkcs8) {\n            if (format === 'der' && typeof this._pkcs8 === 'string') {\n              return pemToDer(this._pkcs8)\n            }\n\n            if (format === 'pem' && Buffer.isBuffer(this._pkcs8)) {\n              return derToPem(this._pkcs8, 'PRIVATE KEY')\n            }\n\n            return this._pkcs8\n          }\n\n          if (this.asymmetricKeyType === 'rsa') {\n            const parsed = this._asn1\n            const RSAPrivateKey = asn1.get('RSAPrivateKey')\n            const privateKey = RSAPrivateKey.encode(parsed)\n            const PrivateKeyInfo = asn1.get('PrivateKeyInfo')\n            const pkcs8 = PrivateKeyInfo.encode({\n              version: 0,\n              privateKey,\n              algorithm: {\n                algorithm: 'rsaEncryption',\n                parameters: { type: 'null' }\n              }\n            })\n\n            this._pkcs8 = pkcs8\n\n            return this.export({ type, format })\n          }\n\n          if (this.asymmetricKeyType === 'ec') {\n            const parsed = this._asn1\n            const ECPrivateKey = asn1.get('ECPrivateKey')\n            const privateKey = ECPrivateKey.encode({\n              version: parsed.version,\n              privateKey: parsed.privateKey,\n              publicKey: parsed.publicKey\n            })\n            const PrivateKeyInfo = asn1.get('PrivateKeyInfo')\n            const pkcs8 = PrivateKeyInfo.encode({\n              version: 0,\n              privateKey,\n              algorithm: {\n                algorithm: 'ecPublicKey',\n                parameters: this._asn1.parameters\n              }\n            })\n\n            this._pkcs8 = pkcs8\n\n            return this.export({ type, format })\n          }\n        }\n\n        if (this.asymmetricKeyType === 'rsa' && type === 'pkcs1') {\n          if (format === 'pem') {\n            return this._pem\n          }\n\n          return pemToDer(this._pem)\n        } else if (this.asymmetricKeyType === 'ec' && type === 'sec1') {\n          if (format === 'pem') {\n            return this._pem\n          }\n\n          return pemToDer(this._pem)\n        } else {\n          throw new TypeError(`The value ${type} is invalid for option \"type\"`)\n        }\n      }\n    }\n\n    get type () {\n      return this._type\n    }\n\n    get asymmetricKeyType () {\n      return this._asymmetricKeyType\n    }\n\n    get symmetricKeySize () {\n      return this._symmetricKeySize\n    }\n\n    [toInput] (needsPublic) {\n      switch (this._type) {\n        case 'secret':\n          return this._buffer\n        case 'public':\n          return this._pem\n        default:\n          if (needsPublic) {\n            if (!('_pub' in this)) {\n              this._pub = createPublicKey(this)\n            }\n\n            return this._pub[toInput](false)\n          }\n\n          return this._pem\n      }\n    }\n  }\n\n  createSecretKey = (buffer) => {\n    if (!Buffer.isBuffer(buffer) || !buffer.length) {\n      throw new TypeError('input must be a non-empty Buffer instance')\n    }\n\n    const keyObject = new KeyObject()\n    keyObject._buffer = Buffer.from(buffer)\n    keyObject._symmetricKeySize = buffer.length\n    keyObject._type = 'secret'\n\n    return keyObject\n  }\n\n  createPublicKey = (input) => {\n    if (input instanceof KeyObject) {\n      if (input.type !== 'private') {\n        throw new TypeError(`Invalid key object type ${input.type}, expected private.`)\n      }\n\n      switch (input.asymmetricKeyType) {\n        case 'ec': {\n          const PublicKeyInfo = asn1.get('PublicKeyInfo')\n          const key = PublicKeyInfo.encode({\n            algorithm: {\n              algorithm: 'ecPublicKey',\n              parameters: input._asn1.parameters\n            },\n            publicKey: input._asn1.publicKey\n          })\n\n          return createPublicKey({ key, format: 'der', type: 'spki' })\n        }\n        case 'rsa': {\n          const RSAPublicKey = asn1.get('RSAPublicKey')\n          const key = RSAPublicKey.encode(input._asn1)\n          return createPublicKey({ key, format: 'der', type: 'pkcs1' })\n        }\n      }\n    }\n\n    if (typeof input === 'string' || Buffer.isBuffer(input)) {\n      input = { key: input, format: 'pem' }\n    }\n\n    if (!isObject(input)) {\n      throw new TypeError('input must be a string, Buffer or an object')\n    }\n\n    const { format, passphrase } = input\n    let { key, type } = input\n\n    if (typeof key !== 'string' && !Buffer.isBuffer(key)) {\n      throw new TypeError('key must be a string or Buffer')\n    }\n\n    if (format !== 'pem' && format !== 'der') {\n      throw new TypeError('format must be one of \"pem\" or \"der\"')\n    }\n\n    let label\n    if (format === 'pem') {\n      key = key.toString()\n      switch (key.split(/\\r?\\n/g)[0].toString()) {\n        case '-----BEGIN PUBLIC KEY-----':\n          type = 'spki'\n          label = 'PUBLIC KEY'\n          break\n        case '-----BEGIN RSA PUBLIC KEY-----':\n          type = 'pkcs1'\n          label = 'RSA PUBLIC KEY'\n          break\n        case '-----BEGIN CERTIFICATE-----':\n          throw new errors.JOSENotSupported('X.509 certificates are not supported in your Node.js runtime version')\n        case '-----BEGIN PRIVATE KEY-----':\n        case '-----BEGIN EC PRIVATE KEY-----':\n        case '-----BEGIN RSA PRIVATE KEY-----':\n          return createPublicKey(createPrivateKey(key))\n        default:\n          throw new TypeError('unknown/unsupported PEM type')\n      }\n    }\n\n    switch (type) {\n      case 'spki': {\n        const PublicKeyInfo = asn1.get('PublicKeyInfo')\n        const parsed = PublicKeyInfo.decode(key, format, { label })\n\n        let type, keyObject\n        switch (parsed.algorithm.algorithm) {\n          case 'ecPublicKey': {\n            keyObject = new KeyObject()\n            keyObject._asn1 = parsed\n            keyObject._asymmetricKeyType = 'ec'\n            keyObject._type = 'public'\n            keyObject._pem = PublicKeyInfo.encode(parsed, 'pem', { label: 'PUBLIC KEY' })\n\n            break\n          }\n          case 'rsaEncryption': {\n            type = 'pkcs1'\n            keyObject = createPublicKey({ type, key: parsed.publicKey.data, format: 'der' })\n            break\n          }\n          default:\n            unsupported(parsed.algorithm.algorithm)\n        }\n\n        return keyObject\n      }\n      case 'pkcs1': {\n        const RSAPublicKey = asn1.get('RSAPublicKey')\n        const parsed = RSAPublicKey.decode(key, format, { label })\n\n        // special case when private pkcs1 PEM / DER is used with createPublicKey\n        if (parsed.n === BigInt(0)) {\n          return createPublicKey(createPrivateKey({ key, format, type, passphrase }))\n        }\n\n        const keyObject = new KeyObject()\n        keyObject._asn1 = parsed\n        keyObject._asymmetricKeyType = 'rsa'\n        keyObject._type = 'public'\n        keyObject._pem = RSAPublicKey.encode(parsed, 'pem', { label: 'RSA PUBLIC KEY' })\n\n        return keyObject\n      }\n      case 'pkcs8':\n      case 'sec1':\n        return createPublicKey(createPrivateKey({ format, key, type, passphrase }))\n      default:\n        throw new TypeError(`The value ${type} is invalid for option \"type\"`)\n    }\n  }\n\n  createPrivateKey = (input, hints) => {\n    if (typeof input === 'string' || Buffer.isBuffer(input)) {\n      input = { key: input, format: 'pem' }\n    }\n\n    if (!isObject(input)) {\n      throw new TypeError('input must be a string, Buffer or an object')\n    }\n\n    const { format, passphrase } = input\n    let { key, type } = input\n\n    if (typeof key !== 'string' && !Buffer.isBuffer(key)) {\n      throw new TypeError('key must be a string or Buffer')\n    }\n\n    if (passphrase !== undefined) {\n      throw new errors.JOSENotSupported('encrypted private keys are not supported in your Node.js runtime version')\n    }\n\n    if (format !== 'pem' && format !== 'der') {\n      throw new TypeError('format must be one of \"pem\" or \"der\"')\n    }\n\n    let label\n    if (format === 'pem') {\n      key = key.toString()\n      switch (key.split(/\\r?\\n/g)[0].toString()) {\n        case '-----BEGIN PRIVATE KEY-----':\n          type = 'pkcs8'\n          label = 'PRIVATE KEY'\n          break\n        case '-----BEGIN EC PRIVATE KEY-----':\n          type = 'sec1'\n          label = 'EC PRIVATE KEY'\n          break\n        case '-----BEGIN RSA PRIVATE KEY-----':\n          type = 'pkcs1'\n          label = 'RSA PRIVATE KEY'\n          break\n        default:\n          throw new TypeError('unknown/unsupported PEM type')\n      }\n    }\n\n    switch (type) {\n      case 'pkcs8': {\n        const PrivateKeyInfo = asn1.get('PrivateKeyInfo')\n        const parsed = PrivateKeyInfo.decode(key, format, { label })\n\n        let type, keyObject\n        switch (parsed.algorithm.algorithm) {\n          case 'ecPublicKey': {\n            type = 'sec1'\n            keyObject = createPrivateKey({ type, key: parsed.privateKey, format: 'der' }, { [namedCurve]: parsed.algorithm.parameters.value })\n            break\n          }\n          case 'rsaEncryption': {\n            type = 'pkcs1'\n            keyObject = createPrivateKey({ type, key: parsed.privateKey, format: 'der' })\n            break\n          }\n          default:\n            unsupported(parsed.algorithm.algorithm)\n        }\n\n        keyObject._pkcs8 = key\n        return keyObject\n      }\n      case 'pkcs1': {\n        const RSAPrivateKey = asn1.get('RSAPrivateKey')\n        const parsed = RSAPrivateKey.decode(key, format, { label })\n\n        const keyObject = new KeyObject()\n        keyObject._asn1 = parsed\n        keyObject._asymmetricKeyType = 'rsa'\n        keyObject._type = 'private'\n        keyObject._pem = RSAPrivateKey.encode(parsed, 'pem', { label: 'RSA PRIVATE KEY' })\n\n        return keyObject\n      }\n      case 'sec1': {\n        const ECPrivateKey = asn1.get('ECPrivateKey')\n        let parsed = ECPrivateKey.decode(key, format, { label })\n\n        if (!('parameters' in parsed) && !hints[namedCurve]) {\n          throw new Error('invalid sec1')\n        } else if (!('parameters' in parsed)) {\n          parsed = { ...parsed, parameters: { type: 'namedCurve', value: hints[namedCurve] } }\n        }\n\n        const keyObject = new KeyObject()\n        keyObject._asn1 = parsed\n        keyObject._asymmetricKeyType = 'ec'\n        keyObject._type = 'private'\n        keyObject._pem = ECPrivateKey.encode(parsed, 'pem', { label: 'EC PRIVATE KEY' })\n\n        return keyObject\n      }\n      default:\n        throw new TypeError(`The value ${type} is invalid for option \"type\"`)\n    }\n  }\n}\n\nmodule.exports = { createPublicKey, createPrivateKey, createSecretKey, KeyObject, asInput }\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/help/key_object.js?")},"./node_modules/jose/lib/help/key_utils.js":
/*!*************************************************!*\
  !*** ./node_modules/jose/lib/help/key_utils.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { EOL } = __webpack_require__(/*! os */ \"os\")\n\nconst errors = __webpack_require__(/*! ../errors */ \"./node_modules/jose/lib/errors.js\")\n\nconst { keyObjectSupported } = __webpack_require__(/*! ./runtime_support */ \"./node_modules/jose/lib/help/runtime_support.js\")\nconst { createPublicKey } = __webpack_require__(/*! ./key_object */ \"./node_modules/jose/lib/help/key_object.js\")\nconst base64url = __webpack_require__(/*! ./base64url */ \"./node_modules/jose/lib/help/base64url.js\")\nconst asn1 = __webpack_require__(/*! ./asn1 */ \"./node_modules/jose/lib/help/asn1/index.js\")\nconst computePrimes = __webpack_require__(/*! ./rsa_primes */ \"./node_modules/jose/lib/help/rsa_primes.js\")\nconst { OKP_CURVES, EC_CURVES } = __webpack_require__(/*! ../registry */ \"./node_modules/jose/lib/registry/index.js\")\n\nconst formatPem = (base64pem, descriptor) => `-----BEGIN ${descriptor} KEY-----${EOL}${(base64pem.match(/.{1,64}/g) || []).join(EOL)}${EOL}-----END ${descriptor} KEY-----`\n\nconst okpToJWK = {\n  private (crv, keyObject) {\n    const der = keyObject.export({ type: 'pkcs8', format: 'der' })\n    const OneAsymmetricKey = asn1.get('OneAsymmetricKey')\n    const { privateKey: { privateKey: d } } = OneAsymmetricKey.decode(der)\n\n    return {\n      ...okpToJWK.public(crv, createPublicKey(keyObject)),\n      d: base64url.encodeBuffer(d)\n    }\n  },\n  public (crv, keyObject) {\n    const der = keyObject.export({ type: 'spki', format: 'der' })\n\n    const PublicKeyInfo = asn1.get('PublicKeyInfo')\n\n    const { publicKey: { data: x } } = PublicKeyInfo.decode(der)\n\n    return {\n      kty: 'OKP',\n      crv,\n      x: base64url.encodeBuffer(x)\n    }\n  }\n}\n\nconst keyObjectToJWK = {\n  rsa: {\n    private (keyObject) {\n      const der = keyObject.export({ type: 'pkcs8', format: 'der' })\n\n      const PrivateKeyInfo = asn1.get('PrivateKeyInfo')\n      const RSAPrivateKey = asn1.get('RSAPrivateKey')\n\n      const { privateKey } = PrivateKeyInfo.decode(der)\n      const { version, n, e, d, p, q, dp, dq, qi } = RSAPrivateKey.decode(privateKey)\n\n      if (version !== 'two-prime') {\n        throw new errors.JOSENotSupported('Private RSA keys with more than two primes are not supported')\n      }\n\n      return {\n        kty: 'RSA',\n        n: base64url.encodeBigInt(n),\n        e: base64url.encodeBigInt(e),\n        d: base64url.encodeBigInt(d),\n        p: base64url.encodeBigInt(p),\n        q: base64url.encodeBigInt(q),\n        dp: base64url.encodeBigInt(dp),\n        dq: base64url.encodeBigInt(dq),\n        qi: base64url.encodeBigInt(qi)\n      }\n    },\n    public (keyObject) {\n      const der = keyObject.export({ type: 'spki', format: 'der' })\n\n      const PublicKeyInfo = asn1.get('PublicKeyInfo')\n      const RSAPublicKey = asn1.get('RSAPublicKey')\n\n      const { publicKey: { data: publicKey } } = PublicKeyInfo.decode(der)\n      const { n, e } = RSAPublicKey.decode(publicKey)\n\n      return {\n        kty: 'RSA',\n        n: base64url.encodeBigInt(n),\n        e: base64url.encodeBigInt(e)\n      }\n    }\n  },\n  ec: {\n    private (keyObject) {\n      const der = keyObject.export({ type: 'pkcs8', format: 'der' })\n\n      const PrivateKeyInfo = asn1.get('PrivateKeyInfo')\n      const ECPrivateKey = asn1.get('ECPrivateKey')\n\n      const { privateKey, algorithm: { parameters: { value: crv } } } = PrivateKeyInfo.decode(der)\n      const { privateKey: d, publicKey } = ECPrivateKey.decode(privateKey)\n\n      if (typeof publicKey === 'undefined') {\n        if (keyObjectSupported) {\n          return {\n            ...keyObjectToJWK.ec.public(createPublicKey(keyObject)),\n            d: base64url.encodeBuffer(d)\n          }\n        }\n\n        throw new errors.JOSENotSupported('Private EC keys without the public key embedded are not supported in your Node.js runtime version')\n      }\n\n      const x = publicKey.data.slice(1, ((publicKey.data.length - 1) / 2) + 1)\n      const y = publicKey.data.slice(((publicKey.data.length - 1) / 2) + 1)\n\n      return {\n        kty: 'EC',\n        crv,\n        d: base64url.encodeBuffer(d),\n        x: base64url.encodeBuffer(x),\n        y: base64url.encodeBuffer(y)\n      }\n    },\n    public (keyObject) {\n      const der = keyObject.export({ type: 'spki', format: 'der' })\n\n      const PublicKeyInfo = asn1.get('PublicKeyInfo')\n\n      const { publicKey: { data: publicKey }, algorithm: { parameters: { value: crv } } } = PublicKeyInfo.decode(der)\n\n      const x = publicKey.slice(1, ((publicKey.length - 1) / 2) + 1)\n      const y = publicKey.slice(((publicKey.length - 1) / 2) + 1)\n\n      return {\n        kty: 'EC',\n        crv,\n        x: base64url.encodeBuffer(x),\n        y: base64url.encodeBuffer(y)\n      }\n    }\n  },\n  ed25519: {\n    private (keyObject) {\n      return okpToJWK.private('Ed25519', keyObject)\n    },\n    public (keyObject) {\n      return okpToJWK.public('Ed25519', keyObject)\n    }\n  },\n  ed448: {\n    private (keyObject) {\n      return okpToJWK.private('Ed448', keyObject)\n    },\n    public (keyObject) {\n      return okpToJWK.public('Ed448', keyObject)\n    }\n  },\n  x25519: {\n    private (keyObject) {\n      return okpToJWK.private('X25519', keyObject)\n    },\n    public (keyObject) {\n      return okpToJWK.public('X25519', keyObject)\n    }\n  },\n  x448: {\n    private (keyObject) {\n      return okpToJWK.private('X448', keyObject)\n    },\n    public (keyObject) {\n      return okpToJWK.public('X448', keyObject)\n    }\n  }\n}\n\nmodule.exports.keyObjectToJWK = (keyObject) => {\n  if (keyObject.type === 'private') {\n    return keyObjectToJWK[keyObject.asymmetricKeyType].private(keyObject)\n  }\n\n  return keyObjectToJWK[keyObject.asymmetricKeyType].public(keyObject)\n}\n\nconst concatEcPublicKey = (x, y) => ({\n  unused: 0,\n  data: Buffer.concat([\n    Buffer.alloc(1, 4),\n    base64url.decodeToBuffer(x),\n    base64url.decodeToBuffer(y)\n  ])\n})\n\nconst jwkToPem = {\n  RSA: {\n    private (jwk, { calculateMissingRSAPrimes }) {\n      const RSAPrivateKey = asn1.get('RSAPrivateKey')\n\n      if ('oth' in jwk) {\n        throw new errors.JOSENotSupported('Private RSA keys with more than two primes are not supported')\n      }\n\n      if (jwk.p || jwk.q || jwk.dp || jwk.dq || jwk.qi) {\n        if (!(jwk.p && jwk.q && jwk.dp && jwk.dq && jwk.qi)) {\n          throw new errors.JWKInvalid('all other private key parameters must be present when any one of them is present')\n        }\n      } else if (calculateMissingRSAPrimes) {\n        jwk = computePrimes(jwk)\n      } else if (!calculateMissingRSAPrimes) {\n        throw new errors.JOSENotSupported('importing private RSA keys without all other private key parameters is not enabled, see documentation and its advisory on how and when its ok to enable it')\n      }\n\n      return RSAPrivateKey.encode({\n        version: 0,\n        n: BigInt(`0x${base64url.decodeToBuffer(jwk.n).toString('hex')}`),\n        e: BigInt(`0x${base64url.decodeToBuffer(jwk.e).toString('hex')}`),\n        d: BigInt(`0x${base64url.decodeToBuffer(jwk.d).toString('hex')}`),\n        p: BigInt(`0x${base64url.decodeToBuffer(jwk.p).toString('hex')}`),\n        q: BigInt(`0x${base64url.decodeToBuffer(jwk.q).toString('hex')}`),\n        dp: BigInt(`0x${base64url.decodeToBuffer(jwk.dp).toString('hex')}`),\n        dq: BigInt(`0x${base64url.decodeToBuffer(jwk.dq).toString('hex')}`),\n        qi: BigInt(`0x${base64url.decodeToBuffer(jwk.qi).toString('hex')}`)\n      }, 'pem', { label: 'RSA PRIVATE KEY' })\n    },\n    public (jwk) {\n      const RSAPublicKey = asn1.get('RSAPublicKey')\n\n      return RSAPublicKey.encode({\n        version: 0,\n        n: BigInt(`0x${base64url.decodeToBuffer(jwk.n).toString('hex')}`),\n        e: BigInt(`0x${base64url.decodeToBuffer(jwk.e).toString('hex')}`)\n      }, 'pem', { label: 'RSA PUBLIC KEY' })\n    }\n  },\n  EC: {\n    private (jwk) {\n      const ECPrivateKey = asn1.get('ECPrivateKey')\n\n      return ECPrivateKey.encode({\n        version: 1,\n        privateKey: base64url.decodeToBuffer(jwk.d),\n        parameters: { type: 'namedCurve', value: jwk.crv },\n        publicKey: concatEcPublicKey(jwk.x, jwk.y)\n      }, 'pem', { label: 'EC PRIVATE KEY' })\n    },\n    public (jwk) {\n      const PublicKeyInfo = asn1.get('PublicKeyInfo')\n\n      return PublicKeyInfo.encode({\n        algorithm: {\n          algorithm: 'ecPublicKey',\n          parameters: { type: 'namedCurve', value: jwk.crv }\n        },\n        publicKey: concatEcPublicKey(jwk.x, jwk.y)\n      }, 'pem', { label: 'PUBLIC KEY' })\n    }\n  },\n  OKP: {\n    private (jwk) {\n      const OneAsymmetricKey = asn1.get('OneAsymmetricKey')\n\n      const b64 = OneAsymmetricKey.encode({\n        version: 0,\n        privateKey: { privateKey: base64url.decodeToBuffer(jwk.d) },\n        algorithm: { algorithm: jwk.crv }\n      }, 'der')\n\n      // TODO: WHYYY? https://github.com/indutny/asn1.js/issues/110\n      b64.write('04', 12, 1, 'hex')\n\n      return formatPem(b64.toString('base64'), 'PRIVATE')\n    },\n    public (jwk) {\n      const PublicKeyInfo = asn1.get('PublicKeyInfo')\n\n      return PublicKeyInfo.encode({\n        algorithm: { algorithm: jwk.crv },\n        publicKey: {\n          unused: 0,\n          data: base64url.decodeToBuffer(jwk.x)\n        }\n      }, 'pem', { label: 'PUBLIC KEY' })\n    }\n  }\n}\n\nmodule.exports.jwkToPem = (jwk, { calculateMissingRSAPrimes = false } = {}) => {\n  switch (jwk.kty) {\n    case 'EC':\n      if (!EC_CURVES.has(jwk.crv)) {\n        throw new errors.JOSENotSupported(`unsupported EC key curve: ${jwk.crv}`)\n      }\n      break\n    case 'OKP':\n      if (!OKP_CURVES.has(jwk.crv)) {\n        throw new errors.JOSENotSupported(`unsupported OKP key curve: ${jwk.crv}`)\n      }\n      break\n    case 'RSA':\n      break\n    default:\n      throw new errors.JOSENotSupported(`unsupported key type: ${jwk.kty}`)\n  }\n\n  if (jwk.d) {\n    return jwkToPem[jwk.kty].private(jwk, { calculateMissingRSAPrimes })\n  }\n\n  return jwkToPem[jwk.kty].public(jwk)\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/help/key_utils.js?")},"./node_modules/jose/lib/help/node_alg.js":
/*!************************************************!*\
  !*** ./node_modules/jose/lib/help/node_alg.js ***!
  \************************************************/module=>{eval("module.exports = alg => `sha${alg.substr(2, 3)}`\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/help/node_alg.js?")},"./node_modules/jose/lib/help/rsa_primes.js":
/*!**************************************************!*\
  !*** ./node_modules/jose/lib/help/rsa_primes.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { randomBytes } = __webpack_require__(/*! crypto */ \"crypto\")\n\nconst base64url = __webpack_require__(/*! ./base64url */ \"./node_modules/jose/lib/help/base64url.js\")\nconst errors = __webpack_require__(/*! ../errors */ \"./node_modules/jose/lib/errors.js\")\n\nconst ZERO = BigInt(0)\nconst ONE = BigInt(1)\nconst TWO = BigInt(2)\n\nconst toJWKParameter = (n) => {\n  const hex = n.toString(16)\n  return base64url.encodeBuffer(Buffer.from(hex.length % 2 ? `0${hex}` : hex, 'hex'))\n}\nconst fromBuffer = buf => BigInt(`0x${buf.toString('hex')}`)\nconst bitLength = n => n.toString(2).length\n\nconst eGcdX = (a, b) => {\n  let x = ZERO\n  let y = ONE\n  let u = ONE\n  let v = ZERO\n\n  while (a !== ZERO) {\n    const q = b / a\n    const r = b % a\n    const m = x - (u * q)\n    const n = y - (v * q)\n    b = a\n    a = r\n    x = u\n    y = v\n    u = m\n    v = n\n  }\n  return x\n}\n\nconst gcd = (a, b) => {\n  let shift = ZERO\n  while (!((a | b) & ONE)) {\n    a >>= ONE\n    b >>= ONE\n    shift++\n  }\n  while (!(a & ONE)) {\n    a >>= ONE\n  }\n  do {\n    while (!(b & ONE)) {\n      b >>= ONE\n    }\n    if (a > b) {\n      const x = a\n      a = b\n      b = x\n    }\n    b -= a\n  } while (b)\n\n  return a << shift\n}\n\nconst modPow = (a, b, n) => {\n  a = toZn(a, n)\n  let result = ONE\n  let x = a\n  while (b > 0) {\n    const leastSignificantBit = b % TWO\n    b = b / TWO\n    if (leastSignificantBit === ONE) {\n      result = result * x\n      result = result % n\n    }\n    x = x * x\n    x = x % n\n  }\n  return result\n}\n\nconst randBetween = (min, max) => {\n  const interval = max - min\n  const bitLen = bitLength(interval)\n  let rnd\n  do {\n    rnd = fromBuffer(randBits(bitLen))\n  } while (rnd > interval)\n  return rnd + min\n}\n\nconst randBits = (bitLength) => {\n  const byteLength = Math.ceil(bitLength / 8)\n  const rndBytes = randomBytes(byteLength)\n  // Fill with 0's the extra bits\n  rndBytes[0] = rndBytes[0] & (2 ** (bitLength % 8) - 1)\n  return rndBytes\n}\n\nconst toZn = (a, n) => {\n  a = a % n\n  return (a < 0) ? a + n : a\n}\n\nconst odd = (n) => {\n  let r = n\n  while (r % TWO === ZERO) {\n    r = r / TWO\n  }\n  return r\n}\n\n// not sold on these values\nconst maxCountWhileNoY = 30\nconst maxCountWhileInot0 = 22\n\nconst getPrimeFactors = (e, d, n) => {\n  const r = odd(e * d - ONE)\n\n  let countWhileNoY = 0\n  let y\n  do {\n    countWhileNoY++\n    if (countWhileNoY === maxCountWhileNoY) {\n      throw new errors.JWKImportFailed('failed to calculate missing primes')\n    }\n\n    let countWhileInot0 = 0\n    let i = modPow(randBetween(TWO, n), r, n)\n    let o = ZERO\n    while (i !== ONE) {\n      countWhileInot0++\n      if (countWhileInot0 === maxCountWhileInot0) {\n        throw new errors.JWKImportFailed('failed to calculate missing primes')\n      }\n      o = i\n      i = (i * i) % n\n    }\n    if (o !== (n - ONE)) {\n      y = o\n    }\n  } while (!y)\n\n  const p = gcd(y - ONE, n)\n  const q = n / p\n\n  return p > q ? { p, q } : { p: q, q: p }\n}\n\nmodule.exports = (jwk) => {\n  const e = fromBuffer(base64url.decodeToBuffer(jwk.e))\n  const d = fromBuffer(base64url.decodeToBuffer(jwk.d))\n  const n = fromBuffer(base64url.decodeToBuffer(jwk.n))\n\n  if (d >= n) {\n    throw new errors.JWKInvalid('invalid RSA private exponent')\n  }\n\n  const { p, q } = getPrimeFactors(e, d, n)\n  const dp = d % (p - ONE)\n  const dq = d % (q - ONE)\n  const qi = toZn(eGcdX(toZn(q, p), p), p)\n\n  return {\n    ...jwk,\n    p: toJWKParameter(p),\n    q: toJWKParameter(q),\n    dp: toJWKParameter(dp),\n    dq: toJWKParameter(dq),\n    qi: toJWKParameter(qi)\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/help/rsa_primes.js?")},"./node_modules/jose/lib/help/runtime_support.js":
/*!*******************************************************!*\
  !*** ./node_modules/jose/lib/help/runtime_support.js ***!
  \*******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { diffieHellman, KeyObject, sign, verify } = __webpack_require__(/*! crypto */ \"crypto\")\n\nconst [major, minor] = process.version.substr(1).split('.').map(x => parseInt(x, 10))\n\nmodule.exports = {\n  oaepHashSupported: major > 12 || (major === 12 && minor >= 9),\n  keyObjectSupported: !!KeyObject && major >= 12,\n  edDSASupported: !!sign && !!verify,\n  dsaEncodingSupported: major > 13 || (major === 13 && minor >= 2) || (major === 12 && minor >= 16),\n  improvedDH: !!diffieHellman\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/help/runtime_support.js?")},"./node_modules/jose/lib/help/secs.js":
/*!********************************************!*\
  !*** ./node_modules/jose/lib/help/secs.js ***!
  \********************************************/module=>{eval("const minute = 60\nconst hour = minute * 60\nconst day = hour * 24\nconst week = day * 7\nconst year = day * 365.25\n\nconst REGEX = /^(\\d+|\\d+\\.\\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)$/i\n\nmodule.exports = (str) => {\n  const matched = REGEX.exec(str)\n\n  if (!matched) {\n    throw new TypeError(`invalid time period format (\"${str}\")`)\n  }\n\n  const value = parseFloat(matched[1])\n  const unit = matched[2].toLowerCase()\n\n  switch (unit) {\n    case 'sec':\n    case 'secs':\n    case 'second':\n    case 'seconds':\n    case 's':\n      return Math.round(value)\n    case 'minute':\n    case 'minutes':\n    case 'min':\n    case 'mins':\n    case 'm':\n      return Math.round(value * minute)\n    case 'hour':\n    case 'hours':\n    case 'hr':\n    case 'hrs':\n    case 'h':\n      return Math.round(value * hour)\n    case 'day':\n    case 'days':\n    case 'd':\n      return Math.round(value * day)\n    case 'week':\n    case 'weeks':\n    case 'w':\n      return Math.round(value * week)\n    case 'year':\n    case 'years':\n    case 'yr':\n    case 'yrs':\n    case 'y':\n      return Math.round(value * year)\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/help/secs.js?")},"./node_modules/jose/lib/help/timing_safe_equal.js":
/*!*********************************************************!*\
  !*** ./node_modules/jose/lib/help/timing_safe_equal.js ***!
  \*********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const { timingSafeEqual: TSE } = __webpack_require__(/*! crypto */ "crypto")\n\nconst paddedBuffer = (input, length) => {\n  if (input.length === length) {\n    return input\n  }\n\n  const buffer = Buffer.alloc(length)\n  input.copy(buffer)\n  return buffer\n}\n\nconst timingSafeEqual = (a, b) => {\n  const length = Math.max(a.length, b.length)\n  return TSE(paddedBuffer(a, length), paddedBuffer(b, length))\n}\n\nmodule.exports = timingSafeEqual\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/help/timing_safe_equal.js?')},"./node_modules/jose/lib/help/uint64be.js":
/*!************************************************!*\
  !*** ./node_modules/jose/lib/help/uint64be.js ***!
  \************************************************/module=>{eval("const MAX_INT32 = Math.pow(2, 32)\n\nmodule.exports = (value, buf = Buffer.allocUnsafe(8)) => {\n  const high = Math.floor(value / MAX_INT32)\n  const low = value % MAX_INT32\n\n  buf.writeUInt32BE(high, 0)\n  buf.writeUInt32BE(low, 4)\n  return buf\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/help/uint64be.js?")},"./node_modules/jose/lib/help/validate_crit.js":
/*!*****************************************************!*\
  !*** ./node_modules/jose/lib/help/validate_crit.js ***!
  \*****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { JOSECritNotUnderstood, JWSInvalid } = __webpack_require__(/*! ../errors */ \"./node_modules/jose/lib/errors.js\")\n\nconst DEFINED = new Set([\n  'alg', 'jku', 'jwk', 'kid', 'x5u', 'x5c', 'x5t', 'x5t#S256', 'typ', 'cty',\n  'crit', 'enc', 'zip', 'epk', 'apu', 'apv', 'iv', 'tag', 'p2s', 'p2c'\n])\n\nmodule.exports = function validateCrit (Err, protectedHeader, unprotectedHeader, understood) {\n  if (protectedHeader && 'crit' in protectedHeader) {\n    if (\n      !Array.isArray(protectedHeader.crit) ||\n      protectedHeader.crit.length === 0 ||\n      protectedHeader.crit.some(s => typeof s !== 'string' || !s)\n    ) {\n      throw new Err('\"crit\" Header Parameter MUST be an array of non-empty strings when present')\n    }\n    const whitelisted = new Set(understood)\n    const combined = { ...protectedHeader, ...unprotectedHeader }\n    protectedHeader.crit.forEach((parameter) => {\n      if (DEFINED.has(parameter)) {\n        throw new Err(`The critical list contains a non-extension Header Parameter ${parameter}`)\n      }\n      if (!whitelisted.has(parameter)) {\n        throw new JOSECritNotUnderstood(`critical \"${parameter}\" is not understood`)\n      }\n      if (parameter === 'b64') {\n        if (!('b64' in protectedHeader)) {\n          throw new JWSInvalid('\"b64\" critical parameter must be integrity protected')\n        }\n        if (typeof protectedHeader.b64 !== 'boolean') {\n          throw new JWSInvalid('\"b64\" critical parameter must be a boolean')\n        }\n      } else if (!(parameter in combined)) {\n        throw new Err(`critical parameter \"${parameter}\" is missing`)\n      }\n    })\n  }\n  if (unprotectedHeader && 'crit' in unprotectedHeader) {\n    throw new Err('\"crit\" Header Parameter MUST be integrity protected when present')\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/help/validate_crit.js?")},"./node_modules/jose/lib/index.js":
/*!****************************************!*\
  !*** ./node_modules/jose/lib/index.js ***!
  \****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('module.exports = {\n  JWE: __webpack_require__(/*! ./jwe */ "./node_modules/jose/lib/jwe/index.js"),\n  JWK: __webpack_require__(/*! ./jwk */ "./node_modules/jose/lib/jwk/index.js"),\n  JWKS: __webpack_require__(/*! ./jwks */ "./node_modules/jose/lib/jwks/index.js"),\n  JWS: __webpack_require__(/*! ./jws */ "./node_modules/jose/lib/jws/index.js"),\n  JWT: __webpack_require__(/*! ./jwt */ "./node_modules/jose/lib/jwt/index.js"),\n  errors: __webpack_require__(/*! ./errors */ "./node_modules/jose/lib/errors.js")\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/index.js?')},"./node_modules/jose/lib/jwa/aes_cbc_hmac_sha2.js":
/*!********************************************************!*\
  !*** ./node_modules/jose/lib/jwa/aes_cbc_hmac_sha2.js ***!
  \********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { createCipheriv, createDecipheriv, getCiphers } = __webpack_require__(/*! crypto */ \"crypto\")\n\nconst uint64be = __webpack_require__(/*! ../help/uint64be */ \"./node_modules/jose/lib/help/uint64be.js\")\nconst timingSafeEqual = __webpack_require__(/*! ../help/timing_safe_equal */ \"./node_modules/jose/lib/help/timing_safe_equal.js\")\nconst { KEYOBJECT } = __webpack_require__(/*! ../help/consts */ \"./node_modules/jose/lib/help/consts.js\")\nconst { JWEInvalid, JWEDecryptionFailed } = __webpack_require__(/*! ../errors */ \"./node_modules/jose/lib/errors.js\")\n\nconst checkInput = function (size, iv, tag) {\n  if (iv.length !== 16) {\n    throw new JWEInvalid('invalid iv')\n  }\n  if (arguments.length === 3) {\n    if (tag.length !== size / 8) {\n      throw new JWEInvalid('invalid tag')\n    }\n  }\n}\n\nconst encrypt = (size, sign, { [KEYOBJECT]: keyObject }, cleartext, { iv, aad = Buffer.alloc(0) }) => {\n  const key = keyObject.export()\n  checkInput(size, iv)\n\n  const keySize = size / 8\n  const encKey = key.slice(keySize)\n  const cipher = createCipheriv(`aes-${size}-cbc`, encKey, iv)\n  const ciphertext = Buffer.concat([cipher.update(cleartext), cipher.final()])\n  const macData = Buffer.concat([aad, iv, ciphertext, uint64be(aad.length * 8)])\n\n  const macKey = key.slice(0, keySize)\n  const tag = sign({ [KEYOBJECT]: macKey }, macData).slice(0, keySize)\n\n  return { ciphertext, tag }\n}\n\nconst decrypt = (size, sign, { [KEYOBJECT]: keyObject }, ciphertext, { iv, tag = Buffer.alloc(0), aad = Buffer.alloc(0) }) => {\n  checkInput(size, iv, tag)\n\n  const keySize = size / 8\n  const key = keyObject.export()\n  const encKey = key.slice(keySize)\n  const macKey = key.slice(0, keySize)\n\n  const macData = Buffer.concat([aad, iv, ciphertext, uint64be(aad.length * 8)])\n  const expectedTag = sign({ [KEYOBJECT]: macKey }, macData, tag).slice(0, keySize)\n  const macCheckPassed = timingSafeEqual(tag, expectedTag)\n\n  if (!macCheckPassed) {\n    throw new JWEDecryptionFailed()\n  }\n\n  let cleartext\n  try {\n    const cipher = createDecipheriv(`aes-${size}-cbc`, encKey, iv)\n    cleartext = Buffer.concat([cipher.update(ciphertext), cipher.final()])\n  } catch (err) {}\n\n  if (!cleartext) {\n    throw new JWEDecryptionFailed()\n  }\n\n  return cleartext\n}\n\nmodule.exports = (JWA, JWK) => {\n  ['A128CBC-HS256', 'A192CBC-HS384', 'A256CBC-HS512'].forEach((jwaAlg) => {\n    const size = parseInt(jwaAlg.substr(1, 3), 10)\n    const sign = JWA.sign.get(`HS${size * 2}`)\n    if (getCiphers().includes(`aes-${size}-cbc`)) {\n      JWA.encrypt.set(jwaAlg, encrypt.bind(undefined, size, sign))\n      JWA.decrypt.set(jwaAlg, decrypt.bind(undefined, size, sign))\n      JWK.oct.encrypt[jwaAlg] = JWK.oct.decrypt[jwaAlg] = key => (key.use === 'enc' || key.use === undefined) && key.length / 2 === size\n    }\n  })\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwa/aes_cbc_hmac_sha2.js?")},"./node_modules/jose/lib/jwa/aes_gcm.js":
/*!**********************************************!*\
  !*** ./node_modules/jose/lib/jwa/aes_gcm.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { createCipheriv, createDecipheriv, getCiphers } = __webpack_require__(/*! crypto */ \"crypto\")\n\nconst { KEYOBJECT } = __webpack_require__(/*! ../help/consts */ \"./node_modules/jose/lib/help/consts.js\")\nconst { JWEInvalid, JWEDecryptionFailed } = __webpack_require__(/*! ../errors */ \"./node_modules/jose/lib/errors.js\")\nconst { asInput } = __webpack_require__(/*! ../help/key_object */ \"./node_modules/jose/lib/help/key_object.js\")\n\nconst checkInput = function (size, iv, tag) {\n  if (iv.length !== 12) {\n    throw new JWEInvalid('invalid iv')\n  }\n  if (arguments.length === 3) {\n    if (tag.length !== 16) {\n      throw new JWEInvalid('invalid tag')\n    }\n  }\n}\n\nconst encrypt = (size, { [KEYOBJECT]: keyObject }, cleartext, { iv, aad = Buffer.alloc(0) }) => {\n  const key = asInput(keyObject, false)\n  checkInput(size, iv)\n\n  const cipher = createCipheriv(`aes-${size}-gcm`, key, iv, { authTagLength: 16 })\n  cipher.setAAD(aad)\n\n  const ciphertext = Buffer.concat([cipher.update(cleartext), cipher.final()])\n  const tag = cipher.getAuthTag()\n\n  return { ciphertext, tag }\n}\n\nconst decrypt = (size, { [KEYOBJECT]: keyObject }, ciphertext, { iv, tag = Buffer.alloc(0), aad = Buffer.alloc(0) }) => {\n  const key = asInput(keyObject, false)\n  checkInput(size, iv, tag)\n\n  try {\n    const cipher = createDecipheriv(`aes-${size}-gcm`, key, iv, { authTagLength: 16 })\n    cipher.setAuthTag(tag)\n    cipher.setAAD(aad)\n\n    return Buffer.concat([cipher.update(ciphertext), cipher.final()])\n  } catch (err) {\n    throw new JWEDecryptionFailed()\n  }\n}\n\nmodule.exports = (JWA, JWK) => {\n  ['A128GCM', 'A192GCM', 'A256GCM'].forEach((jwaAlg) => {\n    const size = parseInt(jwaAlg.substr(1, 3), 10)\n    if (getCiphers().includes(`aes-${size}-gcm`)) {\n      JWA.encrypt.set(jwaAlg, encrypt.bind(undefined, size))\n      JWA.decrypt.set(jwaAlg, decrypt.bind(undefined, size))\n      JWK.oct.encrypt[jwaAlg] = JWK.oct.decrypt[jwaAlg] = key => (key.use === 'enc' || key.use === undefined) && key.length === size\n    }\n  })\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwa/aes_gcm.js?")},"./node_modules/jose/lib/jwa/aes_gcm_kw.js":
/*!*************************************************!*\
  !*** ./node_modules/jose/lib/jwa/aes_gcm_kw.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const generateIV = __webpack_require__(/*! ../help/generate_iv */ \"./node_modules/jose/lib/help/generate_iv.js\")\nconst base64url = __webpack_require__(/*! ../help/base64url */ \"./node_modules/jose/lib/help/base64url.js\")\n\nmodule.exports = (JWA, JWK) => {\n  ['A128GCMKW', 'A192GCMKW', 'A256GCMKW'].forEach((jwaAlg) => {\n    const encAlg = jwaAlg.substr(0, 7)\n    const size = parseInt(jwaAlg.substr(1, 3), 10)\n    const encrypt = JWA.encrypt.get(encAlg)\n    const decrypt = JWA.decrypt.get(encAlg)\n\n    if (encrypt && decrypt) {\n      JWA.keyManagementEncrypt.set(jwaAlg, (key, payload) => {\n        const iv = generateIV(jwaAlg)\n        const { ciphertext, tag } = encrypt(key, payload, { iv })\n        return {\n          wrapped: ciphertext,\n          header: { tag: base64url.encodeBuffer(tag), iv: base64url.encodeBuffer(iv) }\n        }\n      })\n      JWA.keyManagementDecrypt.set(jwaAlg, decrypt)\n      JWK.oct.wrapKey[jwaAlg] = JWK.oct.unwrapKey[jwaAlg] = key => (key.use === 'enc' || key.use === undefined) && key.length === size\n    }\n  })\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwa/aes_gcm_kw.js?")},"./node_modules/jose/lib/jwa/aes_kw.js":
/*!*********************************************!*\
  !*** ./node_modules/jose/lib/jwa/aes_kw.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { createCipheriv, createDecipheriv, getCiphers } = __webpack_require__(/*! crypto */ \"crypto\")\n\nconst { KEYOBJECT } = __webpack_require__(/*! ../help/consts */ \"./node_modules/jose/lib/help/consts.js\")\nconst { asInput } = __webpack_require__(/*! ../help/key_object */ \"./node_modules/jose/lib/help/key_object.js\")\n\nconst checkInput = (data) => {\n  if (data !== undefined && data.length % 8 !== 0) {\n    throw new Error('invalid data length')\n  }\n}\n\nconst wrapKey = (alg, { [KEYOBJECT]: keyObject }, payload) => {\n  const key = asInput(keyObject, false)\n  const cipher = createCipheriv(alg, key, Buffer.alloc(8, 'a6', 'hex'))\n\n  return { wrapped: Buffer.concat([cipher.update(payload), cipher.final()]) }\n}\n\nconst unwrapKey = (alg, { [KEYOBJECT]: keyObject }, payload) => {\n  const key = asInput(keyObject, false)\n  checkInput(payload)\n  const cipher = createDecipheriv(alg, key, Buffer.alloc(8, 'a6', 'hex'))\n\n  return Buffer.concat([cipher.update(payload), cipher.final()])\n}\n\nmodule.exports = (JWA, JWK) => {\n  ['A128KW', 'A192KW', 'A256KW'].forEach((jwaAlg) => {\n    const size = parseInt(jwaAlg.substr(1, 3), 10)\n    const alg = `aes${size}-wrap`\n    if (getCiphers().includes(alg)) {\n      JWA.keyManagementEncrypt.set(jwaAlg, wrapKey.bind(undefined, alg))\n      JWA.keyManagementDecrypt.set(jwaAlg, unwrapKey.bind(undefined, alg))\n      JWK.oct.wrapKey[jwaAlg] = JWK.oct.unwrapKey[jwaAlg] = key => (key.use === 'enc' || key.use === undefined) && key.length === size\n    }\n  })\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwa/aes_kw.js?")},"./node_modules/jose/lib/jwa/ecdh/compute_secret.js":
/*!**********************************************************!*\
  !*** ./node_modules/jose/lib/jwa/ecdh/compute_secret.js ***!
  \**********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { improvedDH } = __webpack_require__(/*! ../../help/runtime_support */ \"./node_modules/jose/lib/help/runtime_support.js\")\n\nif (improvedDH) {\n  const { diffieHellman } = __webpack_require__(/*! crypto */ \"crypto\")\n\n  const { KeyObject } = __webpack_require__(/*! ../../help/key_object */ \"./node_modules/jose/lib/help/key_object.js\")\n  const importKey = __webpack_require__(/*! ../../jwk/import */ \"./node_modules/jose/lib/jwk/import.js\")\n\n  module.exports = ({ keyObject: privateKey }, publicKey) => {\n    if (!(publicKey instanceof KeyObject)) {\n      ({ keyObject: publicKey } = importKey(publicKey))\n    }\n\n    return diffieHellman({ privateKey, publicKey })\n  }\n} else {\n  const { createECDH, constants: { POINT_CONVERSION_UNCOMPRESSED } } = __webpack_require__(/*! crypto */ \"crypto\")\n\n  const base64url = __webpack_require__(/*! ../../help/base64url */ \"./node_modules/jose/lib/help/base64url.js\")\n\n  const crvToCurve = (crv) => {\n    switch (crv) {\n      case 'P-256':\n        return 'prime256v1'\n      case 'P-384':\n        return 'secp384r1'\n      case 'P-521':\n        return 'secp521r1'\n    }\n  }\n\n  const UNCOMPRESSED = Buffer.alloc(1, POINT_CONVERSION_UNCOMPRESSED)\n  const pubToBuffer = (x, y) => Buffer.concat([UNCOMPRESSED, base64url.decodeToBuffer(x), base64url.decodeToBuffer(y)])\n\n  module.exports = ({ crv, d }, { x, y }) => {\n    const curve = crvToCurve(crv)\n    const exchange = createECDH(curve)\n\n    exchange.setPrivateKey(base64url.decodeToBuffer(d))\n\n    return exchange.computeSecret(pubToBuffer(x, y))\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwa/ecdh/compute_secret.js?")},"./node_modules/jose/lib/jwa/ecdh/derive.js":
/*!**************************************************!*\
  !*** ./node_modules/jose/lib/jwa/ecdh/derive.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { createHash } = __webpack_require__(/*! crypto */ \"crypto\")\nconst ecdhComputeSecret = __webpack_require__(/*! ./compute_secret */ \"./node_modules/jose/lib/jwa/ecdh/compute_secret.js\")\n\nconst concat = (key, length, value) => {\n  const iterations = Math.ceil(length / 32)\n  let res\n\n  for (let iter = 1; iter <= iterations; iter++) {\n    const buf = Buffer.allocUnsafe(4 + key.length + value.length)\n    buf.writeUInt32BE(iter, 0)\n    key.copy(buf, 4)\n    value.copy(buf, 4 + key.length)\n    if (!res) {\n      res = createHash('sha256').update(buf).digest()\n    } else {\n      res = Buffer.concat([res, createHash('sha256').update(buf).digest()])\n    }\n  }\n\n  return res.slice(0, length)\n}\n\nconst uint32be = (value, buf = Buffer.allocUnsafe(4)) => {\n  buf.writeUInt32BE(value)\n  return buf\n}\n\nconst lengthAndInput = input => Buffer.concat([uint32be(input.length), input])\n\nmodule.exports = (alg, keyLen, privKey, pubKey, { apu = Buffer.alloc(0), apv = Buffer.alloc(0) } = {}, computeSecret = ecdhComputeSecret) => {\n  const value = Buffer.concat([\n    lengthAndInput(Buffer.from(alg)),\n    lengthAndInput(apu),\n    lengthAndInput(apv),\n    uint32be(keyLen)\n  ])\n\n  const sharedSecret = computeSecret(privKey, pubKey)\n  return concat(sharedSecret, keyLen / 8, value)\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwa/ecdh/derive.js?")},"./node_modules/jose/lib/jwa/ecdh/dir.js":
/*!***********************************************!*\
  !*** ./node_modules/jose/lib/jwa/ecdh/dir.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { improvedDH } = __webpack_require__(/*! ../../help/runtime_support */ \"./node_modules/jose/lib/help/runtime_support.js\")\nconst { KEYLENGTHS } = __webpack_require__(/*! ../../registry */ \"./node_modules/jose/lib/registry/index.js\")\nconst { generateSync } = __webpack_require__(/*! ../../jwk/generate */ \"./node_modules/jose/lib/jwk/generate.js\")\n\nconst derive = __webpack_require__(/*! ./derive */ \"./node_modules/jose/lib/jwa/ecdh/derive.js\")\n\nconst wrapKey = (key, payload, { enc }) => {\n  const epk = generateSync(key.kty, key.crv)\n\n  const derivedKey = derive(enc, KEYLENGTHS.get(enc), epk, key)\n\n  return {\n    wrapped: derivedKey,\n    header: { epk: { kty: key.kty, crv: key.crv, x: epk.x, y: epk.y } }\n  }\n}\n\nconst unwrapKey = (key, payload, header) => {\n  const { enc, epk } = header\n  return derive(enc, KEYLENGTHS.get(enc), key, epk, header)\n}\n\nmodule.exports = (JWA, JWK) => {\n  JWA.keyManagementEncrypt.set('ECDH-ES', wrapKey)\n  JWA.keyManagementDecrypt.set('ECDH-ES', unwrapKey)\n  JWK.EC.deriveKey['ECDH-ES'] = key => (key.use === 'enc' || key.use === undefined) && key.crv !== 'secp256k1'\n\n  if (improvedDH) {\n    JWK.OKP.deriveKey['ECDH-ES'] = key => (key.use === 'enc' || key.use === undefined) && key.keyObject.asymmetricKeyType.startsWith('x')\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwa/ecdh/dir.js?")},"./node_modules/jose/lib/jwa/ecdh/kw.js":
/*!**********************************************!*\
  !*** ./node_modules/jose/lib/jwa/ecdh/kw.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { improvedDH } = __webpack_require__(/*! ../../help/runtime_support */ \"./node_modules/jose/lib/help/runtime_support.js\")\nconst { KEYOBJECT } = __webpack_require__(/*! ../../help/consts */ \"./node_modules/jose/lib/help/consts.js\")\nconst { generateSync } = __webpack_require__(/*! ../../jwk/generate */ \"./node_modules/jose/lib/jwk/generate.js\")\nconst { ECDH_DERIVE_LENGTHS } = __webpack_require__(/*! ../../registry */ \"./node_modules/jose/lib/registry/index.js\")\n\nconst derive = __webpack_require__(/*! ./derive */ \"./node_modules/jose/lib/jwa/ecdh/derive.js\")\n\nconst wrapKey = (wrap, derive, key, payload) => {\n  const epk = generateSync(key.kty, key.crv)\n\n  const derivedKey = derive(epk, key, payload)\n\n  const result = wrap({ [KEYOBJECT]: derivedKey }, payload)\n  result.header = result.header || {}\n  Object.assign(result.header, { epk: { kty: key.kty, crv: key.crv, x: epk.x, y: epk.y } })\n\n  return result\n}\n\nconst unwrapKey = (unwrap, derive, key, payload, header) => {\n  const { epk } = header\n  const derivedKey = derive(key, epk, header)\n\n  return unwrap({ [KEYOBJECT]: derivedKey }, payload, header)\n}\n\nmodule.exports = (JWA, JWK) => {\n  ['ECDH-ES+A128KW', 'ECDH-ES+A192KW', 'ECDH-ES+A256KW'].forEach((jwaAlg) => {\n    const kw = jwaAlg.substr(-6)\n    const kwWrap = JWA.keyManagementEncrypt.get(kw)\n    const kwUnwrap = JWA.keyManagementDecrypt.get(kw)\n    const keylen = parseInt(jwaAlg.substr(9, 3), 10)\n    ECDH_DERIVE_LENGTHS.set(jwaAlg, keylen)\n\n    if (kwWrap && kwUnwrap) {\n      JWA.keyManagementEncrypt.set(jwaAlg, wrapKey.bind(undefined, kwWrap, derive.bind(undefined, jwaAlg, keylen)))\n      JWA.keyManagementDecrypt.set(jwaAlg, unwrapKey.bind(undefined, kwUnwrap, derive.bind(undefined, jwaAlg, keylen)))\n      JWK.EC.deriveKey[jwaAlg] = key => (key.use === 'enc' || key.use === undefined) && key.crv !== 'secp256k1'\n\n      if (improvedDH) {\n        JWK.OKP.deriveKey[jwaAlg] = key => (key.use === 'enc' || key.use === undefined) && key.keyObject.asymmetricKeyType.startsWith('x')\n      }\n    }\n  })\n}\nmodule.exports.wrapKey = wrapKey\nmodule.exports.unwrapKey = unwrapKey\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwa/ecdh/kw.js?")},"./node_modules/jose/lib/jwa/ecdsa.js":
/*!********************************************!*\
  !*** ./node_modules/jose/lib/jwa/ecdsa.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { sign: signOneShot, verify: verifyOneShot, createSign, createVerify, getCurves } = __webpack_require__(/*! crypto */ \"crypto\")\n\nconst { derToJose, joseToDer } = __webpack_require__(/*! ../help/ecdsa_signatures */ \"./node_modules/jose/lib/help/ecdsa_signatures.js\")\nconst { KEYOBJECT } = __webpack_require__(/*! ../help/consts */ \"./node_modules/jose/lib/help/consts.js\")\nconst resolveNodeAlg = __webpack_require__(/*! ../help/node_alg */ \"./node_modules/jose/lib/help/node_alg.js\")\nconst { asInput } = __webpack_require__(/*! ../help/key_object */ \"./node_modules/jose/lib/help/key_object.js\")\nconst { dsaEncodingSupported } = __webpack_require__(/*! ../help/runtime_support */ \"./node_modules/jose/lib/help/runtime_support.js\")\n\nlet sign, verify\n\nif (dsaEncodingSupported) {\n  sign = (jwaAlg, nodeAlg, { [KEYOBJECT]: keyObject }, payload) => {\n    if (typeof payload === 'string') {\n      payload = Buffer.from(payload)\n    }\n    return signOneShot(nodeAlg, payload, { key: asInput(keyObject, false), dsaEncoding: 'ieee-p1363' })\n  }\n  verify = (jwaAlg, nodeAlg, { [KEYOBJECT]: keyObject }, payload, signature) => {\n    try {\n      return verifyOneShot(nodeAlg, payload, { key: asInput(keyObject, true), dsaEncoding: 'ieee-p1363' }, signature)\n    } catch (err) {\n      return false\n    }\n  }\n} else {\n  sign = (jwaAlg, nodeAlg, { [KEYOBJECT]: keyObject }, payload) => {\n    return derToJose(createSign(nodeAlg).update(payload).sign(asInput(keyObject, false)), jwaAlg)\n  }\n  verify = (jwaAlg, nodeAlg, { [KEYOBJECT]: keyObject }, payload, signature) => {\n    try {\n      return createVerify(nodeAlg).update(payload).verify(asInput(keyObject, true), joseToDer(signature, jwaAlg))\n    } catch (err) {\n      return false\n    }\n  }\n}\n\nconst crvToAlg = (crv) => {\n  switch (crv) {\n    case 'P-256':\n      return 'ES256'\n    case 'secp256k1':\n      return 'ES256K'\n    case 'P-384':\n      return 'ES384'\n    case 'P-521':\n      return 'ES512'\n  }\n}\n\nmodule.exports = (JWA, JWK) => {\n  const algs = []\n\n  if (getCurves().includes('prime256v1')) {\n    algs.push('ES256')\n  }\n\n  if (getCurves().includes('secp256k1')) {\n    algs.push('ES256K')\n  }\n\n  if (getCurves().includes('secp384r1')) {\n    algs.push('ES384')\n  }\n\n  if (getCurves().includes('secp521r1')) {\n    algs.push('ES512')\n  }\n\n  algs.forEach((jwaAlg) => {\n    const nodeAlg = resolveNodeAlg(jwaAlg)\n    JWA.sign.set(jwaAlg, sign.bind(undefined, jwaAlg, nodeAlg))\n    JWA.verify.set(jwaAlg, verify.bind(undefined, jwaAlg, nodeAlg))\n    JWK.EC.sign[jwaAlg] = key => key.private && JWK.EC.verify[jwaAlg](key)\n    JWK.EC.verify[jwaAlg] = key => (key.use === 'sig' || key.use === undefined) && crvToAlg(key.crv) === jwaAlg\n  })\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwa/ecdsa.js?")},"./node_modules/jose/lib/jwa/eddsa.js":
/*!********************************************!*\
  !*** ./node_modules/jose/lib/jwa/eddsa.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { sign: signOneShot, verify: verifyOneShot } = __webpack_require__(/*! crypto */ \"crypto\")\n\nconst { KEYOBJECT } = __webpack_require__(/*! ../help/consts */ \"./node_modules/jose/lib/help/consts.js\")\nconst { edDSASupported } = __webpack_require__(/*! ../help/runtime_support */ \"./node_modules/jose/lib/help/runtime_support.js\")\n\nconst sign = ({ [KEYOBJECT]: keyObject }, payload) => {\n  if (typeof payload === 'string') {\n    payload = Buffer.from(payload)\n  }\n  return signOneShot(undefined, payload, keyObject)\n}\n\nconst verify = ({ [KEYOBJECT]: keyObject }, payload, signature) => {\n  return verifyOneShot(undefined, payload, keyObject, signature)\n}\n\nmodule.exports = (JWA, JWK) => {\n  if (edDSASupported) {\n    JWA.sign.set('EdDSA', sign)\n    JWA.verify.set('EdDSA', verify)\n    JWK.OKP.sign.EdDSA = key => key.private && JWK.OKP.verify.EdDSA(key)\n    JWK.OKP.verify.EdDSA = key => (key.use === 'sig' || key.use === undefined) && key.keyObject.asymmetricKeyType.startsWith('ed')\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwa/eddsa.js?")},"./node_modules/jose/lib/jwa/hmac.js":
/*!*******************************************!*\
  !*** ./node_modules/jose/lib/jwa/hmac.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const { createHmac } = __webpack_require__(/*! crypto */ "crypto")\n\nconst { KEYOBJECT } = __webpack_require__(/*! ../help/consts */ "./node_modules/jose/lib/help/consts.js")\nconst timingSafeEqual = __webpack_require__(/*! ../help/timing_safe_equal */ "./node_modules/jose/lib/help/timing_safe_equal.js")\nconst resolveNodeAlg = __webpack_require__(/*! ../help/node_alg */ "./node_modules/jose/lib/help/node_alg.js")\nconst { asInput } = __webpack_require__(/*! ../help/key_object */ "./node_modules/jose/lib/help/key_object.js")\n\nconst sign = (jwaAlg, hmacAlg, { [KEYOBJECT]: keyObject }, payload) => {\n  const hmac = createHmac(hmacAlg, asInput(keyObject, false))\n  hmac.update(payload)\n  return hmac.digest()\n}\n\nconst verify = (jwaAlg, hmacAlg, key, payload, signature) => {\n  const expected = sign(jwaAlg, hmacAlg, key, payload)\n  const actual = signature\n\n  return timingSafeEqual(actual, expected)\n}\n\nmodule.exports = (JWA, JWK) => {\n  [\'HS256\', \'HS384\', \'HS512\'].forEach((jwaAlg) => {\n    const hmacAlg = resolveNodeAlg(jwaAlg)\n    JWA.sign.set(jwaAlg, sign.bind(undefined, jwaAlg, hmacAlg))\n    JWA.verify.set(jwaAlg, verify.bind(undefined, jwaAlg, hmacAlg))\n    JWK.oct.sign[jwaAlg] = JWK.oct.verify[jwaAlg] = key => key.use === \'sig\' || key.use === undefined\n  })\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwa/hmac.js?')},"./node_modules/jose/lib/jwa/index.js":
/*!********************************************!*\
  !*** ./node_modules/jose/lib/jwa/index.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const { JWKKeySupport, JOSENotSupported } = __webpack_require__(/*! ../errors */ "./node_modules/jose/lib/errors.js")\nconst { KEY_MANAGEMENT_ENCRYPT, KEY_MANAGEMENT_DECRYPT } = __webpack_require__(/*! ../help/consts */ "./node_modules/jose/lib/help/consts.js")\n\nconst { JWA, JWK } = __webpack_require__(/*! ../registry */ "./node_modules/jose/lib/registry/index.js")\n\n// sign, verify\n__webpack_require__(/*! ./hmac */ "./node_modules/jose/lib/jwa/hmac.js")(JWA, JWK)\n__webpack_require__(/*! ./ecdsa */ "./node_modules/jose/lib/jwa/ecdsa.js")(JWA, JWK)\n__webpack_require__(/*! ./eddsa */ "./node_modules/jose/lib/jwa/eddsa.js")(JWA, JWK)\n__webpack_require__(/*! ./rsassa_pss */ "./node_modules/jose/lib/jwa/rsassa_pss.js")(JWA, JWK)\n__webpack_require__(/*! ./rsassa */ "./node_modules/jose/lib/jwa/rsassa.js")(JWA, JWK)\n__webpack_require__(/*! ./none */ "./node_modules/jose/lib/jwa/none.js")(JWA)\n\n// encrypt, decrypt\n__webpack_require__(/*! ./aes_cbc_hmac_sha2 */ "./node_modules/jose/lib/jwa/aes_cbc_hmac_sha2.js")(JWA, JWK)\n__webpack_require__(/*! ./aes_gcm */ "./node_modules/jose/lib/jwa/aes_gcm.js")(JWA, JWK)\n\n// wrapKey, unwrapKey\n__webpack_require__(/*! ./rsaes */ "./node_modules/jose/lib/jwa/rsaes.js")(JWA, JWK)\n__webpack_require__(/*! ./aes_kw */ "./node_modules/jose/lib/jwa/aes_kw.js")(JWA, JWK)\n__webpack_require__(/*! ./aes_gcm_kw */ "./node_modules/jose/lib/jwa/aes_gcm_kw.js")(JWA, JWK)\n\n// deriveKey\n__webpack_require__(/*! ./pbes2 */ "./node_modules/jose/lib/jwa/pbes2.js")(JWA, JWK)\n__webpack_require__(/*! ./ecdh/dir */ "./node_modules/jose/lib/jwa/ecdh/dir.js")(JWA, JWK)\n__webpack_require__(/*! ./ecdh/kw */ "./node_modules/jose/lib/jwa/ecdh/kw.js")(JWA, JWK)\n\nconst check = (key, op, alg) => {\n  const cache = `_${op}_${alg}`\n\n  let label\n  let keyOp\n  if (op === \'keyManagementEncrypt\') {\n    label = \'key management (encryption)\'\n    keyOp = KEY_MANAGEMENT_ENCRYPT\n  } else if (op === \'keyManagementDecrypt\') {\n    label = \'key management (decryption)\'\n    keyOp = KEY_MANAGEMENT_DECRYPT\n  }\n\n  if (cache in key) {\n    if (key[cache]) {\n      return\n    }\n    throw new JWKKeySupport(`the key does not support ${alg} ${label || op} algorithm`)\n  }\n\n  let value = true\n  if (!JWA[op].has(alg)) {\n    throw new JOSENotSupported(`unsupported ${label || op} alg: ${alg}`)\n  } else if (!key.algorithms(keyOp).has(alg)) {\n    value = false\n  }\n\n  Object.defineProperty(key, cache, { value, enumerable: false })\n\n  if (!value) {\n    return check(key, op, alg)\n  }\n}\n\nmodule.exports = {\n  check,\n  sign: (alg, key, payload) => {\n    check(key, \'sign\', alg)\n    return JWA.sign.get(alg)(key, payload)\n  },\n  verify: (alg, key, payload, signature) => {\n    check(key, \'verify\', alg)\n    return JWA.verify.get(alg)(key, payload, signature)\n  },\n  keyManagementEncrypt: (alg, key, payload, opts) => {\n    check(key, \'keyManagementEncrypt\', alg)\n    return JWA.keyManagementEncrypt.get(alg)(key, payload, opts)\n  },\n  keyManagementDecrypt: (alg, key, payload, opts) => {\n    check(key, \'keyManagementDecrypt\', alg)\n    return JWA.keyManagementDecrypt.get(alg)(key, payload, opts)\n  },\n  encrypt: (alg, key, cleartext, opts) => {\n    check(key, \'encrypt\', alg)\n    return JWA.encrypt.get(alg)(key, cleartext, opts)\n  },\n  decrypt: (alg, key, ciphertext, opts) => {\n    check(key, \'decrypt\', alg)\n    return JWA.decrypt.get(alg)(key, ciphertext, opts)\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwa/index.js?')},"./node_modules/jose/lib/jwa/none.js":
/*!*******************************************!*\
  !*** ./node_modules/jose/lib/jwa/none.js ***!
  \*******************************************/module=>{eval("const sign = () => Buffer.from('')\nconst verify = (key, payload, signature) => !signature.length\n\nmodule.exports = (JWA, JWK) => {\n  JWA.sign.set('none', sign)\n  JWA.verify.set('none', verify)\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwa/none.js?")},"./node_modules/jose/lib/jwa/pbes2.js":
/*!********************************************!*\
  !*** ./node_modules/jose/lib/jwa/pbes2.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { pbkdf2Sync: pbkdf2, randomBytes } = __webpack_require__(/*! crypto */ \"crypto\")\n\nconst { KEYOBJECT } = __webpack_require__(/*! ../help/consts */ \"./node_modules/jose/lib/help/consts.js\")\nconst base64url = __webpack_require__(/*! ../help/base64url */ \"./node_modules/jose/lib/help/base64url.js\")\n\nconst SALT_LENGTH = 16\nconst NULL_BUFFER = Buffer.alloc(1, 0)\n\nconst concatSalt = (alg, p2s) => {\n  return Buffer.concat([\n    Buffer.from(alg, 'utf8'),\n    NULL_BUFFER,\n    p2s\n  ])\n}\n\nconst wrapKey = (keylen, sha, concat, wrap, { [KEYOBJECT]: keyObject }, payload) => {\n  // Note that if password-based encryption is used for multiple\n  // recipients, it is expected that each recipient use different values\n  // for the PBES2 parameters \"p2s\" and \"p2c\".\n  // here we generate p2c between 2048 and 4096 and random p2s\n  const p2c = Math.floor((Math.random() * 2049) + 2048)\n  const p2s = randomBytes(SALT_LENGTH)\n  const salt = concat(p2s)\n\n  const derivedKey = pbkdf2(keyObject.export(), salt, p2c, keylen, sha)\n\n  const result = wrap({ [KEYOBJECT]: derivedKey }, payload)\n  result.header = result.header || {}\n  Object.assign(result.header, { p2c, p2s: base64url.encodeBuffer(p2s) })\n\n  return result\n}\n\nconst unwrapKey = (keylen, sha, concat, unwrap, { [KEYOBJECT]: keyObject }, payload, header) => {\n  const { p2s, p2c } = header\n  const salt = concat(p2s)\n  const derivedKey = pbkdf2(keyObject.export(), salt, p2c, keylen, sha)\n  return unwrap({ [KEYOBJECT]: derivedKey }, payload, header)\n}\n\nmodule.exports = (JWA, JWK) => {\n  ['PBES2-HS256+A128KW', 'PBES2-HS384+A192KW', 'PBES2-HS512+A256KW'].forEach((jwaAlg) => {\n    const kw = jwaAlg.substr(-6)\n    const kwWrap = JWA.keyManagementEncrypt.get(kw)\n    const kwUnwrap = JWA.keyManagementDecrypt.get(kw)\n    const keylen = parseInt(jwaAlg.substr(13, 3), 10) / 8\n    const sha = `sha${jwaAlg.substr(8, 3)}`\n\n    if (kwWrap && kwUnwrap) {\n      JWA.keyManagementEncrypt.set(jwaAlg, wrapKey.bind(undefined, keylen, sha, concatSalt.bind(undefined, jwaAlg), kwWrap))\n      JWA.keyManagementDecrypt.set(jwaAlg, unwrapKey.bind(undefined, keylen, sha, concatSalt.bind(undefined, jwaAlg), kwUnwrap))\n      JWK.oct.deriveKey[jwaAlg] = key => key.use === 'enc' || key.use === undefined\n    }\n  })\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwa/pbes2.js?")},"./node_modules/jose/lib/jwa/rsaes.js":
/*!********************************************!*\
  !*** ./node_modules/jose/lib/jwa/rsaes.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { publicEncrypt, privateDecrypt, constants } = __webpack_require__(/*! crypto */ \"crypto\")\n\nconst { oaepHashSupported } = __webpack_require__(/*! ../help/runtime_support */ \"./node_modules/jose/lib/help/runtime_support.js\")\nconst { KEYOBJECT } = __webpack_require__(/*! ../help/consts */ \"./node_modules/jose/lib/help/consts.js\")\nconst { asInput } = __webpack_require__(/*! ../help/key_object */ \"./node_modules/jose/lib/help/key_object.js\")\n\nconst resolvePadding = (alg) => {\n  switch (alg) {\n    case 'RSA-OAEP':\n    case 'RSA-OAEP-256':\n    case 'RSA-OAEP-384':\n    case 'RSA-OAEP-512':\n      return constants.RSA_PKCS1_OAEP_PADDING\n    case 'RSA1_5':\n      return constants.RSA_PKCS1_PADDING\n  }\n}\n\nconst resolveOaepHash = (alg) => {\n  switch (alg) {\n    case 'RSA-OAEP':\n      return 'sha1'\n    case 'RSA-OAEP-256':\n      return 'sha256'\n    case 'RSA-OAEP-384':\n      return 'sha384'\n    case 'RSA-OAEP-512':\n      return 'sha512'\n    default:\n      return undefined\n  }\n}\n\nconst wrapKey = (padding, oaepHash, { [KEYOBJECT]: keyObject }, payload) => {\n  const key = asInput(keyObject, true)\n  return { wrapped: publicEncrypt({ key, oaepHash, padding }, payload) }\n}\n\nconst unwrapKey = (padding, oaepHash, { [KEYOBJECT]: keyObject }, payload) => {\n  const key = asInput(keyObject, false)\n  return privateDecrypt({ key, oaepHash, padding }, payload)\n}\n\nconst LENGTHS = {\n  RSA1_5: 0,\n  'RSA-OAEP': 592,\n  'RSA-OAEP-256': 784,\n  'RSA-OAEP-384': 1040,\n  'RSA-OAEP-512': 1296\n}\n\nmodule.exports = (JWA, JWK) => {\n  const algs = ['RSA-OAEP', 'RSA1_5']\n\n  if (oaepHashSupported) {\n    algs.splice(1, 0, 'RSA-OAEP-256', 'RSA-OAEP-384', 'RSA-OAEP-512')\n  }\n\n  algs.forEach((jwaAlg) => {\n    const padding = resolvePadding(jwaAlg)\n    const oaepHash = resolveOaepHash(jwaAlg)\n    JWA.keyManagementEncrypt.set(jwaAlg, wrapKey.bind(undefined, padding, oaepHash))\n    JWA.keyManagementDecrypt.set(jwaAlg, unwrapKey.bind(undefined, padding, oaepHash))\n    JWK.RSA.wrapKey[jwaAlg] = key => (key.use === 'enc' || key.use === undefined) && key.length >= LENGTHS[jwaAlg]\n    JWK.RSA.unwrapKey[jwaAlg] = key => key.private && (key.use === 'enc' || key.use === undefined) && key.length >= LENGTHS[jwaAlg]\n  })\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwa/rsaes.js?")},"./node_modules/jose/lib/jwa/rsassa.js":
/*!*********************************************!*\
  !*** ./node_modules/jose/lib/jwa/rsassa.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { createSign, createVerify } = __webpack_require__(/*! crypto */ \"crypto\")\n\nconst { KEYOBJECT } = __webpack_require__(/*! ../help/consts */ \"./node_modules/jose/lib/help/consts.js\")\nconst resolveNodeAlg = __webpack_require__(/*! ../help/node_alg */ \"./node_modules/jose/lib/help/node_alg.js\")\nconst { asInput } = __webpack_require__(/*! ../help/key_object */ \"./node_modules/jose/lib/help/key_object.js\")\n\nconst sign = (nodeAlg, { [KEYOBJECT]: keyObject }, payload) => {\n  return createSign(nodeAlg).update(payload).sign(asInput(keyObject, false))\n}\n\nconst verify = (nodeAlg, { [KEYOBJECT]: keyObject }, payload, signature) => {\n  return createVerify(nodeAlg).update(payload).verify(asInput(keyObject, true), signature)\n}\n\nconst LENGTHS = {\n  RS256: 0,\n  RS384: 624,\n  RS512: 752\n}\n\nmodule.exports = (JWA, JWK) => {\n  ['RS256', 'RS384', 'RS512'].forEach((jwaAlg) => {\n    const nodeAlg = resolveNodeAlg(jwaAlg)\n    JWA.sign.set(jwaAlg, sign.bind(undefined, nodeAlg))\n    JWA.verify.set(jwaAlg, verify.bind(undefined, nodeAlg))\n    JWK.RSA.sign[jwaAlg] = key => key.private && JWK.RSA.verify[jwaAlg](key)\n    JWK.RSA.verify[jwaAlg] = key => (key.use === 'sig' || key.use === undefined) && key.length >= LENGTHS[jwaAlg]\n  })\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwa/rsassa.js?")},"./node_modules/jose/lib/jwa/rsassa_pss.js":
/*!*************************************************!*\
  !*** ./node_modules/jose/lib/jwa/rsassa_pss.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const {\n  createSign,\n  createVerify,\n  constants\n} = __webpack_require__(/*! crypto */ \"crypto\")\n\nconst { KEYOBJECT } = __webpack_require__(/*! ../help/consts */ \"./node_modules/jose/lib/help/consts.js\")\nconst resolveNodeAlg = __webpack_require__(/*! ../help/node_alg */ \"./node_modules/jose/lib/help/node_alg.js\")\nconst { asInput } = __webpack_require__(/*! ../help/key_object */ \"./node_modules/jose/lib/help/key_object.js\")\n\nconst sign = (nodeAlg, { [KEYOBJECT]: keyObject }, payload) => {\n  const key = asInput(keyObject, false)\n  return createSign(nodeAlg).update(payload).sign({\n    key,\n    padding: constants.RSA_PKCS1_PSS_PADDING,\n    saltLength: constants.RSA_PSS_SALTLEN_DIGEST\n  })\n}\n\nconst verify = (nodeAlg, { [KEYOBJECT]: keyObject }, payload, signature) => {\n  const key = asInput(keyObject, true)\n  return createVerify(nodeAlg).update(payload).verify({\n    key,\n    padding: constants.RSA_PKCS1_PSS_PADDING,\n    saltLength: constants.RSA_PSS_SALTLEN_DIGEST\n  }, signature)\n}\n\nconst LENGTHS = {\n  PS256: 528,\n  PS384: 784,\n  PS512: 1040\n}\n\nmodule.exports = (JWA, JWK) => {\n  ['PS256', 'PS384', 'PS512'].forEach((jwaAlg) => {\n    const nodeAlg = resolveNodeAlg(jwaAlg)\n    JWA.sign.set(jwaAlg, sign.bind(undefined, nodeAlg))\n    JWA.verify.set(jwaAlg, verify.bind(undefined, nodeAlg))\n    JWK.RSA.sign[jwaAlg] = key => key.private && JWK.RSA.verify[jwaAlg](key)\n    JWK.RSA.verify[jwaAlg] = key => (key.use === 'sig' || key.use === undefined) && key.length >= LENGTHS[jwaAlg]\n  })\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwa/rsassa_pss.js?")},"./node_modules/jose/lib/jwe/decrypt.js":
/*!**********************************************!*\
  !*** ./node_modules/jose/lib/jwe/decrypt.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { inflateRawSync } = __webpack_require__(/*! zlib */ \"zlib\")\n\nconst base64url = __webpack_require__(/*! ../help/base64url */ \"./node_modules/jose/lib/help/base64url.js\")\nconst getKey = __webpack_require__(/*! ../help/get_key */ \"./node_modules/jose/lib/help/get_key.js\")\nconst { KeyStore } = __webpack_require__(/*! ../jwks */ \"./node_modules/jose/lib/jwks/index.js\")\nconst errors = __webpack_require__(/*! ../errors */ \"./node_modules/jose/lib/errors.js\")\nconst { check, decrypt, keyManagementDecrypt } = __webpack_require__(/*! ../jwa */ \"./node_modules/jose/lib/jwa/index.js\")\nconst JWK = __webpack_require__(/*! ../jwk */ \"./node_modules/jose/lib/jwk/index.js\")\n\nconst { createSecretKey } = __webpack_require__(/*! ../help/key_object */ \"./node_modules/jose/lib/help/key_object.js\")\nconst generateCEK = __webpack_require__(/*! ./generate_cek */ \"./node_modules/jose/lib/jwe/generate_cek.js\")\nconst validateHeaders = __webpack_require__(/*! ./validate_headers */ \"./node_modules/jose/lib/jwe/validate_headers.js\")\nconst { detect: resolveSerialization } = __webpack_require__(/*! ./serializers */ \"./node_modules/jose/lib/jwe/serializers.js\")\n\nconst SINGLE_RECIPIENT = new Set(['compact', 'flattened'])\n\nconst combineHeader = (prot = {}, unprotected = {}, header = {}) => {\n  if (typeof prot === 'string') {\n    prot = base64url.JSON.decode(prot)\n  }\n\n  const p2s = prot.p2s || unprotected.p2s || header.p2s\n  const apu = prot.apu || unprotected.apu || header.apu\n  const apv = prot.apv || unprotected.apv || header.apv\n  const iv = prot.iv || unprotected.iv || header.iv\n  const tag = prot.tag || unprotected.tag || header.tag\n\n  return {\n    ...prot,\n    ...unprotected,\n    ...header,\n    ...(typeof p2s === 'string' ? { p2s: base64url.decodeToBuffer(p2s) } : undefined),\n    ...(typeof apu === 'string' ? { apu: base64url.decodeToBuffer(apu) } : undefined),\n    ...(typeof apv === 'string' ? { apv: base64url.decodeToBuffer(apv) } : undefined),\n    ...(typeof iv === 'string' ? { iv: base64url.decodeToBuffer(iv) } : undefined),\n    ...(typeof tag === 'string' ? { tag: base64url.decodeToBuffer(tag) } : undefined)\n  }\n}\n\nconst validateAlgorithms = (algorithms, option) => {\n  if (algorithms !== undefined && (!Array.isArray(algorithms) || algorithms.some(s => typeof s !== 'string' || !s))) {\n    throw new TypeError(`\"${option}\" option must be an array of non-empty strings`)\n  }\n\n  if (!algorithms) {\n    return undefined\n  }\n\n  return new Set(algorithms)\n}\n\n/*\n * @public\n */\nconst jweDecrypt = (skipValidateHeaders, serialization, jwe, key, { crit = [], complete = false, keyManagementAlgorithms, contentEncryptionAlgorithms } = {}) => {\n  key = getKey(key, true)\n\n  keyManagementAlgorithms = validateAlgorithms(keyManagementAlgorithms, 'keyManagementAlgorithms')\n  contentEncryptionAlgorithms = validateAlgorithms(contentEncryptionAlgorithms, 'contentEncryptionAlgorithms')\n\n  if (!Array.isArray(crit) || crit.some(s => typeof s !== 'string' || !s)) {\n    throw new TypeError('\"crit\" option must be an array of non-empty strings')\n  }\n\n  if (!serialization) {\n    serialization = resolveSerialization(jwe)\n  }\n\n  let alg, ciphertext, enc, encryptedKey, iv, opts, prot, tag, unprotected, cek, aad, header\n\n  // treat general format with one recipient as flattened\n  // skips iteration and avoids multi errors in this case\n  if (serialization === 'general' && jwe.recipients.length === 1) {\n    serialization = 'flattened'\n    const { recipients, ...root } = jwe\n    jwe = { ...root, ...recipients[0] }\n  }\n\n  if (SINGLE_RECIPIENT.has(serialization)) {\n    if (serialization === 'compact') { // compact serialization format\n      ([prot, encryptedKey, iv, ciphertext, tag] = jwe.split('.'))\n    } else { // flattened serialization format\n      ({ protected: prot, encrypted_key: encryptedKey, iv, ciphertext, tag, unprotected, aad, header } = jwe)\n    }\n\n    if (!skipValidateHeaders) {\n      validateHeaders(prot, unprotected, [{ header }], true, crit)\n    }\n\n    opts = combineHeader(prot, unprotected, header)\n\n    ;({ alg, enc } = opts)\n\n    if (keyManagementAlgorithms && !keyManagementAlgorithms.has(alg)) {\n      throw new errors.JOSEAlgNotWhitelisted('key management algorithm not whitelisted')\n    }\n\n    if (contentEncryptionAlgorithms && !contentEncryptionAlgorithms.has(enc)) {\n      throw new errors.JOSEAlgNotWhitelisted('content encryption algorithm not whitelisted')\n    }\n\n    if (key instanceof KeyStore) {\n      const keystore = key\n      let keys\n      if (opts.alg === 'dir') {\n        keys = keystore.all({ kid: opts.kid, alg: opts.enc, key_ops: ['decrypt'] })\n      } else {\n        keys = keystore.all({ kid: opts.kid, alg: opts.alg, key_ops: ['unwrapKey'] })\n      }\n      switch (keys.length) {\n        case 0:\n          throw new errors.JWKSNoMatchingKey()\n        case 1:\n          // treat the call as if a Key instance was passed in\n          // skips iteration and avoids multi errors in this case\n          key = keys[0]\n          break\n        default: {\n          const errs = []\n          for (const key of keys) {\n            try {\n              return jweDecrypt(true, serialization, jwe, key, {\n                crit,\n                complete,\n                contentEncryptionAlgorithms: contentEncryptionAlgorithms ? [...contentEncryptionAlgorithms] : undefined,\n                keyManagementAlgorithms: keyManagementAlgorithms ? [...keyManagementAlgorithms] : undefined\n              })\n            } catch (err) {\n              errs.push(err)\n              continue\n            }\n          }\n\n          const multi = new errors.JOSEMultiError(errs)\n          if ([...multi].some(e => e instanceof errors.JWEDecryptionFailed)) {\n            throw new errors.JWEDecryptionFailed()\n          }\n          throw multi\n        }\n      }\n    }\n\n    check(key, ...(alg === 'dir' ? ['decrypt', enc] : ['keyManagementDecrypt', alg]))\n\n    try {\n      if (alg === 'dir') {\n        cek = JWK.asKey(key, { alg: enc, use: 'enc' })\n      } else if (alg === 'ECDH-ES') {\n        const unwrapped = keyManagementDecrypt(alg, key, undefined, opts)\n        cek = JWK.asKey(createSecretKey(unwrapped), { alg: enc, use: 'enc' })\n      } else {\n        const unwrapped = keyManagementDecrypt(alg, key, base64url.decodeToBuffer(encryptedKey), opts)\n        cek = JWK.asKey(createSecretKey(unwrapped), { alg: enc, use: 'enc' })\n      }\n    } catch (err) {\n      // To mitigate the attacks described in RFC 3218, the\n      // recipient MUST NOT distinguish between format, padding, and length\n      // errors of encrypted keys.  It is strongly recommended, in the event\n      // of receiving an improperly formatted key, that the recipient\n      // substitute a randomly generated CEK and proceed to the next step, to\n      // mitigate timing attacks.\n      cek = generateCEK(enc)\n    }\n\n    let adata\n    if (aad) {\n      adata = Buffer.concat([\n        Buffer.from(prot || ''),\n        Buffer.from('.'),\n        Buffer.from(aad)\n      ])\n    } else {\n      adata = Buffer.from(prot || '')\n    }\n\n    try {\n      iv = base64url.decodeToBuffer(iv)\n    } catch (err) {}\n    try {\n      tag = base64url.decodeToBuffer(tag)\n    } catch (err) {}\n\n    let cleartext = decrypt(enc, cek, base64url.decodeToBuffer(ciphertext), { iv, tag, aad: adata })\n\n    if (opts.zip) {\n      cleartext = inflateRawSync(cleartext)\n    }\n\n    if (complete) {\n      const result = { cleartext, key, cek }\n      if (aad) result.aad = aad\n      if (header) result.header = header\n      if (unprotected) result.unprotected = unprotected\n      if (prot) result.protected = base64url.JSON.decode(prot)\n      return result\n    }\n\n    return cleartext\n  }\n\n  validateHeaders(jwe.protected, jwe.unprotected, jwe.recipients.map(({ header }) => ({ header })), true, crit)\n\n  // general serialization format\n  const { recipients, ...root } = jwe\n  const errs = []\n  for (const recipient of recipients) {\n    try {\n      return jweDecrypt(true, 'flattened', { ...root, ...recipient }, key, {\n        crit,\n        complete,\n        contentEncryptionAlgorithms: contentEncryptionAlgorithms ? [...contentEncryptionAlgorithms] : undefined,\n        keyManagementAlgorithms: keyManagementAlgorithms ? [...keyManagementAlgorithms] : undefined\n      })\n    } catch (err) {\n      errs.push(err)\n      continue\n    }\n  }\n\n  const multi = new errors.JOSEMultiError(errs)\n  if ([...multi].some(e => e instanceof errors.JWEDecryptionFailed)) {\n    throw new errors.JWEDecryptionFailed()\n  } else if ([...multi].every(e => e instanceof errors.JWKSNoMatchingKey)) {\n    throw new errors.JWKSNoMatchingKey()\n  }\n  throw multi\n}\n\nmodule.exports = jweDecrypt.bind(undefined, false, undefined)\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwe/decrypt.js?")},"./node_modules/jose/lib/jwe/encrypt.js":
/*!**********************************************!*\
  !*** ./node_modules/jose/lib/jwe/encrypt.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { deflateRawSync } = __webpack_require__(/*! zlib */ \"zlib\")\n\nconst { KEYOBJECT } = __webpack_require__(/*! ../help/consts */ \"./node_modules/jose/lib/help/consts.js\")\nconst generateIV = __webpack_require__(/*! ../help/generate_iv */ \"./node_modules/jose/lib/help/generate_iv.js\")\nconst base64url = __webpack_require__(/*! ../help/base64url */ \"./node_modules/jose/lib/help/base64url.js\")\nconst getKey = __webpack_require__(/*! ../help/get_key */ \"./node_modules/jose/lib/help/get_key.js\")\nconst isObject = __webpack_require__(/*! ../help/is_object */ \"./node_modules/jose/lib/help/is_object.js\")\nconst { createSecretKey } = __webpack_require__(/*! ../help/key_object */ \"./node_modules/jose/lib/help/key_object.js\")\nconst deepClone = __webpack_require__(/*! ../help/deep_clone */ \"./node_modules/jose/lib/help/deep_clone.js\")\nconst importKey = __webpack_require__(/*! ../jwk/import */ \"./node_modules/jose/lib/jwk/import.js\")\nconst { JWEInvalid } = __webpack_require__(/*! ../errors */ \"./node_modules/jose/lib/errors.js\")\nconst { check, keyManagementEncrypt, encrypt } = __webpack_require__(/*! ../jwa */ \"./node_modules/jose/lib/jwa/index.js\")\n\nconst serializers = __webpack_require__(/*! ./serializers */ \"./node_modules/jose/lib/jwe/serializers.js\")\nconst generateCEK = __webpack_require__(/*! ./generate_cek */ \"./node_modules/jose/lib/jwe/generate_cek.js\")\nconst validateHeaders = __webpack_require__(/*! ./validate_headers */ \"./node_modules/jose/lib/jwe/validate_headers.js\")\n\nconst PROCESS_RECIPIENT = Symbol('PROCESS_RECIPIENT')\n\nclass Encrypt {\n  constructor (cleartext, protectedHeader, aad, unprotectedHeader) {\n    if (!Buffer.isBuffer(cleartext) && typeof cleartext !== 'string') {\n      throw new TypeError('cleartext argument must be a Buffer or a string')\n    }\n    cleartext = Buffer.from(cleartext)\n\n    if (aad !== undefined && !Buffer.isBuffer(aad) && typeof aad !== 'string') {\n      throw new TypeError('aad argument must be a Buffer or a string when provided')\n    }\n    aad = aad ? Buffer.from(aad) : undefined\n\n    if (protectedHeader !== undefined && !isObject(protectedHeader)) {\n      throw new TypeError('protectedHeader argument must be a plain object when provided')\n    }\n\n    if (unprotectedHeader !== undefined && !isObject(unprotectedHeader)) {\n      throw new TypeError('unprotectedHeader argument must be a plain object when provided')\n    }\n\n    this._recipients = []\n    this._cleartext = cleartext\n    this._aad = aad\n    this._unprotected = unprotectedHeader ? deepClone(unprotectedHeader) : undefined\n    this._protected = protectedHeader ? deepClone(protectedHeader) : undefined\n  }\n\n  /*\n   * @public\n   */\n  recipient (key, header) {\n    key = getKey(key)\n\n    if (header !== undefined && !isObject(header)) {\n      throw new TypeError('header argument must be a plain object when provided')\n    }\n\n    this._recipients.push({\n      key,\n      header: header ? deepClone(header) : undefined\n    })\n\n    return this\n  }\n\n  /*\n   * @private\n   */\n  [PROCESS_RECIPIENT] (recipient) {\n    const unprotectedHeader = this._unprotected\n    const protectedHeader = this._protected\n    const { length: recipientCount } = this._recipients\n\n    const jweHeader = {\n      ...protectedHeader,\n      ...unprotectedHeader,\n      ...recipient.header\n    }\n    const { key } = recipient\n\n    const enc = jweHeader.enc\n    let alg = jweHeader.alg\n\n    if (key.use === 'sig') {\n      throw new TypeError('a key with \"use\":\"sig\" is not usable for encryption')\n    }\n\n    if (alg === 'dir') {\n      check(key, 'encrypt', enc)\n    } else if (alg) {\n      check(key, 'keyManagementEncrypt', alg)\n    } else {\n      alg = key.alg || [...key.algorithms('wrapKey')][0] || [...key.algorithms('deriveKey')][0]\n\n      if (alg === 'ECDH-ES' && recipientCount !== 1) {\n        alg = [...key.algorithms('deriveKey')][1]\n      }\n\n      if (!alg) {\n        throw new JWEInvalid('could not resolve a usable \"alg\" for a recipient')\n      }\n\n      if (recipientCount === 1) {\n        if (protectedHeader) {\n          protectedHeader.alg = alg\n        } else {\n          this._protected = { alg }\n        }\n      } else {\n        if (recipient.header) {\n          recipient.header.alg = alg\n        } else {\n          recipient.header = { alg }\n        }\n      }\n    }\n\n    let wrapped\n    let generatedHeader\n\n    if (key.kty === 'oct' && alg === 'dir') {\n      this._cek = importKey(key[KEYOBJECT], { use: 'enc', alg: enc })\n    } else {\n      check(this._cek, 'encrypt', enc)\n      ;({ wrapped, header: generatedHeader } = keyManagementEncrypt(alg, key, this._cek[KEYOBJECT].export(), { enc, alg }))\n      if (alg === 'ECDH-ES') {\n        this._cek = importKey(createSecretKey(wrapped), { use: 'enc', alg: enc })\n      }\n    }\n\n    if (alg === 'dir' || alg === 'ECDH-ES') {\n      recipient.encrypted_key = ''\n    } else {\n      recipient.encrypted_key = base64url.encodeBuffer(wrapped)\n    }\n\n    if (generatedHeader) {\n      recipient.generatedHeader = generatedHeader\n    }\n  }\n\n  /*\n   * @public\n   */\n  encrypt (serialization) {\n    const serializer = serializers[serialization]\n    if (!serializer) {\n      throw new TypeError('serialization must be one of \"compact\", \"flattened\", \"general\"')\n    }\n\n    if (!this._recipients.length) {\n      throw new JWEInvalid('missing recipients')\n    }\n\n    serializer.validate(this._protected, this._unprotected, this._aad, this._recipients)\n\n    let enc = validateHeaders(this._protected, this._unprotected, this._recipients, false, this._protected ? this._protected.crit : undefined)\n    if (!enc) {\n      enc = 'A128CBC-HS256'\n      if (this._protected) {\n        this._protected.enc = enc\n      } else {\n        this._protected = { enc }\n      }\n    }\n    const final = {}\n    this._cek = generateCEK(enc)\n\n    for (const recipient of this._recipients) {\n      this[PROCESS_RECIPIENT](recipient)\n    }\n\n    const iv = generateIV(enc)\n    final.iv = base64url.encodeBuffer(iv)\n\n    if (this._recipients.length === 1 && this._recipients[0].generatedHeader) {\n      const [{ generatedHeader }] = this._recipients\n      delete this._recipients[0].generatedHeader\n      this._protected = {\n        ...this._protected,\n        ...generatedHeader\n      }\n    }\n\n    if (this._protected) {\n      final.protected = base64url.JSON.encode(this._protected)\n    }\n    final.unprotected = this._unprotected\n\n    let aad\n    if (this._aad) {\n      final.aad = base64url.encode(this._aad)\n      aad = Buffer.concat([\n        Buffer.from(final.protected || ''),\n        Buffer.from('.'),\n        Buffer.from(final.aad)\n      ])\n    } else {\n      aad = Buffer.from(final.protected || '')\n    }\n\n    let cleartext = this._cleartext\n    if (this._protected && 'zip' in this._protected) {\n      cleartext = deflateRawSync(cleartext)\n    }\n\n    const { ciphertext, tag } = encrypt(enc, this._cek, cleartext, { iv, aad })\n    final.tag = base64url.encodeBuffer(tag)\n    final.ciphertext = base64url.encodeBuffer(ciphertext)\n\n    return serializer(final, this._recipients)\n  }\n}\n\nmodule.exports = Encrypt\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwe/encrypt.js?")},"./node_modules/jose/lib/jwe/generate_cek.js":
/*!***************************************************!*\
  !*** ./node_modules/jose/lib/jwe/generate_cek.js ***!
  \***************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const { randomBytes } = __webpack_require__(/*! crypto */ "crypto")\n\nconst { createSecretKey } = __webpack_require__(/*! ../help/key_object */ "./node_modules/jose/lib/help/key_object.js")\nconst { KEYLENGTHS } = __webpack_require__(/*! ../registry */ "./node_modules/jose/lib/registry/index.js")\nconst Key = __webpack_require__(/*! ../jwk/key/oct */ "./node_modules/jose/lib/jwk/key/oct.js")\n\nmodule.exports = (alg) => {\n  const keyLength = KEYLENGTHS.get(alg)\n\n  if (!keyLength) {\n    return new Key({ type: \'secret\' })\n  }\n\n  return new Key(createSecretKey(randomBytes(keyLength / 8)), { use: \'enc\', alg })\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwe/generate_cek.js?')},"./node_modules/jose/lib/jwe/index.js":
/*!********************************************!*\
  !*** ./node_modules/jose/lib/jwe/index.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const Encrypt = __webpack_require__(/*! ./encrypt */ \"./node_modules/jose/lib/jwe/encrypt.js\")\nconst decrypt = __webpack_require__(/*! ./decrypt */ \"./node_modules/jose/lib/jwe/decrypt.js\")\n\nconst single = (serialization, cleartext, key, protectedHeader, aad, unprotectedHeader) => {\n  return new Encrypt(cleartext, protectedHeader, aad, unprotectedHeader)\n    .recipient(key)\n    .encrypt(serialization)\n}\n\nmodule.exports.Encrypt = Encrypt\nmodule.exports.encrypt = single.bind(undefined, 'compact')\nmodule.exports.encrypt.flattened = single.bind(undefined, 'flattened')\nmodule.exports.encrypt.general = single.bind(undefined, 'general')\n\nmodule.exports.decrypt = decrypt\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwe/index.js?")},"./node_modules/jose/lib/jwe/serializers.js":
/*!**************************************************!*\
  !*** ./node_modules/jose/lib/jwe/serializers.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const isObject = __webpack_require__(/*! ../help/is_object */ \"./node_modules/jose/lib/help/is_object.js\")\nlet validateCrit = __webpack_require__(/*! ../help/validate_crit */ \"./node_modules/jose/lib/help/validate_crit.js\")\n\nconst { JWEInvalid } = __webpack_require__(/*! ../errors */ \"./node_modules/jose/lib/errors.js\")\n\nvalidateCrit = validateCrit.bind(undefined, JWEInvalid)\n\nconst compactSerializer = (final, [recipient]) => {\n  return `${final.protected}.${recipient.encrypted_key}.${final.iv}.${final.ciphertext}.${final.tag}`\n}\ncompactSerializer.validate = (protectedHeader, unprotectedHeader, aad, { 0: { header }, length }) => {\n  if (length !== 1 || aad || unprotectedHeader || header) {\n    throw new JWEInvalid('JWE Compact Serialization doesn\\'t support multiple recipients, JWE unprotected headers or AAD')\n  }\n  validateCrit(protectedHeader, unprotectedHeader, protectedHeader ? protectedHeader.crit : undefined)\n}\n\nconst flattenedSerializer = (final, [recipient]) => {\n  const { header, encrypted_key: encryptedKey } = recipient\n\n  return {\n    ...(final.protected ? { protected: final.protected } : undefined),\n    ...(final.unprotected ? { unprotected: final.unprotected } : undefined),\n    ...(header ? { header } : undefined),\n    ...(encryptedKey ? { encrypted_key: encryptedKey } : undefined),\n    ...(final.aad ? { aad: final.aad } : undefined),\n    iv: final.iv,\n    ciphertext: final.ciphertext,\n    tag: final.tag\n  }\n}\nflattenedSerializer.validate = (protectedHeader, unprotectedHeader, aad, { 0: { header }, length }) => {\n  if (length !== 1) {\n    throw new JWEInvalid('Flattened JWE JSON Serialization doesn\\'t support multiple recipients')\n  }\n  validateCrit(protectedHeader, { ...unprotectedHeader, ...header }, protectedHeader ? protectedHeader.crit : undefined)\n}\n\nconst generalSerializer = (final, recipients) => {\n  const result = {\n    ...(final.protected ? { protected: final.protected } : undefined),\n    ...(final.unprotected ? { unprotected: final.unprotected } : undefined),\n    recipients: recipients.map(({ header, encrypted_key: encryptedKey, generatedHeader }) => {\n      if (!header && !encryptedKey && !generatedHeader) {\n        return false\n      }\n\n      return {\n        ...(header || generatedHeader ? { header: { ...header, ...generatedHeader } } : undefined),\n        ...(encryptedKey ? { encrypted_key: encryptedKey } : undefined)\n      }\n    }).filter(Boolean),\n    ...(final.aad ? { aad: final.aad } : undefined),\n    iv: final.iv,\n    ciphertext: final.ciphertext,\n    tag: final.tag\n  }\n\n  if (!result.recipients.length) {\n    delete result.recipients\n  }\n\n  return result\n}\ngeneralSerializer.validate = (protectedHeader, unprotectedHeader, aad, recipients) => {\n  recipients.forEach(({ header }) => {\n    validateCrit(protectedHeader, { ...header, ...unprotectedHeader }, protectedHeader ? protectedHeader.crit : undefined)\n  })\n}\n\nconst isJSON = (input) => {\n  return isObject(input) &&\n    typeof input.ciphertext === 'string' &&\n    typeof input.iv === 'string' &&\n    typeof input.tag === 'string' &&\n    (input.unprotected === undefined || isObject(input.unprotected)) &&\n    (input.protected === undefined || typeof input.protected === 'string') &&\n    (input.aad === undefined || typeof input.aad === 'string')\n}\n\nconst isSingleRecipient = (input) => {\n  return (input.encrypted_key === undefined || typeof input.encrypted_key === 'string') &&\n    (input.header === undefined || isObject(input.header))\n}\n\nconst isValidRecipient = (recipient) => {\n  return isObject(recipient) && typeof recipient.encrypted_key === 'string' && (recipient.header === undefined || isObject(recipient.header))\n}\n\nconst isMultiRecipient = (input) => {\n  if (Array.isArray(input.recipients) && input.recipients.every(isValidRecipient)) {\n    return true\n  }\n\n  return false\n}\n\nconst detect = (input) => {\n  if (typeof input === 'string' && input.split('.').length === 5) {\n    return 'compact'\n  }\n\n  if (isJSON(input)) {\n    if (isMultiRecipient(input)) {\n      return 'general'\n    }\n\n    if (isSingleRecipient(input)) {\n      return 'flattened'\n    }\n  }\n\n  throw new JWEInvalid('JWE malformed or invalid serialization')\n}\n\nmodule.exports = {\n  compact: compactSerializer,\n  flattened: flattenedSerializer,\n  general: generalSerializer,\n  detect\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwe/serializers.js?")},"./node_modules/jose/lib/jwe/validate_headers.js":
/*!*******************************************************!*\
  !*** ./node_modules/jose/lib/jwe/validate_headers.js ***!
  \*******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const isDisjoint = __webpack_require__(/*! ../help/is_disjoint */ \"./node_modules/jose/lib/help/is_disjoint.js\")\nconst base64url = __webpack_require__(/*! ../help/base64url */ \"./node_modules/jose/lib/help/base64url.js\")\nlet validateCrit = __webpack_require__(/*! ../help/validate_crit */ \"./node_modules/jose/lib/help/validate_crit.js\")\nconst { JWEInvalid, JOSENotSupported } = __webpack_require__(/*! ../errors */ \"./node_modules/jose/lib/errors.js\")\n\nvalidateCrit = validateCrit.bind(undefined, JWEInvalid)\n\nmodule.exports = (prot, unprotected, recipients, checkAlgorithms, crit) => {\n  if (typeof prot === 'string') {\n    try {\n      prot = base64url.JSON.decode(prot)\n    } catch (err) {\n      throw new JWEInvalid('could not parse JWE protected header')\n    }\n  }\n\n  let alg = []\n  const enc = new Set()\n  if (!isDisjoint(prot, unprotected) || !recipients.every(({ header }) => {\n    if (typeof header === 'object') {\n      alg.push(header.alg)\n      enc.add(header.enc)\n    }\n    const combined = { ...unprotected, ...header }\n    validateCrit(prot, combined, crit)\n    if ('zip' in combined) {\n      throw new JWEInvalid('\"zip\" Header Parameter MUST be integrity protected')\n    } else if (prot && 'zip' in prot && prot.zip !== 'DEF') {\n      throw new JOSENotSupported('only \"DEF\" compression algorithm is supported')\n    }\n    return isDisjoint(header, prot) && isDisjoint(header, unprotected)\n  })) {\n    throw new JWEInvalid('JWE Shared Protected, JWE Shared Unprotected and JWE Per-Recipient Header Parameter names must be disjoint')\n  }\n\n  if (typeof prot === 'object') {\n    alg.push(prot.alg)\n    enc.add(prot.enc)\n  }\n  if (typeof unprotected === 'object') {\n    alg.push(unprotected.alg)\n    enc.add(unprotected.enc)\n  }\n\n  alg = alg.filter(Boolean)\n  enc.delete(undefined)\n\n  if (recipients.length !== 1) {\n    if (alg.includes('dir') || alg.includes('ECDH-ES')) {\n      throw new JWEInvalid('dir and ECDH-ES alg may only be used with a single recipient')\n    }\n  }\n\n  if (checkAlgorithms) {\n    if (alg.length !== recipients.length) {\n      throw new JWEInvalid('missing Key Management algorithm')\n    }\n    if (enc.size === 0) {\n      throw new JWEInvalid('missing Content Encryption algorithm')\n    } else if (enc.size !== 1) {\n      throw new JWEInvalid('there must only be one Content Encryption algorithm')\n    }\n  } else {\n    if (enc.size > 1) {\n      throw new JWEInvalid('there must only be one Content Encryption algorithm')\n    }\n  }\n\n  return [...enc][0]\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwe/validate_headers.js?")},"./node_modules/jose/lib/jwk/generate.js":
/*!***********************************************!*\
  !*** ./node_modules/jose/lib/jwk/generate.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const errors = __webpack_require__(/*! ../errors */ \"./node_modules/jose/lib/errors.js\")\n\nconst importKey = __webpack_require__(/*! ./import */ \"./node_modules/jose/lib/jwk/import.js\")\n\nconst RSAKey = __webpack_require__(/*! ./key/rsa */ \"./node_modules/jose/lib/jwk/key/rsa.js\")\nconst ECKey = __webpack_require__(/*! ./key/ec */ \"./node_modules/jose/lib/jwk/key/ec.js\")\nconst OKPKey = __webpack_require__(/*! ./key/okp */ \"./node_modules/jose/lib/jwk/key/okp.js\")\nconst OctKey = __webpack_require__(/*! ./key/oct */ \"./node_modules/jose/lib/jwk/key/oct.js\")\n\nconst generate = async (kty, crvOrSize, params, generatePrivate = true) => {\n  switch (kty) {\n    case 'RSA':\n      return importKey(\n        await RSAKey.generate(crvOrSize, generatePrivate),\n        params\n      )\n    case 'EC':\n      return importKey(\n        await ECKey.generate(crvOrSize, generatePrivate),\n        params\n      )\n    case 'OKP':\n      return importKey(\n        await OKPKey.generate(crvOrSize, generatePrivate),\n        params\n      )\n    case 'oct':\n      return importKey(\n        await OctKey.generate(crvOrSize, generatePrivate),\n        params\n      )\n    default:\n      throw new errors.JOSENotSupported(`unsupported key type: ${kty}`)\n  }\n}\n\nconst generateSync = (kty, crvOrSize, params, generatePrivate = true) => {\n  switch (kty) {\n    case 'RSA':\n      return importKey(RSAKey.generateSync(crvOrSize, generatePrivate), params)\n    case 'EC':\n      return importKey(ECKey.generateSync(crvOrSize, generatePrivate), params)\n    case 'OKP':\n      return importKey(OKPKey.generateSync(crvOrSize, generatePrivate), params)\n    case 'oct':\n      return importKey(OctKey.generateSync(crvOrSize, generatePrivate), params)\n    default:\n      throw new errors.JOSENotSupported(`unsupported key type: ${kty}`)\n  }\n}\n\nmodule.exports.generate = generate\nmodule.exports.generateSync = generateSync\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwk/generate.js?")},"./node_modules/jose/lib/jwk/import.js":
/*!*********************************************!*\
  !*** ./node_modules/jose/lib/jwk/import.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { createPublicKey, createPrivateKey, createSecretKey, KeyObject } = __webpack_require__(/*! ../help/key_object */ \"./node_modules/jose/lib/help/key_object.js\")\nconst base64url = __webpack_require__(/*! ../help/base64url */ \"./node_modules/jose/lib/help/base64url.js\")\nconst isObject = __webpack_require__(/*! ../help/is_object */ \"./node_modules/jose/lib/help/is_object.js\")\nconst { jwkToPem } = __webpack_require__(/*! ../help/key_utils */ \"./node_modules/jose/lib/help/key_utils.js\")\nconst errors = __webpack_require__(/*! ../errors */ \"./node_modules/jose/lib/errors.js\")\n\nconst RSAKey = __webpack_require__(/*! ./key/rsa */ \"./node_modules/jose/lib/jwk/key/rsa.js\")\nconst ECKey = __webpack_require__(/*! ./key/ec */ \"./node_modules/jose/lib/jwk/key/ec.js\")\nconst OKPKey = __webpack_require__(/*! ./key/okp */ \"./node_modules/jose/lib/jwk/key/okp.js\")\nconst OctKey = __webpack_require__(/*! ./key/oct */ \"./node_modules/jose/lib/jwk/key/oct.js\")\n\nconst importable = new Set(['string', 'buffer', 'object'])\n\nconst mergedParameters = (target = {}, source = {}) => {\n  return {\n    alg: source.alg,\n    key_ops: source.key_ops,\n    kid: source.kid,\n    use: source.use,\n    x5c: source.x5c,\n    x5t: source.x5t,\n    'x5t#S256': source['x5t#S256'],\n    ...target\n  }\n}\n\nconst openSSHpublicKey = /^[a-zA-Z0-9-]+ AAAA(?:[0-9A-Za-z+/])+(?:==|=)?(?: .*)?$/\n\nconst asKey = (key, parameters, { calculateMissingRSAPrimes = false } = {}) => {\n  let privateKey, publicKey, secret\n\n  if (!importable.has(typeof key)) {\n    throw new TypeError('key argument must be a string, buffer or an object')\n  }\n\n  if (parameters !== undefined && !isObject(parameters)) {\n    throw new TypeError('parameters argument must be a plain object when provided')\n  }\n\n  if (key instanceof KeyObject) {\n    switch (key.type) {\n      case 'private':\n        privateKey = key\n        break\n      case 'public':\n        publicKey = key\n        break\n      case 'secret':\n        secret = key\n        break\n    }\n  } else if (typeof key === 'object' && key && 'kty' in key && key.kty === 'oct') { // symmetric key <Object>\n    try {\n      secret = createSecretKey(base64url.decodeToBuffer(key.k))\n    } catch (err) {\n      if (!('k' in key)) {\n        secret = { type: 'secret' }\n      }\n    }\n    parameters = mergedParameters(parameters, key)\n  } else if (typeof key === 'object' && key && 'kty' in key) { // assume JWK formatted asymmetric key <Object>\n    ({ calculateMissingRSAPrimes = false } = parameters || { calculateMissingRSAPrimes })\n    let pem\n\n    try {\n      pem = jwkToPem(key, { calculateMissingRSAPrimes })\n    } catch (err) {\n      if (err instanceof errors.JOSEError) {\n        throw err\n      }\n    }\n\n    if (pem && key.d) {\n      privateKey = createPrivateKey(pem)\n    } else if (pem) {\n      publicKey = createPublicKey(pem)\n    }\n\n    parameters = mergedParameters({}, key)\n  } else if (key && (typeof key === 'object' || typeof key === 'string')) { // <Object> | <string> | <Buffer> passed to crypto.createPrivateKey or crypto.createPublicKey or <Buffer> passed to crypto.createSecretKey\n    try {\n      privateKey = createPrivateKey(key)\n    } catch (err) {\n      if (err instanceof errors.JOSEError) {\n        throw err\n      }\n    }\n\n    try {\n      publicKey = createPublicKey(key)\n      if (key.startsWith('-----BEGIN CERTIFICATE-----') && (!parameters || !('x5c' in parameters))) {\n        parameters = mergedParameters(parameters, {\n          x5c: [key.replace(/(?:-----(?:BEGIN|END) CERTIFICATE-----|\\s)/g, '')]\n        })\n      }\n    } catch (err) {\n      if (err instanceof errors.JOSEError) {\n        throw err\n      }\n    }\n\n    try {\n      // this is to filter out invalid PEM keys and certs, i'll rather have them fail import then\n      // have them imported as symmetric \"oct\" keys\n      if (!key.includes('-----BEGIN') && !openSSHpublicKey.test(key.toString('ascii').replace(/[\\r\\n]/g, ''))) {\n        secret = createSecretKey(Buffer.isBuffer(key) ? key : Buffer.from(key))\n      }\n    } catch (err) {}\n  }\n\n  const keyObject = privateKey || publicKey || secret\n\n  if (privateKey || publicKey) {\n    switch (keyObject.asymmetricKeyType) {\n      case 'rsa':\n        return new RSAKey(keyObject, parameters)\n      case 'ec':\n        return new ECKey(keyObject, parameters)\n      case 'ed25519':\n      case 'ed448':\n      case 'x25519':\n      case 'x448':\n        return new OKPKey(keyObject, parameters)\n      default:\n        throw new errors.JOSENotSupported('only RSA, EC and OKP asymmetric keys are supported')\n    }\n  } else if (secret) {\n    return new OctKey(keyObject, parameters)\n  }\n\n  throw new errors.JWKImportFailed('key import failed')\n}\n\nmodule.exports = asKey\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwk/import.js?")},"./node_modules/jose/lib/jwk/index.js":
/*!********************************************!*\
  !*** ./node_modules/jose/lib/jwk/index.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const Key = __webpack_require__(/*! ./key/base */ "./node_modules/jose/lib/jwk/key/base.js")\nconst None = __webpack_require__(/*! ./key/none */ "./node_modules/jose/lib/jwk/key/none.js")\nconst EmbeddedJWK = __webpack_require__(/*! ./key/embedded.jwk */ "./node_modules/jose/lib/jwk/key/embedded.jwk.js")\nconst EmbeddedX5C = __webpack_require__(/*! ./key/embedded.x5c */ "./node_modules/jose/lib/jwk/key/embedded.x5c.js")\nconst importKey = __webpack_require__(/*! ./import */ "./node_modules/jose/lib/jwk/import.js")\nconst generate = __webpack_require__(/*! ./generate */ "./node_modules/jose/lib/jwk/generate.js")\n\nmodule.exports = {\n  ...generate,\n  asKey: importKey,\n  isKey: input => input instanceof Key,\n  None,\n  EmbeddedJWK,\n  EmbeddedX5C\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwk/index.js?')},"./node_modules/jose/lib/jwk/key/base.js":
/*!***********************************************!*\
  !*** ./node_modules/jose/lib/jwk/key/base.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { strict: assert } = __webpack_require__(/*! assert */ \"assert\")\nconst { inspect } = __webpack_require__(/*! util */ \"util\")\nconst { EOL } = __webpack_require__(/*! os */ \"os\")\n\nconst { keyObjectSupported } = __webpack_require__(/*! ../../help/runtime_support */ \"./node_modules/jose/lib/help/runtime_support.js\")\nconst { createPublicKey } = __webpack_require__(/*! ../../help/key_object */ \"./node_modules/jose/lib/help/key_object.js\")\nconst { keyObjectToJWK } = __webpack_require__(/*! ../../help/key_utils */ \"./node_modules/jose/lib/help/key_utils.js\")\nconst {\n  THUMBPRINT_MATERIAL, PUBLIC_MEMBERS, PRIVATE_MEMBERS, JWK_MEMBERS, KEYOBJECT,\n  USES_MAPPING, OPS, USES\n} = __webpack_require__(/*! ../../help/consts */ \"./node_modules/jose/lib/help/consts.js\")\nconst isObject = __webpack_require__(/*! ../../help/is_object */ \"./node_modules/jose/lib/help/is_object.js\")\nconst thumbprint = __webpack_require__(/*! ../thumbprint */ \"./node_modules/jose/lib/jwk/thumbprint.js\")\nconst errors = __webpack_require__(/*! ../../errors */ \"./node_modules/jose/lib/errors.js\")\n\nconst privateApi = Symbol('privateApi')\nconst { JWK } = __webpack_require__(/*! ../../registry */ \"./node_modules/jose/lib/registry/index.js\")\n\nclass Key {\n  constructor (keyObject, { alg, use, kid, key_ops: ops, x5c, x5t, 'x5t#S256': x5t256 } = {}) {\n    if (use !== undefined) {\n      if (typeof use !== 'string' || !USES.has(use)) {\n        throw new TypeError('`use` must be either \"sig\" or \"enc\" string when provided')\n      }\n    }\n\n    if (alg !== undefined) {\n      if (typeof alg !== 'string' || !alg) {\n        throw new TypeError('`alg` must be a non-empty string when provided')\n      }\n    }\n\n    if (kid !== undefined) {\n      if (typeof kid !== 'string' || !kid) {\n        throw new TypeError('`kid` must be a non-empty string when provided')\n      }\n    }\n\n    if (ops !== undefined) {\n      if (!Array.isArray(ops) || !ops.length || ops.some(o => typeof o !== 'string')) {\n        throw new TypeError('`key_ops` must be a non-empty array of strings when provided')\n      }\n      ops = Array.from(new Set(ops)).filter(x => OPS.has(x))\n    }\n\n    if (ops && use) {\n      if (\n        (use === 'enc' && ops.some(x => USES_MAPPING.sig.has(x))) ||\n        (use === 'sig' && ops.some(x => USES_MAPPING.enc.has(x)))\n      ) {\n        throw new errors.JWKInvalid('inconsistent JWK \"use\" and \"key_ops\"')\n      }\n    }\n\n    if (keyObjectSupported && x5c !== undefined) {\n      if (!Array.isArray(x5c) || !x5c.length || x5c.some(c => typeof c !== 'string')) {\n        throw new TypeError('`x5c` must be an array of one or more PKIX certificates when provided')\n      }\n\n      x5c.forEach((cert, i) => {\n        let publicKey\n        try {\n          publicKey = createPublicKey({\n            key: `-----BEGIN CERTIFICATE-----${EOL}${(cert.match(/.{1,64}/g) || []).join(EOL)}${EOL}-----END CERTIFICATE-----`, format: 'pem'\n          })\n        } catch (err) {\n          throw new errors.JWKInvalid(`\\`x5c\\` member at index ${i} is not a valid base64-encoded DER PKIX certificate`)\n        }\n        if (i === 0) {\n          try {\n            assert.deepEqual(\n              publicKey.export({ type: 'spki', format: 'der' }),\n              (keyObject.type === 'public' ? keyObject : createPublicKey(keyObject)).export({ type: 'spki', format: 'der' })\n            )\n          } catch (err) {\n            throw new errors.JWKInvalid('The key in the first `x5c` certificate MUST match the public key represented by the JWK')\n          }\n        }\n      })\n    }\n\n    Object.defineProperties(this, {\n      [KEYOBJECT]: { value: isObject(keyObject) ? undefined : keyObject },\n      keyObject: {\n        get () {\n          if (!keyObjectSupported) {\n            throw new errors.JOSENotSupported('KeyObject class is not supported in your Node.js runtime version')\n          }\n\n          return this[KEYOBJECT]\n        }\n      },\n      type: { value: keyObject.type },\n      private: { value: keyObject.type === 'private' },\n      public: { value: keyObject.type === 'public' },\n      secret: { value: keyObject.type === 'secret' },\n      alg: { value: alg, enumerable: alg !== undefined },\n      use: { value: use, enumerable: use !== undefined },\n      x5c: {\n        enumerable: x5c !== undefined,\n        ...(x5c ? { get () { return [...x5c] } } : { value: undefined })\n      },\n      key_ops: {\n        enumerable: ops !== undefined,\n        ...(ops ? { get () { return [...ops] } } : { value: undefined })\n      },\n      kid: {\n        enumerable: true,\n        ...(kid\n          ? { value: kid }\n          : {\n              get () {\n                Object.defineProperty(this, 'kid', { value: this.thumbprint, configurable: false })\n                return this.kid\n              },\n              configurable: true\n            })\n      },\n      ...(x5c\n        ? {\n            x5t: {\n              enumerable: true,\n              ...(x5t\n                ? { value: x5t }\n                : {\n                    get () {\n                      Object.defineProperty(this, 'x5t', { value: thumbprint.x5t(this.x5c[0]), configurable: false })\n                      return this.x5t\n                    },\n                    configurable: true\n                  })\n            }\n          }\n        : undefined),\n      ...(x5c\n        ? {\n            'x5t#S256': {\n              enumerable: true,\n              ...(x5t256\n                ? { value: x5t256 }\n                : {\n                    get () {\n                      Object.defineProperty(this, 'x5t#S256', { value: thumbprint['x5t#S256'](this.x5c[0]), configurable: false })\n                      return this['x5t#S256']\n                    },\n                    configurable: true\n                  })\n            }\n          }\n        : undefined),\n      thumbprint: {\n        get () {\n          Object.defineProperty(this, 'thumbprint', { value: thumbprint.kid(this[THUMBPRINT_MATERIAL]()), configurable: false })\n          return this.thumbprint\n        },\n        configurable: true\n      }\n    })\n  }\n\n  toPEM (priv = false, encoding = {}) {\n    if (this.secret) {\n      throw new TypeError('symmetric keys cannot be exported as PEM')\n    }\n\n    if (priv && this.public === true) {\n      throw new TypeError('public key cannot be exported as private')\n    }\n\n    const { type = priv ? 'pkcs8' : 'spki', cipher, passphrase } = encoding\n\n    let keyObject = this[KEYOBJECT]\n\n    if (!priv) {\n      if (this.private) {\n        keyObject = createPublicKey(keyObject)\n      }\n      if (cipher || passphrase) {\n        throw new TypeError('cipher and passphrase can only be applied when exporting private keys')\n      }\n    }\n\n    if (priv) {\n      return keyObject.export({ format: 'pem', type, cipher, passphrase })\n    }\n\n    return keyObject.export({ format: 'pem', type })\n  }\n\n  toJWK (priv = false) {\n    if (priv && this.public === true) {\n      throw new TypeError('public key cannot be exported as private')\n    }\n\n    const components = [...this.constructor[priv ? PRIVATE_MEMBERS : PUBLIC_MEMBERS]]\n      .map(k => [k, this[k]])\n\n    const result = {}\n\n    Object.keys(components).forEach((key) => {\n      const [k, v] = components[key]\n\n      result[k] = v\n    })\n\n    result.kty = this.kty\n    result.kid = this.kid\n\n    if (this.alg) {\n      result.alg = this.alg\n    }\n\n    if (this.key_ops && this.key_ops.length) {\n      result.key_ops = this.key_ops\n    }\n\n    if (this.use) {\n      result.use = this.use\n    }\n\n    if (this.x5c) {\n      result.x5c = this.x5c\n    }\n\n    if (this.x5t) {\n      result.x5t = this.x5t\n    }\n\n    if (this['x5t#S256']) {\n      result['x5t#S256'] = this['x5t#S256']\n    }\n\n    return result\n  }\n\n  [JWK_MEMBERS] () {\n    const props = this[KEYOBJECT].type === 'private' ? this.constructor[PRIVATE_MEMBERS] : this.constructor[PUBLIC_MEMBERS]\n    Object.defineProperties(this, [...props].reduce((acc, component) => {\n      acc[component] = {\n        get () {\n          const jwk = keyObjectToJWK(this[KEYOBJECT])\n          Object.defineProperties(\n            this,\n            Object.entries(jwk)\n              .filter(([key]) => props.has(key))\n              .reduce((acc, [key, value]) => {\n                acc[key] = { value, enumerable: this.constructor[PUBLIC_MEMBERS].has(key), configurable: false }\n                return acc\n              }, {})\n          )\n\n          return this[component]\n        },\n        enumerable: this.constructor[PUBLIC_MEMBERS].has(component),\n        configurable: true\n      }\n      return acc\n    }, {}))\n  }\n\n  /* c8 ignore next 8 */\n  [inspect.custom] () {\n    return `${this.constructor.name} ${inspect(this.toJWK(false), {\n      depth: Infinity,\n      colors: process.stdout.isTTY,\n      compact: false,\n      sorted: true\n    })}`\n  }\n\n  /* c8 ignore next 3 */\n  [THUMBPRINT_MATERIAL] () {\n    throw new Error(`\"[THUMBPRINT_MATERIAL]()\" is not implemented on ${this.constructor.name}`)\n  }\n\n  algorithms (operation, /* the rest is private API */ int, opts) {\n    const { use = this.use, alg = this.alg, key_ops: ops = this.key_ops } = int === privateApi ? opts : {}\n    if (alg) {\n      return new Set(this.algorithms(operation, privateApi, { alg: null, use, key_ops: ops }).has(alg) ? [alg] : undefined)\n    }\n\n    if (typeof operation === 'symbol') {\n      try {\n        return this[operation]()\n      } catch (err) {\n        return new Set()\n      }\n    }\n\n    if (operation && ops && !ops.includes(operation)) {\n      return new Set()\n    }\n\n    switch (operation) {\n      case 'decrypt':\n      case 'deriveKey':\n      case 'encrypt':\n      case 'sign':\n      case 'unwrapKey':\n      case 'verify':\n      case 'wrapKey':\n        return new Set(Object.entries(JWK[this.kty][operation]).map(([alg, fn]) => fn(this) ? alg : undefined).filter(Boolean))\n      case undefined:\n        return new Set([\n          ...this.algorithms('sign'),\n          ...this.algorithms('verify'),\n          ...this.algorithms('decrypt'),\n          ...this.algorithms('encrypt'),\n          ...this.algorithms('unwrapKey'),\n          ...this.algorithms('wrapKey'),\n          ...this.algorithms('deriveKey')\n        ])\n      default:\n        throw new TypeError('invalid key operation')\n    }\n  }\n\n  /* c8 ignore next 3 */\n  static async generate () {\n    throw new Error(`\"static async generate()\" is not implemented on ${this.name}`)\n  }\n\n  /* c8 ignore next 3 */\n  static generateSync () {\n    throw new Error(`\"static generateSync()\" is not implemented on ${this.name}`)\n  }\n\n  /* c8 ignore next 3 */\n  static get [PUBLIC_MEMBERS] () {\n    throw new Error(`\"static get [PUBLIC_MEMBERS]()\" is not implemented on ${this.name}`)\n  }\n\n  /* c8 ignore next 3 */\n  static get [PRIVATE_MEMBERS] () {\n    throw new Error(`\"static get [PRIVATE_MEMBERS]()\" is not implemented on ${this.name}`)\n  }\n}\n\nmodule.exports = Key\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwk/key/base.js?")},"./node_modules/jose/lib/jwk/key/ec.js":
/*!*********************************************!*\
  !*** ./node_modules/jose/lib/jwk/key/ec.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { generateKeyPairSync, generateKeyPair: async } = __webpack_require__(/*! crypto */ \"crypto\")\nconst { promisify } = __webpack_require__(/*! util */ \"util\")\n\nconst {\n  THUMBPRINT_MATERIAL, JWK_MEMBERS, PUBLIC_MEMBERS,\n  PRIVATE_MEMBERS, KEY_MANAGEMENT_DECRYPT, KEY_MANAGEMENT_ENCRYPT\n} = __webpack_require__(/*! ../../help/consts */ \"./node_modules/jose/lib/help/consts.js\")\nconst { EC_CURVES } = __webpack_require__(/*! ../../registry */ \"./node_modules/jose/lib/registry/index.js\")\nconst { keyObjectSupported } = __webpack_require__(/*! ../../help/runtime_support */ \"./node_modules/jose/lib/help/runtime_support.js\")\nconst { createPublicKey, createPrivateKey } = __webpack_require__(/*! ../../help/key_object */ \"./node_modules/jose/lib/help/key_object.js\")\n\nconst errors = __webpack_require__(/*! ../../errors */ \"./node_modules/jose/lib/errors.js\")\n\nconst Key = __webpack_require__(/*! ./base */ \"./node_modules/jose/lib/jwk/key/base.js\")\n\nconst generateKeyPair = promisify(async)\n\nconst EC_PUBLIC = new Set(['crv', 'x', 'y'])\nObject.freeze(EC_PUBLIC)\nconst EC_PRIVATE = new Set([...EC_PUBLIC, 'd'])\nObject.freeze(EC_PRIVATE)\n\n// Elliptic Curve Key Type\nclass ECKey extends Key {\n  constructor (...args) {\n    super(...args)\n    this[JWK_MEMBERS]()\n    Object.defineProperty(this, 'kty', { value: 'EC', enumerable: true })\n    if (!EC_CURVES.has(this.crv)) {\n      throw new errors.JOSENotSupported('unsupported EC key curve')\n    }\n  }\n\n  static get [PUBLIC_MEMBERS] () {\n    return EC_PUBLIC\n  }\n\n  static get [PRIVATE_MEMBERS] () {\n    return EC_PRIVATE\n  }\n\n  // https://tc39.github.io/ecma262/#sec-ordinaryownpropertykeys no need for any special\n  // JSON.stringify handling in V8\n  [THUMBPRINT_MATERIAL] () {\n    return { crv: this.crv, kty: 'EC', x: this.x, y: this.y }\n  }\n\n  [KEY_MANAGEMENT_ENCRYPT] () {\n    return this.algorithms('deriveKey')\n  }\n\n  [KEY_MANAGEMENT_DECRYPT] () {\n    if (this.public) {\n      return new Set()\n    }\n    return this.algorithms('deriveKey')\n  }\n\n  static async generate (crv = 'P-256', privat = true) {\n    if (!EC_CURVES.has(crv)) {\n      throw new errors.JOSENotSupported(`unsupported EC key curve: ${crv}`)\n    }\n\n    let privateKey, publicKey\n\n    if (keyObjectSupported) {\n      ({ privateKey, publicKey } = await generateKeyPair('ec', { namedCurve: crv }))\n      return privat ? privateKey : publicKey\n    }\n\n    ({ privateKey, publicKey } = await generateKeyPair('ec', {\n      namedCurve: crv,\n      publicKeyEncoding: { type: 'spki', format: 'pem' },\n      privateKeyEncoding: { type: 'pkcs8', format: 'pem' }\n    }))\n\n    if (privat) {\n      return createPrivateKey(privateKey)\n    } else {\n      return createPublicKey(publicKey)\n    }\n  }\n\n  static generateSync (crv = 'P-256', privat = true) {\n    if (!EC_CURVES.has(crv)) {\n      throw new errors.JOSENotSupported(`unsupported EC key curve: ${crv}`)\n    }\n\n    let privateKey, publicKey\n\n    if (keyObjectSupported) {\n      ({ privateKey, publicKey } = generateKeyPairSync('ec', { namedCurve: crv }))\n      return privat ? privateKey : publicKey\n    }\n\n    ({ privateKey, publicKey } = generateKeyPairSync('ec', {\n      namedCurve: crv,\n      publicKeyEncoding: { type: 'spki', format: 'pem' },\n      privateKeyEncoding: { type: 'pkcs8', format: 'pem' }\n    }))\n\n    if (privat) {\n      return createPrivateKey(privateKey)\n    } else {\n      return createPublicKey(publicKey)\n    }\n  }\n}\n\nmodule.exports = ECKey\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwk/key/ec.js?")},"./node_modules/jose/lib/jwk/key/embedded.jwk.js":
/*!*******************************************************!*\
  !*** ./node_modules/jose/lib/jwk/key/embedded.jwk.js ***!
  \*******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { inspect } = __webpack_require__(/*! util */ \"util\")\n\nconst Key = __webpack_require__(/*! ./base */ \"./node_modules/jose/lib/jwk/key/base.js\")\n\nclass EmbeddedJWK extends Key {\n  constructor () {\n    super({ type: 'embedded' })\n    Object.defineProperties(this, {\n      kid: { value: undefined },\n      kty: { value: undefined },\n      thumbprint: { value: undefined },\n      toJWK: { value: undefined },\n      toPEM: { value: undefined }\n    })\n  }\n\n  /* c8 ignore next 3 */\n  [inspect.custom] () {\n    return 'Embedded.JWK {}'\n  }\n\n  algorithms () {\n    return new Set()\n  }\n}\n\nmodule.exports = new EmbeddedJWK()\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwk/key/embedded.jwk.js?")},"./node_modules/jose/lib/jwk/key/embedded.x5c.js":
/*!*******************************************************!*\
  !*** ./node_modules/jose/lib/jwk/key/embedded.x5c.js ***!
  \*******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { inspect } = __webpack_require__(/*! util */ \"util\")\n\nconst Key = __webpack_require__(/*! ./base */ \"./node_modules/jose/lib/jwk/key/base.js\")\n\nclass EmbeddedX5C extends Key {\n  constructor () {\n    super({ type: 'embedded' })\n    Object.defineProperties(this, {\n      kid: { value: undefined },\n      kty: { value: undefined },\n      thumbprint: { value: undefined },\n      toJWK: { value: undefined },\n      toPEM: { value: undefined }\n    })\n  }\n\n  /* c8 ignore next 3 */\n  [inspect.custom] () {\n    return 'Embedded.X5C {}'\n  }\n\n  algorithms () {\n    return new Set()\n  }\n}\n\nmodule.exports = new EmbeddedX5C()\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwk/key/embedded.x5c.js?")},"./node_modules/jose/lib/jwk/key/none.js":
/*!***********************************************!*\
  !*** ./node_modules/jose/lib/jwk/key/none.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { inspect } = __webpack_require__(/*! util */ \"util\")\n\nconst Key = __webpack_require__(/*! ./base */ \"./node_modules/jose/lib/jwk/key/base.js\")\n\nclass NoneKey extends Key {\n  constructor () {\n    super({ type: 'unsecured' }, { alg: 'none' })\n    Object.defineProperties(this, {\n      kid: { value: undefined },\n      kty: { value: undefined },\n      thumbprint: { value: undefined },\n      toJWK: { value: undefined },\n      toPEM: { value: undefined }\n    })\n  }\n\n  /* c8 ignore next 3 */\n  [inspect.custom] () {\n    return 'None {}'\n  }\n\n  algorithms (operation) {\n    switch (operation) {\n      case 'sign':\n      case 'verify':\n      case undefined:\n        return new Set(['none'])\n      default:\n        return new Set()\n    }\n  }\n}\n\nmodule.exports = new NoneKey()\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwk/key/none.js?")},"./node_modules/jose/lib/jwk/key/oct.js":
/*!**********************************************!*\
  !*** ./node_modules/jose/lib/jwk/key/oct.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { randomBytes } = __webpack_require__(/*! crypto */ \"crypto\")\n\nconst { createSecretKey } = __webpack_require__(/*! ../../help/key_object */ \"./node_modules/jose/lib/help/key_object.js\")\nconst base64url = __webpack_require__(/*! ../../help/base64url */ \"./node_modules/jose/lib/help/base64url.js\")\nconst {\n  THUMBPRINT_MATERIAL, PUBLIC_MEMBERS, PRIVATE_MEMBERS,\n  KEY_MANAGEMENT_DECRYPT, KEY_MANAGEMENT_ENCRYPT, KEYOBJECT\n} = __webpack_require__(/*! ../../help/consts */ \"./node_modules/jose/lib/help/consts.js\")\n\nconst Key = __webpack_require__(/*! ./base */ \"./node_modules/jose/lib/jwk/key/base.js\")\n\nconst OCT_PUBLIC = new Set()\nObject.freeze(OCT_PUBLIC)\nconst OCT_PRIVATE = new Set(['k'])\nObject.freeze(OCT_PRIVATE)\n\n// Octet sequence Key Type\nclass OctKey extends Key {\n  constructor (...args) {\n    super(...args)\n    Object.defineProperties(this, {\n      kty: {\n        value: 'oct',\n        enumerable: true\n      },\n      length: {\n        value: this[KEYOBJECT] ? this[KEYOBJECT].symmetricKeySize * 8 : undefined\n      },\n      k: {\n        enumerable: false,\n        get () {\n          if (this[KEYOBJECT]) {\n            Object.defineProperty(this, 'k', {\n              value: base64url.encodeBuffer(this[KEYOBJECT].export()),\n              configurable: false\n            })\n          } else {\n            Object.defineProperty(this, 'k', {\n              value: undefined,\n              configurable: false\n            })\n          }\n\n          return this.k\n        },\n        configurable: true\n      }\n    })\n  }\n\n  static get [PUBLIC_MEMBERS] () {\n    return OCT_PUBLIC\n  }\n\n  static get [PRIVATE_MEMBERS] () {\n    return OCT_PRIVATE\n  }\n\n  // https://tc39.github.io/ecma262/#sec-ordinaryownpropertykeys no need for any special\n  // JSON.stringify handling in V8\n  [THUMBPRINT_MATERIAL] () {\n    if (!this[KEYOBJECT]) {\n      throw new TypeError('reference \"oct\" keys without \"k\" cannot have their thumbprint calculated')\n    }\n    return { k: this.k, kty: 'oct' }\n  }\n\n  [KEY_MANAGEMENT_ENCRYPT] () {\n    return new Set([\n      ...this.algorithms('wrapKey'),\n      ...this.algorithms('deriveKey')\n    ])\n  }\n\n  [KEY_MANAGEMENT_DECRYPT] () {\n    return this[KEY_MANAGEMENT_ENCRYPT]()\n  }\n\n  algorithms (...args) {\n    if (!this[KEYOBJECT]) {\n      return new Set()\n    }\n\n    return Key.prototype.algorithms.call(this, ...args)\n  }\n\n  static async generate (...args) {\n    return this.generateSync(...args)\n  }\n\n  static generateSync (len = 256, privat = true) {\n    if (!privat) {\n      throw new TypeError('\"oct\" keys cannot be generated as public')\n    }\n    if (!Number.isSafeInteger(len) || !len || len % 8 !== 0) {\n      throw new TypeError('invalid bit length')\n    }\n\n    return createSecretKey(randomBytes(len / 8))\n  }\n}\n\nmodule.exports = OctKey\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwk/key/oct.js?")},"./node_modules/jose/lib/jwk/key/okp.js":
/*!**********************************************!*\
  !*** ./node_modules/jose/lib/jwk/key/okp.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { generateKeyPairSync, generateKeyPair: async } = __webpack_require__(/*! crypto */ \"crypto\")\nconst { promisify } = __webpack_require__(/*! util */ \"util\")\n\nconst {\n  THUMBPRINT_MATERIAL, JWK_MEMBERS, PUBLIC_MEMBERS,\n  PRIVATE_MEMBERS, KEY_MANAGEMENT_DECRYPT, KEY_MANAGEMENT_ENCRYPT\n} = __webpack_require__(/*! ../../help/consts */ \"./node_modules/jose/lib/help/consts.js\")\nconst { OKP_CURVES } = __webpack_require__(/*! ../../registry */ \"./node_modules/jose/lib/registry/index.js\")\nconst { edDSASupported } = __webpack_require__(/*! ../../help/runtime_support */ \"./node_modules/jose/lib/help/runtime_support.js\")\nconst errors = __webpack_require__(/*! ../../errors */ \"./node_modules/jose/lib/errors.js\")\n\nconst Key = __webpack_require__(/*! ./base */ \"./node_modules/jose/lib/jwk/key/base.js\")\n\nconst generateKeyPair = promisify(async)\n\nconst OKP_PUBLIC = new Set(['crv', 'x'])\nObject.freeze(OKP_PUBLIC)\nconst OKP_PRIVATE = new Set([...OKP_PUBLIC, 'd'])\nObject.freeze(OKP_PRIVATE)\n\n// Octet string key pairs Key Type\nclass OKPKey extends Key {\n  constructor (...args) {\n    super(...args)\n    this[JWK_MEMBERS]()\n    Object.defineProperty(this, 'kty', { value: 'OKP', enumerable: true })\n    if (!OKP_CURVES.has(this.crv)) {\n      throw new errors.JOSENotSupported('unsupported OKP key curve')\n    }\n  }\n\n  static get [PUBLIC_MEMBERS] () {\n    return OKP_PUBLIC\n  }\n\n  static get [PRIVATE_MEMBERS] () {\n    return OKP_PRIVATE\n  }\n\n  // https://tc39.github.io/ecma262/#sec-ordinaryownpropertykeys no need for any special\n  // JSON.stringify handling in V8\n  [THUMBPRINT_MATERIAL] () {\n    return { crv: this.crv, kty: 'OKP', x: this.x }\n  }\n\n  [KEY_MANAGEMENT_ENCRYPT] () {\n    return this.algorithms('deriveKey')\n  }\n\n  [KEY_MANAGEMENT_DECRYPT] () {\n    if (this.public) {\n      return new Set()\n    }\n    return this.algorithms('deriveKey')\n  }\n\n  static async generate (crv = 'Ed25519', privat = true) {\n    if (!edDSASupported) {\n      throw new errors.JOSENotSupported('OKP keys are not supported in your Node.js runtime version')\n    }\n\n    if (!OKP_CURVES.has(crv)) {\n      throw new errors.JOSENotSupported(`unsupported OKP key curve: ${crv}`)\n    }\n\n    const { privateKey, publicKey } = await generateKeyPair(crv.toLowerCase())\n\n    return privat ? privateKey : publicKey\n  }\n\n  static generateSync (crv = 'Ed25519', privat = true) {\n    if (!edDSASupported) {\n      throw new errors.JOSENotSupported('OKP keys are not supported in your Node.js runtime version')\n    }\n\n    if (!OKP_CURVES.has(crv)) {\n      throw new errors.JOSENotSupported(`unsupported OKP key curve: ${crv}`)\n    }\n\n    const { privateKey, publicKey } = generateKeyPairSync(crv.toLowerCase())\n\n    return privat ? privateKey : publicKey\n  }\n}\n\nmodule.exports = OKPKey\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwk/key/okp.js?")},"./node_modules/jose/lib/jwk/key/rsa.js":
/*!**********************************************!*\
  !*** ./node_modules/jose/lib/jwk/key/rsa.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { generateKeyPairSync, generateKeyPair: async } = __webpack_require__(/*! crypto */ \"crypto\")\nconst { promisify } = __webpack_require__(/*! util */ \"util\")\n\nconst {\n  THUMBPRINT_MATERIAL, JWK_MEMBERS, PUBLIC_MEMBERS,\n  PRIVATE_MEMBERS, KEY_MANAGEMENT_DECRYPT, KEY_MANAGEMENT_ENCRYPT\n} = __webpack_require__(/*! ../../help/consts */ \"./node_modules/jose/lib/help/consts.js\")\nconst { keyObjectSupported } = __webpack_require__(/*! ../../help/runtime_support */ \"./node_modules/jose/lib/help/runtime_support.js\")\nconst { createPublicKey, createPrivateKey } = __webpack_require__(/*! ../../help/key_object */ \"./node_modules/jose/lib/help/key_object.js\")\n\nconst Key = __webpack_require__(/*! ./base */ \"./node_modules/jose/lib/jwk/key/base.js\")\n\nconst generateKeyPair = promisify(async)\n\nconst RSA_PUBLIC = new Set(['e', 'n'])\nObject.freeze(RSA_PUBLIC)\nconst RSA_PRIVATE = new Set([...RSA_PUBLIC, 'd', 'p', 'q', 'dp', 'dq', 'qi'])\nObject.freeze(RSA_PRIVATE)\n\n// RSA Key Type\nclass RSAKey extends Key {\n  constructor (...args) {\n    super(...args)\n    this[JWK_MEMBERS]()\n    Object.defineProperties(this, {\n      kty: {\n        value: 'RSA',\n        enumerable: true\n      },\n      length: {\n        get () {\n          Object.defineProperty(this, 'length', {\n            value: Buffer.byteLength(this.n, 'base64') * 8,\n            configurable: false\n          })\n\n          return this.length\n        },\n        configurable: true\n      }\n    })\n  }\n\n  static get [PUBLIC_MEMBERS] () {\n    return RSA_PUBLIC\n  }\n\n  static get [PRIVATE_MEMBERS] () {\n    return RSA_PRIVATE\n  }\n\n  // https://tc39.github.io/ecma262/#sec-ordinaryownpropertykeys no need for any special\n  // JSON.stringify handling in V8\n  [THUMBPRINT_MATERIAL] () {\n    return { e: this.e, kty: 'RSA', n: this.n }\n  }\n\n  [KEY_MANAGEMENT_ENCRYPT] () {\n    return this.algorithms('wrapKey')\n  }\n\n  [KEY_MANAGEMENT_DECRYPT] () {\n    return this.algorithms('unwrapKey')\n  }\n\n  static async generate (len = 2048, privat = true) {\n    if (!Number.isSafeInteger(len) || len < 512 || len % 8 !== 0 || (('electron' in process.versions) && len % 128 !== 0)) {\n      throw new TypeError('invalid bit length')\n    }\n\n    let privateKey, publicKey\n\n    if (keyObjectSupported) {\n      ({ privateKey, publicKey } = await generateKeyPair('rsa', { modulusLength: len }))\n      return privat ? privateKey : publicKey\n    }\n\n    ({ privateKey, publicKey } = await generateKeyPair('rsa', {\n      modulusLength: len,\n      publicKeyEncoding: { type: 'spki', format: 'pem' },\n      privateKeyEncoding: { type: 'pkcs8', format: 'pem' }\n    }))\n\n    if (privat) {\n      return createPrivateKey(privateKey)\n    } else {\n      return createPublicKey(publicKey)\n    }\n  }\n\n  static generateSync (len = 2048, privat = true) {\n    if (!Number.isSafeInteger(len) || len < 512 || len % 8 !== 0 || (('electron' in process.versions) && len % 128 !== 0)) {\n      throw new TypeError('invalid bit length')\n    }\n\n    let privateKey, publicKey\n\n    if (keyObjectSupported) {\n      ({ privateKey, publicKey } = generateKeyPairSync('rsa', { modulusLength: len }))\n      return privat ? privateKey : publicKey\n    }\n\n    ({ privateKey, publicKey } = generateKeyPairSync('rsa', {\n      modulusLength: len,\n      publicKeyEncoding: { type: 'spki', format: 'pem' },\n      privateKeyEncoding: { type: 'pkcs8', format: 'pem' }\n    }))\n\n    if (privat) {\n      return createPrivateKey(privateKey)\n    } else {\n      return createPublicKey(publicKey)\n    }\n  }\n}\n\nmodule.exports = RSAKey\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwk/key/rsa.js?")},"./node_modules/jose/lib/jwk/thumbprint.js":
/*!*************************************************!*\
  !*** ./node_modules/jose/lib/jwk/thumbprint.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { createHash } = __webpack_require__(/*! crypto */ \"crypto\")\n\nconst base64url = __webpack_require__(/*! ../help/base64url */ \"./node_modules/jose/lib/help/base64url.js\")\n\nconst x5t = (hash, cert) => base64url.encodeBuffer(createHash(hash).update(Buffer.from(cert, 'base64')).digest())\n\nmodule.exports.kid = components => base64url.encodeBuffer(createHash('sha256').update(JSON.stringify(components)).digest())\nmodule.exports.x5t = x5t.bind(undefined, 'sha1')\nmodule.exports[\"x5t#S256\"] = x5t.bind(undefined, 'sha256')\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwk/thumbprint.js?")},"./node_modules/jose/lib/jwks/index.js":
/*!*********************************************!*\
  !*** ./node_modules/jose/lib/jwks/index.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const KeyStore = __webpack_require__(/*! ./keystore */ "./node_modules/jose/lib/jwks/keystore.js")\n\nmodule.exports = KeyStore\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwks/index.js?')},"./node_modules/jose/lib/jwks/keystore.js":
/*!************************************************!*\
  !*** ./node_modules/jose/lib/jwks/keystore.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { inspect } = __webpack_require__(/*! util */ \"util\")\n\nconst isObject = __webpack_require__(/*! ../help/is_object */ \"./node_modules/jose/lib/help/is_object.js\")\nconst { generate, generateSync } = __webpack_require__(/*! ../jwk/generate */ \"./node_modules/jose/lib/jwk/generate.js\")\nconst { USES_MAPPING } = __webpack_require__(/*! ../help/consts */ \"./node_modules/jose/lib/help/consts.js\")\nconst { isKey, asKey: importKey } = __webpack_require__(/*! ../jwk */ \"./node_modules/jose/lib/jwk/index.js\")\n\nconst keyscore = (key, { alg, use, ops }) => {\n  let score = 0\n\n  if (alg && key.alg) {\n    score++\n  }\n\n  if (use && key.use) {\n    score++\n  }\n\n  if (ops && key.key_ops) {\n    score++\n  }\n\n  return score\n}\n\nclass KeyStore {\n  constructor (...keys) {\n    while (keys.some(Array.isArray)) {\n      keys = keys.flat\n        ? keys.flat()\n        : keys.reduce((acc, val) => {\n          if (Array.isArray(val)) {\n            return [...acc, ...val]\n          }\n\n          acc.push(val)\n          return acc\n        }, [])\n    }\n    if (keys.some(k => !isKey(k) || !k.kty)) {\n      throw new TypeError('all keys must be instances of a key instantiated by JWK.asKey')\n    }\n\n    this._keys = new Set(keys)\n  }\n\n  all ({ alg, kid, thumbprint, use, kty, key_ops: ops, x5t, 'x5t#S256': x5t256, crv } = {}) {\n    if (ops !== undefined && (!Array.isArray(ops) || !ops.length || ops.some(x => typeof x !== 'string'))) {\n      throw new TypeError('`key_ops` must be a non-empty array of strings')\n    }\n\n    const search = { alg, use, ops }\n    return [...this._keys]\n      .filter((key) => {\n        let candidate = true\n\n        if (candidate && kid !== undefined && key.kid !== kid) {\n          candidate = false\n        }\n\n        if (candidate && thumbprint !== undefined && key.thumbprint !== thumbprint) {\n          candidate = false\n        }\n\n        if (candidate && x5t !== undefined && key.x5t !== x5t) {\n          candidate = false\n        }\n\n        if (candidate && x5t256 !== undefined && key['x5t#S256'] !== x5t256) {\n          candidate = false\n        }\n\n        if (candidate && kty !== undefined && key.kty !== kty) {\n          candidate = false\n        }\n\n        if (candidate && crv !== undefined && (key.crv !== crv)) {\n          candidate = false\n        }\n\n        if (alg !== undefined && !key.algorithms().has(alg)) {\n          candidate = false\n        }\n\n        if (candidate && use !== undefined && (key.use !== undefined && key.use !== use)) {\n          candidate = false\n        }\n\n        // TODO:\n        if (candidate && ops !== undefined && (key.key_ops !== undefined || key.use !== undefined)) {\n          let keyOps\n          if (key.key_ops) {\n            keyOps = new Set(key.key_ops)\n          } else {\n            keyOps = USES_MAPPING[key.use]\n          }\n          if (ops.some(x => !keyOps.has(x))) {\n            candidate = false\n          }\n        }\n\n        return candidate\n      })\n      .sort((first, second) => keyscore(second, search) - keyscore(first, search))\n  }\n\n  get (...args) {\n    return this.all(...args)[0]\n  }\n\n  add (key) {\n    if (!isKey(key) || !key.kty) {\n      throw new TypeError('key must be an instance of a key instantiated by JWK.asKey')\n    }\n\n    this._keys.add(key)\n  }\n\n  remove (key) {\n    if (!isKey(key)) {\n      throw new TypeError('key must be an instance of a key instantiated by JWK.asKey')\n    }\n\n    this._keys.delete(key)\n  }\n\n  toJWKS (priv = false) {\n    return {\n      keys: [...this._keys.values()].map(\n        key => key.toJWK(priv && (key.private || (key.secret && key.k)))\n      )\n    }\n  }\n\n  async generate (...args) {\n    this._keys.add(await generate(...args))\n  }\n\n  generateSync (...args) {\n    this._keys.add(generateSync(...args))\n  }\n\n  get size () {\n    return this._keys.size\n  }\n\n  /* c8 ignore next 8 */\n  [inspect.custom] () {\n    return `${this.constructor.name} ${inspect(this.toJWKS(false), {\n      depth: Infinity,\n      colors: process.stdout.isTTY,\n      compact: false,\n      sorted: true\n    })}`\n  }\n\n  * [Symbol.iterator] () {\n    for (const key of this._keys) {\n      yield key\n    }\n  }\n}\n\nfunction asKeyStore (jwks, { ignoreErrors = false, calculateMissingRSAPrimes = false } = {}) {\n  if (!isObject(jwks) || !Array.isArray(jwks.keys) || jwks.keys.some(k => !isObject(k) || !('kty' in k))) {\n    throw new TypeError('jwks must be a JSON Web Key Set formatted object')\n  }\n\n  const keys = jwks.keys.map((jwk) => {\n    try {\n      return importKey(jwk, { calculateMissingRSAPrimes })\n    } catch (err) {\n      if (!ignoreErrors) {\n        throw err\n      }\n      return undefined\n    }\n  }).filter(Boolean)\n\n  return new KeyStore(...keys)\n}\n\nmodule.exports = { KeyStore, asKeyStore }\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwks/keystore.js?")},"./node_modules/jose/lib/jws/index.js":
/*!********************************************!*\
  !*** ./node_modules/jose/lib/jws/index.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const Sign = __webpack_require__(/*! ./sign */ \"./node_modules/jose/lib/jws/sign.js\")\nconst { verify } = __webpack_require__(/*! ./verify */ \"./node_modules/jose/lib/jws/verify.js\")\n\nconst single = (serialization, payload, key, protectedHeader, unprotectedHeader) => {\n  return new Sign(payload)\n    .recipient(key, protectedHeader, unprotectedHeader)\n    .sign(serialization)\n}\n\nmodule.exports.Sign = Sign\nmodule.exports.sign = single.bind(undefined, 'compact')\nmodule.exports.sign.flattened = single.bind(undefined, 'flattened')\nmodule.exports.sign.general = single.bind(undefined, 'general')\n\nmodule.exports.verify = verify\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jws/index.js?")},"./node_modules/jose/lib/jws/serializers.js":
/*!**************************************************!*\
  !*** ./node_modules/jose/lib/jws/serializers.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const isObject = __webpack_require__(/*! ../help/is_object */ \"./node_modules/jose/lib/help/is_object.js\")\nlet validateCrit = __webpack_require__(/*! ../help/validate_crit */ \"./node_modules/jose/lib/help/validate_crit.js\")\nconst { JWSInvalid } = __webpack_require__(/*! ../errors */ \"./node_modules/jose/lib/errors.js\")\n\nvalidateCrit = validateCrit.bind(undefined, JWSInvalid)\n\nconst compactSerializer = (payload, [recipient]) => {\n  return `${recipient.protected}.${payload}.${recipient.signature}`\n}\ncompactSerializer.validate = (jws, { 0: { unprotectedHeader, protectedHeader }, length }) => {\n  if (length !== 1 || unprotectedHeader) {\n    throw new JWSInvalid('JWS Compact Serialization doesn\\'t support multiple recipients or JWS unprotected headers')\n  }\n  validateCrit(protectedHeader, unprotectedHeader, protectedHeader ? protectedHeader.crit : undefined)\n}\n\nconst flattenedSerializer = (payload, [recipient]) => {\n  const { header, signature, protected: prot } = recipient\n\n  return {\n    payload,\n    ...prot ? { protected: prot } : undefined,\n    ...header ? { header } : undefined,\n    signature\n  }\n}\nflattenedSerializer.validate = (jws, { 0: { unprotectedHeader, protectedHeader }, length }) => {\n  if (length !== 1) {\n    throw new JWSInvalid('Flattened JWS JSON Serialization doesn\\'t support multiple recipients')\n  }\n  validateCrit(protectedHeader, unprotectedHeader, protectedHeader ? protectedHeader.crit : undefined)\n}\n\nconst generalSerializer = (payload, recipients) => {\n  return {\n    payload,\n    signatures: recipients.map(({ header, signature, protected: prot }) => {\n      return {\n        ...prot ? { protected: prot } : undefined,\n        ...header ? { header } : undefined,\n        signature\n      }\n    })\n  }\n}\ngeneralSerializer.validate = (jws, recipients) => {\n  let validateB64 = false\n  recipients.forEach(({ protectedHeader, unprotectedHeader }) => {\n    if (protectedHeader && !validateB64 && 'b64' in protectedHeader) {\n      validateB64 = true\n    }\n    validateCrit(protectedHeader, unprotectedHeader, protectedHeader ? protectedHeader.crit : undefined)\n  })\n\n  if (validateB64) {\n    const values = recipients.map(({ protectedHeader }) => protectedHeader && protectedHeader.b64)\n    if (!values.every((actual, i, [expected]) => actual === expected)) {\n      throw new JWSInvalid('the \"b64\" Header Parameter value MUST be the same for all recipients')\n    }\n  }\n}\n\nconst isJSON = (input) => {\n  return isObject(input) && (typeof input.payload === 'string' || Buffer.isBuffer(input.payload))\n}\n\nconst isValidRecipient = (recipient) => {\n  return isObject(recipient) && typeof recipient.signature === 'string' &&\n    (recipient.header === undefined || isObject(recipient.header)) &&\n    (recipient.protected === undefined || typeof recipient.protected === 'string')\n}\n\nconst isMultiRecipient = (input) => {\n  if (Array.isArray(input.signatures) && input.signatures.every(isValidRecipient)) {\n    return true\n  }\n\n  return false\n}\n\nconst detect = (input) => {\n  if (typeof input === 'string' && input.split('.').length === 3) {\n    return 'compact'\n  }\n\n  if (isJSON(input)) {\n    if (isMultiRecipient(input)) {\n      return 'general'\n    }\n\n    if (isValidRecipient(input)) {\n      return 'flattened'\n    }\n  }\n\n  throw new JWSInvalid('JWS malformed or invalid serialization')\n}\n\nmodule.exports = {\n  compact: compactSerializer,\n  flattened: flattenedSerializer,\n  general: generalSerializer,\n  detect\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jws/serializers.js?")},"./node_modules/jose/lib/jws/sign.js":
/*!*******************************************!*\
  !*** ./node_modules/jose/lib/jws/sign.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const base64url = __webpack_require__(/*! ../help/base64url */ \"./node_modules/jose/lib/help/base64url.js\")\nconst isDisjoint = __webpack_require__(/*! ../help/is_disjoint */ \"./node_modules/jose/lib/help/is_disjoint.js\")\nconst isObject = __webpack_require__(/*! ../help/is_object */ \"./node_modules/jose/lib/help/is_object.js\")\nconst deepClone = __webpack_require__(/*! ../help/deep_clone */ \"./node_modules/jose/lib/help/deep_clone.js\")\nconst { JWSInvalid } = __webpack_require__(/*! ../errors */ \"./node_modules/jose/lib/errors.js\")\nconst { sign } = __webpack_require__(/*! ../jwa */ \"./node_modules/jose/lib/jwa/index.js\")\nconst getKey = __webpack_require__(/*! ../help/get_key */ \"./node_modules/jose/lib/help/get_key.js\")\n\nconst serializers = __webpack_require__(/*! ./serializers */ \"./node_modules/jose/lib/jws/serializers.js\")\n\nconst PROCESS_RECIPIENT = Symbol('PROCESS_RECIPIENT')\n\nclass Sign {\n  constructor (payload) {\n    if (typeof payload === 'string') {\n      payload = base64url.encode(payload)\n    } else if (Buffer.isBuffer(payload)) {\n      payload = base64url.encodeBuffer(payload)\n      this._binary = true\n    } else if (isObject(payload)) {\n      payload = base64url.JSON.encode(payload)\n    } else {\n      throw new TypeError('payload argument must be a Buffer, string or an object')\n    }\n\n    this._payload = payload\n    this._recipients = []\n  }\n\n  /*\n   * @public\n   */\n  recipient (key, protectedHeader, unprotectedHeader) {\n    key = getKey(key)\n\n    if (protectedHeader !== undefined && !isObject(protectedHeader)) {\n      throw new TypeError('protectedHeader argument must be a plain object when provided')\n    }\n\n    if (unprotectedHeader !== undefined && !isObject(unprotectedHeader)) {\n      throw new TypeError('unprotectedHeader argument must be a plain object when provided')\n    }\n\n    if (!isDisjoint(protectedHeader, unprotectedHeader)) {\n      throw new JWSInvalid('JWS Protected and JWS Unprotected Header Parameter names must be disjoint')\n    }\n\n    this._recipients.push({\n      key,\n      protectedHeader: protectedHeader ? deepClone(protectedHeader) : undefined,\n      unprotectedHeader: unprotectedHeader ? deepClone(unprotectedHeader) : undefined\n    })\n\n    return this\n  }\n\n  /*\n   * @private\n   */\n  [PROCESS_RECIPIENT] (recipient, first) {\n    const { key, protectedHeader, unprotectedHeader } = recipient\n\n    if (key.use === 'enc') {\n      throw new TypeError('a key with \"use\":\"enc\" is not usable for signing')\n    }\n\n    const joseHeader = {\n      protected: protectedHeader || {},\n      unprotected: unprotectedHeader || {}\n    }\n\n    let alg = joseHeader.protected.alg || joseHeader.unprotected.alg\n\n    if (!alg) {\n      alg = key.alg || [...key.algorithms('sign')][0]\n      if (recipient.protectedHeader) {\n        joseHeader.protected.alg = recipient.protectedHeader.alg = alg\n      } else {\n        joseHeader.protected = recipient.protectedHeader = { alg }\n      }\n    }\n\n    if (!alg) {\n      throw new JWSInvalid('could not resolve a usable \"alg\" for a recipient')\n    }\n\n    recipient.header = unprotectedHeader\n    recipient.protected = Object.keys(joseHeader.protected).length ? base64url.JSON.encode(joseHeader.protected) : ''\n\n    if (first && joseHeader.protected.crit && joseHeader.protected.crit.includes('b64') && joseHeader.protected.b64 === false) {\n      if (this._binary) {\n        this._payload = base64url.decodeToBuffer(this._payload)\n      } else {\n        this._payload = base64url.decode(this._payload)\n      }\n    }\n\n    const data = Buffer.concat([\n      Buffer.from(recipient.protected || ''),\n      Buffer.from('.'),\n      Buffer.from(this._payload)\n    ])\n\n    recipient.signature = base64url.encodeBuffer(sign(alg, key, data))\n  }\n\n  /*\n   * @public\n   */\n  sign (serialization) {\n    const serializer = serializers[serialization]\n    if (!serializer) {\n      throw new TypeError('serialization must be one of \"compact\", \"flattened\", \"general\"')\n    }\n\n    if (!this._recipients.length) {\n      throw new JWSInvalid('missing recipients')\n    }\n\n    serializer.validate(this, this._recipients)\n\n    this._recipients.forEach((recipient, i) => {\n      this[PROCESS_RECIPIENT](recipient, i === 0)\n    })\n\n    return serializer(this._payload, this._recipients)\n  }\n}\n\nmodule.exports = Sign\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jws/sign.js?")},"./node_modules/jose/lib/jws/verify.js":
/*!*********************************************!*\
  !*** ./node_modules/jose/lib/jws/verify.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { EOL } = __webpack_require__(/*! os */ \"os\")\n\nconst base64url = __webpack_require__(/*! ../help/base64url */ \"./node_modules/jose/lib/help/base64url.js\")\nconst isDisjoint = __webpack_require__(/*! ../help/is_disjoint */ \"./node_modules/jose/lib/help/is_disjoint.js\")\nconst isObject = __webpack_require__(/*! ../help/is_object */ \"./node_modules/jose/lib/help/is_object.js\")\nlet validateCrit = __webpack_require__(/*! ../help/validate_crit */ \"./node_modules/jose/lib/help/validate_crit.js\")\nconst getKey = __webpack_require__(/*! ../help/get_key */ \"./node_modules/jose/lib/help/get_key.js\")\nconst { KeyStore } = __webpack_require__(/*! ../jwks */ \"./node_modules/jose/lib/jwks/index.js\")\nconst errors = __webpack_require__(/*! ../errors */ \"./node_modules/jose/lib/errors.js\")\nconst { check, verify } = __webpack_require__(/*! ../jwa */ \"./node_modules/jose/lib/jwa/index.js\")\nconst JWK = __webpack_require__(/*! ../jwk */ \"./node_modules/jose/lib/jwk/index.js\")\n\nconst { detect: resolveSerialization } = __webpack_require__(/*! ./serializers */ \"./node_modules/jose/lib/jws/serializers.js\")\n\nvalidateCrit = validateCrit.bind(undefined, errors.JWSInvalid)\nconst SINGLE_RECIPIENT = new Set(['compact', 'flattened', 'preparsed'])\n\n/*\n * @public\n */\nconst jwsVerify = (skipDisjointCheck, serialization, jws, key, { crit = [], complete = false, algorithms } = {}) => {\n  key = getKey(key, true)\n\n  if (algorithms !== undefined && (!Array.isArray(algorithms) || algorithms.some(s => typeof s !== 'string' || !s))) {\n    throw new TypeError('\"algorithms\" option must be an array of non-empty strings')\n  } else if (algorithms) {\n    algorithms = new Set(algorithms)\n  }\n\n  if (!Array.isArray(crit) || crit.some(s => typeof s !== 'string' || !s)) {\n    throw new TypeError('\"crit\" option must be an array of non-empty strings')\n  }\n\n  if (!serialization) {\n    serialization = resolveSerialization(jws)\n  }\n\n  let prot // protected header\n  let header // unprotected header\n  let payload\n  let signature\n  let alg\n\n  // treat general format with one recipient as flattened\n  // skips iteration and avoids multi errors in this case\n  if (serialization === 'general' && jws.signatures.length === 1) {\n    serialization = 'flattened'\n    const { signatures, ...root } = jws\n    jws = { ...root, ...signatures[0] }\n  }\n\n  let decoded\n\n  if (SINGLE_RECIPIENT.has(serialization)) {\n    let parsedProt = {}\n\n    switch (serialization) {\n      case 'compact': // compact serialization format\n        ([prot, payload, signature] = jws.split('.'))\n        break\n      case 'flattened': // flattened serialization format\n        ({ protected: prot, payload, signature, header } = jws)\n        break\n      case 'preparsed': { // from the JWT module\n        ({ decoded } = jws);\n        ([prot, payload, signature] = jws.token.split('.'))\n        break\n      }\n    }\n\n    if (!header) {\n      skipDisjointCheck = true\n    }\n\n    if (decoded) {\n      parsedProt = decoded.header\n    } else if (prot) {\n      try {\n        parsedProt = base64url.JSON.decode(prot)\n      } catch (err) {\n        throw new errors.JWSInvalid('could not parse JWS protected header')\n      }\n    } else {\n      skipDisjointCheck = skipDisjointCheck || true\n    }\n\n    if (!skipDisjointCheck && !isDisjoint(parsedProt, header)) {\n      throw new errors.JWSInvalid('JWS Protected and JWS Unprotected Header Parameter names must be disjoint')\n    }\n\n    const combinedHeader = { ...parsedProt, ...header }\n    validateCrit(parsedProt, header, crit)\n\n    alg = parsedProt.alg || (header && header.alg)\n    if (!alg) {\n      throw new errors.JWSInvalid('missing JWS signature algorithm')\n    } else if (algorithms && !algorithms.has(alg)) {\n      throw new errors.JOSEAlgNotWhitelisted('alg not whitelisted')\n    }\n\n    if (key instanceof KeyStore) {\n      const keystore = key\n      const keys = keystore.all({ kid: combinedHeader.kid, alg: combinedHeader.alg, key_ops: ['verify'] })\n      switch (keys.length) {\n        case 0:\n          throw new errors.JWKSNoMatchingKey()\n        case 1:\n          // treat the call as if a Key instance was passed in\n          // skips iteration and avoids multi errors in this case\n          key = keys[0]\n          break\n        default: {\n          const errs = []\n          for (const key of keys) {\n            try {\n              return jwsVerify(true, serialization, jws, key, { crit, complete, algorithms: algorithms ? [...algorithms] : undefined })\n            } catch (err) {\n              errs.push(err)\n              continue\n            }\n          }\n\n          const multi = new errors.JOSEMultiError(errs)\n          if ([...multi].some(e => e instanceof errors.JWSVerificationFailed)) {\n            throw new errors.JWSVerificationFailed()\n          }\n          throw multi\n        }\n      }\n    }\n\n    if (key === JWK.EmbeddedJWK) {\n      if (!isObject(combinedHeader.jwk)) {\n        throw new errors.JWSInvalid('JWS Header Parameter \"jwk\" must be a JSON object')\n      }\n      key = JWK.asKey(combinedHeader.jwk)\n      if (key.type !== 'public') {\n        throw new errors.JWSInvalid('JWS Header Parameter \"jwk\" must be a public key')\n      }\n    } else if (key === JWK.EmbeddedX5C) {\n      if (!Array.isArray(combinedHeader.x5c) || !combinedHeader.x5c.length || combinedHeader.x5c.some(c => typeof c !== 'string' || !c)) {\n        throw new errors.JWSInvalid('JWS Header Parameter \"x5c\" must be a JSON array of certificate value strings')\n      }\n      key = JWK.asKey(\n        `-----BEGIN CERTIFICATE-----${EOL}${(combinedHeader.x5c[0].match(/.{1,64}/g) || []).join(EOL)}${EOL}-----END CERTIFICATE-----`,\n        { x5c: combinedHeader.x5c }\n      )\n    }\n\n    check(key, 'verify', alg)\n\n    const toBeVerified = Buffer.concat([\n      Buffer.from(prot || ''),\n      Buffer.from('.'),\n      Buffer.isBuffer(payload) ? payload : Buffer.from(payload)\n    ])\n\n    if (!verify(alg, key, toBeVerified, base64url.decodeToBuffer(signature))) {\n      throw new errors.JWSVerificationFailed()\n    }\n\n    if (combinedHeader.b64 === false) {\n      payload = Buffer.from(payload)\n    } else {\n      payload = base64url.decodeToBuffer(payload)\n    }\n\n    if (complete) {\n      const result = { payload, key }\n      if (prot) result.protected = parsedProt\n      if (header) result.header = header\n      return result\n    }\n\n    return payload\n  }\n\n  // general serialization format\n  const { signatures, ...root } = jws\n  const errs = []\n  for (const recipient of signatures) {\n    try {\n      return jwsVerify(false, 'flattened', { ...root, ...recipient }, key, { crit, complete, algorithms: algorithms ? [...algorithms] : undefined })\n    } catch (err) {\n      errs.push(err)\n      continue\n    }\n  }\n\n  const multi = new errors.JOSEMultiError(errs)\n  if ([...multi].some(e => e instanceof errors.JWSVerificationFailed)) {\n    throw new errors.JWSVerificationFailed()\n  } else if ([...multi].every(e => e instanceof errors.JWKSNoMatchingKey)) {\n    throw new errors.JWKSNoMatchingKey()\n  }\n  throw multi\n}\n\nmodule.exports = {\n  bare: jwsVerify,\n  verify: jwsVerify.bind(undefined, false, undefined)\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jws/verify.js?")},"./node_modules/jose/lib/jwt/decode.js":
/*!*********************************************!*\
  !*** ./node_modules/jose/lib/jwt/decode.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const base64url = __webpack_require__(/*! ../help/base64url */ \"./node_modules/jose/lib/help/base64url.js\")\nconst errors = __webpack_require__(/*! ../errors */ \"./node_modules/jose/lib/errors.js\")\n\nmodule.exports = (token, { complete = false } = {}) => {\n  if (typeof token !== 'string' || !token) {\n    throw new TypeError('JWT must be a string')\n  }\n\n  const { 0: header, 1: payload, 2: signature, length } = token.split('.')\n\n  if (length === 5) {\n    throw new TypeError('encrypted JWTs cannot be decoded')\n  }\n\n  if (length !== 3) {\n    throw new errors.JWTMalformed('JWTs must have three components')\n  }\n\n  try {\n    const result = {\n      header: base64url.JSON.decode(header),\n      payload: base64url.JSON.decode(payload),\n      signature\n    }\n\n    return complete ? result : result.payload\n  } catch (err) {\n    throw new errors.JWTMalformed('JWT is malformed')\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwt/decode.js?")},"./node_modules/jose/lib/jwt/index.js":
/*!********************************************!*\
  !*** ./node_modules/jose/lib/jwt/index.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const decode = __webpack_require__(/*! ./decode */ "./node_modules/jose/lib/jwt/decode.js")\nconst sign = __webpack_require__(/*! ./sign */ "./node_modules/jose/lib/jwt/sign.js")\nconst verify = __webpack_require__(/*! ./verify */ "./node_modules/jose/lib/jwt/verify.js")\nconst profiles = __webpack_require__(/*! ./profiles */ "./node_modules/jose/lib/jwt/profiles.js")\n\nmodule.exports = {\n  sign,\n  verify,\n  ...profiles\n}\n\nObject.defineProperty(module.exports, "decode", ({\n  enumerable: false,\n  configurable: true,\n  value: decode\n}))\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwt/index.js?')},"./node_modules/jose/lib/jwt/profiles.js":
/*!***********************************************!*\
  !*** ./node_modules/jose/lib/jwt/profiles.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { JWTClaimInvalid } = __webpack_require__(/*! ../errors */ \"./node_modules/jose/lib/errors.js\")\nconst secs = __webpack_require__(/*! ../help/secs */ \"./node_modules/jose/lib/help/secs.js\")\nconst epoch = __webpack_require__(/*! ../help/epoch */ \"./node_modules/jose/lib/help/epoch.js\")\nconst isObject = __webpack_require__(/*! ../help/is_object */ \"./node_modules/jose/lib/help/is_object.js\")\n\nconst verify = __webpack_require__(/*! ./verify */ \"./node_modules/jose/lib/jwt/verify.js\")\nconst {\n  isString,\n  isRequired,\n  isTimestamp,\n  isStringOrArrayOfStrings\n} = __webpack_require__(/*! ./shared_validations */ \"./node_modules/jose/lib/jwt/shared_validations.js\")\n\nconst isPayloadRequired = isRequired.bind(undefined, JWTClaimInvalid)\nconst isPayloadString = isString.bind(undefined, JWTClaimInvalid)\nconst isOptionString = isString.bind(undefined, TypeError)\n\nconst defineLazyExportWithWarning = (obj, property, name, definition) => {\n  Object.defineProperty(obj, property, {\n    enumerable: true,\n    configurable: true,\n    value (...args) {\n      process.emitWarning(\n        `The ${name} API implements an IETF draft. Breaking draft implementations are included as minor versions of the jose library, therefore, the ~ semver operator should be used and close attention be payed to library changelog as well as the drafts themselves.`,\n        'DraftWarning'\n      )\n      Object.defineProperty(obj, property, {\n        enumerable: true,\n        configurable: true,\n        value: definition\n      })\n      return obj[property](...args)\n    }\n  })\n}\n\nconst validateCommonOptions = (options, profile) => {\n  if (!isObject(options)) {\n    throw new TypeError('options must be an object')\n  }\n\n  if (!options.issuer) {\n    throw new TypeError(`\"issuer\" option is required to validate ${profile}`)\n  }\n\n  if (!options.audience) {\n    throw new TypeError(`\"audience\" option is required to validate ${profile}`)\n  }\n}\n\nmodule.exports = {\n  IdToken: {\n    verify: (token, key, options = {}) => {\n      validateCommonOptions(options, 'an ID Token')\n\n      if ('maxAuthAge' in options) {\n        isOptionString(options.maxAuthAge, 'options.maxAuthAge')\n      }\n      if ('nonce' in options) {\n        isOptionString(options.nonce, 'options.nonce')\n      }\n\n      const unix = epoch(options.now || new Date())\n      const result = verify(token, key, { ...options })\n      const payload = options.complete ? result.payload : result\n\n      if (Array.isArray(payload.aud) && payload.aud.length > 1) {\n        isPayloadRequired(payload.azp, '\"azp\" claim', 'azp')\n      }\n      isPayloadRequired(payload.iat, '\"iat\" claim', 'iat')\n      isPayloadRequired(payload.sub, '\"sub\" claim', 'sub')\n      isPayloadRequired(payload.exp, '\"exp\" claim', 'exp')\n      isTimestamp(payload.auth_time, 'auth_time', !!options.maxAuthAge)\n      isPayloadString(payload.nonce, '\"nonce\" claim', 'nonce', !!options.nonce)\n      isPayloadString(payload.acr, '\"acr\" claim', 'acr')\n      isStringOrArrayOfStrings(payload.amr, 'amr')\n\n      if (options.nonce && payload.nonce !== options.nonce) {\n        throw new JWTClaimInvalid('unexpected \"nonce\" claim value', 'nonce', 'check_failed')\n      }\n\n      const tolerance = options.clockTolerance ? secs(options.clockTolerance) : 0\n\n      if (options.maxAuthAge) {\n        const maxAuthAgeSeconds = secs(options.maxAuthAge)\n        if (payload.auth_time + maxAuthAgeSeconds < unix - tolerance) {\n          throw new JWTClaimInvalid('\"auth_time\" claim timestamp check failed (too much time has elapsed since the last End-User authentication)', 'auth_time', 'check_failed')\n        }\n      }\n\n      if (Array.isArray(payload.aud) && payload.aud.length > 1 && payload.azp !== options.audience) {\n        throw new JWTClaimInvalid('unexpected \"azp\" claim value', 'azp', 'check_failed')\n      }\n\n      return result\n    }\n  },\n  LogoutToken: {},\n  AccessToken: {}\n}\n\ndefineLazyExportWithWarning(module.exports.LogoutToken, 'verify', 'jose.JWT.LogoutToken.verify', (token, key, options = {}) => {\n  validateCommonOptions(options, 'a Logout Token')\n\n  const result = verify(token, key, { ...options })\n  const payload = options.complete ? result.payload : result\n\n  isPayloadRequired(payload.iat, '\"iat\" claim', 'iat')\n  isPayloadRequired(payload.jti, '\"jti\" claim', 'jti')\n  isPayloadString(payload.sid, '\"sid\" claim', 'sid')\n\n  if (!('sid' in payload) && !('sub' in payload)) {\n    throw new JWTClaimInvalid('either \"sid\" or \"sub\" (or both) claims must be present')\n  }\n\n  if ('nonce' in payload) {\n    throw new JWTClaimInvalid('\"nonce\" claim is prohibited', 'nonce', 'prohibited')\n  }\n\n  if (!('events' in payload)) {\n    throw new JWTClaimInvalid('\"events\" claim is missing', 'events', 'missing')\n  }\n\n  if (!isObject(payload.events)) {\n    throw new JWTClaimInvalid('\"events\" claim must be an object', 'events', 'invalid')\n  }\n\n  if (!('http://schemas.openid.net/event/backchannel-logout' in payload.events)) {\n    throw new JWTClaimInvalid('\"http://schemas.openid.net/event/backchannel-logout\" member is missing in the \"events\" claim', 'events', 'invalid')\n  }\n\n  if (!isObject(payload.events['http://schemas.openid.net/event/backchannel-logout'])) {\n    throw new JWTClaimInvalid('\"http://schemas.openid.net/event/backchannel-logout\" member in the \"events\" claim must be an object', 'events', 'invalid')\n  }\n\n  return result\n})\n\ndefineLazyExportWithWarning(module.exports.AccessToken, 'verify', 'jose.JWT.AccessToken.verify', (token, key, options = {}) => {\n  validateCommonOptions(options, 'a JWT Access Token')\n\n  isOptionString(options.maxAuthAge, 'options.maxAuthAge')\n\n  const unix = epoch(options.now || new Date())\n  const typ = 'at+JWT'\n  const result = verify(token, key, { ...options, typ })\n  const payload = options.complete ? result.payload : result\n\n  isPayloadRequired(payload.iat, '\"iat\" claim', 'iat')\n  isPayloadRequired(payload.exp, '\"exp\" claim', 'exp')\n  isPayloadRequired(payload.sub, '\"sub\" claim', 'sub')\n  isPayloadRequired(payload.jti, '\"jti\" claim', 'jti')\n  isPayloadString(payload.client_id, '\"client_id\" claim', 'client_id', true)\n  isTimestamp(payload.auth_time, 'auth_time', !!options.maxAuthAge)\n  isPayloadString(payload.acr, '\"acr\" claim', 'acr')\n  isStringOrArrayOfStrings(payload.amr, 'amr')\n\n  const tolerance = options.clockTolerance ? secs(options.clockTolerance) : 0\n\n  if (options.maxAuthAge) {\n    const maxAuthAgeSeconds = secs(options.maxAuthAge)\n    if (payload.auth_time + maxAuthAgeSeconds < unix - tolerance) {\n      throw new JWTClaimInvalid('\"auth_time\" claim timestamp check failed (too much time has elapsed since the last End-User authentication)', 'auth_time', 'check_failed')\n    }\n  }\n\n  return result\n})\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwt/profiles.js?")},"./node_modules/jose/lib/jwt/shared_validations.js":
/*!*********************************************************!*\
  !*** ./node_modules/jose/lib/jwt/shared_validations.js ***!
  \*********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { JWTClaimInvalid } = __webpack_require__(/*! ../errors */ \"./node_modules/jose/lib/errors.js\")\n\nconst isNotString = val => typeof val !== 'string' || val.length === 0\nconst isNotArrayOfStrings = val => !Array.isArray(val) || val.length === 0 || val.some(isNotString)\nconst isRequired = (Err, value, label, claim) => {\n  if (value === undefined) {\n    throw new Err(`${label} is missing`, claim, 'missing')\n  }\n}\nconst isString = (Err, value, label, claim, required = false) => {\n  if (required) {\n    isRequired(Err, value, label, claim)\n  }\n\n  if (value !== undefined && isNotString(value)) {\n    throw new Err(`${label} must be a string`, claim, 'invalid')\n  }\n}\nconst isTimestamp = (value, label, required = false) => {\n  if (required && value === undefined) {\n    throw new JWTClaimInvalid(`\"${label}\" claim is missing`, label, 'missing')\n  }\n\n  if (value !== undefined && (typeof value !== 'number')) {\n    throw new JWTClaimInvalid(`\"${label}\" claim must be a JSON numeric value`, label, 'invalid')\n  }\n}\nconst isStringOrArrayOfStrings = (value, label, required = false) => {\n  if (required && value === undefined) {\n    throw new JWTClaimInvalid(`\"${label}\" claim is missing`, label, 'missing')\n  }\n\n  if (value !== undefined && (isNotString(value) && isNotArrayOfStrings(value))) {\n    throw new JWTClaimInvalid(`\"${label}\" claim must be a string or array of strings`, label, 'invalid')\n  }\n}\n\nmodule.exports = {\n  isNotArrayOfStrings,\n  isRequired,\n  isNotString,\n  isString,\n  isTimestamp,\n  isStringOrArrayOfStrings\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwt/shared_validations.js?")},"./node_modules/jose/lib/jwt/sign.js":
/*!*******************************************!*\
  !*** ./node_modules/jose/lib/jwt/sign.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const isObject = __webpack_require__(/*! ../help/is_object */ \"./node_modules/jose/lib/help/is_object.js\")\nconst secs = __webpack_require__(/*! ../help/secs */ \"./node_modules/jose/lib/help/secs.js\")\nconst epoch = __webpack_require__(/*! ../help/epoch */ \"./node_modules/jose/lib/help/epoch.js\")\nconst getKey = __webpack_require__(/*! ../help/get_key */ \"./node_modules/jose/lib/help/get_key.js\")\nconst JWS = __webpack_require__(/*! ../jws */ \"./node_modules/jose/lib/jws/index.js\")\n\nconst isString = (__webpack_require__(/*! ./shared_validations */ \"./node_modules/jose/lib/jwt/shared_validations.js\").isString.bind)(undefined, TypeError)\n\nconst validateOptions = (options) => {\n  if (typeof options.iat !== 'boolean') {\n    throw new TypeError('options.iat must be a boolean')\n  }\n\n  if (typeof options.kid !== 'boolean') {\n    throw new TypeError('options.kid must be a boolean')\n  }\n\n  isString(options.subject, 'options.subject')\n  isString(options.issuer, 'options.issuer')\n\n  if (\n    options.audience !== undefined &&\n    (\n      (typeof options.audience !== 'string' || !options.audience) &&\n      (!Array.isArray(options.audience) || options.audience.length === 0 || options.audience.some(a => !a || typeof a !== 'string'))\n    )\n  ) {\n    throw new TypeError('options.audience must be a string or an array of strings')\n  }\n\n  if (!isObject(options.header)) {\n    throw new TypeError('options.header must be an object')\n  }\n\n  isString(options.algorithm, 'options.algorithm')\n  isString(options.expiresIn, 'options.expiresIn')\n  isString(options.notBefore, 'options.notBefore')\n  isString(options.jti, 'options.jti')\n\n  if (options.now !== undefined && (!(options.now instanceof Date) || !options.now.getTime())) {\n    throw new TypeError('options.now must be a valid Date object')\n  }\n}\n\nmodule.exports = (payload, key, options = {}) => {\n  if (!isObject(options)) {\n    throw new TypeError('options must be an object')\n  }\n\n  const {\n    algorithm, audience, expiresIn, header = {}, iat = true,\n    issuer, jti, kid = true, notBefore, subject, now\n  } = options\n\n  validateOptions({\n    algorithm, audience, expiresIn, header, iat, issuer, jti, kid, notBefore, now, subject\n  })\n\n  if (!isObject(payload)) {\n    throw new TypeError('payload must be an object')\n  }\n\n  let unix\n  if (expiresIn || notBefore || iat) {\n    unix = epoch(now || new Date())\n  }\n\n  payload = {\n    ...payload,\n    sub: subject || payload.sub,\n    aud: audience || payload.aud,\n    iss: issuer || payload.iss,\n    jti: jti || payload.jti,\n    iat: iat ? unix : payload.iat,\n    exp: expiresIn ? unix + secs(expiresIn) : payload.exp,\n    nbf: notBefore ? unix + secs(notBefore) : payload.nbf\n  }\n\n  key = getKey(key)\n\n  let includeKid\n\n  if (typeof options.kid === 'boolean') {\n    includeKid = kid\n  } else {\n    includeKid = !key.secret\n  }\n\n  return JWS.sign(JSON.stringify(payload), key, {\n    ...header,\n    alg: algorithm || header.alg,\n    kid: includeKid ? key.kid : header.kid\n  })\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwt/sign.js?")},"./node_modules/jose/lib/jwt/verify.js":
/*!*********************************************!*\
  !*** ./node_modules/jose/lib/jwt/verify.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const isObject = __webpack_require__(/*! ../help/is_object */ \"./node_modules/jose/lib/help/is_object.js\")\nconst epoch = __webpack_require__(/*! ../help/epoch */ \"./node_modules/jose/lib/help/epoch.js\")\nconst secs = __webpack_require__(/*! ../help/secs */ \"./node_modules/jose/lib/help/secs.js\")\nconst getKey = __webpack_require__(/*! ../help/get_key */ \"./node_modules/jose/lib/help/get_key.js\")\nconst { bare: verify } = __webpack_require__(/*! ../jws/verify */ \"./node_modules/jose/lib/jws/verify.js\")\nconst { JWTClaimInvalid, JWTExpired } = __webpack_require__(/*! ../errors */ \"./node_modules/jose/lib/errors.js\")\n\nconst {\n  isString,\n  isNotString,\n  isNotArrayOfStrings,\n  isTimestamp,\n  isStringOrArrayOfStrings\n} = __webpack_require__(/*! ./shared_validations */ \"./node_modules/jose/lib/jwt/shared_validations.js\")\nconst decode = __webpack_require__(/*! ./decode */ \"./node_modules/jose/lib/jwt/decode.js\")\n\nconst isPayloadString = isString.bind(undefined, JWTClaimInvalid)\nconst isOptionString = isString.bind(undefined, TypeError)\n\nconst normalizeTyp = (value) => value.toLowerCase().replace(/^application\\//, '')\n\nconst validateOptions = ({\n  algorithms, audience, clockTolerance, complete = false, crit, ignoreExp = false,\n  ignoreIat = false, ignoreNbf = false, issuer, jti, maxTokenAge, now = new Date(),\n  subject, typ\n}) => {\n  if (typeof complete !== 'boolean') {\n    throw new TypeError('options.complete must be a boolean')\n  }\n\n  if (typeof ignoreExp !== 'boolean') {\n    throw new TypeError('options.ignoreExp must be a boolean')\n  }\n\n  if (typeof ignoreNbf !== 'boolean') {\n    throw new TypeError('options.ignoreNbf must be a boolean')\n  }\n\n  if (typeof ignoreIat !== 'boolean') {\n    throw new TypeError('options.ignoreIat must be a boolean')\n  }\n\n  isOptionString(maxTokenAge, 'options.maxTokenAge')\n  isOptionString(subject, 'options.subject')\n  isOptionString(jti, 'options.jti')\n  isOptionString(clockTolerance, 'options.clockTolerance')\n  isOptionString(typ, 'options.typ')\n\n  if (issuer !== undefined && (isNotString(issuer) && isNotArrayOfStrings(issuer))) {\n    throw new TypeError('options.issuer must be a string or an array of strings')\n  }\n\n  if (audience !== undefined && (isNotString(audience) && isNotArrayOfStrings(audience))) {\n    throw new TypeError('options.audience must be a string or an array of strings')\n  }\n\n  if (algorithms !== undefined && isNotArrayOfStrings(algorithms)) {\n    throw new TypeError('options.algorithms must be an array of strings')\n  }\n\n  if (!(now instanceof Date) || !now.getTime()) {\n    throw new TypeError('options.now must be a valid Date object')\n  }\n\n  if (ignoreIat && maxTokenAge !== undefined) {\n    throw new TypeError('options.ignoreIat and options.maxTokenAge cannot used together')\n  }\n\n  if (crit !== undefined && isNotArrayOfStrings(crit)) {\n    throw new TypeError('options.crit must be an array of strings')\n  }\n\n  return {\n    algorithms,\n    audience,\n    clockTolerance,\n    complete,\n    crit,\n    ignoreExp,\n    ignoreIat,\n    ignoreNbf,\n    issuer,\n    jti,\n    maxTokenAge,\n    now,\n    subject,\n    typ\n  }\n}\n\nconst validateTypes = ({ header, payload }, options) => {\n  isPayloadString(header.alg, '\"alg\" header parameter', 'alg', true)\n\n  isTimestamp(payload.iat, 'iat', !!options.maxTokenAge)\n  isTimestamp(payload.exp, 'exp')\n  isTimestamp(payload.nbf, 'nbf')\n  isPayloadString(payload.jti, '\"jti\" claim', 'jti', !!options.jti)\n  isStringOrArrayOfStrings(payload.iss, 'iss', !!options.issuer)\n  isPayloadString(payload.sub, '\"sub\" claim', 'sub', !!options.subject)\n  isStringOrArrayOfStrings(payload.aud, 'aud', !!options.audience)\n  isPayloadString(header.typ, '\"typ\" header parameter', 'typ', !!options.typ)\n}\n\nconst checkAudiencePresence = (audPayload, audOption) => {\n  if (typeof audPayload === 'string') {\n    return audOption.includes(audPayload)\n  }\n\n  // Each principal intended to process the JWT MUST\n  // identify itself with a value in the audience claim\n  audPayload = new Set(audPayload)\n  return audOption.some(Set.prototype.has.bind(audPayload))\n}\n\nmodule.exports = (token, key, options = {}) => {\n  if (!isObject(options)) {\n    throw new TypeError('options must be an object')\n  }\n\n  const {\n    algorithms, audience, clockTolerance, complete, crit, ignoreExp, ignoreIat, ignoreNbf, issuer,\n    jti, maxTokenAge, now, subject, typ\n  } = options = validateOptions(options)\n\n  const decoded = decode(token, { complete: true })\n  key = getKey(key, true)\n\n  if (complete) {\n    ({ key } = verify(true, 'preparsed', { decoded, token }, key, { crit, algorithms, complete: true }))\n    decoded.key = key\n  } else {\n    verify(true, 'preparsed', { decoded, token }, key, { crit, algorithms })\n  }\n\n  const unix = epoch(now)\n  validateTypes(decoded, options)\n\n  if (issuer && (typeof decoded.payload.iss !== 'string' || !(typeof issuer === 'string' ? [issuer] : issuer).includes(decoded.payload.iss))) {\n    throw new JWTClaimInvalid('unexpected \"iss\" claim value', 'iss', 'check_failed')\n  }\n\n  if (subject && decoded.payload.sub !== subject) {\n    throw new JWTClaimInvalid('unexpected \"sub\" claim value', 'sub', 'check_failed')\n  }\n\n  if (jti && decoded.payload.jti !== jti) {\n    throw new JWTClaimInvalid('unexpected \"jti\" claim value', 'jti', 'check_failed')\n  }\n\n  if (audience && !checkAudiencePresence(decoded.payload.aud, typeof audience === 'string' ? [audience] : audience)) {\n    throw new JWTClaimInvalid('unexpected \"aud\" claim value', 'aud', 'check_failed')\n  }\n\n  if (typ && normalizeTyp(decoded.header.typ) !== normalizeTyp(typ)) {\n    throw new JWTClaimInvalid('unexpected \"typ\" JWT header value', 'typ', 'check_failed')\n  }\n\n  const tolerance = clockTolerance ? secs(clockTolerance) : 0\n\n  if (!ignoreIat && !('exp' in decoded.payload) && 'iat' in decoded.payload && decoded.payload.iat > unix + tolerance) {\n    throw new JWTClaimInvalid('\"iat\" claim timestamp check failed (it should be in the past)', 'iat', 'check_failed')\n  }\n\n  if (!ignoreNbf && 'nbf' in decoded.payload && decoded.payload.nbf > unix + tolerance) {\n    throw new JWTClaimInvalid('\"nbf\" claim timestamp check failed', 'nbf', 'check_failed')\n  }\n\n  if (!ignoreExp && 'exp' in decoded.payload && decoded.payload.exp <= unix - tolerance) {\n    throw new JWTExpired('\"exp\" claim timestamp check failed', 'exp', 'check_failed')\n  }\n\n  if (maxTokenAge) {\n    const age = unix - decoded.payload.iat\n    const max = secs(maxTokenAge)\n\n    if (age - tolerance > max) {\n      throw new JWTExpired('\"iat\" claim timestamp check failed (too far in the past)', 'iat', 'check_failed')\n    }\n\n    if (age < 0 - tolerance) {\n      throw new JWTClaimInvalid('\"iat\" claim timestamp check failed (it should be in the past)', 'iat', 'check_failed')\n    }\n  }\n\n  return complete ? decoded : decoded.payload\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/jwt/verify.js?")},"./node_modules/jose/lib/registry/ec_curves.js":
/*!*****************************************************!*\
  !*** ./node_modules/jose/lib/registry/ec_curves.js ***!
  \*****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { getCurves } = __webpack_require__(/*! crypto */ \"crypto\")\n\nconst curves = new Set()\n\nif (getCurves().includes('prime256v1')) {\n  curves.add('P-256')\n}\n\nif (getCurves().includes('secp256k1')) {\n  curves.add('secp256k1')\n}\n\nif (getCurves().includes('secp384r1')) {\n  curves.add('P-384')\n}\n\nif (getCurves().includes('secp521r1')) {\n  curves.add('P-521')\n}\n\nmodule.exports = curves\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/registry/ec_curves.js?")},"./node_modules/jose/lib/registry/ecdh_derive_lengths.js":
/*!***************************************************************!*\
  !*** ./node_modules/jose/lib/registry/ecdh_derive_lengths.js ***!
  \***************************************************************/module=>{eval("module.exports = new Map()\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/registry/ecdh_derive_lengths.js?")},"./node_modules/jose/lib/registry/index.js":
/*!*************************************************!*\
  !*** ./node_modules/jose/lib/registry/index.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const EC_CURVES = __webpack_require__(/*! ./ec_curves */ "./node_modules/jose/lib/registry/ec_curves.js")\nconst IVLENGTHS = __webpack_require__(/*! ./iv_lengths */ "./node_modules/jose/lib/registry/iv_lengths.js")\nconst JWA = __webpack_require__(/*! ./jwa */ "./node_modules/jose/lib/registry/jwa.js")\nconst JWK = __webpack_require__(/*! ./jwk */ "./node_modules/jose/lib/registry/jwk.js")\nconst KEYLENGTHS = __webpack_require__(/*! ./key_lengths */ "./node_modules/jose/lib/registry/key_lengths.js")\nconst OKP_CURVES = __webpack_require__(/*! ./okp_curves */ "./node_modules/jose/lib/registry/okp_curves.js")\nconst ECDH_DERIVE_LENGTHS = __webpack_require__(/*! ./ecdh_derive_lengths */ "./node_modules/jose/lib/registry/ecdh_derive_lengths.js")\n\nmodule.exports = {\n  EC_CURVES,\n  ECDH_DERIVE_LENGTHS,\n  IVLENGTHS,\n  JWA,\n  JWK,\n  KEYLENGTHS,\n  OKP_CURVES\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/registry/index.js?')},"./node_modules/jose/lib/registry/iv_lengths.js":
/*!******************************************************!*\
  !*** ./node_modules/jose/lib/registry/iv_lengths.js ***!
  \******************************************************/module=>{eval("module.exports = new Map([\n  ['A128CBC-HS256', 128],\n  ['A128GCM', 96],\n  ['A128GCMKW', 96],\n  ['A192CBC-HS384', 128],\n  ['A192GCM', 96],\n  ['A192GCMKW', 96],\n  ['A256CBC-HS512', 128],\n  ['A256GCM', 96],\n  ['A256GCMKW', 96]\n])\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/registry/iv_lengths.js?")},"./node_modules/jose/lib/registry/jwa.js":
/*!***********************************************!*\
  !*** ./node_modules/jose/lib/registry/jwa.js ***!
  \***********************************************/module=>{eval("module.exports = {\n  sign: new Map(),\n  verify: new Map(),\n  keyManagementEncrypt: new Map(),\n  keyManagementDecrypt: new Map(),\n  encrypt: new Map(),\n  decrypt: new Map()\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/registry/jwa.js?")},"./node_modules/jose/lib/registry/jwk.js":
/*!***********************************************!*\
  !*** ./node_modules/jose/lib/registry/jwk.js ***!
  \***********************************************/module=>{eval("module.exports = {\n  oct: {\n    decrypt: {},\n    deriveKey: {},\n    encrypt: {},\n    sign: {},\n    unwrapKey: {},\n    verify: {},\n    wrapKey: {}\n  },\n  EC: {\n    decrypt: {},\n    deriveKey: {},\n    encrypt: {},\n    sign: {},\n    unwrapKey: {},\n    verify: {},\n    wrapKey: {}\n  },\n  RSA: {\n    decrypt: {},\n    deriveKey: {},\n    encrypt: {},\n    sign: {},\n    unwrapKey: {},\n    verify: {},\n    wrapKey: {}\n  },\n  OKP: {\n    decrypt: {},\n    deriveKey: {},\n    encrypt: {},\n    sign: {},\n    unwrapKey: {},\n    verify: {},\n    wrapKey: {}\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/registry/jwk.js?")},"./node_modules/jose/lib/registry/key_lengths.js":
/*!*******************************************************!*\
  !*** ./node_modules/jose/lib/registry/key_lengths.js ***!
  \*******************************************************/module=>{eval("module.exports = new Map([\n  ['A128CBC-HS256', 256],\n  ['A128GCM', 128],\n  ['A192CBC-HS384', 384],\n  ['A192GCM', 192],\n  ['A256CBC-HS512', 512],\n  ['A256GCM', 256]\n])\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/registry/key_lengths.js?")},"./node_modules/jose/lib/registry/okp_curves.js":
/*!******************************************************!*\
  !*** ./node_modules/jose/lib/registry/okp_curves.js ***!
  \******************************************************/module=>{eval("const curves = new Set(['Ed25519'])\n\nif (!('electron' in process.versions)) {\n  curves.add('Ed448')\n  curves.add('X25519')\n  curves.add('X448')\n}\n\nmodule.exports = curves\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jose/lib/registry/okp_curves.js?")},"./node_modules/js-yaml/index.js":
/*!***************************************!*\
  !*** ./node_modules/js-yaml/index.js ***!
  \***************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\n\nvar loader = __webpack_require__(/*! ./lib/loader */ "./node_modules/js-yaml/lib/loader.js");\nvar dumper = __webpack_require__(/*! ./lib/dumper */ "./node_modules/js-yaml/lib/dumper.js");\n\n\nfunction renamed(from, to) {\n  return function () {\n    throw new Error(\'Function yaml.\' + from + \' is removed in js-yaml 4. \' +\n      \'Use yaml.\' + to + \' instead, which is now safe by default.\');\n  };\n}\n\n\nmodule.exports.Type = __webpack_require__(/*! ./lib/type */ "./node_modules/js-yaml/lib/type.js");\nmodule.exports.Schema = __webpack_require__(/*! ./lib/schema */ "./node_modules/js-yaml/lib/schema.js");\nmodule.exports.FAILSAFE_SCHEMA = __webpack_require__(/*! ./lib/schema/failsafe */ "./node_modules/js-yaml/lib/schema/failsafe.js");\nmodule.exports.JSON_SCHEMA = __webpack_require__(/*! ./lib/schema/json */ "./node_modules/js-yaml/lib/schema/json.js");\nmodule.exports.CORE_SCHEMA = __webpack_require__(/*! ./lib/schema/core */ "./node_modules/js-yaml/lib/schema/core.js");\nmodule.exports.DEFAULT_SCHEMA = __webpack_require__(/*! ./lib/schema/default */ "./node_modules/js-yaml/lib/schema/default.js");\nmodule.exports.load                = loader.load;\nmodule.exports.loadAll             = loader.loadAll;\nmodule.exports.dump                = dumper.dump;\nmodule.exports.YAMLException = __webpack_require__(/*! ./lib/exception */ "./node_modules/js-yaml/lib/exception.js");\n\n// Re-export all types in case user wants to create custom schema\nmodule.exports.types = {\n  binary:    __webpack_require__(/*! ./lib/type/binary */ "./node_modules/js-yaml/lib/type/binary.js"),\n  float:     __webpack_require__(/*! ./lib/type/float */ "./node_modules/js-yaml/lib/type/float.js"),\n  map:       __webpack_require__(/*! ./lib/type/map */ "./node_modules/js-yaml/lib/type/map.js"),\n  null:      __webpack_require__(/*! ./lib/type/null */ "./node_modules/js-yaml/lib/type/null.js"),\n  pairs:     __webpack_require__(/*! ./lib/type/pairs */ "./node_modules/js-yaml/lib/type/pairs.js"),\n  set:       __webpack_require__(/*! ./lib/type/set */ "./node_modules/js-yaml/lib/type/set.js"),\n  timestamp: __webpack_require__(/*! ./lib/type/timestamp */ "./node_modules/js-yaml/lib/type/timestamp.js"),\n  bool:      __webpack_require__(/*! ./lib/type/bool */ "./node_modules/js-yaml/lib/type/bool.js"),\n  int:       __webpack_require__(/*! ./lib/type/int */ "./node_modules/js-yaml/lib/type/int.js"),\n  merge:     __webpack_require__(/*! ./lib/type/merge */ "./node_modules/js-yaml/lib/type/merge.js"),\n  omap:      __webpack_require__(/*! ./lib/type/omap */ "./node_modules/js-yaml/lib/type/omap.js"),\n  seq:       __webpack_require__(/*! ./lib/type/seq */ "./node_modules/js-yaml/lib/type/seq.js"),\n  str:       __webpack_require__(/*! ./lib/type/str */ "./node_modules/js-yaml/lib/type/str.js")\n};\n\n// Removed functions from JS-YAML 3.0.x\nmodule.exports.safeLoad            = renamed(\'safeLoad\', \'load\');\nmodule.exports.safeLoadAll         = renamed(\'safeLoadAll\', \'loadAll\');\nmodule.exports.safeDump            = renamed(\'safeDump\', \'dump\');\n\n\n//# sourceURL=webpack://txadmin/./node_modules/js-yaml/index.js?')},"./node_modules/js-yaml/lib/common.js":
/*!********************************************!*\
  !*** ./node_modules/js-yaml/lib/common.js ***!
  \********************************************/module=>{"use strict";eval("\n\n\nfunction isNothing(subject) {\n  return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n  return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n  if (Array.isArray(sequence)) return sequence;\n  else if (isNothing(sequence)) return [];\n\n  return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n  var index, length, key, sourceKeys;\n\n  if (source) {\n    sourceKeys = Object.keys(source);\n\n    for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n      key = sourceKeys[index];\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\n\nfunction repeat(string, count) {\n  var result = '', cycle;\n\n  for (cycle = 0; cycle < count; cycle += 1) {\n    result += string;\n  }\n\n  return result;\n}\n\n\nfunction isNegativeZero(number) {\n  return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing      = isNothing;\nmodule.exports.isObject       = isObject;\nmodule.exports.toArray        = toArray;\nmodule.exports.repeat         = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend         = extend;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/js-yaml/lib/common.js?")},"./node_modules/js-yaml/lib/dumper.js":
/*!********************************************!*\
  !*** ./node_modules/js-yaml/lib/dumper.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n/*eslint-disable no-use-before-define*/\n\nvar common              = __webpack_require__(/*! ./common */ \"./node_modules/js-yaml/lib/common.js\");\nvar YAMLException       = __webpack_require__(/*! ./exception */ \"./node_modules/js-yaml/lib/exception.js\");\nvar DEFAULT_SCHEMA      = __webpack_require__(/*! ./schema/default */ \"./node_modules/js-yaml/lib/schema/default.js\");\n\nvar _toString       = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_BOM                  = 0xFEFF;\nvar CHAR_TAB                  = 0x09; /* Tab */\nvar CHAR_LINE_FEED            = 0x0A; /* LF */\nvar CHAR_CARRIAGE_RETURN      = 0x0D; /* CR */\nvar CHAR_SPACE                = 0x20; /* Space */\nvar CHAR_EXCLAMATION          = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE         = 0x22; /* \" */\nvar CHAR_SHARP                = 0x23; /* # */\nvar CHAR_PERCENT              = 0x25; /* % */\nvar CHAR_AMPERSAND            = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE         = 0x27; /* ' */\nvar CHAR_ASTERISK             = 0x2A; /* * */\nvar CHAR_COMMA                = 0x2C; /* , */\nvar CHAR_MINUS                = 0x2D; /* - */\nvar CHAR_COLON                = 0x3A; /* : */\nvar CHAR_EQUALS               = 0x3D; /* = */\nvar CHAR_GREATER_THAN         = 0x3E; /* > */\nvar CHAR_QUESTION             = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT        = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET  = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT         = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET   = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE        = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET  = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00]   = '\\\\0';\nESCAPE_SEQUENCES[0x07]   = '\\\\a';\nESCAPE_SEQUENCES[0x08]   = '\\\\b';\nESCAPE_SEQUENCES[0x09]   = '\\\\t';\nESCAPE_SEQUENCES[0x0A]   = '\\\\n';\nESCAPE_SEQUENCES[0x0B]   = '\\\\v';\nESCAPE_SEQUENCES[0x0C]   = '\\\\f';\nESCAPE_SEQUENCES[0x0D]   = '\\\\r';\nESCAPE_SEQUENCES[0x1B]   = '\\\\e';\nESCAPE_SEQUENCES[0x22]   = '\\\\\"';\nESCAPE_SEQUENCES[0x5C]   = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85]   = '\\\\N';\nESCAPE_SEQUENCES[0xA0]   = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n  'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n  'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nvar DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\\.[0-9_]*)?$/;\n\nfunction compileStyleMap(schema, map) {\n  var result, keys, index, length, tag, style, type;\n\n  if (map === null) return {};\n\n  result = {};\n  keys = Object.keys(map);\n\n  for (index = 0, length = keys.length; index < length; index += 1) {\n    tag = keys[index];\n    style = String(map[tag]);\n\n    if (tag.slice(0, 2) === '!!') {\n      tag = 'tag:yaml.org,2002:' + tag.slice(2);\n    }\n    type = schema.compiledTypeMap['fallback'][tag];\n\n    if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n      style = type.styleAliases[style];\n    }\n\n    result[tag] = style;\n  }\n\n  return result;\n}\n\nfunction encodeHex(character) {\n  var string, handle, length;\n\n  string = character.toString(16).toUpperCase();\n\n  if (character <= 0xFF) {\n    handle = 'x';\n    length = 2;\n  } else if (character <= 0xFFFF) {\n    handle = 'u';\n    length = 4;\n  } else if (character <= 0xFFFFFFFF) {\n    handle = 'U';\n    length = 8;\n  } else {\n    throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n  }\n\n  return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\n\nvar QUOTING_TYPE_SINGLE = 1,\n    QUOTING_TYPE_DOUBLE = 2;\n\nfunction State(options) {\n  this.schema        = options['schema'] || DEFAULT_SCHEMA;\n  this.indent        = Math.max(1, (options['indent'] || 2));\n  this.noArrayIndent = options['noArrayIndent'] || false;\n  this.skipInvalid   = options['skipInvalid'] || false;\n  this.flowLevel     = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n  this.styleMap      = compileStyleMap(this.schema, options['styles'] || null);\n  this.sortKeys      = options['sortKeys'] || false;\n  this.lineWidth     = options['lineWidth'] || 80;\n  this.noRefs        = options['noRefs'] || false;\n  this.noCompatMode  = options['noCompatMode'] || false;\n  this.condenseFlow  = options['condenseFlow'] || false;\n  this.quotingType   = options['quotingType'] === '\"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE;\n  this.forceQuotes   = options['forceQuotes'] || false;\n  this.replacer      = typeof options['replacer'] === 'function' ? options['replacer'] : null;\n\n  this.implicitTypes = this.schema.compiledImplicit;\n  this.explicitTypes = this.schema.compiledExplicit;\n\n  this.tag = null;\n  this.result = '';\n\n  this.duplicates = [];\n  this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n  var ind = common.repeat(' ', spaces),\n      position = 0,\n      next = -1,\n      result = '',\n      line,\n      length = string.length;\n\n  while (position < length) {\n    next = string.indexOf('\\n', position);\n    if (next === -1) {\n      line = string.slice(position);\n      position = length;\n    } else {\n      line = string.slice(position, next + 1);\n      position = next + 1;\n    }\n\n    if (line.length && line !== '\\n') result += ind;\n\n    result += line;\n  }\n\n  return result;\n}\n\nfunction generateNextLine(state, level) {\n  return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n  var index, length, type;\n\n  for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n    type = state.implicitTypes[index];\n\n    if (type.resolve(str)) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n  return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n  return  (0x00020 <= c && c <= 0x00007E)\n      || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n      || ((0x0E000 <= c && c <= 0x00FFFD) && c !== CHAR_BOM)\n      ||  (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// [34] ns-char ::= nb-char - s-white\n// [27] nb-char ::= c-printable - b-char - c-byte-order-mark\n// [26] b-char  ::= b-line-feed | b-carriage-return\n// Including s-white (for some reason, examples doesn't match specs in this aspect)\n// ns-char ::= c-printable - b-line-feed - b-carriage-return - c-byte-order-mark\nfunction isNsCharOrWhitespace(c) {\n  return isPrintable(c)\n    && c !== CHAR_BOM\n    // - b-char\n    && c !== CHAR_CARRIAGE_RETURN\n    && c !== CHAR_LINE_FEED;\n}\n\n// [127]  ns-plain-safe(c) ::= c = flow-out  ⇒ ns-plain-safe-out\n//                             c = flow-in   ⇒ ns-plain-safe-in\n//                             c = block-key ⇒ ns-plain-safe-out\n//                             c = flow-key  ⇒ ns-plain-safe-in\n// [128] ns-plain-safe-out ::= ns-char\n// [129]  ns-plain-safe-in ::= ns-char - c-flow-indicator\n// [130]  ns-plain-char(c) ::=  ( ns-plain-safe(c) - “:” - “#” )\n//                            | ( /* An ns-char preceding */ “#” )\n//                            | ( “:” /* Followed by an ns-plain-safe(c) */ )\nfunction isPlainSafe(c, prev, inblock) {\n  var cIsNsCharOrWhitespace = isNsCharOrWhitespace(c);\n  var cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c);\n  return (\n    // ns-plain-safe\n    inblock ? // c = flow-in\n      cIsNsCharOrWhitespace\n      : cIsNsCharOrWhitespace\n        // - c-flow-indicator\n        && c !== CHAR_COMMA\n        && c !== CHAR_LEFT_SQUARE_BRACKET\n        && c !== CHAR_RIGHT_SQUARE_BRACKET\n        && c !== CHAR_LEFT_CURLY_BRACKET\n        && c !== CHAR_RIGHT_CURLY_BRACKET\n  )\n    // ns-plain-char\n    && c !== CHAR_SHARP // false on '#'\n    && !(prev === CHAR_COLON && !cIsNsChar) // false on ': '\n    || (isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP) // change to true on '[^ ]#'\n    || (prev === CHAR_COLON && cIsNsChar); // change to true on ':[^ ]'\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n  // Uses a subset of ns-char - c-indicator\n  // where ns-char = nb-char - s-white.\n  // No support of ( ( “?” | “:” | “-” ) /* Followed by an ns-plain-safe(c)) */ ) part\n  return isPrintable(c) && c !== CHAR_BOM\n    && !isWhitespace(c) // - s-white\n    // - (c-indicator ::=\n    // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n    && c !== CHAR_MINUS\n    && c !== CHAR_QUESTION\n    && c !== CHAR_COLON\n    && c !== CHAR_COMMA\n    && c !== CHAR_LEFT_SQUARE_BRACKET\n    && c !== CHAR_RIGHT_SQUARE_BRACKET\n    && c !== CHAR_LEFT_CURLY_BRACKET\n    && c !== CHAR_RIGHT_CURLY_BRACKET\n    // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “\"”\n    && c !== CHAR_SHARP\n    && c !== CHAR_AMPERSAND\n    && c !== CHAR_ASTERISK\n    && c !== CHAR_EXCLAMATION\n    && c !== CHAR_VERTICAL_LINE\n    && c !== CHAR_EQUALS\n    && c !== CHAR_GREATER_THAN\n    && c !== CHAR_SINGLE_QUOTE\n    && c !== CHAR_DOUBLE_QUOTE\n    // | “%” | “@” | “`”)\n    && c !== CHAR_PERCENT\n    && c !== CHAR_COMMERCIAL_AT\n    && c !== CHAR_GRAVE_ACCENT;\n}\n\n// Simplified test for values allowed as the last character in plain style.\nfunction isPlainSafeLast(c) {\n  // just not whitespace or colon, it will be checked to be plain character later\n  return !isWhitespace(c) && c !== CHAR_COLON;\n}\n\n// Same as 'string'.codePointAt(pos), but works in older browsers.\nfunction codePointAt(string, pos) {\n  var first = string.charCodeAt(pos), second;\n  if (first >= 0xD800 && first <= 0xDBFF && pos + 1 < string.length) {\n    second = string.charCodeAt(pos + 1);\n    if (second >= 0xDC00 && second <= 0xDFFF) {\n      // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n      return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n    }\n  }\n  return first;\n}\n\n// Determines whether block indentation indicator is required.\nfunction needIndentIndicator(string) {\n  var leadingSpaceRe = /^\\n* /;\n  return leadingSpaceRe.test(string);\n}\n\nvar STYLE_PLAIN   = 1,\n    STYLE_SINGLE  = 2,\n    STYLE_LITERAL = 3,\n    STYLE_FOLDED  = 4,\n    STYLE_DOUBLE  = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n//    STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n//    STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n//    STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth,\n  testAmbiguousType, quotingType, forceQuotes, inblock) {\n\n  var i;\n  var char = 0;\n  var prevChar = null;\n  var hasLineBreak = false;\n  var hasFoldableLine = false; // only checked if shouldTrackWidth\n  var shouldTrackWidth = lineWidth !== -1;\n  var previousLineBreak = -1; // count the first line correctly\n  var plain = isPlainSafeFirst(codePointAt(string, 0))\n          && isPlainSafeLast(codePointAt(string, string.length - 1));\n\n  if (singleLineOnly || forceQuotes) {\n    // Case: no block styles.\n    // Check for disallowed characters to rule out plain and single.\n    for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n      char = codePointAt(string, i);\n      if (!isPrintable(char)) {\n        return STYLE_DOUBLE;\n      }\n      plain = plain && isPlainSafe(char, prevChar, inblock);\n      prevChar = char;\n    }\n  } else {\n    // Case: block styles permitted.\n    for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n      char = codePointAt(string, i);\n      if (char === CHAR_LINE_FEED) {\n        hasLineBreak = true;\n        // Check if any line can be folded.\n        if (shouldTrackWidth) {\n          hasFoldableLine = hasFoldableLine ||\n            // Foldable line = too long, and not more-indented.\n            (i - previousLineBreak - 1 > lineWidth &&\n             string[previousLineBreak + 1] !== ' ');\n          previousLineBreak = i;\n        }\n      } else if (!isPrintable(char)) {\n        return STYLE_DOUBLE;\n      }\n      plain = plain && isPlainSafe(char, prevChar, inblock);\n      prevChar = char;\n    }\n    // in case the end is missing a \\n\n    hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n      (i - previousLineBreak - 1 > lineWidth &&\n       string[previousLineBreak + 1] !== ' '));\n  }\n  // Although every style can represent \\n without escaping, prefer block styles\n  // for multiline, since they're more readable and they don't add empty lines.\n  // Also prefer folding a super-long line.\n  if (!hasLineBreak && !hasFoldableLine) {\n    // Strings interpretable as another type have to be quoted;\n    // e.g. the string 'true' vs. the boolean true.\n    if (plain && !forceQuotes && !testAmbiguousType(string)) {\n      return STYLE_PLAIN;\n    }\n    return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n  }\n  // Edge case: block indentation indicator can only have one digit.\n  if (indentPerLevel > 9 && needIndentIndicator(string)) {\n    return STYLE_DOUBLE;\n  }\n  // At this point we know block styles are valid.\n  // Prefer literal style unless we want to fold.\n  if (!forceQuotes) {\n    return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n  }\n  return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n//  since the dumper adds its own newline. This always works:\n//    • No ending newline => unaffected; already using strip \"-\" chomping.\n//    • Ending newline    => removed then restored.\n//  Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey, inblock) {\n  state.dump = (function () {\n    if (string.length === 0) {\n      return state.quotingType === QUOTING_TYPE_DOUBLE ? '\"\"' : \"''\";\n    }\n    if (!state.noCompatMode) {\n      if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) {\n        return state.quotingType === QUOTING_TYPE_DOUBLE ? ('\"' + string + '\"') : (\"'\" + string + \"'\");\n      }\n    }\n\n    var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n    // As indentation gets deeper, let the width decrease monotonically\n    // to the lower bound min(state.lineWidth, 40).\n    // Note that this implies\n    //  state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n    //  state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n    // This behaves better than a constant minimum width which disallows narrower options,\n    // or an indent threshold which causes the width to suddenly increase.\n    var lineWidth = state.lineWidth === -1\n      ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n    // Without knowing if keys are implicit/explicit, assume implicit for safety.\n    var singleLineOnly = iskey\n      // No block styles in flow mode.\n      || (state.flowLevel > -1 && level >= state.flowLevel);\n    function testAmbiguity(string) {\n      return testImplicitResolving(state, string);\n    }\n\n    switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth,\n      testAmbiguity, state.quotingType, state.forceQuotes && !iskey, inblock)) {\n\n      case STYLE_PLAIN:\n        return string;\n      case STYLE_SINGLE:\n        return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n      case STYLE_LITERAL:\n        return '|' + blockHeader(string, state.indent)\n          + dropEndingNewline(indentString(string, indent));\n      case STYLE_FOLDED:\n        return '>' + blockHeader(string, state.indent)\n          + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n      case STYLE_DOUBLE:\n        return '\"' + escapeString(string, lineWidth) + '\"';\n      default:\n        throw new YAMLException('impossible error: invalid scalar style');\n    }\n  }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n  var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : '';\n\n  // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n  var clip =          string[string.length - 1] === '\\n';\n  var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n  var chomp = keep ? '+' : (clip ? '' : '-');\n\n  return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n  return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n  // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n  // unless they're before or after a more-indented line, or at the very\n  // beginning or end, in which case $k$ maps to $k$.\n  // Therefore, parse each chunk as newline(s) followed by a content line.\n  var lineRe = /(\\n+)([^\\n]*)/g;\n\n  // first line (possibly an empty line)\n  var result = (function () {\n    var nextLF = string.indexOf('\\n');\n    nextLF = nextLF !== -1 ? nextLF : string.length;\n    lineRe.lastIndex = nextLF;\n    return foldLine(string.slice(0, nextLF), width);\n  }());\n  // If we haven't reached the first content line yet, don't add an extra \\n.\n  var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n  var moreIndented;\n\n  // rest of the lines\n  var match;\n  while ((match = lineRe.exec(string))) {\n    var prefix = match[1], line = match[2];\n    moreIndented = (line[0] === ' ');\n    result += prefix\n      + (!prevMoreIndented && !moreIndented && line !== ''\n        ? '\\n' : '')\n      + foldLine(line, width);\n    prevMoreIndented = moreIndented;\n  }\n\n  return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n  if (line === '' || line[0] === ' ') return line;\n\n  // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n  var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n  var match;\n  // start is an inclusive index. end, curr, and next are exclusive.\n  var start = 0, end, curr = 0, next = 0;\n  var result = '';\n\n  // Invariants: 0 <= start <= length-1.\n  //   0 <= curr <= next <= max(0, length-2). curr - start <= width.\n  // Inside the loop:\n  //   A match implies length >= 2, so curr and next are <= length-2.\n  while ((match = breakRe.exec(line))) {\n    next = match.index;\n    // maintain invariant: curr - start <= width\n    if (next - start > width) {\n      end = (curr > start) ? curr : next; // derive end <= length-2\n      result += '\\n' + line.slice(start, end);\n      // skip the space that was output as \\n\n      start = end + 1;                    // derive start <= length-1\n    }\n    curr = next;\n  }\n\n  // By the invariants, start <= length-1, so there is something left over.\n  // It is either the whole string or a part starting from non-whitespace.\n  result += '\\n';\n  // Insert a break if the remainder is too long and there is a break available.\n  if (line.length - start > width && curr > start) {\n    result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n  } else {\n    result += line.slice(start);\n  }\n\n  return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n  var result = '';\n  var char = 0;\n  var escapeSeq;\n\n  for (var i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n    char = codePointAt(string, i);\n    escapeSeq = ESCAPE_SEQUENCES[char];\n\n    if (!escapeSeq && isPrintable(char)) {\n      result += string[i];\n      if (char >= 0x10000) result += string[i + 1];\n    } else {\n      result += escapeSeq || encodeHex(char);\n    }\n  }\n\n  return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n  var _result = '',\n      _tag    = state.tag,\n      index,\n      length,\n      value;\n\n  for (index = 0, length = object.length; index < length; index += 1) {\n    value = object[index];\n\n    if (state.replacer) {\n      value = state.replacer.call(object, String(index), value);\n    }\n\n    // Write only valid elements, put null instead of invalid elements.\n    if (writeNode(state, level, value, false, false) ||\n        (typeof value === 'undefined' &&\n         writeNode(state, level, null, false, false))) {\n\n      if (_result !== '') _result += ',' + (!state.condenseFlow ? ' ' : '');\n      _result += state.dump;\n    }\n  }\n\n  state.tag = _tag;\n  state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n  var _result = '',\n      _tag    = state.tag,\n      index,\n      length,\n      value;\n\n  for (index = 0, length = object.length; index < length; index += 1) {\n    value = object[index];\n\n    if (state.replacer) {\n      value = state.replacer.call(object, String(index), value);\n    }\n\n    // Write only valid elements, put null instead of invalid elements.\n    if (writeNode(state, level + 1, value, true, true, false, true) ||\n        (typeof value === 'undefined' &&\n         writeNode(state, level + 1, null, true, true, false, true))) {\n\n      if (!compact || _result !== '') {\n        _result += generateNextLine(state, level);\n      }\n\n      if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n        _result += '-';\n      } else {\n        _result += '- ';\n      }\n\n      _result += state.dump;\n    }\n  }\n\n  state.tag = _tag;\n  state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n  var _result       = '',\n      _tag          = state.tag,\n      objectKeyList = Object.keys(object),\n      index,\n      length,\n      objectKey,\n      objectValue,\n      pairBuffer;\n\n  for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n\n    pairBuffer = '';\n    if (_result !== '') pairBuffer += ', ';\n\n    if (state.condenseFlow) pairBuffer += '\"';\n\n    objectKey = objectKeyList[index];\n    objectValue = object[objectKey];\n\n    if (state.replacer) {\n      objectValue = state.replacer.call(object, objectKey, objectValue);\n    }\n\n    if (!writeNode(state, level, objectKey, false, false)) {\n      continue; // Skip this pair because of invalid key;\n    }\n\n    if (state.dump.length > 1024) pairBuffer += '? ';\n\n    pairBuffer += state.dump + (state.condenseFlow ? '\"' : '') + ':' + (state.condenseFlow ? '' : ' ');\n\n    if (!writeNode(state, level, objectValue, false, false)) {\n      continue; // Skip this pair because of invalid value.\n    }\n\n    pairBuffer += state.dump;\n\n    // Both key and value are valid.\n    _result += pairBuffer;\n  }\n\n  state.tag = _tag;\n  state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n  var _result       = '',\n      _tag          = state.tag,\n      objectKeyList = Object.keys(object),\n      index,\n      length,\n      objectKey,\n      objectValue,\n      explicitPair,\n      pairBuffer;\n\n  // Allow sorting keys so that the output file is deterministic\n  if (state.sortKeys === true) {\n    // Default sorting\n    objectKeyList.sort();\n  } else if (typeof state.sortKeys === 'function') {\n    // Custom sort function\n    objectKeyList.sort(state.sortKeys);\n  } else if (state.sortKeys) {\n    // Something is wrong\n    throw new YAMLException('sortKeys must be a boolean or a function');\n  }\n\n  for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n    pairBuffer = '';\n\n    if (!compact || _result !== '') {\n      pairBuffer += generateNextLine(state, level);\n    }\n\n    objectKey = objectKeyList[index];\n    objectValue = object[objectKey];\n\n    if (state.replacer) {\n      objectValue = state.replacer.call(object, objectKey, objectValue);\n    }\n\n    if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n      continue; // Skip this pair because of invalid key.\n    }\n\n    explicitPair = (state.tag !== null && state.tag !== '?') ||\n                   (state.dump && state.dump.length > 1024);\n\n    if (explicitPair) {\n      if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n        pairBuffer += '?';\n      } else {\n        pairBuffer += '? ';\n      }\n    }\n\n    pairBuffer += state.dump;\n\n    if (explicitPair) {\n      pairBuffer += generateNextLine(state, level);\n    }\n\n    if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n      continue; // Skip this pair because of invalid value.\n    }\n\n    if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n      pairBuffer += ':';\n    } else {\n      pairBuffer += ': ';\n    }\n\n    pairBuffer += state.dump;\n\n    // Both key and value are valid.\n    _result += pairBuffer;\n  }\n\n  state.tag = _tag;\n  state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n  var _result, typeList, index, length, type, style;\n\n  typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n  for (index = 0, length = typeList.length; index < length; index += 1) {\n    type = typeList[index];\n\n    if ((type.instanceOf  || type.predicate) &&\n        (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n        (!type.predicate  || type.predicate(object))) {\n\n      if (explicit) {\n        if (type.multi && type.representName) {\n          state.tag = type.representName(object);\n        } else {\n          state.tag = type.tag;\n        }\n      } else {\n        state.tag = '?';\n      }\n\n      if (type.represent) {\n        style = state.styleMap[type.tag] || type.defaultStyle;\n\n        if (_toString.call(type.represent) === '[object Function]') {\n          _result = type.represent(object, style);\n        } else if (_hasOwnProperty.call(type.represent, style)) {\n          _result = type.represent[style](object, style);\n        } else {\n          throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n        }\n\n        state.dump = _result;\n      }\n\n      return true;\n    }\n  }\n\n  return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey, isblockseq) {\n  state.tag = null;\n  state.dump = object;\n\n  if (!detectType(state, object, false)) {\n    detectType(state, object, true);\n  }\n\n  var type = _toString.call(state.dump);\n  var inblock = block;\n  var tagStr;\n\n  if (block) {\n    block = (state.flowLevel < 0 || state.flowLevel > level);\n  }\n\n  var objectOrArray = type === '[object Object]' || type === '[object Array]',\n      duplicateIndex,\n      duplicate;\n\n  if (objectOrArray) {\n    duplicateIndex = state.duplicates.indexOf(object);\n    duplicate = duplicateIndex !== -1;\n  }\n\n  if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n    compact = false;\n  }\n\n  if (duplicate && state.usedDuplicates[duplicateIndex]) {\n    state.dump = '*ref_' + duplicateIndex;\n  } else {\n    if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n      state.usedDuplicates[duplicateIndex] = true;\n    }\n    if (type === '[object Object]') {\n      if (block && (Object.keys(state.dump).length !== 0)) {\n        writeBlockMapping(state, level, state.dump, compact);\n        if (duplicate) {\n          state.dump = '&ref_' + duplicateIndex + state.dump;\n        }\n      } else {\n        writeFlowMapping(state, level, state.dump);\n        if (duplicate) {\n          state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n        }\n      }\n    } else if (type === '[object Array]') {\n      if (block && (state.dump.length !== 0)) {\n        if (state.noArrayIndent && !isblockseq && level > 0) {\n          writeBlockSequence(state, level - 1, state.dump, compact);\n        } else {\n          writeBlockSequence(state, level, state.dump, compact);\n        }\n        if (duplicate) {\n          state.dump = '&ref_' + duplicateIndex + state.dump;\n        }\n      } else {\n        writeFlowSequence(state, level, state.dump);\n        if (duplicate) {\n          state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n        }\n      }\n    } else if (type === '[object String]') {\n      if (state.tag !== '?') {\n        writeScalar(state, state.dump, level, iskey, inblock);\n      }\n    } else if (type === '[object Undefined]') {\n      return false;\n    } else {\n      if (state.skipInvalid) return false;\n      throw new YAMLException('unacceptable kind of an object to dump ' + type);\n    }\n\n    if (state.tag !== null && state.tag !== '?') {\n      // Need to encode all characters except those allowed by the spec:\n      //\n      // [35] ns-dec-digit    ::=  [#x30-#x39] /* 0-9 */\n      // [36] ns-hex-digit    ::=  ns-dec-digit\n      //                         | [#x41-#x46] /* A-F */ | [#x61-#x66] /* a-f */\n      // [37] ns-ascii-letter ::=  [#x41-#x5A] /* A-Z */ | [#x61-#x7A] /* a-z */\n      // [38] ns-word-char    ::=  ns-dec-digit | ns-ascii-letter | “-”\n      // [39] ns-uri-char     ::=  “%” ns-hex-digit ns-hex-digit | ns-word-char | “#”\n      //                         | “;” | “/” | “?” | “:” | “@” | “&” | “=” | “+” | “$” | “,”\n      //                         | “_” | “.” | “!” | “~” | “*” | “'” | “(” | “)” | “[” | “]”\n      //\n      // Also need to encode '!' because it has special meaning (end of tag prefix).\n      //\n      tagStr = encodeURI(\n        state.tag[0] === '!' ? state.tag.slice(1) : state.tag\n      ).replace(/!/g, '%21');\n\n      if (state.tag[0] === '!') {\n        tagStr = '!' + tagStr;\n      } else if (tagStr.slice(0, 18) === 'tag:yaml.org,2002:') {\n        tagStr = '!!' + tagStr.slice(18);\n      } else {\n        tagStr = '!<' + tagStr + '>';\n      }\n\n      state.dump = tagStr + ' ' + state.dump;\n    }\n  }\n\n  return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n  var objects = [],\n      duplicatesIndexes = [],\n      index,\n      length;\n\n  inspectNode(object, objects, duplicatesIndexes);\n\n  for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n    state.duplicates.push(objects[duplicatesIndexes[index]]);\n  }\n  state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n  var objectKeyList,\n      index,\n      length;\n\n  if (object !== null && typeof object === 'object') {\n    index = objects.indexOf(object);\n    if (index !== -1) {\n      if (duplicatesIndexes.indexOf(index) === -1) {\n        duplicatesIndexes.push(index);\n      }\n    } else {\n      objects.push(object);\n\n      if (Array.isArray(object)) {\n        for (index = 0, length = object.length; index < length; index += 1) {\n          inspectNode(object[index], objects, duplicatesIndexes);\n        }\n      } else {\n        objectKeyList = Object.keys(object);\n\n        for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n          inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n        }\n      }\n    }\n  }\n}\n\nfunction dump(input, options) {\n  options = options || {};\n\n  var state = new State(options);\n\n  if (!state.noRefs) getDuplicateReferences(input, state);\n\n  var value = input;\n\n  if (state.replacer) {\n    value = state.replacer.call({ '': value }, '', value);\n  }\n\n  if (writeNode(state, 0, value, true, true)) return state.dump + '\\n';\n\n  return '';\n}\n\nmodule.exports.dump = dump;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/js-yaml/lib/dumper.js?")},"./node_modules/js-yaml/lib/exception.js":
/*!***********************************************!*\
  !*** ./node_modules/js-yaml/lib/exception.js ***!
  \***********************************************/module=>{"use strict";eval("// YAML error class. http://stackoverflow.com/questions/8458984\n//\n\n\n\nfunction formatError(exception, compact) {\n  var where = '', message = exception.reason || '(unknown reason)';\n\n  if (!exception.mark) return message;\n\n  if (exception.mark.name) {\n    where += 'in \"' + exception.mark.name + '\" ';\n  }\n\n  where += '(' + (exception.mark.line + 1) + ':' + (exception.mark.column + 1) + ')';\n\n  if (!compact && exception.mark.snippet) {\n    where += '\\n\\n' + exception.mark.snippet;\n  }\n\n  return message + ' ' + where;\n}\n\n\nfunction YAMLException(reason, mark) {\n  // Super constructor\n  Error.call(this);\n\n  this.name = 'YAMLException';\n  this.reason = reason;\n  this.mark = mark;\n  this.message = formatError(this, false);\n\n  // Include stack trace in error object\n  if (Error.captureStackTrace) {\n    // Chrome and NodeJS\n    Error.captureStackTrace(this, this.constructor);\n  } else {\n    // FF, IE 10+ and Safari 6+. Fallback for others\n    this.stack = (new Error()).stack || '';\n  }\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n  return this.name + ': ' + formatError(this, compact);\n};\n\n\nmodule.exports = YAMLException;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/js-yaml/lib/exception.js?")},"./node_modules/js-yaml/lib/loader.js":
/*!********************************************!*\
  !*** ./node_modules/js-yaml/lib/loader.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common              = __webpack_require__(/*! ./common */ \"./node_modules/js-yaml/lib/common.js\");\nvar YAMLException       = __webpack_require__(/*! ./exception */ \"./node_modules/js-yaml/lib/exception.js\");\nvar makeSnippet         = __webpack_require__(/*! ./snippet */ \"./node_modules/js-yaml/lib/snippet.js\");\nvar DEFAULT_SCHEMA      = __webpack_require__(/*! ./schema/default */ \"./node_modules/js-yaml/lib/schema/default.js\");\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN   = 1;\nvar CONTEXT_FLOW_OUT  = 2;\nvar CONTEXT_BLOCK_IN  = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP  = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP  = 3;\n\n\nvar PATTERN_NON_PRINTABLE         = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS       = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE            = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI               = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\n\nfunction is_EOL(c) {\n  return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n  return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n  return (c === 0x09/* Tab */) ||\n         (c === 0x20/* Space */) ||\n         (c === 0x0A/* LF */) ||\n         (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n  return c === 0x2C/* , */ ||\n         c === 0x5B/* [ */ ||\n         c === 0x5D/* ] */ ||\n         c === 0x7B/* { */ ||\n         c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n  var lc;\n\n  if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n    return c - 0x30;\n  }\n\n  /*eslint-disable no-bitwise*/\n  lc = c | 0x20;\n\n  if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n    return lc - 0x61 + 10;\n  }\n\n  return -1;\n}\n\nfunction escapedHexLen(c) {\n  if (c === 0x78/* x */) { return 2; }\n  if (c === 0x75/* u */) { return 4; }\n  if (c === 0x55/* U */) { return 8; }\n  return 0;\n}\n\nfunction fromDecimalCode(c) {\n  if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n    return c - 0x30;\n  }\n\n  return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n  /* eslint-disable indent */\n  return (c === 0x30/* 0 */) ? '\\x00' :\n        (c === 0x61/* a */) ? '\\x07' :\n        (c === 0x62/* b */) ? '\\x08' :\n        (c === 0x74/* t */) ? '\\x09' :\n        (c === 0x09/* Tab */) ? '\\x09' :\n        (c === 0x6E/* n */) ? '\\x0A' :\n        (c === 0x76/* v */) ? '\\x0B' :\n        (c === 0x66/* f */) ? '\\x0C' :\n        (c === 0x72/* r */) ? '\\x0D' :\n        (c === 0x65/* e */) ? '\\x1B' :\n        (c === 0x20/* Space */) ? ' ' :\n        (c === 0x22/* \" */) ? '\\x22' :\n        (c === 0x2F/* / */) ? '/' :\n        (c === 0x5C/* \\ */) ? '\\x5C' :\n        (c === 0x4E/* N */) ? '\\x85' :\n        (c === 0x5F/* _ */) ? '\\xA0' :\n        (c === 0x4C/* L */) ? '\\u2028' :\n        (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n  if (c <= 0xFFFF) {\n    return String.fromCharCode(c);\n  }\n  // Encode UTF-16 surrogate pair\n  // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n  return String.fromCharCode(\n    ((c - 0x010000) >> 10) + 0xD800,\n    ((c - 0x010000) & 0x03FF) + 0xDC00\n  );\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n  simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n  simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n  this.input = input;\n\n  this.filename  = options['filename']  || null;\n  this.schema    = options['schema']    || DEFAULT_SCHEMA;\n  this.onWarning = options['onWarning'] || null;\n  // (Hidden) Remove? makes the loader to expect YAML 1.1 documents\n  // if such documents have no explicit %YAML directive\n  this.legacy    = options['legacy']    || false;\n\n  this.json      = options['json']      || false;\n  this.listener  = options['listener']  || null;\n\n  this.implicitTypes = this.schema.compiledImplicit;\n  this.typeMap       = this.schema.compiledTypeMap;\n\n  this.length     = input.length;\n  this.position   = 0;\n  this.line       = 0;\n  this.lineStart  = 0;\n  this.lineIndent = 0;\n\n  // position of first leading tab in the current line,\n  // used to make sure there are no tabs in the indentation\n  this.firstTabInLine = -1;\n\n  this.documents = [];\n\n  /*\n  this.version;\n  this.checkLineBreaks;\n  this.tagMap;\n  this.anchorMap;\n  this.tag;\n  this.anchor;\n  this.kind;\n  this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n  var mark = {\n    name:     state.filename,\n    buffer:   state.input.slice(0, -1), // omit trailing \\0\n    position: state.position,\n    line:     state.line,\n    column:   state.position - state.lineStart\n  };\n\n  mark.snippet = makeSnippet(mark);\n\n  return new YAMLException(message, mark);\n}\n\nfunction throwError(state, message) {\n  throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n  if (state.onWarning) {\n    state.onWarning.call(null, generateError(state, message));\n  }\n}\n\n\nvar directiveHandlers = {\n\n  YAML: function handleYamlDirective(state, name, args) {\n\n    var match, major, minor;\n\n    if (state.version !== null) {\n      throwError(state, 'duplication of %YAML directive');\n    }\n\n    if (args.length !== 1) {\n      throwError(state, 'YAML directive accepts exactly one argument');\n    }\n\n    match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n    if (match === null) {\n      throwError(state, 'ill-formed argument of the YAML directive');\n    }\n\n    major = parseInt(match[1], 10);\n    minor = parseInt(match[2], 10);\n\n    if (major !== 1) {\n      throwError(state, 'unacceptable YAML version of the document');\n    }\n\n    state.version = args[0];\n    state.checkLineBreaks = (minor < 2);\n\n    if (minor !== 1 && minor !== 2) {\n      throwWarning(state, 'unsupported YAML version of the document');\n    }\n  },\n\n  TAG: function handleTagDirective(state, name, args) {\n\n    var handle, prefix;\n\n    if (args.length !== 2) {\n      throwError(state, 'TAG directive accepts exactly two arguments');\n    }\n\n    handle = args[0];\n    prefix = args[1];\n\n    if (!PATTERN_TAG_HANDLE.test(handle)) {\n      throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n    }\n\n    if (_hasOwnProperty.call(state.tagMap, handle)) {\n      throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n    }\n\n    if (!PATTERN_TAG_URI.test(prefix)) {\n      throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n    }\n\n    try {\n      prefix = decodeURIComponent(prefix);\n    } catch (err) {\n      throwError(state, 'tag prefix is malformed: ' + prefix);\n    }\n\n    state.tagMap[handle] = prefix;\n  }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n  var _position, _length, _character, _result;\n\n  if (start < end) {\n    _result = state.input.slice(start, end);\n\n    if (checkJson) {\n      for (_position = 0, _length = _result.length; _position < _length; _position += 1) {\n        _character = _result.charCodeAt(_position);\n        if (!(_character === 0x09 ||\n              (0x20 <= _character && _character <= 0x10FFFF))) {\n          throwError(state, 'expected valid JSON character');\n        }\n      }\n    } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n      throwError(state, 'the stream contains non-printable characters');\n    }\n\n    state.result += _result;\n  }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n  var sourceKeys, key, index, quantity;\n\n  if (!common.isObject(source)) {\n    throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n  }\n\n  sourceKeys = Object.keys(source);\n\n  for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n    key = sourceKeys[index];\n\n    if (!_hasOwnProperty.call(destination, key)) {\n      destination[key] = source[key];\n      overridableKeys[key] = true;\n    }\n  }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode,\n  startLine, startLineStart, startPos) {\n\n  var index, quantity;\n\n  // The output is a plain object here, so keys can only be strings.\n  // We need to convert keyNode to a string, but doing so can hang the process\n  // (deeply nested arrays that explode exponentially using aliases).\n  if (Array.isArray(keyNode)) {\n    keyNode = Array.prototype.slice.call(keyNode);\n\n    for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n      if (Array.isArray(keyNode[index])) {\n        throwError(state, 'nested arrays are not supported inside keys');\n      }\n\n      if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') {\n        keyNode[index] = '[object Object]';\n      }\n    }\n  }\n\n  // Avoid code execution in load() via toString property\n  // (still use its own toString for arrays, timestamps,\n  // and whatever user schema extensions happen to have @@toStringTag)\n  if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') {\n    keyNode = '[object Object]';\n  }\n\n\n  keyNode = String(keyNode);\n\n  if (_result === null) {\n    _result = {};\n  }\n\n  if (keyTag === 'tag:yaml.org,2002:merge') {\n    if (Array.isArray(valueNode)) {\n      for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n        mergeMappings(state, _result, valueNode[index], overridableKeys);\n      }\n    } else {\n      mergeMappings(state, _result, valueNode, overridableKeys);\n    }\n  } else {\n    if (!state.json &&\n        !_hasOwnProperty.call(overridableKeys, keyNode) &&\n        _hasOwnProperty.call(_result, keyNode)) {\n      state.line = startLine || state.line;\n      state.lineStart = startLineStart || state.lineStart;\n      state.position = startPos || state.position;\n      throwError(state, 'duplicated mapping key');\n    }\n\n    // used for this specific key only because Object.defineProperty is slow\n    if (keyNode === '__proto__') {\n      Object.defineProperty(_result, keyNode, {\n        configurable: true,\n        enumerable: true,\n        writable: true,\n        value: valueNode\n      });\n    } else {\n      _result[keyNode] = valueNode;\n    }\n    delete overridableKeys[keyNode];\n  }\n\n  return _result;\n}\n\nfunction readLineBreak(state) {\n  var ch;\n\n  ch = state.input.charCodeAt(state.position);\n\n  if (ch === 0x0A/* LF */) {\n    state.position++;\n  } else if (ch === 0x0D/* CR */) {\n    state.position++;\n    if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n      state.position++;\n    }\n  } else {\n    throwError(state, 'a line break is expected');\n  }\n\n  state.line += 1;\n  state.lineStart = state.position;\n  state.firstTabInLine = -1;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n  var lineBreaks = 0,\n      ch = state.input.charCodeAt(state.position);\n\n  while (ch !== 0) {\n    while (is_WHITE_SPACE(ch)) {\n      if (ch === 0x09/* Tab */ && state.firstTabInLine === -1) {\n        state.firstTabInLine = state.position;\n      }\n      ch = state.input.charCodeAt(++state.position);\n    }\n\n    if (allowComments && ch === 0x23/* # */) {\n      do {\n        ch = state.input.charCodeAt(++state.position);\n      } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n    }\n\n    if (is_EOL(ch)) {\n      readLineBreak(state);\n\n      ch = state.input.charCodeAt(state.position);\n      lineBreaks++;\n      state.lineIndent = 0;\n\n      while (ch === 0x20/* Space */) {\n        state.lineIndent++;\n        ch = state.input.charCodeAt(++state.position);\n      }\n    } else {\n      break;\n    }\n  }\n\n  if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n    throwWarning(state, 'deficient indentation');\n  }\n\n  return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n  var _position = state.position,\n      ch;\n\n  ch = state.input.charCodeAt(_position);\n\n  // Condition state.position === state.lineStart is tested\n  // in parent on each call, for efficiency. No needs to test here again.\n  if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n      ch === state.input.charCodeAt(_position + 1) &&\n      ch === state.input.charCodeAt(_position + 2)) {\n\n    _position += 3;\n\n    ch = state.input.charCodeAt(_position);\n\n    if (ch === 0 || is_WS_OR_EOL(ch)) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction writeFoldedLines(state, count) {\n  if (count === 1) {\n    state.result += ' ';\n  } else if (count > 1) {\n    state.result += common.repeat('\\n', count - 1);\n  }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n  var preceding,\n      following,\n      captureStart,\n      captureEnd,\n      hasPendingContent,\n      _line,\n      _lineStart,\n      _lineIndent,\n      _kind = state.kind,\n      _result = state.result,\n      ch;\n\n  ch = state.input.charCodeAt(state.position);\n\n  if (is_WS_OR_EOL(ch)      ||\n      is_FLOW_INDICATOR(ch) ||\n      ch === 0x23/* # */    ||\n      ch === 0x26/* & */    ||\n      ch === 0x2A/* * */    ||\n      ch === 0x21/* ! */    ||\n      ch === 0x7C/* | */    ||\n      ch === 0x3E/* > */    ||\n      ch === 0x27/* ' */    ||\n      ch === 0x22/* \" */    ||\n      ch === 0x25/* % */    ||\n      ch === 0x40/* @ */    ||\n      ch === 0x60/* ` */) {\n    return false;\n  }\n\n  if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n    following = state.input.charCodeAt(state.position + 1);\n\n    if (is_WS_OR_EOL(following) ||\n        withinFlowCollection && is_FLOW_INDICATOR(following)) {\n      return false;\n    }\n  }\n\n  state.kind = 'scalar';\n  state.result = '';\n  captureStart = captureEnd = state.position;\n  hasPendingContent = false;\n\n  while (ch !== 0) {\n    if (ch === 0x3A/* : */) {\n      following = state.input.charCodeAt(state.position + 1);\n\n      if (is_WS_OR_EOL(following) ||\n          withinFlowCollection && is_FLOW_INDICATOR(following)) {\n        break;\n      }\n\n    } else if (ch === 0x23/* # */) {\n      preceding = state.input.charCodeAt(state.position - 1);\n\n      if (is_WS_OR_EOL(preceding)) {\n        break;\n      }\n\n    } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n               withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n      break;\n\n    } else if (is_EOL(ch)) {\n      _line = state.line;\n      _lineStart = state.lineStart;\n      _lineIndent = state.lineIndent;\n      skipSeparationSpace(state, false, -1);\n\n      if (state.lineIndent >= nodeIndent) {\n        hasPendingContent = true;\n        ch = state.input.charCodeAt(state.position);\n        continue;\n      } else {\n        state.position = captureEnd;\n        state.line = _line;\n        state.lineStart = _lineStart;\n        state.lineIndent = _lineIndent;\n        break;\n      }\n    }\n\n    if (hasPendingContent) {\n      captureSegment(state, captureStart, captureEnd, false);\n      writeFoldedLines(state, state.line - _line);\n      captureStart = captureEnd = state.position;\n      hasPendingContent = false;\n    }\n\n    if (!is_WHITE_SPACE(ch)) {\n      captureEnd = state.position + 1;\n    }\n\n    ch = state.input.charCodeAt(++state.position);\n  }\n\n  captureSegment(state, captureStart, captureEnd, false);\n\n  if (state.result) {\n    return true;\n  }\n\n  state.kind = _kind;\n  state.result = _result;\n  return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n  var ch,\n      captureStart, captureEnd;\n\n  ch = state.input.charCodeAt(state.position);\n\n  if (ch !== 0x27/* ' */) {\n    return false;\n  }\n\n  state.kind = 'scalar';\n  state.result = '';\n  state.position++;\n  captureStart = captureEnd = state.position;\n\n  while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n    if (ch === 0x27/* ' */) {\n      captureSegment(state, captureStart, state.position, true);\n      ch = state.input.charCodeAt(++state.position);\n\n      if (ch === 0x27/* ' */) {\n        captureStart = state.position;\n        state.position++;\n        captureEnd = state.position;\n      } else {\n        return true;\n      }\n\n    } else if (is_EOL(ch)) {\n      captureSegment(state, captureStart, captureEnd, true);\n      writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n      captureStart = captureEnd = state.position;\n\n    } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n      throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n    } else {\n      state.position++;\n      captureEnd = state.position;\n    }\n  }\n\n  throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n  var captureStart,\n      captureEnd,\n      hexLength,\n      hexResult,\n      tmp,\n      ch;\n\n  ch = state.input.charCodeAt(state.position);\n\n  if (ch !== 0x22/* \" */) {\n    return false;\n  }\n\n  state.kind = 'scalar';\n  state.result = '';\n  state.position++;\n  captureStart = captureEnd = state.position;\n\n  while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n    if (ch === 0x22/* \" */) {\n      captureSegment(state, captureStart, state.position, true);\n      state.position++;\n      return true;\n\n    } else if (ch === 0x5C/* \\ */) {\n      captureSegment(state, captureStart, state.position, true);\n      ch = state.input.charCodeAt(++state.position);\n\n      if (is_EOL(ch)) {\n        skipSeparationSpace(state, false, nodeIndent);\n\n        // TODO: rework to inline fn with no type cast?\n      } else if (ch < 256 && simpleEscapeCheck[ch]) {\n        state.result += simpleEscapeMap[ch];\n        state.position++;\n\n      } else if ((tmp = escapedHexLen(ch)) > 0) {\n        hexLength = tmp;\n        hexResult = 0;\n\n        for (; hexLength > 0; hexLength--) {\n          ch = state.input.charCodeAt(++state.position);\n\n          if ((tmp = fromHexCode(ch)) >= 0) {\n            hexResult = (hexResult << 4) + tmp;\n\n          } else {\n            throwError(state, 'expected hexadecimal character');\n          }\n        }\n\n        state.result += charFromCodepoint(hexResult);\n\n        state.position++;\n\n      } else {\n        throwError(state, 'unknown escape sequence');\n      }\n\n      captureStart = captureEnd = state.position;\n\n    } else if (is_EOL(ch)) {\n      captureSegment(state, captureStart, captureEnd, true);\n      writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n      captureStart = captureEnd = state.position;\n\n    } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n      throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n    } else {\n      state.position++;\n      captureEnd = state.position;\n    }\n  }\n\n  throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n  var readNext = true,\n      _line,\n      _lineStart,\n      _pos,\n      _tag     = state.tag,\n      _result,\n      _anchor  = state.anchor,\n      following,\n      terminator,\n      isPair,\n      isExplicitPair,\n      isMapping,\n      overridableKeys = Object.create(null),\n      keyNode,\n      keyTag,\n      valueNode,\n      ch;\n\n  ch = state.input.charCodeAt(state.position);\n\n  if (ch === 0x5B/* [ */) {\n    terminator = 0x5D;/* ] */\n    isMapping = false;\n    _result = [];\n  } else if (ch === 0x7B/* { */) {\n    terminator = 0x7D;/* } */\n    isMapping = true;\n    _result = {};\n  } else {\n    return false;\n  }\n\n  if (state.anchor !== null) {\n    state.anchorMap[state.anchor] = _result;\n  }\n\n  ch = state.input.charCodeAt(++state.position);\n\n  while (ch !== 0) {\n    skipSeparationSpace(state, true, nodeIndent);\n\n    ch = state.input.charCodeAt(state.position);\n\n    if (ch === terminator) {\n      state.position++;\n      state.tag = _tag;\n      state.anchor = _anchor;\n      state.kind = isMapping ? 'mapping' : 'sequence';\n      state.result = _result;\n      return true;\n    } else if (!readNext) {\n      throwError(state, 'missed comma between flow collection entries');\n    } else if (ch === 0x2C/* , */) {\n      // \"flow collection entries can never be completely empty\", as per YAML 1.2, section 7.4\n      throwError(state, \"expected the node content, but found ','\");\n    }\n\n    keyTag = keyNode = valueNode = null;\n    isPair = isExplicitPair = false;\n\n    if (ch === 0x3F/* ? */) {\n      following = state.input.charCodeAt(state.position + 1);\n\n      if (is_WS_OR_EOL(following)) {\n        isPair = isExplicitPair = true;\n        state.position++;\n        skipSeparationSpace(state, true, nodeIndent);\n      }\n    }\n\n    _line = state.line; // Save the current line.\n    _lineStart = state.lineStart;\n    _pos = state.position;\n    composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n    keyTag = state.tag;\n    keyNode = state.result;\n    skipSeparationSpace(state, true, nodeIndent);\n\n    ch = state.input.charCodeAt(state.position);\n\n    if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n      isPair = true;\n      ch = state.input.charCodeAt(++state.position);\n      skipSeparationSpace(state, true, nodeIndent);\n      composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n      valueNode = state.result;\n    }\n\n    if (isMapping) {\n      storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos);\n    } else if (isPair) {\n      _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos));\n    } else {\n      _result.push(keyNode);\n    }\n\n    skipSeparationSpace(state, true, nodeIndent);\n\n    ch = state.input.charCodeAt(state.position);\n\n    if (ch === 0x2C/* , */) {\n      readNext = true;\n      ch = state.input.charCodeAt(++state.position);\n    } else {\n      readNext = false;\n    }\n  }\n\n  throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n  var captureStart,\n      folding,\n      chomping       = CHOMPING_CLIP,\n      didReadContent = false,\n      detectedIndent = false,\n      textIndent     = nodeIndent,\n      emptyLines     = 0,\n      atMoreIndented = false,\n      tmp,\n      ch;\n\n  ch = state.input.charCodeAt(state.position);\n\n  if (ch === 0x7C/* | */) {\n    folding = false;\n  } else if (ch === 0x3E/* > */) {\n    folding = true;\n  } else {\n    return false;\n  }\n\n  state.kind = 'scalar';\n  state.result = '';\n\n  while (ch !== 0) {\n    ch = state.input.charCodeAt(++state.position);\n\n    if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n      if (CHOMPING_CLIP === chomping) {\n        chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n      } else {\n        throwError(state, 'repeat of a chomping mode identifier');\n      }\n\n    } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n      if (tmp === 0) {\n        throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n      } else if (!detectedIndent) {\n        textIndent = nodeIndent + tmp - 1;\n        detectedIndent = true;\n      } else {\n        throwError(state, 'repeat of an indentation width identifier');\n      }\n\n    } else {\n      break;\n    }\n  }\n\n  if (is_WHITE_SPACE(ch)) {\n    do { ch = state.input.charCodeAt(++state.position); }\n    while (is_WHITE_SPACE(ch));\n\n    if (ch === 0x23/* # */) {\n      do { ch = state.input.charCodeAt(++state.position); }\n      while (!is_EOL(ch) && (ch !== 0));\n    }\n  }\n\n  while (ch !== 0) {\n    readLineBreak(state);\n    state.lineIndent = 0;\n\n    ch = state.input.charCodeAt(state.position);\n\n    while ((!detectedIndent || state.lineIndent < textIndent) &&\n           (ch === 0x20/* Space */)) {\n      state.lineIndent++;\n      ch = state.input.charCodeAt(++state.position);\n    }\n\n    if (!detectedIndent && state.lineIndent > textIndent) {\n      textIndent = state.lineIndent;\n    }\n\n    if (is_EOL(ch)) {\n      emptyLines++;\n      continue;\n    }\n\n    // End of the scalar.\n    if (state.lineIndent < textIndent) {\n\n      // Perform the chomping.\n      if (chomping === CHOMPING_KEEP) {\n        state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n      } else if (chomping === CHOMPING_CLIP) {\n        if (didReadContent) { // i.e. only if the scalar is not empty.\n          state.result += '\\n';\n        }\n      }\n\n      // Break this `while` cycle and go to the funciton's epilogue.\n      break;\n    }\n\n    // Folded style: use fancy rules to handle line breaks.\n    if (folding) {\n\n      // Lines starting with white space characters (more-indented lines) are not folded.\n      if (is_WHITE_SPACE(ch)) {\n        atMoreIndented = true;\n        // except for the first content line (cf. Example 8.1)\n        state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n      // End of more-indented block.\n      } else if (atMoreIndented) {\n        atMoreIndented = false;\n        state.result += common.repeat('\\n', emptyLines + 1);\n\n      // Just one line break - perceive as the same line.\n      } else if (emptyLines === 0) {\n        if (didReadContent) { // i.e. only if we have already read some scalar content.\n          state.result += ' ';\n        }\n\n      // Several line breaks - perceive as different lines.\n      } else {\n        state.result += common.repeat('\\n', emptyLines);\n      }\n\n    // Literal style: just add exact number of line breaks between content lines.\n    } else {\n      // Keep all line breaks except the header line break.\n      state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n    }\n\n    didReadContent = true;\n    detectedIndent = true;\n    emptyLines = 0;\n    captureStart = state.position;\n\n    while (!is_EOL(ch) && (ch !== 0)) {\n      ch = state.input.charCodeAt(++state.position);\n    }\n\n    captureSegment(state, captureStart, state.position, false);\n  }\n\n  return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n  var _line,\n      _tag      = state.tag,\n      _anchor   = state.anchor,\n      _result   = [],\n      following,\n      detected  = false,\n      ch;\n\n  // there is a leading tab before this token, so it can't be a block sequence/mapping;\n  // it can still be flow sequence/mapping or a scalar\n  if (state.firstTabInLine !== -1) return false;\n\n  if (state.anchor !== null) {\n    state.anchorMap[state.anchor] = _result;\n  }\n\n  ch = state.input.charCodeAt(state.position);\n\n  while (ch !== 0) {\n    if (state.firstTabInLine !== -1) {\n      state.position = state.firstTabInLine;\n      throwError(state, 'tab characters must not be used in indentation');\n    }\n\n    if (ch !== 0x2D/* - */) {\n      break;\n    }\n\n    following = state.input.charCodeAt(state.position + 1);\n\n    if (!is_WS_OR_EOL(following)) {\n      break;\n    }\n\n    detected = true;\n    state.position++;\n\n    if (skipSeparationSpace(state, true, -1)) {\n      if (state.lineIndent <= nodeIndent) {\n        _result.push(null);\n        ch = state.input.charCodeAt(state.position);\n        continue;\n      }\n    }\n\n    _line = state.line;\n    composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n    _result.push(state.result);\n    skipSeparationSpace(state, true, -1);\n\n    ch = state.input.charCodeAt(state.position);\n\n    if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n      throwError(state, 'bad indentation of a sequence entry');\n    } else if (state.lineIndent < nodeIndent) {\n      break;\n    }\n  }\n\n  if (detected) {\n    state.tag = _tag;\n    state.anchor = _anchor;\n    state.kind = 'sequence';\n    state.result = _result;\n    return true;\n  }\n  return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n  var following,\n      allowCompact,\n      _line,\n      _keyLine,\n      _keyLineStart,\n      _keyPos,\n      _tag          = state.tag,\n      _anchor       = state.anchor,\n      _result       = {},\n      overridableKeys = Object.create(null),\n      keyTag        = null,\n      keyNode       = null,\n      valueNode     = null,\n      atExplicitKey = false,\n      detected      = false,\n      ch;\n\n  // there is a leading tab before this token, so it can't be a block sequence/mapping;\n  // it can still be flow sequence/mapping or a scalar\n  if (state.firstTabInLine !== -1) return false;\n\n  if (state.anchor !== null) {\n    state.anchorMap[state.anchor] = _result;\n  }\n\n  ch = state.input.charCodeAt(state.position);\n\n  while (ch !== 0) {\n    if (!atExplicitKey && state.firstTabInLine !== -1) {\n      state.position = state.firstTabInLine;\n      throwError(state, 'tab characters must not be used in indentation');\n    }\n\n    following = state.input.charCodeAt(state.position + 1);\n    _line = state.line; // Save the current line.\n\n    //\n    // Explicit notation case. There are two separate blocks:\n    // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n    //\n    if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n      if (ch === 0x3F/* ? */) {\n        if (atExplicitKey) {\n          storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n          keyTag = keyNode = valueNode = null;\n        }\n\n        detected = true;\n        atExplicitKey = true;\n        allowCompact = true;\n\n      } else if (atExplicitKey) {\n        // i.e. 0x3A/* : */ === character after the explicit key.\n        atExplicitKey = false;\n        allowCompact = true;\n\n      } else {\n        throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line');\n      }\n\n      state.position += 1;\n      ch = following;\n\n    //\n    // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n    //\n    } else {\n      _keyLine = state.line;\n      _keyLineStart = state.lineStart;\n      _keyPos = state.position;\n\n      if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n        // Neither implicit nor explicit notation.\n        // Reading is done. Go to the epilogue.\n        break;\n      }\n\n      if (state.line === _line) {\n        ch = state.input.charCodeAt(state.position);\n\n        while (is_WHITE_SPACE(ch)) {\n          ch = state.input.charCodeAt(++state.position);\n        }\n\n        if (ch === 0x3A/* : */) {\n          ch = state.input.charCodeAt(++state.position);\n\n          if (!is_WS_OR_EOL(ch)) {\n            throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n          }\n\n          if (atExplicitKey) {\n            storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n            keyTag = keyNode = valueNode = null;\n          }\n\n          detected = true;\n          atExplicitKey = false;\n          allowCompact = false;\n          keyTag = state.tag;\n          keyNode = state.result;\n\n        } else if (detected) {\n          throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n        } else {\n          state.tag = _tag;\n          state.anchor = _anchor;\n          return true; // Keep the result of `composeNode`.\n        }\n\n      } else if (detected) {\n        throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n      } else {\n        state.tag = _tag;\n        state.anchor = _anchor;\n        return true; // Keep the result of `composeNode`.\n      }\n    }\n\n    //\n    // Common reading code for both explicit and implicit notations.\n    //\n    if (state.line === _line || state.lineIndent > nodeIndent) {\n      if (atExplicitKey) {\n        _keyLine = state.line;\n        _keyLineStart = state.lineStart;\n        _keyPos = state.position;\n      }\n\n      if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n        if (atExplicitKey) {\n          keyNode = state.result;\n        } else {\n          valueNode = state.result;\n        }\n      }\n\n      if (!atExplicitKey) {\n        storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos);\n        keyTag = keyNode = valueNode = null;\n      }\n\n      skipSeparationSpace(state, true, -1);\n      ch = state.input.charCodeAt(state.position);\n    }\n\n    if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n      throwError(state, 'bad indentation of a mapping entry');\n    } else if (state.lineIndent < nodeIndent) {\n      break;\n    }\n  }\n\n  //\n  // Epilogue.\n  //\n\n  // Special case: last mapping's node contains only the key in explicit notation.\n  if (atExplicitKey) {\n    storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n  }\n\n  // Expose the resulting mapping.\n  if (detected) {\n    state.tag = _tag;\n    state.anchor = _anchor;\n    state.kind = 'mapping';\n    state.result = _result;\n  }\n\n  return detected;\n}\n\nfunction readTagProperty(state) {\n  var _position,\n      isVerbatim = false,\n      isNamed    = false,\n      tagHandle,\n      tagName,\n      ch;\n\n  ch = state.input.charCodeAt(state.position);\n\n  if (ch !== 0x21/* ! */) return false;\n\n  if (state.tag !== null) {\n    throwError(state, 'duplication of a tag property');\n  }\n\n  ch = state.input.charCodeAt(++state.position);\n\n  if (ch === 0x3C/* < */) {\n    isVerbatim = true;\n    ch = state.input.charCodeAt(++state.position);\n\n  } else if (ch === 0x21/* ! */) {\n    isNamed = true;\n    tagHandle = '!!';\n    ch = state.input.charCodeAt(++state.position);\n\n  } else {\n    tagHandle = '!';\n  }\n\n  _position = state.position;\n\n  if (isVerbatim) {\n    do { ch = state.input.charCodeAt(++state.position); }\n    while (ch !== 0 && ch !== 0x3E/* > */);\n\n    if (state.position < state.length) {\n      tagName = state.input.slice(_position, state.position);\n      ch = state.input.charCodeAt(++state.position);\n    } else {\n      throwError(state, 'unexpected end of the stream within a verbatim tag');\n    }\n  } else {\n    while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n      if (ch === 0x21/* ! */) {\n        if (!isNamed) {\n          tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n          if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n            throwError(state, 'named tag handle cannot contain such characters');\n          }\n\n          isNamed = true;\n          _position = state.position + 1;\n        } else {\n          throwError(state, 'tag suffix cannot contain exclamation marks');\n        }\n      }\n\n      ch = state.input.charCodeAt(++state.position);\n    }\n\n    tagName = state.input.slice(_position, state.position);\n\n    if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n      throwError(state, 'tag suffix cannot contain flow indicator characters');\n    }\n  }\n\n  if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n    throwError(state, 'tag name cannot contain such characters: ' + tagName);\n  }\n\n  try {\n    tagName = decodeURIComponent(tagName);\n  } catch (err) {\n    throwError(state, 'tag name is malformed: ' + tagName);\n  }\n\n  if (isVerbatim) {\n    state.tag = tagName;\n\n  } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n    state.tag = state.tagMap[tagHandle] + tagName;\n\n  } else if (tagHandle === '!') {\n    state.tag = '!' + tagName;\n\n  } else if (tagHandle === '!!') {\n    state.tag = 'tag:yaml.org,2002:' + tagName;\n\n  } else {\n    throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n  }\n\n  return true;\n}\n\nfunction readAnchorProperty(state) {\n  var _position,\n      ch;\n\n  ch = state.input.charCodeAt(state.position);\n\n  if (ch !== 0x26/* & */) return false;\n\n  if (state.anchor !== null) {\n    throwError(state, 'duplication of an anchor property');\n  }\n\n  ch = state.input.charCodeAt(++state.position);\n  _position = state.position;\n\n  while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n    ch = state.input.charCodeAt(++state.position);\n  }\n\n  if (state.position === _position) {\n    throwError(state, 'name of an anchor node must contain at least one character');\n  }\n\n  state.anchor = state.input.slice(_position, state.position);\n  return true;\n}\n\nfunction readAlias(state) {\n  var _position, alias,\n      ch;\n\n  ch = state.input.charCodeAt(state.position);\n\n  if (ch !== 0x2A/* * */) return false;\n\n  ch = state.input.charCodeAt(++state.position);\n  _position = state.position;\n\n  while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n    ch = state.input.charCodeAt(++state.position);\n  }\n\n  if (state.position === _position) {\n    throwError(state, 'name of an alias node must contain at least one character');\n  }\n\n  alias = state.input.slice(_position, state.position);\n\n  if (!_hasOwnProperty.call(state.anchorMap, alias)) {\n    throwError(state, 'unidentified alias \"' + alias + '\"');\n  }\n\n  state.result = state.anchorMap[alias];\n  skipSeparationSpace(state, true, -1);\n  return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n  var allowBlockStyles,\n      allowBlockScalars,\n      allowBlockCollections,\n      indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this<parent\n      atNewLine  = false,\n      hasContent = false,\n      typeIndex,\n      typeQuantity,\n      typeList,\n      type,\n      flowIndent,\n      blockIndent;\n\n  if (state.listener !== null) {\n    state.listener('open', state);\n  }\n\n  state.tag    = null;\n  state.anchor = null;\n  state.kind   = null;\n  state.result = null;\n\n  allowBlockStyles = allowBlockScalars = allowBlockCollections =\n    CONTEXT_BLOCK_OUT === nodeContext ||\n    CONTEXT_BLOCK_IN  === nodeContext;\n\n  if (allowToSeek) {\n    if (skipSeparationSpace(state, true, -1)) {\n      atNewLine = true;\n\n      if (state.lineIndent > parentIndent) {\n        indentStatus = 1;\n      } else if (state.lineIndent === parentIndent) {\n        indentStatus = 0;\n      } else if (state.lineIndent < parentIndent) {\n        indentStatus = -1;\n      }\n    }\n  }\n\n  if (indentStatus === 1) {\n    while (readTagProperty(state) || readAnchorProperty(state)) {\n      if (skipSeparationSpace(state, true, -1)) {\n        atNewLine = true;\n        allowBlockCollections = allowBlockStyles;\n\n        if (state.lineIndent > parentIndent) {\n          indentStatus = 1;\n        } else if (state.lineIndent === parentIndent) {\n          indentStatus = 0;\n        } else if (state.lineIndent < parentIndent) {\n          indentStatus = -1;\n        }\n      } else {\n        allowBlockCollections = false;\n      }\n    }\n  }\n\n  if (allowBlockCollections) {\n    allowBlockCollections = atNewLine || allowCompact;\n  }\n\n  if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n    if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n      flowIndent = parentIndent;\n    } else {\n      flowIndent = parentIndent + 1;\n    }\n\n    blockIndent = state.position - state.lineStart;\n\n    if (indentStatus === 1) {\n      if (allowBlockCollections &&\n          (readBlockSequence(state, blockIndent) ||\n           readBlockMapping(state, blockIndent, flowIndent)) ||\n          readFlowCollection(state, flowIndent)) {\n        hasContent = true;\n      } else {\n        if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n            readSingleQuotedScalar(state, flowIndent) ||\n            readDoubleQuotedScalar(state, flowIndent)) {\n          hasContent = true;\n\n        } else if (readAlias(state)) {\n          hasContent = true;\n\n          if (state.tag !== null || state.anchor !== null) {\n            throwError(state, 'alias node should not have any properties');\n          }\n\n        } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n          hasContent = true;\n\n          if (state.tag === null) {\n            state.tag = '?';\n          }\n        }\n\n        if (state.anchor !== null) {\n          state.anchorMap[state.anchor] = state.result;\n        }\n      }\n    } else if (indentStatus === 0) {\n      // Special case: block sequences are allowed to have same indentation level as the parent.\n      // http://www.yaml.org/spec/1.2/spec.html#id2799784\n      hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n    }\n  }\n\n  if (state.tag === null) {\n    if (state.anchor !== null) {\n      state.anchorMap[state.anchor] = state.result;\n    }\n\n  } else if (state.tag === '?') {\n    // Implicit resolving is not allowed for non-scalar types, and '?'\n    // non-specific tag is only automatically assigned to plain scalars.\n    //\n    // We only need to check kind conformity in case user explicitly assigns '?'\n    // tag, for example like this: \"!<?> [0]\"\n    //\n    if (state.result !== null && state.kind !== 'scalar') {\n      throwError(state, 'unacceptable node kind for !<?> tag; it should be \"scalar\", not \"' + state.kind + '\"');\n    }\n\n    for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n      type = state.implicitTypes[typeIndex];\n\n      if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n        state.result = type.construct(state.result);\n        state.tag = type.tag;\n        if (state.anchor !== null) {\n          state.anchorMap[state.anchor] = state.result;\n        }\n        break;\n      }\n    }\n  } else if (state.tag !== '!') {\n    if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n      type = state.typeMap[state.kind || 'fallback'][state.tag];\n    } else {\n      // looking for multi type\n      type = null;\n      typeList = state.typeMap.multi[state.kind || 'fallback'];\n\n      for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) {\n        if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) {\n          type = typeList[typeIndex];\n          break;\n        }\n      }\n    }\n\n    if (!type) {\n      throwError(state, 'unknown tag !<' + state.tag + '>');\n    }\n\n    if (state.result !== null && type.kind !== state.kind) {\n      throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n    }\n\n    if (!type.resolve(state.result, state.tag)) { // `state.result` updated in resolver if matched\n      throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n    } else {\n      state.result = type.construct(state.result, state.tag);\n      if (state.anchor !== null) {\n        state.anchorMap[state.anchor] = state.result;\n      }\n    }\n  }\n\n  if (state.listener !== null) {\n    state.listener('close', state);\n  }\n  return state.tag !== null ||  state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n  var documentStart = state.position,\n      _position,\n      directiveName,\n      directiveArgs,\n      hasDirectives = false,\n      ch;\n\n  state.version = null;\n  state.checkLineBreaks = state.legacy;\n  state.tagMap = Object.create(null);\n  state.anchorMap = Object.create(null);\n\n  while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n    skipSeparationSpace(state, true, -1);\n\n    ch = state.input.charCodeAt(state.position);\n\n    if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n      break;\n    }\n\n    hasDirectives = true;\n    ch = state.input.charCodeAt(++state.position);\n    _position = state.position;\n\n    while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n      ch = state.input.charCodeAt(++state.position);\n    }\n\n    directiveName = state.input.slice(_position, state.position);\n    directiveArgs = [];\n\n    if (directiveName.length < 1) {\n      throwError(state, 'directive name must not be less than one character in length');\n    }\n\n    while (ch !== 0) {\n      while (is_WHITE_SPACE(ch)) {\n        ch = state.input.charCodeAt(++state.position);\n      }\n\n      if (ch === 0x23/* # */) {\n        do { ch = state.input.charCodeAt(++state.position); }\n        while (ch !== 0 && !is_EOL(ch));\n        break;\n      }\n\n      if (is_EOL(ch)) break;\n\n      _position = state.position;\n\n      while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n        ch = state.input.charCodeAt(++state.position);\n      }\n\n      directiveArgs.push(state.input.slice(_position, state.position));\n    }\n\n    if (ch !== 0) readLineBreak(state);\n\n    if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n      directiveHandlers[directiveName](state, directiveName, directiveArgs);\n    } else {\n      throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n    }\n  }\n\n  skipSeparationSpace(state, true, -1);\n\n  if (state.lineIndent === 0 &&\n      state.input.charCodeAt(state.position)     === 0x2D/* - */ &&\n      state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n      state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n    state.position += 3;\n    skipSeparationSpace(state, true, -1);\n\n  } else if (hasDirectives) {\n    throwError(state, 'directives end mark is expected');\n  }\n\n  composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n  skipSeparationSpace(state, true, -1);\n\n  if (state.checkLineBreaks &&\n      PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n    throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n  }\n\n  state.documents.push(state.result);\n\n  if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n    if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n      state.position += 3;\n      skipSeparationSpace(state, true, -1);\n    }\n    return;\n  }\n\n  if (state.position < (state.length - 1)) {\n    throwError(state, 'end of the stream or a document separator is expected');\n  } else {\n    return;\n  }\n}\n\n\nfunction loadDocuments(input, options) {\n  input = String(input);\n  options = options || {};\n\n  if (input.length !== 0) {\n\n    // Add tailing `\\n` if not exists\n    if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n        input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n      input += '\\n';\n    }\n\n    // Strip BOM\n    if (input.charCodeAt(0) === 0xFEFF) {\n      input = input.slice(1);\n    }\n  }\n\n  var state = new State(input, options);\n\n  var nullpos = input.indexOf('\\0');\n\n  if (nullpos !== -1) {\n    state.position = nullpos;\n    throwError(state, 'null byte is not allowed in input');\n  }\n\n  // Use 0 as string terminator. That significantly simplifies bounds check.\n  state.input += '\\0';\n\n  while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n    state.lineIndent += 1;\n    state.position += 1;\n  }\n\n  while (state.position < (state.length - 1)) {\n    readDocument(state);\n  }\n\n  return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n  if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') {\n    options = iterator;\n    iterator = null;\n  }\n\n  var documents = loadDocuments(input, options);\n\n  if (typeof iterator !== 'function') {\n    return documents;\n  }\n\n  for (var index = 0, length = documents.length; index < length; index += 1) {\n    iterator(documents[index]);\n  }\n}\n\n\nfunction load(input, options) {\n  var documents = loadDocuments(input, options);\n\n  if (documents.length === 0) {\n    /*eslint-disable no-undefined*/\n    return undefined;\n  } else if (documents.length === 1) {\n    return documents[0];\n  }\n  throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load    = load;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/js-yaml/lib/loader.js?")},"./node_modules/js-yaml/lib/schema.js":
/*!********************************************!*\
  !*** ./node_modules/js-yaml/lib/schema.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n/*eslint-disable max-len*/\n\nvar YAMLException = __webpack_require__(/*! ./exception */ \"./node_modules/js-yaml/lib/exception.js\");\nvar Type          = __webpack_require__(/*! ./type */ \"./node_modules/js-yaml/lib/type.js\");\n\n\nfunction compileList(schema, name) {\n  var result = [];\n\n  schema[name].forEach(function (currentType) {\n    var newIndex = result.length;\n\n    result.forEach(function (previousType, previousIndex) {\n      if (previousType.tag === currentType.tag &&\n          previousType.kind === currentType.kind &&\n          previousType.multi === currentType.multi) {\n\n        newIndex = previousIndex;\n      }\n    });\n\n    result[newIndex] = currentType;\n  });\n\n  return result;\n}\n\n\nfunction compileMap(/* lists... */) {\n  var result = {\n        scalar: {},\n        sequence: {},\n        mapping: {},\n        fallback: {},\n        multi: {\n          scalar: [],\n          sequence: [],\n          mapping: [],\n          fallback: []\n        }\n      }, index, length;\n\n  function collectType(type) {\n    if (type.multi) {\n      result.multi[type.kind].push(type);\n      result.multi['fallback'].push(type);\n    } else {\n      result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n    }\n  }\n\n  for (index = 0, length = arguments.length; index < length; index += 1) {\n    arguments[index].forEach(collectType);\n  }\n  return result;\n}\n\n\nfunction Schema(definition) {\n  return this.extend(definition);\n}\n\n\nSchema.prototype.extend = function extend(definition) {\n  var implicit = [];\n  var explicit = [];\n\n  if (definition instanceof Type) {\n    // Schema.extend(type)\n    explicit.push(definition);\n\n  } else if (Array.isArray(definition)) {\n    // Schema.extend([ type1, type2, ... ])\n    explicit = explicit.concat(definition);\n\n  } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) {\n    // Schema.extend({ explicit: [ type1, type2, ... ], implicit: [ type1, type2, ... ] })\n    if (definition.implicit) implicit = implicit.concat(definition.implicit);\n    if (definition.explicit) explicit = explicit.concat(definition.explicit);\n\n  } else {\n    throw new YAMLException('Schema.extend argument should be a Type, [ Type ], ' +\n      'or a schema definition ({ implicit: [...], explicit: [...] })');\n  }\n\n  implicit.forEach(function (type) {\n    if (!(type instanceof Type)) {\n      throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n    }\n\n    if (type.loadKind && type.loadKind !== 'scalar') {\n      throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n    }\n\n    if (type.multi) {\n      throw new YAMLException('There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.');\n    }\n  });\n\n  explicit.forEach(function (type) {\n    if (!(type instanceof Type)) {\n      throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n    }\n  });\n\n  var result = Object.create(Schema.prototype);\n\n  result.implicit = (this.implicit || []).concat(implicit);\n  result.explicit = (this.explicit || []).concat(explicit);\n\n  result.compiledImplicit = compileList(result, 'implicit');\n  result.compiledExplicit = compileList(result, 'explicit');\n  result.compiledTypeMap  = compileMap(result.compiledImplicit, result.compiledExplicit);\n\n  return result;\n};\n\n\nmodule.exports = Schema;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/js-yaml/lib/schema.js?")},"./node_modules/js-yaml/lib/schema/core.js":
/*!*************************************************!*\
  !*** ./node_modules/js-yaml/lib/schema/core.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('// Standard YAML\'s Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n\n\n\nmodule.exports = __webpack_require__(/*! ./json */ "./node_modules/js-yaml/lib/schema/json.js");\n\n\n//# sourceURL=webpack://txadmin/./node_modules/js-yaml/lib/schema/core.js?')},"./node_modules/js-yaml/lib/schema/default.js":
/*!****************************************************!*\
  !*** ./node_modules/js-yaml/lib/schema/default.js ***!
  \****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('// JS-YAML\'s default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML\'s Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n\n\n\nmodule.exports = (__webpack_require__(/*! ./core */ "./node_modules/js-yaml/lib/schema/core.js").extend)({\n  implicit: [\n    __webpack_require__(/*! ../type/timestamp */ "./node_modules/js-yaml/lib/type/timestamp.js"),\n    __webpack_require__(/*! ../type/merge */ "./node_modules/js-yaml/lib/type/merge.js")\n  ],\n  explicit: [\n    __webpack_require__(/*! ../type/binary */ "./node_modules/js-yaml/lib/type/binary.js"),\n    __webpack_require__(/*! ../type/omap */ "./node_modules/js-yaml/lib/type/omap.js"),\n    __webpack_require__(/*! ../type/pairs */ "./node_modules/js-yaml/lib/type/pairs.js"),\n    __webpack_require__(/*! ../type/set */ "./node_modules/js-yaml/lib/type/set.js")\n  ]\n});\n\n\n//# sourceURL=webpack://txadmin/./node_modules/js-yaml/lib/schema/default.js?')},"./node_modules/js-yaml/lib/schema/failsafe.js":
/*!*****************************************************!*\
  !*** ./node_modules/js-yaml/lib/schema/failsafe.js ***!
  \*****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('// Standard YAML\'s Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n\n\n\nvar Schema = __webpack_require__(/*! ../schema */ "./node_modules/js-yaml/lib/schema.js");\n\n\nmodule.exports = new Schema({\n  explicit: [\n    __webpack_require__(/*! ../type/str */ "./node_modules/js-yaml/lib/type/str.js"),\n    __webpack_require__(/*! ../type/seq */ "./node_modules/js-yaml/lib/type/seq.js"),\n    __webpack_require__(/*! ../type/map */ "./node_modules/js-yaml/lib/type/map.js")\n  ]\n});\n\n\n//# sourceURL=webpack://txadmin/./node_modules/js-yaml/lib/schema/failsafe.js?')},"./node_modules/js-yaml/lib/schema/json.js":
/*!*************************************************!*\
  !*** ./node_modules/js-yaml/lib/schema/json.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('// Standard YAML\'s JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n\n\n\nmodule.exports = (__webpack_require__(/*! ./failsafe */ "./node_modules/js-yaml/lib/schema/failsafe.js").extend)({\n  implicit: [\n    __webpack_require__(/*! ../type/null */ "./node_modules/js-yaml/lib/type/null.js"),\n    __webpack_require__(/*! ../type/bool */ "./node_modules/js-yaml/lib/type/bool.js"),\n    __webpack_require__(/*! ../type/int */ "./node_modules/js-yaml/lib/type/int.js"),\n    __webpack_require__(/*! ../type/float */ "./node_modules/js-yaml/lib/type/float.js")\n  ]\n});\n\n\n//# sourceURL=webpack://txadmin/./node_modules/js-yaml/lib/schema/json.js?')},"./node_modules/js-yaml/lib/snippet.js":
/*!*********************************************!*\
  !*** ./node_modules/js-yaml/lib/snippet.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n\nvar common = __webpack_require__(/*! ./common */ \"./node_modules/js-yaml/lib/common.js\");\n\n\n// get snippet for a single line, respecting maxLength\nfunction getLine(buffer, lineStart, lineEnd, position, maxLineLength) {\n  var head = '';\n  var tail = '';\n  var maxHalfLength = Math.floor(maxLineLength / 2) - 1;\n\n  if (position - lineStart > maxHalfLength) {\n    head = ' ... ';\n    lineStart = position - maxHalfLength + head.length;\n  }\n\n  if (lineEnd - position > maxHalfLength) {\n    tail = ' ...';\n    lineEnd = position + maxHalfLength - tail.length;\n  }\n\n  return {\n    str: head + buffer.slice(lineStart, lineEnd).replace(/\\t/g, '→') + tail,\n    pos: position - lineStart + head.length // relative position\n  };\n}\n\n\nfunction padStart(string, max) {\n  return common.repeat(' ', max - string.length) + string;\n}\n\n\nfunction makeSnippet(mark, options) {\n  options = Object.create(options || null);\n\n  if (!mark.buffer) return null;\n\n  if (!options.maxLength) options.maxLength = 79;\n  if (typeof options.indent      !== 'number') options.indent      = 1;\n  if (typeof options.linesBefore !== 'number') options.linesBefore = 3;\n  if (typeof options.linesAfter  !== 'number') options.linesAfter  = 2;\n\n  var re = /\\r?\\n|\\r|\\0/g;\n  var lineStarts = [ 0 ];\n  var lineEnds = [];\n  var match;\n  var foundLineNo = -1;\n\n  while ((match = re.exec(mark.buffer))) {\n    lineEnds.push(match.index);\n    lineStarts.push(match.index + match[0].length);\n\n    if (mark.position <= match.index && foundLineNo < 0) {\n      foundLineNo = lineStarts.length - 2;\n    }\n  }\n\n  if (foundLineNo < 0) foundLineNo = lineStarts.length - 1;\n\n  var result = '', i, line;\n  var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length;\n  var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3);\n\n  for (i = 1; i <= options.linesBefore; i++) {\n    if (foundLineNo - i < 0) break;\n    line = getLine(\n      mark.buffer,\n      lineStarts[foundLineNo - i],\n      lineEnds[foundLineNo - i],\n      mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]),\n      maxLineLength\n    );\n    result = common.repeat(' ', options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) +\n      ' | ' + line.str + '\\n' + result;\n  }\n\n  line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength);\n  result += common.repeat(' ', options.indent) + padStart((mark.line + 1).toString(), lineNoLength) +\n    ' | ' + line.str + '\\n';\n  result += common.repeat('-', options.indent + lineNoLength + 3 + line.pos) + '^' + '\\n';\n\n  for (i = 1; i <= options.linesAfter; i++) {\n    if (foundLineNo + i >= lineEnds.length) break;\n    line = getLine(\n      mark.buffer,\n      lineStarts[foundLineNo + i],\n      lineEnds[foundLineNo + i],\n      mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]),\n      maxLineLength\n    );\n    result += common.repeat(' ', options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) +\n      ' | ' + line.str + '\\n';\n  }\n\n  return result.replace(/\\n$/, '');\n}\n\n\nmodule.exports = makeSnippet;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/js-yaml/lib/snippet.js?")},"./node_modules/js-yaml/lib/type.js":
/*!******************************************!*\
  !*** ./node_modules/js-yaml/lib/type.js ***!
  \******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar YAMLException = __webpack_require__(/*! ./exception */ \"./node_modules/js-yaml/lib/exception.js\");\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n  'kind',\n  'multi',\n  'resolve',\n  'construct',\n  'instanceOf',\n  'predicate',\n  'represent',\n  'representName',\n  'defaultStyle',\n  'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n  'scalar',\n  'sequence',\n  'mapping'\n];\n\nfunction compileStyleAliases(map) {\n  var result = {};\n\n  if (map !== null) {\n    Object.keys(map).forEach(function (style) {\n      map[style].forEach(function (alias) {\n        result[String(alias)] = style;\n      });\n    });\n  }\n\n  return result;\n}\n\nfunction Type(tag, options) {\n  options = options || {};\n\n  Object.keys(options).forEach(function (name) {\n    if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n      throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n    }\n  });\n\n  // TODO: Add tag format check.\n  this.options       = options; // keep original options in case user wants to extend this type later\n  this.tag           = tag;\n  this.kind          = options['kind']          || null;\n  this.resolve       = options['resolve']       || function () { return true; };\n  this.construct     = options['construct']     || function (data) { return data; };\n  this.instanceOf    = options['instanceOf']    || null;\n  this.predicate     = options['predicate']     || null;\n  this.represent     = options['represent']     || null;\n  this.representName = options['representName'] || null;\n  this.defaultStyle  = options['defaultStyle']  || null;\n  this.multi         = options['multi']         || false;\n  this.styleAliases  = compileStyleAliases(options['styleAliases'] || null);\n\n  if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n    throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n  }\n}\n\nmodule.exports = Type;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/js-yaml/lib/type.js?")},"./node_modules/js-yaml/lib/type/binary.js":
/*!*************************************************!*\
  !*** ./node_modules/js-yaml/lib/type/binary.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n/*eslint-disable no-bitwise*/\n\n\nvar Type = __webpack_require__(/*! ../type */ \"./node_modules/js-yaml/lib/type.js\");\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n  if (data === null) return false;\n\n  var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n  // Convert one by one.\n  for (idx = 0; idx < max; idx++) {\n    code = map.indexOf(data.charAt(idx));\n\n    // Skip CR/LF\n    if (code > 64) continue;\n\n    // Fail on illegal characters\n    if (code < 0) return false;\n\n    bitlen += 6;\n  }\n\n  // If there are any bits left, source was corrupted\n  return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n  var idx, tailbits,\n      input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n      max = input.length,\n      map = BASE64_MAP,\n      bits = 0,\n      result = [];\n\n  // Collect by 6*4 bits (3 bytes)\n\n  for (idx = 0; idx < max; idx++) {\n    if ((idx % 4 === 0) && idx) {\n      result.push((bits >> 16) & 0xFF);\n      result.push((bits >> 8) & 0xFF);\n      result.push(bits & 0xFF);\n    }\n\n    bits = (bits << 6) | map.indexOf(input.charAt(idx));\n  }\n\n  // Dump tail\n\n  tailbits = (max % 4) * 6;\n\n  if (tailbits === 0) {\n    result.push((bits >> 16) & 0xFF);\n    result.push((bits >> 8) & 0xFF);\n    result.push(bits & 0xFF);\n  } else if (tailbits === 18) {\n    result.push((bits >> 10) & 0xFF);\n    result.push((bits >> 2) & 0xFF);\n  } else if (tailbits === 12) {\n    result.push((bits >> 4) & 0xFF);\n  }\n\n  return new Uint8Array(result);\n}\n\nfunction representYamlBinary(object /*, style*/) {\n  var result = '', bits = 0, idx, tail,\n      max = object.length,\n      map = BASE64_MAP;\n\n  // Convert every three bytes to 4 ASCII characters.\n\n  for (idx = 0; idx < max; idx++) {\n    if ((idx % 3 === 0) && idx) {\n      result += map[(bits >> 18) & 0x3F];\n      result += map[(bits >> 12) & 0x3F];\n      result += map[(bits >> 6) & 0x3F];\n      result += map[bits & 0x3F];\n    }\n\n    bits = (bits << 8) + object[idx];\n  }\n\n  // Dump tail\n\n  tail = max % 3;\n\n  if (tail === 0) {\n    result += map[(bits >> 18) & 0x3F];\n    result += map[(bits >> 12) & 0x3F];\n    result += map[(bits >> 6) & 0x3F];\n    result += map[bits & 0x3F];\n  } else if (tail === 2) {\n    result += map[(bits >> 10) & 0x3F];\n    result += map[(bits >> 4) & 0x3F];\n    result += map[(bits << 2) & 0x3F];\n    result += map[64];\n  } else if (tail === 1) {\n    result += map[(bits >> 2) & 0x3F];\n    result += map[(bits << 4) & 0x3F];\n    result += map[64];\n    result += map[64];\n  }\n\n  return result;\n}\n\nfunction isBinary(obj) {\n  return Object.prototype.toString.call(obj) ===  '[object Uint8Array]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n  kind: 'scalar',\n  resolve: resolveYamlBinary,\n  construct: constructYamlBinary,\n  predicate: isBinary,\n  represent: representYamlBinary\n});\n\n\n//# sourceURL=webpack://txadmin/./node_modules/js-yaml/lib/type/binary.js?")},"./node_modules/js-yaml/lib/type/bool.js":
/*!***********************************************!*\
  !*** ./node_modules/js-yaml/lib/type/bool.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar Type = __webpack_require__(/*! ../type */ \"./node_modules/js-yaml/lib/type.js\");\n\nfunction resolveYamlBoolean(data) {\n  if (data === null) return false;\n\n  var max = data.length;\n\n  return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n         (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n  return data === 'true' ||\n         data === 'True' ||\n         data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n  return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n  kind: 'scalar',\n  resolve: resolveYamlBoolean,\n  construct: constructYamlBoolean,\n  predicate: isBoolean,\n  represent: {\n    lowercase: function (object) { return object ? 'true' : 'false'; },\n    uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n    camelcase: function (object) { return object ? 'True' : 'False'; }\n  },\n  defaultStyle: 'lowercase'\n});\n\n\n//# sourceURL=webpack://txadmin/./node_modules/js-yaml/lib/type/bool.js?")},"./node_modules/js-yaml/lib/type/float.js":
/*!************************************************!*\
  !*** ./node_modules/js-yaml/lib/type/float.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar common = __webpack_require__(/*! ../common */ \"./node_modules/js-yaml/lib/common.js\");\nvar Type   = __webpack_require__(/*! ../type */ \"./node_modules/js-yaml/lib/type.js\");\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n  // 2.5e4, 2.5 and integers\n  '^(?:[-+]?(?:[0-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' +\n  // .2e4, .2\n  // special case, seems not from spec\n  '|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' +\n  // .inf\n  '|[-+]?\\\\.(?:inf|Inf|INF)' +\n  // .nan\n  '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n  if (data === null) return false;\n\n  if (!YAML_FLOAT_PATTERN.test(data) ||\n      // Quick hack to not allow integers end with `_`\n      // Probably should update regexp & check speed\n      data[data.length - 1] === '_') {\n    return false;\n  }\n\n  return true;\n}\n\nfunction constructYamlFloat(data) {\n  var value, sign;\n\n  value  = data.replace(/_/g, '').toLowerCase();\n  sign   = value[0] === '-' ? -1 : 1;\n\n  if ('+-'.indexOf(value[0]) >= 0) {\n    value = value.slice(1);\n  }\n\n  if (value === '.inf') {\n    return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n  } else if (value === '.nan') {\n    return NaN;\n  }\n  return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n  var res;\n\n  if (isNaN(object)) {\n    switch (style) {\n      case 'lowercase': return '.nan';\n      case 'uppercase': return '.NAN';\n      case 'camelcase': return '.NaN';\n    }\n  } else if (Number.POSITIVE_INFINITY === object) {\n    switch (style) {\n      case 'lowercase': return '.inf';\n      case 'uppercase': return '.INF';\n      case 'camelcase': return '.Inf';\n    }\n  } else if (Number.NEGATIVE_INFINITY === object) {\n    switch (style) {\n      case 'lowercase': return '-.inf';\n      case 'uppercase': return '-.INF';\n      case 'camelcase': return '-.Inf';\n    }\n  } else if (common.isNegativeZero(object)) {\n    return '-0.0';\n  }\n\n  res = object.toString(10);\n\n  // JS stringifier can build scientific format without dots: 5e-100,\n  // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n  return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n  return (Object.prototype.toString.call(object) === '[object Number]') &&\n         (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n  kind: 'scalar',\n  resolve: resolveYamlFloat,\n  construct: constructYamlFloat,\n  predicate: isFloat,\n  represent: representYamlFloat,\n  defaultStyle: 'lowercase'\n});\n\n\n//# sourceURL=webpack://txadmin/./node_modules/js-yaml/lib/type/float.js?")},"./node_modules/js-yaml/lib/type/int.js":
/*!**********************************************!*\
  !*** ./node_modules/js-yaml/lib/type/int.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar common = __webpack_require__(/*! ../common */ \"./node_modules/js-yaml/lib/common.js\");\nvar Type   = __webpack_require__(/*! ../type */ \"./node_modules/js-yaml/lib/type.js\");\n\nfunction isHexCode(c) {\n  return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n         ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n         ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n  return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n  return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n  if (data === null) return false;\n\n  var max = data.length,\n      index = 0,\n      hasDigits = false,\n      ch;\n\n  if (!max) return false;\n\n  ch = data[index];\n\n  // sign\n  if (ch === '-' || ch === '+') {\n    ch = data[++index];\n  }\n\n  if (ch === '0') {\n    // 0\n    if (index + 1 === max) return true;\n    ch = data[++index];\n\n    // base 2, base 8, base 16\n\n    if (ch === 'b') {\n      // base 2\n      index++;\n\n      for (; index < max; index++) {\n        ch = data[index];\n        if (ch === '_') continue;\n        if (ch !== '0' && ch !== '1') return false;\n        hasDigits = true;\n      }\n      return hasDigits && ch !== '_';\n    }\n\n\n    if (ch === 'x') {\n      // base 16\n      index++;\n\n      for (; index < max; index++) {\n        ch = data[index];\n        if (ch === '_') continue;\n        if (!isHexCode(data.charCodeAt(index))) return false;\n        hasDigits = true;\n      }\n      return hasDigits && ch !== '_';\n    }\n\n\n    if (ch === 'o') {\n      // base 8\n      index++;\n\n      for (; index < max; index++) {\n        ch = data[index];\n        if (ch === '_') continue;\n        if (!isOctCode(data.charCodeAt(index))) return false;\n        hasDigits = true;\n      }\n      return hasDigits && ch !== '_';\n    }\n  }\n\n  // base 10 (except 0)\n\n  // value should not start with `_`;\n  if (ch === '_') return false;\n\n  for (; index < max; index++) {\n    ch = data[index];\n    if (ch === '_') continue;\n    if (!isDecCode(data.charCodeAt(index))) {\n      return false;\n    }\n    hasDigits = true;\n  }\n\n  // Should have digits and should not end with `_`\n  if (!hasDigits || ch === '_') return false;\n\n  return true;\n}\n\nfunction constructYamlInteger(data) {\n  var value = data, sign = 1, ch;\n\n  if (value.indexOf('_') !== -1) {\n    value = value.replace(/_/g, '');\n  }\n\n  ch = value[0];\n\n  if (ch === '-' || ch === '+') {\n    if (ch === '-') sign = -1;\n    value = value.slice(1);\n    ch = value[0];\n  }\n\n  if (value === '0') return 0;\n\n  if (ch === '0') {\n    if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n    if (value[1] === 'x') return sign * parseInt(value.slice(2), 16);\n    if (value[1] === 'o') return sign * parseInt(value.slice(2), 8);\n  }\n\n  return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n  return (Object.prototype.toString.call(object)) === '[object Number]' &&\n         (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n  kind: 'scalar',\n  resolve: resolveYamlInteger,\n  construct: constructYamlInteger,\n  predicate: isInteger,\n  represent: {\n    binary:      function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); },\n    octal:       function (obj) { return obj >= 0 ? '0o'  + obj.toString(8) : '-0o'  + obj.toString(8).slice(1); },\n    decimal:     function (obj) { return obj.toString(10); },\n    /* eslint-disable max-len */\n    hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() :  '-0x' + obj.toString(16).toUpperCase().slice(1); }\n  },\n  defaultStyle: 'decimal',\n  styleAliases: {\n    binary:      [ 2,  'bin' ],\n    octal:       [ 8,  'oct' ],\n    decimal:     [ 10, 'dec' ],\n    hexadecimal: [ 16, 'hex' ]\n  }\n});\n\n\n//# sourceURL=webpack://txadmin/./node_modules/js-yaml/lib/type/int.js?")},"./node_modules/js-yaml/lib/type/map.js":
/*!**********************************************!*\
  !*** ./node_modules/js-yaml/lib/type/map.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar Type = __webpack_require__(/*! ../type */ \"./node_modules/js-yaml/lib/type.js\");\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n  kind: 'mapping',\n  construct: function (data) { return data !== null ? data : {}; }\n});\n\n\n//# sourceURL=webpack://txadmin/./node_modules/js-yaml/lib/type/map.js?")},"./node_modules/js-yaml/lib/type/merge.js":
/*!************************************************!*\
  !*** ./node_modules/js-yaml/lib/type/merge.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar Type = __webpack_require__(/*! ../type */ \"./node_modules/js-yaml/lib/type.js\");\n\nfunction resolveYamlMerge(data) {\n  return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n  kind: 'scalar',\n  resolve: resolveYamlMerge\n});\n\n\n//# sourceURL=webpack://txadmin/./node_modules/js-yaml/lib/type/merge.js?")},"./node_modules/js-yaml/lib/type/null.js":
/*!***********************************************!*\
  !*** ./node_modules/js-yaml/lib/type/null.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar Type = __webpack_require__(/*! ../type */ \"./node_modules/js-yaml/lib/type.js\");\n\nfunction resolveYamlNull(data) {\n  if (data === null) return true;\n\n  var max = data.length;\n\n  return (max === 1 && data === '~') ||\n         (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n  return null;\n}\n\nfunction isNull(object) {\n  return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n  kind: 'scalar',\n  resolve: resolveYamlNull,\n  construct: constructYamlNull,\n  predicate: isNull,\n  represent: {\n    canonical: function () { return '~';    },\n    lowercase: function () { return 'null'; },\n    uppercase: function () { return 'NULL'; },\n    camelcase: function () { return 'Null'; },\n    empty:     function () { return '';     }\n  },\n  defaultStyle: 'lowercase'\n});\n\n\n//# sourceURL=webpack://txadmin/./node_modules/js-yaml/lib/type/null.js?")},"./node_modules/js-yaml/lib/type/omap.js":
/*!***********************************************!*\
  !*** ./node_modules/js-yaml/lib/type/omap.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar Type = __webpack_require__(/*! ../type */ \"./node_modules/js-yaml/lib/type.js\");\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString       = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n  if (data === null) return true;\n\n  var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n      object = data;\n\n  for (index = 0, length = object.length; index < length; index += 1) {\n    pair = object[index];\n    pairHasKey = false;\n\n    if (_toString.call(pair) !== '[object Object]') return false;\n\n    for (pairKey in pair) {\n      if (_hasOwnProperty.call(pair, pairKey)) {\n        if (!pairHasKey) pairHasKey = true;\n        else return false;\n      }\n    }\n\n    if (!pairHasKey) return false;\n\n    if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n    else return false;\n  }\n\n  return true;\n}\n\nfunction constructYamlOmap(data) {\n  return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n  kind: 'sequence',\n  resolve: resolveYamlOmap,\n  construct: constructYamlOmap\n});\n\n\n//# sourceURL=webpack://txadmin/./node_modules/js-yaml/lib/type/omap.js?")},"./node_modules/js-yaml/lib/type/pairs.js":
/*!************************************************!*\
  !*** ./node_modules/js-yaml/lib/type/pairs.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar Type = __webpack_require__(/*! ../type */ \"./node_modules/js-yaml/lib/type.js\");\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n  if (data === null) return true;\n\n  var index, length, pair, keys, result,\n      object = data;\n\n  result = new Array(object.length);\n\n  for (index = 0, length = object.length; index < length; index += 1) {\n    pair = object[index];\n\n    if (_toString.call(pair) !== '[object Object]') return false;\n\n    keys = Object.keys(pair);\n\n    if (keys.length !== 1) return false;\n\n    result[index] = [ keys[0], pair[keys[0]] ];\n  }\n\n  return true;\n}\n\nfunction constructYamlPairs(data) {\n  if (data === null) return [];\n\n  var index, length, pair, keys, result,\n      object = data;\n\n  result = new Array(object.length);\n\n  for (index = 0, length = object.length; index < length; index += 1) {\n    pair = object[index];\n\n    keys = Object.keys(pair);\n\n    result[index] = [ keys[0], pair[keys[0]] ];\n  }\n\n  return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n  kind: 'sequence',\n  resolve: resolveYamlPairs,\n  construct: constructYamlPairs\n});\n\n\n//# sourceURL=webpack://txadmin/./node_modules/js-yaml/lib/type/pairs.js?")},"./node_modules/js-yaml/lib/type/seq.js":
/*!**********************************************!*\
  !*** ./node_modules/js-yaml/lib/type/seq.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar Type = __webpack_require__(/*! ../type */ \"./node_modules/js-yaml/lib/type.js\");\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n  kind: 'sequence',\n  construct: function (data) { return data !== null ? data : []; }\n});\n\n\n//# sourceURL=webpack://txadmin/./node_modules/js-yaml/lib/type/seq.js?")},"./node_modules/js-yaml/lib/type/set.js":
/*!**********************************************!*\
  !*** ./node_modules/js-yaml/lib/type/set.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar Type = __webpack_require__(/*! ../type */ \"./node_modules/js-yaml/lib/type.js\");\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n  if (data === null) return true;\n\n  var key, object = data;\n\n  for (key in object) {\n    if (_hasOwnProperty.call(object, key)) {\n      if (object[key] !== null) return false;\n    }\n  }\n\n  return true;\n}\n\nfunction constructYamlSet(data) {\n  return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n  kind: 'mapping',\n  resolve: resolveYamlSet,\n  construct: constructYamlSet\n});\n\n\n//# sourceURL=webpack://txadmin/./node_modules/js-yaml/lib/type/set.js?")},"./node_modules/js-yaml/lib/type/str.js":
/*!**********************************************!*\
  !*** ./node_modules/js-yaml/lib/type/str.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar Type = __webpack_require__(/*! ../type */ \"./node_modules/js-yaml/lib/type.js\");\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n  kind: 'scalar',\n  construct: function (data) { return data !== null ? data : ''; }\n});\n\n\n//# sourceURL=webpack://txadmin/./node_modules/js-yaml/lib/type/str.js?")},"./node_modules/js-yaml/lib/type/timestamp.js":
/*!****************************************************!*\
  !*** ./node_modules/js-yaml/lib/type/timestamp.js ***!
  \****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar Type = __webpack_require__(/*! ../type */ \"./node_modules/js-yaml/lib/type.js\");\n\nvar YAML_DATE_REGEXP = new RegExp(\n  '^([0-9][0-9][0-9][0-9])'          + // [1] year\n  '-([0-9][0-9])'                    + // [2] month\n  '-([0-9][0-9])$');                   // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n  '^([0-9][0-9][0-9][0-9])'          + // [1] year\n  '-([0-9][0-9]?)'                   + // [2] month\n  '-([0-9][0-9]?)'                   + // [3] day\n  '(?:[Tt]|[ \\\\t]+)'                 + // ...\n  '([0-9][0-9]?)'                    + // [4] hour\n  ':([0-9][0-9])'                    + // [5] minute\n  ':([0-9][0-9])'                    + // [6] second\n  '(?:\\\\.([0-9]*))?'                 + // [7] fraction\n  '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n  '(?::([0-9][0-9]))?))?$');           // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n  if (data === null) return false;\n  if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n  if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n  return false;\n}\n\nfunction constructYamlTimestamp(data) {\n  var match, year, month, day, hour, minute, second, fraction = 0,\n      delta = null, tz_hour, tz_minute, date;\n\n  match = YAML_DATE_REGEXP.exec(data);\n  if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n  if (match === null) throw new Error('Date resolve error');\n\n  // match: [1] year [2] month [3] day\n\n  year = +(match[1]);\n  month = +(match[2]) - 1; // JS month starts with 0\n  day = +(match[3]);\n\n  if (!match[4]) { // no hour\n    return new Date(Date.UTC(year, month, day));\n  }\n\n  // match: [4] hour [5] minute [6] second [7] fraction\n\n  hour = +(match[4]);\n  minute = +(match[5]);\n  second = +(match[6]);\n\n  if (match[7]) {\n    fraction = match[7].slice(0, 3);\n    while (fraction.length < 3) { // milli-seconds\n      fraction += '0';\n    }\n    fraction = +fraction;\n  }\n\n  // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n  if (match[9]) {\n    tz_hour = +(match[10]);\n    tz_minute = +(match[11] || 0);\n    delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n    if (match[9] === '-') delta = -delta;\n  }\n\n  date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n  if (delta) date.setTime(date.getTime() - delta);\n\n  return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n  return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n  kind: 'scalar',\n  resolve: resolveYamlTimestamp,\n  construct: constructYamlTimestamp,\n  instanceOf: Date,\n  represent: representYamlTimestamp\n});\n\n\n//# sourceURL=webpack://txadmin/./node_modules/js-yaml/lib/type/timestamp.js?")},"./node_modules/json-buffer/index.js":
/*!*******************************************!*\
  !*** ./node_modules/json-buffer/index.js ***!
  \*******************************************/(__unused_webpack_module,exports)=>{eval("//TODO: handle reviver/dehydrate function like normal\n//and handle indentation, like normal.\n//if anyone needs this... please send pull request.\n\nexports.stringify = function stringify (o) {\n  if('undefined' == typeof o) return o\n\n  if(o && Buffer.isBuffer(o))\n    return JSON.stringify(':base64:' + o.toString('base64'))\n\n  if(o && o.toJSON)\n    o =  o.toJSON()\n\n  if(o && 'object' === typeof o) {\n    var s = ''\n    var array = Array.isArray(o)\n    s = array ? '[' : '{'\n    var first = true\n\n    for(var k in o) {\n      var ignore = 'function' == typeof o[k] || (!array && 'undefined' === typeof o[k])\n      if(Object.hasOwnProperty.call(o, k) && !ignore) {\n        if(!first)\n          s += ','\n        first = false\n        if (array) {\n          if(o[k] == undefined)\n            s += 'null'\n          else\n            s += stringify(o[k])\n        } else if (o[k] !== void(0)) {\n          s += stringify(k) + ':' + stringify(o[k])\n        }\n      }\n    }\n\n    s += array ? ']' : '}'\n\n    return s\n  } else if ('string' === typeof o) {\n    return JSON.stringify(/^:/.test(o) ? ':' + o : o)\n  } else if ('undefined' === typeof o) {\n    return 'null';\n  } else\n    return JSON.stringify(o)\n}\n\nexports.parse = function (s) {\n  return JSON.parse(s, function (key, value) {\n    if('string' === typeof value) {\n      if(/^:base64:/.test(value))\n        return Buffer.from(value.substring(8), 'base64')\n      else\n        return /^:/.test(value) ? value.substring(1) : value \n    }\n    return value\n  })\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/json-buffer/index.js?")},"./node_modules/json-colorizer/node_modules/ansi-styles/index.js":
/*!***********************************************************************!*\
  !*** ./node_modules/json-colorizer/node_modules/ansi-styles/index.js ***!
  \***********************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("/* module decorator */ module = __webpack_require__.nmd(module);\n\nconst colorConvert = __webpack_require__(/*! color-convert */ \"./node_modules/json-colorizer/node_modules/color-convert/index.js\");\n\nconst wrapAnsi16 = (fn, offset) => function () {\n\tconst code = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => function () {\n\tconst code = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => function () {\n\tconst rgb = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\t\t\tgray: [90, 39],\n\n\t\t\t// Bright color\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Fix humans\n\tstyles.color.grey = styles.color.gray;\n\n\tfor (const groupName of Object.keys(styles)) {\n\t\tconst group = styles[groupName];\n\n\t\tfor (const styleName of Object.keys(group)) {\n\t\t\tconst style = group[styleName];\n\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\n\t\tObject.defineProperty(styles, 'codes', {\n\t\t\tvalue: codes,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tconst ansi2ansi = n => n;\n\tconst rgb2rgb = (r, g, b) => [r, g, b];\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = {\n\t\tansi: wrapAnsi16(ansi2ansi, 0)\n\t};\n\tstyles.color.ansi256 = {\n\t\tansi256: wrapAnsi256(ansi2ansi, 0)\n\t};\n\tstyles.color.ansi16m = {\n\t\trgb: wrapAnsi16m(rgb2rgb, 0)\n\t};\n\n\tstyles.bgColor.ansi = {\n\t\tansi: wrapAnsi16(ansi2ansi, 10)\n\t};\n\tstyles.bgColor.ansi256 = {\n\t\tansi256: wrapAnsi256(ansi2ansi, 10)\n\t};\n\tstyles.bgColor.ansi16m = {\n\t\trgb: wrapAnsi16m(rgb2rgb, 10)\n\t};\n\n\tfor (let key of Object.keys(colorConvert)) {\n\t\tif (typeof colorConvert[key] !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst suite = colorConvert[key];\n\n\t\tif (key === 'ansi16') {\n\t\t\tkey = 'ansi';\n\t\t}\n\n\t\tif ('ansi16' in suite) {\n\t\t\tstyles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0);\n\t\t\tstyles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10);\n\t\t}\n\n\t\tif ('ansi256' in suite) {\n\t\t\tstyles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0);\n\t\t\tstyles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10);\n\t\t}\n\n\t\tif ('rgb' in suite) {\n\t\t\tstyles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0);\n\t\t\tstyles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10);\n\t\t}\n\t}\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n\n\n//# sourceURL=webpack://txadmin/./node_modules/json-colorizer/node_modules/ansi-styles/index.js?")},"./node_modules/json-colorizer/node_modules/chalk/index.js":
/*!*****************************************************************!*\
  !*** ./node_modules/json-colorizer/node_modules/chalk/index.js ***!
  \*****************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nconst escapeStringRegexp = __webpack_require__(/*! escape-string-regexp */ \"./node_modules/json-colorizer/node_modules/escape-string-regexp/index.js\");\nconst ansiStyles = __webpack_require__(/*! ansi-styles */ \"./node_modules/json-colorizer/node_modules/ansi-styles/index.js\");\nconst stdoutColor = (__webpack_require__(/*! supports-color */ \"./node_modules/json-colorizer/node_modules/supports-color/index.js\").stdout);\n\nconst template = __webpack_require__(/*! ./templates.js */ \"./node_modules/json-colorizer/node_modules/chalk/templates.js\");\n\nconst isSimpleWindowsTerm = process.platform === 'win32' && !(({\"APP_ENV\":\"webpack\"}).TERM || '').toLowerCase().startsWith('xterm');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m'];\n\n// `color-convert` models to exclude from the Chalk API due to conflicts and such\nconst skipModels = new Set(['gray']);\n\nconst styles = Object.create(null);\n\nfunction applyOptions(obj, options) {\n\toptions = options || {};\n\n\t// Detect level if not set manually\n\tconst scLevel = stdoutColor ? stdoutColor.level : 0;\n\tobj.level = options.level === undefined ? scLevel : options.level;\n\tobj.enabled = 'enabled' in options ? options.enabled : obj.level > 0;\n}\n\nfunction Chalk(options) {\n\t// We check for this.template here since calling `chalk.constructor()`\n\t// by itself will have a `this` of a previously constructed chalk object\n\tif (!this || !(this instanceof Chalk) || this.template) {\n\t\tconst chalk = {};\n\t\tapplyOptions(chalk, options);\n\n\t\tchalk.template = function () {\n\t\t\tconst args = [].slice.call(arguments);\n\t\t\treturn chalkTag.apply(null, [chalk.template].concat(args));\n\t\t};\n\n\t\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\t\tObject.setPrototypeOf(chalk.template, chalk);\n\n\t\tchalk.template.constructor = Chalk;\n\n\t\treturn chalk.template;\n\t}\n\n\tapplyOptions(this, options);\n}\n\n// Use bright blue on Windows as the normal blue color is illegible\nif (isSimpleWindowsTerm) {\n\tansiStyles.blue.open = '\\u001B[94m';\n}\n\nfor (const key of Object.keys(ansiStyles)) {\n\tansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');\n\n\tstyles[key] = {\n\t\tget() {\n\t\t\tconst codes = ansiStyles[key];\n\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key);\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\treturn build.call(this, this._styles || [], true, 'visible');\n\t}\n};\n\nansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g');\nfor (const model of Object.keys(ansiStyles.color.ansi)) {\n\tif (skipModels.has(model)) {\n\t\tcontinue;\n\t}\n\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst level = this.level;\n\t\t\treturn function () {\n\t\t\t\tconst open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments);\n\t\t\t\tconst codes = {\n\t\t\t\t\topen,\n\t\t\t\t\tclose: ansiStyles.color.close,\n\t\t\t\t\tcloseRe: ansiStyles.color.closeRe\n\t\t\t\t};\n\t\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);\n\t\t\t};\n\t\t}\n\t};\n}\n\nansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g');\nfor (const model of Object.keys(ansiStyles.bgColor.ansi)) {\n\tif (skipModels.has(model)) {\n\t\tcontinue;\n\t}\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst level = this.level;\n\t\t\treturn function () {\n\t\t\t\tconst open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments);\n\t\t\t\tconst codes = {\n\t\t\t\t\topen,\n\t\t\t\t\tclose: ansiStyles.bgColor.close,\n\t\t\t\t\tcloseRe: ansiStyles.bgColor.closeRe\n\t\t\t\t};\n\t\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, styles);\n\nfunction build(_styles, _empty, key) {\n\tconst builder = function () {\n\t\treturn applyStyle.apply(builder, arguments);\n\t};\n\n\tbuilder._styles = _styles;\n\tbuilder._empty = _empty;\n\n\tconst self = this;\n\n\tObject.defineProperty(builder, 'level', {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn self.level;\n\t\t},\n\t\tset(level) {\n\t\t\tself.level = level;\n\t\t}\n\t});\n\n\tObject.defineProperty(builder, 'enabled', {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn self.enabled;\n\t\t},\n\t\tset(enabled) {\n\t\t\tself.enabled = enabled;\n\t\t}\n\t});\n\n\t// See below for fix regarding invisible grey/dim combination on Windows\n\tbuilder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey';\n\n\t// `__proto__` is used because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tbuilder.__proto__ = proto; // eslint-disable-line no-proto\n\n\treturn builder;\n}\n\nfunction applyStyle() {\n\t// Support varags, but simply cast to string in case there's only one arg\n\tconst args = arguments;\n\tconst argsLen = args.length;\n\tlet str = String(arguments[0]);\n\n\tif (argsLen === 0) {\n\t\treturn '';\n\t}\n\n\tif (argsLen > 1) {\n\t\t// Don't slice `arguments`, it prevents V8 optimizations\n\t\tfor (let a = 1; a < argsLen; a++) {\n\t\t\tstr += ' ' + args[a];\n\t\t}\n\t}\n\n\tif (!this.enabled || this.level <= 0 || !str) {\n\t\treturn this._empty ? '' : str;\n\t}\n\n\t// Turns out that on Windows dimmed gray text becomes invisible in cmd.exe,\n\t// see https://github.com/chalk/chalk/issues/58\n\t// If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop.\n\tconst originalDim = ansiStyles.dim.open;\n\tif (isSimpleWindowsTerm && this.hasGrey) {\n\t\tansiStyles.dim.open = '';\n\t}\n\n\tfor (const code of this._styles.slice().reverse()) {\n\t\t// Replace any instances already present with a re-opening code\n\t\t// otherwise only the part of the string until said closing code\n\t\t// will be colored, and the rest will simply be 'plain'.\n\t\tstr = code.open + str.replace(code.closeRe, code.open) + code.close;\n\n\t\t// Close the styling before a linebreak and reopen\n\t\t// after next line to fix a bleed issue on macOS\n\t\t// https://github.com/chalk/chalk/pull/92\n\t\tstr = str.replace(/\\r?\\n/g, `${code.close}$&${code.open}`);\n\t}\n\n\t// Reset the original `dim` if we changed it to work around the Windows dimmed gray issue\n\tansiStyles.dim.open = originalDim;\n\n\treturn str;\n}\n\nfunction chalkTag(chalk, strings) {\n\tif (!Array.isArray(strings)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn [].slice.call(arguments, 1).join(' ');\n\t}\n\n\tconst args = [].slice.call(arguments, 2);\n\tconst parts = [strings.raw[0]];\n\n\tfor (let i = 1; i < strings.length; i++) {\n\t\tparts.push(String(args[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'));\n\t\tparts.push(String(strings.raw[i]));\n\t}\n\n\treturn template(chalk, parts.join(''));\n}\n\nObject.defineProperties(Chalk.prototype, styles);\n\nmodule.exports = Chalk(); // eslint-disable-line new-cap\nmodule.exports.supportsColor = stdoutColor;\nmodule.exports[\"default\"] = module.exports; // For TypeScript\n\n\n//# sourceURL=webpack://txadmin/./node_modules/json-colorizer/node_modules/chalk/index.js?")},"./node_modules/json-colorizer/node_modules/chalk/templates.js":
/*!*********************************************************************!*\
  !*** ./node_modules/json-colorizer/node_modules/chalk/templates.js ***!
  \*********************************************************************/module=>{"use strict";eval("\nconst TEMPLATE_REGEX = /(?:\\\\(u[a-f\\d]{4}|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u[a-f\\d]{4}|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tif ((c[0] === 'u' && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, args) {\n\tconst results = [];\n\tconst chunks = args.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tif (!isNaN(chunk)) {\n\t\t\tresults.push(Number(chunk));\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, chr) => escape ? unescape(escape) : chr));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const styleName of Object.keys(enabled)) {\n\t\tif (Array.isArray(enabled[styleName])) {\n\t\t\tif (!(styleName in current)) {\n\t\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t\t}\n\n\t\t\tif (enabled[styleName].length > 0) {\n\t\t\t\tcurrent = current[styleName].apply(current, enabled[styleName]);\n\t\t\t} else {\n\t\t\t\tcurrent = current[styleName];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, tmp) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttmp.replace(TEMPLATE_REGEX, (m, escapeChar, inverse, style, close, chr) => {\n\t\tif (escapeChar) {\n\t\t\tchunk.push(unescape(escapeChar));\n\t\t} else if (style) {\n\t\t\tconst str = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? str : buildStyle(chalk, styles)(str));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(chr);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMsg);\n\t}\n\n\treturn chunks.join('');\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/json-colorizer/node_modules/chalk/templates.js?")},"./node_modules/json-colorizer/node_modules/color-convert/conversions.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/json-colorizer/node_modules/color-convert/conversions.js ***!
  \*******************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("/* MIT license */\nvar cssKeywords = __webpack_require__(/*! color-name */ \"./node_modules/json-colorizer/node_modules/color-name/index.js\");\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n//       values that give correct `typeof` results).\n//       do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/json-colorizer/node_modules/color-convert/conversions.js?")},"./node_modules/json-colorizer/node_modules/color-convert/index.js":
/*!*************************************************************************!*\
  !*** ./node_modules/json-colorizer/node_modules/color-convert/index.js ***!
  \*************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var conversions = __webpack_require__(/*! ./conversions */ \"./node_modules/json-colorizer/node_modules/color-convert/conversions.js\");\nvar route = __webpack_require__(/*! ./route */ \"./node_modules/json-colorizer/node_modules/color-convert/route.js\");\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/json-colorizer/node_modules/color-convert/index.js?")},"./node_modules/json-colorizer/node_modules/color-convert/route.js":
/*!*************************************************************************!*\
  !*** ./node_modules/json-colorizer/node_modules/color-convert/route.js ***!
  \*************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var conversions = __webpack_require__(/*! ./conversions */ \"./node_modules/json-colorizer/node_modules/color-convert/conversions.js\");\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/json-colorizer/node_modules/color-convert/route.js?")},"./node_modules/json-colorizer/node_modules/color-name/index.js":
/*!**********************************************************************!*\
  !*** ./node_modules/json-colorizer/node_modules/color-name/index.js ***!
  \**********************************************************************/module=>{"use strict";eval('\r\n\r\nmodule.exports = {\r\n\t"aliceblue": [240, 248, 255],\r\n\t"antiquewhite": [250, 235, 215],\r\n\t"aqua": [0, 255, 255],\r\n\t"aquamarine": [127, 255, 212],\r\n\t"azure": [240, 255, 255],\r\n\t"beige": [245, 245, 220],\r\n\t"bisque": [255, 228, 196],\r\n\t"black": [0, 0, 0],\r\n\t"blanchedalmond": [255, 235, 205],\r\n\t"blue": [0, 0, 255],\r\n\t"blueviolet": [138, 43, 226],\r\n\t"brown": [165, 42, 42],\r\n\t"burlywood": [222, 184, 135],\r\n\t"cadetblue": [95, 158, 160],\r\n\t"chartreuse": [127, 255, 0],\r\n\t"chocolate": [210, 105, 30],\r\n\t"coral": [255, 127, 80],\r\n\t"cornflowerblue": [100, 149, 237],\r\n\t"cornsilk": [255, 248, 220],\r\n\t"crimson": [220, 20, 60],\r\n\t"cyan": [0, 255, 255],\r\n\t"darkblue": [0, 0, 139],\r\n\t"darkcyan": [0, 139, 139],\r\n\t"darkgoldenrod": [184, 134, 11],\r\n\t"darkgray": [169, 169, 169],\r\n\t"darkgreen": [0, 100, 0],\r\n\t"darkgrey": [169, 169, 169],\r\n\t"darkkhaki": [189, 183, 107],\r\n\t"darkmagenta": [139, 0, 139],\r\n\t"darkolivegreen": [85, 107, 47],\r\n\t"darkorange": [255, 140, 0],\r\n\t"darkorchid": [153, 50, 204],\r\n\t"darkred": [139, 0, 0],\r\n\t"darksalmon": [233, 150, 122],\r\n\t"darkseagreen": [143, 188, 143],\r\n\t"darkslateblue": [72, 61, 139],\r\n\t"darkslategray": [47, 79, 79],\r\n\t"darkslategrey": [47, 79, 79],\r\n\t"darkturquoise": [0, 206, 209],\r\n\t"darkviolet": [148, 0, 211],\r\n\t"deeppink": [255, 20, 147],\r\n\t"deepskyblue": [0, 191, 255],\r\n\t"dimgray": [105, 105, 105],\r\n\t"dimgrey": [105, 105, 105],\r\n\t"dodgerblue": [30, 144, 255],\r\n\t"firebrick": [178, 34, 34],\r\n\t"floralwhite": [255, 250, 240],\r\n\t"forestgreen": [34, 139, 34],\r\n\t"fuchsia": [255, 0, 255],\r\n\t"gainsboro": [220, 220, 220],\r\n\t"ghostwhite": [248, 248, 255],\r\n\t"gold": [255, 215, 0],\r\n\t"goldenrod": [218, 165, 32],\r\n\t"gray": [128, 128, 128],\r\n\t"green": [0, 128, 0],\r\n\t"greenyellow": [173, 255, 47],\r\n\t"grey": [128, 128, 128],\r\n\t"honeydew": [240, 255, 240],\r\n\t"hotpink": [255, 105, 180],\r\n\t"indianred": [205, 92, 92],\r\n\t"indigo": [75, 0, 130],\r\n\t"ivory": [255, 255, 240],\r\n\t"khaki": [240, 230, 140],\r\n\t"lavender": [230, 230, 250],\r\n\t"lavenderblush": [255, 240, 245],\r\n\t"lawngreen": [124, 252, 0],\r\n\t"lemonchiffon": [255, 250, 205],\r\n\t"lightblue": [173, 216, 230],\r\n\t"lightcoral": [240, 128, 128],\r\n\t"lightcyan": [224, 255, 255],\r\n\t"lightgoldenrodyellow": [250, 250, 210],\r\n\t"lightgray": [211, 211, 211],\r\n\t"lightgreen": [144, 238, 144],\r\n\t"lightgrey": [211, 211, 211],\r\n\t"lightpink": [255, 182, 193],\r\n\t"lightsalmon": [255, 160, 122],\r\n\t"lightseagreen": [32, 178, 170],\r\n\t"lightskyblue": [135, 206, 250],\r\n\t"lightslategray": [119, 136, 153],\r\n\t"lightslategrey": [119, 136, 153],\r\n\t"lightsteelblue": [176, 196, 222],\r\n\t"lightyellow": [255, 255, 224],\r\n\t"lime": [0, 255, 0],\r\n\t"limegreen": [50, 205, 50],\r\n\t"linen": [250, 240, 230],\r\n\t"magenta": [255, 0, 255],\r\n\t"maroon": [128, 0, 0],\r\n\t"mediumaquamarine": [102, 205, 170],\r\n\t"mediumblue": [0, 0, 205],\r\n\t"mediumorchid": [186, 85, 211],\r\n\t"mediumpurple": [147, 112, 219],\r\n\t"mediumseagreen": [60, 179, 113],\r\n\t"mediumslateblue": [123, 104, 238],\r\n\t"mediumspringgreen": [0, 250, 154],\r\n\t"mediumturquoise": [72, 209, 204],\r\n\t"mediumvioletred": [199, 21, 133],\r\n\t"midnightblue": [25, 25, 112],\r\n\t"mintcream": [245, 255, 250],\r\n\t"mistyrose": [255, 228, 225],\r\n\t"moccasin": [255, 228, 181],\r\n\t"navajowhite": [255, 222, 173],\r\n\t"navy": [0, 0, 128],\r\n\t"oldlace": [253, 245, 230],\r\n\t"olive": [128, 128, 0],\r\n\t"olivedrab": [107, 142, 35],\r\n\t"orange": [255, 165, 0],\r\n\t"orangered": [255, 69, 0],\r\n\t"orchid": [218, 112, 214],\r\n\t"palegoldenrod": [238, 232, 170],\r\n\t"palegreen": [152, 251, 152],\r\n\t"paleturquoise": [175, 238, 238],\r\n\t"palevioletred": [219, 112, 147],\r\n\t"papayawhip": [255, 239, 213],\r\n\t"peachpuff": [255, 218, 185],\r\n\t"peru": [205, 133, 63],\r\n\t"pink": [255, 192, 203],\r\n\t"plum": [221, 160, 221],\r\n\t"powderblue": [176, 224, 230],\r\n\t"purple": [128, 0, 128],\r\n\t"rebeccapurple": [102, 51, 153],\r\n\t"red": [255, 0, 0],\r\n\t"rosybrown": [188, 143, 143],\r\n\t"royalblue": [65, 105, 225],\r\n\t"saddlebrown": [139, 69, 19],\r\n\t"salmon": [250, 128, 114],\r\n\t"sandybrown": [244, 164, 96],\r\n\t"seagreen": [46, 139, 87],\r\n\t"seashell": [255, 245, 238],\r\n\t"sienna": [160, 82, 45],\r\n\t"silver": [192, 192, 192],\r\n\t"skyblue": [135, 206, 235],\r\n\t"slateblue": [106, 90, 205],\r\n\t"slategray": [112, 128, 144],\r\n\t"slategrey": [112, 128, 144],\r\n\t"snow": [255, 250, 250],\r\n\t"springgreen": [0, 255, 127],\r\n\t"steelblue": [70, 130, 180],\r\n\t"tan": [210, 180, 140],\r\n\t"teal": [0, 128, 128],\r\n\t"thistle": [216, 191, 216],\r\n\t"tomato": [255, 99, 71],\r\n\t"turquoise": [64, 224, 208],\r\n\t"violet": [238, 130, 238],\r\n\t"wheat": [245, 222, 179],\r\n\t"white": [255, 255, 255],\r\n\t"whitesmoke": [245, 245, 245],\r\n\t"yellow": [255, 255, 0],\r\n\t"yellowgreen": [154, 205, 50]\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./node_modules/json-colorizer/node_modules/color-name/index.js?')},"./node_modules/json-colorizer/node_modules/escape-string-regexp/index.js":
/*!********************************************************************************!*\
  !*** ./node_modules/json-colorizer/node_modules/escape-string-regexp/index.js ***!
  \********************************************************************************/module=>{"use strict";eval("\n\nvar matchOperatorsRe = /[|\\\\{}()[\\]^$+*?.]/g;\n\nmodule.exports = function (str) {\n\tif (typeof str !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\treturn str.replace(matchOperatorsRe, '\\\\$&');\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/json-colorizer/node_modules/escape-string-regexp/index.js?")},"./node_modules/json-colorizer/node_modules/has-flag/index.js":
/*!********************************************************************!*\
  !*** ./node_modules/json-colorizer/node_modules/has-flag/index.js ***!
  \********************************************************************/module=>{"use strict";eval("\nmodule.exports = (flag, argv) => {\n\targv = argv || process.argv;\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst pos = argv.indexOf(prefix + flag);\n\tconst terminatorPos = argv.indexOf('--');\n\treturn pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/json-colorizer/node_modules/has-flag/index.js?")},"./node_modules/json-colorizer/node_modules/supports-color/index.js":
/*!**************************************************************************!*\
  !*** ./node_modules/json-colorizer/node_modules/supports-color/index.js ***!
  \**************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nconst os = __webpack_require__(/*! os */ \"os\");\nconst hasFlag = __webpack_require__(/*! has-flag */ \"./node_modules/json-colorizer/node_modules/has-flag/index.js\");\n\nconst env = ({\"APP_ENV\":\"webpack\"});\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false')) {\n\tforceColor = false;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = true;\n}\nif ('FORCE_COLOR' in env) {\n\tforceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0;\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(stream) {\n\tif (forceColor === false) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (stream && !stream.isTTY && forceColor !== true) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor ? 1 : 0;\n\n\tif (process.platform === 'win32') {\n\t\t// Node.js 7.5.0 is the first version of Node.js to include a patch to\n\t\t// libuv that enables 256 color output on Windows. Anything earlier and it\n\t\t// won't work. However, here we target Node.js 8 at minimum as it is an LTS\n\t\t// release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows\n\t\t// release that supports 256 colors. Windows 10 build 14931 is the first release\n\t\t// that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(process.versions.node.split('.')[0]) >= 8 &&\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: getSupportLevel(process.stdout),\n\tstderr: getSupportLevel(process.stderr)\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/json-colorizer/node_modules/supports-color/index.js?")},"./node_modules/json-colorizer/src/lib/colorizer.js":
/*!**********************************************************!*\
  !*** ./node_modules/json-colorizer/src/lib/colorizer.js ***!
  \**********************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{eval("const chalk = __webpack_require__(/*! chalk */ \"./node_modules/json-colorizer/node_modules/chalk/index.js\");\nconst get = __webpack_require__(/*! lodash.get */ \"./node_modules/lodash.get/index.js\");\n\nconst defaultColors = {\n  BRACE: 'gray',\n  BRACKET: 'gray',\n  COLON: 'gray',\n  COMMA: 'gray',\n  STRING_KEY: 'magenta',\n  STRING_LITERAL: 'yellow',\n  NUMBER_LITERAL: 'green',\n  BOOLEAN_LITERAL: 'cyan',\n  NULL_LITERAL: 'white'\n};\n\nexports.colorize = function colorize(tokens, options = {}) {\n  const colors = options.colors || {};\n\n  return tokens.reduce((acc, token) => {\n    const colorKey = colors[token.type] || defaultColors[token.type];\n    const colorFn = colorKey && colorKey[0] === '#' ? chalk.hex(colorKey) : get(chalk, colorKey);\n\n    return acc + (colorFn ? colorFn(token.value) : token.value);\n  }, '');\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/json-colorizer/src/lib/colorizer.js?")},"./node_modules/json-colorizer/src/lib/index.js":
/*!******************************************************!*\
  !*** ./node_modules/json-colorizer/src/lib/index.js ***!
  \******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const lexer = __webpack_require__(/*! ./lexer */ "./node_modules/json-colorizer/src/lib/lexer.js");\nconst colorizer = __webpack_require__(/*! ./colorizer */ "./node_modules/json-colorizer/src/lib/colorizer.js");\n\nmodule.exports = function colorizeJson(json, options) {\n  return colorizer.colorize(lexer.getTokens(json, options), options);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/json-colorizer/src/lib/index.js?')},"./node_modules/json-colorizer/src/lib/lexer.js":
/*!******************************************************!*\
  !*** ./node_modules/json-colorizer/src/lib/lexer.js ***!
  \******************************************************/(__unused_webpack_module,exports)=>{eval("const tokenTypes = [\n  { regex: /^\\s+/, tokenType: 'WHITESPACE' },\n  { regex: /^[{}]/, tokenType: 'BRACE' },\n  { regex: /^[[\\]]/, tokenType: 'BRACKET' },\n  { regex: /^:/, tokenType: 'COLON' },\n  { regex: /^,/, tokenType: 'COMMA' },\n  { regex: /^-?\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?/i, tokenType: 'NUMBER_LITERAL' },\n  { regex: /^\"(?:\\\\.|[^\"\\\\])*\"(?=\\s*:)/, tokenType: 'STRING_KEY' },\n  { regex: /^\"(?:\\\\.|[^\"\\\\])*\"/, tokenType: 'STRING_LITERAL' },\n  { regex: /^true|^false/, tokenType: 'BOOLEAN_LITERAL' },\n  { regex: /^null/, tokenType: 'NULL_LITERAL' }\n];\n\nexports.getTokens = function getTokens(json, options = {}) {\n  let input;\n\n  if (options.pretty) {\n    const inputObj = typeof json === 'string' ? JSON.parse(json) : json;\n    input = JSON.stringify(inputObj, null, 2);\n  } else {\n    input = typeof json === 'string' ? json : JSON.stringify(json);\n  }\n\n  let tokens = [];\n  let foundToken;\n\n  do {\n    foundToken = false;\n    for (let i = 0; i < tokenTypes.length; i++) {\n      const match = tokenTypes[i].regex.exec(input);\n      if (match) {\n        tokens.push({ type: tokenTypes[i].tokenType, value: match[0] });\n        input = input.substring(match[0].length);\n        foundToken = true;\n        break;\n      }\n    }\n  } while (_allTokensAnalyzed(input, foundToken));\n\n  return tokens;\n};\n\n/**\n * @author Willian Magalhães Gonçalves\n * @description Are all tokens analyzed?\n * @param {*} input - Input\n * @param {*} foundToken - Found token\n * @returns {boolean} checkResult - Check result\n * @private\n */\nfunction _allTokensAnalyzed(input, foundToken) {\n  const safeInput = input || {};\n\n  const inputLength = safeInput.length;\n  return inputLength > 0 && foundToken;\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/json-colorizer/src/lib/lexer.js?")},"./node_modules/jsonfile/index.js":
/*!****************************************!*\
  !*** ./node_modules/jsonfile/index.js ***!
  \****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("let _fs\ntry {\n  _fs = __webpack_require__(/*! graceful-fs */ \"./node_modules/graceful-fs/graceful-fs.js\")\n} catch (_) {\n  _fs = __webpack_require__(/*! fs */ \"fs\")\n}\nconst universalify = __webpack_require__(/*! universalify */ \"./node_modules/universalify/index.js\")\nconst { stringify, stripBom } = __webpack_require__(/*! ./utils */ \"./node_modules/jsonfile/utils.js\")\n\nasync function _readFile (file, options = {}) {\n  if (typeof options === 'string') {\n    options = { encoding: options }\n  }\n\n  const fs = options.fs || _fs\n\n  const shouldThrow = 'throws' in options ? options.throws : true\n\n  let data = await universalify.fromCallback(fs.readFile)(file, options)\n\n  data = stripBom(data)\n\n  let obj\n  try {\n    obj = JSON.parse(data, options ? options.reviver : null)\n  } catch (err) {\n    if (shouldThrow) {\n      err.message = `${file}: ${err.message}`\n      throw err\n    } else {\n      return null\n    }\n  }\n\n  return obj\n}\n\nconst readFile = universalify.fromPromise(_readFile)\n\nfunction readFileSync (file, options = {}) {\n  if (typeof options === 'string') {\n    options = { encoding: options }\n  }\n\n  const fs = options.fs || _fs\n\n  const shouldThrow = 'throws' in options ? options.throws : true\n\n  try {\n    let content = fs.readFileSync(file, options)\n    content = stripBom(content)\n    return JSON.parse(content, options.reviver)\n  } catch (err) {\n    if (shouldThrow) {\n      err.message = `${file}: ${err.message}`\n      throw err\n    } else {\n      return null\n    }\n  }\n}\n\nasync function _writeFile (file, obj, options = {}) {\n  const fs = options.fs || _fs\n\n  const str = stringify(obj, options)\n\n  await universalify.fromCallback(fs.writeFile)(file, str, options)\n}\n\nconst writeFile = universalify.fromPromise(_writeFile)\n\nfunction writeFileSync (file, obj, options = {}) {\n  const fs = options.fs || _fs\n\n  const str = stringify(obj, options)\n  // not sure if fs.writeFileSync returns anything, but just in case\n  return fs.writeFileSync(file, str, options)\n}\n\nconst jsonfile = {\n  readFile,\n  readFileSync,\n  writeFile,\n  writeFileSync\n}\n\nmodule.exports = jsonfile\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jsonfile/index.js?")},"./node_modules/jsonfile/utils.js":
/*!****************************************!*\
  !*** ./node_modules/jsonfile/utils.js ***!
  \****************************************/module=>{eval("function stringify (obj, { EOL = '\\n', finalEOL = true, replacer = null, spaces } = {}) {\n  const EOF = finalEOL ? EOL : ''\n  const str = JSON.stringify(obj, replacer, spaces)\n\n  return str.replace(/\\n/g, EOL) + EOF\n}\n\nfunction stripBom (content) {\n  // we do this because JSON.parse would convert it to a utf8 string if encoding wasn't specified\n  if (Buffer.isBuffer(content)) content = content.toString('utf8')\n  return content.replace(/^\\uFEFF/, '')\n}\n\nmodule.exports = { stringify, stripBom }\n\n\n//# sourceURL=webpack://txadmin/./node_modules/jsonfile/utils.js?")},"./node_modules/keygrip/index.js":
/*!***************************************!*\
  !*** ./node_modules/keygrip/index.js ***!
  \***************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('/*!\n * keygrip\n * Copyright(c) 2011-2014 Jed Schmidt\n * MIT Licensed\n */\n\n\n\nvar compare = __webpack_require__(/*! tsscmp */ "./node_modules/tsscmp/lib/index.js")\nvar crypto = __webpack_require__(/*! crypto */ "crypto")\n  \nfunction Keygrip(keys, algorithm, encoding) {\n  if (!algorithm) algorithm = "sha1";\n  if (!encoding) encoding = "base64";\n  if (!(this instanceof Keygrip)) return new Keygrip(keys, algorithm, encoding)\n\n  if (!keys || !(0 in keys)) {\n    throw new Error("Keys must be provided.")\n  }\n\n  function sign(data, key) {\n    return crypto\n      .createHmac(algorithm, key)\n      .update(data).digest(encoding)\n      .replace(/\\/|\\+|=/g, function(x) {\n        return ({ "/": "_", "+": "-", "=": "" })[x]\n      })\n  }\n\n  this.sign = function(data){ return sign(data, keys[0]) }\n\n  this.verify = function(data, digest) {\n    return this.index(data, digest) > -1\n  }\n\n  this.index = function(data, digest) {\n    for (var i = 0, l = keys.length; i < l; i++) {\n      if (compare(digest, sign(data, keys[i]))) {\n        return i\n      }\n    }\n\n    return -1\n  }\n}\n\nKeygrip.sign = Keygrip.verify = Keygrip.index = function() {\n  throw new Error("Usage: require(\'keygrip\')(<array-of-keys>)")\n}\n\nmodule.exports = Keygrip\n\n\n//# sourceURL=webpack://txadmin/./node_modules/keygrip/index.js?')},"./node_modules/keyv/src/index.js":
/*!****************************************!*\
  !*** ./node_modules/keyv/src/index.js ***!
  \****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst EventEmitter = __webpack_require__(/*! events */ \"events\");\nconst JSONB = __webpack_require__(/*! json-buffer */ \"./node_modules/json-buffer/index.js\");\n\nconst loadStore = opts => {\n\tconst adapters = {\n\t\tredis: '@keyv/redis',\n\t\tmongodb: '@keyv/mongo',\n\t\tmongo: '@keyv/mongo',\n\t\tsqlite: '@keyv/sqlite',\n\t\tpostgresql: '@keyv/postgres',\n\t\tpostgres: '@keyv/postgres',\n\t\tmysql: '@keyv/mysql'\n\t};\n\tif (opts.adapter || opts.uri) {\n\t\tconst adapter = opts.adapter || /^[^:]*/.exec(opts.uri)[0];\n\t\treturn new (__webpack_require__(\"./node_modules/keyv/src sync recursive\")(adapters[adapter]))(opts);\n\t}\n\n\treturn new Map();\n};\n\nclass Keyv extends EventEmitter {\n\tconstructor(uri, opts) {\n\t\tsuper();\n\t\tthis.opts = Object.assign(\n\t\t\t{\n\t\t\t\tnamespace: 'keyv',\n\t\t\t\tserialize: JSONB.stringify,\n\t\t\t\tdeserialize: JSONB.parse\n\t\t\t},\n\t\t\t(typeof uri === 'string') ? { uri } : uri,\n\t\t\topts\n\t\t);\n\n\t\tif (!this.opts.store) {\n\t\t\tconst adapterOpts = Object.assign({}, this.opts);\n\t\t\tthis.opts.store = loadStore(adapterOpts);\n\t\t}\n\n\t\tif (typeof this.opts.store.on === 'function') {\n\t\t\tthis.opts.store.on('error', err => this.emit('error', err));\n\t\t}\n\n\t\tthis.opts.store.namespace = this.opts.namespace;\n\t}\n\n\t_getKeyPrefix(key) {\n\t\treturn `${this.opts.namespace}:${key}`;\n\t}\n\n\tget(key, opts) {\n\t\tconst keyPrefixed = this._getKeyPrefix(key);\n\t\tconst { store } = this.opts;\n\t\treturn Promise.resolve()\n\t\t\t.then(() => store.get(keyPrefixed))\n\t\t\t.then(data => {\n\t\t\t\treturn (typeof data === 'string') ? this.opts.deserialize(data) : data;\n\t\t\t})\n\t\t\t.then(data => {\n\t\t\t\tif (data === undefined) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\tif (typeof data.expires === 'number' && Date.now() > data.expires) {\n\t\t\t\t\tthis.delete(key);\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\treturn (opts && opts.raw) ? data : data.value;\n\t\t\t});\n\t}\n\n\tset(key, value, ttl) {\n\t\tconst keyPrefixed = this._getKeyPrefix(key);\n\t\tif (typeof ttl === 'undefined') {\n\t\t\tttl = this.opts.ttl;\n\t\t}\n\n\t\tif (ttl === 0) {\n\t\t\tttl = undefined;\n\t\t}\n\n\t\tconst { store } = this.opts;\n\n\t\treturn Promise.resolve()\n\t\t\t.then(() => {\n\t\t\t\tconst expires = (typeof ttl === 'number') ? (Date.now() + ttl) : null;\n\t\t\t\tvalue = { value, expires };\n\t\t\t\treturn this.opts.serialize(value);\n\t\t\t})\n\t\t\t.then(value => store.set(keyPrefixed, value, ttl))\n\t\t\t.then(() => true);\n\t}\n\n\tdelete(key) {\n\t\tconst keyPrefixed = this._getKeyPrefix(key);\n\t\tconst { store } = this.opts;\n\t\treturn Promise.resolve()\n\t\t\t.then(() => store.delete(keyPrefixed));\n\t}\n\n\tclear() {\n\t\tconst { store } = this.opts;\n\t\treturn Promise.resolve()\n\t\t\t.then(() => store.clear());\n\t}\n}\n\nmodule.exports = Keyv;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/keyv/src/index.js?")},"./node_modules/keyv/src sync recursive":
/*!*************************************!*\
  !*** ./node_modules/keyv/src/ sync ***!
  \*************************************/module=>{eval('function webpackEmptyContext(req) {\n\tvar e = new Error("Cannot find module \'" + req + "\'");\n\te.code = \'MODULE_NOT_FOUND\';\n\tthrow e;\n}\nwebpackEmptyContext.keys = () => ([]);\nwebpackEmptyContext.resolve = webpackEmptyContext;\nwebpackEmptyContext.id = "./node_modules/keyv/src sync recursive";\nmodule.exports = webpackEmptyContext;\n\n//# sourceURL=webpack://txadmin/./node_modules/keyv/src/_sync?')},"./node_modules/koa-bodyparser/index.js":
/*!**********************************************!*\
  !*** ./node_modules/koa-bodyparser/index.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("/**!\n * koa-body-parser - index.js\n * Copyright(c) 2014\n * MIT Licensed\n *\n * Authors:\n *   dead_horse <dead_horse@qq.com> (http://deadhorse.me)\n *   fengmk2 <m@fengmk2.com> (http://fengmk2.com)\n */\n\n\n\n/**\n * Module dependencies.\n */\n\nvar parse = __webpack_require__(/*! co-body */ \"./node_modules/co-body/index.js\");\nvar copy = __webpack_require__(/*! copy-to */ \"./node_modules/copy-to/index.js\");\n\n/**\n * @param [Object] opts\n *   - {String} jsonLimit default '1mb'\n *   - {String} formLimit default '56kb'\n *   - {string} encoding default 'utf-8'\n *   - {Object} extendTypes\n */\n\nmodule.exports = function (opts) {\n  opts = opts || {};\n  var detectJSON = opts.detectJSON;\n  var onerror = opts.onerror;\n\n  var enableTypes = opts.enableTypes || ['json', 'form'];\n  var enableForm = checkEnable(enableTypes, 'form');\n  var enableJson = checkEnable(enableTypes, 'json');\n  var enableText = checkEnable(enableTypes, 'text');\n  var enableXml = checkEnable(enableTypes, 'xml');\n\n  opts.detectJSON = undefined;\n  opts.onerror = undefined;\n\n  // force co-body return raw body\n  opts.returnRawBody = true;\n\n  // default json types\n  var jsonTypes = [\n    'application/json',\n    'application/json-patch+json',\n    'application/vnd.api+json',\n    'application/csp-report',\n  ];\n\n  // default form types\n  var formTypes = [\n    'application/x-www-form-urlencoded',\n  ];\n\n  // default text types\n  var textTypes = [\n    'text/plain',\n  ];\n\n  // default xml types\n  var xmlTypes = [\n    'text/xml',\n    'application/xml',\n  ];\n\n  var jsonOpts = formatOptions(opts, 'json');\n  var formOpts = formatOptions(opts, 'form');\n  var textOpts = formatOptions(opts, 'text');\n  var xmlOpts = formatOptions(opts, 'xml');\n\n  var extendTypes = opts.extendTypes || {};\n\n  extendType(jsonTypes, extendTypes.json);\n  extendType(formTypes, extendTypes.form);\n  extendType(textTypes, extendTypes.text);\n  extendType(xmlTypes, extendTypes.xml);\n\n  return async function bodyParser(ctx, next) {\n    if (ctx.request.body !== undefined) return await next();\n    if (ctx.disableBodyParser) return await next();\n    try {\n      const res = await parseBody(ctx);\n      ctx.request.body = 'parsed' in res ? res.parsed : {};\n      if (ctx.request.rawBody === undefined) ctx.request.rawBody = res.raw;\n    } catch (err) {\n      if (onerror) {\n        onerror(err, ctx);\n      } else {\n        throw err;\n      }\n    }\n    await next();\n  };\n\n  async function parseBody(ctx) {\n    if (enableJson && ((detectJSON && detectJSON(ctx)) || ctx.request.is(jsonTypes))) {\n      return await parse.json(ctx, jsonOpts);\n    }\n    if (enableForm && ctx.request.is(formTypes)) {\n      return await parse.form(ctx, formOpts);\n    }\n    if (enableText && ctx.request.is(textTypes)) {\n      return await parse.text(ctx, textOpts) || '';\n    }\n    if (enableXml && ctx.request.is(xmlTypes)) {\n      return await parse.text(ctx, xmlOpts) || '';\n    }\n    return {};\n  }\n};\n\nfunction formatOptions(opts, type) {\n  var res = {};\n  copy(opts).to(res);\n  res.limit = opts[type + 'Limit'];\n  return res;\n}\n\nfunction extendType(original, extend) {\n  if (extend) {\n    if (!Array.isArray(extend)) {\n      extend = [extend];\n    }\n    extend.forEach(function (extend) {\n      original.push(extend);\n    });\n  }\n}\n\nfunction checkEnable(types, type) {\n  return types.includes(type);\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa-bodyparser/index.js?")},"./node_modules/koa-compose/index.js":
/*!*******************************************!*\
  !*** ./node_modules/koa-compose/index.js ***!
  \*******************************************/module=>{"use strict";eval("\n\n/**\n * Expose compositor.\n */\n\nmodule.exports = compose\n\n/**\n * Compose `middleware` returning\n * a fully valid middleware comprised\n * of all those which are passed.\n *\n * @param {Array} middleware\n * @return {Function}\n * @api public\n */\n\nfunction compose (middleware) {\n  if (!Array.isArray(middleware)) throw new TypeError('Middleware stack must be an array!')\n  for (const fn of middleware) {\n    if (typeof fn !== 'function') throw new TypeError('Middleware must be composed of functions!')\n  }\n\n  /**\n   * @param {Object} context\n   * @return {Promise}\n   * @api public\n   */\n\n  return function (context, next) {\n    // last called middleware #\n    let index = -1\n    return dispatch(0)\n    function dispatch (i) {\n      if (i <= index) return Promise.reject(new Error('next() called multiple times'))\n      index = i\n      let fn = middleware[i]\n      if (i === middleware.length) fn = next\n      if (!fn) return Promise.resolve()\n      try {\n        return Promise.resolve(fn(context, dispatch.bind(null, i + 1)));\n      } catch (err) {\n        return Promise.reject(err)\n      }\n    }\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa-compose/index.js?")},"./node_modules/koa-convert/index.js":
/*!*******************************************!*\
  !*** ./node_modules/koa-convert/index.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n/**\n * Module dependencies.\n */\n\nconst co = __webpack_require__(/*! co */ \"./node_modules/co/index.js\")\nconst compose = __webpack_require__(/*! koa-compose */ \"./node_modules/koa-compose/index.js\")\n\n/**\n * Expose `convert()`.\n */\n\nmodule.exports = convert\n\n/**\n * Convert Koa legacy generator-based middleware\n * to modern promise-based middleware.\n *\n *\n * @api public\n * */\n\nfunction convert (mw) {\n  if (typeof mw !== 'function') {\n    throw new TypeError('middleware must be a function')\n  }\n\n  // assume it's Promise-based middleware\n  if (\n    mw.constructor.name !== 'GeneratorFunction' &&\n    mw.constructor.name !== 'AsyncGeneratorFunction'\n  ) {\n    return mw\n  }\n\n  const converted = function (ctx, next) {\n    return co.call(\n      ctx,\n      mw.call(\n        ctx,\n        (function * (next) { return yield next() })(next)\n      ))\n  }\n\n  converted._name = mw._name || mw.name\n  return converted\n}\n\n/**\n * Convert and compose multiple middleware\n * (could mix legacy and modern ones)\n * and return modern promise middleware.\n *\n *\n * @api public\n * */\n\n// convert.compose(mw, mw, mw)\n// convert.compose([mw, mw, mw])\nconvert.compose = function (arr) {\n  if (!Array.isArray(arr)) {\n    arr = Array.from(arguments)\n  }\n\n  return compose(arr.map(convert))\n}\n\n/**\n * Convert Koa modern promise-based middleware\n * to legacy generator-based middleware.\n *\n *\n * @api public\n * */\n\nconvert.back = function (mw) {\n  if (typeof mw !== 'function') {\n    throw new TypeError('middleware must be a function')\n  }\n\n  // assume it's generator middleware\n  if (mw.constructor.name === 'GeneratorFunction' || mw.constructor.name === 'AsyncGeneratorFunction') {\n    return mw\n  }\n\n  const converted = function * (next) {\n    const ctx = this\n    let called = false\n\n    yield mw(ctx, function () {\n      if (called) {\n        // guard against multiple next() calls\n        // https://github.com/koajs/compose/blob/4e3e96baf58b817d71bd44a8c0d78bb42623aa95/index.js#L36\n        throw new Error('next() called multiple times')\n      }\n\n      called = true\n      return co.call(ctx, next)\n    })\n  }\n\n  converted._name = mw._name || mw.name\n  return converted\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa-convert/index.js?")},"./node_modules/koa-ratelimit/index.js":
/*!*********************************************!*\
  !*** ./node_modules/koa-ratelimit/index.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n/**\n * Module dependencies.\n */\n\nconst debug = __webpack_require__(/*! debug */ \"./node_modules/debug/src/index.js\")('koa-ratelimit')\nconst RedisLimiter = __webpack_require__(/*! ./limiter/redis */ \"./node_modules/koa-ratelimit/limiter/redis.js\")\nconst MemoryLimiter = __webpack_require__(/*! ./limiter/memory */ \"./node_modules/koa-ratelimit/limiter/memory.js\")\nconst ms = __webpack_require__(/*! ms */ \"./node_modules/ms/index.js\")\n\n/**\n * Expose `ratelimit()`.\n *\n * Initialize ratelimit middleware with the given `opts`:\n *\n * - `driver` redis or memory [redis]\n * - `duration` limit duration in milliseconds [1 hour]\n * - `max` max requests per `id` [2500]\n * - `db` database connection if redis. Map instance if memory\n * - `id` id to compare requests [ip]\n * - `headers` custom header names\n * - `remaining` remaining number of requests ['X-RateLimit-Remaining']\n * - `reset` reset timestamp ['X-RateLimit-Reset']\n * - `total` total number of requests ['X-RateLimit-Limit']\n * - `whitelist` whitelist function [false]\n * - `blacklist` blacklist function [false]\n * - `throw` call ctx.throw if true\n *\n * @param {Object} opts\n * @return {Function}\n * @api public\n */\n\nmodule.exports = function ratelimit (opts = {}) {\n  const defaultOpts = {\n    driver: 'redis',\n    duration: 60 * 60 * 1000, // 1 hour\n    max: 2500,\n    id: ctx => ctx.ip,\n    headers: {\n      remaining: 'X-RateLimit-Remaining',\n      reset: 'X-RateLimit-Reset',\n      total: 'X-RateLimit-Limit'\n    }\n  }\n\n  opts = { ...defaultOpts, ...opts }\n\n  const {\n    remaining = 'X-RateLimit-Remaining',\n    reset = 'X-RateLimit-Reset',\n    total = 'X-RateLimit-Limit'\n  } = opts.headers\n\n  return async function ratelimit (ctx, next) {\n    const id = opts.id(ctx)\n    const { driver } = opts\n    const whitelisted = typeof opts.whitelist === 'function' && await opts.whitelist(ctx)\n    const blacklisted = typeof opts.blacklist === 'function' && await opts.blacklist(ctx)\n\n    if (blacklisted) {\n      ctx.throw(403, 'Forbidden')\n    }\n\n    if (id === false || whitelisted) return await next()\n\n    // initialize limiter\n    let limiter\n    if (driver === 'memory') {\n      limiter = new MemoryLimiter({ ...opts, id })\n    } else if (driver === 'redis') {\n      limiter = new RedisLimiter({ ...opts, id })\n    } else {\n      throw new Error(`invalid driver. Expecting memory or redis, got ${driver}`)\n    }\n\n    // check limit\n    const limit = await limiter.get()\n\n    // check if current call is legit\n    const calls = limit.remaining > 0 ? limit.remaining - 1 : 0\n\n    // check if header disabled\n    const disableHeader = opts.disableHeader || false\n\n    let headers = {}\n    if (!disableHeader) {\n      // header fields\n      headers = {\n        [remaining]: calls,\n        [reset]: limit.reset,\n        [total]: limit.total\n      }\n\n      ctx.set(headers)\n    }\n\n    debug('remaining %s/%s %s', remaining, limit.total, id)\n    if (limit.remaining) return await next()\n\n    const delta = (limit.reset * 1000) - Date.now() | 0\n    const after = limit.reset - (Date.now() / 1000) | 0\n    ctx.set('Retry-After', after)\n\n    ctx.status = opts.status || 429\n    ctx.body = opts.errorMessage || `Rate limit exceeded, retry in ${ms(delta, { long: true })}.`\n\n    if (opts.throw) {\n      ctx.throw(ctx.status, ctx.body, { headers })\n    }\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa-ratelimit/index.js?")},"./node_modules/koa-ratelimit/limiter/memory.js":
/*!******************************************************!*\
  !*** ./node_modules/koa-ratelimit/limiter/memory.js ***!
  \******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n/**\n * Module dependencies.\n */\nconst assert = __webpack_require__(/*! assert */ \"assert\")\n\n/**\n * MicroTime.\n */\n\nconst time = Date.now() * 1e3\nconst start = process.hrtime()\n\nfunction getMicrotime () {\n  const diff = process.hrtime(start)\n  return time + diff[0] * 1e6 + Math.round(diff[1] * 1e-3)\n}\n\n/**\n * Expose `Limiter`.\n *\n * Initialize a new limiter with `opts`:\n *\n *  - `id` identifier being limited\n *  - `db` Map object instance (optional). If Map instance is provided, we will use it.\n * This allow user to be able to clear the memory db when required.\n *\n * @param {Object} opts\n * @api public\n */\n\nmodule.exports = class Limiter {\n  constructor ({ id, db, max, duration, namespace = 'limit' }) {\n    this.id = id\n    assert(this.id, '.id required')\n    this.db = db || new Map()\n    assert(this.db instanceof Map, 'for memory driver, .db must be Map instance')\n    this.max = max\n    this.duration = duration\n    this.key = `${namespace}:${this.id}`\n  }\n\n  async get () {\n    const { id, db, duration, key, max } = this\n\n    const entry = db.get(key)\n    const now = getMicrotime()\n    const reset = now + duration * 1e3\n    const expired = entry !== undefined && entry.reset * 1e6 < now\n    const hasKey = db.has(key)\n    const shouldReInit = !hasKey || expired\n\n    if (shouldReInit) {\n      const initState = {\n        id,\n        reset: reset / 1e6,\n        remaining: max,\n        total: max\n      }\n      db.set(key, initState)\n\n      return initState\n    } else {\n      entry.remaining = entry.remaining > 0 ? entry.remaining - 1 : 0\n\n      return entry\n    }\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa-ratelimit/limiter/memory.js?")},"./node_modules/koa-ratelimit/limiter/redis.js":
/*!*****************************************************!*\
  !*** ./node_modules/koa-ratelimit/limiter/redis.js ***!
  \*****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('module.exports = __webpack_require__(/*! async-ratelimiter */ "./node_modules/async-ratelimiter/src/index.js")\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa-ratelimit/limiter/redis.js?')},"./node_modules/koa-send/index.js":
/*!****************************************!*\
  !*** ./node_modules/koa-send/index.js ***!
  \****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("/**\n * Module dependencies.\n */\n\nconst fs = __webpack_require__(/*! fs */ \"fs\")\nconst util = __webpack_require__(/*! util */ \"util\")\nconst debug = __webpack_require__(/*! debug */ \"./node_modules/debug/src/index.js\")('koa-send')\nconst resolvePath = __webpack_require__(/*! resolve-path */ \"./node_modules/resolve-path/index.js\")\nconst createError = __webpack_require__(/*! http-errors */ \"./node_modules/http-errors/index.js\")\nconst assert = __webpack_require__(/*! assert */ \"assert\")\n\nconst stat = util.promisify(fs.stat)\nconst access = util.promisify(fs.access)\n\nasync function exists (path) {\n  try {\n    await access(path)\n    return true\n  } catch (e) {\n    return false\n  }\n}\n\nconst {\n  normalize,\n  basename,\n  extname,\n  resolve,\n  parse,\n  sep\n} = __webpack_require__(/*! path */ \"path\")\n\n/**\n * Expose `send()`.\n */\n\nmodule.exports = send\n\n/**\n * Send file at `path` with the\n * given `options` to the koa `ctx`.\n *\n * @param {Context} ctx\n * @param {String} path\n * @param {Object} [opts]\n * @return {Promise}\n * @api public\n */\n\nasync function send (ctx, path, opts = {}) {\n  assert(ctx, 'koa context required')\n  assert(path, 'pathname required')\n\n  // options\n  debug('send \"%s\" %j', path, opts)\n  const root = opts.root ? normalize(resolve(opts.root)) : ''\n  const trailingSlash = path[path.length - 1] === '/'\n  path = path.substr(parse(path).root.length)\n  const index = opts.index\n  const maxage = opts.maxage || opts.maxAge || 0\n  const immutable = opts.immutable || false\n  const hidden = opts.hidden || false\n  const format = opts.format !== false\n  const extensions = Array.isArray(opts.extensions) ? opts.extensions : false\n  const brotli = opts.brotli !== false\n  const gzip = opts.gzip !== false\n  const setHeaders = opts.setHeaders\n\n  if (setHeaders && typeof setHeaders !== 'function') {\n    throw new TypeError('option setHeaders must be function')\n  }\n\n  // normalize path\n  path = decode(path)\n\n  if (path === -1) return ctx.throw(400, 'failed to decode')\n\n  // index file support\n  if (index && trailingSlash) path += index\n\n  path = resolvePath(root, path)\n\n  // hidden file support, ignore\n  if (!hidden && isHidden(root, path)) return\n\n  let encodingExt = ''\n  // serve brotli file when possible otherwise gzipped file when possible\n  if (ctx.acceptsEncodings('br', 'identity') === 'br' && brotli && (await exists(path + '.br'))) {\n    path = path + '.br'\n    ctx.set('Content-Encoding', 'br')\n    ctx.res.removeHeader('Content-Length')\n    encodingExt = '.br'\n  } else if (ctx.acceptsEncodings('gzip', 'identity') === 'gzip' && gzip && (await exists(path + '.gz'))) {\n    path = path + '.gz'\n    ctx.set('Content-Encoding', 'gzip')\n    ctx.res.removeHeader('Content-Length')\n    encodingExt = '.gz'\n  }\n\n  if (extensions && !/\\./.exec(basename(path))) {\n    const list = [].concat(extensions)\n    for (let i = 0; i < list.length; i++) {\n      let ext = list[i]\n      if (typeof ext !== 'string') {\n        throw new TypeError('option extensions must be array of strings or false')\n      }\n      if (!/^\\./.exec(ext)) ext = `.${ext}`\n      if (await exists(`${path}${ext}`)) {\n        path = `${path}${ext}`\n        break\n      }\n    }\n  }\n\n  // stat\n  let stats\n  try {\n    stats = await stat(path)\n\n    // Format the path to serve static file servers\n    // and not require a trailing slash for directories,\n    // so that you can do both `/directory` and `/directory/`\n    if (stats.isDirectory()) {\n      if (format && index) {\n        path += `/${index}`\n        stats = await stat(path)\n      } else {\n        return\n      }\n    }\n  } catch (err) {\n    const notfound = ['ENOENT', 'ENAMETOOLONG', 'ENOTDIR']\n    if (notfound.includes(err.code)) {\n      throw createError(404, err)\n    }\n    err.status = 500\n    throw err\n  }\n\n  if (setHeaders) setHeaders(ctx.res, path, stats)\n\n  // stream\n  ctx.set('Content-Length', stats.size)\n  if (!ctx.response.get('Last-Modified')) ctx.set('Last-Modified', stats.mtime.toUTCString())\n  if (!ctx.response.get('Cache-Control')) {\n    const directives = [`max-age=${(maxage / 1000 | 0)}`]\n    if (immutable) {\n      directives.push('immutable')\n    }\n    ctx.set('Cache-Control', directives.join(','))\n  }\n  if (!ctx.type) ctx.type = type(path, encodingExt)\n  ctx.body = fs.createReadStream(path)\n\n  return path\n}\n\n/**\n * Check if it's hidden.\n */\n\nfunction isHidden (root, path) {\n  path = path.substr(root.length).split(sep)\n  for (let i = 0; i < path.length; i++) {\n    if (path[i][0] === '.') return true\n  }\n  return false\n}\n\n/**\n * File type.\n */\n\nfunction type (file, ext) {\n  return ext !== '' ? extname(basename(file, ext)) : extname(file)\n}\n\n/**\n * Decode `path`.\n */\n\nfunction decode (path) {\n  try {\n    return decodeURIComponent(path)\n  } catch (err) {\n    return -1\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa-send/index.js?")},"./node_modules/koa-session-memory/index.js":
/*!**************************************************!*\
  !*** ./node_modules/koa-session-memory/index.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const debug = __webpack_require__(/*! debug */ \"./node_modules/koa-session-memory/node_modules/debug/src/index.js\")('koa-session-memory');\nconst { EventEmitter } = __webpack_require__(/*! events */ \"events\");\n\nmodule.exports = class MemoryStore extends EventEmitter {\n  constructor() {\n    super();\n    this.sessions = {};\n    debug('::constructor', this)\n  }\n  get(key, maxAge, { rolling } = {}) {\n    debug(`::get ${key}, ${maxAge}, ${rolling}`);\n    return this.sessions[key];\n  }\n  set(key, session, maxAge, { rolling, changed } = {}) {\n    debug(`::set ${key},`, session, `${maxAge}, ${rolling}, ${changed}`);\n    if (changed) {\n      this.sessions[key] = session;\n      this.emit('changed', {\n        key,\n        session,\n      });\n    }\n  }\n  destroy(key) {\n    debug(`::destroy ${key}`);\n    delete this.sessions[key];\n  }\n}\n\n//# sourceURL=webpack://txadmin/./node_modules/koa-session-memory/index.js?")},"./node_modules/koa-session-memory/node_modules/debug/src/browser.js":
/*!***************************************************************************!*\
  !*** ./node_modules/koa-session-memory/node_modules/debug/src/browser.js ***!
  \***************************************************************************/(module,exports,__webpack_require__)=>{"use strict";eval("\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\n/**\n * Colors.\n */\n\nexports.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'];\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n// eslint-disable-next-line complexity\n\nfunction useColors() {\n  // NB: In an Electron preload script, document will be defined but not fully\n  // initialized. Since we know we're in Chrome, we'll just detect this case\n  // explicitly\n  if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n    return true;\n  } // Internet Explorer and Edge do not support colors.\n\n\n  if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n    return false;\n  } // Is webkit? http://stackoverflow.com/a/16459606/376773\n  // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\n\n  return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773\n  typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?\n  // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n  typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker\n  typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/);\n}\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n  args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);\n\n  if (!this.useColors) {\n    return;\n  }\n\n  var c = 'color: ' + this.color;\n  args.splice(1, 0, c, 'color: inherit'); // The final \"%c\" is somewhat tricky, because there could be other\n  // arguments passed either before or after the %c, so we need to\n  // figure out the correct index to insert the CSS into\n\n  var index = 0;\n  var lastC = 0;\n  args[0].replace(/%[a-zA-Z%]/g, function (match) {\n    if (match === '%%') {\n      return;\n    }\n\n    index++;\n\n    if (match === '%c') {\n      // We only are interested in the *last* %c\n      // (the user may have provided their own)\n      lastC = index;\n    }\n  });\n  args.splice(lastC, 0, c);\n}\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\n\nfunction log() {\n  var _console;\n\n  // This hackery is required for IE8/9, where\n  // the `console.log` function doesn't have 'apply'\n  return (typeof console === \"undefined\" ? \"undefined\" : _typeof(console)) === 'object' && console.log && (_console = console).log.apply(_console, arguments);\n}\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n  try {\n    if (namespaces) {\n      exports.storage.setItem('debug', namespaces);\n    } else {\n      exports.storage.removeItem('debug');\n    }\n  } catch (error) {// Swallow\n    // XXX (@Qix-) should we be logging these?\n  }\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n  var r;\n\n  try {\n    r = exports.storage.getItem('debug');\n  } catch (error) {} // Swallow\n  // XXX (@Qix-) should we be logging these?\n  // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\n\n  if (!r && typeof process !== 'undefined' && 'env' in process) {\n    r = ({\"APP_ENV\":\"webpack\"}).DEBUG;\n  }\n\n  return r;\n}\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\n\nfunction localstorage() {\n  try {\n    // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n    // The Browser also has localStorage in the global context.\n    return localStorage;\n  } catch (error) {// Swallow\n    // XXX (@Qix-) should we be logging these?\n  }\n}\n\nmodule.exports = __webpack_require__(/*! ./common */ \"./node_modules/koa-session-memory/node_modules/debug/src/common.js\")(exports);\nvar formatters = module.exports.formatters;\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n  try {\n    return JSON.stringify(v);\n  } catch (error) {\n    return '[UnexpectedJSONParseError]: ' + error.message;\n  }\n};\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa-session-memory/node_modules/debug/src/browser.js?")},"./node_modules/koa-session-memory/node_modules/debug/src/common.js":
/*!**************************************************************************!*\
  !*** ./node_modules/koa-session-memory/node_modules/debug/src/common.js ***!
  \**************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\nfunction setup(env) {\n  createDebug.debug = createDebug;\n  createDebug.default = createDebug;\n  createDebug.coerce = coerce;\n  createDebug.disable = disable;\n  createDebug.enable = enable;\n  createDebug.enabled = enabled;\n  createDebug.humanize = __webpack_require__(/*! ms */ \"./node_modules/ms/index.js\");\n  Object.keys(env).forEach(function (key) {\n    createDebug[key] = env[key];\n  });\n  /**\n  * Active `debug` instances.\n  */\n\n  createDebug.instances = [];\n  /**\n  * The currently active debug mode names, and names to skip.\n  */\n\n  createDebug.names = [];\n  createDebug.skips = [];\n  /**\n  * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n  *\n  * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n  */\n\n  createDebug.formatters = {};\n  /**\n  * Selects a color for a debug namespace\n  * @param {String} namespace The namespace string for the for the debug instance to be colored\n  * @return {Number|String} An ANSI color code for the given namespace\n  * @api private\n  */\n\n  function selectColor(namespace) {\n    var hash = 0;\n\n    for (var i = 0; i < namespace.length; i++) {\n      hash = (hash << 5) - hash + namespace.charCodeAt(i);\n      hash |= 0; // Convert to 32bit integer\n    }\n\n    return createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n  }\n\n  createDebug.selectColor = selectColor;\n  /**\n  * Create a debugger with the given `namespace`.\n  *\n  * @param {String} namespace\n  * @return {Function}\n  * @api public\n  */\n\n  function createDebug(namespace) {\n    var prevTime;\n\n    function debug() {\n      // Disabled?\n      if (!debug.enabled) {\n        return;\n      }\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      var self = debug; // Set `diff` timestamp\n\n      var curr = Number(new Date());\n      var ms = curr - (prevTime || curr);\n      self.diff = ms;\n      self.prev = prevTime;\n      self.curr = curr;\n      prevTime = curr;\n      args[0] = createDebug.coerce(args[0]);\n\n      if (typeof args[0] !== 'string') {\n        // Anything else let's inspect with %O\n        args.unshift('%O');\n      } // Apply any `formatters` transformations\n\n\n      var index = 0;\n      args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {\n        // If we encounter an escaped % then don't increase the array index\n        if (match === '%%') {\n          return match;\n        }\n\n        index++;\n        var formatter = createDebug.formatters[format];\n\n        if (typeof formatter === 'function') {\n          var val = args[index];\n          match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format`\n\n          args.splice(index, 1);\n          index--;\n        }\n\n        return match;\n      }); // Apply env-specific formatting (colors, etc.)\n\n      createDebug.formatArgs.call(self, args);\n      var logFn = self.log || createDebug.log;\n      logFn.apply(self, args);\n    }\n\n    debug.namespace = namespace;\n    debug.enabled = createDebug.enabled(namespace);\n    debug.useColors = createDebug.useColors();\n    debug.color = selectColor(namespace);\n    debug.destroy = destroy;\n    debug.extend = extend; // Debug.formatArgs = formatArgs;\n    // debug.rawLog = rawLog;\n    // env-specific initialization logic for debug instances\n\n    if (typeof createDebug.init === 'function') {\n      createDebug.init(debug);\n    }\n\n    createDebug.instances.push(debug);\n    return debug;\n  }\n\n  function destroy() {\n    var index = createDebug.instances.indexOf(this);\n\n    if (index !== -1) {\n      createDebug.instances.splice(index, 1);\n      return true;\n    }\n\n    return false;\n  }\n\n  function extend(namespace, delimiter) {\n    return createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n  }\n  /**\n  * Enables a debug mode by namespaces. This can include modes\n  * separated by a colon and wildcards.\n  *\n  * @param {String} namespaces\n  * @api public\n  */\n\n\n  function enable(namespaces) {\n    createDebug.save(namespaces);\n    createDebug.names = [];\n    createDebug.skips = [];\n    var i;\n    var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n    var len = split.length;\n\n    for (i = 0; i < len; i++) {\n      if (!split[i]) {\n        // ignore empty strings\n        continue;\n      }\n\n      namespaces = split[i].replace(/\\*/g, '.*?');\n\n      if (namespaces[0] === '-') {\n        createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n      } else {\n        createDebug.names.push(new RegExp('^' + namespaces + '$'));\n      }\n    }\n\n    for (i = 0; i < createDebug.instances.length; i++) {\n      var instance = createDebug.instances[i];\n      instance.enabled = createDebug.enabled(instance.namespace);\n    }\n  }\n  /**\n  * Disable debug output.\n  *\n  * @api public\n  */\n\n\n  function disable() {\n    createDebug.enable('');\n  }\n  /**\n  * Returns true if the given mode name is enabled, false otherwise.\n  *\n  * @param {String} name\n  * @return {Boolean}\n  * @api public\n  */\n\n\n  function enabled(name) {\n    if (name[name.length - 1] === '*') {\n      return true;\n    }\n\n    var i;\n    var len;\n\n    for (i = 0, len = createDebug.skips.length; i < len; i++) {\n      if (createDebug.skips[i].test(name)) {\n        return false;\n      }\n    }\n\n    for (i = 0, len = createDebug.names.length; i < len; i++) {\n      if (createDebug.names[i].test(name)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n  /**\n  * Coerce `val`.\n  *\n  * @param {Mixed} val\n  * @return {Mixed}\n  * @api private\n  */\n\n\n  function coerce(val) {\n    if (val instanceof Error) {\n      return val.stack || val.message;\n    }\n\n    return val;\n  }\n\n  createDebug.enable(createDebug.load());\n  return createDebug;\n}\n\nmodule.exports = setup;\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa-session-memory/node_modules/debug/src/common.js?")},"./node_modules/koa-session-memory/node_modules/debug/src/index.js":
/*!*************************************************************************!*\
  !*** ./node_modules/koa-session-memory/node_modules/debug/src/index.js ***!
  \*************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n  module.exports = __webpack_require__(/*! ./browser.js */ \"./node_modules/koa-session-memory/node_modules/debug/src/browser.js\");\n} else {\n  module.exports = __webpack_require__(/*! ./node.js */ \"./node_modules/koa-session-memory/node_modules/debug/src/node.js\");\n}\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa-session-memory/node_modules/debug/src/index.js?")},"./node_modules/koa-session-memory/node_modules/debug/src/node.js":
/*!************************************************************************!*\
  !*** ./node_modules/koa-session-memory/node_modules/debug/src/node.js ***!
  \************************************************************************/(module,exports,__webpack_require__)=>{"use strict";eval('\n\n/**\n * Module dependencies.\n */\nvar tty = __webpack_require__(/*! tty */ "tty");\n\nvar util = __webpack_require__(/*! util */ "util");\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n  // Optional dependency (as in, doesn\'t need to be installed, NOT like optionalDependencies in package.json)\n  // eslint-disable-next-line import/no-extraneous-dependencies\n  var supportsColor = __webpack_require__(/*! supports-color */ "./node_modules/supports-color/index.js");\n\n  if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n    exports.colors = [20, 21, 26, 27, 32, 33, 38, 39, 40, 41, 42, 43, 44, 45, 56, 57, 62, 63, 68, 69, 74, 75, 76, 77, 78, 79, 80, 81, 92, 93, 98, 99, 112, 113, 128, 129, 134, 135, 148, 149, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 178, 179, 184, 185, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 214, 215, 220, 221];\n  }\n} catch (error) {} // Swallow - we only care if `supports-color` is available; it doesn\'t have to be.\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n *   $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\n\nexports.inspectOpts = Object.keys(({"APP_ENV":"webpack"})).filter(function (key) {\n  return /^debug_/i.test(key);\n}).reduce(function (obj, key) {\n  // Camel-case\n  var prop = key.substring(6).toLowerCase().replace(/_([a-z])/g, function (_, k) {\n    return k.toUpperCase();\n  }); // Coerce string value into JS value\n\n  var val = ({"APP_ENV":"webpack"})[key];\n\n  if (/^(yes|on|true|enabled)$/i.test(val)) {\n    val = true;\n  } else if (/^(no|off|false|disabled)$/i.test(val)) {\n    val = false;\n  } else if (val === \'null\') {\n    val = null;\n  } else {\n    val = Number(val);\n  }\n\n  obj[prop] = val;\n  return obj;\n}, {});\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n  return \'colors\' in exports.inspectOpts ? Boolean(exports.inspectOpts.colors) : tty.isatty(process.stderr.fd);\n}\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n  var name = this.namespace,\n      useColors = this.useColors;\n\n  if (useColors) {\n    var c = this.color;\n    var colorCode = "\\x1B[3" + (c < 8 ? c : \'8;5;\' + c);\n    var prefix = "  ".concat(colorCode, ";1m").concat(name, " \\x1B[0m");\n    args[0] = prefix + args[0].split(\'\\n\').join(\'\\n\' + prefix);\n    args.push(colorCode + \'m+\' + module.exports.humanize(this.diff) + "\\x1B[0m");\n  } else {\n    args[0] = getDate() + name + \' \' + args[0];\n  }\n}\n\nfunction getDate() {\n  if (exports.inspectOpts.hideDate) {\n    return \'\';\n  }\n\n  return new Date().toISOString() + \' \';\n}\n/**\n * Invokes `util.format()` with the specified arguments and writes to stderr.\n */\n\n\nfunction log() {\n  return process.stderr.write(util.format.apply(util, arguments) + \'\\n\');\n}\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n  if (namespaces) {\n    ({"APP_ENV":"webpack"}).DEBUG = namespaces;\n  } else {\n    // If you set a process.env field to null or undefined, it gets cast to the\n    // string \'null\' or \'undefined\'. Just delete instead.\n    delete ({"APP_ENV":"webpack"}).DEBUG;\n  }\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n  return ({"APP_ENV":"webpack"}).DEBUG;\n}\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\n\nfunction init(debug) {\n  debug.inspectOpts = {};\n  var keys = Object.keys(exports.inspectOpts);\n\n  for (var i = 0; i < keys.length; i++) {\n    debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n  }\n}\n\nmodule.exports = __webpack_require__(/*! ./common */ "./node_modules/koa-session-memory/node_modules/debug/src/common.js")(exports);\nvar formatters = module.exports.formatters;\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n  this.inspectOpts.colors = this.useColors;\n  return util.inspect(v, this.inspectOpts)\n    .split(\'\\n\')\n    .map(function (str) { return str.trim(); })\n    .join(\' \');\n};\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\n\nformatters.O = function (v) {\n  this.inspectOpts.colors = this.useColors;\n  return util.inspect(v, this.inspectOpts);\n};\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa-session-memory/node_modules/debug/src/node.js?')},"./node_modules/koa-session-socketio/index.js":
/*!****************************************************!*\
  !*** ./node_modules/koa-session-socketio/index.js ***!
  \****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const assert = __webpack_require__(/*! assert */ \"assert\")\nconst is = __webpack_require__(/*! is-type-of */ \"./node_modules/is-type-of/index.js\")\n\nconst AUTHENTICATION_ERROR = new Error('authentication error')\n\n/**\n * socket.io middleware to get session from cookie\n * @param  {string} name       key name, need to be the same\n * @param  {Object} [store={}] koa-session store\n * @param  {Object} [opts={}]  koa-session options\n * @return {Function}          middlware\n */\nmodule.exports = (name, store = {}, opts = {}) => {\n  assert(name && is.string(name), 'name is required')\n  assert(store, 'store is required')\n  assert(is.function(store.get), 'store.get must be function')\n  assert(is.function(store.set), 'store.set must be function')\n  assert(is.function(store.destroy), 'store.destroy must be function')\n\n  return async (socket, next) => {\n    // get header cookie from polling\n    const cookie = socket.handshake.headers.cookie\n    if (!cookie) {\n      return next(AUTHENTICATION_ERROR)\n    }\n\n    // get cookie value\n    const matches = cookie.match(getPattern(name))\n    if (!matches) {\n      return next(AUTHENTICATION_ERROR)\n    }\n\n    const key = matches[1]\n    if (!key) {\n      return next(AUTHENTICATION_ERROR)\n    }\n\n    socket.session = await store.get(key, opts.maxAge, { rolling: opts.rolling })\n    next()\n  }\n}\n\nfunction getPattern (name) {\n  return new RegExp(\n    '(?:^|;) *' +\n    name.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&') +\n    '=([^;]*)'\n  )\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa-session-socketio/index.js?")},"./node_modules/koa-session/index.js":
/*!*******************************************!*\
  !*** ./node_modules/koa-session/index.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst debug = __webpack_require__(/*! debug */ \"./node_modules/koa-session/node_modules/debug/src/index.js\")('koa-session');\nconst ContextSession = __webpack_require__(/*! ./lib/context */ \"./node_modules/koa-session/lib/context.js\");\nconst util = __webpack_require__(/*! ./lib/util */ \"./node_modules/koa-session/lib/util.js\");\nconst assert = __webpack_require__(/*! assert */ \"assert\");\nconst uuid = __webpack_require__(/*! uuid/v4 */ \"./node_modules/uuid/v4.js\");\nconst is = __webpack_require__(/*! is-type-of */ \"./node_modules/is-type-of/index.js\");\n\nconst CONTEXT_SESSION = Symbol('context#contextSession');\nconst _CONTEXT_SESSION = Symbol('context#_contextSession');\n\n/**\n * Initialize session middleware with `opts`:\n *\n * - `key` session cookie name [\"koa.sess\"]\n * - all other options are passed as cookie options\n *\n * @param {Object} [opts]\n * @param {Application} app, koa application instance\n * @api public\n */\n\nmodule.exports = function(opts, app) {\n  // session(app[, opts])\n  if (opts && typeof opts.use === 'function') {\n    [ app, opts ] = [ opts, app ];\n  }\n  // app required\n  if (!app || typeof app.use !== 'function') {\n    throw new TypeError('app instance required: `session(opts, app)`');\n  }\n\n  opts = formatOpts(opts);\n  extendContext(app.context, opts);\n\n  return async function session(ctx, next) {\n    const sess = ctx[CONTEXT_SESSION];\n    if (sess.store) await sess.initFromExternal();\n    try {\n      await next();\n    } catch (err) {\n      throw err;\n    } finally {\n      if (opts.autoCommit) {\n        await sess.commit();\n      }\n    }\n  };\n};\n\n/**\n * format and check session options\n * @param  {Object} opts session options\n * @return {Object} new session options\n *\n * @api private\n */\n\nfunction formatOpts(opts) {\n  opts = opts || {};\n  // key\n  opts.key = opts.key || 'koa.sess';\n\n  // back-compat maxage\n  if (!('maxAge' in opts)) opts.maxAge = opts.maxage;\n\n  // defaults\n  if (opts.overwrite == null) opts.overwrite = true;\n  if (opts.httpOnly == null) opts.httpOnly = true;\n  // delete null sameSite config\n  if (opts.sameSite == null) delete opts.sameSite;\n  if (opts.signed == null) opts.signed = true;\n  if (opts.autoCommit == null) opts.autoCommit = true;\n\n  debug('session options %j', opts);\n\n  // setup encoding/decoding\n  if (typeof opts.encode !== 'function') {\n    opts.encode = util.encode;\n  }\n  if (typeof opts.decode !== 'function') {\n    opts.decode = util.decode;\n  }\n\n  const store = opts.store;\n  if (store) {\n    assert(is.function(store.get), 'store.get must be function');\n    assert(is.function(store.set), 'store.set must be function');\n    assert(is.function(store.destroy), 'store.destroy must be function');\n  }\n\n  const externalKey = opts.externalKey;\n  if (externalKey) {\n    assert(is.function(externalKey.get), 'externalKey.get must be function');\n    assert(is.function(externalKey.set), 'externalKey.set must be function');\n  }\n\n  const ContextStore = opts.ContextStore;\n  if (ContextStore) {\n    assert(is.class(ContextStore), 'ContextStore must be a class');\n    assert(is.function(ContextStore.prototype.get), 'ContextStore.prototype.get must be function');\n    assert(is.function(ContextStore.prototype.set), 'ContextStore.prototype.set must be function');\n    assert(is.function(ContextStore.prototype.destroy), 'ContextStore.prototype.destroy must be function');\n  }\n\n  if (!opts.genid) {\n    if (opts.prefix) opts.genid = () => `${opts.prefix}${uuid()}`;\n    else opts.genid = uuid;\n  }\n\n  return opts;\n}\n\n/**\n * extend context prototype, add session properties\n *\n * @param  {Object} context koa's context prototype\n * @param  {Object} opts session options\n *\n * @api private\n */\n\nfunction extendContext(context, opts) {\n  if (context.hasOwnProperty(CONTEXT_SESSION)) {\n    return;\n  }\n  Object.defineProperties(context, {\n    [CONTEXT_SESSION]: {\n      get() {\n        if (this[_CONTEXT_SESSION]) return this[_CONTEXT_SESSION];\n        this[_CONTEXT_SESSION] = new ContextSession(this, opts);\n        return this[_CONTEXT_SESSION];\n      },\n    },\n    session: {\n      get() {\n        return this[CONTEXT_SESSION].get();\n      },\n      set(val) {\n        this[CONTEXT_SESSION].set(val);\n      },\n      configurable: true,\n    },\n    sessionOptions: {\n      get() {\n        return this[CONTEXT_SESSION].opts;\n      },\n    },\n  });\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa-session/index.js?")},"./node_modules/koa-session/lib/context.js":
/*!*************************************************!*\
  !*** ./node_modules/koa-session/lib/context.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst debug = __webpack_require__(/*! debug */ \"./node_modules/koa-session/node_modules/debug/src/index.js\")('koa-session:context');\nconst Session = __webpack_require__(/*! ./session */ \"./node_modules/koa-session/lib/session.js\");\nconst util = __webpack_require__(/*! ./util */ \"./node_modules/koa-session/lib/util.js\");\n\nconst COOKIE_EXP_DATE = new Date(util.CookieDateEpoch);\nconst ONE_DAY = 24 * 60 * 60 * 1000;\n\nclass ContextSession {\n  /**\n   * context session constructor\n   * @api public\n   */\n\n  constructor(ctx, opts) {\n    this.ctx = ctx;\n    this.app = ctx.app;\n    this.opts = Object.assign({}, opts);\n    this.store = this.opts.ContextStore ? new this.opts.ContextStore(ctx) : this.opts.store;\n  }\n\n  /**\n   * internal logic of `ctx.session`\n   * @return {Session} session object\n   *\n   * @api public\n   */\n\n  get() {\n    const session = this.session;\n    // already retrieved\n    if (session) return session;\n    // unset\n    if (session === false) return null;\n\n    // create an empty session or init from cookie\n    this.store ? this.create() : this.initFromCookie();\n    return this.session;\n  }\n\n  /**\n   * internal logic of `ctx.session=`\n   * @param {Object} val session object\n   *\n   * @api public\n   */\n\n  set(val) {\n    if (val === null) {\n      this.session = false;\n      return;\n    }\n    if (typeof val === 'object') {\n      // use the original `externalKey` if exists to avoid waste storage\n      this.create(val, this.externalKey);\n      return;\n    }\n    throw new Error('this.session can only be set as null or an object.');\n  }\n\n  /**\n   * init session from external store\n   * will be called in the front of session middleware\n   *\n   * @api public\n   */\n\n  async initFromExternal() {\n    debug('init from external');\n    const ctx = this.ctx;\n    const opts = this.opts;\n\n    let externalKey;\n    if (opts.externalKey) {\n      externalKey = opts.externalKey.get(ctx);\n      debug('get external key from custom %s', externalKey);\n    } else {\n      externalKey = ctx.cookies.get(opts.key, opts);\n      debug('get external key from cookie %s', externalKey);\n    }\n\n\n    if (!externalKey) {\n      // create a new `externalKey`\n      this.create();\n      return;\n    }\n\n    const json = await this.store.get(externalKey, opts.maxAge, { ctx, rolling: opts.rolling });\n    if (!this.valid(json, externalKey)) {\n      // create a new `externalKey`\n      this.create();\n      return;\n    }\n\n    // create with original `externalKey`\n    this.create(json, externalKey);\n    this.prevHash = util.hash(this.session.toJSON());\n  }\n\n  /**\n   * init session from cookie\n   * @api private\n   */\n\n  initFromCookie() {\n    debug('init from cookie');\n    const ctx = this.ctx;\n    const opts = this.opts;\n\n    const cookie = ctx.cookies.get(opts.key, opts);\n    if (!cookie) {\n      this.create();\n      return;\n    }\n\n    let json;\n    debug('parse %s', cookie);\n    try {\n      json = opts.decode(cookie);\n    } catch (err) {\n      // backwards compatibility:\n      // create a new session if parsing fails.\n      // new Buffer(string, 'base64') does not seem to crash\n      // when `string` is not base64-encoded.\n      // but `JSON.parse(string)` will crash.\n      debug('decode %j error: %s', cookie, err);\n      if (!(err instanceof SyntaxError)) {\n        // clean this cookie to ensure next request won't throw again\n        ctx.cookies.set(opts.key, '', opts);\n        // ctx.onerror will unset all headers, and set those specified in err\n        err.headers = {\n          'set-cookie': ctx.response.get('set-cookie'),\n        };\n        throw err;\n      }\n      this.create();\n      return;\n    }\n\n    debug('parsed %j', json);\n\n    if (!this.valid(json)) {\n      this.create();\n      return;\n    }\n\n    // support access `ctx.session` before session middleware\n    this.create(json);\n    this.prevHash = util.hash(this.session.toJSON());\n  }\n\n  /**\n   * verify session(expired or )\n   * @param  {Object} value session object\n   * @param  {Object} key session externalKey(optional)\n   * @return {Boolean} valid\n   * @api private\n   */\n\n  valid(value, key) {\n    const ctx = this.ctx;\n    if (!value) {\n      this.emit('missed', { key, value, ctx });\n      return false;\n    }\n\n    if (value._expire && value._expire < Date.now()) {\n      debug('expired session');\n      this.emit('expired', { key, value, ctx });\n      return false;\n    }\n\n    const valid = this.opts.valid;\n    if (typeof valid === 'function' && !valid(ctx, value)) {\n      // valid session value fail, ignore this session\n      debug('invalid session');\n      this.emit('invalid', { key, value, ctx });\n      return false;\n    }\n    return true;\n  }\n\n  /**\n   * @param {String} event event name\n   * @param {Object} data event data\n   * @api private\n   */\n  emit(event, data) {\n    setImmediate(() => {\n      this.app.emit(`session:${event}`, data);\n    });\n  }\n\n  /**\n   * create a new session and attach to ctx.sess\n   *\n   * @param {Object} [val] session data\n   * @param {String} [externalKey] session external key\n   * @api private\n   */\n\n  create(val, externalKey) {\n    debug('create session with val: %j externalKey: %s', val, externalKey);\n    if (this.store) this.externalKey = externalKey || this.opts.genid && this.opts.genid(this.ctx);\n    this.session = new Session(this, val, this.externalKey);\n  }\n\n  /**\n   * Commit the session changes or removal.\n   *\n   * @api public\n   */\n\n  async commit() {\n    const session = this.session;\n    const opts = this.opts;\n    const ctx = this.ctx;\n\n    // not accessed\n    if (undefined === session) return;\n\n    // removed\n    if (session === false) {\n      await this.remove();\n      return;\n    }\n\n    const reason = this._shouldSaveSession();\n    debug('should save session: %s', reason);\n    if (!reason) return;\n\n    if (typeof opts.beforeSave === 'function') {\n      debug('before save');\n      opts.beforeSave(ctx, session);\n    }\n    const changed = reason === 'changed';\n    await this.save(changed);\n  }\n\n  _shouldSaveSession() {\n    const prevHash = this.prevHash;\n    const session = this.session;\n\n    // force save session when `session._requireSave` set\n    if (session._requireSave) return 'force';\n\n    // do nothing if new and not populated\n    const json = session.toJSON();\n    if (!prevHash && !Object.keys(json).length) return '';\n\n    // save if session changed\n    const changed = prevHash !== util.hash(json);\n    if (changed) return 'changed';\n\n    // save if opts.rolling set\n    if (this.opts.rolling) return 'rolling';\n\n    // save if opts.renew and session will expired\n    if (this.opts.renew) {\n      const expire = session._expire;\n      const maxAge = session.maxAge;\n      // renew when session will expired in maxAge / 2\n      if (expire && maxAge && expire - Date.now() < maxAge / 2) return 'renew';\n    }\n\n    return '';\n  }\n\n  /**\n   * remove session\n   * @api private\n   */\n\n  async remove() {\n    // Override the default options so that we can properly expire the session cookies\n    const opts = Object.assign({}, this.opts, {\n      expires: COOKIE_EXP_DATE,\n      maxAge: false,\n    });\n\n    const ctx = this.ctx;\n    const key = opts.key;\n    const externalKey = this.externalKey;\n\n    if (externalKey) await this.store.destroy(externalKey, { ctx });\n    ctx.cookies.set(key, '', opts);\n  }\n\n  /**\n   * save session\n   * @api private\n   */\n\n  async save(changed) {\n    const opts = this.opts;\n    const key = opts.key;\n    const externalKey = this.externalKey;\n    let json = this.session.toJSON();\n    // set expire for check\n    let maxAge = opts.maxAge ? opts.maxAge : ONE_DAY;\n    if (maxAge === 'session') {\n      // do not set _expire in json if maxAge is set to 'session'\n      // also delete maxAge from options\n      opts.maxAge = undefined;\n      json._session = true;\n    } else {\n      // set expire for check\n      json._expire = maxAge + Date.now();\n      json._maxAge = maxAge;\n    }\n\n    // save to external store\n    if (externalKey) {\n      debug('save %j to external key %s', json, externalKey);\n      if (typeof maxAge === 'number') {\n        // ensure store expired after cookie\n        maxAge += 10000;\n      }\n      await this.store.set(externalKey, json, maxAge, {\n        changed,\n        ctx: this.ctx,\n        rolling: opts.rolling,\n      });\n      if (opts.externalKey) {\n        opts.externalKey.set(this.ctx, externalKey);\n      } else {\n        this.ctx.cookies.set(key, externalKey, opts);\n      }\n      return;\n    }\n\n    // save to cookie\n    debug('save %j to cookie', json);\n    json = opts.encode(json);\n    debug('save %s', json);\n\n    this.ctx.cookies.set(key, json, opts);\n  }\n}\n\nmodule.exports = ContextSession;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa-session/lib/context.js?")},"./node_modules/koa-session/lib/session.js":
/*!*************************************************!*\
  !*** ./node_modules/koa-session/lib/session.js ***!
  \*************************************************/module=>{"use strict";eval("\n\n/**\n * Session model.\n */\n\nconst inspect = Symbol.for('nodejs.util.inspect.custom');\n\nclass Session {\n  /**\n   * Session constructor\n   * @param {Context} ctx\n   * @param {Object} obj\n   * @api private\n   */\n\n  constructor(sessionContext, obj, externalKey) {\n    this._sessCtx = sessionContext;\n    this._ctx = sessionContext.ctx;\n    this._externalKey = externalKey;\n    if (!obj) {\n      this.isNew = true;\n    } else {\n      for (const k in obj) {\n        // restore maxAge from store\n        if (k === '_maxAge') this._ctx.sessionOptions.maxAge = obj._maxAge;\n        else if (k === '_session') this._ctx.sessionOptions.maxAge = 'session';\n        else this[k] = obj[k];\n      }\n    }\n  }\n\n  /**\n   * JSON representation of the session.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  toJSON() {\n    const obj = {};\n\n    Object.keys(this).forEach(key => {\n      if (key === 'isNew') return;\n      if (key[0] === '_') return;\n      obj[key] = this[key];\n    });\n\n    return obj;\n  }\n\n  /**\n   *\n   * alias to `toJSON`\n   * @api public\n   */\n\n  [inspect]() {\n    return this.toJSON();\n  }\n\n  /**\n   * Return how many values there are in the session object.\n   * Used to see if it's \"populated\".\n   *\n   * @return {Number}\n   * @api public\n   */\n\n  get length() {\n    return Object.keys(this.toJSON()).length;\n  }\n\n  /**\n   * populated flag, which is just a boolean alias of .length.\n   *\n   * @return {Boolean}\n   * @api public\n   */\n\n  get populated() {\n    return !!this.length;\n  }\n\n  /**\n   * get session maxAge\n   *\n   * @return {Number}\n   * @api public\n   */\n\n  get maxAge() {\n    return this._ctx.sessionOptions.maxAge;\n  }\n\n  /**\n   * set session maxAge\n   *\n   * @param {Number}\n   * @api public\n   */\n\n  set maxAge(val) {\n    this._ctx.sessionOptions.maxAge = val;\n    // maxAge changed, must save to cookie and store\n    this._requireSave = true;\n  }\n\n  /**\n   * get session external key\n   * only exist if opts.store present\n   */\n  get externalKey() {\n    return this._externalKey;\n  }\n\n  /**\n   * save this session no matter whether it is populated\n   *\n   * @api public\n   */\n\n  save() {\n    this._requireSave = true;\n  }\n\n  /**\n   * commit this session's headers if autoCommit is set to false\n   *\n   * @api public\n   */\n\n  async manuallyCommit() {\n    await this._sessCtx.commit();\n  }\n\n}\n\nmodule.exports = Session;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa-session/lib/session.js?")},"./node_modules/koa-session/lib/util.js":
/*!**********************************************!*\
  !*** ./node_modules/koa-session/lib/util.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst crc = (__webpack_require__(/*! crc */ \"./node_modules/crc/lib/index.js\").crc32);\n\nmodule.exports = {\n\n  /**\n   * Decode the base64 cookie value to an object.\n   *\n   * @param {String} string\n   * @return {Object}\n   * @api private\n   */\n\n  decode(string) {\n    const body = Buffer.from(string, 'base64').toString('utf8');\n    const json = JSON.parse(body);\n    return json;\n  },\n\n  /**\n   * Encode an object into a base64-encoded JSON string.\n   *\n   * @param {Object} body\n   * @return {String}\n   * @api private\n   */\n\n  encode(body) {\n    body = JSON.stringify(body);\n    return Buffer.from(body).toString('base64');\n  },\n\n  hash(sess) {\n    return crc(JSON.stringify(sess));\n  },\n\n  CookieDateEpoch: 'Thu, 01 Jan 1970 00:00:00 GMT',\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa-session/lib/util.js?")},"./node_modules/koa-session/node_modules/debug/src/browser.js":
/*!********************************************************************!*\
  !*** ./node_modules/koa-session/node_modules/debug/src/browser.js ***!
  \********************************************************************/(module,exports,__webpack_require__)=>{"use strict";eval("\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\n/**\n * Colors.\n */\n\nexports.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'];\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n// eslint-disable-next-line complexity\n\nfunction useColors() {\n  // NB: In an Electron preload script, document will be defined but not fully\n  // initialized. Since we know we're in Chrome, we'll just detect this case\n  // explicitly\n  if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n    return true;\n  } // Internet Explorer and Edge do not support colors.\n\n\n  if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n    return false;\n  } // Is webkit? http://stackoverflow.com/a/16459606/376773\n  // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\n\n  return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773\n  typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?\n  // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n  typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker\n  typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/);\n}\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n  args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);\n\n  if (!this.useColors) {\n    return;\n  }\n\n  var c = 'color: ' + this.color;\n  args.splice(1, 0, c, 'color: inherit'); // The final \"%c\" is somewhat tricky, because there could be other\n  // arguments passed either before or after the %c, so we need to\n  // figure out the correct index to insert the CSS into\n\n  var index = 0;\n  var lastC = 0;\n  args[0].replace(/%[a-zA-Z%]/g, function (match) {\n    if (match === '%%') {\n      return;\n    }\n\n    index++;\n\n    if (match === '%c') {\n      // We only are interested in the *last* %c\n      // (the user may have provided their own)\n      lastC = index;\n    }\n  });\n  args.splice(lastC, 0, c);\n}\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\n\nfunction log() {\n  var _console;\n\n  // This hackery is required for IE8/9, where\n  // the `console.log` function doesn't have 'apply'\n  return (typeof console === \"undefined\" ? \"undefined\" : _typeof(console)) === 'object' && console.log && (_console = console).log.apply(_console, arguments);\n}\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n  try {\n    if (namespaces) {\n      exports.storage.setItem('debug', namespaces);\n    } else {\n      exports.storage.removeItem('debug');\n    }\n  } catch (error) {// Swallow\n    // XXX (@Qix-) should we be logging these?\n  }\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n  var r;\n\n  try {\n    r = exports.storage.getItem('debug');\n  } catch (error) {} // Swallow\n  // XXX (@Qix-) should we be logging these?\n  // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\n\n  if (!r && typeof process !== 'undefined' && 'env' in process) {\n    r = ({\"APP_ENV\":\"webpack\"}).DEBUG;\n  }\n\n  return r;\n}\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\n\nfunction localstorage() {\n  try {\n    // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n    // The Browser also has localStorage in the global context.\n    return localStorage;\n  } catch (error) {// Swallow\n    // XXX (@Qix-) should we be logging these?\n  }\n}\n\nmodule.exports = __webpack_require__(/*! ./common */ \"./node_modules/koa-session/node_modules/debug/src/common.js\")(exports);\nvar formatters = module.exports.formatters;\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n  try {\n    return JSON.stringify(v);\n  } catch (error) {\n    return '[UnexpectedJSONParseError]: ' + error.message;\n  }\n};\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa-session/node_modules/debug/src/browser.js?")},"./node_modules/koa-session/node_modules/debug/src/common.js":
/*!*******************************************************************!*\
  !*** ./node_modules/koa-session/node_modules/debug/src/common.js ***!
  \*******************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\nfunction setup(env) {\n  createDebug.debug = createDebug;\n  createDebug.default = createDebug;\n  createDebug.coerce = coerce;\n  createDebug.disable = disable;\n  createDebug.enable = enable;\n  createDebug.enabled = enabled;\n  createDebug.humanize = __webpack_require__(/*! ms */ \"./node_modules/ms/index.js\");\n  Object.keys(env).forEach(function (key) {\n    createDebug[key] = env[key];\n  });\n  /**\n  * Active `debug` instances.\n  */\n\n  createDebug.instances = [];\n  /**\n  * The currently active debug mode names, and names to skip.\n  */\n\n  createDebug.names = [];\n  createDebug.skips = [];\n  /**\n  * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n  *\n  * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n  */\n\n  createDebug.formatters = {};\n  /**\n  * Selects a color for a debug namespace\n  * @param {String} namespace The namespace string for the for the debug instance to be colored\n  * @return {Number|String} An ANSI color code for the given namespace\n  * @api private\n  */\n\n  function selectColor(namespace) {\n    var hash = 0;\n\n    for (var i = 0; i < namespace.length; i++) {\n      hash = (hash << 5) - hash + namespace.charCodeAt(i);\n      hash |= 0; // Convert to 32bit integer\n    }\n\n    return createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n  }\n\n  createDebug.selectColor = selectColor;\n  /**\n  * Create a debugger with the given `namespace`.\n  *\n  * @param {String} namespace\n  * @return {Function}\n  * @api public\n  */\n\n  function createDebug(namespace) {\n    var prevTime;\n\n    function debug() {\n      // Disabled?\n      if (!debug.enabled) {\n        return;\n      }\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      var self = debug; // Set `diff` timestamp\n\n      var curr = Number(new Date());\n      var ms = curr - (prevTime || curr);\n      self.diff = ms;\n      self.prev = prevTime;\n      self.curr = curr;\n      prevTime = curr;\n      args[0] = createDebug.coerce(args[0]);\n\n      if (typeof args[0] !== 'string') {\n        // Anything else let's inspect with %O\n        args.unshift('%O');\n      } // Apply any `formatters` transformations\n\n\n      var index = 0;\n      args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {\n        // If we encounter an escaped % then don't increase the array index\n        if (match === '%%') {\n          return match;\n        }\n\n        index++;\n        var formatter = createDebug.formatters[format];\n\n        if (typeof formatter === 'function') {\n          var val = args[index];\n          match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format`\n\n          args.splice(index, 1);\n          index--;\n        }\n\n        return match;\n      }); // Apply env-specific formatting (colors, etc.)\n\n      createDebug.formatArgs.call(self, args);\n      var logFn = self.log || createDebug.log;\n      logFn.apply(self, args);\n    }\n\n    debug.namespace = namespace;\n    debug.enabled = createDebug.enabled(namespace);\n    debug.useColors = createDebug.useColors();\n    debug.color = selectColor(namespace);\n    debug.destroy = destroy;\n    debug.extend = extend; // Debug.formatArgs = formatArgs;\n    // debug.rawLog = rawLog;\n    // env-specific initialization logic for debug instances\n\n    if (typeof createDebug.init === 'function') {\n      createDebug.init(debug);\n    }\n\n    createDebug.instances.push(debug);\n    return debug;\n  }\n\n  function destroy() {\n    var index = createDebug.instances.indexOf(this);\n\n    if (index !== -1) {\n      createDebug.instances.splice(index, 1);\n      return true;\n    }\n\n    return false;\n  }\n\n  function extend(namespace, delimiter) {\n    return createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n  }\n  /**\n  * Enables a debug mode by namespaces. This can include modes\n  * separated by a colon and wildcards.\n  *\n  * @param {String} namespaces\n  * @api public\n  */\n\n\n  function enable(namespaces) {\n    createDebug.save(namespaces);\n    createDebug.names = [];\n    createDebug.skips = [];\n    var i;\n    var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n    var len = split.length;\n\n    for (i = 0; i < len; i++) {\n      if (!split[i]) {\n        // ignore empty strings\n        continue;\n      }\n\n      namespaces = split[i].replace(/\\*/g, '.*?');\n\n      if (namespaces[0] === '-') {\n        createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n      } else {\n        createDebug.names.push(new RegExp('^' + namespaces + '$'));\n      }\n    }\n\n    for (i = 0; i < createDebug.instances.length; i++) {\n      var instance = createDebug.instances[i];\n      instance.enabled = createDebug.enabled(instance.namespace);\n    }\n  }\n  /**\n  * Disable debug output.\n  *\n  * @api public\n  */\n\n\n  function disable() {\n    createDebug.enable('');\n  }\n  /**\n  * Returns true if the given mode name is enabled, false otherwise.\n  *\n  * @param {String} name\n  * @return {Boolean}\n  * @api public\n  */\n\n\n  function enabled(name) {\n    if (name[name.length - 1] === '*') {\n      return true;\n    }\n\n    var i;\n    var len;\n\n    for (i = 0, len = createDebug.skips.length; i < len; i++) {\n      if (createDebug.skips[i].test(name)) {\n        return false;\n      }\n    }\n\n    for (i = 0, len = createDebug.names.length; i < len; i++) {\n      if (createDebug.names[i].test(name)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n  /**\n  * Coerce `val`.\n  *\n  * @param {Mixed} val\n  * @return {Mixed}\n  * @api private\n  */\n\n\n  function coerce(val) {\n    if (val instanceof Error) {\n      return val.stack || val.message;\n    }\n\n    return val;\n  }\n\n  createDebug.enable(createDebug.load());\n  return createDebug;\n}\n\nmodule.exports = setup;\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa-session/node_modules/debug/src/common.js?")},"./node_modules/koa-session/node_modules/debug/src/index.js":
/*!******************************************************************!*\
  !*** ./node_modules/koa-session/node_modules/debug/src/index.js ***!
  \******************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n  module.exports = __webpack_require__(/*! ./browser.js */ \"./node_modules/koa-session/node_modules/debug/src/browser.js\");\n} else {\n  module.exports = __webpack_require__(/*! ./node.js */ \"./node_modules/koa-session/node_modules/debug/src/node.js\");\n}\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa-session/node_modules/debug/src/index.js?")},"./node_modules/koa-session/node_modules/debug/src/node.js":
/*!*****************************************************************!*\
  !*** ./node_modules/koa-session/node_modules/debug/src/node.js ***!
  \*****************************************************************/(module,exports,__webpack_require__)=>{"use strict";eval('\n\n/**\n * Module dependencies.\n */\nvar tty = __webpack_require__(/*! tty */ "tty");\n\nvar util = __webpack_require__(/*! util */ "util");\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n  // Optional dependency (as in, doesn\'t need to be installed, NOT like optionalDependencies in package.json)\n  // eslint-disable-next-line import/no-extraneous-dependencies\n  var supportsColor = __webpack_require__(/*! supports-color */ "./node_modules/supports-color/index.js");\n\n  if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n    exports.colors = [20, 21, 26, 27, 32, 33, 38, 39, 40, 41, 42, 43, 44, 45, 56, 57, 62, 63, 68, 69, 74, 75, 76, 77, 78, 79, 80, 81, 92, 93, 98, 99, 112, 113, 128, 129, 134, 135, 148, 149, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 178, 179, 184, 185, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 214, 215, 220, 221];\n  }\n} catch (error) {} // Swallow - we only care if `supports-color` is available; it doesn\'t have to be.\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n *   $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\n\nexports.inspectOpts = Object.keys(({"APP_ENV":"webpack"})).filter(function (key) {\n  return /^debug_/i.test(key);\n}).reduce(function (obj, key) {\n  // Camel-case\n  var prop = key.substring(6).toLowerCase().replace(/_([a-z])/g, function (_, k) {\n    return k.toUpperCase();\n  }); // Coerce string value into JS value\n\n  var val = ({"APP_ENV":"webpack"})[key];\n\n  if (/^(yes|on|true|enabled)$/i.test(val)) {\n    val = true;\n  } else if (/^(no|off|false|disabled)$/i.test(val)) {\n    val = false;\n  } else if (val === \'null\') {\n    val = null;\n  } else {\n    val = Number(val);\n  }\n\n  obj[prop] = val;\n  return obj;\n}, {});\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n  return \'colors\' in exports.inspectOpts ? Boolean(exports.inspectOpts.colors) : tty.isatty(process.stderr.fd);\n}\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n  var name = this.namespace,\n      useColors = this.useColors;\n\n  if (useColors) {\n    var c = this.color;\n    var colorCode = "\\x1B[3" + (c < 8 ? c : \'8;5;\' + c);\n    var prefix = "  ".concat(colorCode, ";1m").concat(name, " \\x1B[0m");\n    args[0] = prefix + args[0].split(\'\\n\').join(\'\\n\' + prefix);\n    args.push(colorCode + \'m+\' + module.exports.humanize(this.diff) + "\\x1B[0m");\n  } else {\n    args[0] = getDate() + name + \' \' + args[0];\n  }\n}\n\nfunction getDate() {\n  if (exports.inspectOpts.hideDate) {\n    return \'\';\n  }\n\n  return new Date().toISOString() + \' \';\n}\n/**\n * Invokes `util.format()` with the specified arguments and writes to stderr.\n */\n\n\nfunction log() {\n  return process.stderr.write(util.format.apply(util, arguments) + \'\\n\');\n}\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n  if (namespaces) {\n    ({"APP_ENV":"webpack"}).DEBUG = namespaces;\n  } else {\n    // If you set a process.env field to null or undefined, it gets cast to the\n    // string \'null\' or \'undefined\'. Just delete instead.\n    delete ({"APP_ENV":"webpack"}).DEBUG;\n  }\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n  return ({"APP_ENV":"webpack"}).DEBUG;\n}\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\n\nfunction init(debug) {\n  debug.inspectOpts = {};\n  var keys = Object.keys(exports.inspectOpts);\n\n  for (var i = 0; i < keys.length; i++) {\n    debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n  }\n}\n\nmodule.exports = __webpack_require__(/*! ./common */ "./node_modules/koa-session/node_modules/debug/src/common.js")(exports);\nvar formatters = module.exports.formatters;\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n  this.inspectOpts.colors = this.useColors;\n  return util.inspect(v, this.inspectOpts)\n    .split(\'\\n\')\n    .map(function (str) { return str.trim(); })\n    .join(\' \');\n};\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\n\nformatters.O = function (v) {\n  this.inspectOpts.colors = this.useColors;\n  return util.inspect(v, this.inspectOpts);\n};\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa-session/node_modules/debug/src/node.js?')},"./node_modules/koa-static/index.js":
/*!******************************************!*\
  !*** ./node_modules/koa-static/index.js ***!
  \******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n\n/**\n * Module dependencies.\n */\n\nconst debug = __webpack_require__(/*! debug */ \"./node_modules/koa-static/node_modules/debug/src/index.js\")('koa-static')\nconst { resolve } = __webpack_require__(/*! path */ \"path\")\nconst assert = __webpack_require__(/*! assert */ \"assert\")\nconst send = __webpack_require__(/*! koa-send */ \"./node_modules/koa-send/index.js\")\n\n/**\n * Expose `serve()`.\n */\n\nmodule.exports = serve\n\n/**\n * Serve static files from `root`.\n *\n * @param {String} root\n * @param {Object} [opts]\n * @return {Function}\n * @api public\n */\n\nfunction serve (root, opts) {\n  opts = Object.assign({}, opts)\n\n  assert(root, 'root directory is required to serve files')\n\n  // options\n  debug('static \"%s\" %j', root, opts)\n  opts.root = resolve(root)\n  if (opts.index !== false) opts.index = opts.index || 'index.html'\n\n  if (!opts.defer) {\n    return async function serve (ctx, next) {\n      let done = false\n\n      if (ctx.method === 'HEAD' || ctx.method === 'GET') {\n        try {\n          done = await send(ctx, ctx.path, opts)\n        } catch (err) {\n          if (err.status !== 404) {\n            throw err\n          }\n        }\n      }\n\n      if (!done) {\n        await next()\n      }\n    }\n  }\n\n  return async function serve (ctx, next) {\n    await next()\n\n    if (ctx.method !== 'HEAD' && ctx.method !== 'GET') return\n    // response is already handled\n    if (ctx.body != null || ctx.status !== 404) return // eslint-disable-line\n\n    try {\n      await send(ctx, ctx.path, opts)\n    } catch (err) {\n      if (err.status !== 404) {\n        throw err\n      }\n    }\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa-static/index.js?")},"./node_modules/koa-static/node_modules/debug/src/browser.js":
/*!*******************************************************************!*\
  !*** ./node_modules/koa-static/node_modules/debug/src/browser.js ***!
  \*******************************************************************/(module,exports,__webpack_require__)=>{"use strict";eval("\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\n/**\n * Colors.\n */\n\nexports.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'];\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n// eslint-disable-next-line complexity\n\nfunction useColors() {\n  // NB: In an Electron preload script, document will be defined but not fully\n  // initialized. Since we know we're in Chrome, we'll just detect this case\n  // explicitly\n  if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n    return true;\n  } // Internet Explorer and Edge do not support colors.\n\n\n  if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n    return false;\n  } // Is webkit? http://stackoverflow.com/a/16459606/376773\n  // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\n\n  return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773\n  typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?\n  // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n  typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker\n  typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/);\n}\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n  args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);\n\n  if (!this.useColors) {\n    return;\n  }\n\n  var c = 'color: ' + this.color;\n  args.splice(1, 0, c, 'color: inherit'); // The final \"%c\" is somewhat tricky, because there could be other\n  // arguments passed either before or after the %c, so we need to\n  // figure out the correct index to insert the CSS into\n\n  var index = 0;\n  var lastC = 0;\n  args[0].replace(/%[a-zA-Z%]/g, function (match) {\n    if (match === '%%') {\n      return;\n    }\n\n    index++;\n\n    if (match === '%c') {\n      // We only are interested in the *last* %c\n      // (the user may have provided their own)\n      lastC = index;\n    }\n  });\n  args.splice(lastC, 0, c);\n}\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\n\nfunction log() {\n  var _console;\n\n  // This hackery is required for IE8/9, where\n  // the `console.log` function doesn't have 'apply'\n  return (typeof console === \"undefined\" ? \"undefined\" : _typeof(console)) === 'object' && console.log && (_console = console).log.apply(_console, arguments);\n}\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n  try {\n    if (namespaces) {\n      exports.storage.setItem('debug', namespaces);\n    } else {\n      exports.storage.removeItem('debug');\n    }\n  } catch (error) {// Swallow\n    // XXX (@Qix-) should we be logging these?\n  }\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n  var r;\n\n  try {\n    r = exports.storage.getItem('debug');\n  } catch (error) {} // Swallow\n  // XXX (@Qix-) should we be logging these?\n  // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\n\n  if (!r && typeof process !== 'undefined' && 'env' in process) {\n    r = ({\"APP_ENV\":\"webpack\"}).DEBUG;\n  }\n\n  return r;\n}\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\n\nfunction localstorage() {\n  try {\n    // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n    // The Browser also has localStorage in the global context.\n    return localStorage;\n  } catch (error) {// Swallow\n    // XXX (@Qix-) should we be logging these?\n  }\n}\n\nmodule.exports = __webpack_require__(/*! ./common */ \"./node_modules/koa-static/node_modules/debug/src/common.js\")(exports);\nvar formatters = module.exports.formatters;\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n  try {\n    return JSON.stringify(v);\n  } catch (error) {\n    return '[UnexpectedJSONParseError]: ' + error.message;\n  }\n};\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa-static/node_modules/debug/src/browser.js?")},"./node_modules/koa-static/node_modules/debug/src/common.js":
/*!******************************************************************!*\
  !*** ./node_modules/koa-static/node_modules/debug/src/common.js ***!
  \******************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\nfunction setup(env) {\n  createDebug.debug = createDebug;\n  createDebug.default = createDebug;\n  createDebug.coerce = coerce;\n  createDebug.disable = disable;\n  createDebug.enable = enable;\n  createDebug.enabled = enabled;\n  createDebug.humanize = __webpack_require__(/*! ms */ \"./node_modules/ms/index.js\");\n  Object.keys(env).forEach(function (key) {\n    createDebug[key] = env[key];\n  });\n  /**\n  * Active `debug` instances.\n  */\n\n  createDebug.instances = [];\n  /**\n  * The currently active debug mode names, and names to skip.\n  */\n\n  createDebug.names = [];\n  createDebug.skips = [];\n  /**\n  * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n  *\n  * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n  */\n\n  createDebug.formatters = {};\n  /**\n  * Selects a color for a debug namespace\n  * @param {String} namespace The namespace string for the for the debug instance to be colored\n  * @return {Number|String} An ANSI color code for the given namespace\n  * @api private\n  */\n\n  function selectColor(namespace) {\n    var hash = 0;\n\n    for (var i = 0; i < namespace.length; i++) {\n      hash = (hash << 5) - hash + namespace.charCodeAt(i);\n      hash |= 0; // Convert to 32bit integer\n    }\n\n    return createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n  }\n\n  createDebug.selectColor = selectColor;\n  /**\n  * Create a debugger with the given `namespace`.\n  *\n  * @param {String} namespace\n  * @return {Function}\n  * @api public\n  */\n\n  function createDebug(namespace) {\n    var prevTime;\n\n    function debug() {\n      // Disabled?\n      if (!debug.enabled) {\n        return;\n      }\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      var self = debug; // Set `diff` timestamp\n\n      var curr = Number(new Date());\n      var ms = curr - (prevTime || curr);\n      self.diff = ms;\n      self.prev = prevTime;\n      self.curr = curr;\n      prevTime = curr;\n      args[0] = createDebug.coerce(args[0]);\n\n      if (typeof args[0] !== 'string') {\n        // Anything else let's inspect with %O\n        args.unshift('%O');\n      } // Apply any `formatters` transformations\n\n\n      var index = 0;\n      args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {\n        // If we encounter an escaped % then don't increase the array index\n        if (match === '%%') {\n          return match;\n        }\n\n        index++;\n        var formatter = createDebug.formatters[format];\n\n        if (typeof formatter === 'function') {\n          var val = args[index];\n          match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format`\n\n          args.splice(index, 1);\n          index--;\n        }\n\n        return match;\n      }); // Apply env-specific formatting (colors, etc.)\n\n      createDebug.formatArgs.call(self, args);\n      var logFn = self.log || createDebug.log;\n      logFn.apply(self, args);\n    }\n\n    debug.namespace = namespace;\n    debug.enabled = createDebug.enabled(namespace);\n    debug.useColors = createDebug.useColors();\n    debug.color = selectColor(namespace);\n    debug.destroy = destroy;\n    debug.extend = extend; // Debug.formatArgs = formatArgs;\n    // debug.rawLog = rawLog;\n    // env-specific initialization logic for debug instances\n\n    if (typeof createDebug.init === 'function') {\n      createDebug.init(debug);\n    }\n\n    createDebug.instances.push(debug);\n    return debug;\n  }\n\n  function destroy() {\n    var index = createDebug.instances.indexOf(this);\n\n    if (index !== -1) {\n      createDebug.instances.splice(index, 1);\n      return true;\n    }\n\n    return false;\n  }\n\n  function extend(namespace, delimiter) {\n    return createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n  }\n  /**\n  * Enables a debug mode by namespaces. This can include modes\n  * separated by a colon and wildcards.\n  *\n  * @param {String} namespaces\n  * @api public\n  */\n\n\n  function enable(namespaces) {\n    createDebug.save(namespaces);\n    createDebug.names = [];\n    createDebug.skips = [];\n    var i;\n    var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n    var len = split.length;\n\n    for (i = 0; i < len; i++) {\n      if (!split[i]) {\n        // ignore empty strings\n        continue;\n      }\n\n      namespaces = split[i].replace(/\\*/g, '.*?');\n\n      if (namespaces[0] === '-') {\n        createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n      } else {\n        createDebug.names.push(new RegExp('^' + namespaces + '$'));\n      }\n    }\n\n    for (i = 0; i < createDebug.instances.length; i++) {\n      var instance = createDebug.instances[i];\n      instance.enabled = createDebug.enabled(instance.namespace);\n    }\n  }\n  /**\n  * Disable debug output.\n  *\n  * @api public\n  */\n\n\n  function disable() {\n    createDebug.enable('');\n  }\n  /**\n  * Returns true if the given mode name is enabled, false otherwise.\n  *\n  * @param {String} name\n  * @return {Boolean}\n  * @api public\n  */\n\n\n  function enabled(name) {\n    if (name[name.length - 1] === '*') {\n      return true;\n    }\n\n    var i;\n    var len;\n\n    for (i = 0, len = createDebug.skips.length; i < len; i++) {\n      if (createDebug.skips[i].test(name)) {\n        return false;\n      }\n    }\n\n    for (i = 0, len = createDebug.names.length; i < len; i++) {\n      if (createDebug.names[i].test(name)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n  /**\n  * Coerce `val`.\n  *\n  * @param {Mixed} val\n  * @return {Mixed}\n  * @api private\n  */\n\n\n  function coerce(val) {\n    if (val instanceof Error) {\n      return val.stack || val.message;\n    }\n\n    return val;\n  }\n\n  createDebug.enable(createDebug.load());\n  return createDebug;\n}\n\nmodule.exports = setup;\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa-static/node_modules/debug/src/common.js?")},"./node_modules/koa-static/node_modules/debug/src/index.js":
/*!*****************************************************************!*\
  !*** ./node_modules/koa-static/node_modules/debug/src/index.js ***!
  \*****************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n  module.exports = __webpack_require__(/*! ./browser.js */ \"./node_modules/koa-static/node_modules/debug/src/browser.js\");\n} else {\n  module.exports = __webpack_require__(/*! ./node.js */ \"./node_modules/koa-static/node_modules/debug/src/node.js\");\n}\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa-static/node_modules/debug/src/index.js?")},"./node_modules/koa-static/node_modules/debug/src/node.js":
/*!****************************************************************!*\
  !*** ./node_modules/koa-static/node_modules/debug/src/node.js ***!
  \****************************************************************/(module,exports,__webpack_require__)=>{"use strict";eval('\n\n/**\n * Module dependencies.\n */\nvar tty = __webpack_require__(/*! tty */ "tty");\n\nvar util = __webpack_require__(/*! util */ "util");\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n  // Optional dependency (as in, doesn\'t need to be installed, NOT like optionalDependencies in package.json)\n  // eslint-disable-next-line import/no-extraneous-dependencies\n  var supportsColor = __webpack_require__(/*! supports-color */ "./node_modules/supports-color/index.js");\n\n  if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n    exports.colors = [20, 21, 26, 27, 32, 33, 38, 39, 40, 41, 42, 43, 44, 45, 56, 57, 62, 63, 68, 69, 74, 75, 76, 77, 78, 79, 80, 81, 92, 93, 98, 99, 112, 113, 128, 129, 134, 135, 148, 149, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 178, 179, 184, 185, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 214, 215, 220, 221];\n  }\n} catch (error) {} // Swallow - we only care if `supports-color` is available; it doesn\'t have to be.\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n *   $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\n\nexports.inspectOpts = Object.keys(({"APP_ENV":"webpack"})).filter(function (key) {\n  return /^debug_/i.test(key);\n}).reduce(function (obj, key) {\n  // Camel-case\n  var prop = key.substring(6).toLowerCase().replace(/_([a-z])/g, function (_, k) {\n    return k.toUpperCase();\n  }); // Coerce string value into JS value\n\n  var val = ({"APP_ENV":"webpack"})[key];\n\n  if (/^(yes|on|true|enabled)$/i.test(val)) {\n    val = true;\n  } else if (/^(no|off|false|disabled)$/i.test(val)) {\n    val = false;\n  } else if (val === \'null\') {\n    val = null;\n  } else {\n    val = Number(val);\n  }\n\n  obj[prop] = val;\n  return obj;\n}, {});\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n  return \'colors\' in exports.inspectOpts ? Boolean(exports.inspectOpts.colors) : tty.isatty(process.stderr.fd);\n}\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n  var name = this.namespace,\n      useColors = this.useColors;\n\n  if (useColors) {\n    var c = this.color;\n    var colorCode = "\\x1B[3" + (c < 8 ? c : \'8;5;\' + c);\n    var prefix = "  ".concat(colorCode, ";1m").concat(name, " \\x1B[0m");\n    args[0] = prefix + args[0].split(\'\\n\').join(\'\\n\' + prefix);\n    args.push(colorCode + \'m+\' + module.exports.humanize(this.diff) + "\\x1B[0m");\n  } else {\n    args[0] = getDate() + name + \' \' + args[0];\n  }\n}\n\nfunction getDate() {\n  if (exports.inspectOpts.hideDate) {\n    return \'\';\n  }\n\n  return new Date().toISOString() + \' \';\n}\n/**\n * Invokes `util.format()` with the specified arguments and writes to stderr.\n */\n\n\nfunction log() {\n  return process.stderr.write(util.format.apply(util, arguments) + \'\\n\');\n}\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n  if (namespaces) {\n    ({"APP_ENV":"webpack"}).DEBUG = namespaces;\n  } else {\n    // If you set a process.env field to null or undefined, it gets cast to the\n    // string \'null\' or \'undefined\'. Just delete instead.\n    delete ({"APP_ENV":"webpack"}).DEBUG;\n  }\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n  return ({"APP_ENV":"webpack"}).DEBUG;\n}\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\n\nfunction init(debug) {\n  debug.inspectOpts = {};\n  var keys = Object.keys(exports.inspectOpts);\n\n  for (var i = 0; i < keys.length; i++) {\n    debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n  }\n}\n\nmodule.exports = __webpack_require__(/*! ./common */ "./node_modules/koa-static/node_modules/debug/src/common.js")(exports);\nvar formatters = module.exports.formatters;\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n  this.inspectOpts.colors = this.useColors;\n  return util.inspect(v, this.inspectOpts)\n    .split(\'\\n\')\n    .map(function (str) { return str.trim(); })\n    .join(\' \');\n};\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\n\nformatters.O = function (v) {\n  this.inspectOpts.colors = this.useColors;\n  return util.inspect(v, this.inspectOpts);\n};\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa-static/node_modules/debug/src/node.js?')},"./node_modules/koa/lib/application.js":
/*!*********************************************!*\
  !*** ./node_modules/koa/lib/application.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n\n/**\n * Module dependencies.\n */\n\nconst isGeneratorFunction = __webpack_require__(/*! is-generator-function */ \"./node_modules/is-generator-function/index.js\");\nconst debug = __webpack_require__(/*! debug */ \"./node_modules/debug/src/index.js\")('koa:application');\nconst onFinished = __webpack_require__(/*! on-finished */ \"./node_modules/on-finished/index.js\");\nconst response = __webpack_require__(/*! ./response */ \"./node_modules/koa/lib/response.js\");\nconst compose = __webpack_require__(/*! koa-compose */ \"./node_modules/koa-compose/index.js\");\nconst context = __webpack_require__(/*! ./context */ \"./node_modules/koa/lib/context.js\");\nconst request = __webpack_require__(/*! ./request */ \"./node_modules/koa/lib/request.js\");\nconst statuses = __webpack_require__(/*! statuses */ \"./node_modules/statuses/index.js\");\nconst Emitter = __webpack_require__(/*! events */ \"events\");\nconst util = __webpack_require__(/*! util */ \"util\");\nconst Stream = __webpack_require__(/*! stream */ \"stream\");\nconst http = __webpack_require__(/*! http */ \"http\");\nconst only = __webpack_require__(/*! only */ \"./node_modules/only/index.js\");\nconst convert = __webpack_require__(/*! koa-convert */ \"./node_modules/koa-convert/index.js\");\nconst deprecate = __webpack_require__(/*! depd */ \"./node_modules/koa/node_modules/depd/index.js\")('koa');\nconst { HttpError } = __webpack_require__(/*! http-errors */ \"./node_modules/http-errors/index.js\");\n\n/**\n * Expose `Application` class.\n * Inherits from `Emitter.prototype`.\n */\n\nmodule.exports = class Application extends Emitter {\n  /**\n   * Initialize a new `Application`.\n   *\n   * @api public\n   */\n\n  /**\n    *\n    * @param {object} [options] Application options\n    * @param {string} [options.env='development'] Environment\n    * @param {string[]} [options.keys] Signed cookie keys\n    * @param {boolean} [options.proxy] Trust proxy headers\n    * @param {number} [options.subdomainOffset] Subdomain offset\n    * @param {string} [options.proxyIpHeader] Proxy IP header, defaults to X-Forwarded-For\n    * @param {number} [options.maxIpsCount] Max IPs read from proxy IP header, default to 0 (means infinity)\n    *\n    */\n\n  constructor(options) {\n    super();\n    options = options || {};\n    this.proxy = options.proxy || false;\n    this.subdomainOffset = options.subdomainOffset || 2;\n    this.proxyIpHeader = options.proxyIpHeader || 'X-Forwarded-For';\n    this.maxIpsCount = options.maxIpsCount || 0;\n    this.env = options.env || \"development\" || 0;\n    if (options.keys) this.keys = options.keys;\n    this.middleware = [];\n    this.context = Object.create(context);\n    this.request = Object.create(request);\n    this.response = Object.create(response);\n    // util.inspect.custom support for node 6+\n    /* istanbul ignore else */\n    if (util.inspect.custom) {\n      this[util.inspect.custom] = this.inspect;\n    }\n  }\n\n  /**\n   * Shorthand for:\n   *\n   *    http.createServer(app.callback()).listen(...)\n   *\n   * @param {Mixed} ...\n   * @return {Server}\n   * @api public\n   */\n\n  listen(...args) {\n    debug('listen');\n    const server = http.createServer(this.callback());\n    return server.listen(...args);\n  }\n\n  /**\n   * Return JSON representation.\n   * We only bother showing settings.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  toJSON() {\n    return only(this, [\n      'subdomainOffset',\n      'proxy',\n      'env'\n    ]);\n  }\n\n  /**\n   * Inspect implementation.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  inspect() {\n    return this.toJSON();\n  }\n\n  /**\n   * Use the given middleware `fn`.\n   *\n   * Old-style middleware will be converted.\n   *\n   * @param {Function} fn\n   * @return {Application} self\n   * @api public\n   */\n\n  use(fn) {\n    if (typeof fn !== 'function') throw new TypeError('middleware must be a function!');\n    if (isGeneratorFunction(fn)) {\n      deprecate('Support for generators will be removed in v3. ' +\n                'See the documentation for examples of how to convert old middleware ' +\n                'https://github.com/koajs/koa/blob/master/docs/migration.md');\n      fn = convert(fn);\n    }\n    debug('use %s', fn._name || fn.name || '-');\n    this.middleware.push(fn);\n    return this;\n  }\n\n  /**\n   * Return a request handler callback\n   * for node's native http server.\n   *\n   * @return {Function}\n   * @api public\n   */\n\n  callback() {\n    const fn = compose(this.middleware);\n\n    if (!this.listenerCount('error')) this.on('error', this.onerror);\n\n    const handleRequest = (req, res) => {\n      const ctx = this.createContext(req, res);\n      return this.handleRequest(ctx, fn);\n    };\n\n    return handleRequest;\n  }\n\n  /**\n   * Handle request in callback.\n   *\n   * @api private\n   */\n\n  handleRequest(ctx, fnMiddleware) {\n    const res = ctx.res;\n    res.statusCode = 404;\n    const onerror = err => ctx.onerror(err);\n    const handleResponse = () => respond(ctx);\n    onFinished(res, onerror);\n    return fnMiddleware(ctx).then(handleResponse).catch(onerror);\n  }\n\n  /**\n   * Initialize a new context.\n   *\n   * @api private\n   */\n\n  createContext(req, res) {\n    const context = Object.create(this.context);\n    const request = context.request = Object.create(this.request);\n    const response = context.response = Object.create(this.response);\n    context.app = request.app = response.app = this;\n    context.req = request.req = response.req = req;\n    context.res = request.res = response.res = res;\n    request.ctx = response.ctx = context;\n    request.response = response;\n    response.request = request;\n    context.originalUrl = request.originalUrl = req.url;\n    context.state = {};\n    return context;\n  }\n\n  /**\n   * Default error handler.\n   *\n   * @param {Error} err\n   * @api private\n   */\n\n  onerror(err) {\n    // When dealing with cross-globals a normal `instanceof` check doesn't work properly.\n    // See https://github.com/koajs/koa/issues/1466\n    // We can probably remove it once jest fixes https://github.com/facebook/jest/issues/2549.\n    const isNativeError =\n      Object.prototype.toString.call(err) === '[object Error]' ||\n      err instanceof Error;\n    if (!isNativeError) throw new TypeError(util.format('non-error thrown: %j', err));\n\n    if (404 === err.status || err.expose) return;\n    if (this.silent) return;\n\n    const msg = err.stack || err.toString();\n    console.error(`\\n${msg.replace(/^/gm, '  ')}\\n`);\n  }\n\n  /**\n   * Help TS users comply to CommonJS, ESM, bundler mismatch.\n   * @see https://github.com/koajs/koa/issues/1513\n   */\n\n  static get default() {\n    return Application;\n  }\n};\n\n/**\n * Response helper.\n */\n\nfunction respond(ctx) {\n  // allow bypassing koa\n  if (false === ctx.respond) return;\n\n  if (!ctx.writable) return;\n\n  const res = ctx.res;\n  let body = ctx.body;\n  const code = ctx.status;\n\n  // ignore body\n  if (statuses.empty[code]) {\n    // strip headers\n    ctx.body = null;\n    return res.end();\n  }\n\n  if ('HEAD' === ctx.method) {\n    if (!res.headersSent && !ctx.response.has('Content-Length')) {\n      const { length } = ctx.response;\n      if (Number.isInteger(length)) ctx.length = length;\n    }\n    return res.end();\n  }\n\n  // status body\n  if (null == body) {\n    if (ctx.response._explicitNullBody) {\n      ctx.response.remove('Content-Type');\n      ctx.response.remove('Transfer-Encoding');\n      return res.end();\n    }\n    if (ctx.req.httpVersionMajor >= 2) {\n      body = String(code);\n    } else {\n      body = ctx.message || String(code);\n    }\n    if (!res.headersSent) {\n      ctx.type = 'text';\n      ctx.length = Buffer.byteLength(body);\n    }\n    return res.end(body);\n  }\n\n  // responses\n  if (Buffer.isBuffer(body)) return res.end(body);\n  if ('string' === typeof body) return res.end(body);\n  if (body instanceof Stream) return body.pipe(res);\n\n  // body: json\n  body = JSON.stringify(body);\n  if (!res.headersSent) {\n    ctx.length = Buffer.byteLength(body);\n  }\n  res.end(body);\n}\n\n/**\n * Make HttpError available to consumers of the library so that consumers don't\n * have a direct dependency upon `http-errors`\n */\n\nmodule.exports.HttpError = HttpError;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa/lib/application.js?")},"./node_modules/koa/lib/context.js":
/*!*****************************************!*\
  !*** ./node_modules/koa/lib/context.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n\n/**\n * Module dependencies.\n */\n\nconst util = __webpack_require__(/*! util */ \"util\");\nconst createError = __webpack_require__(/*! http-errors */ \"./node_modules/http-errors/index.js\");\nconst httpAssert = __webpack_require__(/*! http-assert */ \"./node_modules/http-assert/index.js\");\nconst delegate = __webpack_require__(/*! delegates */ \"./node_modules/delegates/index.js\");\nconst statuses = __webpack_require__(/*! statuses */ \"./node_modules/statuses/index.js\");\nconst Cookies = __webpack_require__(/*! cookies */ \"./node_modules/cookies/index.js\");\n\nconst COOKIES = Symbol('context#cookies');\n\n/**\n * Context prototype.\n */\n\nconst proto = module.exports = {\n\n  /**\n   * util.inspect() implementation, which\n   * just returns the JSON output.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  inspect() {\n    if (this === proto) return this;\n    return this.toJSON();\n  },\n\n  /**\n   * Return JSON representation.\n   *\n   * Here we explicitly invoke .toJSON() on each\n   * object, as iteration will otherwise fail due\n   * to the getters and cause utilities such as\n   * clone() to fail.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  toJSON() {\n    return {\n      request: this.request.toJSON(),\n      response: this.response.toJSON(),\n      app: this.app.toJSON(),\n      originalUrl: this.originalUrl,\n      req: '<original node req>',\n      res: '<original node res>',\n      socket: '<original node socket>'\n    };\n  },\n\n  /**\n   * Similar to .throw(), adds assertion.\n   *\n   *    this.assert(this.user, 401, 'Please login!');\n   *\n   * See: https://github.com/jshttp/http-assert\n   *\n   * @param {Mixed} test\n   * @param {Number} status\n   * @param {String} message\n   * @api public\n   */\n\n  assert: httpAssert,\n\n  /**\n   * Throw an error with `status` (default 500) and\n   * `msg`. Note that these are user-level\n   * errors, and the message may be exposed to the client.\n   *\n   *    this.throw(403)\n   *    this.throw(400, 'name required')\n   *    this.throw('something exploded')\n   *    this.throw(new Error('invalid'))\n   *    this.throw(400, new Error('invalid'))\n   *\n   * See: https://github.com/jshttp/http-errors\n   *\n   * Note: `status` should only be passed as the first parameter.\n   *\n   * @param {String|Number|Error} err, msg or status\n   * @param {String|Number|Error} [err, msg or status]\n   * @param {Object} [props]\n   * @api public\n   */\n\n  throw(...args) {\n    throw createError(...args);\n  },\n\n  /**\n   * Default error handling.\n   *\n   * @param {Error} err\n   * @api private\n   */\n\n  onerror(err) {\n    // don't do anything if there is no error.\n    // this allows you to pass `this.onerror`\n    // to node-style callbacks.\n    if (null == err) return;\n\n    // When dealing with cross-globals a normal `instanceof` check doesn't work properly.\n    // See https://github.com/koajs/koa/issues/1466\n    // We can probably remove it once jest fixes https://github.com/facebook/jest/issues/2549.\n    const isNativeError =\n      Object.prototype.toString.call(err) === '[object Error]' ||\n      err instanceof Error;\n    if (!isNativeError) err = new Error(util.format('non-error thrown: %j', err));\n\n    let headerSent = false;\n    if (this.headerSent || !this.writable) {\n      headerSent = err.headerSent = true;\n    }\n\n    // delegate\n    this.app.emit('error', err, this);\n\n    // nothing we can do here other\n    // than delegate to the app-level\n    // handler and log.\n    if (headerSent) {\n      return;\n    }\n\n    const { res } = this;\n\n    // first unset all headers\n    /* istanbul ignore else */\n    if (typeof res.getHeaderNames === 'function') {\n      res.getHeaderNames().forEach(name => res.removeHeader(name));\n    } else {\n      res._headers = {}; // Node < 7.7\n    }\n\n    // then set those specified\n    this.set(err.headers);\n\n    // force text/plain\n    this.type = 'text';\n\n    let statusCode = err.status || err.statusCode;\n\n    // ENOENT support\n    if ('ENOENT' === err.code) statusCode = 404;\n\n    // default to 500\n    if ('number' !== typeof statusCode || !statuses[statusCode]) statusCode = 500;\n\n    // respond\n    const code = statuses[statusCode];\n    const msg = err.expose ? err.message : code;\n    this.status = err.status = statusCode;\n    this.length = Buffer.byteLength(msg);\n    res.end(msg);\n  },\n\n  get cookies() {\n    if (!this[COOKIES]) {\n      this[COOKIES] = new Cookies(this.req, this.res, {\n        keys: this.app.keys,\n        secure: this.request.secure\n      });\n    }\n    return this[COOKIES];\n  },\n\n  set cookies(_cookies) {\n    this[COOKIES] = _cookies;\n  }\n};\n\n/**\n * Custom inspection implementation for newer Node.js versions.\n *\n * @return {Object}\n * @api public\n */\n\n/* istanbul ignore else */\nif (util.inspect.custom) {\n  module.exports[util.inspect.custom] = module.exports.inspect;\n}\n\n/**\n * Response delegation.\n */\n\ndelegate(proto, 'response')\n  .method('attachment')\n  .method('redirect')\n  .method('remove')\n  .method('vary')\n  .method('has')\n  .method('set')\n  .method('append')\n  .method('flushHeaders')\n  .access('status')\n  .access('message')\n  .access('body')\n  .access('length')\n  .access('type')\n  .access('lastModified')\n  .access('etag')\n  .getter('headerSent')\n  .getter('writable');\n\n/**\n * Request delegation.\n */\n\ndelegate(proto, 'request')\n  .method('acceptsLanguages')\n  .method('acceptsEncodings')\n  .method('acceptsCharsets')\n  .method('accepts')\n  .method('get')\n  .method('is')\n  .access('querystring')\n  .access('idempotent')\n  .access('socket')\n  .access('search')\n  .access('method')\n  .access('query')\n  .access('path')\n  .access('url')\n  .access('accept')\n  .getter('origin')\n  .getter('href')\n  .getter('subdomains')\n  .getter('protocol')\n  .getter('host')\n  .getter('hostname')\n  .getter('URL')\n  .getter('header')\n  .getter('headers')\n  .getter('secure')\n  .getter('stale')\n  .getter('fresh')\n  .getter('ips')\n  .getter('ip');\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa/lib/context.js?")},"./node_modules/koa/lib/request.js":
/*!*****************************************!*\
  !*** ./node_modules/koa/lib/request.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n\n/**\n * Module dependencies.\n */\n\nconst URL = (__webpack_require__(/*! url */ \"url\").URL);\nconst net = __webpack_require__(/*! net */ \"net\");\nconst accepts = __webpack_require__(/*! accepts */ \"./node_modules/accepts/index.js\");\nconst contentType = __webpack_require__(/*! content-type */ \"./node_modules/content-type/index.js\");\nconst stringify = (__webpack_require__(/*! url */ \"url\").format);\nconst parse = __webpack_require__(/*! parseurl */ \"./node_modules/parseurl/index.js\");\nconst qs = __webpack_require__(/*! querystring */ \"querystring\");\nconst typeis = __webpack_require__(/*! type-is */ \"./node_modules/type-is/index.js\");\nconst fresh = __webpack_require__(/*! fresh */ \"./node_modules/fresh/index.js\");\nconst only = __webpack_require__(/*! only */ \"./node_modules/only/index.js\");\nconst util = __webpack_require__(/*! util */ \"util\");\n\nconst IP = Symbol('context#ip');\n\n/**\n * Prototype.\n */\n\nmodule.exports = {\n\n  /**\n   * Return request header.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  get header() {\n    return this.req.headers;\n  },\n\n  /**\n   * Set request header.\n   *\n   * @api public\n   */\n\n  set header(val) {\n    this.req.headers = val;\n  },\n\n  /**\n   * Return request header, alias as request.header\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  get headers() {\n    return this.req.headers;\n  },\n\n  /**\n   * Set request header, alias as request.header\n   *\n   * @api public\n   */\n\n  set headers(val) {\n    this.req.headers = val;\n  },\n\n  /**\n   * Get request URL.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get url() {\n    return this.req.url;\n  },\n\n  /**\n   * Set request URL.\n   *\n   * @api public\n   */\n\n  set url(val) {\n    this.req.url = val;\n  },\n\n  /**\n   * Get origin of URL.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get origin() {\n    return `${this.protocol}://${this.host}`;\n  },\n\n  /**\n   * Get full request URL.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get href() {\n    // support: `GET http://example.com/foo`\n    if (/^https?:\\/\\//i.test(this.originalUrl)) return this.originalUrl;\n    return this.origin + this.originalUrl;\n  },\n\n  /**\n   * Get request method.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get method() {\n    return this.req.method;\n  },\n\n  /**\n   * Set request method.\n   *\n   * @param {String} val\n   * @api public\n   */\n\n  set method(val) {\n    this.req.method = val;\n  },\n\n  /**\n   * Get request pathname.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get path() {\n    return parse(this.req).pathname;\n  },\n\n  /**\n   * Set pathname, retaining the query string when present.\n   *\n   * @param {String} path\n   * @api public\n   */\n\n  set path(path) {\n    const url = parse(this.req);\n    if (url.pathname === path) return;\n\n    url.pathname = path;\n    url.path = null;\n\n    this.url = stringify(url);\n  },\n\n  /**\n   * Get parsed query string.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  get query() {\n    const str = this.querystring;\n    const c = this._querycache = this._querycache || {};\n    return c[str] || (c[str] = qs.parse(str));\n  },\n\n  /**\n   * Set query string as an object.\n   *\n   * @param {Object} obj\n   * @api public\n   */\n\n  set query(obj) {\n    this.querystring = qs.stringify(obj);\n  },\n\n  /**\n   * Get query string.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get querystring() {\n    if (!this.req) return '';\n    return parse(this.req).query || '';\n  },\n\n  /**\n   * Set query string.\n   *\n   * @param {String} str\n   * @api public\n   */\n\n  set querystring(str) {\n    const url = parse(this.req);\n    if (url.search === `?${str}`) return;\n\n    url.search = str;\n    url.path = null;\n\n    this.url = stringify(url);\n  },\n\n  /**\n   * Get the search string. Same as the query string\n   * except it includes the leading ?.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get search() {\n    if (!this.querystring) return '';\n    return `?${this.querystring}`;\n  },\n\n  /**\n   * Set the search string. Same as\n   * request.querystring= but included for ubiquity.\n   *\n   * @param {String} str\n   * @api public\n   */\n\n  set search(str) {\n    this.querystring = str;\n  },\n\n  /**\n   * Parse the \"Host\" header field host\n   * and support X-Forwarded-Host when a\n   * proxy is enabled.\n   *\n   * @return {String} hostname:port\n   * @api public\n   */\n\n  get host() {\n    const proxy = this.app.proxy;\n    let host = proxy && this.get('X-Forwarded-Host');\n    if (!host) {\n      if (this.req.httpVersionMajor >= 2) host = this.get(':authority');\n      if (!host) host = this.get('Host');\n    }\n    if (!host) return '';\n    return host.split(/\\s*,\\s*/, 1)[0];\n  },\n\n  /**\n   * Parse the \"Host\" header field hostname\n   * and support X-Forwarded-Host when a\n   * proxy is enabled.\n   *\n   * @return {String} hostname\n   * @api public\n   */\n\n  get hostname() {\n    const host = this.host;\n    if (!host) return '';\n    if ('[' === host[0]) return this.URL.hostname || ''; // IPv6\n    return host.split(':', 1)[0];\n  },\n\n  /**\n   * Get WHATWG parsed URL.\n   * Lazily memoized.\n   *\n   * @return {URL|Object}\n   * @api public\n   */\n\n  get URL() {\n    /* istanbul ignore else */\n    if (!this.memoizedURL) {\n      const originalUrl = this.originalUrl || ''; // avoid undefined in template string\n      try {\n        this.memoizedURL = new URL(`${this.origin}${originalUrl}`);\n      } catch (err) {\n        this.memoizedURL = Object.create(null);\n      }\n    }\n    return this.memoizedURL;\n  },\n\n  /**\n   * Check if the request is fresh, aka\n   * Last-Modified and/or the ETag\n   * still match.\n   *\n   * @return {Boolean}\n   * @api public\n   */\n\n  get fresh() {\n    const method = this.method;\n    const s = this.ctx.status;\n\n    // GET or HEAD for weak freshness validation only\n    if ('GET' !== method && 'HEAD' !== method) return false;\n\n    // 2xx or 304 as per rfc2616 14.26\n    if ((s >= 200 && s < 300) || 304 === s) {\n      return fresh(this.header, this.response.header);\n    }\n\n    return false;\n  },\n\n  /**\n   * Check if the request is stale, aka\n   * \"Last-Modified\" and / or the \"ETag\" for the\n   * resource has changed.\n   *\n   * @return {Boolean}\n   * @api public\n   */\n\n  get stale() {\n    return !this.fresh;\n  },\n\n  /**\n   * Check if the request is idempotent.\n   *\n   * @return {Boolean}\n   * @api public\n   */\n\n  get idempotent() {\n    const methods = ['GET', 'HEAD', 'PUT', 'DELETE', 'OPTIONS', 'TRACE'];\n    return !!~methods.indexOf(this.method);\n  },\n\n  /**\n   * Return the request socket.\n   *\n   * @return {Connection}\n   * @api public\n   */\n\n  get socket() {\n    return this.req.socket;\n  },\n\n  /**\n   * Get the charset when present or undefined.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get charset() {\n    try {\n      const { parameters } = contentType.parse(this.req);\n      return parameters.charset || '';\n    } catch (e) {\n      return '';\n    }\n  },\n\n  /**\n   * Return parsed Content-Length when present.\n   *\n   * @return {Number}\n   * @api public\n   */\n\n  get length() {\n    const len = this.get('Content-Length');\n    if (len === '') return;\n    return ~~len;\n  },\n\n  /**\n   * Return the protocol string \"http\" or \"https\"\n   * when requested with TLS. When the proxy setting\n   * is enabled the \"X-Forwarded-Proto\" header\n   * field will be trusted. If you're running behind\n   * a reverse proxy that supplies https for you this\n   * may be enabled.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get protocol() {\n    if (this.socket.encrypted) return 'https';\n    if (!this.app.proxy) return 'http';\n    const proto = this.get('X-Forwarded-Proto');\n    return proto ? proto.split(/\\s*,\\s*/, 1)[0] : 'http';\n  },\n\n  /**\n   * Shorthand for:\n   *\n   *    this.protocol == 'https'\n   *\n   * @return {Boolean}\n   * @api public\n   */\n\n  get secure() {\n    return 'https' === this.protocol;\n  },\n\n  /**\n   * When `app.proxy` is `true`, parse\n   * the \"X-Forwarded-For\" ip address list.\n   *\n   * For example if the value was \"client, proxy1, proxy2\"\n   * you would receive the array `[\"client\", \"proxy1\", \"proxy2\"]`\n   * where \"proxy2\" is the furthest down-stream.\n   *\n   * @return {Array}\n   * @api public\n   */\n\n  get ips() {\n    const proxy = this.app.proxy;\n    const val = this.get(this.app.proxyIpHeader);\n    let ips = proxy && val\n      ? val.split(/\\s*,\\s*/)\n      : [];\n    if (this.app.maxIpsCount > 0) {\n      ips = ips.slice(-this.app.maxIpsCount);\n    }\n    return ips;\n  },\n\n  /**\n   * Return request's remote address\n   * When `app.proxy` is `true`, parse\n   * the \"X-Forwarded-For\" ip address list and return the first one\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get ip() {\n    if (!this[IP]) {\n      this[IP] = this.ips[0] || this.socket.remoteAddress || '';\n    }\n    return this[IP];\n  },\n\n  set ip(_ip) {\n    this[IP] = _ip;\n  },\n\n  /**\n   * Return subdomains as an array.\n   *\n   * Subdomains are the dot-separated parts of the host before the main domain\n   * of the app. By default, the domain of the app is assumed to be the last two\n   * parts of the host. This can be changed by setting `app.subdomainOffset`.\n   *\n   * For example, if the domain is \"tobi.ferrets.example.com\":\n   * If `app.subdomainOffset` is not set, this.subdomains is\n   * `[\"ferrets\", \"tobi\"]`.\n   * If `app.subdomainOffset` is 3, this.subdomains is `[\"tobi\"]`.\n   *\n   * @return {Array}\n   * @api public\n   */\n\n  get subdomains() {\n    const offset = this.app.subdomainOffset;\n    const hostname = this.hostname;\n    if (net.isIP(hostname)) return [];\n    return hostname\n      .split('.')\n      .reverse()\n      .slice(offset);\n  },\n\n  /**\n   * Get accept object.\n   * Lazily memoized.\n   *\n   * @return {Object}\n   * @api private\n   */\n\n  get accept() {\n    return this._accept || (this._accept = accepts(this.req));\n  },\n\n  /**\n   * Set accept object.\n   *\n   * @param {Object}\n   * @api private\n   */\n\n  set accept(obj) {\n    this._accept = obj;\n  },\n\n  /**\n   * Check if the given `type(s)` is acceptable, returning\n   * the best match when true, otherwise `false`, in which\n   * case you should respond with 406 \"Not Acceptable\".\n   *\n   * The `type` value may be a single mime type string\n   * such as \"application/json\", the extension name\n   * such as \"json\" or an array `[\"json\", \"html\", \"text/plain\"]`. When a list\n   * or array is given the _best_ match, if any is returned.\n   *\n   * Examples:\n   *\n   *     // Accept: text/html\n   *     this.accepts('html');\n   *     // => \"html\"\n   *\n   *     // Accept: text/*, application/json\n   *     this.accepts('html');\n   *     // => \"html\"\n   *     this.accepts('text/html');\n   *     // => \"text/html\"\n   *     this.accepts('json', 'text');\n   *     // => \"json\"\n   *     this.accepts('application/json');\n   *     // => \"application/json\"\n   *\n   *     // Accept: text/*, application/json\n   *     this.accepts('image/png');\n   *     this.accepts('png');\n   *     // => false\n   *\n   *     // Accept: text/*;q=.5, application/json\n   *     this.accepts(['html', 'json']);\n   *     this.accepts('html', 'json');\n   *     // => \"json\"\n   *\n   * @param {String|Array} type(s)...\n   * @return {String|Array|false}\n   * @api public\n   */\n\n  accepts(...args) {\n    return this.accept.types(...args);\n  },\n\n  /**\n   * Return accepted encodings or best fit based on `encodings`.\n   *\n   * Given `Accept-Encoding: gzip, deflate`\n   * an array sorted by quality is returned:\n   *\n   *     ['gzip', 'deflate']\n   *\n   * @param {String|Array} encoding(s)...\n   * @return {String|Array}\n   * @api public\n   */\n\n  acceptsEncodings(...args) {\n    return this.accept.encodings(...args);\n  },\n\n  /**\n   * Return accepted charsets or best fit based on `charsets`.\n   *\n   * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5`\n   * an array sorted by quality is returned:\n   *\n   *     ['utf-8', 'utf-7', 'iso-8859-1']\n   *\n   * @param {String|Array} charset(s)...\n   * @return {String|Array}\n   * @api public\n   */\n\n  acceptsCharsets(...args) {\n    return this.accept.charsets(...args);\n  },\n\n  /**\n   * Return accepted languages or best fit based on `langs`.\n   *\n   * Given `Accept-Language: en;q=0.8, es, pt`\n   * an array sorted by quality is returned:\n   *\n   *     ['es', 'pt', 'en']\n   *\n   * @param {String|Array} lang(s)...\n   * @return {Array|String}\n   * @api public\n   */\n\n  acceptsLanguages(...args) {\n    return this.accept.languages(...args);\n  },\n\n  /**\n   * Check if the incoming request contains the \"Content-Type\"\n   * header field and if it contains any of the given mime `type`s.\n   * If there is no request body, `null` is returned.\n   * If there is no content type, `false` is returned.\n   * Otherwise, it returns the first `type` that matches.\n   *\n   * Examples:\n   *\n   *     // With Content-Type: text/html; charset=utf-8\n   *     this.is('html'); // => 'html'\n   *     this.is('text/html'); // => 'text/html'\n   *     this.is('text/*', 'application/json'); // => 'text/html'\n   *\n   *     // When Content-Type is application/json\n   *     this.is('json', 'urlencoded'); // => 'json'\n   *     this.is('application/json'); // => 'application/json'\n   *     this.is('html', 'application/*'); // => 'application/json'\n   *\n   *     this.is('html'); // => false\n   *\n   * @param {String|String[]} [type]\n   * @param {String[]} [types]\n   * @return {String|false|null}\n   * @api public\n   */\n\n  is(type, ...types) {\n    return typeis(this.req, type, ...types);\n  },\n\n  /**\n   * Return the request mime type void of\n   * parameters such as \"charset\".\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get type() {\n    const type = this.get('Content-Type');\n    if (!type) return '';\n    return type.split(';')[0];\n  },\n\n  /**\n   * Return request header.\n   *\n   * The `Referrer` header field is special-cased,\n   * both `Referrer` and `Referer` are interchangeable.\n   *\n   * Examples:\n   *\n   *     this.get('Content-Type');\n   *     // => \"text/plain\"\n   *\n   *     this.get('content-type');\n   *     // => \"text/plain\"\n   *\n   *     this.get('Something');\n   *     // => ''\n   *\n   * @param {String} field\n   * @return {String}\n   * @api public\n   */\n\n  get(field) {\n    const req = this.req;\n    switch (field = field.toLowerCase()) {\n      case 'referer':\n      case 'referrer':\n        return req.headers.referrer || req.headers.referer || '';\n      default:\n        return req.headers[field] || '';\n    }\n  },\n\n  /**\n   * Inspect implementation.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  inspect() {\n    if (!this.req) return;\n    return this.toJSON();\n  },\n\n  /**\n   * Return JSON representation.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  toJSON() {\n    return only(this, [\n      'method',\n      'url',\n      'header'\n    ]);\n  }\n};\n\n/**\n * Custom inspection implementation for newer Node.js versions.\n *\n * @return {Object}\n * @api public\n */\n\n/* istanbul ignore else */\nif (util.inspect.custom) {\n  module.exports[util.inspect.custom] = module.exports.inspect;\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa/lib/request.js?")},"./node_modules/koa/lib/response.js":
/*!******************************************!*\
  !*** ./node_modules/koa/lib/response.js ***!
  \******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n\n/**\n * Module dependencies.\n */\n\nconst contentDisposition = __webpack_require__(/*! content-disposition */ \"./node_modules/content-disposition/index.js\");\nconst getType = __webpack_require__(/*! cache-content-type */ \"./node_modules/cache-content-type/index.js\");\nconst onFinish = __webpack_require__(/*! on-finished */ \"./node_modules/on-finished/index.js\");\nconst escape = __webpack_require__(/*! escape-html */ \"./node_modules/escape-html/index.js\");\nconst typeis = (__webpack_require__(/*! type-is */ \"./node_modules/type-is/index.js\").is);\nconst statuses = __webpack_require__(/*! statuses */ \"./node_modules/statuses/index.js\");\nconst destroy = __webpack_require__(/*! destroy */ \"./node_modules/destroy/index.js\");\nconst assert = __webpack_require__(/*! assert */ \"assert\");\nconst extname = (__webpack_require__(/*! path */ \"path\").extname);\nconst vary = __webpack_require__(/*! vary */ \"./node_modules/vary/index.js\");\nconst only = __webpack_require__(/*! only */ \"./node_modules/only/index.js\");\nconst util = __webpack_require__(/*! util */ \"util\");\nconst encodeUrl = __webpack_require__(/*! encodeurl */ \"./node_modules/encodeurl/index.js\");\nconst Stream = __webpack_require__(/*! stream */ \"stream\");\n\n/**\n * Prototype.\n */\n\nmodule.exports = {\n\n  /**\n   * Return the request socket.\n   *\n   * @return {Connection}\n   * @api public\n   */\n\n  get socket() {\n    return this.res.socket;\n  },\n\n  /**\n   * Return response header.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  get header() {\n    const { res } = this;\n    return typeof res.getHeaders === 'function'\n      ? res.getHeaders()\n      : res._headers || {}; // Node < 7.7\n  },\n\n  /**\n   * Return response header, alias as response.header\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  get headers() {\n    return this.header;\n  },\n\n  /**\n   * Get response status code.\n   *\n   * @return {Number}\n   * @api public\n   */\n\n  get status() {\n    return this.res.statusCode;\n  },\n\n  /**\n   * Set response status code.\n   *\n   * @param {Number} code\n   * @api public\n   */\n\n  set status(code) {\n    if (this.headerSent) return;\n\n    assert(Number.isInteger(code), 'status code must be a number');\n    assert(code >= 100 && code <= 999, `invalid status code: ${code}`);\n    this._explicitStatus = true;\n    this.res.statusCode = code;\n    if (this.req.httpVersionMajor < 2) this.res.statusMessage = statuses[code];\n    if (this.body && statuses.empty[code]) this.body = null;\n  },\n\n  /**\n   * Get response status message\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get message() {\n    return this.res.statusMessage || statuses[this.status];\n  },\n\n  /**\n   * Set response status message\n   *\n   * @param {String} msg\n   * @api public\n   */\n\n  set message(msg) {\n    this.res.statusMessage = msg;\n  },\n\n  /**\n   * Get response body.\n   *\n   * @return {Mixed}\n   * @api public\n   */\n\n  get body() {\n    return this._body;\n  },\n\n  /**\n   * Set response body.\n   *\n   * @param {String|Buffer|Object|Stream} val\n   * @api public\n   */\n\n  set body(val) {\n    const original = this._body;\n    this._body = val;\n\n    // no content\n    if (null == val) {\n      if (!statuses.empty[this.status]) this.status = 204;\n      if (val === null) this._explicitNullBody = true;\n      this.remove('Content-Type');\n      this.remove('Content-Length');\n      this.remove('Transfer-Encoding');\n      return;\n    }\n\n    // set the status\n    if (!this._explicitStatus) this.status = 200;\n\n    // set the content-type only if not yet set\n    const setType = !this.has('Content-Type');\n\n    // string\n    if ('string' === typeof val) {\n      if (setType) this.type = /^\\s*</.test(val) ? 'html' : 'text';\n      this.length = Buffer.byteLength(val);\n      return;\n    }\n\n    // buffer\n    if (Buffer.isBuffer(val)) {\n      if (setType) this.type = 'bin';\n      this.length = val.length;\n      return;\n    }\n\n    // stream\n    if (val instanceof Stream) {\n      onFinish(this.res, destroy.bind(null, val));\n      if (original != val) {\n        val.once('error', err => this.ctx.onerror(err));\n        // overwriting\n        if (null != original) this.remove('Content-Length');\n      }\n\n      if (setType) this.type = 'bin';\n      return;\n    }\n\n    // json\n    this.remove('Content-Length');\n    this.type = 'json';\n  },\n\n  /**\n   * Set Content-Length field to `n`.\n   *\n   * @param {Number} n\n   * @api public\n   */\n\n  set length(n) {\n    if (!this.has('Transfer-Encoding')) {\n      this.set('Content-Length', n);\n    }\n  },\n\n  /**\n   * Return parsed response Content-Length when present.\n   *\n   * @return {Number}\n   * @api public\n   */\n\n  get length() {\n    if (this.has('Content-Length')) {\n      return parseInt(this.get('Content-Length'), 10) || 0;\n    }\n\n    const { body } = this;\n    if (!body || body instanceof Stream) return undefined;\n    if ('string' === typeof body) return Buffer.byteLength(body);\n    if (Buffer.isBuffer(body)) return body.length;\n    return Buffer.byteLength(JSON.stringify(body));\n  },\n\n  /**\n   * Check if a header has been written to the socket.\n   *\n   * @return {Boolean}\n   * @api public\n   */\n\n  get headerSent() {\n    return this.res.headersSent;\n  },\n\n  /**\n   * Vary on `field`.\n   *\n   * @param {String} field\n   * @api public\n   */\n\n  vary(field) {\n    if (this.headerSent) return;\n\n    vary(this.res, field);\n  },\n\n  /**\n   * Perform a 302 redirect to `url`.\n   *\n   * The string \"back\" is special-cased\n   * to provide Referrer support, when Referrer\n   * is not present `alt` or \"/\" is used.\n   *\n   * Examples:\n   *\n   *    this.redirect('back');\n   *    this.redirect('back', '/index.html');\n   *    this.redirect('/login');\n   *    this.redirect('http://google.com');\n   *\n   * @param {String} url\n   * @param {String} [alt]\n   * @api public\n   */\n\n  redirect(url, alt) {\n    // location\n    if ('back' === url) url = this.ctx.get('Referrer') || alt || '/';\n    this.set('Location', encodeUrl(url));\n\n    // status\n    if (!statuses.redirect[this.status]) this.status = 302;\n\n    // html\n    if (this.ctx.accepts('html')) {\n      url = escape(url);\n      this.type = 'text/html; charset=utf-8';\n      this.body = `Redirecting to <a href=\"${url}\">${url}</a>.`;\n      return;\n    }\n\n    // text\n    this.type = 'text/plain; charset=utf-8';\n    this.body = `Redirecting to ${url}.`;\n  },\n\n  /**\n   * Set Content-Disposition header to \"attachment\" with optional `filename`.\n   *\n   * @param {String} filename\n   * @api public\n   */\n\n  attachment(filename, options) {\n    if (filename) this.type = extname(filename);\n    this.set('Content-Disposition', contentDisposition(filename, options));\n  },\n\n  /**\n   * Set Content-Type response header with `type` through `mime.lookup()`\n   * when it does not contain a charset.\n   *\n   * Examples:\n   *\n   *     this.type = '.html';\n   *     this.type = 'html';\n   *     this.type = 'json';\n   *     this.type = 'application/json';\n   *     this.type = 'png';\n   *\n   * @param {String} type\n   * @api public\n   */\n\n  set type(type) {\n    type = getType(type);\n    if (type) {\n      this.set('Content-Type', type);\n    } else {\n      this.remove('Content-Type');\n    }\n  },\n\n  /**\n   * Set the Last-Modified date using a string or a Date.\n   *\n   *     this.response.lastModified = new Date();\n   *     this.response.lastModified = '2013-09-13';\n   *\n   * @param {String|Date} type\n   * @api public\n   */\n\n  set lastModified(val) {\n    if ('string' === typeof val) val = new Date(val);\n    this.set('Last-Modified', val.toUTCString());\n  },\n\n  /**\n   * Get the Last-Modified date in Date form, if it exists.\n   *\n   * @return {Date}\n   * @api public\n   */\n\n  get lastModified() {\n    const date = this.get('last-modified');\n    if (date) return new Date(date);\n  },\n\n  /**\n   * Set the ETag of a response.\n   * This will normalize the quotes if necessary.\n   *\n   *     this.response.etag = 'md5hashsum';\n   *     this.response.etag = '\"md5hashsum\"';\n   *     this.response.etag = 'W/\"123456789\"';\n   *\n   * @param {String} etag\n   * @api public\n   */\n\n  set etag(val) {\n    if (!/^(W\\/)?\"/.test(val)) val = `\"${val}\"`;\n    this.set('ETag', val);\n  },\n\n  /**\n   * Get the ETag of a response.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get etag() {\n    return this.get('ETag');\n  },\n\n  /**\n   * Return the response mime type void of\n   * parameters such as \"charset\".\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get type() {\n    const type = this.get('Content-Type');\n    if (!type) return '';\n    return type.split(';', 1)[0];\n  },\n\n  /**\n   * Check whether the response is one of the listed types.\n   * Pretty much the same as `this.request.is()`.\n   *\n   * @param {String|String[]} [type]\n   * @param {String[]} [types]\n   * @return {String|false}\n   * @api public\n   */\n\n  is(type, ...types) {\n    return typeis(this.type, type, ...types);\n  },\n\n  /**\n   * Return response header.\n   *\n   * Examples:\n   *\n   *     this.get('Content-Type');\n   *     // => \"text/plain\"\n   *\n   *     this.get('content-type');\n   *     // => \"text/plain\"\n   *\n   * @param {String} field\n   * @return {String}\n   * @api public\n   */\n\n  get(field) {\n    return this.header[field.toLowerCase()] || '';\n  },\n\n  /**\n   * Returns true if the header identified by name is currently set in the outgoing headers.\n   * The header name matching is case-insensitive.\n   *\n   * Examples:\n   *\n   *     this.has('Content-Type');\n   *     // => true\n   *\n   *     this.get('content-type');\n   *     // => true\n   *\n   * @param {String} field\n   * @return {boolean}\n   * @api public\n   */\n\n  has(field) {\n    return typeof this.res.hasHeader === 'function'\n      ? this.res.hasHeader(field)\n      // Node < 7.7\n      : field.toLowerCase() in this.headers;\n  },\n\n  /**\n   * Set header `field` to `val` or pass\n   * an object of header fields.\n   *\n   * Examples:\n   *\n   *    this.set('Foo', ['bar', 'baz']);\n   *    this.set('Accept', 'application/json');\n   *    this.set({ Accept: 'text/plain', 'X-API-Key': 'tobi' });\n   *\n   * @param {String|Object|Array} field\n   * @param {String} val\n   * @api public\n   */\n\n  set(field, val) {\n    if (this.headerSent) return;\n\n    if (2 === arguments.length) {\n      if (Array.isArray(val)) val = val.map(v => typeof v === 'string' ? v : String(v));\n      else if (typeof val !== 'string') val = String(val);\n      this.res.setHeader(field, val);\n    } else {\n      for (const key in field) {\n        this.set(key, field[key]);\n      }\n    }\n  },\n\n  /**\n   * Append additional header `field` with value `val`.\n   *\n   * Examples:\n   *\n   * ```\n   * this.append('Link', ['<http://localhost/>', '<http://localhost:3000/>']);\n   * this.append('Set-Cookie', 'foo=bar; Path=/; HttpOnly');\n   * this.append('Warning', '199 Miscellaneous warning');\n   * ```\n   *\n   * @param {String} field\n   * @param {String|Array} val\n   * @api public\n   */\n\n  append(field, val) {\n    const prev = this.get(field);\n\n    if (prev) {\n      val = Array.isArray(prev)\n        ? prev.concat(val)\n        : [prev].concat(val);\n    }\n\n    return this.set(field, val);\n  },\n\n  /**\n   * Remove header `field`.\n   *\n   * @param {String} name\n   * @api public\n   */\n\n  remove(field) {\n    if (this.headerSent) return;\n\n    this.res.removeHeader(field);\n  },\n\n  /**\n   * Checks if the request is writable.\n   * Tests for the existence of the socket\n   * as node sometimes does not set it.\n   *\n   * @return {Boolean}\n   * @api private\n   */\n\n  get writable() {\n    // can't write any more after response finished\n    // response.writableEnded is available since Node > 12.9\n    // https://nodejs.org/api/http.html#http_response_writableended\n    // response.finished is undocumented feature of previous Node versions\n    // https://stackoverflow.com/questions/16254385/undocumented-response-finished-in-node-js\n    if (this.res.writableEnded || this.res.finished) return false;\n\n    const socket = this.res.socket;\n    // There are already pending outgoing res, but still writable\n    // https://github.com/nodejs/node/blob/v4.4.7/lib/_http_server.js#L486\n    if (!socket) return true;\n    return socket.writable;\n  },\n\n  /**\n   * Inspect implementation.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  inspect() {\n    if (!this.res) return;\n    const o = this.toJSON();\n    o.body = this.body;\n    return o;\n  },\n\n  /**\n   * Return JSON representation.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  toJSON() {\n    return only(this, [\n      'status',\n      'message',\n      'header'\n    ]);\n  },\n\n  /**\n   * Flush any set headers and begin the body\n   */\n\n  flushHeaders() {\n    this.res.flushHeaders();\n  }\n};\n\n/**\n * Custom inspection implementation for node 6+.\n *\n * @return {Object}\n * @api public\n */\n\n/* istanbul ignore else */\nif (util.inspect.custom) {\n  module.exports[util.inspect.custom] = module.exports.inspect;\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa/lib/response.js?")},"./node_modules/koa/node_modules/depd/index.js":
/*!*****************************************************!*\
  !*** ./node_modules/koa/node_modules/depd/index.js ***!
  \*****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("/*!\n * depd\n * Copyright(c) 2014-2018 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\n\nvar relative = (__webpack_require__(/*! path */ \"path\").relative)\n\n/**\n * Module exports.\n */\n\nmodule.exports = depd\n\n/**\n * Get the path to base files on.\n */\n\nvar basePath = process.cwd()\n\n/**\n * Determine if namespace is contained in the string.\n */\n\nfunction containsNamespace (str, namespace) {\n  var vals = str.split(/[ ,]+/)\n  var ns = String(namespace).toLowerCase()\n\n  for (var i = 0; i < vals.length; i++) {\n    var val = vals[i]\n\n    // namespace contained\n    if (val && (val === '*' || val.toLowerCase() === ns)) {\n      return true\n    }\n  }\n\n  return false\n}\n\n/**\n * Convert a data descriptor to accessor descriptor.\n */\n\nfunction convertDataDescriptorToAccessor (obj, prop, message) {\n  var descriptor = Object.getOwnPropertyDescriptor(obj, prop)\n  var value = descriptor.value\n\n  descriptor.get = function getter () { return value }\n\n  if (descriptor.writable) {\n    descriptor.set = function setter (val) { return (value = val) }\n  }\n\n  delete descriptor.value\n  delete descriptor.writable\n\n  Object.defineProperty(obj, prop, descriptor)\n\n  return descriptor\n}\n\n/**\n * Create arguments string to keep arity.\n */\n\nfunction createArgumentsString (arity) {\n  var str = ''\n\n  for (var i = 0; i < arity; i++) {\n    str += ', arg' + i\n  }\n\n  return str.substr(2)\n}\n\n/**\n * Create stack string from stack.\n */\n\nfunction createStackString (stack) {\n  var str = this.name + ': ' + this.namespace\n\n  if (this.message) {\n    str += ' deprecated ' + this.message\n  }\n\n  for (var i = 0; i < stack.length; i++) {\n    str += '\\n    at ' + stack[i].toString()\n  }\n\n  return str\n}\n\n/**\n * Create deprecate for namespace in caller.\n */\n\nfunction depd (namespace) {\n  if (!namespace) {\n    throw new TypeError('argument namespace is required')\n  }\n\n  var stack = getStack()\n  var site = callSiteLocation(stack[1])\n  var file = site[0]\n\n  function deprecate (message) {\n    // call to self as log\n    log.call(deprecate, message)\n  }\n\n  deprecate._file = file\n  deprecate._ignored = isignored(namespace)\n  deprecate._namespace = namespace\n  deprecate._traced = istraced(namespace)\n  deprecate._warned = Object.create(null)\n\n  deprecate.function = wrapfunction\n  deprecate.property = wrapproperty\n\n  return deprecate\n}\n\n/**\n * Determine if event emitter has listeners of a given type.\n *\n * The way to do this check is done three different ways in Node.js >= 0.8\n * so this consolidates them into a minimal set using instance methods.\n *\n * @param {EventEmitter} emitter\n * @param {string} type\n * @returns {boolean}\n * @private\n */\n\nfunction eehaslisteners (emitter, type) {\n  var count = typeof emitter.listenerCount !== 'function'\n    ? emitter.listeners(type).length\n    : emitter.listenerCount(type)\n\n  return count > 0\n}\n\n/**\n * Determine if namespace is ignored.\n */\n\nfunction isignored (namespace) {\n  if (process.noDeprecation) {\n    // --no-deprecation support\n    return true\n  }\n\n  var str = ({\"APP_ENV\":\"webpack\"}).NO_DEPRECATION || ''\n\n  // namespace ignored\n  return containsNamespace(str, namespace)\n}\n\n/**\n * Determine if namespace is traced.\n */\n\nfunction istraced (namespace) {\n  if (process.traceDeprecation) {\n    // --trace-deprecation support\n    return true\n  }\n\n  var str = ({\"APP_ENV\":\"webpack\"}).TRACE_DEPRECATION || ''\n\n  // namespace traced\n  return containsNamespace(str, namespace)\n}\n\n/**\n * Display deprecation message.\n */\n\nfunction log (message, site) {\n  var haslisteners = eehaslisteners(process, 'deprecation')\n\n  // abort early if no destination\n  if (!haslisteners && this._ignored) {\n    return\n  }\n\n  var caller\n  var callFile\n  var callSite\n  var depSite\n  var i = 0\n  var seen = false\n  var stack = getStack()\n  var file = this._file\n\n  if (site) {\n    // provided site\n    depSite = site\n    callSite = callSiteLocation(stack[1])\n    callSite.name = depSite.name\n    file = callSite[0]\n  } else {\n    // get call site\n    i = 2\n    depSite = callSiteLocation(stack[i])\n    callSite = depSite\n  }\n\n  // get caller of deprecated thing in relation to file\n  for (; i < stack.length; i++) {\n    caller = callSiteLocation(stack[i])\n    callFile = caller[0]\n\n    if (callFile === file) {\n      seen = true\n    } else if (callFile === this._file) {\n      file = this._file\n    } else if (seen) {\n      break\n    }\n  }\n\n  var key = caller\n    ? depSite.join(':') + '__' + caller.join(':')\n    : undefined\n\n  if (key !== undefined && key in this._warned) {\n    // already warned\n    return\n  }\n\n  this._warned[key] = true\n\n  // generate automatic message from call site\n  var msg = message\n  if (!msg) {\n    msg = callSite === depSite || !callSite.name\n      ? defaultMessage(depSite)\n      : defaultMessage(callSite)\n  }\n\n  // emit deprecation if listeners exist\n  if (haslisteners) {\n    var err = DeprecationError(this._namespace, msg, stack.slice(i))\n    process.emit('deprecation', err)\n    return\n  }\n\n  // format and write message\n  var format = process.stderr.isTTY\n    ? formatColor\n    : formatPlain\n  var output = format.call(this, msg, caller, stack.slice(i))\n  process.stderr.write(output + '\\n', 'utf8')\n}\n\n/**\n * Get call site location as array.\n */\n\nfunction callSiteLocation (callSite) {\n  var file = callSite.getFileName() || '<anonymous>'\n  var line = callSite.getLineNumber()\n  var colm = callSite.getColumnNumber()\n\n  if (callSite.isEval()) {\n    file = callSite.getEvalOrigin() + ', ' + file\n  }\n\n  var site = [file, line, colm]\n\n  site.callSite = callSite\n  site.name = callSite.getFunctionName()\n\n  return site\n}\n\n/**\n * Generate a default message from the site.\n */\n\nfunction defaultMessage (site) {\n  var callSite = site.callSite\n  var funcName = site.name\n\n  // make useful anonymous name\n  if (!funcName) {\n    funcName = '<anonymous@' + formatLocation(site) + '>'\n  }\n\n  var context = callSite.getThis()\n  var typeName = context && callSite.getTypeName()\n\n  // ignore useless type name\n  if (typeName === 'Object') {\n    typeName = undefined\n  }\n\n  // make useful type name\n  if (typeName === 'Function') {\n    typeName = context.name || typeName\n  }\n\n  return typeName && callSite.getMethodName()\n    ? typeName + '.' + funcName\n    : funcName\n}\n\n/**\n * Format deprecation message without color.\n */\n\nfunction formatPlain (msg, caller, stack) {\n  var timestamp = new Date().toUTCString()\n\n  var formatted = timestamp +\n    ' ' + this._namespace +\n    ' deprecated ' + msg\n\n  // add stack trace\n  if (this._traced) {\n    for (var i = 0; i < stack.length; i++) {\n      formatted += '\\n    at ' + stack[i].toString()\n    }\n\n    return formatted\n  }\n\n  if (caller) {\n    formatted += ' at ' + formatLocation(caller)\n  }\n\n  return formatted\n}\n\n/**\n * Format deprecation message with color.\n */\n\nfunction formatColor (msg, caller, stack) {\n  var formatted = '\\x1b[36;1m' + this._namespace + '\\x1b[22;39m' + // bold cyan\n    ' \\x1b[33;1mdeprecated\\x1b[22;39m' + // bold yellow\n    ' \\x1b[0m' + msg + '\\x1b[39m' // reset\n\n  // add stack trace\n  if (this._traced) {\n    for (var i = 0; i < stack.length; i++) {\n      formatted += '\\n    \\x1b[36mat ' + stack[i].toString() + '\\x1b[39m' // cyan\n    }\n\n    return formatted\n  }\n\n  if (caller) {\n    formatted += ' \\x1b[36m' + formatLocation(caller) + '\\x1b[39m' // cyan\n  }\n\n  return formatted\n}\n\n/**\n * Format call site location.\n */\n\nfunction formatLocation (callSite) {\n  return relative(basePath, callSite[0]) +\n    ':' + callSite[1] +\n    ':' + callSite[2]\n}\n\n/**\n * Get the stack as array of call sites.\n */\n\nfunction getStack () {\n  var limit = Error.stackTraceLimit\n  var obj = {}\n  var prep = Error.prepareStackTrace\n\n  Error.prepareStackTrace = prepareObjectStackTrace\n  Error.stackTraceLimit = Math.max(10, limit)\n\n  // capture the stack\n  Error.captureStackTrace(obj)\n\n  // slice this function off the top\n  var stack = obj.stack.slice(1)\n\n  Error.prepareStackTrace = prep\n  Error.stackTraceLimit = limit\n\n  return stack\n}\n\n/**\n * Capture call site stack from v8.\n */\n\nfunction prepareObjectStackTrace (obj, stack) {\n  return stack\n}\n\n/**\n * Return a wrapped function in a deprecation message.\n */\n\nfunction wrapfunction (fn, message) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('argument fn must be a function')\n  }\n\n  var args = createArgumentsString(fn.length)\n  var stack = getStack()\n  var site = callSiteLocation(stack[1])\n\n  site.name = fn.name\n\n  // eslint-disable-next-line no-new-func\n  var deprecatedfn = new Function('fn', 'log', 'deprecate', 'message', 'site',\n    '\"use strict\"\\n' +\n    'return function (' + args + ') {' +\n    'log.call(deprecate, message, site)\\n' +\n    'return fn.apply(this, arguments)\\n' +\n    '}')(fn, log, this, message, site)\n\n  return deprecatedfn\n}\n\n/**\n * Wrap property in a deprecation message.\n */\n\nfunction wrapproperty (obj, prop, message) {\n  if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n    throw new TypeError('argument obj must be object')\n  }\n\n  var descriptor = Object.getOwnPropertyDescriptor(obj, prop)\n\n  if (!descriptor) {\n    throw new TypeError('must call property on owner object')\n  }\n\n  if (!descriptor.configurable) {\n    throw new TypeError('property must be configurable')\n  }\n\n  var deprecate = this\n  var stack = getStack()\n  var site = callSiteLocation(stack[1])\n\n  // set site name\n  site.name = prop\n\n  // convert data descriptor\n  if ('value' in descriptor) {\n    descriptor = convertDataDescriptorToAccessor(obj, prop, message)\n  }\n\n  var get = descriptor.get\n  var set = descriptor.set\n\n  // wrap getter\n  if (typeof get === 'function') {\n    descriptor.get = function getter () {\n      log.call(deprecate, message, site)\n      return get.apply(this, arguments)\n    }\n  }\n\n  // wrap setter\n  if (typeof set === 'function') {\n    descriptor.set = function setter () {\n      log.call(deprecate, message, site)\n      return set.apply(this, arguments)\n    }\n  }\n\n  Object.defineProperty(obj, prop, descriptor)\n}\n\n/**\n * Create DeprecationError for deprecation\n */\n\nfunction DeprecationError (namespace, message, stack) {\n  var error = new Error()\n  var stackString\n\n  Object.defineProperty(error, 'constructor', {\n    value: DeprecationError\n  })\n\n  Object.defineProperty(error, 'message', {\n    configurable: true,\n    enumerable: false,\n    value: message,\n    writable: true\n  })\n\n  Object.defineProperty(error, 'name', {\n    enumerable: false,\n    configurable: true,\n    value: 'DeprecationError',\n    writable: true\n  })\n\n  Object.defineProperty(error, 'namespace', {\n    configurable: true,\n    enumerable: false,\n    value: namespace,\n    writable: true\n  })\n\n  Object.defineProperty(error, 'stack', {\n    configurable: true,\n    enumerable: false,\n    get: function () {\n      if (stackString !== undefined) {\n        return stackString\n      }\n\n      // prepare stack trace\n      return (stackString = createStackString.call(this, stack))\n    },\n    set: function setter (val) {\n      stackString = val\n    }\n  })\n\n  return error\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/koa/node_modules/depd/index.js?")},"./node_modules/lodash.get/index.js":
/*!******************************************!*\
  !*** ./node_modules/lodash.get/index.js ***!
  \******************************************/module=>{eval("/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    symbolTag = '[object Symbol]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/,\n    reLeadingDot = /^\\./,\n    rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n  // Many host objects are `Object` objects that can coerce to strings\n  // despite having improperly defined `toString` methods.\n  var result = false;\n  if (value != null && typeof value.toString != 'function') {\n    try {\n      result = !!(value + '');\n    } catch (e) {}\n  }\n  return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n    splice = arrayProto.splice;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n    nativeCreate = getNative(Object, 'create');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  getMapData(this, key).set(key, value);\n  return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = isKey(path, object) ? [path] : castPath(path);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n  return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n  string = toString(string);\n\n  var result = [];\n  if (reLeadingDot.test(string)) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, string) {\n    result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result);\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash.get/index.js?")},"./node_modules/lodash/_DataView.js":
/*!******************************************!*\
  !*** ./node_modules/lodash/_DataView.js ***!
  \******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"),\n    root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, \'DataView\');\n\nmodule.exports = DataView;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_DataView.js?')},"./node_modules/lodash/_Hash.js":
/*!**************************************!*\
  !*** ./node_modules/lodash/_Hash.js ***!
  \**************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var hashClear = __webpack_require__(/*! ./_hashClear */ "./node_modules/lodash/_hashClear.js"),\n    hashDelete = __webpack_require__(/*! ./_hashDelete */ "./node_modules/lodash/_hashDelete.js"),\n    hashGet = __webpack_require__(/*! ./_hashGet */ "./node_modules/lodash/_hashGet.js"),\n    hashHas = __webpack_require__(/*! ./_hashHas */ "./node_modules/lodash/_hashHas.js"),\n    hashSet = __webpack_require__(/*! ./_hashSet */ "./node_modules/lodash/_hashSet.js");\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype[\'delete\'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_Hash.js?')},"./node_modules/lodash/_ListCache.js":
/*!*******************************************!*\
  !*** ./node_modules/lodash/_ListCache.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var listCacheClear = __webpack_require__(/*! ./_listCacheClear */ "./node_modules/lodash/_listCacheClear.js"),\n    listCacheDelete = __webpack_require__(/*! ./_listCacheDelete */ "./node_modules/lodash/_listCacheDelete.js"),\n    listCacheGet = __webpack_require__(/*! ./_listCacheGet */ "./node_modules/lodash/_listCacheGet.js"),\n    listCacheHas = __webpack_require__(/*! ./_listCacheHas */ "./node_modules/lodash/_listCacheHas.js"),\n    listCacheSet = __webpack_require__(/*! ./_listCacheSet */ "./node_modules/lodash/_listCacheSet.js");\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype[\'delete\'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_ListCache.js?')},"./node_modules/lodash/_Map.js":
/*!*************************************!*\
  !*** ./node_modules/lodash/_Map.js ***!
  \*************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"),\n    root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, \'Map\');\n\nmodule.exports = Map;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_Map.js?')},"./node_modules/lodash/_MapCache.js":
/*!******************************************!*\
  !*** ./node_modules/lodash/_MapCache.js ***!
  \******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var mapCacheClear = __webpack_require__(/*! ./_mapCacheClear */ "./node_modules/lodash/_mapCacheClear.js"),\n    mapCacheDelete = __webpack_require__(/*! ./_mapCacheDelete */ "./node_modules/lodash/_mapCacheDelete.js"),\n    mapCacheGet = __webpack_require__(/*! ./_mapCacheGet */ "./node_modules/lodash/_mapCacheGet.js"),\n    mapCacheHas = __webpack_require__(/*! ./_mapCacheHas */ "./node_modules/lodash/_mapCacheHas.js"),\n    mapCacheSet = __webpack_require__(/*! ./_mapCacheSet */ "./node_modules/lodash/_mapCacheSet.js");\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype[\'delete\'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_MapCache.js?')},"./node_modules/lodash/_Promise.js":
/*!*****************************************!*\
  !*** ./node_modules/lodash/_Promise.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"),\n    root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, \'Promise\');\n\nmodule.exports = Promise;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_Promise.js?')},"./node_modules/lodash/_Set.js":
/*!*************************************!*\
  !*** ./node_modules/lodash/_Set.js ***!
  \*************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"),\n    root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, \'Set\');\n\nmodule.exports = Set;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_Set.js?')},"./node_modules/lodash/_Stack.js":
/*!***************************************!*\
  !*** ./node_modules/lodash/_Stack.js ***!
  \***************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js"),\n    stackClear = __webpack_require__(/*! ./_stackClear */ "./node_modules/lodash/_stackClear.js"),\n    stackDelete = __webpack_require__(/*! ./_stackDelete */ "./node_modules/lodash/_stackDelete.js"),\n    stackGet = __webpack_require__(/*! ./_stackGet */ "./node_modules/lodash/_stackGet.js"),\n    stackHas = __webpack_require__(/*! ./_stackHas */ "./node_modules/lodash/_stackHas.js"),\n    stackSet = __webpack_require__(/*! ./_stackSet */ "./node_modules/lodash/_stackSet.js");\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype[\'delete\'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_Stack.js?')},"./node_modules/lodash/_Symbol.js":
/*!****************************************!*\
  !*** ./node_modules/lodash/_Symbol.js ***!
  \****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_Symbol.js?')},"./node_modules/lodash/_Uint8Array.js":
/*!********************************************!*\
  !*** ./node_modules/lodash/_Uint8Array.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_Uint8Array.js?')},"./node_modules/lodash/_WeakMap.js":
/*!*****************************************!*\
  !*** ./node_modules/lodash/_WeakMap.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"),\n    root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, \'WeakMap\');\n\nmodule.exports = WeakMap;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_WeakMap.js?')},"./node_modules/lodash/_arrayEach.js":
/*!*******************************************!*\
  !*** ./node_modules/lodash/_arrayEach.js ***!
  \*******************************************/module=>{eval("/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\nmodule.exports = arrayEach;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_arrayEach.js?")},"./node_modules/lodash/_arrayFilter.js":
/*!*********************************************!*\
  !*** ./node_modules/lodash/_arrayFilter.js ***!
  \*********************************************/module=>{eval("/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayFilter;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_arrayFilter.js?")},"./node_modules/lodash/_arrayLikeKeys.js":
/*!***********************************************!*\
  !*** ./node_modules/lodash/_arrayLikeKeys.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var baseTimes = __webpack_require__(/*! ./_baseTimes */ \"./node_modules/lodash/_baseTimes.js\"),\n    isArguments = __webpack_require__(/*! ./isArguments */ \"./node_modules/lodash/isArguments.js\"),\n    isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\"),\n    isBuffer = __webpack_require__(/*! ./isBuffer */ \"./node_modules/lodash/isBuffer.js\"),\n    isIndex = __webpack_require__(/*! ./_isIndex */ \"./node_modules/lodash/_isIndex.js\"),\n    isTypedArray = __webpack_require__(/*! ./isTypedArray */ \"./node_modules/lodash/isTypedArray.js\");\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayLikeKeys;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_arrayLikeKeys.js?")},"./node_modules/lodash/_arrayMap.js":
/*!******************************************!*\
  !*** ./node_modules/lodash/_arrayMap.js ***!
  \******************************************/module=>{eval("/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nmodule.exports = arrayMap;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_arrayMap.js?")},"./node_modules/lodash/_arrayPush.js":
/*!*******************************************!*\
  !*** ./node_modules/lodash/_arrayPush.js ***!
  \*******************************************/module=>{eval("/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\nmodule.exports = arrayPush;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_arrayPush.js?")},"./node_modules/lodash/_assignValue.js":
/*!*********************************************!*\
  !*** ./node_modules/lodash/_assignValue.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ "./node_modules/lodash/_baseAssignValue.js"),\n    eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js");\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nmodule.exports = assignValue;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_assignValue.js?')},"./node_modules/lodash/_assocIndexOf.js":
/*!**********************************************!*\
  !*** ./node_modules/lodash/_assocIndexOf.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js");\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = assocIndexOf;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_assocIndexOf.js?')},"./node_modules/lodash/_baseAssign.js":
/*!********************************************!*\
  !*** ./node_modules/lodash/_baseAssign.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var copyObject = __webpack_require__(/*! ./_copyObject */ "./node_modules/lodash/_copyObject.js"),\n    keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js");\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_baseAssign.js?')},"./node_modules/lodash/_baseAssignIn.js":
/*!**********************************************!*\
  !*** ./node_modules/lodash/_baseAssignIn.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var copyObject = __webpack_require__(/*! ./_copyObject */ "./node_modules/lodash/_copyObject.js"),\n    keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js");\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n  return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_baseAssignIn.js?')},"./node_modules/lodash/_baseAssignValue.js":
/*!*************************************************!*\
  !*** ./node_modules/lodash/_baseAssignValue.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var defineProperty = __webpack_require__(/*! ./_defineProperty */ \"./node_modules/lodash/_defineProperty.js\");\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nmodule.exports = baseAssignValue;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_baseAssignValue.js?")},"./node_modules/lodash/_baseClone.js":
/*!*******************************************!*\
  !*** ./node_modules/lodash/_baseClone.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var Stack = __webpack_require__(/*! ./_Stack */ \"./node_modules/lodash/_Stack.js\"),\n    arrayEach = __webpack_require__(/*! ./_arrayEach */ \"./node_modules/lodash/_arrayEach.js\"),\n    assignValue = __webpack_require__(/*! ./_assignValue */ \"./node_modules/lodash/_assignValue.js\"),\n    baseAssign = __webpack_require__(/*! ./_baseAssign */ \"./node_modules/lodash/_baseAssign.js\"),\n    baseAssignIn = __webpack_require__(/*! ./_baseAssignIn */ \"./node_modules/lodash/_baseAssignIn.js\"),\n    cloneBuffer = __webpack_require__(/*! ./_cloneBuffer */ \"./node_modules/lodash/_cloneBuffer.js\"),\n    copyArray = __webpack_require__(/*! ./_copyArray */ \"./node_modules/lodash/_copyArray.js\"),\n    copySymbols = __webpack_require__(/*! ./_copySymbols */ \"./node_modules/lodash/_copySymbols.js\"),\n    copySymbolsIn = __webpack_require__(/*! ./_copySymbolsIn */ \"./node_modules/lodash/_copySymbolsIn.js\"),\n    getAllKeys = __webpack_require__(/*! ./_getAllKeys */ \"./node_modules/lodash/_getAllKeys.js\"),\n    getAllKeysIn = __webpack_require__(/*! ./_getAllKeysIn */ \"./node_modules/lodash/_getAllKeysIn.js\"),\n    getTag = __webpack_require__(/*! ./_getTag */ \"./node_modules/lodash/_getTag.js\"),\n    initCloneArray = __webpack_require__(/*! ./_initCloneArray */ \"./node_modules/lodash/_initCloneArray.js\"),\n    initCloneByTag = __webpack_require__(/*! ./_initCloneByTag */ \"./node_modules/lodash/_initCloneByTag.js\"),\n    initCloneObject = __webpack_require__(/*! ./_initCloneObject */ \"./node_modules/lodash/_initCloneObject.js\"),\n    isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\"),\n    isBuffer = __webpack_require__(/*! ./isBuffer */ \"./node_modules/lodash/isBuffer.js\"),\n    isMap = __webpack_require__(/*! ./isMap */ \"./node_modules/lodash/isMap.js\"),\n    isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/lodash/isObject.js\"),\n    isSet = __webpack_require__(/*! ./isSet */ \"./node_modules/lodash/isSet.js\"),\n    keys = __webpack_require__(/*! ./keys */ \"./node_modules/lodash/keys.js\"),\n    keysIn = __webpack_require__(/*! ./keysIn */ \"./node_modules/lodash/keysIn.js\");\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Deep clone\n *  2 - Flatten inherited properties\n *  4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n  var result,\n      isDeep = bitmask & CLONE_DEEP_FLAG,\n      isFlat = bitmask & CLONE_FLAT_FLAG,\n      isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      result = (isFlat || isFunc) ? {} : initCloneObject(value);\n      if (!isDeep) {\n        return isFlat\n          ? copySymbolsIn(value, baseAssignIn(result, value))\n          : copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (isSet(value)) {\n    value.forEach(function(subValue) {\n      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n    });\n  } else if (isMap(value)) {\n    value.forEach(function(subValue, key) {\n      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n    });\n  }\n\n  var keysFunc = isFull\n    ? (isFlat ? getAllKeysIn : getAllKeys)\n    : (isFlat ? keysIn : keys);\n\n  var props = isArr ? undefined : keysFunc(value);\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n  });\n  return result;\n}\n\nmodule.exports = baseClone;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_baseClone.js?")},"./node_modules/lodash/_baseCreate.js":
/*!********************************************!*\
  !*** ./node_modules/lodash/_baseCreate.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js");\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\nmodule.exports = baseCreate;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_baseCreate.js?')},"./node_modules/lodash/_baseGetAllKeys.js":
/*!************************************************!*\
  !*** ./node_modules/lodash/_baseGetAllKeys.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var arrayPush = __webpack_require__(/*! ./_arrayPush */ "./node_modules/lodash/_arrayPush.js"),\n    isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js");\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_baseGetAllKeys.js?')},"./node_modules/lodash/_baseGetTag.js":
/*!********************************************!*\
  !*** ./node_modules/lodash/_baseGetTag.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"),\n    getRawTag = __webpack_require__(/*! ./_getRawTag */ "./node_modules/lodash/_getRawTag.js"),\n    objectToString = __webpack_require__(/*! ./_objectToString */ "./node_modules/lodash/_objectToString.js");\n\n/** `Object#toString` result references. */\nvar nullTag = \'[object Null]\',\n    undefinedTag = \'[object Undefined]\';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_baseGetTag.js?')},"./node_modules/lodash/_baseIsArguments.js":
/*!*************************************************!*\
  !*** ./node_modules/lodash/_baseIsArguments.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"),\n    isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js");\n\n/** `Object#toString` result references. */\nvar argsTag = \'[object Arguments]\';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_baseIsArguments.js?')},"./node_modules/lodash/_baseIsMap.js":
/*!*******************************************!*\
  !*** ./node_modules/lodash/_baseIsMap.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"),\n    isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js");\n\n/** `Object#toString` result references. */\nvar mapTag = \'[object Map]\';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n  return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_baseIsMap.js?')},"./node_modules/lodash/_baseIsNative.js":
/*!**********************************************!*\
  !*** ./node_modules/lodash/_baseIsNative.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var isFunction = __webpack_require__(/*! ./isFunction */ \"./node_modules/lodash/isFunction.js\"),\n    isMasked = __webpack_require__(/*! ./_isMasked */ \"./node_modules/lodash/_isMasked.js\"),\n    isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/lodash/isObject.js\"),\n    toSource = __webpack_require__(/*! ./_toSource */ \"./node_modules/lodash/_toSource.js\");\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_baseIsNative.js?")},"./node_modules/lodash/_baseIsSet.js":
/*!*******************************************!*\
  !*** ./node_modules/lodash/_baseIsSet.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"),\n    isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js");\n\n/** `Object#toString` result references. */\nvar setTag = \'[object Set]\';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n  return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_baseIsSet.js?')},"./node_modules/lodash/_baseIsTypedArray.js":
/*!**************************************************!*\
  !*** ./node_modules/lodash/_baseIsTypedArray.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ \"./node_modules/lodash/_baseGetTag.js\"),\n    isLength = __webpack_require__(/*! ./isLength */ \"./node_modules/lodash/isLength.js\"),\n    isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/lodash/isObjectLike.js\");\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_baseIsTypedArray.js?")},"./node_modules/lodash/_baseKeys.js":
/*!******************************************!*\
  !*** ./node_modules/lodash/_baseKeys.js ***!
  \******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/lodash/_isPrototype.js"),\n    nativeKeys = __webpack_require__(/*! ./_nativeKeys */ "./node_modules/lodash/_nativeKeys.js");\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn\'t treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != \'constructor\') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeys;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_baseKeys.js?')},"./node_modules/lodash/_baseKeysIn.js":
/*!********************************************!*\
  !*** ./node_modules/lodash/_baseKeysIn.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"),\n    isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/lodash/_isPrototype.js"),\n    nativeKeysIn = __webpack_require__(/*! ./_nativeKeysIn */ "./node_modules/lodash/_nativeKeysIn.js");\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn\'t treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == \'constructor\' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeysIn;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_baseKeysIn.js?')},"./node_modules/lodash/_baseTimes.js":
/*!*******************************************!*\
  !*** ./node_modules/lodash/_baseTimes.js ***!
  \*******************************************/module=>{eval("/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nmodule.exports = baseTimes;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_baseTimes.js?")},"./node_modules/lodash/_baseToString.js":
/*!**********************************************!*\
  !*** ./node_modules/lodash/_baseToString.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var Symbol = __webpack_require__(/*! ./_Symbol */ \"./node_modules/lodash/_Symbol.js\"),\n    arrayMap = __webpack_require__(/*! ./_arrayMap */ \"./node_modules/lodash/_arrayMap.js\"),\n    isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\"),\n    isSymbol = __webpack_require__(/*! ./isSymbol */ \"./node_modules/lodash/isSymbol.js\");\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_baseToString.js?")},"./node_modules/lodash/_baseUnary.js":
/*!*******************************************!*\
  !*** ./node_modules/lodash/_baseUnary.js ***!
  \*******************************************/module=>{eval("/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nmodule.exports = baseUnary;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_baseUnary.js?")},"./node_modules/lodash/_cloneArrayBuffer.js":
/*!**************************************************!*\
  !*** ./node_modules/lodash/_cloneArrayBuffer.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var Uint8Array = __webpack_require__(/*! ./_Uint8Array */ "./node_modules/lodash/_Uint8Array.js");\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_cloneArrayBuffer.js?')},"./node_modules/lodash/_cloneBuffer.js":
/*!*********************************************!*\
  !*** ./node_modules/lodash/_cloneBuffer.js ***!
  \*********************************************/(module,exports,__webpack_require__)=>{eval('/* module decorator */ module = __webpack_require__.nmd(module);\nvar root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");\n\n/** Detect free variable `exports`. */\nvar freeExports =  true && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && "object" == \'object\' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\nmodule.exports = cloneBuffer;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_cloneBuffer.js?')},"./node_modules/lodash/_cloneDataView.js":
/*!***********************************************!*\
  !*** ./node_modules/lodash/_cloneDataView.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var cloneArrayBuffer = __webpack_require__(/*! ./_cloneArrayBuffer */ "./node_modules/lodash/_cloneArrayBuffer.js");\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_cloneDataView.js?')},"./node_modules/lodash/_cloneRegExp.js":
/*!*********************************************!*\
  !*** ./node_modules/lodash/_cloneRegExp.js ***!
  \*********************************************/module=>{eval("/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\n\nmodule.exports = cloneRegExp;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_cloneRegExp.js?")},"./node_modules/lodash/_cloneSymbol.js":
/*!*********************************************!*\
  !*** ./node_modules/lodash/_cloneSymbol.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js");\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_cloneSymbol.js?')},"./node_modules/lodash/_cloneTypedArray.js":
/*!*************************************************!*\
  !*** ./node_modules/lodash/_cloneTypedArray.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var cloneArrayBuffer = __webpack_require__(/*! ./_cloneArrayBuffer */ "./node_modules/lodash/_cloneArrayBuffer.js");\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_cloneTypedArray.js?')},"./node_modules/lodash/_copyArray.js":
/*!*******************************************!*\
  !*** ./node_modules/lodash/_copyArray.js ***!
  \*******************************************/module=>{eval("/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\nmodule.exports = copyArray;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_copyArray.js?")},"./node_modules/lodash/_copyObject.js":
/*!********************************************!*\
  !*** ./node_modules/lodash/_copyObject.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var assignValue = __webpack_require__(/*! ./_assignValue */ "./node_modules/lodash/_assignValue.js"),\n    baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ "./node_modules/lodash/_baseAssignValue.js");\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nmodule.exports = copyObject;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_copyObject.js?')},"./node_modules/lodash/_copySymbols.js":
/*!*********************************************!*\
  !*** ./node_modules/lodash/_copySymbols.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var copyObject = __webpack_require__(/*! ./_copyObject */ "./node_modules/lodash/_copyObject.js"),\n    getSymbols = __webpack_require__(/*! ./_getSymbols */ "./node_modules/lodash/_getSymbols.js");\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_copySymbols.js?')},"./node_modules/lodash/_copySymbolsIn.js":
/*!***********************************************!*\
  !*** ./node_modules/lodash/_copySymbolsIn.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var copyObject = __webpack_require__(/*! ./_copyObject */ "./node_modules/lodash/_copyObject.js"),\n    getSymbolsIn = __webpack_require__(/*! ./_getSymbolsIn */ "./node_modules/lodash/_getSymbolsIn.js");\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n  return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_copySymbolsIn.js?')},"./node_modules/lodash/_coreJsData.js":
/*!********************************************!*\
  !*** ./node_modules/lodash/_coreJsData.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var root = __webpack_require__(/*! ./_root */ \"./node_modules/lodash/_root.js\");\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_coreJsData.js?")},"./node_modules/lodash/_defineProperty.js":
/*!************************************************!*\
  !*** ./node_modules/lodash/_defineProperty.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var getNative = __webpack_require__(/*! ./_getNative */ \"./node_modules/lodash/_getNative.js\");\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_defineProperty.js?")},"./node_modules/lodash/_freeGlobal.js":
/*!********************************************!*\
  !*** ./node_modules/lodash/_freeGlobal.js ***!
  \********************************************/module=>{eval("/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_freeGlobal.js?")},"./node_modules/lodash/_getAllKeys.js":
/*!********************************************!*\
  !*** ./node_modules/lodash/_getAllKeys.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var baseGetAllKeys = __webpack_require__(/*! ./_baseGetAllKeys */ "./node_modules/lodash/_baseGetAllKeys.js"),\n    getSymbols = __webpack_require__(/*! ./_getSymbols */ "./node_modules/lodash/_getSymbols.js"),\n    keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js");\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_getAllKeys.js?')},"./node_modules/lodash/_getAllKeysIn.js":
/*!**********************************************!*\
  !*** ./node_modules/lodash/_getAllKeysIn.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var baseGetAllKeys = __webpack_require__(/*! ./_baseGetAllKeys */ "./node_modules/lodash/_baseGetAllKeys.js"),\n    getSymbolsIn = __webpack_require__(/*! ./_getSymbolsIn */ "./node_modules/lodash/_getSymbolsIn.js"),\n    keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js");\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n  return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_getAllKeysIn.js?')},"./node_modules/lodash/_getMapData.js":
/*!********************************************!*\
  !*** ./node_modules/lodash/_getMapData.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var isKeyable = __webpack_require__(/*! ./_isKeyable */ \"./node_modules/lodash/_isKeyable.js\");\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nmodule.exports = getMapData;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_getMapData.js?")},"./node_modules/lodash/_getNative.js":
/*!*******************************************!*\
  !*** ./node_modules/lodash/_getNative.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var baseIsNative = __webpack_require__(/*! ./_baseIsNative */ "./node_modules/lodash/_baseIsNative.js"),\n    getValue = __webpack_require__(/*! ./_getValue */ "./node_modules/lodash/_getValue.js");\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it\'s native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_getNative.js?')},"./node_modules/lodash/_getPrototype.js":
/*!**********************************************!*\
  !*** ./node_modules/lodash/_getPrototype.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var overArg = __webpack_require__(/*! ./_overArg */ "./node_modules/lodash/_overArg.js");\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_getPrototype.js?')},"./node_modules/lodash/_getRawTag.js":
/*!*******************************************!*\
  !*** ./node_modules/lodash/_getRawTag.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js");\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_getRawTag.js?')},"./node_modules/lodash/_getSymbols.js":
/*!********************************************!*\
  !*** ./node_modules/lodash/_getSymbols.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var arrayFilter = __webpack_require__(/*! ./_arrayFilter */ "./node_modules/lodash/_arrayFilter.js"),\n    stubArray = __webpack_require__(/*! ./stubArray */ "./node_modules/lodash/stubArray.js");\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\nmodule.exports = getSymbols;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_getSymbols.js?')},"./node_modules/lodash/_getSymbolsIn.js":
/*!**********************************************!*\
  !*** ./node_modules/lodash/_getSymbolsIn.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var arrayPush = __webpack_require__(/*! ./_arrayPush */ "./node_modules/lodash/_arrayPush.js"),\n    getPrototype = __webpack_require__(/*! ./_getPrototype */ "./node_modules/lodash/_getPrototype.js"),\n    getSymbols = __webpack_require__(/*! ./_getSymbols */ "./node_modules/lodash/_getSymbols.js"),\n    stubArray = __webpack_require__(/*! ./stubArray */ "./node_modules/lodash/stubArray.js");\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n  var result = [];\n  while (object) {\n    arrayPush(result, getSymbols(object));\n    object = getPrototype(object);\n  }\n  return result;\n};\n\nmodule.exports = getSymbolsIn;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_getSymbolsIn.js?')},"./node_modules/lodash/_getTag.js":
/*!****************************************!*\
  !*** ./node_modules/lodash/_getTag.js ***!
  \****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var DataView = __webpack_require__(/*! ./_DataView */ \"./node_modules/lodash/_DataView.js\"),\n    Map = __webpack_require__(/*! ./_Map */ \"./node_modules/lodash/_Map.js\"),\n    Promise = __webpack_require__(/*! ./_Promise */ \"./node_modules/lodash/_Promise.js\"),\n    Set = __webpack_require__(/*! ./_Set */ \"./node_modules/lodash/_Set.js\"),\n    WeakMap = __webpack_require__(/*! ./_WeakMap */ \"./node_modules/lodash/_WeakMap.js\"),\n    baseGetTag = __webpack_require__(/*! ./_baseGetTag */ \"./node_modules/lodash/_baseGetTag.js\"),\n    toSource = __webpack_require__(/*! ./_toSource */ \"./node_modules/lodash/_toSource.js\");\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\nmodule.exports = getTag;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_getTag.js?")},"./node_modules/lodash/_getValue.js":
/*!******************************************!*\
  !*** ./node_modules/lodash/_getValue.js ***!
  \******************************************/module=>{eval("/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_getValue.js?")},"./node_modules/lodash/_hashClear.js":
/*!*******************************************!*\
  !*** ./node_modules/lodash/_hashClear.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js");\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nmodule.exports = hashClear;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_hashClear.js?')},"./node_modules/lodash/_hashDelete.js":
/*!********************************************!*\
  !*** ./node_modules/lodash/_hashDelete.js ***!
  \********************************************/module=>{eval("/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = hashDelete;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_hashDelete.js?")},"./node_modules/lodash/_hashGet.js":
/*!*****************************************!*\
  !*** ./node_modules/lodash/_hashGet.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ \"./node_modules/lodash/_nativeCreate.js\");\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_hashGet.js?")},"./node_modules/lodash/_hashHas.js":
/*!*****************************************!*\
  !*** ./node_modules/lodash/_hashHas.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js");\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_hashHas.js?')},"./node_modules/lodash/_hashSet.js":
/*!*****************************************!*\
  !*** ./node_modules/lodash/_hashSet.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ \"./node_modules/lodash/_nativeCreate.js\");\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nmodule.exports = hashSet;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_hashSet.js?")},"./node_modules/lodash/_initCloneArray.js":
/*!************************************************!*\
  !*** ./node_modules/lodash/_initCloneArray.js ***!
  \************************************************/module=>{eval("/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = new array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\nmodule.exports = initCloneArray;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_initCloneArray.js?")},"./node_modules/lodash/_initCloneByTag.js":
/*!************************************************!*\
  !*** ./node_modules/lodash/_initCloneByTag.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var cloneArrayBuffer = __webpack_require__(/*! ./_cloneArrayBuffer */ \"./node_modules/lodash/_cloneArrayBuffer.js\"),\n    cloneDataView = __webpack_require__(/*! ./_cloneDataView */ \"./node_modules/lodash/_cloneDataView.js\"),\n    cloneRegExp = __webpack_require__(/*! ./_cloneRegExp */ \"./node_modules/lodash/_cloneRegExp.js\"),\n    cloneSymbol = __webpack_require__(/*! ./_cloneSymbol */ \"./node_modules/lodash/_cloneSymbol.js\"),\n    cloneTypedArray = __webpack_require__(/*! ./_cloneTypedArray */ \"./node_modules/lodash/_cloneTypedArray.js\");\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag:\n      return cloneArrayBuffer(object);\n\n    case boolTag:\n    case dateTag:\n      return new Ctor(+object);\n\n    case dataViewTag:\n      return cloneDataView(object, isDeep);\n\n    case float32Tag: case float64Tag:\n    case int8Tag: case int16Tag: case int32Tag:\n    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n      return cloneTypedArray(object, isDeep);\n\n    case mapTag:\n      return new Ctor;\n\n    case numberTag:\n    case stringTag:\n      return new Ctor(object);\n\n    case regexpTag:\n      return cloneRegExp(object);\n\n    case setTag:\n      return new Ctor;\n\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\n\nmodule.exports = initCloneByTag;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_initCloneByTag.js?")},"./node_modules/lodash/_initCloneObject.js":
/*!*************************************************!*\
  !*** ./node_modules/lodash/_initCloneObject.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var baseCreate = __webpack_require__(/*! ./_baseCreate */ "./node_modules/lodash/_baseCreate.js"),\n    getPrototype = __webpack_require__(/*! ./_getPrototype */ "./node_modules/lodash/_getPrototype.js"),\n    isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/lodash/_isPrototype.js");\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == \'function\' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\nmodule.exports = initCloneObject;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_initCloneObject.js?')},"./node_modules/lodash/_isIndex.js":
/*!*****************************************!*\
  !*** ./node_modules/lodash/_isIndex.js ***!
  \*****************************************/module=>{eval("/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_isIndex.js?")},"./node_modules/lodash/_isKeyable.js":
/*!*******************************************!*\
  !*** ./node_modules/lodash/_isKeyable.js ***!
  \*******************************************/module=>{eval("/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nmodule.exports = isKeyable;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_isKeyable.js?")},"./node_modules/lodash/_isMasked.js":
/*!******************************************!*\
  !*** ./node_modules/lodash/_isMasked.js ***!
  \******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var coreJsData = __webpack_require__(/*! ./_coreJsData */ \"./node_modules/lodash/_coreJsData.js\");\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_isMasked.js?")},"./node_modules/lodash/_isPrototype.js":
/*!*********************************************!*\
  !*** ./node_modules/lodash/_isPrototype.js ***!
  \*********************************************/module=>{eval("/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nmodule.exports = isPrototype;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_isPrototype.js?")},"./node_modules/lodash/_listCacheClear.js":
/*!************************************************!*\
  !*** ./node_modules/lodash/_listCacheClear.js ***!
  \************************************************/module=>{eval("/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_listCacheClear.js?")},"./node_modules/lodash/_listCacheDelete.js":
/*!*************************************************!*\
  !*** ./node_modules/lodash/_listCacheDelete.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js");\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nmodule.exports = listCacheDelete;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_listCacheDelete.js?')},"./node_modules/lodash/_listCacheGet.js":
/*!**********************************************!*\
  !*** ./node_modules/lodash/_listCacheGet.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js");\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_listCacheGet.js?')},"./node_modules/lodash/_listCacheHas.js":
/*!**********************************************!*\
  !*** ./node_modules/lodash/_listCacheHas.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js");\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_listCacheHas.js?')},"./node_modules/lodash/_listCacheSet.js":
/*!**********************************************!*\
  !*** ./node_modules/lodash/_listCacheSet.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js");\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nmodule.exports = listCacheSet;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_listCacheSet.js?')},"./node_modules/lodash/_mapCacheClear.js":
/*!***********************************************!*\
  !*** ./node_modules/lodash/_mapCacheClear.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var Hash = __webpack_require__(/*! ./_Hash */ \"./node_modules/lodash/_Hash.js\"),\n    ListCache = __webpack_require__(/*! ./_ListCache */ \"./node_modules/lodash/_ListCache.js\"),\n    Map = __webpack_require__(/*! ./_Map */ \"./node_modules/lodash/_Map.js\");\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nmodule.exports = mapCacheClear;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_mapCacheClear.js?")},"./node_modules/lodash/_mapCacheDelete.js":
/*!************************************************!*\
  !*** ./node_modules/lodash/_mapCacheDelete.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var getMapData = __webpack_require__(/*! ./_getMapData */ \"./node_modules/lodash/_getMapData.js\");\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = mapCacheDelete;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_mapCacheDelete.js?")},"./node_modules/lodash/_mapCacheGet.js":
/*!*********************************************!*\
  !*** ./node_modules/lodash/_mapCacheGet.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js");\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_mapCacheGet.js?')},"./node_modules/lodash/_mapCacheHas.js":
/*!*********************************************!*\
  !*** ./node_modules/lodash/_mapCacheHas.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js");\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_mapCacheHas.js?')},"./node_modules/lodash/_mapCacheSet.js":
/*!*********************************************!*\
  !*** ./node_modules/lodash/_mapCacheSet.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js");\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nmodule.exports = mapCacheSet;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_mapCacheSet.js?')},"./node_modules/lodash/_nativeCreate.js":
/*!**********************************************!*\
  !*** ./node_modules/lodash/_nativeCreate.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var getNative = __webpack_require__(/*! ./_getNative */ \"./node_modules/lodash/_getNative.js\");\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_nativeCreate.js?")},"./node_modules/lodash/_nativeKeys.js":
/*!********************************************!*\
  !*** ./node_modules/lodash/_nativeKeys.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var overArg = __webpack_require__(/*! ./_overArg */ "./node_modules/lodash/_overArg.js");\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_nativeKeys.js?')},"./node_modules/lodash/_nativeKeysIn.js":
/*!**********************************************!*\
  !*** ./node_modules/lodash/_nativeKeysIn.js ***!
  \**********************************************/module=>{eval("/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = nativeKeysIn;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_nativeKeysIn.js?")},"./node_modules/lodash/_nodeUtil.js":
/*!******************************************!*\
  !*** ./node_modules/lodash/_nodeUtil.js ***!
  \******************************************/(module,exports,__webpack_require__)=>{eval("/* module decorator */ module = __webpack_require__.nmd(module);\nvar freeGlobal = __webpack_require__(/*! ./_freeGlobal */ \"./node_modules/lodash/_freeGlobal.js\");\n\n/** Detect free variable `exports`. */\nvar freeExports =  true && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && \"object\" == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_nodeUtil.js?")},"./node_modules/lodash/_objectToString.js":
/*!************************************************!*\
  !*** ./node_modules/lodash/_objectToString.js ***!
  \************************************************/module=>{eval("/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_objectToString.js?")},"./node_modules/lodash/_overArg.js":
/*!*****************************************!*\
  !*** ./node_modules/lodash/_overArg.js ***!
  \*****************************************/module=>{eval("/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_overArg.js?")},"./node_modules/lodash/_root.js":
/*!**************************************!*\
  !*** ./node_modules/lodash/_root.js ***!
  \**************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ \"./node_modules/lodash/_freeGlobal.js\");\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_root.js?")},"./node_modules/lodash/_stackClear.js":
/*!********************************************!*\
  !*** ./node_modules/lodash/_stackClear.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js");\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nmodule.exports = stackClear;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_stackClear.js?')},"./node_modules/lodash/_stackDelete.js":
/*!*********************************************!*\
  !*** ./node_modules/lodash/_stackDelete.js ***!
  \*********************************************/module=>{eval("/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nmodule.exports = stackDelete;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_stackDelete.js?")},"./node_modules/lodash/_stackGet.js":
/*!******************************************!*\
  !*** ./node_modules/lodash/_stackGet.js ***!
  \******************************************/module=>{eval("/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_stackGet.js?")},"./node_modules/lodash/_stackHas.js":
/*!******************************************!*\
  !*** ./node_modules/lodash/_stackHas.js ***!
  \******************************************/module=>{eval("/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_stackHas.js?")},"./node_modules/lodash/_stackSet.js":
/*!******************************************!*\
  !*** ./node_modules/lodash/_stackSet.js ***!
  \******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js"),\n    Map = __webpack_require__(/*! ./_Map */ "./node_modules/lodash/_Map.js"),\n    MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/lodash/_MapCache.js");\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nmodule.exports = stackSet;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_stackSet.js?')},"./node_modules/lodash/_toSource.js":
/*!******************************************!*\
  !*** ./node_modules/lodash/_toSource.js ***!
  \******************************************/module=>{eval("/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nmodule.exports = toSource;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/_toSource.js?")},"./node_modules/lodash/cloneDeep.js":
/*!******************************************!*\
  !*** ./node_modules/lodash/cloneDeep.js ***!
  \******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var baseClone = __webpack_require__(/*! ./_baseClone */ \"./node_modules/lodash/_baseClone.js\");\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/cloneDeep.js?")},"./node_modules/lodash/eq.js":
/*!***********************************!*\
  !*** ./node_modules/lodash/eq.js ***!
  \***********************************/module=>{eval("/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/eq.js?")},"./node_modules/lodash/escapeRegExp.js":
/*!*********************************************!*\
  !*** ./node_modules/lodash/escapeRegExp.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var toString = __webpack_require__(/*! ./toString */ "./node_modules/lodash/toString.js");\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n    reHasRegExpChar = RegExp(reRegExpChar.source);\n\n/**\n * Escapes the `RegExp` special characters "^", "$", "\\", ".", "*", "+",\n * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=\'\'] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp(\'[lodash](https://lodash.com/)\');\n * // => \'\\[lodash\\]\\(https://lodash\\.com/\\)\'\n */\nfunction escapeRegExp(string) {\n  string = toString(string);\n  return (string && reHasRegExpChar.test(string))\n    ? string.replace(reRegExpChar, \'\\\\$&\')\n    : string;\n}\n\nmodule.exports = escapeRegExp;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/escapeRegExp.js?')},"./node_modules/lodash/isArguments.js":
/*!********************************************!*\
  !*** ./node_modules/lodash/isArguments.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var baseIsArguments = __webpack_require__(/*! ./_baseIsArguments */ \"./node_modules/lodash/_baseIsArguments.js\"),\n    isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/lodash/isObjectLike.js\");\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/isArguments.js?")},"./node_modules/lodash/isArray.js":
/*!****************************************!*\
  !*** ./node_modules/lodash/isArray.js ***!
  \****************************************/module=>{eval("/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/isArray.js?")},"./node_modules/lodash/isArrayLike.js":
/*!********************************************!*\
  !*** ./node_modules/lodash/isArrayLike.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var isFunction = __webpack_require__(/*! ./isFunction */ \"./node_modules/lodash/isFunction.js\"),\n    isLength = __webpack_require__(/*! ./isLength */ \"./node_modules/lodash/isLength.js\");\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/isArrayLike.js?")},"./node_modules/lodash/isBuffer.js":
/*!*****************************************!*\
  !*** ./node_modules/lodash/isBuffer.js ***!
  \*****************************************/(module,exports,__webpack_require__)=>{eval('/* module decorator */ module = __webpack_require__.nmd(module);\nvar root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"),\n    stubFalse = __webpack_require__(/*! ./stubFalse */ "./node_modules/lodash/stubFalse.js");\n\n/** Detect free variable `exports`. */\nvar freeExports =  true && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && "object" == \'object\' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/isBuffer.js?')},"./node_modules/lodash/isFunction.js":
/*!*******************************************!*\
  !*** ./node_modules/lodash/isFunction.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ \"./node_modules/lodash/_baseGetTag.js\"),\n    isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/lodash/isObject.js\");\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/isFunction.js?")},"./node_modules/lodash/isLength.js":
/*!*****************************************!*\
  !*** ./node_modules/lodash/isLength.js ***!
  \*****************************************/module=>{eval("/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/isLength.js?")},"./node_modules/lodash/isMap.js":
/*!**************************************!*\
  !*** ./node_modules/lodash/isMap.js ***!
  \**************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var baseIsMap = __webpack_require__(/*! ./_baseIsMap */ "./node_modules/lodash/_baseIsMap.js"),\n    baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/lodash/_baseUnary.js"),\n    nodeUtil = __webpack_require__(/*! ./_nodeUtil */ "./node_modules/lodash/_nodeUtil.js");\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/isMap.js?')},"./node_modules/lodash/isObject.js":
/*!*****************************************!*\
  !*** ./node_modules/lodash/isObject.js ***!
  \*****************************************/module=>{eval("/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/isObject.js?")},"./node_modules/lodash/isObjectLike.js":
/*!*********************************************!*\
  !*** ./node_modules/lodash/isObjectLike.js ***!
  \*********************************************/module=>{eval("/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/isObjectLike.js?")},"./node_modules/lodash/isSet.js":
/*!**************************************!*\
  !*** ./node_modules/lodash/isSet.js ***!
  \**************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var baseIsSet = __webpack_require__(/*! ./_baseIsSet */ "./node_modules/lodash/_baseIsSet.js"),\n    baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/lodash/_baseUnary.js"),\n    nodeUtil = __webpack_require__(/*! ./_nodeUtil */ "./node_modules/lodash/_nodeUtil.js");\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/isSet.js?')},"./node_modules/lodash/isSymbol.js":
/*!*****************************************!*\
  !*** ./node_modules/lodash/isSymbol.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ \"./node_modules/lodash/_baseGetTag.js\"),\n    isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/lodash/isObjectLike.js\");\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/isSymbol.js?")},"./node_modules/lodash/isTypedArray.js":
/*!*********************************************!*\
  !*** ./node_modules/lodash/isTypedArray.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var baseIsTypedArray = __webpack_require__(/*! ./_baseIsTypedArray */ "./node_modules/lodash/_baseIsTypedArray.js"),\n    baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/lodash/_baseUnary.js"),\n    nodeUtil = __webpack_require__(/*! ./_nodeUtil */ "./node_modules/lodash/_nodeUtil.js");\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/isTypedArray.js?')},"./node_modules/lodash/keys.js":
/*!*************************************!*\
  !*** ./node_modules/lodash/keys.js ***!
  \*************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var arrayLikeKeys = __webpack_require__(/*! ./_arrayLikeKeys */ \"./node_modules/lodash/_arrayLikeKeys.js\"),\n    baseKeys = __webpack_require__(/*! ./_baseKeys */ \"./node_modules/lodash/_baseKeys.js\"),\n    isArrayLike = __webpack_require__(/*! ./isArrayLike */ \"./node_modules/lodash/isArrayLike.js\");\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/keys.js?")},"./node_modules/lodash/keysIn.js":
/*!***************************************!*\
  !*** ./node_modules/lodash/keysIn.js ***!
  \***************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var arrayLikeKeys = __webpack_require__(/*! ./_arrayLikeKeys */ \"./node_modules/lodash/_arrayLikeKeys.js\"),\n    baseKeysIn = __webpack_require__(/*! ./_baseKeysIn */ \"./node_modules/lodash/_baseKeysIn.js\"),\n    isArrayLike = __webpack_require__(/*! ./isArrayLike */ \"./node_modules/lodash/isArrayLike.js\");\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/keysIn.js?")},"./node_modules/lodash/lodash.js":
/*!***************************************!*\
  !*** ./node_modules/lodash/lodash.js ***!
  \***************************************/function(module,exports,__webpack_require__){eval("/* module decorator */ module = __webpack_require__.nmd(module);\nvar __WEBPACK_AMD_DEFINE_RESULT__;/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n  /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n  var undefined;\n\n  /** Used as the semantic version number. */\n  var VERSION = '4.17.21';\n\n  /** Used as the size to enable large array optimizations. */\n  var LARGE_ARRAY_SIZE = 200;\n\n  /** Error message constants. */\n  var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n      FUNC_ERROR_TEXT = 'Expected a function',\n      INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n  /** Used to stand-in for `undefined` hash values. */\n  var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n  /** Used as the maximum memoize cache size. */\n  var MAX_MEMOIZE_SIZE = 500;\n\n  /** Used as the internal argument placeholder. */\n  var PLACEHOLDER = '__lodash_placeholder__';\n\n  /** Used to compose bitmasks for cloning. */\n  var CLONE_DEEP_FLAG = 1,\n      CLONE_FLAT_FLAG = 2,\n      CLONE_SYMBOLS_FLAG = 4;\n\n  /** Used to compose bitmasks for value comparisons. */\n  var COMPARE_PARTIAL_FLAG = 1,\n      COMPARE_UNORDERED_FLAG = 2;\n\n  /** Used to compose bitmasks for function metadata. */\n  var WRAP_BIND_FLAG = 1,\n      WRAP_BIND_KEY_FLAG = 2,\n      WRAP_CURRY_BOUND_FLAG = 4,\n      WRAP_CURRY_FLAG = 8,\n      WRAP_CURRY_RIGHT_FLAG = 16,\n      WRAP_PARTIAL_FLAG = 32,\n      WRAP_PARTIAL_RIGHT_FLAG = 64,\n      WRAP_ARY_FLAG = 128,\n      WRAP_REARG_FLAG = 256,\n      WRAP_FLIP_FLAG = 512;\n\n  /** Used as default options for `_.truncate`. */\n  var DEFAULT_TRUNC_LENGTH = 30,\n      DEFAULT_TRUNC_OMISSION = '...';\n\n  /** Used to detect hot functions by number of calls within a span of milliseconds. */\n  var HOT_COUNT = 800,\n      HOT_SPAN = 16;\n\n  /** Used to indicate the type of lazy iteratees. */\n  var LAZY_FILTER_FLAG = 1,\n      LAZY_MAP_FLAG = 2,\n      LAZY_WHILE_FLAG = 3;\n\n  /** Used as references for various `Number` constants. */\n  var INFINITY = 1 / 0,\n      MAX_SAFE_INTEGER = 9007199254740991,\n      MAX_INTEGER = 1.7976931348623157e+308,\n      NAN = 0 / 0;\n\n  /** Used as references for the maximum length and index of an array. */\n  var MAX_ARRAY_LENGTH = 4294967295,\n      MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n      HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n  /** Used to associate wrap methods with their bit flags. */\n  var wrapFlags = [\n    ['ary', WRAP_ARY_FLAG],\n    ['bind', WRAP_BIND_FLAG],\n    ['bindKey', WRAP_BIND_KEY_FLAG],\n    ['curry', WRAP_CURRY_FLAG],\n    ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n    ['flip', WRAP_FLIP_FLAG],\n    ['partial', WRAP_PARTIAL_FLAG],\n    ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n    ['rearg', WRAP_REARG_FLAG]\n  ];\n\n  /** `Object#toString` result references. */\n  var argsTag = '[object Arguments]',\n      arrayTag = '[object Array]',\n      asyncTag = '[object AsyncFunction]',\n      boolTag = '[object Boolean]',\n      dateTag = '[object Date]',\n      domExcTag = '[object DOMException]',\n      errorTag = '[object Error]',\n      funcTag = '[object Function]',\n      genTag = '[object GeneratorFunction]',\n      mapTag = '[object Map]',\n      numberTag = '[object Number]',\n      nullTag = '[object Null]',\n      objectTag = '[object Object]',\n      promiseTag = '[object Promise]',\n      proxyTag = '[object Proxy]',\n      regexpTag = '[object RegExp]',\n      setTag = '[object Set]',\n      stringTag = '[object String]',\n      symbolTag = '[object Symbol]',\n      undefinedTag = '[object Undefined]',\n      weakMapTag = '[object WeakMap]',\n      weakSetTag = '[object WeakSet]';\n\n  var arrayBufferTag = '[object ArrayBuffer]',\n      dataViewTag = '[object DataView]',\n      float32Tag = '[object Float32Array]',\n      float64Tag = '[object Float64Array]',\n      int8Tag = '[object Int8Array]',\n      int16Tag = '[object Int16Array]',\n      int32Tag = '[object Int32Array]',\n      uint8Tag = '[object Uint8Array]',\n      uint8ClampedTag = '[object Uint8ClampedArray]',\n      uint16Tag = '[object Uint16Array]',\n      uint32Tag = '[object Uint32Array]';\n\n  /** Used to match empty string literals in compiled template source. */\n  var reEmptyStringLeading = /\\b__p \\+= '';/g,\n      reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n      reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n  /** Used to match HTML entities and HTML characters. */\n  var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n      reUnescapedHtml = /[&<>\"']/g,\n      reHasEscapedHtml = RegExp(reEscapedHtml.source),\n      reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n  /** Used to match template delimiters. */\n  var reEscape = /<%-([\\s\\S]+?)%>/g,\n      reEvaluate = /<%([\\s\\S]+?)%>/g,\n      reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n  /** Used to match property names within property paths. */\n  var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n      reIsPlainProp = /^\\w*$/,\n      rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n  /**\n   * Used to match `RegExp`\n   * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n   */\n  var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n      reHasRegExpChar = RegExp(reRegExpChar.source);\n\n  /** Used to match leading whitespace. */\n  var reTrimStart = /^\\s+/;\n\n  /** Used to match a single whitespace character. */\n  var reWhitespace = /\\s/;\n\n  /** Used to match wrap detail comments. */\n  var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n      reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n      reSplitDetails = /,? & /;\n\n  /** Used to match words composed of alphanumeric characters. */\n  var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n  /**\n   * Used to validate the `validate` option in `_.template` variable.\n   *\n   * Forbids characters which could potentially change the meaning of the function argument definition:\n   * - \"(),\" (modification of function parameters)\n   * - \"=\" (default value)\n   * - \"[]{}\" (destructuring of function parameters)\n   * - \"/\" (beginning of a comment)\n   * - whitespace\n   */\n  var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n  /** Used to match backslashes in property paths. */\n  var reEscapeChar = /\\\\(\\\\)?/g;\n\n  /**\n   * Used to match\n   * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n   */\n  var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n  /** Used to match `RegExp` flags from their coerced string values. */\n  var reFlags = /\\w*$/;\n\n  /** Used to detect bad signed hexadecimal string values. */\n  var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n  /** Used to detect binary string values. */\n  var reIsBinary = /^0b[01]+$/i;\n\n  /** Used to detect host constructors (Safari). */\n  var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n  /** Used to detect octal string values. */\n  var reIsOctal = /^0o[0-7]+$/i;\n\n  /** Used to detect unsigned integer values. */\n  var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n  /** Used to match Latin Unicode letters (excluding mathematical operators). */\n  var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n  /** Used to ensure capturing order of template delimiters. */\n  var reNoMatch = /($^)/;\n\n  /** Used to match unescaped characters in compiled string literals. */\n  var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n  /** Used to compose unicode character classes. */\n  var rsAstralRange = '\\\\ud800-\\\\udfff',\n      rsComboMarksRange = '\\\\u0300-\\\\u036f',\n      reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n      rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n      rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n      rsDingbatRange = '\\\\u2700-\\\\u27bf',\n      rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n      rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n      rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n      rsPunctuationRange = '\\\\u2000-\\\\u206f',\n      rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n      rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n      rsVarRange = '\\\\ufe0e\\\\ufe0f',\n      rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n  /** Used to compose unicode capture groups. */\n  var rsApos = \"['\\u2019]\",\n      rsAstral = '[' + rsAstralRange + ']',\n      rsBreak = '[' + rsBreakRange + ']',\n      rsCombo = '[' + rsComboRange + ']',\n      rsDigits = '\\\\d+',\n      rsDingbat = '[' + rsDingbatRange + ']',\n      rsLower = '[' + rsLowerRange + ']',\n      rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n      rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n      rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n      rsNonAstral = '[^' + rsAstralRange + ']',\n      rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n      rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n      rsUpper = '[' + rsUpperRange + ']',\n      rsZWJ = '\\\\u200d';\n\n  /** Used to compose unicode regexes. */\n  var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n      rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n      rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n      rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n      reOptMod = rsModifier + '?',\n      rsOptVar = '[' + rsVarRange + ']?',\n      rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n      rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n      rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n      rsSeq = rsOptVar + reOptMod + rsOptJoin,\n      rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n      rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n  /** Used to match apostrophes. */\n  var reApos = RegExp(rsApos, 'g');\n\n  /**\n   * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n   * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n   */\n  var reComboMark = RegExp(rsCombo, 'g');\n\n  /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n  var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n  /** Used to match complex or compound words. */\n  var reUnicodeWord = RegExp([\n    rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n    rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n    rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n    rsUpper + '+' + rsOptContrUpper,\n    rsOrdUpper,\n    rsOrdLower,\n    rsDigits,\n    rsEmoji\n  ].join('|'), 'g');\n\n  /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n  var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n  /** Used to detect strings that need a more robust regexp to match words. */\n  var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n  /** Used to assign default `context` object properties. */\n  var contextProps = [\n    'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n    'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n    'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n    'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n    '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n  ];\n\n  /** Used to make template sourceURLs easier to identify. */\n  var templateCounter = -1;\n\n  /** Used to identify `toStringTag` values of typed arrays. */\n  var typedArrayTags = {};\n  typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n  typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n  typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n  typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n  typedArrayTags[uint32Tag] = true;\n  typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n  typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n  typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n  typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n  typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n  typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n  typedArrayTags[setTag] = typedArrayTags[stringTag] =\n  typedArrayTags[weakMapTag] = false;\n\n  /** Used to identify `toStringTag` values supported by `_.clone`. */\n  var cloneableTags = {};\n  cloneableTags[argsTag] = cloneableTags[arrayTag] =\n  cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n  cloneableTags[boolTag] = cloneableTags[dateTag] =\n  cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n  cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n  cloneableTags[int32Tag] = cloneableTags[mapTag] =\n  cloneableTags[numberTag] = cloneableTags[objectTag] =\n  cloneableTags[regexpTag] = cloneableTags[setTag] =\n  cloneableTags[stringTag] = cloneableTags[symbolTag] =\n  cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n  cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n  cloneableTags[errorTag] = cloneableTags[funcTag] =\n  cloneableTags[weakMapTag] = false;\n\n  /** Used to map Latin Unicode letters to basic Latin letters. */\n  var deburredLetters = {\n    // Latin-1 Supplement block.\n    '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n    '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n    '\\xc7': 'C',  '\\xe7': 'c',\n    '\\xd0': 'D',  '\\xf0': 'd',\n    '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n    '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n    '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n    '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n    '\\xd1': 'N',  '\\xf1': 'n',\n    '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n    '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n    '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n    '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n    '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n    '\\xc6': 'Ae', '\\xe6': 'ae',\n    '\\xde': 'Th', '\\xfe': 'th',\n    '\\xdf': 'ss',\n    // Latin Extended-A block.\n    '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n    '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n    '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n    '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n    '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n    '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n    '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n    '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n    '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n    '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n    '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n    '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n    '\\u0134': 'J',  '\\u0135': 'j',\n    '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n    '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n    '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n    '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n    '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n    '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n    '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n    '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n    '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n    '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n    '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n    '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n    '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n    '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n    '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n    '\\u0174': 'W',  '\\u0175': 'w',\n    '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n    '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n    '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n    '\\u0132': 'IJ', '\\u0133': 'ij',\n    '\\u0152': 'Oe', '\\u0153': 'oe',\n    '\\u0149': \"'n\", '\\u017f': 's'\n  };\n\n  /** Used to map characters to HTML entities. */\n  var htmlEscapes = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#39;'\n  };\n\n  /** Used to map HTML entities to characters. */\n  var htmlUnescapes = {\n    '&amp;': '&',\n    '&lt;': '<',\n    '&gt;': '>',\n    '&quot;': '\"',\n    '&#39;': \"'\"\n  };\n\n  /** Used to escape characters for inclusion in compiled string literals. */\n  var stringEscapes = {\n    '\\\\': '\\\\',\n    \"'\": \"'\",\n    '\\n': 'n',\n    '\\r': 'r',\n    '\\u2028': 'u2028',\n    '\\u2029': 'u2029'\n  };\n\n  /** Built-in method references without a dependency on `root`. */\n  var freeParseFloat = parseFloat,\n      freeParseInt = parseInt;\n\n  /** Detect free variable `global` from Node.js. */\n  var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n  /** Detect free variable `self`. */\n  var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n  /** Used as a reference to the global object. */\n  var root = freeGlobal || freeSelf || Function('return this')();\n\n  /** Detect free variable `exports`. */\n  var freeExports =  true && exports && !exports.nodeType && exports;\n\n  /** Detect free variable `module`. */\n  var freeModule = freeExports && \"object\" == 'object' && module && !module.nodeType && module;\n\n  /** Detect the popular CommonJS extension `module.exports`. */\n  var moduleExports = freeModule && freeModule.exports === freeExports;\n\n  /** Detect free variable `process` from Node.js. */\n  var freeProcess = moduleExports && freeGlobal.process;\n\n  /** Used to access faster Node.js helpers. */\n  var nodeUtil = (function() {\n    try {\n      // Use `util.types` for Node.js 10+.\n      var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n      if (types) {\n        return types;\n      }\n\n      // Legacy `process.binding('util')` for Node.js < 10.\n      return freeProcess && freeProcess.binding && freeProcess.binding('util');\n    } catch (e) {}\n  }());\n\n  /* Node.js helper references. */\n  var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n      nodeIsDate = nodeUtil && nodeUtil.isDate,\n      nodeIsMap = nodeUtil && nodeUtil.isMap,\n      nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n      nodeIsSet = nodeUtil && nodeUtil.isSet,\n      nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * A faster alternative to `Function#apply`, this function invokes `func`\n   * with the `this` binding of `thisArg` and the arguments of `args`.\n   *\n   * @private\n   * @param {Function} func The function to invoke.\n   * @param {*} thisArg The `this` binding of `func`.\n   * @param {Array} args The arguments to invoke `func` with.\n   * @returns {*} Returns the result of `func`.\n   */\n  function apply(func, thisArg, args) {\n    switch (args.length) {\n      case 0: return func.call(thisArg);\n      case 1: return func.call(thisArg, args[0]);\n      case 2: return func.call(thisArg, args[0], args[1]);\n      case 3: return func.call(thisArg, args[0], args[1], args[2]);\n    }\n    return func.apply(thisArg, args);\n  }\n\n  /**\n   * A specialized version of `baseAggregator` for arrays.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} setter The function to set `accumulator` values.\n   * @param {Function} iteratee The iteratee to transform keys.\n   * @param {Object} accumulator The initial aggregated object.\n   * @returns {Function} Returns `accumulator`.\n   */\n  function arrayAggregator(array, setter, iteratee, accumulator) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      var value = array[index];\n      setter(accumulator, value, iteratee(value), array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.forEach` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayEach(array, iteratee) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (iteratee(array[index], index, array) === false) {\n        break;\n      }\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.forEachRight` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayEachRight(array, iteratee) {\n    var length = array == null ? 0 : array.length;\n\n    while (length--) {\n      if (iteratee(array[length], length, array) === false) {\n        break;\n      }\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.every` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {boolean} Returns `true` if all elements pass the predicate check,\n   *  else `false`.\n   */\n  function arrayEvery(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (!predicate(array[index], index, array)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  /**\n   * A specialized version of `_.filter` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {Array} Returns the new filtered array.\n   */\n  function arrayFilter(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length,\n        resIndex = 0,\n        result = [];\n\n    while (++index < length) {\n      var value = array[index];\n      if (predicate(value, index, array)) {\n        result[resIndex++] = value;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * A specialized version of `_.includes` for arrays without support for\n   * specifying an index to search from.\n   *\n   * @private\n   * @param {Array} [array] The array to inspect.\n   * @param {*} target The value to search for.\n   * @returns {boolean} Returns `true` if `target` is found, else `false`.\n   */\n  function arrayIncludes(array, value) {\n    var length = array == null ? 0 : array.length;\n    return !!length && baseIndexOf(array, value, 0) > -1;\n  }\n\n  /**\n   * This function is like `arrayIncludes` except that it accepts a comparator.\n   *\n   * @private\n   * @param {Array} [array] The array to inspect.\n   * @param {*} target The value to search for.\n   * @param {Function} comparator The comparator invoked per element.\n   * @returns {boolean} Returns `true` if `target` is found, else `false`.\n   */\n  function arrayIncludesWith(array, value, comparator) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (comparator(value, array[index])) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * A specialized version of `_.map` for arrays without support for iteratee\n   * shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns the new mapped array.\n   */\n  function arrayMap(array, iteratee) {\n    var index = -1,\n        length = array == null ? 0 : array.length,\n        result = Array(length);\n\n    while (++index < length) {\n      result[index] = iteratee(array[index], index, array);\n    }\n    return result;\n  }\n\n  /**\n   * Appends the elements of `values` to `array`.\n   *\n   * @private\n   * @param {Array} array The array to modify.\n   * @param {Array} values The values to append.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayPush(array, values) {\n    var index = -1,\n        length = values.length,\n        offset = array.length;\n\n    while (++index < length) {\n      array[offset + index] = values[index];\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.reduce` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} [accumulator] The initial value.\n   * @param {boolean} [initAccum] Specify using the first element of `array` as\n   *  the initial value.\n   * @returns {*} Returns the accumulated value.\n   */\n  function arrayReduce(array, iteratee, accumulator, initAccum) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    if (initAccum && length) {\n      accumulator = array[++index];\n    }\n    while (++index < length) {\n      accumulator = iteratee(accumulator, array[index], index, array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.reduceRight` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} [accumulator] The initial value.\n   * @param {boolean} [initAccum] Specify using the last element of `array` as\n   *  the initial value.\n   * @returns {*} Returns the accumulated value.\n   */\n  function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n    var length = array == null ? 0 : array.length;\n    if (initAccum && length) {\n      accumulator = array[--length];\n    }\n    while (length--) {\n      accumulator = iteratee(accumulator, array[length], length, array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.some` for arrays without support for iteratee\n   * shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {boolean} Returns `true` if any element passes the predicate check,\n   *  else `false`.\n   */\n  function arraySome(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (predicate(array[index], index, array)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * Gets the size of an ASCII `string`.\n   *\n   * @private\n   * @param {string} string The string inspect.\n   * @returns {number} Returns the string size.\n   */\n  var asciiSize = baseProperty('length');\n\n  /**\n   * Converts an ASCII `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function asciiToArray(string) {\n    return string.split('');\n  }\n\n  /**\n   * Splits an ASCII `string` into an array of its words.\n   *\n   * @private\n   * @param {string} The string to inspect.\n   * @returns {Array} Returns the words of `string`.\n   */\n  function asciiWords(string) {\n    return string.match(reAsciiWord) || [];\n  }\n\n  /**\n   * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n   * without support for iteratee shorthands, which iterates over `collection`\n   * using `eachFunc`.\n   *\n   * @private\n   * @param {Array|Object} collection The collection to inspect.\n   * @param {Function} predicate The function invoked per iteration.\n   * @param {Function} eachFunc The function to iterate over `collection`.\n   * @returns {*} Returns the found element or its key, else `undefined`.\n   */\n  function baseFindKey(collection, predicate, eachFunc) {\n    var result;\n    eachFunc(collection, function(value, key, collection) {\n      if (predicate(value, key, collection)) {\n        result = key;\n        return false;\n      }\n    });\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.findIndex` and `_.findLastIndex` without\n   * support for iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {Function} predicate The function invoked per iteration.\n   * @param {number} fromIndex The index to search from.\n   * @param {boolean} [fromRight] Specify iterating from right to left.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseFindIndex(array, predicate, fromIndex, fromRight) {\n    var length = array.length,\n        index = fromIndex + (fromRight ? 1 : -1);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (predicate(array[index], index, array)) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseIndexOf(array, value, fromIndex) {\n    return value === value\n      ? strictIndexOf(array, value, fromIndex)\n      : baseFindIndex(array, baseIsNaN, fromIndex);\n  }\n\n  /**\n   * This function is like `baseIndexOf` except that it accepts a comparator.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @param {Function} comparator The comparator invoked per element.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseIndexOfWith(array, value, fromIndex, comparator) {\n    var index = fromIndex - 1,\n        length = array.length;\n\n    while (++index < length) {\n      if (comparator(array[index], value)) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * The base implementation of `_.isNaN` without support for number objects.\n   *\n   * @private\n   * @param {*} value The value to check.\n   * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n   */\n  function baseIsNaN(value) {\n    return value !== value;\n  }\n\n  /**\n   * The base implementation of `_.mean` and `_.meanBy` without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {number} Returns the mean.\n   */\n  function baseMean(array, iteratee) {\n    var length = array == null ? 0 : array.length;\n    return length ? (baseSum(array, iteratee) / length) : NAN;\n  }\n\n  /**\n   * The base implementation of `_.property` without support for deep paths.\n   *\n   * @private\n   * @param {string} key The key of the property to get.\n   * @returns {Function} Returns the new accessor function.\n   */\n  function baseProperty(key) {\n    return function(object) {\n      return object == null ? undefined : object[key];\n    };\n  }\n\n  /**\n   * The base implementation of `_.propertyOf` without support for deep paths.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @returns {Function} Returns the new accessor function.\n   */\n  function basePropertyOf(object) {\n    return function(key) {\n      return object == null ? undefined : object[key];\n    };\n  }\n\n  /**\n   * The base implementation of `_.reduce` and `_.reduceRight`, without support\n   * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n   *\n   * @private\n   * @param {Array|Object} collection The collection to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} accumulator The initial value.\n   * @param {boolean} initAccum Specify using the first or last element of\n   *  `collection` as the initial value.\n   * @param {Function} eachFunc The function to iterate over `collection`.\n   * @returns {*} Returns the accumulated value.\n   */\n  function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n    eachFunc(collection, function(value, index, collection) {\n      accumulator = initAccum\n        ? (initAccum = false, value)\n        : iteratee(accumulator, value, index, collection);\n    });\n    return accumulator;\n  }\n\n  /**\n   * The base implementation of `_.sortBy` which uses `comparer` to define the\n   * sort order of `array` and replaces criteria objects with their corresponding\n   * values.\n   *\n   * @private\n   * @param {Array} array The array to sort.\n   * @param {Function} comparer The function to define sort order.\n   * @returns {Array} Returns `array`.\n   */\n  function baseSortBy(array, comparer) {\n    var length = array.length;\n\n    array.sort(comparer);\n    while (length--) {\n      array[length] = array[length].value;\n    }\n    return array;\n  }\n\n  /**\n   * The base implementation of `_.sum` and `_.sumBy` without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {number} Returns the sum.\n   */\n  function baseSum(array, iteratee) {\n    var result,\n        index = -1,\n        length = array.length;\n\n    while (++index < length) {\n      var current = iteratee(array[index]);\n      if (current !== undefined) {\n        result = result === undefined ? current : (result + current);\n      }\n    }\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.times` without support for iteratee shorthands\n   * or max array length checks.\n   *\n   * @private\n   * @param {number} n The number of times to invoke `iteratee`.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns the array of results.\n   */\n  function baseTimes(n, iteratee) {\n    var index = -1,\n        result = Array(n);\n\n    while (++index < n) {\n      result[index] = iteratee(index);\n    }\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n   * of key-value pairs for `object` corresponding to the property names of `props`.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @param {Array} props The property names to get values for.\n   * @returns {Object} Returns the key-value pairs.\n   */\n  function baseToPairs(object, props) {\n    return arrayMap(props, function(key) {\n      return [key, object[key]];\n    });\n  }\n\n  /**\n   * The base implementation of `_.trim`.\n   *\n   * @private\n   * @param {string} string The string to trim.\n   * @returns {string} Returns the trimmed string.\n   */\n  function baseTrim(string) {\n    return string\n      ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n      : string;\n  }\n\n  /**\n   * The base implementation of `_.unary` without support for storing metadata.\n   *\n   * @private\n   * @param {Function} func The function to cap arguments for.\n   * @returns {Function} Returns the new capped function.\n   */\n  function baseUnary(func) {\n    return function(value) {\n      return func(value);\n    };\n  }\n\n  /**\n   * The base implementation of `_.values` and `_.valuesIn` which creates an\n   * array of `object` property values corresponding to the property names\n   * of `props`.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @param {Array} props The property names to get values for.\n   * @returns {Object} Returns the array of property values.\n   */\n  function baseValues(object, props) {\n    return arrayMap(props, function(key) {\n      return object[key];\n    });\n  }\n\n  /**\n   * Checks if a `cache` value for `key` exists.\n   *\n   * @private\n   * @param {Object} cache The cache to query.\n   * @param {string} key The key of the entry to check.\n   * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n   */\n  function cacheHas(cache, key) {\n    return cache.has(key);\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n   * that is not found in the character symbols.\n   *\n   * @private\n   * @param {Array} strSymbols The string symbols to inspect.\n   * @param {Array} chrSymbols The character symbols to find.\n   * @returns {number} Returns the index of the first unmatched string symbol.\n   */\n  function charsStartIndex(strSymbols, chrSymbols) {\n    var index = -1,\n        length = strSymbols.length;\n\n    while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n    return index;\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n   * that is not found in the character symbols.\n   *\n   * @private\n   * @param {Array} strSymbols The string symbols to inspect.\n   * @param {Array} chrSymbols The character symbols to find.\n   * @returns {number} Returns the index of the last unmatched string symbol.\n   */\n  function charsEndIndex(strSymbols, chrSymbols) {\n    var index = strSymbols.length;\n\n    while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n    return index;\n  }\n\n  /**\n   * Gets the number of `placeholder` occurrences in `array`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} placeholder The placeholder to search for.\n   * @returns {number} Returns the placeholder count.\n   */\n  function countHolders(array, placeholder) {\n    var length = array.length,\n        result = 0;\n\n    while (length--) {\n      if (array[length] === placeholder) {\n        ++result;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n   * letters to basic Latin letters.\n   *\n   * @private\n   * @param {string} letter The matched letter to deburr.\n   * @returns {string} Returns the deburred letter.\n   */\n  var deburrLetter = basePropertyOf(deburredLetters);\n\n  /**\n   * Used by `_.escape` to convert characters to HTML entities.\n   *\n   * @private\n   * @param {string} chr The matched character to escape.\n   * @returns {string} Returns the escaped character.\n   */\n  var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n  /**\n   * Used by `_.template` to escape characters for inclusion in compiled string literals.\n   *\n   * @private\n   * @param {string} chr The matched character to escape.\n   * @returns {string} Returns the escaped character.\n   */\n  function escapeStringChar(chr) {\n    return '\\\\' + stringEscapes[chr];\n  }\n\n  /**\n   * Gets the value at `key` of `object`.\n   *\n   * @private\n   * @param {Object} [object] The object to query.\n   * @param {string} key The key of the property to get.\n   * @returns {*} Returns the property value.\n   */\n  function getValue(object, key) {\n    return object == null ? undefined : object[key];\n  }\n\n  /**\n   * Checks if `string` contains Unicode symbols.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n   */\n  function hasUnicode(string) {\n    return reHasUnicode.test(string);\n  }\n\n  /**\n   * Checks if `string` contains a word composed of Unicode symbols.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {boolean} Returns `true` if a word is found, else `false`.\n   */\n  function hasUnicodeWord(string) {\n    return reHasUnicodeWord.test(string);\n  }\n\n  /**\n   * Converts `iterator` to an array.\n   *\n   * @private\n   * @param {Object} iterator The iterator to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function iteratorToArray(iterator) {\n    var data,\n        result = [];\n\n    while (!(data = iterator.next()).done) {\n      result.push(data.value);\n    }\n    return result;\n  }\n\n  /**\n   * Converts `map` to its key-value pairs.\n   *\n   * @private\n   * @param {Object} map The map to convert.\n   * @returns {Array} Returns the key-value pairs.\n   */\n  function mapToArray(map) {\n    var index = -1,\n        result = Array(map.size);\n\n    map.forEach(function(value, key) {\n      result[++index] = [key, value];\n    });\n    return result;\n  }\n\n  /**\n   * Creates a unary function that invokes `func` with its argument transformed.\n   *\n   * @private\n   * @param {Function} func The function to wrap.\n   * @param {Function} transform The argument transform.\n   * @returns {Function} Returns the new function.\n   */\n  function overArg(func, transform) {\n    return function(arg) {\n      return func(transform(arg));\n    };\n  }\n\n  /**\n   * Replaces all `placeholder` elements in `array` with an internal placeholder\n   * and returns an array of their indexes.\n   *\n   * @private\n   * @param {Array} array The array to modify.\n   * @param {*} placeholder The placeholder to replace.\n   * @returns {Array} Returns the new array of placeholder indexes.\n   */\n  function replaceHolders(array, placeholder) {\n    var index = -1,\n        length = array.length,\n        resIndex = 0,\n        result = [];\n\n    while (++index < length) {\n      var value = array[index];\n      if (value === placeholder || value === PLACEHOLDER) {\n        array[index] = PLACEHOLDER;\n        result[resIndex++] = index;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * Converts `set` to an array of its values.\n   *\n   * @private\n   * @param {Object} set The set to convert.\n   * @returns {Array} Returns the values.\n   */\n  function setToArray(set) {\n    var index = -1,\n        result = Array(set.size);\n\n    set.forEach(function(value) {\n      result[++index] = value;\n    });\n    return result;\n  }\n\n  /**\n   * Converts `set` to its value-value pairs.\n   *\n   * @private\n   * @param {Object} set The set to convert.\n   * @returns {Array} Returns the value-value pairs.\n   */\n  function setToPairs(set) {\n    var index = -1,\n        result = Array(set.size);\n\n    set.forEach(function(value) {\n      result[++index] = [value, value];\n    });\n    return result;\n  }\n\n  /**\n   * A specialized version of `_.indexOf` which performs strict equality\n   * comparisons of values, i.e. `===`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function strictIndexOf(array, value, fromIndex) {\n    var index = fromIndex - 1,\n        length = array.length;\n\n    while (++index < length) {\n      if (array[index] === value) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * A specialized version of `_.lastIndexOf` which performs strict equality\n   * comparisons of values, i.e. `===`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function strictLastIndexOf(array, value, fromIndex) {\n    var index = fromIndex + 1;\n    while (index--) {\n      if (array[index] === value) {\n        return index;\n      }\n    }\n    return index;\n  }\n\n  /**\n   * Gets the number of symbols in `string`.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {number} Returns the string size.\n   */\n  function stringSize(string) {\n    return hasUnicode(string)\n      ? unicodeSize(string)\n      : asciiSize(string);\n  }\n\n  /**\n   * Converts `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function stringToArray(string) {\n    return hasUnicode(string)\n      ? unicodeToArray(string)\n      : asciiToArray(string);\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n   * character of `string`.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {number} Returns the index of the last non-whitespace character.\n   */\n  function trimmedEndIndex(string) {\n    var index = string.length;\n\n    while (index-- && reWhitespace.test(string.charAt(index))) {}\n    return index;\n  }\n\n  /**\n   * Used by `_.unescape` to convert HTML entities to characters.\n   *\n   * @private\n   * @param {string} chr The matched character to unescape.\n   * @returns {string} Returns the unescaped character.\n   */\n  var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n  /**\n   * Gets the size of a Unicode `string`.\n   *\n   * @private\n   * @param {string} string The string inspect.\n   * @returns {number} Returns the string size.\n   */\n  function unicodeSize(string) {\n    var result = reUnicode.lastIndex = 0;\n    while (reUnicode.test(string)) {\n      ++result;\n    }\n    return result;\n  }\n\n  /**\n   * Converts a Unicode `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function unicodeToArray(string) {\n    return string.match(reUnicode) || [];\n  }\n\n  /**\n   * Splits a Unicode `string` into an array of its words.\n   *\n   * @private\n   * @param {string} The string to inspect.\n   * @returns {Array} Returns the words of `string`.\n   */\n  function unicodeWords(string) {\n    return string.match(reUnicodeWord) || [];\n  }\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * Create a new pristine `lodash` function using the `context` object.\n   *\n   * @static\n   * @memberOf _\n   * @since 1.1.0\n   * @category Util\n   * @param {Object} [context=root] The context object.\n   * @returns {Function} Returns a new `lodash` function.\n   * @example\n   *\n   * _.mixin({ 'foo': _.constant('foo') });\n   *\n   * var lodash = _.runInContext();\n   * lodash.mixin({ 'bar': lodash.constant('bar') });\n   *\n   * _.isFunction(_.foo);\n   * // => true\n   * _.isFunction(_.bar);\n   * // => false\n   *\n   * lodash.isFunction(lodash.foo);\n   * // => false\n   * lodash.isFunction(lodash.bar);\n   * // => true\n   *\n   * // Create a suped-up `defer` in Node.js.\n   * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n   */\n  var runInContext = (function runInContext(context) {\n    context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n    /** Built-in constructor references. */\n    var Array = context.Array,\n        Date = context.Date,\n        Error = context.Error,\n        Function = context.Function,\n        Math = context.Math,\n        Object = context.Object,\n        RegExp = context.RegExp,\n        String = context.String,\n        TypeError = context.TypeError;\n\n    /** Used for built-in method references. */\n    var arrayProto = Array.prototype,\n        funcProto = Function.prototype,\n        objectProto = Object.prototype;\n\n    /** Used to detect overreaching core-js shims. */\n    var coreJsData = context['__core-js_shared__'];\n\n    /** Used to resolve the decompiled source of functions. */\n    var funcToString = funcProto.toString;\n\n    /** Used to check objects for own properties. */\n    var hasOwnProperty = objectProto.hasOwnProperty;\n\n    /** Used to generate unique IDs. */\n    var idCounter = 0;\n\n    /** Used to detect methods masquerading as native. */\n    var maskSrcKey = (function() {\n      var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n      return uid ? ('Symbol(src)_1.' + uid) : '';\n    }());\n\n    /**\n     * Used to resolve the\n     * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n     * of values.\n     */\n    var nativeObjectToString = objectProto.toString;\n\n    /** Used to infer the `Object` constructor. */\n    var objectCtorString = funcToString.call(Object);\n\n    /** Used to restore the original `_` reference in `_.noConflict`. */\n    var oldDash = root._;\n\n    /** Used to detect if a method is native. */\n    var reIsNative = RegExp('^' +\n      funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n      .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n    );\n\n    /** Built-in value references. */\n    var Buffer = moduleExports ? context.Buffer : undefined,\n        Symbol = context.Symbol,\n        Uint8Array = context.Uint8Array,\n        allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n        getPrototype = overArg(Object.getPrototypeOf, Object),\n        objectCreate = Object.create,\n        propertyIsEnumerable = objectProto.propertyIsEnumerable,\n        splice = arrayProto.splice,\n        spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n        symIterator = Symbol ? Symbol.iterator : undefined,\n        symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n    var defineProperty = (function() {\n      try {\n        var func = getNative(Object, 'defineProperty');\n        func({}, '', {});\n        return func;\n      } catch (e) {}\n    }());\n\n    /** Mocked built-ins. */\n    var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n        ctxNow = Date && Date.now !== root.Date.now && Date.now,\n        ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n    /* Built-in method references for those with the same name as other `lodash` methods. */\n    var nativeCeil = Math.ceil,\n        nativeFloor = Math.floor,\n        nativeGetSymbols = Object.getOwnPropertySymbols,\n        nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n        nativeIsFinite = context.isFinite,\n        nativeJoin = arrayProto.join,\n        nativeKeys = overArg(Object.keys, Object),\n        nativeMax = Math.max,\n        nativeMin = Math.min,\n        nativeNow = Date.now,\n        nativeParseInt = context.parseInt,\n        nativeRandom = Math.random,\n        nativeReverse = arrayProto.reverse;\n\n    /* Built-in method references that are verified to be native. */\n    var DataView = getNative(context, 'DataView'),\n        Map = getNative(context, 'Map'),\n        Promise = getNative(context, 'Promise'),\n        Set = getNative(context, 'Set'),\n        WeakMap = getNative(context, 'WeakMap'),\n        nativeCreate = getNative(Object, 'create');\n\n    /** Used to store function metadata. */\n    var metaMap = WeakMap && new WeakMap;\n\n    /** Used to lookup unminified function names. */\n    var realNames = {};\n\n    /** Used to detect maps, sets, and weakmaps. */\n    var dataViewCtorString = toSource(DataView),\n        mapCtorString = toSource(Map),\n        promiseCtorString = toSource(Promise),\n        setCtorString = toSource(Set),\n        weakMapCtorString = toSource(WeakMap);\n\n    /** Used to convert symbols to primitives and strings. */\n    var symbolProto = Symbol ? Symbol.prototype : undefined,\n        symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n        symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a `lodash` object which wraps `value` to enable implicit method\n     * chain sequences. Methods that operate on and return arrays, collections,\n     * and functions can be chained together. Methods that retrieve a single value\n     * or may return a primitive value will automatically end the chain sequence\n     * and return the unwrapped value. Otherwise, the value must be unwrapped\n     * with `_#value`.\n     *\n     * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n     * enabled using `_.chain`.\n     *\n     * The execution of chained methods is lazy, that is, it's deferred until\n     * `_#value` is implicitly or explicitly called.\n     *\n     * Lazy evaluation allows several methods to support shortcut fusion.\n     * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n     * the creation of intermediate arrays and can greatly reduce the number of\n     * iteratee executions. Sections of a chain sequence qualify for shortcut\n     * fusion if the section is applied to an array and iteratees accept only\n     * one argument. The heuristic for whether a section qualifies for shortcut\n     * fusion is subject to change.\n     *\n     * Chaining is supported in custom builds as long as the `_#value` method is\n     * directly or indirectly included in the build.\n     *\n     * In addition to lodash methods, wrappers have `Array` and `String` methods.\n     *\n     * The wrapper `Array` methods are:\n     * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n     *\n     * The wrapper `String` methods are:\n     * `replace` and `split`\n     *\n     * The wrapper methods that support shortcut fusion are:\n     * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n     * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n     * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n     *\n     * The chainable wrapper methods are:\n     * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n     * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n     * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n     * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n     * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n     * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n     * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n     * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n     * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n     * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n     * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n     * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n     * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n     * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n     * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n     * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n     * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n     * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n     * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n     * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n     * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n     * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n     * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n     * `zipObject`, `zipObjectDeep`, and `zipWith`\n     *\n     * The wrapper methods that are **not** chainable by default are:\n     * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n     * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n     * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n     * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n     * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n     * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n     * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n     * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n     * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n     * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n     * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n     * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n     * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n     * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n     * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n     * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n     * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n     * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n     * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n     * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n     * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n     * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n     * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n     * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n     * `upperFirst`, `value`, and `words`\n     *\n     * @name _\n     * @constructor\n     * @category Seq\n     * @param {*} value The value to wrap in a `lodash` instance.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var wrapped = _([1, 2, 3]);\n     *\n     * // Returns an unwrapped value.\n     * wrapped.reduce(_.add);\n     * // => 6\n     *\n     * // Returns a wrapped value.\n     * var squares = wrapped.map(square);\n     *\n     * _.isArray(squares);\n     * // => false\n     *\n     * _.isArray(squares.value());\n     * // => true\n     */\n    function lodash(value) {\n      if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n        if (value instanceof LodashWrapper) {\n          return value;\n        }\n        if (hasOwnProperty.call(value, '__wrapped__')) {\n          return wrapperClone(value);\n        }\n      }\n      return new LodashWrapper(value);\n    }\n\n    /**\n     * The base implementation of `_.create` without support for assigning\n     * properties to the created object.\n     *\n     * @private\n     * @param {Object} proto The object to inherit from.\n     * @returns {Object} Returns the new object.\n     */\n    var baseCreate = (function() {\n      function object() {}\n      return function(proto) {\n        if (!isObject(proto)) {\n          return {};\n        }\n        if (objectCreate) {\n          return objectCreate(proto);\n        }\n        object.prototype = proto;\n        var result = new object;\n        object.prototype = undefined;\n        return result;\n      };\n    }());\n\n    /**\n     * The function whose prototype chain sequence wrappers inherit from.\n     *\n     * @private\n     */\n    function baseLodash() {\n      // No operation performed.\n    }\n\n    /**\n     * The base constructor for creating `lodash` wrapper objects.\n     *\n     * @private\n     * @param {*} value The value to wrap.\n     * @param {boolean} [chainAll] Enable explicit method chain sequences.\n     */\n    function LodashWrapper(value, chainAll) {\n      this.__wrapped__ = value;\n      this.__actions__ = [];\n      this.__chain__ = !!chainAll;\n      this.__index__ = 0;\n      this.__values__ = undefined;\n    }\n\n    /**\n     * By default, the template delimiters used by lodash are like those in\n     * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n     * following template settings to use alternative delimiters.\n     *\n     * @static\n     * @memberOf _\n     * @type {Object}\n     */\n    lodash.templateSettings = {\n\n      /**\n       * Used to detect `data` property values to be HTML-escaped.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'escape': reEscape,\n\n      /**\n       * Used to detect code to be evaluated.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'evaluate': reEvaluate,\n\n      /**\n       * Used to detect `data` property values to inject.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'interpolate': reInterpolate,\n\n      /**\n       * Used to reference the data object in the template text.\n       *\n       * @memberOf _.templateSettings\n       * @type {string}\n       */\n      'variable': '',\n\n      /**\n       * Used to import variables into the compiled template.\n       *\n       * @memberOf _.templateSettings\n       * @type {Object}\n       */\n      'imports': {\n\n        /**\n         * A reference to the `lodash` function.\n         *\n         * @memberOf _.templateSettings.imports\n         * @type {Function}\n         */\n        '_': lodash\n      }\n    };\n\n    // Ensure wrappers are instances of `baseLodash`.\n    lodash.prototype = baseLodash.prototype;\n    lodash.prototype.constructor = lodash;\n\n    LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n    LodashWrapper.prototype.constructor = LodashWrapper;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n     *\n     * @private\n     * @constructor\n     * @param {*} value The value to wrap.\n     */\n    function LazyWrapper(value) {\n      this.__wrapped__ = value;\n      this.__actions__ = [];\n      this.__dir__ = 1;\n      this.__filtered__ = false;\n      this.__iteratees__ = [];\n      this.__takeCount__ = MAX_ARRAY_LENGTH;\n      this.__views__ = [];\n    }\n\n    /**\n     * Creates a clone of the lazy wrapper object.\n     *\n     * @private\n     * @name clone\n     * @memberOf LazyWrapper\n     * @returns {Object} Returns the cloned `LazyWrapper` object.\n     */\n    function lazyClone() {\n      var result = new LazyWrapper(this.__wrapped__);\n      result.__actions__ = copyArray(this.__actions__);\n      result.__dir__ = this.__dir__;\n      result.__filtered__ = this.__filtered__;\n      result.__iteratees__ = copyArray(this.__iteratees__);\n      result.__takeCount__ = this.__takeCount__;\n      result.__views__ = copyArray(this.__views__);\n      return result;\n    }\n\n    /**\n     * Reverses the direction of lazy iteration.\n     *\n     * @private\n     * @name reverse\n     * @memberOf LazyWrapper\n     * @returns {Object} Returns the new reversed `LazyWrapper` object.\n     */\n    function lazyReverse() {\n      if (this.__filtered__) {\n        var result = new LazyWrapper(this);\n        result.__dir__ = -1;\n        result.__filtered__ = true;\n      } else {\n        result = this.clone();\n        result.__dir__ *= -1;\n      }\n      return result;\n    }\n\n    /**\n     * Extracts the unwrapped value from its lazy wrapper.\n     *\n     * @private\n     * @name value\n     * @memberOf LazyWrapper\n     * @returns {*} Returns the unwrapped value.\n     */\n    function lazyValue() {\n      var array = this.__wrapped__.value(),\n          dir = this.__dir__,\n          isArr = isArray(array),\n          isRight = dir < 0,\n          arrLength = isArr ? array.length : 0,\n          view = getView(0, arrLength, this.__views__),\n          start = view.start,\n          end = view.end,\n          length = end - start,\n          index = isRight ? end : (start - 1),\n          iteratees = this.__iteratees__,\n          iterLength = iteratees.length,\n          resIndex = 0,\n          takeCount = nativeMin(length, this.__takeCount__);\n\n      if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n        return baseWrapperValue(array, this.__actions__);\n      }\n      var result = [];\n\n      outer:\n      while (length-- && resIndex < takeCount) {\n        index += dir;\n\n        var iterIndex = -1,\n            value = array[index];\n\n        while (++iterIndex < iterLength) {\n          var data = iteratees[iterIndex],\n              iteratee = data.iteratee,\n              type = data.type,\n              computed = iteratee(value);\n\n          if (type == LAZY_MAP_FLAG) {\n            value = computed;\n          } else if (!computed) {\n            if (type == LAZY_FILTER_FLAG) {\n              continue outer;\n            } else {\n              break outer;\n            }\n          }\n        }\n        result[resIndex++] = value;\n      }\n      return result;\n    }\n\n    // Ensure `LazyWrapper` is an instance of `baseLodash`.\n    LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n    LazyWrapper.prototype.constructor = LazyWrapper;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a hash object.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function Hash(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the hash.\n     *\n     * @private\n     * @name clear\n     * @memberOf Hash\n     */\n    function hashClear() {\n      this.__data__ = nativeCreate ? nativeCreate(null) : {};\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the hash.\n     *\n     * @private\n     * @name delete\n     * @memberOf Hash\n     * @param {Object} hash The hash to modify.\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function hashDelete(key) {\n      var result = this.has(key) && delete this.__data__[key];\n      this.size -= result ? 1 : 0;\n      return result;\n    }\n\n    /**\n     * Gets the hash value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf Hash\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function hashGet(key) {\n      var data = this.__data__;\n      if (nativeCreate) {\n        var result = data[key];\n        return result === HASH_UNDEFINED ? undefined : result;\n      }\n      return hasOwnProperty.call(data, key) ? data[key] : undefined;\n    }\n\n    /**\n     * Checks if a hash value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf Hash\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function hashHas(key) {\n      var data = this.__data__;\n      return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n    }\n\n    /**\n     * Sets the hash `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf Hash\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the hash instance.\n     */\n    function hashSet(key, value) {\n      var data = this.__data__;\n      this.size += this.has(key) ? 0 : 1;\n      data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n      return this;\n    }\n\n    // Add methods to `Hash`.\n    Hash.prototype.clear = hashClear;\n    Hash.prototype['delete'] = hashDelete;\n    Hash.prototype.get = hashGet;\n    Hash.prototype.has = hashHas;\n    Hash.prototype.set = hashSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an list cache object.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function ListCache(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the list cache.\n     *\n     * @private\n     * @name clear\n     * @memberOf ListCache\n     */\n    function listCacheClear() {\n      this.__data__ = [];\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the list cache.\n     *\n     * @private\n     * @name delete\n     * @memberOf ListCache\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function listCacheDelete(key) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      if (index < 0) {\n        return false;\n      }\n      var lastIndex = data.length - 1;\n      if (index == lastIndex) {\n        data.pop();\n      } else {\n        splice.call(data, index, 1);\n      }\n      --this.size;\n      return true;\n    }\n\n    /**\n     * Gets the list cache value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf ListCache\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function listCacheGet(key) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      return index < 0 ? undefined : data[index][1];\n    }\n\n    /**\n     * Checks if a list cache value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf ListCache\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function listCacheHas(key) {\n      return assocIndexOf(this.__data__, key) > -1;\n    }\n\n    /**\n     * Sets the list cache `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf ListCache\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the list cache instance.\n     */\n    function listCacheSet(key, value) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      if (index < 0) {\n        ++this.size;\n        data.push([key, value]);\n      } else {\n        data[index][1] = value;\n      }\n      return this;\n    }\n\n    // Add methods to `ListCache`.\n    ListCache.prototype.clear = listCacheClear;\n    ListCache.prototype['delete'] = listCacheDelete;\n    ListCache.prototype.get = listCacheGet;\n    ListCache.prototype.has = listCacheHas;\n    ListCache.prototype.set = listCacheSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a map cache object to store key-value pairs.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function MapCache(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the map.\n     *\n     * @private\n     * @name clear\n     * @memberOf MapCache\n     */\n    function mapCacheClear() {\n      this.size = 0;\n      this.__data__ = {\n        'hash': new Hash,\n        'map': new (Map || ListCache),\n        'string': new Hash\n      };\n    }\n\n    /**\n     * Removes `key` and its value from the map.\n     *\n     * @private\n     * @name delete\n     * @memberOf MapCache\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function mapCacheDelete(key) {\n      var result = getMapData(this, key)['delete'](key);\n      this.size -= result ? 1 : 0;\n      return result;\n    }\n\n    /**\n     * Gets the map value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf MapCache\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function mapCacheGet(key) {\n      return getMapData(this, key).get(key);\n    }\n\n    /**\n     * Checks if a map value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf MapCache\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function mapCacheHas(key) {\n      return getMapData(this, key).has(key);\n    }\n\n    /**\n     * Sets the map `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf MapCache\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the map cache instance.\n     */\n    function mapCacheSet(key, value) {\n      var data = getMapData(this, key),\n          size = data.size;\n\n      data.set(key, value);\n      this.size += data.size == size ? 0 : 1;\n      return this;\n    }\n\n    // Add methods to `MapCache`.\n    MapCache.prototype.clear = mapCacheClear;\n    MapCache.prototype['delete'] = mapCacheDelete;\n    MapCache.prototype.get = mapCacheGet;\n    MapCache.prototype.has = mapCacheHas;\n    MapCache.prototype.set = mapCacheSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     *\n     * Creates an array cache object to store unique values.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [values] The values to cache.\n     */\n    function SetCache(values) {\n      var index = -1,\n          length = values == null ? 0 : values.length;\n\n      this.__data__ = new MapCache;\n      while (++index < length) {\n        this.add(values[index]);\n      }\n    }\n\n    /**\n     * Adds `value` to the array cache.\n     *\n     * @private\n     * @name add\n     * @memberOf SetCache\n     * @alias push\n     * @param {*} value The value to cache.\n     * @returns {Object} Returns the cache instance.\n     */\n    function setCacheAdd(value) {\n      this.__data__.set(value, HASH_UNDEFINED);\n      return this;\n    }\n\n    /**\n     * Checks if `value` is in the array cache.\n     *\n     * @private\n     * @name has\n     * @memberOf SetCache\n     * @param {*} value The value to search for.\n     * @returns {number} Returns `true` if `value` is found, else `false`.\n     */\n    function setCacheHas(value) {\n      return this.__data__.has(value);\n    }\n\n    // Add methods to `SetCache`.\n    SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n    SetCache.prototype.has = setCacheHas;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a stack cache object to store key-value pairs.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function Stack(entries) {\n      var data = this.__data__ = new ListCache(entries);\n      this.size = data.size;\n    }\n\n    /**\n     * Removes all key-value entries from the stack.\n     *\n     * @private\n     * @name clear\n     * @memberOf Stack\n     */\n    function stackClear() {\n      this.__data__ = new ListCache;\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the stack.\n     *\n     * @private\n     * @name delete\n     * @memberOf Stack\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function stackDelete(key) {\n      var data = this.__data__,\n          result = data['delete'](key);\n\n      this.size = data.size;\n      return result;\n    }\n\n    /**\n     * Gets the stack value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf Stack\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function stackGet(key) {\n      return this.__data__.get(key);\n    }\n\n    /**\n     * Checks if a stack value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf Stack\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function stackHas(key) {\n      return this.__data__.has(key);\n    }\n\n    /**\n     * Sets the stack `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf Stack\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the stack cache instance.\n     */\n    function stackSet(key, value) {\n      var data = this.__data__;\n      if (data instanceof ListCache) {\n        var pairs = data.__data__;\n        if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n          pairs.push([key, value]);\n          this.size = ++data.size;\n          return this;\n        }\n        data = this.__data__ = new MapCache(pairs);\n      }\n      data.set(key, value);\n      this.size = data.size;\n      return this;\n    }\n\n    // Add methods to `Stack`.\n    Stack.prototype.clear = stackClear;\n    Stack.prototype['delete'] = stackDelete;\n    Stack.prototype.get = stackGet;\n    Stack.prototype.has = stackHas;\n    Stack.prototype.set = stackSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an array of the enumerable property names of the array-like `value`.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @param {boolean} inherited Specify returning inherited property names.\n     * @returns {Array} Returns the array of property names.\n     */\n    function arrayLikeKeys(value, inherited) {\n      var isArr = isArray(value),\n          isArg = !isArr && isArguments(value),\n          isBuff = !isArr && !isArg && isBuffer(value),\n          isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n          skipIndexes = isArr || isArg || isBuff || isType,\n          result = skipIndexes ? baseTimes(value.length, String) : [],\n          length = result.length;\n\n      for (var key in value) {\n        if ((inherited || hasOwnProperty.call(value, key)) &&\n            !(skipIndexes && (\n               // Safari 9 has enumerable `arguments.length` in strict mode.\n               key == 'length' ||\n               // Node.js 0.10 has enumerable non-index properties on buffers.\n               (isBuff && (key == 'offset' || key == 'parent')) ||\n               // PhantomJS 2 has enumerable non-index properties on typed arrays.\n               (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n               // Skip index properties.\n               isIndex(key, length)\n            ))) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * A specialized version of `_.sample` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to sample.\n     * @returns {*} Returns the random element.\n     */\n    function arraySample(array) {\n      var length = array.length;\n      return length ? array[baseRandom(0, length - 1)] : undefined;\n    }\n\n    /**\n     * A specialized version of `_.sampleSize` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to sample.\n     * @param {number} n The number of elements to sample.\n     * @returns {Array} Returns the random elements.\n     */\n    function arraySampleSize(array, n) {\n      return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n    }\n\n    /**\n     * A specialized version of `_.shuffle` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     */\n    function arrayShuffle(array) {\n      return shuffleSelf(copyArray(array));\n    }\n\n    /**\n     * This function is like `assignValue` except that it doesn't assign\n     * `undefined` values.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function assignMergeValue(object, key, value) {\n      if ((value !== undefined && !eq(object[key], value)) ||\n          (value === undefined && !(key in object))) {\n        baseAssignValue(object, key, value);\n      }\n    }\n\n    /**\n     * Assigns `value` to `key` of `object` if the existing value is not equivalent\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function assignValue(object, key, value) {\n      var objValue = object[key];\n      if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n          (value === undefined && !(key in object))) {\n        baseAssignValue(object, key, value);\n      }\n    }\n\n    /**\n     * Gets the index at which the `key` is found in `array` of key-value pairs.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {*} key The key to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     */\n    function assocIndexOf(array, key) {\n      var length = array.length;\n      while (length--) {\n        if (eq(array[length][0], key)) {\n          return length;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * Aggregates elements of `collection` on `accumulator` with keys transformed\n     * by `iteratee` and values set by `setter`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} setter The function to set `accumulator` values.\n     * @param {Function} iteratee The iteratee to transform keys.\n     * @param {Object} accumulator The initial aggregated object.\n     * @returns {Function} Returns `accumulator`.\n     */\n    function baseAggregator(collection, setter, iteratee, accumulator) {\n      baseEach(collection, function(value, key, collection) {\n        setter(accumulator, value, iteratee(value), collection);\n      });\n      return accumulator;\n    }\n\n    /**\n     * The base implementation of `_.assign` without support for multiple sources\n     * or `customizer` functions.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @returns {Object} Returns `object`.\n     */\n    function baseAssign(object, source) {\n      return object && copyObject(source, keys(source), object);\n    }\n\n    /**\n     * The base implementation of `_.assignIn` without support for multiple sources\n     * or `customizer` functions.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @returns {Object} Returns `object`.\n     */\n    function baseAssignIn(object, source) {\n      return object && copyObject(source, keysIn(source), object);\n    }\n\n    /**\n     * The base implementation of `assignValue` and `assignMergeValue` without\n     * value checks.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function baseAssignValue(object, key, value) {\n      if (key == '__proto__' && defineProperty) {\n        defineProperty(object, key, {\n          'configurable': true,\n          'enumerable': true,\n          'value': value,\n          'writable': true\n        });\n      } else {\n        object[key] = value;\n      }\n    }\n\n    /**\n     * The base implementation of `_.at` without support for individual paths.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {string[]} paths The property paths to pick.\n     * @returns {Array} Returns the picked elements.\n     */\n    function baseAt(object, paths) {\n      var index = -1,\n          length = paths.length,\n          result = Array(length),\n          skip = object == null;\n\n      while (++index < length) {\n        result[index] = skip ? undefined : get(object, paths[index]);\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.clamp` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {number} number The number to clamp.\n     * @param {number} [lower] The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the clamped number.\n     */\n    function baseClamp(number, lower, upper) {\n      if (number === number) {\n        if (upper !== undefined) {\n          number = number <= upper ? number : upper;\n        }\n        if (lower !== undefined) {\n          number = number >= lower ? number : lower;\n        }\n      }\n      return number;\n    }\n\n    /**\n     * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n     * traversed objects.\n     *\n     * @private\n     * @param {*} value The value to clone.\n     * @param {boolean} bitmask The bitmask flags.\n     *  1 - Deep clone\n     *  2 - Flatten inherited properties\n     *  4 - Clone symbols\n     * @param {Function} [customizer] The function to customize cloning.\n     * @param {string} [key] The key of `value`.\n     * @param {Object} [object] The parent object of `value`.\n     * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n     * @returns {*} Returns the cloned value.\n     */\n    function baseClone(value, bitmask, customizer, key, object, stack) {\n      var result,\n          isDeep = bitmask & CLONE_DEEP_FLAG,\n          isFlat = bitmask & CLONE_FLAT_FLAG,\n          isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n      if (customizer) {\n        result = object ? customizer(value, key, object, stack) : customizer(value);\n      }\n      if (result !== undefined) {\n        return result;\n      }\n      if (!isObject(value)) {\n        return value;\n      }\n      var isArr = isArray(value);\n      if (isArr) {\n        result = initCloneArray(value);\n        if (!isDeep) {\n          return copyArray(value, result);\n        }\n      } else {\n        var tag = getTag(value),\n            isFunc = tag == funcTag || tag == genTag;\n\n        if (isBuffer(value)) {\n          return cloneBuffer(value, isDeep);\n        }\n        if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n          result = (isFlat || isFunc) ? {} : initCloneObject(value);\n          if (!isDeep) {\n            return isFlat\n              ? copySymbolsIn(value, baseAssignIn(result, value))\n              : copySymbols(value, baseAssign(result, value));\n          }\n        } else {\n          if (!cloneableTags[tag]) {\n            return object ? value : {};\n          }\n          result = initCloneByTag(value, tag, isDeep);\n        }\n      }\n      // Check for circular references and return its corresponding clone.\n      stack || (stack = new Stack);\n      var stacked = stack.get(value);\n      if (stacked) {\n        return stacked;\n      }\n      stack.set(value, result);\n\n      if (isSet(value)) {\n        value.forEach(function(subValue) {\n          result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n        });\n      } else if (isMap(value)) {\n        value.forEach(function(subValue, key) {\n          result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n        });\n      }\n\n      var keysFunc = isFull\n        ? (isFlat ? getAllKeysIn : getAllKeys)\n        : (isFlat ? keysIn : keys);\n\n      var props = isArr ? undefined : keysFunc(value);\n      arrayEach(props || value, function(subValue, key) {\n        if (props) {\n          key = subValue;\n          subValue = value[key];\n        }\n        // Recursively populate clone (susceptible to call stack limits).\n        assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.conforms` which doesn't clone `source`.\n     *\n     * @private\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseConforms(source) {\n      var props = keys(source);\n      return function(object) {\n        return baseConformsTo(object, source, props);\n      };\n    }\n\n    /**\n     * The base implementation of `_.conformsTo` which accepts `props` to check.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n     */\n    function baseConformsTo(object, source, props) {\n      var length = props.length;\n      if (object == null) {\n        return !length;\n      }\n      object = Object(object);\n      while (length--) {\n        var key = props[length],\n            predicate = source[key],\n            value = object[key];\n\n        if ((value === undefined && !(key in object)) || !predicate(value)) {\n          return false;\n        }\n      }\n      return true;\n    }\n\n    /**\n     * The base implementation of `_.delay` and `_.defer` which accepts `args`\n     * to provide to `func`.\n     *\n     * @private\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @param {Array} args The arguments to provide to `func`.\n     * @returns {number|Object} Returns the timer id or timeout object.\n     */\n    function baseDelay(func, wait, args) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      return setTimeout(function() { func.apply(undefined, args); }, wait);\n    }\n\n    /**\n     * The base implementation of methods like `_.difference` without support\n     * for excluding multiple arrays or iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Array} values The values to exclude.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     */\n    function baseDifference(array, values, iteratee, comparator) {\n      var index = -1,\n          includes = arrayIncludes,\n          isCommon = true,\n          length = array.length,\n          result = [],\n          valuesLength = values.length;\n\n      if (!length) {\n        return result;\n      }\n      if (iteratee) {\n        values = arrayMap(values, baseUnary(iteratee));\n      }\n      if (comparator) {\n        includes = arrayIncludesWith;\n        isCommon = false;\n      }\n      else if (values.length >= LARGE_ARRAY_SIZE) {\n        includes = cacheHas;\n        isCommon = false;\n        values = new SetCache(values);\n      }\n      outer:\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee == null ? value : iteratee(value);\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (isCommon && computed === computed) {\n          var valuesIndex = valuesLength;\n          while (valuesIndex--) {\n            if (values[valuesIndex] === computed) {\n              continue outer;\n            }\n          }\n          result.push(value);\n        }\n        else if (!includes(values, computed, comparator)) {\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.forEach` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     */\n    var baseEach = createBaseEach(baseForOwn);\n\n    /**\n     * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     */\n    var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n    /**\n     * The base implementation of `_.every` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {boolean} Returns `true` if all elements pass the predicate check,\n     *  else `false`\n     */\n    function baseEvery(collection, predicate) {\n      var result = true;\n      baseEach(collection, function(value, index, collection) {\n        result = !!predicate(value, index, collection);\n        return result;\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of methods like `_.max` and `_.min` which accepts a\n     * `comparator` to determine the extremum value.\n     *\n     * @private\n     * @param {Array} array The array to iterate over.\n     * @param {Function} iteratee The iteratee invoked per iteration.\n     * @param {Function} comparator The comparator used to compare values.\n     * @returns {*} Returns the extremum value.\n     */\n    function baseExtremum(array, iteratee, comparator) {\n      var index = -1,\n          length = array.length;\n\n      while (++index < length) {\n        var value = array[index],\n            current = iteratee(value);\n\n        if (current != null && (computed === undefined\n              ? (current === current && !isSymbol(current))\n              : comparator(current, computed)\n            )) {\n          var computed = current,\n              result = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.fill` without an iteratee call guard.\n     *\n     * @private\n     * @param {Array} array The array to fill.\n     * @param {*} value The value to fill `array` with.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns `array`.\n     */\n    function baseFill(array, value, start, end) {\n      var length = array.length;\n\n      start = toInteger(start);\n      if (start < 0) {\n        start = -start > length ? 0 : (length + start);\n      }\n      end = (end === undefined || end > length) ? length : toInteger(end);\n      if (end < 0) {\n        end += length;\n      }\n      end = start > end ? 0 : toLength(end);\n      while (start < end) {\n        array[start++] = value;\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.filter` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     */\n    function baseFilter(collection, predicate) {\n      var result = [];\n      baseEach(collection, function(value, index, collection) {\n        if (predicate(value, index, collection)) {\n          result.push(value);\n        }\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.flatten` with support for restricting flattening.\n     *\n     * @private\n     * @param {Array} array The array to flatten.\n     * @param {number} depth The maximum recursion depth.\n     * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n     * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n     * @param {Array} [result=[]] The initial result value.\n     * @returns {Array} Returns the new flattened array.\n     */\n    function baseFlatten(array, depth, predicate, isStrict, result) {\n      var index = -1,\n          length = array.length;\n\n      predicate || (predicate = isFlattenable);\n      result || (result = []);\n\n      while (++index < length) {\n        var value = array[index];\n        if (depth > 0 && predicate(value)) {\n          if (depth > 1) {\n            // Recursively flatten arrays (susceptible to call stack limits).\n            baseFlatten(value, depth - 1, predicate, isStrict, result);\n          } else {\n            arrayPush(result, value);\n          }\n        } else if (!isStrict) {\n          result[result.length] = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `baseForOwn` which iterates over `object`\n     * properties returned by `keysFunc` and invokes `iteratee` for each property.\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @returns {Object} Returns `object`.\n     */\n    var baseFor = createBaseFor();\n\n    /**\n     * This function is like `baseFor` except that it iterates over properties\n     * in the opposite order.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @returns {Object} Returns `object`.\n     */\n    var baseForRight = createBaseFor(true);\n\n    /**\n     * The base implementation of `_.forOwn` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     */\n    function baseForOwn(object, iteratee) {\n      return object && baseFor(object, iteratee, keys);\n    }\n\n    /**\n     * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     */\n    function baseForOwnRight(object, iteratee) {\n      return object && baseForRight(object, iteratee, keys);\n    }\n\n    /**\n     * The base implementation of `_.functions` which creates an array of\n     * `object` function property names filtered from `props`.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Array} props The property names to filter.\n     * @returns {Array} Returns the function names.\n     */\n    function baseFunctions(object, props) {\n      return arrayFilter(props, function(key) {\n        return isFunction(object[key]);\n      });\n    }\n\n    /**\n     * The base implementation of `_.get` without support for default values.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to get.\n     * @returns {*} Returns the resolved value.\n     */\n    function baseGet(object, path) {\n      path = castPath(path, object);\n\n      var index = 0,\n          length = path.length;\n\n      while (object != null && index < length) {\n        object = object[toKey(path[index++])];\n      }\n      return (index && index == length) ? object : undefined;\n    }\n\n    /**\n     * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n     * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n     * symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @param {Function} symbolsFunc The function to get the symbols of `object`.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n      var result = keysFunc(object);\n      return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n    }\n\n    /**\n     * The base implementation of `getTag` without fallbacks for buggy environments.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the `toStringTag`.\n     */\n    function baseGetTag(value) {\n      if (value == null) {\n        return value === undefined ? undefinedTag : nullTag;\n      }\n      return (symToStringTag && symToStringTag in Object(value))\n        ? getRawTag(value)\n        : objectToString(value);\n    }\n\n    /**\n     * The base implementation of `_.gt` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than `other`,\n     *  else `false`.\n     */\n    function baseGt(value, other) {\n      return value > other;\n    }\n\n    /**\n     * The base implementation of `_.has` without support for deep paths.\n     *\n     * @private\n     * @param {Object} [object] The object to query.\n     * @param {Array|string} key The key to check.\n     * @returns {boolean} Returns `true` if `key` exists, else `false`.\n     */\n    function baseHas(object, key) {\n      return object != null && hasOwnProperty.call(object, key);\n    }\n\n    /**\n     * The base implementation of `_.hasIn` without support for deep paths.\n     *\n     * @private\n     * @param {Object} [object] The object to query.\n     * @param {Array|string} key The key to check.\n     * @returns {boolean} Returns `true` if `key` exists, else `false`.\n     */\n    function baseHasIn(object, key) {\n      return object != null && key in Object(object);\n    }\n\n    /**\n     * The base implementation of `_.inRange` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {number} number The number to check.\n     * @param {number} start The start of the range.\n     * @param {number} end The end of the range.\n     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n     */\n    function baseInRange(number, start, end) {\n      return number >= nativeMin(start, end) && number < nativeMax(start, end);\n    }\n\n    /**\n     * The base implementation of methods like `_.intersection`, without support\n     * for iteratee shorthands, that accepts an array of arrays to inspect.\n     *\n     * @private\n     * @param {Array} arrays The arrays to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of shared values.\n     */\n    function baseIntersection(arrays, iteratee, comparator) {\n      var includes = comparator ? arrayIncludesWith : arrayIncludes,\n          length = arrays[0].length,\n          othLength = arrays.length,\n          othIndex = othLength,\n          caches = Array(othLength),\n          maxLength = Infinity,\n          result = [];\n\n      while (othIndex--) {\n        var array = arrays[othIndex];\n        if (othIndex && iteratee) {\n          array = arrayMap(array, baseUnary(iteratee));\n        }\n        maxLength = nativeMin(array.length, maxLength);\n        caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n          ? new SetCache(othIndex && array)\n          : undefined;\n      }\n      array = arrays[0];\n\n      var index = -1,\n          seen = caches[0];\n\n      outer:\n      while (++index < length && result.length < maxLength) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (!(seen\n              ? cacheHas(seen, computed)\n              : includes(result, computed, comparator)\n            )) {\n          othIndex = othLength;\n          while (--othIndex) {\n            var cache = caches[othIndex];\n            if (!(cache\n                  ? cacheHas(cache, computed)\n                  : includes(arrays[othIndex], computed, comparator))\n                ) {\n              continue outer;\n            }\n          }\n          if (seen) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.invert` and `_.invertBy` which inverts\n     * `object` with values transformed by `iteratee` and set by `setter`.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} setter The function to set `accumulator` values.\n     * @param {Function} iteratee The iteratee to transform values.\n     * @param {Object} accumulator The initial inverted object.\n     * @returns {Function} Returns `accumulator`.\n     */\n    function baseInverter(object, setter, iteratee, accumulator) {\n      baseForOwn(object, function(value, key, object) {\n        setter(accumulator, iteratee(value), key, object);\n      });\n      return accumulator;\n    }\n\n    /**\n     * The base implementation of `_.invoke` without support for individual\n     * method arguments.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {Array} args The arguments to invoke the method with.\n     * @returns {*} Returns the result of the invoked method.\n     */\n    function baseInvoke(object, path, args) {\n      path = castPath(path, object);\n      object = parent(object, path);\n      var func = object == null ? object : object[toKey(last(path))];\n      return func == null ? undefined : apply(func, object, args);\n    }\n\n    /**\n     * The base implementation of `_.isArguments`.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n     */\n    function baseIsArguments(value) {\n      return isObjectLike(value) && baseGetTag(value) == argsTag;\n    }\n\n    /**\n     * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n     */\n    function baseIsArrayBuffer(value) {\n      return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n    }\n\n    /**\n     * The base implementation of `_.isDate` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n     */\n    function baseIsDate(value) {\n      return isObjectLike(value) && baseGetTag(value) == dateTag;\n    }\n\n    /**\n     * The base implementation of `_.isEqual` which supports partial comparisons\n     * and tracks traversed objects.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @param {boolean} bitmask The bitmask flags.\n     *  1 - Unordered comparison\n     *  2 - Partial comparison\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     */\n    function baseIsEqual(value, other, bitmask, customizer, stack) {\n      if (value === other) {\n        return true;\n      }\n      if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n        return value !== value && other !== other;\n      }\n      return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n    }\n\n    /**\n     * A specialized version of `baseIsEqual` for arrays and objects which performs\n     * deep comparisons and tracks traversed objects enabling objects with circular\n     * references to be compared.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n      var objIsArr = isArray(object),\n          othIsArr = isArray(other),\n          objTag = objIsArr ? arrayTag : getTag(object),\n          othTag = othIsArr ? arrayTag : getTag(other);\n\n      objTag = objTag == argsTag ? objectTag : objTag;\n      othTag = othTag == argsTag ? objectTag : othTag;\n\n      var objIsObj = objTag == objectTag,\n          othIsObj = othTag == objectTag,\n          isSameTag = objTag == othTag;\n\n      if (isSameTag && isBuffer(object)) {\n        if (!isBuffer(other)) {\n          return false;\n        }\n        objIsArr = true;\n        objIsObj = false;\n      }\n      if (isSameTag && !objIsObj) {\n        stack || (stack = new Stack);\n        return (objIsArr || isTypedArray(object))\n          ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n          : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n      }\n      if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n        var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n            othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n        if (objIsWrapped || othIsWrapped) {\n          var objUnwrapped = objIsWrapped ? object.value() : object,\n              othUnwrapped = othIsWrapped ? other.value() : other;\n\n          stack || (stack = new Stack);\n          return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n        }\n      }\n      if (!isSameTag) {\n        return false;\n      }\n      stack || (stack = new Stack);\n      return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n    }\n\n    /**\n     * The base implementation of `_.isMap` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n     */\n    function baseIsMap(value) {\n      return isObjectLike(value) && getTag(value) == mapTag;\n    }\n\n    /**\n     * The base implementation of `_.isMatch` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @param {Array} matchData The property names, values, and compare flags to match.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     */\n    function baseIsMatch(object, source, matchData, customizer) {\n      var index = matchData.length,\n          length = index,\n          noCustomizer = !customizer;\n\n      if (object == null) {\n        return !length;\n      }\n      object = Object(object);\n      while (index--) {\n        var data = matchData[index];\n        if ((noCustomizer && data[2])\n              ? data[1] !== object[data[0]]\n              : !(data[0] in object)\n            ) {\n          return false;\n        }\n      }\n      while (++index < length) {\n        data = matchData[index];\n        var key = data[0],\n            objValue = object[key],\n            srcValue = data[1];\n\n        if (noCustomizer && data[2]) {\n          if (objValue === undefined && !(key in object)) {\n            return false;\n          }\n        } else {\n          var stack = new Stack;\n          if (customizer) {\n            var result = customizer(objValue, srcValue, key, object, source, stack);\n          }\n          if (!(result === undefined\n                ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n                : result\n              )) {\n            return false;\n          }\n        }\n      }\n      return true;\n    }\n\n    /**\n     * The base implementation of `_.isNative` without bad shim checks.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a native function,\n     *  else `false`.\n     */\n    function baseIsNative(value) {\n      if (!isObject(value) || isMasked(value)) {\n        return false;\n      }\n      var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n      return pattern.test(toSource(value));\n    }\n\n    /**\n     * The base implementation of `_.isRegExp` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n     */\n    function baseIsRegExp(value) {\n      return isObjectLike(value) && baseGetTag(value) == regexpTag;\n    }\n\n    /**\n     * The base implementation of `_.isSet` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n     */\n    function baseIsSet(value) {\n      return isObjectLike(value) && getTag(value) == setTag;\n    }\n\n    /**\n     * The base implementation of `_.isTypedArray` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n     */\n    function baseIsTypedArray(value) {\n      return isObjectLike(value) &&\n        isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n    }\n\n    /**\n     * The base implementation of `_.iteratee`.\n     *\n     * @private\n     * @param {*} [value=_.identity] The value to convert to an iteratee.\n     * @returns {Function} Returns the iteratee.\n     */\n    function baseIteratee(value) {\n      // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n      // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n      if (typeof value == 'function') {\n        return value;\n      }\n      if (value == null) {\n        return identity;\n      }\n      if (typeof value == 'object') {\n        return isArray(value)\n          ? baseMatchesProperty(value[0], value[1])\n          : baseMatches(value);\n      }\n      return property(value);\n    }\n\n    /**\n     * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function baseKeys(object) {\n      if (!isPrototype(object)) {\n        return nativeKeys(object);\n      }\n      var result = [];\n      for (var key in Object(object)) {\n        if (hasOwnProperty.call(object, key) && key != 'constructor') {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function baseKeysIn(object) {\n      if (!isObject(object)) {\n        return nativeKeysIn(object);\n      }\n      var isProto = isPrototype(object),\n          result = [];\n\n      for (var key in object) {\n        if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.lt` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than `other`,\n     *  else `false`.\n     */\n    function baseLt(value, other) {\n      return value < other;\n    }\n\n    /**\n     * The base implementation of `_.map` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array} Returns the new mapped array.\n     */\n    function baseMap(collection, iteratee) {\n      var index = -1,\n          result = isArrayLike(collection) ? Array(collection.length) : [];\n\n      baseEach(collection, function(value, key, collection) {\n        result[++index] = iteratee(value, key, collection);\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.matches` which doesn't clone `source`.\n     *\n     * @private\n     * @param {Object} source The object of property values to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseMatches(source) {\n      var matchData = getMatchData(source);\n      if (matchData.length == 1 && matchData[0][2]) {\n        return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n      }\n      return function(object) {\n        return object === source || baseIsMatch(object, source, matchData);\n      };\n    }\n\n    /**\n     * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n     *\n     * @private\n     * @param {string} path The path of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseMatchesProperty(path, srcValue) {\n      if (isKey(path) && isStrictComparable(srcValue)) {\n        return matchesStrictComparable(toKey(path), srcValue);\n      }\n      return function(object) {\n        var objValue = get(object, path);\n        return (objValue === undefined && objValue === srcValue)\n          ? hasIn(object, path)\n          : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n      };\n    }\n\n    /**\n     * The base implementation of `_.merge` without support for multiple sources.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @param {number} srcIndex The index of `source`.\n     * @param {Function} [customizer] The function to customize merged values.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     */\n    function baseMerge(object, source, srcIndex, customizer, stack) {\n      if (object === source) {\n        return;\n      }\n      baseFor(source, function(srcValue, key) {\n        stack || (stack = new Stack);\n        if (isObject(srcValue)) {\n          baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n        }\n        else {\n          var newValue = customizer\n            ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n            : undefined;\n\n          if (newValue === undefined) {\n            newValue = srcValue;\n          }\n          assignMergeValue(object, key, newValue);\n        }\n      }, keysIn);\n    }\n\n    /**\n     * A specialized version of `baseMerge` for arrays and objects which performs\n     * deep merges and tracks traversed objects enabling objects with circular\n     * references to be merged.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @param {string} key The key of the value to merge.\n     * @param {number} srcIndex The index of `source`.\n     * @param {Function} mergeFunc The function to merge values.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     */\n    function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n      var objValue = safeGet(object, key),\n          srcValue = safeGet(source, key),\n          stacked = stack.get(srcValue);\n\n      if (stacked) {\n        assignMergeValue(object, key, stacked);\n        return;\n      }\n      var newValue = customizer\n        ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      var isCommon = newValue === undefined;\n\n      if (isCommon) {\n        var isArr = isArray(srcValue),\n            isBuff = !isArr && isBuffer(srcValue),\n            isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n        newValue = srcValue;\n        if (isArr || isBuff || isTyped) {\n          if (isArray(objValue)) {\n            newValue = objValue;\n          }\n          else if (isArrayLikeObject(objValue)) {\n            newValue = copyArray(objValue);\n          }\n          else if (isBuff) {\n            isCommon = false;\n            newValue = cloneBuffer(srcValue, true);\n          }\n          else if (isTyped) {\n            isCommon = false;\n            newValue = cloneTypedArray(srcValue, true);\n          }\n          else {\n            newValue = [];\n          }\n        }\n        else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n          newValue = objValue;\n          if (isArguments(objValue)) {\n            newValue = toPlainObject(objValue);\n          }\n          else if (!isObject(objValue) || isFunction(objValue)) {\n            newValue = initCloneObject(srcValue);\n          }\n        }\n        else {\n          isCommon = false;\n        }\n      }\n      if (isCommon) {\n        // Recursively merge objects and arrays (susceptible to call stack limits).\n        stack.set(srcValue, newValue);\n        mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n        stack['delete'](srcValue);\n      }\n      assignMergeValue(object, key, newValue);\n    }\n\n    /**\n     * The base implementation of `_.nth` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {Array} array The array to query.\n     * @param {number} n The index of the element to return.\n     * @returns {*} Returns the nth element of `array`.\n     */\n    function baseNth(array, n) {\n      var length = array.length;\n      if (!length) {\n        return;\n      }\n      n += n < 0 ? length : 0;\n      return isIndex(n, length) ? array[n] : undefined;\n    }\n\n    /**\n     * The base implementation of `_.orderBy` without param guards.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n     * @param {string[]} orders The sort orders of `iteratees`.\n     * @returns {Array} Returns the new sorted array.\n     */\n    function baseOrderBy(collection, iteratees, orders) {\n      if (iteratees.length) {\n        iteratees = arrayMap(iteratees, function(iteratee) {\n          if (isArray(iteratee)) {\n            return function(value) {\n              return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n            }\n          }\n          return iteratee;\n        });\n      } else {\n        iteratees = [identity];\n      }\n\n      var index = -1;\n      iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n      var result = baseMap(collection, function(value, key, collection) {\n        var criteria = arrayMap(iteratees, function(iteratee) {\n          return iteratee(value);\n        });\n        return { 'criteria': criteria, 'index': ++index, 'value': value };\n      });\n\n      return baseSortBy(result, function(object, other) {\n        return compareMultiple(object, other, orders);\n      });\n    }\n\n    /**\n     * The base implementation of `_.pick` without support for individual\n     * property identifiers.\n     *\n     * @private\n     * @param {Object} object The source object.\n     * @param {string[]} paths The property paths to pick.\n     * @returns {Object} Returns the new object.\n     */\n    function basePick(object, paths) {\n      return basePickBy(object, paths, function(value, path) {\n        return hasIn(object, path);\n      });\n    }\n\n    /**\n     * The base implementation of  `_.pickBy` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The source object.\n     * @param {string[]} paths The property paths to pick.\n     * @param {Function} predicate The function invoked per property.\n     * @returns {Object} Returns the new object.\n     */\n    function basePickBy(object, paths, predicate) {\n      var index = -1,\n          length = paths.length,\n          result = {};\n\n      while (++index < length) {\n        var path = paths[index],\n            value = baseGet(object, path);\n\n        if (predicate(value, path)) {\n          baseSet(result, castPath(path, object), value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseProperty` which supports deep paths.\n     *\n     * @private\n     * @param {Array|string} path The path of the property to get.\n     * @returns {Function} Returns the new accessor function.\n     */\n    function basePropertyDeep(path) {\n      return function(object) {\n        return baseGet(object, path);\n      };\n    }\n\n    /**\n     * The base implementation of `_.pullAllBy` without support for iteratee\n     * shorthands.\n     *\n     * @private\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns `array`.\n     */\n    function basePullAll(array, values, iteratee, comparator) {\n      var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n          index = -1,\n          length = values.length,\n          seen = array;\n\n      if (array === values) {\n        values = copyArray(values);\n      }\n      if (iteratee) {\n        seen = arrayMap(array, baseUnary(iteratee));\n      }\n      while (++index < length) {\n        var fromIndex = 0,\n            value = values[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n          if (seen !== array) {\n            splice.call(seen, fromIndex, 1);\n          }\n          splice.call(array, fromIndex, 1);\n        }\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.pullAt` without support for individual\n     * indexes or capturing the removed elements.\n     *\n     * @private\n     * @param {Array} array The array to modify.\n     * @param {number[]} indexes The indexes of elements to remove.\n     * @returns {Array} Returns `array`.\n     */\n    function basePullAt(array, indexes) {\n      var length = array ? indexes.length : 0,\n          lastIndex = length - 1;\n\n      while (length--) {\n        var index = indexes[length];\n        if (length == lastIndex || index !== previous) {\n          var previous = index;\n          if (isIndex(index)) {\n            splice.call(array, index, 1);\n          } else {\n            baseUnset(array, index);\n          }\n        }\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.random` without support for returning\n     * floating-point numbers.\n     *\n     * @private\n     * @param {number} lower The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the random number.\n     */\n    function baseRandom(lower, upper) {\n      return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n    }\n\n    /**\n     * The base implementation of `_.range` and `_.rangeRight` which doesn't\n     * coerce arguments.\n     *\n     * @private\n     * @param {number} start The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} step The value to increment or decrement by.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Array} Returns the range of numbers.\n     */\n    function baseRange(start, end, step, fromRight) {\n      var index = -1,\n          length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n          result = Array(length);\n\n      while (length--) {\n        result[fromRight ? length : ++index] = start;\n        start += step;\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.repeat` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {string} string The string to repeat.\n     * @param {number} n The number of times to repeat the string.\n     * @returns {string} Returns the repeated string.\n     */\n    function baseRepeat(string, n) {\n      var result = '';\n      if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n        return result;\n      }\n      // Leverage the exponentiation by squaring algorithm for a faster repeat.\n      // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n      do {\n        if (n % 2) {\n          result += string;\n        }\n        n = nativeFloor(n / 2);\n        if (n) {\n          string += string;\n        }\n      } while (n);\n\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @returns {Function} Returns the new function.\n     */\n    function baseRest(func, start) {\n      return setToString(overRest(func, start, identity), func + '');\n    }\n\n    /**\n     * The base implementation of `_.sample`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to sample.\n     * @returns {*} Returns the random element.\n     */\n    function baseSample(collection) {\n      return arraySample(values(collection));\n    }\n\n    /**\n     * The base implementation of `_.sampleSize` without param guards.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to sample.\n     * @param {number} n The number of elements to sample.\n     * @returns {Array} Returns the random elements.\n     */\n    function baseSampleSize(collection, n) {\n      var array = values(collection);\n      return shuffleSelf(array, baseClamp(n, 0, array.length));\n    }\n\n    /**\n     * The base implementation of `_.set`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @param {Function} [customizer] The function to customize path creation.\n     * @returns {Object} Returns `object`.\n     */\n    function baseSet(object, path, value, customizer) {\n      if (!isObject(object)) {\n        return object;\n      }\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length,\n          lastIndex = length - 1,\n          nested = object;\n\n      while (nested != null && ++index < length) {\n        var key = toKey(path[index]),\n            newValue = value;\n\n        if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n          return object;\n        }\n\n        if (index != lastIndex) {\n          var objValue = nested[key];\n          newValue = customizer ? customizer(objValue, key, nested) : undefined;\n          if (newValue === undefined) {\n            newValue = isObject(objValue)\n              ? objValue\n              : (isIndex(path[index + 1]) ? [] : {});\n          }\n        }\n        assignValue(nested, key, newValue);\n        nested = nested[key];\n      }\n      return object;\n    }\n\n    /**\n     * The base implementation of `setData` without support for hot loop shorting.\n     *\n     * @private\n     * @param {Function} func The function to associate metadata with.\n     * @param {*} data The metadata.\n     * @returns {Function} Returns `func`.\n     */\n    var baseSetData = !metaMap ? identity : function(func, data) {\n      metaMap.set(func, data);\n      return func;\n    };\n\n    /**\n     * The base implementation of `setToString` without support for hot loop shorting.\n     *\n     * @private\n     * @param {Function} func The function to modify.\n     * @param {Function} string The `toString` result.\n     * @returns {Function} Returns `func`.\n     */\n    var baseSetToString = !defineProperty ? identity : function(func, string) {\n      return defineProperty(func, 'toString', {\n        'configurable': true,\n        'enumerable': false,\n        'value': constant(string),\n        'writable': true\n      });\n    };\n\n    /**\n     * The base implementation of `_.shuffle`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     */\n    function baseShuffle(collection) {\n      return shuffleSelf(values(collection));\n    }\n\n    /**\n     * The base implementation of `_.slice` without an iteratee call guard.\n     *\n     * @private\n     * @param {Array} array The array to slice.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function baseSlice(array, start, end) {\n      var index = -1,\n          length = array.length;\n\n      if (start < 0) {\n        start = -start > length ? 0 : (length + start);\n      }\n      end = end > length ? length : end;\n      if (end < 0) {\n        end += length;\n      }\n      length = start > end ? 0 : ((end - start) >>> 0);\n      start >>>= 0;\n\n      var result = Array(length);\n      while (++index < length) {\n        result[index] = array[index + start];\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.some` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {boolean} Returns `true` if any element passes the predicate check,\n     *  else `false`.\n     */\n    function baseSome(collection, predicate) {\n      var result;\n\n      baseEach(collection, function(value, index, collection) {\n        result = predicate(value, index, collection);\n        return !result;\n      });\n      return !!result;\n    }\n\n    /**\n     * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n     * performs a binary search of `array` to determine the index at which `value`\n     * should be inserted into `array` in order to maintain its sort order.\n     *\n     * @private\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {boolean} [retHighest] Specify returning the highest qualified index.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     */\n    function baseSortedIndex(array, value, retHighest) {\n      var low = 0,\n          high = array == null ? low : array.length;\n\n      if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n        while (low < high) {\n          var mid = (low + high) >>> 1,\n              computed = array[mid];\n\n          if (computed !== null && !isSymbol(computed) &&\n              (retHighest ? (computed <= value) : (computed < value))) {\n            low = mid + 1;\n          } else {\n            high = mid;\n          }\n        }\n        return high;\n      }\n      return baseSortedIndexBy(array, value, identity, retHighest);\n    }\n\n    /**\n     * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n     * which invokes `iteratee` for `value` and each element of `array` to compute\n     * their sort ranking. The iteratee is invoked with one argument; (value).\n     *\n     * @private\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} iteratee The iteratee invoked per element.\n     * @param {boolean} [retHighest] Specify returning the highest qualified index.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     */\n    function baseSortedIndexBy(array, value, iteratee, retHighest) {\n      var low = 0,\n          high = array == null ? 0 : array.length;\n      if (high === 0) {\n        return 0;\n      }\n\n      value = iteratee(value);\n      var valIsNaN = value !== value,\n          valIsNull = value === null,\n          valIsSymbol = isSymbol(value),\n          valIsUndefined = value === undefined;\n\n      while (low < high) {\n        var mid = nativeFloor((low + high) / 2),\n            computed = iteratee(array[mid]),\n            othIsDefined = computed !== undefined,\n            othIsNull = computed === null,\n            othIsReflexive = computed === computed,\n            othIsSymbol = isSymbol(computed);\n\n        if (valIsNaN) {\n          var setLow = retHighest || othIsReflexive;\n        } else if (valIsUndefined) {\n          setLow = othIsReflexive && (retHighest || othIsDefined);\n        } else if (valIsNull) {\n          setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n        } else if (valIsSymbol) {\n          setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n        } else if (othIsNull || othIsSymbol) {\n          setLow = false;\n        } else {\n          setLow = retHighest ? (computed <= value) : (computed < value);\n        }\n        if (setLow) {\n          low = mid + 1;\n        } else {\n          high = mid;\n        }\n      }\n      return nativeMin(high, MAX_ARRAY_INDEX);\n    }\n\n    /**\n     * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n     * support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     */\n    function baseSortedUniq(array, iteratee) {\n      var index = -1,\n          length = array.length,\n          resIndex = 0,\n          result = [];\n\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        if (!index || !eq(computed, seen)) {\n          var seen = computed;\n          result[resIndex++] = value === 0 ? 0 : value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.toNumber` which doesn't ensure correct\n     * conversions of binary, hexadecimal, or octal string values.\n     *\n     * @private\n     * @param {*} value The value to process.\n     * @returns {number} Returns the number.\n     */\n    function baseToNumber(value) {\n      if (typeof value == 'number') {\n        return value;\n      }\n      if (isSymbol(value)) {\n        return NAN;\n      }\n      return +value;\n    }\n\n    /**\n     * The base implementation of `_.toString` which doesn't convert nullish\n     * values to empty strings.\n     *\n     * @private\n     * @param {*} value The value to process.\n     * @returns {string} Returns the string.\n     */\n    function baseToString(value) {\n      // Exit early for strings to avoid a performance hit in some environments.\n      if (typeof value == 'string') {\n        return value;\n      }\n      if (isArray(value)) {\n        // Recursively convert values (susceptible to call stack limits).\n        return arrayMap(value, baseToString) + '';\n      }\n      if (isSymbol(value)) {\n        return symbolToString ? symbolToString.call(value) : '';\n      }\n      var result = (value + '');\n      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n    }\n\n    /**\n     * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     */\n    function baseUniq(array, iteratee, comparator) {\n      var index = -1,\n          includes = arrayIncludes,\n          length = array.length,\n          isCommon = true,\n          result = [],\n          seen = result;\n\n      if (comparator) {\n        isCommon = false;\n        includes = arrayIncludesWith;\n      }\n      else if (length >= LARGE_ARRAY_SIZE) {\n        var set = iteratee ? null : createSet(array);\n        if (set) {\n          return setToArray(set);\n        }\n        isCommon = false;\n        includes = cacheHas;\n        seen = new SetCache;\n      }\n      else {\n        seen = iteratee ? [] : result;\n      }\n      outer:\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (isCommon && computed === computed) {\n          var seenIndex = seen.length;\n          while (seenIndex--) {\n            if (seen[seenIndex] === computed) {\n              continue outer;\n            }\n          }\n          if (iteratee) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n        else if (!includes(seen, computed, comparator)) {\n          if (seen !== result) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.unset`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The property path to unset.\n     * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n     */\n    function baseUnset(object, path) {\n      path = castPath(path, object);\n      object = parent(object, path);\n      return object == null || delete object[toKey(last(path))];\n    }\n\n    /**\n     * The base implementation of `_.update`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to update.\n     * @param {Function} updater The function to produce the updated value.\n     * @param {Function} [customizer] The function to customize path creation.\n     * @returns {Object} Returns `object`.\n     */\n    function baseUpdate(object, path, updater, customizer) {\n      return baseSet(object, path, updater(baseGet(object, path)), customizer);\n    }\n\n    /**\n     * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n     * without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to query.\n     * @param {Function} predicate The function invoked per iteration.\n     * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function baseWhile(array, predicate, isDrop, fromRight) {\n      var length = array.length,\n          index = fromRight ? length : -1;\n\n      while ((fromRight ? index-- : ++index < length) &&\n        predicate(array[index], index, array)) {}\n\n      return isDrop\n        ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n        : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n    }\n\n    /**\n     * The base implementation of `wrapperValue` which returns the result of\n     * performing a sequence of actions on the unwrapped `value`, where each\n     * successive action is supplied the return value of the previous.\n     *\n     * @private\n     * @param {*} value The unwrapped value.\n     * @param {Array} actions Actions to perform to resolve the unwrapped value.\n     * @returns {*} Returns the resolved value.\n     */\n    function baseWrapperValue(value, actions) {\n      var result = value;\n      if (result instanceof LazyWrapper) {\n        result = result.value();\n      }\n      return arrayReduce(actions, function(result, action) {\n        return action.func.apply(action.thisArg, arrayPush([result], action.args));\n      }, result);\n    }\n\n    /**\n     * The base implementation of methods like `_.xor`, without support for\n     * iteratee shorthands, that accepts an array of arrays to inspect.\n     *\n     * @private\n     * @param {Array} arrays The arrays to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of values.\n     */\n    function baseXor(arrays, iteratee, comparator) {\n      var length = arrays.length;\n      if (length < 2) {\n        return length ? baseUniq(arrays[0]) : [];\n      }\n      var index = -1,\n          result = Array(length);\n\n      while (++index < length) {\n        var array = arrays[index],\n            othIndex = -1;\n\n        while (++othIndex < length) {\n          if (othIndex != index) {\n            result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n          }\n        }\n      }\n      return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n    }\n\n    /**\n     * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n     *\n     * @private\n     * @param {Array} props The property identifiers.\n     * @param {Array} values The property values.\n     * @param {Function} assignFunc The function to assign values.\n     * @returns {Object} Returns the new object.\n     */\n    function baseZipObject(props, values, assignFunc) {\n      var index = -1,\n          length = props.length,\n          valsLength = values.length,\n          result = {};\n\n      while (++index < length) {\n        var value = index < valsLength ? values[index] : undefined;\n        assignFunc(result, props[index], value);\n      }\n      return result;\n    }\n\n    /**\n     * Casts `value` to an empty array if it's not an array like object.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {Array|Object} Returns the cast array-like object.\n     */\n    function castArrayLikeObject(value) {\n      return isArrayLikeObject(value) ? value : [];\n    }\n\n    /**\n     * Casts `value` to `identity` if it's not a function.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {Function} Returns cast function.\n     */\n    function castFunction(value) {\n      return typeof value == 'function' ? value : identity;\n    }\n\n    /**\n     * Casts `value` to a path array if it's not one.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @param {Object} [object] The object to query keys on.\n     * @returns {Array} Returns the cast property path array.\n     */\n    function castPath(value, object) {\n      if (isArray(value)) {\n        return value;\n      }\n      return isKey(value, object) ? [value] : stringToPath(toString(value));\n    }\n\n    /**\n     * A `baseRest` alias which can be replaced with `identity` by module\n     * replacement plugins.\n     *\n     * @private\n     * @type {Function}\n     * @param {Function} func The function to apply a rest parameter to.\n     * @returns {Function} Returns the new function.\n     */\n    var castRest = baseRest;\n\n    /**\n     * Casts `array` to a slice if it's needed.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {number} start The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the cast slice.\n     */\n    function castSlice(array, start, end) {\n      var length = array.length;\n      end = end === undefined ? length : end;\n      return (!start && end >= length) ? array : baseSlice(array, start, end);\n    }\n\n    /**\n     * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n     *\n     * @private\n     * @param {number|Object} id The timer id or timeout object of the timer to clear.\n     */\n    var clearTimeout = ctxClearTimeout || function(id) {\n      return root.clearTimeout(id);\n    };\n\n    /**\n     * Creates a clone of  `buffer`.\n     *\n     * @private\n     * @param {Buffer} buffer The buffer to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Buffer} Returns the cloned buffer.\n     */\n    function cloneBuffer(buffer, isDeep) {\n      if (isDeep) {\n        return buffer.slice();\n      }\n      var length = buffer.length,\n          result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n      buffer.copy(result);\n      return result;\n    }\n\n    /**\n     * Creates a clone of `arrayBuffer`.\n     *\n     * @private\n     * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n     * @returns {ArrayBuffer} Returns the cloned array buffer.\n     */\n    function cloneArrayBuffer(arrayBuffer) {\n      var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n      new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n      return result;\n    }\n\n    /**\n     * Creates a clone of `dataView`.\n     *\n     * @private\n     * @param {Object} dataView The data view to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the cloned data view.\n     */\n    function cloneDataView(dataView, isDeep) {\n      var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n      return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n    }\n\n    /**\n     * Creates a clone of `regexp`.\n     *\n     * @private\n     * @param {Object} regexp The regexp to clone.\n     * @returns {Object} Returns the cloned regexp.\n     */\n    function cloneRegExp(regexp) {\n      var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n      result.lastIndex = regexp.lastIndex;\n      return result;\n    }\n\n    /**\n     * Creates a clone of the `symbol` object.\n     *\n     * @private\n     * @param {Object} symbol The symbol object to clone.\n     * @returns {Object} Returns the cloned symbol object.\n     */\n    function cloneSymbol(symbol) {\n      return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n    }\n\n    /**\n     * Creates a clone of `typedArray`.\n     *\n     * @private\n     * @param {Object} typedArray The typed array to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the cloned typed array.\n     */\n    function cloneTypedArray(typedArray, isDeep) {\n      var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n      return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n    }\n\n    /**\n     * Compares values to sort them in ascending order.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {number} Returns the sort order indicator for `value`.\n     */\n    function compareAscending(value, other) {\n      if (value !== other) {\n        var valIsDefined = value !== undefined,\n            valIsNull = value === null,\n            valIsReflexive = value === value,\n            valIsSymbol = isSymbol(value);\n\n        var othIsDefined = other !== undefined,\n            othIsNull = other === null,\n            othIsReflexive = other === other,\n            othIsSymbol = isSymbol(other);\n\n        if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n            (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n            (valIsNull && othIsDefined && othIsReflexive) ||\n            (!valIsDefined && othIsReflexive) ||\n            !valIsReflexive) {\n          return 1;\n        }\n        if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n            (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n            (othIsNull && valIsDefined && valIsReflexive) ||\n            (!othIsDefined && valIsReflexive) ||\n            !othIsReflexive) {\n          return -1;\n        }\n      }\n      return 0;\n    }\n\n    /**\n     * Used by `_.orderBy` to compare multiple properties of a value to another\n     * and stable sort them.\n     *\n     * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n     * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n     * of corresponding values.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {boolean[]|string[]} orders The order to sort by for each property.\n     * @returns {number} Returns the sort order indicator for `object`.\n     */\n    function compareMultiple(object, other, orders) {\n      var index = -1,\n          objCriteria = object.criteria,\n          othCriteria = other.criteria,\n          length = objCriteria.length,\n          ordersLength = orders.length;\n\n      while (++index < length) {\n        var result = compareAscending(objCriteria[index], othCriteria[index]);\n        if (result) {\n          if (index >= ordersLength) {\n            return result;\n          }\n          var order = orders[index];\n          return result * (order == 'desc' ? -1 : 1);\n        }\n      }\n      // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n      // that causes it, under certain circumstances, to provide the same value for\n      // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n      // for more details.\n      //\n      // This also ensures a stable sort in V8 and other engines.\n      // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n      return object.index - other.index;\n    }\n\n    /**\n     * Creates an array that is the composition of partially applied arguments,\n     * placeholders, and provided arguments into a single array of arguments.\n     *\n     * @private\n     * @param {Array} args The provided arguments.\n     * @param {Array} partials The arguments to prepend to those provided.\n     * @param {Array} holders The `partials` placeholder indexes.\n     * @params {boolean} [isCurried] Specify composing for a curried function.\n     * @returns {Array} Returns the new array of composed arguments.\n     */\n    function composeArgs(args, partials, holders, isCurried) {\n      var argsIndex = -1,\n          argsLength = args.length,\n          holdersLength = holders.length,\n          leftIndex = -1,\n          leftLength = partials.length,\n          rangeLength = nativeMax(argsLength - holdersLength, 0),\n          result = Array(leftLength + rangeLength),\n          isUncurried = !isCurried;\n\n      while (++leftIndex < leftLength) {\n        result[leftIndex] = partials[leftIndex];\n      }\n      while (++argsIndex < holdersLength) {\n        if (isUncurried || argsIndex < argsLength) {\n          result[holders[argsIndex]] = args[argsIndex];\n        }\n      }\n      while (rangeLength--) {\n        result[leftIndex++] = args[argsIndex++];\n      }\n      return result;\n    }\n\n    /**\n     * This function is like `composeArgs` except that the arguments composition\n     * is tailored for `_.partialRight`.\n     *\n     * @private\n     * @param {Array} args The provided arguments.\n     * @param {Array} partials The arguments to append to those provided.\n     * @param {Array} holders The `partials` placeholder indexes.\n     * @params {boolean} [isCurried] Specify composing for a curried function.\n     * @returns {Array} Returns the new array of composed arguments.\n     */\n    function composeArgsRight(args, partials, holders, isCurried) {\n      var argsIndex = -1,\n          argsLength = args.length,\n          holdersIndex = -1,\n          holdersLength = holders.length,\n          rightIndex = -1,\n          rightLength = partials.length,\n          rangeLength = nativeMax(argsLength - holdersLength, 0),\n          result = Array(rangeLength + rightLength),\n          isUncurried = !isCurried;\n\n      while (++argsIndex < rangeLength) {\n        result[argsIndex] = args[argsIndex];\n      }\n      var offset = argsIndex;\n      while (++rightIndex < rightLength) {\n        result[offset + rightIndex] = partials[rightIndex];\n      }\n      while (++holdersIndex < holdersLength) {\n        if (isUncurried || argsIndex < argsLength) {\n          result[offset + holders[holdersIndex]] = args[argsIndex++];\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Copies the values of `source` to `array`.\n     *\n     * @private\n     * @param {Array} source The array to copy values from.\n     * @param {Array} [array=[]] The array to copy values to.\n     * @returns {Array} Returns `array`.\n     */\n    function copyArray(source, array) {\n      var index = -1,\n          length = source.length;\n\n      array || (array = Array(length));\n      while (++index < length) {\n        array[index] = source[index];\n      }\n      return array;\n    }\n\n    /**\n     * Copies properties of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy properties from.\n     * @param {Array} props The property identifiers to copy.\n     * @param {Object} [object={}] The object to copy properties to.\n     * @param {Function} [customizer] The function to customize copied values.\n     * @returns {Object} Returns `object`.\n     */\n    function copyObject(source, props, object, customizer) {\n      var isNew = !object;\n      object || (object = {});\n\n      var index = -1,\n          length = props.length;\n\n      while (++index < length) {\n        var key = props[index];\n\n        var newValue = customizer\n          ? customizer(object[key], source[key], key, object, source)\n          : undefined;\n\n        if (newValue === undefined) {\n          newValue = source[key];\n        }\n        if (isNew) {\n          baseAssignValue(object, key, newValue);\n        } else {\n          assignValue(object, key, newValue);\n        }\n      }\n      return object;\n    }\n\n    /**\n     * Copies own symbols of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy symbols from.\n     * @param {Object} [object={}] The object to copy symbols to.\n     * @returns {Object} Returns `object`.\n     */\n    function copySymbols(source, object) {\n      return copyObject(source, getSymbols(source), object);\n    }\n\n    /**\n     * Copies own and inherited symbols of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy symbols from.\n     * @param {Object} [object={}] The object to copy symbols to.\n     * @returns {Object} Returns `object`.\n     */\n    function copySymbolsIn(source, object) {\n      return copyObject(source, getSymbolsIn(source), object);\n    }\n\n    /**\n     * Creates a function like `_.groupBy`.\n     *\n     * @private\n     * @param {Function} setter The function to set accumulator values.\n     * @param {Function} [initializer] The accumulator object initializer.\n     * @returns {Function} Returns the new aggregator function.\n     */\n    function createAggregator(setter, initializer) {\n      return function(collection, iteratee) {\n        var func = isArray(collection) ? arrayAggregator : baseAggregator,\n            accumulator = initializer ? initializer() : {};\n\n        return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n      };\n    }\n\n    /**\n     * Creates a function like `_.assign`.\n     *\n     * @private\n     * @param {Function} assigner The function to assign values.\n     * @returns {Function} Returns the new assigner function.\n     */\n    function createAssigner(assigner) {\n      return baseRest(function(object, sources) {\n        var index = -1,\n            length = sources.length,\n            customizer = length > 1 ? sources[length - 1] : undefined,\n            guard = length > 2 ? sources[2] : undefined;\n\n        customizer = (assigner.length > 3 && typeof customizer == 'function')\n          ? (length--, customizer)\n          : undefined;\n\n        if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n          customizer = length < 3 ? undefined : customizer;\n          length = 1;\n        }\n        object = Object(object);\n        while (++index < length) {\n          var source = sources[index];\n          if (source) {\n            assigner(object, source, index, customizer);\n          }\n        }\n        return object;\n      });\n    }\n\n    /**\n     * Creates a `baseEach` or `baseEachRight` function.\n     *\n     * @private\n     * @param {Function} eachFunc The function to iterate over a collection.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new base function.\n     */\n    function createBaseEach(eachFunc, fromRight) {\n      return function(collection, iteratee) {\n        if (collection == null) {\n          return collection;\n        }\n        if (!isArrayLike(collection)) {\n          return eachFunc(collection, iteratee);\n        }\n        var length = collection.length,\n            index = fromRight ? length : -1,\n            iterable = Object(collection);\n\n        while ((fromRight ? index-- : ++index < length)) {\n          if (iteratee(iterable[index], index, iterable) === false) {\n            break;\n          }\n        }\n        return collection;\n      };\n    }\n\n    /**\n     * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new base function.\n     */\n    function createBaseFor(fromRight) {\n      return function(object, iteratee, keysFunc) {\n        var index = -1,\n            iterable = Object(object),\n            props = keysFunc(object),\n            length = props.length;\n\n        while (length--) {\n          var key = props[fromRight ? length : ++index];\n          if (iteratee(iterable[key], key, iterable) === false) {\n            break;\n          }\n        }\n        return object;\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with the optional `this`\n     * binding of `thisArg`.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createBind(func, bitmask, thisArg) {\n      var isBind = bitmask & WRAP_BIND_FLAG,\n          Ctor = createCtor(func);\n\n      function wrapper() {\n        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n        return fn.apply(isBind ? thisArg : this, arguments);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a function like `_.lowerFirst`.\n     *\n     * @private\n     * @param {string} methodName The name of the `String` case method to use.\n     * @returns {Function} Returns the new case function.\n     */\n    function createCaseFirst(methodName) {\n      return function(string) {\n        string = toString(string);\n\n        var strSymbols = hasUnicode(string)\n          ? stringToArray(string)\n          : undefined;\n\n        var chr = strSymbols\n          ? strSymbols[0]\n          : string.charAt(0);\n\n        var trailing = strSymbols\n          ? castSlice(strSymbols, 1).join('')\n          : string.slice(1);\n\n        return chr[methodName]() + trailing;\n      };\n    }\n\n    /**\n     * Creates a function like `_.camelCase`.\n     *\n     * @private\n     * @param {Function} callback The function to combine each word.\n     * @returns {Function} Returns the new compounder function.\n     */\n    function createCompounder(callback) {\n      return function(string) {\n        return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n      };\n    }\n\n    /**\n     * Creates a function that produces an instance of `Ctor` regardless of\n     * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n     *\n     * @private\n     * @param {Function} Ctor The constructor to wrap.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createCtor(Ctor) {\n      return function() {\n        // Use a `switch` statement to work with class constructors. See\n        // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n        // for more details.\n        var args = arguments;\n        switch (args.length) {\n          case 0: return new Ctor;\n          case 1: return new Ctor(args[0]);\n          case 2: return new Ctor(args[0], args[1]);\n          case 3: return new Ctor(args[0], args[1], args[2]);\n          case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n          case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n          case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n          case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n        }\n        var thisBinding = baseCreate(Ctor.prototype),\n            result = Ctor.apply(thisBinding, args);\n\n        // Mimic the constructor's `return` behavior.\n        // See https://es5.github.io/#x13.2.2 for more details.\n        return isObject(result) ? result : thisBinding;\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to enable currying.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {number} arity The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createCurry(func, bitmask, arity) {\n      var Ctor = createCtor(func);\n\n      function wrapper() {\n        var length = arguments.length,\n            args = Array(length),\n            index = length,\n            placeholder = getHolder(wrapper);\n\n        while (index--) {\n          args[index] = arguments[index];\n        }\n        var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n          ? []\n          : replaceHolders(args, placeholder);\n\n        length -= holders.length;\n        if (length < arity) {\n          return createRecurry(\n            func, bitmask, createHybrid, wrapper.placeholder, undefined,\n            args, holders, undefined, undefined, arity - length);\n        }\n        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n        return apply(fn, this, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a `_.find` or `_.findLast` function.\n     *\n     * @private\n     * @param {Function} findIndexFunc The function to find the collection index.\n     * @returns {Function} Returns the new find function.\n     */\n    function createFind(findIndexFunc) {\n      return function(collection, predicate, fromIndex) {\n        var iterable = Object(collection);\n        if (!isArrayLike(collection)) {\n          var iteratee = getIteratee(predicate, 3);\n          collection = keys(collection);\n          predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n        }\n        var index = findIndexFunc(collection, predicate, fromIndex);\n        return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n      };\n    }\n\n    /**\n     * Creates a `_.flow` or `_.flowRight` function.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new flow function.\n     */\n    function createFlow(fromRight) {\n      return flatRest(function(funcs) {\n        var length = funcs.length,\n            index = length,\n            prereq = LodashWrapper.prototype.thru;\n\n        if (fromRight) {\n          funcs.reverse();\n        }\n        while (index--) {\n          var func = funcs[index];\n          if (typeof func != 'function') {\n            throw new TypeError(FUNC_ERROR_TEXT);\n          }\n          if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n            var wrapper = new LodashWrapper([], true);\n          }\n        }\n        index = wrapper ? index : length;\n        while (++index < length) {\n          func = funcs[index];\n\n          var funcName = getFuncName(func),\n              data = funcName == 'wrapper' ? getData(func) : undefined;\n\n          if (data && isLaziable(data[0]) &&\n                data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n                !data[4].length && data[9] == 1\n              ) {\n            wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n          } else {\n            wrapper = (func.length == 1 && isLaziable(func))\n              ? wrapper[funcName]()\n              : wrapper.thru(func);\n          }\n        }\n        return function() {\n          var args = arguments,\n              value = args[0];\n\n          if (wrapper && args.length == 1 && isArray(value)) {\n            return wrapper.plant(value).value();\n          }\n          var index = 0,\n              result = length ? funcs[index].apply(this, args) : value;\n\n          while (++index < length) {\n            result = funcs[index].call(this, result);\n          }\n          return result;\n        };\n      });\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with optional `this`\n     * binding of `thisArg`, partial application, and currying.\n     *\n     * @private\n     * @param {Function|string} func The function or method name to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to prepend to those provided to\n     *  the new function.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [partialsRight] The arguments to append to those provided\n     *  to the new function.\n     * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n      var isAry = bitmask & WRAP_ARY_FLAG,\n          isBind = bitmask & WRAP_BIND_FLAG,\n          isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n          isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n          isFlip = bitmask & WRAP_FLIP_FLAG,\n          Ctor = isBindKey ? undefined : createCtor(func);\n\n      function wrapper() {\n        var length = arguments.length,\n            args = Array(length),\n            index = length;\n\n        while (index--) {\n          args[index] = arguments[index];\n        }\n        if (isCurried) {\n          var placeholder = getHolder(wrapper),\n              holdersCount = countHolders(args, placeholder);\n        }\n        if (partials) {\n          args = composeArgs(args, partials, holders, isCurried);\n        }\n        if (partialsRight) {\n          args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n        }\n        length -= holdersCount;\n        if (isCurried && length < arity) {\n          var newHolders = replaceHolders(args, placeholder);\n          return createRecurry(\n            func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n            args, newHolders, argPos, ary, arity - length\n          );\n        }\n        var thisBinding = isBind ? thisArg : this,\n            fn = isBindKey ? thisBinding[func] : func;\n\n        length = args.length;\n        if (argPos) {\n          args = reorder(args, argPos);\n        } else if (isFlip && length > 1) {\n          args.reverse();\n        }\n        if (isAry && ary < length) {\n          args.length = ary;\n        }\n        if (this && this !== root && this instanceof wrapper) {\n          fn = Ctor || createCtor(fn);\n        }\n        return fn.apply(thisBinding, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a function like `_.invertBy`.\n     *\n     * @private\n     * @param {Function} setter The function to set accumulator values.\n     * @param {Function} toIteratee The function to resolve iteratees.\n     * @returns {Function} Returns the new inverter function.\n     */\n    function createInverter(setter, toIteratee) {\n      return function(object, iteratee) {\n        return baseInverter(object, setter, toIteratee(iteratee), {});\n      };\n    }\n\n    /**\n     * Creates a function that performs a mathematical operation on two values.\n     *\n     * @private\n     * @param {Function} operator The function to perform the operation.\n     * @param {number} [defaultValue] The value used for `undefined` arguments.\n     * @returns {Function} Returns the new mathematical operation function.\n     */\n    function createMathOperation(operator, defaultValue) {\n      return function(value, other) {\n        var result;\n        if (value === undefined && other === undefined) {\n          return defaultValue;\n        }\n        if (value !== undefined) {\n          result = value;\n        }\n        if (other !== undefined) {\n          if (result === undefined) {\n            return other;\n          }\n          if (typeof value == 'string' || typeof other == 'string') {\n            value = baseToString(value);\n            other = baseToString(other);\n          } else {\n            value = baseToNumber(value);\n            other = baseToNumber(other);\n          }\n          result = operator(value, other);\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Creates a function like `_.over`.\n     *\n     * @private\n     * @param {Function} arrayFunc The function to iterate over iteratees.\n     * @returns {Function} Returns the new over function.\n     */\n    function createOver(arrayFunc) {\n      return flatRest(function(iteratees) {\n        iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n        return baseRest(function(args) {\n          var thisArg = this;\n          return arrayFunc(iteratees, function(iteratee) {\n            return apply(iteratee, thisArg, args);\n          });\n        });\n      });\n    }\n\n    /**\n     * Creates the padding for `string` based on `length`. The `chars` string\n     * is truncated if the number of characters exceeds `length`.\n     *\n     * @private\n     * @param {number} length The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padding for `string`.\n     */\n    function createPadding(length, chars) {\n      chars = chars === undefined ? ' ' : baseToString(chars);\n\n      var charsLength = chars.length;\n      if (charsLength < 2) {\n        return charsLength ? baseRepeat(chars, length) : chars;\n      }\n      var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n      return hasUnicode(chars)\n        ? castSlice(stringToArray(result), 0, length).join('')\n        : result.slice(0, length);\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with the `this` binding\n     * of `thisArg` and `partials` prepended to the arguments it receives.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} thisArg The `this` binding of `func`.\n     * @param {Array} partials The arguments to prepend to those provided to\n     *  the new function.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createPartial(func, bitmask, thisArg, partials) {\n      var isBind = bitmask & WRAP_BIND_FLAG,\n          Ctor = createCtor(func);\n\n      function wrapper() {\n        var argsIndex = -1,\n            argsLength = arguments.length,\n            leftIndex = -1,\n            leftLength = partials.length,\n            args = Array(leftLength + argsLength),\n            fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n        while (++leftIndex < leftLength) {\n          args[leftIndex] = partials[leftIndex];\n        }\n        while (argsLength--) {\n          args[leftIndex++] = arguments[++argsIndex];\n        }\n        return apply(fn, isBind ? thisArg : this, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a `_.range` or `_.rangeRight` function.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new range function.\n     */\n    function createRange(fromRight) {\n      return function(start, end, step) {\n        if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n          end = step = undefined;\n        }\n        // Ensure the sign of `-0` is preserved.\n        start = toFinite(start);\n        if (end === undefined) {\n          end = start;\n          start = 0;\n        } else {\n          end = toFinite(end);\n        }\n        step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n        return baseRange(start, end, step, fromRight);\n      };\n    }\n\n    /**\n     * Creates a function that performs a relational operation on two values.\n     *\n     * @private\n     * @param {Function} operator The function to perform the operation.\n     * @returns {Function} Returns the new relational operation function.\n     */\n    function createRelationalOperation(operator) {\n      return function(value, other) {\n        if (!(typeof value == 'string' && typeof other == 'string')) {\n          value = toNumber(value);\n          other = toNumber(other);\n        }\n        return operator(value, other);\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to continue currying.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {Function} wrapFunc The function to create the `func` wrapper.\n     * @param {*} placeholder The placeholder value.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to prepend to those provided to\n     *  the new function.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n      var isCurry = bitmask & WRAP_CURRY_FLAG,\n          newHolders = isCurry ? holders : undefined,\n          newHoldersRight = isCurry ? undefined : holders,\n          newPartials = isCurry ? partials : undefined,\n          newPartialsRight = isCurry ? undefined : partials;\n\n      bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n      bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n      if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n        bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n      }\n      var newData = [\n        func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n        newHoldersRight, argPos, ary, arity\n      ];\n\n      var result = wrapFunc.apply(undefined, newData);\n      if (isLaziable(func)) {\n        setData(result, newData);\n      }\n      result.placeholder = placeholder;\n      return setWrapToString(result, func, bitmask);\n    }\n\n    /**\n     * Creates a function like `_.round`.\n     *\n     * @private\n     * @param {string} methodName The name of the `Math` method to use when rounding.\n     * @returns {Function} Returns the new round function.\n     */\n    function createRound(methodName) {\n      var func = Math[methodName];\n      return function(number, precision) {\n        number = toNumber(number);\n        precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n        if (precision && nativeIsFinite(number)) {\n          // Shift with exponential notation to avoid floating-point issues.\n          // See [MDN](https://mdn.io/round#Examples) for more details.\n          var pair = (toString(number) + 'e').split('e'),\n              value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n          pair = (toString(value) + 'e').split('e');\n          return +(pair[0] + 'e' + (+pair[1] - precision));\n        }\n        return func(number);\n      };\n    }\n\n    /**\n     * Creates a set object of `values`.\n     *\n     * @private\n     * @param {Array} values The values to add to the set.\n     * @returns {Object} Returns the new set.\n     */\n    var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n      return new Set(values);\n    };\n\n    /**\n     * Creates a `_.toPairs` or `_.toPairsIn` function.\n     *\n     * @private\n     * @param {Function} keysFunc The function to get the keys of a given object.\n     * @returns {Function} Returns the new pairs function.\n     */\n    function createToPairs(keysFunc) {\n      return function(object) {\n        var tag = getTag(object);\n        if (tag == mapTag) {\n          return mapToArray(object);\n        }\n        if (tag == setTag) {\n          return setToPairs(object);\n        }\n        return baseToPairs(object, keysFunc(object));\n      };\n    }\n\n    /**\n     * Creates a function that either curries or invokes `func` with optional\n     * `this` binding and partially applied arguments.\n     *\n     * @private\n     * @param {Function|string} func The function or method name to wrap.\n     * @param {number} bitmask The bitmask flags.\n     *    1 - `_.bind`\n     *    2 - `_.bindKey`\n     *    4 - `_.curry` or `_.curryRight` of a bound function\n     *    8 - `_.curry`\n     *   16 - `_.curryRight`\n     *   32 - `_.partial`\n     *   64 - `_.partialRight`\n     *  128 - `_.rearg`\n     *  256 - `_.ary`\n     *  512 - `_.flip`\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to be partially applied.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n      var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n      if (!isBindKey && typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      var length = partials ? partials.length : 0;\n      if (!length) {\n        bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n        partials = holders = undefined;\n      }\n      ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n      arity = arity === undefined ? arity : toInteger(arity);\n      length -= holders ? holders.length : 0;\n\n      if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n        var partialsRight = partials,\n            holdersRight = holders;\n\n        partials = holders = undefined;\n      }\n      var data = isBindKey ? undefined : getData(func);\n\n      var newData = [\n        func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n        argPos, ary, arity\n      ];\n\n      if (data) {\n        mergeData(newData, data);\n      }\n      func = newData[0];\n      bitmask = newData[1];\n      thisArg = newData[2];\n      partials = newData[3];\n      holders = newData[4];\n      arity = newData[9] = newData[9] === undefined\n        ? (isBindKey ? 0 : func.length)\n        : nativeMax(newData[9] - length, 0);\n\n      if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n        bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n      }\n      if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n        var result = createBind(func, bitmask, thisArg);\n      } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n        result = createCurry(func, bitmask, arity);\n      } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n        result = createPartial(func, bitmask, thisArg, partials);\n      } else {\n        result = createHybrid.apply(undefined, newData);\n      }\n      var setter = data ? baseSetData : setData;\n      return setWrapToString(setter(result, newData), func, bitmask);\n    }\n\n    /**\n     * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n     * of source objects to the destination object for all destination properties\n     * that resolve to `undefined`.\n     *\n     * @private\n     * @param {*} objValue The destination value.\n     * @param {*} srcValue The source value.\n     * @param {string} key The key of the property to assign.\n     * @param {Object} object The parent object of `objValue`.\n     * @returns {*} Returns the value to assign.\n     */\n    function customDefaultsAssignIn(objValue, srcValue, key, object) {\n      if (objValue === undefined ||\n          (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n        return srcValue;\n      }\n      return objValue;\n    }\n\n    /**\n     * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n     * objects into destination objects that are passed thru.\n     *\n     * @private\n     * @param {*} objValue The destination value.\n     * @param {*} srcValue The source value.\n     * @param {string} key The key of the property to merge.\n     * @param {Object} object The parent object of `objValue`.\n     * @param {Object} source The parent object of `srcValue`.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     * @returns {*} Returns the value to assign.\n     */\n    function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n      if (isObject(objValue) && isObject(srcValue)) {\n        // Recursively merge objects and arrays (susceptible to call stack limits).\n        stack.set(srcValue, objValue);\n        baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n        stack['delete'](srcValue);\n      }\n      return objValue;\n    }\n\n    /**\n     * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n     * objects.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @param {string} key The key of the property to inspect.\n     * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n     */\n    function customOmitClone(value) {\n      return isPlainObject(value) ? undefined : value;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for arrays with support for\n     * partial deep comparisons.\n     *\n     * @private\n     * @param {Array} array The array to compare.\n     * @param {Array} other The other array to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `array` and `other` objects.\n     * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n     */\n    function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n          arrLength = array.length,\n          othLength = other.length;\n\n      if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n        return false;\n      }\n      // Check that cyclic values are equal.\n      var arrStacked = stack.get(array);\n      var othStacked = stack.get(other);\n      if (arrStacked && othStacked) {\n        return arrStacked == other && othStacked == array;\n      }\n      var index = -1,\n          result = true,\n          seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n      stack.set(array, other);\n      stack.set(other, array);\n\n      // Ignore non-index properties.\n      while (++index < arrLength) {\n        var arrValue = array[index],\n            othValue = other[index];\n\n        if (customizer) {\n          var compared = isPartial\n            ? customizer(othValue, arrValue, index, other, array, stack)\n            : customizer(arrValue, othValue, index, array, other, stack);\n        }\n        if (compared !== undefined) {\n          if (compared) {\n            continue;\n          }\n          result = false;\n          break;\n        }\n        // Recursively compare arrays (susceptible to call stack limits).\n        if (seen) {\n          if (!arraySome(other, function(othValue, othIndex) {\n                if (!cacheHas(seen, othIndex) &&\n                    (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n                  return seen.push(othIndex);\n                }\n              })) {\n            result = false;\n            break;\n          }\n        } else if (!(\n              arrValue === othValue ||\n                equalFunc(arrValue, othValue, bitmask, customizer, stack)\n            )) {\n          result = false;\n          break;\n        }\n      }\n      stack['delete'](array);\n      stack['delete'](other);\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for comparing objects of\n     * the same `toStringTag`.\n     *\n     * **Note:** This function only supports comparing values with tags of\n     * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {string} tag The `toStringTag` of the objects to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n      switch (tag) {\n        case dataViewTag:\n          if ((object.byteLength != other.byteLength) ||\n              (object.byteOffset != other.byteOffset)) {\n            return false;\n          }\n          object = object.buffer;\n          other = other.buffer;\n\n        case arrayBufferTag:\n          if ((object.byteLength != other.byteLength) ||\n              !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n            return false;\n          }\n          return true;\n\n        case boolTag:\n        case dateTag:\n        case numberTag:\n          // Coerce booleans to `1` or `0` and dates to milliseconds.\n          // Invalid dates are coerced to `NaN`.\n          return eq(+object, +other);\n\n        case errorTag:\n          return object.name == other.name && object.message == other.message;\n\n        case regexpTag:\n        case stringTag:\n          // Coerce regexes to strings and treat strings, primitives and objects,\n          // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n          // for more details.\n          return object == (other + '');\n\n        case mapTag:\n          var convert = mapToArray;\n\n        case setTag:\n          var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n          convert || (convert = setToArray);\n\n          if (object.size != other.size && !isPartial) {\n            return false;\n          }\n          // Assume cyclic values are equal.\n          var stacked = stack.get(object);\n          if (stacked) {\n            return stacked == other;\n          }\n          bitmask |= COMPARE_UNORDERED_FLAG;\n\n          // Recursively compare objects (susceptible to call stack limits).\n          stack.set(object, other);\n          var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n          stack['delete'](object);\n          return result;\n\n        case symbolTag:\n          if (symbolValueOf) {\n            return symbolValueOf.call(object) == symbolValueOf.call(other);\n          }\n      }\n      return false;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for objects with support for\n     * partial deep comparisons.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n          objProps = getAllKeys(object),\n          objLength = objProps.length,\n          othProps = getAllKeys(other),\n          othLength = othProps.length;\n\n      if (objLength != othLength && !isPartial) {\n        return false;\n      }\n      var index = objLength;\n      while (index--) {\n        var key = objProps[index];\n        if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n          return false;\n        }\n      }\n      // Check that cyclic values are equal.\n      var objStacked = stack.get(object);\n      var othStacked = stack.get(other);\n      if (objStacked && othStacked) {\n        return objStacked == other && othStacked == object;\n      }\n      var result = true;\n      stack.set(object, other);\n      stack.set(other, object);\n\n      var skipCtor = isPartial;\n      while (++index < objLength) {\n        key = objProps[index];\n        var objValue = object[key],\n            othValue = other[key];\n\n        if (customizer) {\n          var compared = isPartial\n            ? customizer(othValue, objValue, key, other, object, stack)\n            : customizer(objValue, othValue, key, object, other, stack);\n        }\n        // Recursively compare objects (susceptible to call stack limits).\n        if (!(compared === undefined\n              ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n              : compared\n            )) {\n          result = false;\n          break;\n        }\n        skipCtor || (skipCtor = key == 'constructor');\n      }\n      if (result && !skipCtor) {\n        var objCtor = object.constructor,\n            othCtor = other.constructor;\n\n        // Non `Object` object instances with different constructors are not equal.\n        if (objCtor != othCtor &&\n            ('constructor' in object && 'constructor' in other) &&\n            !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n              typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n          result = false;\n        }\n      }\n      stack['delete'](object);\n      stack['delete'](other);\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseRest` which flattens the rest array.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @returns {Function} Returns the new function.\n     */\n    function flatRest(func) {\n      return setToString(overRest(func, undefined, flatten), func + '');\n    }\n\n    /**\n     * Creates an array of own enumerable property names and symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function getAllKeys(object) {\n      return baseGetAllKeys(object, keys, getSymbols);\n    }\n\n    /**\n     * Creates an array of own and inherited enumerable property names and\n     * symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function getAllKeysIn(object) {\n      return baseGetAllKeys(object, keysIn, getSymbolsIn);\n    }\n\n    /**\n     * Gets metadata for `func`.\n     *\n     * @private\n     * @param {Function} func The function to query.\n     * @returns {*} Returns the metadata for `func`.\n     */\n    var getData = !metaMap ? noop : function(func) {\n      return metaMap.get(func);\n    };\n\n    /**\n     * Gets the name of `func`.\n     *\n     * @private\n     * @param {Function} func The function to query.\n     * @returns {string} Returns the function name.\n     */\n    function getFuncName(func) {\n      var result = (func.name + ''),\n          array = realNames[result],\n          length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n      while (length--) {\n        var data = array[length],\n            otherFunc = data.func;\n        if (otherFunc == null || otherFunc == func) {\n          return data.name;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Gets the argument placeholder value for `func`.\n     *\n     * @private\n     * @param {Function} func The function to inspect.\n     * @returns {*} Returns the placeholder value.\n     */\n    function getHolder(func) {\n      var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n      return object.placeholder;\n    }\n\n    /**\n     * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n     * this function returns the custom method, otherwise it returns `baseIteratee`.\n     * If arguments are provided, the chosen function is invoked with them and\n     * its result is returned.\n     *\n     * @private\n     * @param {*} [value] The value to convert to an iteratee.\n     * @param {number} [arity] The arity of the created iteratee.\n     * @returns {Function} Returns the chosen function or its result.\n     */\n    function getIteratee() {\n      var result = lodash.iteratee || iteratee;\n      result = result === iteratee ? baseIteratee : result;\n      return arguments.length ? result(arguments[0], arguments[1]) : result;\n    }\n\n    /**\n     * Gets the data for `map`.\n     *\n     * @private\n     * @param {Object} map The map to query.\n     * @param {string} key The reference key.\n     * @returns {*} Returns the map data.\n     */\n    function getMapData(map, key) {\n      var data = map.__data__;\n      return isKeyable(key)\n        ? data[typeof key == 'string' ? 'string' : 'hash']\n        : data.map;\n    }\n\n    /**\n     * Gets the property names, values, and compare flags of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the match data of `object`.\n     */\n    function getMatchData(object) {\n      var result = keys(object),\n          length = result.length;\n\n      while (length--) {\n        var key = result[length],\n            value = object[key];\n\n        result[length] = [key, value, isStrictComparable(value)];\n      }\n      return result;\n    }\n\n    /**\n     * Gets the native function at `key` of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {string} key The key of the method to get.\n     * @returns {*} Returns the function if it's native, else `undefined`.\n     */\n    function getNative(object, key) {\n      var value = getValue(object, key);\n      return baseIsNative(value) ? value : undefined;\n    }\n\n    /**\n     * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the raw `toStringTag`.\n     */\n    function getRawTag(value) {\n      var isOwn = hasOwnProperty.call(value, symToStringTag),\n          tag = value[symToStringTag];\n\n      try {\n        value[symToStringTag] = undefined;\n        var unmasked = true;\n      } catch (e) {}\n\n      var result = nativeObjectToString.call(value);\n      if (unmasked) {\n        if (isOwn) {\n          value[symToStringTag] = tag;\n        } else {\n          delete value[symToStringTag];\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Creates an array of the own enumerable symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of symbols.\n     */\n    var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n      if (object == null) {\n        return [];\n      }\n      object = Object(object);\n      return arrayFilter(nativeGetSymbols(object), function(symbol) {\n        return propertyIsEnumerable.call(object, symbol);\n      });\n    };\n\n    /**\n     * Creates an array of the own and inherited enumerable symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of symbols.\n     */\n    var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n      var result = [];\n      while (object) {\n        arrayPush(result, getSymbols(object));\n        object = getPrototype(object);\n      }\n      return result;\n    };\n\n    /**\n     * Gets the `toStringTag` of `value`.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the `toStringTag`.\n     */\n    var getTag = baseGetTag;\n\n    // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n    if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n        (Map && getTag(new Map) != mapTag) ||\n        (Promise && getTag(Promise.resolve()) != promiseTag) ||\n        (Set && getTag(new Set) != setTag) ||\n        (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n      getTag = function(value) {\n        var result = baseGetTag(value),\n            Ctor = result == objectTag ? value.constructor : undefined,\n            ctorString = Ctor ? toSource(Ctor) : '';\n\n        if (ctorString) {\n          switch (ctorString) {\n            case dataViewCtorString: return dataViewTag;\n            case mapCtorString: return mapTag;\n            case promiseCtorString: return promiseTag;\n            case setCtorString: return setTag;\n            case weakMapCtorString: return weakMapTag;\n          }\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Gets the view, applying any `transforms` to the `start` and `end` positions.\n     *\n     * @private\n     * @param {number} start The start of the view.\n     * @param {number} end The end of the view.\n     * @param {Array} transforms The transformations to apply to the view.\n     * @returns {Object} Returns an object containing the `start` and `end`\n     *  positions of the view.\n     */\n    function getView(start, end, transforms) {\n      var index = -1,\n          length = transforms.length;\n\n      while (++index < length) {\n        var data = transforms[index],\n            size = data.size;\n\n        switch (data.type) {\n          case 'drop':      start += size; break;\n          case 'dropRight': end -= size; break;\n          case 'take':      end = nativeMin(end, start + size); break;\n          case 'takeRight': start = nativeMax(start, end - size); break;\n        }\n      }\n      return { 'start': start, 'end': end };\n    }\n\n    /**\n     * Extracts wrapper details from the `source` body comment.\n     *\n     * @private\n     * @param {string} source The source to inspect.\n     * @returns {Array} Returns the wrapper details.\n     */\n    function getWrapDetails(source) {\n      var match = source.match(reWrapDetails);\n      return match ? match[1].split(reSplitDetails) : [];\n    }\n\n    /**\n     * Checks if `path` exists on `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @param {Function} hasFunc The function to check properties.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     */\n    function hasPath(object, path, hasFunc) {\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length,\n          result = false;\n\n      while (++index < length) {\n        var key = toKey(path[index]);\n        if (!(result = object != null && hasFunc(object, key))) {\n          break;\n        }\n        object = object[key];\n      }\n      if (result || ++index != length) {\n        return result;\n      }\n      length = object == null ? 0 : object.length;\n      return !!length && isLength(length) && isIndex(key, length) &&\n        (isArray(object) || isArguments(object));\n    }\n\n    /**\n     * Initializes an array clone.\n     *\n     * @private\n     * @param {Array} array The array to clone.\n     * @returns {Array} Returns the initialized clone.\n     */\n    function initCloneArray(array) {\n      var length = array.length,\n          result = new array.constructor(length);\n\n      // Add properties assigned by `RegExp#exec`.\n      if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n        result.index = array.index;\n        result.input = array.input;\n      }\n      return result;\n    }\n\n    /**\n     * Initializes an object clone.\n     *\n     * @private\n     * @param {Object} object The object to clone.\n     * @returns {Object} Returns the initialized clone.\n     */\n    function initCloneObject(object) {\n      return (typeof object.constructor == 'function' && !isPrototype(object))\n        ? baseCreate(getPrototype(object))\n        : {};\n    }\n\n    /**\n     * Initializes an object clone based on its `toStringTag`.\n     *\n     * **Note:** This function only supports cloning values with tags of\n     * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n     *\n     * @private\n     * @param {Object} object The object to clone.\n     * @param {string} tag The `toStringTag` of the object to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the initialized clone.\n     */\n    function initCloneByTag(object, tag, isDeep) {\n      var Ctor = object.constructor;\n      switch (tag) {\n        case arrayBufferTag:\n          return cloneArrayBuffer(object);\n\n        case boolTag:\n        case dateTag:\n          return new Ctor(+object);\n\n        case dataViewTag:\n          return cloneDataView(object, isDeep);\n\n        case float32Tag: case float64Tag:\n        case int8Tag: case int16Tag: case int32Tag:\n        case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n          return cloneTypedArray(object, isDeep);\n\n        case mapTag:\n          return new Ctor;\n\n        case numberTag:\n        case stringTag:\n          return new Ctor(object);\n\n        case regexpTag:\n          return cloneRegExp(object);\n\n        case setTag:\n          return new Ctor;\n\n        case symbolTag:\n          return cloneSymbol(object);\n      }\n    }\n\n    /**\n     * Inserts wrapper `details` in a comment at the top of the `source` body.\n     *\n     * @private\n     * @param {string} source The source to modify.\n     * @returns {Array} details The details to insert.\n     * @returns {string} Returns the modified source.\n     */\n    function insertWrapDetails(source, details) {\n      var length = details.length;\n      if (!length) {\n        return source;\n      }\n      var lastIndex = length - 1;\n      details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n      details = details.join(length > 2 ? ', ' : ' ');\n      return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n    }\n\n    /**\n     * Checks if `value` is a flattenable `arguments` object or array.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n     */\n    function isFlattenable(value) {\n      return isArray(value) || isArguments(value) ||\n        !!(spreadableSymbol && value && value[spreadableSymbol]);\n    }\n\n    /**\n     * Checks if `value` is a valid array-like index.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n     * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n     */\n    function isIndex(value, length) {\n      var type = typeof value;\n      length = length == null ? MAX_SAFE_INTEGER : length;\n\n      return !!length &&\n        (type == 'number' ||\n          (type != 'symbol' && reIsUint.test(value))) &&\n            (value > -1 && value % 1 == 0 && value < length);\n    }\n\n    /**\n     * Checks if the given arguments are from an iteratee call.\n     *\n     * @private\n     * @param {*} value The potential iteratee value argument.\n     * @param {*} index The potential iteratee index or key argument.\n     * @param {*} object The potential iteratee object argument.\n     * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n     *  else `false`.\n     */\n    function isIterateeCall(value, index, object) {\n      if (!isObject(object)) {\n        return false;\n      }\n      var type = typeof index;\n      if (type == 'number'\n            ? (isArrayLike(object) && isIndex(index, object.length))\n            : (type == 'string' && index in object)\n          ) {\n        return eq(object[index], value);\n      }\n      return false;\n    }\n\n    /**\n     * Checks if `value` is a property name and not a property path.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @param {Object} [object] The object to query keys on.\n     * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n     */\n    function isKey(value, object) {\n      if (isArray(value)) {\n        return false;\n      }\n      var type = typeof value;\n      if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n          value == null || isSymbol(value)) {\n        return true;\n      }\n      return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n        (object != null && value in Object(object));\n    }\n\n    /**\n     * Checks if `value` is suitable for use as unique object key.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n     */\n    function isKeyable(value) {\n      var type = typeof value;\n      return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n        ? (value !== '__proto__')\n        : (value === null);\n    }\n\n    /**\n     * Checks if `func` has a lazy counterpart.\n     *\n     * @private\n     * @param {Function} func The function to check.\n     * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n     *  else `false`.\n     */\n    function isLaziable(func) {\n      var funcName = getFuncName(func),\n          other = lodash[funcName];\n\n      if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n        return false;\n      }\n      if (func === other) {\n        return true;\n      }\n      var data = getData(other);\n      return !!data && func === data[0];\n    }\n\n    /**\n     * Checks if `func` has its source masked.\n     *\n     * @private\n     * @param {Function} func The function to check.\n     * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n     */\n    function isMasked(func) {\n      return !!maskSrcKey && (maskSrcKey in func);\n    }\n\n    /**\n     * Checks if `func` is capable of being masked.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n     */\n    var isMaskable = coreJsData ? isFunction : stubFalse;\n\n    /**\n     * Checks if `value` is likely a prototype object.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n     */\n    function isPrototype(value) {\n      var Ctor = value && value.constructor,\n          proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n      return value === proto;\n    }\n\n    /**\n     * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` if suitable for strict\n     *  equality comparisons, else `false`.\n     */\n    function isStrictComparable(value) {\n      return value === value && !isObject(value);\n    }\n\n    /**\n     * A specialized version of `matchesProperty` for source values suitable\n     * for strict equality comparisons, i.e. `===`.\n     *\n     * @private\n     * @param {string} key The key of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function matchesStrictComparable(key, srcValue) {\n      return function(object) {\n        if (object == null) {\n          return false;\n        }\n        return object[key] === srcValue &&\n          (srcValue !== undefined || (key in Object(object)));\n      };\n    }\n\n    /**\n     * A specialized version of `_.memoize` which clears the memoized function's\n     * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n     *\n     * @private\n     * @param {Function} func The function to have its output memoized.\n     * @returns {Function} Returns the new memoized function.\n     */\n    function memoizeCapped(func) {\n      var result = memoize(func, function(key) {\n        if (cache.size === MAX_MEMOIZE_SIZE) {\n          cache.clear();\n        }\n        return key;\n      });\n\n      var cache = result.cache;\n      return result;\n    }\n\n    /**\n     * Merges the function metadata of `source` into `data`.\n     *\n     * Merging metadata reduces the number of wrappers used to invoke a function.\n     * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n     * may be applied regardless of execution order. Methods like `_.ary` and\n     * `_.rearg` modify function arguments, making the order in which they are\n     * executed important, preventing the merging of metadata. However, we make\n     * an exception for a safe combined case where curried functions have `_.ary`\n     * and or `_.rearg` applied.\n     *\n     * @private\n     * @param {Array} data The destination metadata.\n     * @param {Array} source The source metadata.\n     * @returns {Array} Returns `data`.\n     */\n    function mergeData(data, source) {\n      var bitmask = data[1],\n          srcBitmask = source[1],\n          newBitmask = bitmask | srcBitmask,\n          isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n      var isCombo =\n        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n        ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n      // Exit early if metadata can't be merged.\n      if (!(isCommon || isCombo)) {\n        return data;\n      }\n      // Use source `thisArg` if available.\n      if (srcBitmask & WRAP_BIND_FLAG) {\n        data[2] = source[2];\n        // Set when currying a bound function.\n        newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n      }\n      // Compose partial arguments.\n      var value = source[3];\n      if (value) {\n        var partials = data[3];\n        data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n        data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n      }\n      // Compose partial right arguments.\n      value = source[5];\n      if (value) {\n        partials = data[5];\n        data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n        data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n      }\n      // Use source `argPos` if available.\n      value = source[7];\n      if (value) {\n        data[7] = value;\n      }\n      // Use source `ary` if it's smaller.\n      if (srcBitmask & WRAP_ARY_FLAG) {\n        data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n      }\n      // Use source `arity` if one is not provided.\n      if (data[9] == null) {\n        data[9] = source[9];\n      }\n      // Use source `func` and merge bitmasks.\n      data[0] = source[0];\n      data[1] = newBitmask;\n\n      return data;\n    }\n\n    /**\n     * This function is like\n     * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n     * except that it includes inherited enumerable properties.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function nativeKeysIn(object) {\n      var result = [];\n      if (object != null) {\n        for (var key in Object(object)) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Converts `value` to a string using `Object.prototype.toString`.\n     *\n     * @private\n     * @param {*} value The value to convert.\n     * @returns {string} Returns the converted string.\n     */\n    function objectToString(value) {\n      return nativeObjectToString.call(value);\n    }\n\n    /**\n     * A specialized version of `baseRest` which transforms the rest array.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @param {Function} transform The rest array transform.\n     * @returns {Function} Returns the new function.\n     */\n    function overRest(func, start, transform) {\n      start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n      return function() {\n        var args = arguments,\n            index = -1,\n            length = nativeMax(args.length - start, 0),\n            array = Array(length);\n\n        while (++index < length) {\n          array[index] = args[start + index];\n        }\n        index = -1;\n        var otherArgs = Array(start + 1);\n        while (++index < start) {\n          otherArgs[index] = args[index];\n        }\n        otherArgs[start] = transform(array);\n        return apply(func, this, otherArgs);\n      };\n    }\n\n    /**\n     * Gets the parent value at `path` of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array} path The path to get the parent value of.\n     * @returns {*} Returns the parent value.\n     */\n    function parent(object, path) {\n      return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n    }\n\n    /**\n     * Reorder `array` according to the specified indexes where the element at\n     * the first index is assigned as the first element, the element at\n     * the second index is assigned as the second element, and so on.\n     *\n     * @private\n     * @param {Array} array The array to reorder.\n     * @param {Array} indexes The arranged array indexes.\n     * @returns {Array} Returns `array`.\n     */\n    function reorder(array, indexes) {\n      var arrLength = array.length,\n          length = nativeMin(indexes.length, arrLength),\n          oldArray = copyArray(array);\n\n      while (length--) {\n        var index = indexes[length];\n        array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n      }\n      return array;\n    }\n\n    /**\n     * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {string} key The key of the property to get.\n     * @returns {*} Returns the property value.\n     */\n    function safeGet(object, key) {\n      if (key === 'constructor' && typeof object[key] === 'function') {\n        return;\n      }\n\n      if (key == '__proto__') {\n        return;\n      }\n\n      return object[key];\n    }\n\n    /**\n     * Sets metadata for `func`.\n     *\n     * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n     * period of time, it will trip its breaker and transition to an identity\n     * function to avoid garbage collection pauses in V8. See\n     * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n     * for more details.\n     *\n     * @private\n     * @param {Function} func The function to associate metadata with.\n     * @param {*} data The metadata.\n     * @returns {Function} Returns `func`.\n     */\n    var setData = shortOut(baseSetData);\n\n    /**\n     * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n     *\n     * @private\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @returns {number|Object} Returns the timer id or timeout object.\n     */\n    var setTimeout = ctxSetTimeout || function(func, wait) {\n      return root.setTimeout(func, wait);\n    };\n\n    /**\n     * Sets the `toString` method of `func` to return `string`.\n     *\n     * @private\n     * @param {Function} func The function to modify.\n     * @param {Function} string The `toString` result.\n     * @returns {Function} Returns `func`.\n     */\n    var setToString = shortOut(baseSetToString);\n\n    /**\n     * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n     * with wrapper details in a comment at the top of the source body.\n     *\n     * @private\n     * @param {Function} wrapper The function to modify.\n     * @param {Function} reference The reference function.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @returns {Function} Returns `wrapper`.\n     */\n    function setWrapToString(wrapper, reference, bitmask) {\n      var source = (reference + '');\n      return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n    }\n\n    /**\n     * Creates a function that'll short out and invoke `identity` instead\n     * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n     * milliseconds.\n     *\n     * @private\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new shortable function.\n     */\n    function shortOut(func) {\n      var count = 0,\n          lastCalled = 0;\n\n      return function() {\n        var stamp = nativeNow(),\n            remaining = HOT_SPAN - (stamp - lastCalled);\n\n        lastCalled = stamp;\n        if (remaining > 0) {\n          if (++count >= HOT_COUNT) {\n            return arguments[0];\n          }\n        } else {\n          count = 0;\n        }\n        return func.apply(undefined, arguments);\n      };\n    }\n\n    /**\n     * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n     *\n     * @private\n     * @param {Array} array The array to shuffle.\n     * @param {number} [size=array.length] The size of `array`.\n     * @returns {Array} Returns `array`.\n     */\n    function shuffleSelf(array, size) {\n      var index = -1,\n          length = array.length,\n          lastIndex = length - 1;\n\n      size = size === undefined ? length : size;\n      while (++index < size) {\n        var rand = baseRandom(index, lastIndex),\n            value = array[rand];\n\n        array[rand] = array[index];\n        array[index] = value;\n      }\n      array.length = size;\n      return array;\n    }\n\n    /**\n     * Converts `string` to a property path array.\n     *\n     * @private\n     * @param {string} string The string to convert.\n     * @returns {Array} Returns the property path array.\n     */\n    var stringToPath = memoizeCapped(function(string) {\n      var result = [];\n      if (string.charCodeAt(0) === 46 /* . */) {\n        result.push('');\n      }\n      string.replace(rePropName, function(match, number, quote, subString) {\n        result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n      });\n      return result;\n    });\n\n    /**\n     * Converts `value` to a string key if it's not a string or symbol.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {string|symbol} Returns the key.\n     */\n    function toKey(value) {\n      if (typeof value == 'string' || isSymbol(value)) {\n        return value;\n      }\n      var result = (value + '');\n      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n    }\n\n    /**\n     * Converts `func` to its source code.\n     *\n     * @private\n     * @param {Function} func The function to convert.\n     * @returns {string} Returns the source code.\n     */\n    function toSource(func) {\n      if (func != null) {\n        try {\n          return funcToString.call(func);\n        } catch (e) {}\n        try {\n          return (func + '');\n        } catch (e) {}\n      }\n      return '';\n    }\n\n    /**\n     * Updates wrapper `details` based on `bitmask` flags.\n     *\n     * @private\n     * @returns {Array} details The details to modify.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @returns {Array} Returns `details`.\n     */\n    function updateWrapDetails(details, bitmask) {\n      arrayEach(wrapFlags, function(pair) {\n        var value = '_.' + pair[0];\n        if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n          details.push(value);\n        }\n      });\n      return details.sort();\n    }\n\n    /**\n     * Creates a clone of `wrapper`.\n     *\n     * @private\n     * @param {Object} wrapper The wrapper to clone.\n     * @returns {Object} Returns the cloned wrapper.\n     */\n    function wrapperClone(wrapper) {\n      if (wrapper instanceof LazyWrapper) {\n        return wrapper.clone();\n      }\n      var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n      result.__actions__ = copyArray(wrapper.__actions__);\n      result.__index__  = wrapper.__index__;\n      result.__values__ = wrapper.__values__;\n      return result;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an array of elements split into groups the length of `size`.\n     * If `array` can't be split evenly, the final chunk will be the remaining\n     * elements.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to process.\n     * @param {number} [size=1] The length of each chunk\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the new array of chunks.\n     * @example\n     *\n     * _.chunk(['a', 'b', 'c', 'd'], 2);\n     * // => [['a', 'b'], ['c', 'd']]\n     *\n     * _.chunk(['a', 'b', 'c', 'd'], 3);\n     * // => [['a', 'b', 'c'], ['d']]\n     */\n    function chunk(array, size, guard) {\n      if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n        size = 1;\n      } else {\n        size = nativeMax(toInteger(size), 0);\n      }\n      var length = array == null ? 0 : array.length;\n      if (!length || size < 1) {\n        return [];\n      }\n      var index = 0,\n          resIndex = 0,\n          result = Array(nativeCeil(length / size));\n\n      while (index < length) {\n        result[resIndex++] = baseSlice(array, index, (index += size));\n      }\n      return result;\n    }\n\n    /**\n     * Creates an array with all falsey values removed. The values `false`, `null`,\n     * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to compact.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.compact([0, 1, false, 2, '', 3]);\n     * // => [1, 2, 3]\n     */\n    function compact(array) {\n      var index = -1,\n          length = array == null ? 0 : array.length,\n          resIndex = 0,\n          result = [];\n\n      while (++index < length) {\n        var value = array[index];\n        if (value) {\n          result[resIndex++] = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Creates a new array concatenating `array` with any additional arrays\n     * and/or values.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to concatenate.\n     * @param {...*} [values] The values to concatenate.\n     * @returns {Array} Returns the new concatenated array.\n     * @example\n     *\n     * var array = [1];\n     * var other = _.concat(array, 2, [3], [[4]]);\n     *\n     * console.log(other);\n     * // => [1, 2, 3, [4]]\n     *\n     * console.log(array);\n     * // => [1]\n     */\n    function concat() {\n      var length = arguments.length;\n      if (!length) {\n        return [];\n      }\n      var args = Array(length - 1),\n          array = arguments[0],\n          index = length;\n\n      while (index--) {\n        args[index - 1] = arguments[index];\n      }\n      return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n    }\n\n    /**\n     * Creates an array of `array` values not included in the other given arrays\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. The order and references of result values are\n     * determined by the first array.\n     *\n     * **Note:** Unlike `_.pullAll`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.without, _.xor\n     * @example\n     *\n     * _.difference([2, 1], [2, 3]);\n     * // => [1]\n     */\n    var difference = baseRest(function(array, values) {\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n        : [];\n    });\n\n    /**\n     * This method is like `_.difference` except that it accepts `iteratee` which\n     * is invoked for each element of `array` and `values` to generate the criterion\n     * by which they're compared. The order and references of result values are\n     * determined by the first array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n     * // => [{ 'x': 2 }]\n     */\n    var differenceBy = baseRest(function(array, values) {\n      var iteratee = last(values);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n        : [];\n    });\n\n    /**\n     * This method is like `_.difference` except that it accepts `comparator`\n     * which is invoked to compare elements of `array` to `values`. The order and\n     * references of result values are determined by the first array. The comparator\n     * is invoked with two arguments: (arrVal, othVal).\n     *\n     * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     *\n     * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n     * // => [{ 'x': 2, 'y': 1 }]\n     */\n    var differenceWith = baseRest(function(array, values) {\n      var comparator = last(values);\n      if (isArrayLikeObject(comparator)) {\n        comparator = undefined;\n      }\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n        : [];\n    });\n\n    /**\n     * Creates a slice of `array` with `n` elements dropped from the beginning.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to drop.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.drop([1, 2, 3]);\n     * // => [2, 3]\n     *\n     * _.drop([1, 2, 3], 2);\n     * // => [3]\n     *\n     * _.drop([1, 2, 3], 5);\n     * // => []\n     *\n     * _.drop([1, 2, 3], 0);\n     * // => [1, 2, 3]\n     */\n    function drop(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      return baseSlice(array, n < 0 ? 0 : n, length);\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements dropped from the end.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to drop.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.dropRight([1, 2, 3]);\n     * // => [1, 2]\n     *\n     * _.dropRight([1, 2, 3], 2);\n     * // => [1]\n     *\n     * _.dropRight([1, 2, 3], 5);\n     * // => []\n     *\n     * _.dropRight([1, 2, 3], 0);\n     * // => [1, 2, 3]\n     */\n    function dropRight(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      n = length - n;\n      return baseSlice(array, 0, n < 0 ? 0 : n);\n    }\n\n    /**\n     * Creates a slice of `array` excluding elements dropped from the end.\n     * Elements are dropped until `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.dropRightWhile(users, function(o) { return !o.active; });\n     * // => objects for ['barney']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.dropRightWhile(users, ['active', false]);\n     * // => objects for ['barney']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.dropRightWhile(users, 'active');\n     * // => objects for ['barney', 'fred', 'pebbles']\n     */\n    function dropRightWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), true, true)\n        : [];\n    }\n\n    /**\n     * Creates a slice of `array` excluding elements dropped from the beginning.\n     * Elements are dropped until `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.dropWhile(users, function(o) { return !o.active; });\n     * // => objects for ['pebbles']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.dropWhile(users, { 'user': 'barney', 'active': false });\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.dropWhile(users, ['active', false]);\n     * // => objects for ['pebbles']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.dropWhile(users, 'active');\n     * // => objects for ['barney', 'fred', 'pebbles']\n     */\n    function dropWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), true)\n        : [];\n    }\n\n    /**\n     * Fills elements of `array` with `value` from `start` up to, but not\n     * including, `end`.\n     *\n     * **Note:** This method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Array\n     * @param {Array} array The array to fill.\n     * @param {*} value The value to fill `array` with.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _.fill(array, 'a');\n     * console.log(array);\n     * // => ['a', 'a', 'a']\n     *\n     * _.fill(Array(3), 2);\n     * // => [2, 2, 2]\n     *\n     * _.fill([4, 6, 8, 10], '*', 1, 3);\n     * // => [4, '*', '*', 10]\n     */\n    function fill(array, value, start, end) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n        start = 0;\n        end = length;\n      }\n      return baseFill(array, value, start, end);\n    }\n\n    /**\n     * This method is like `_.find` except that it returns the index of the first\n     * element `predicate` returns truthy for instead of the element itself.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {number} Returns the index of the found element, else `-1`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.findIndex(users, function(o) { return o.user == 'barney'; });\n     * // => 0\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findIndex(users, { 'user': 'fred', 'active': false });\n     * // => 1\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findIndex(users, ['active', false]);\n     * // => 0\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findIndex(users, 'active');\n     * // => 2\n     */\n    function findIndex(array, predicate, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = fromIndex == null ? 0 : toInteger(fromIndex);\n      if (index < 0) {\n        index = nativeMax(length + index, 0);\n      }\n      return baseFindIndex(array, getIteratee(predicate, 3), index);\n    }\n\n    /**\n     * This method is like `_.findIndex` except that it iterates over elements\n     * of `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=array.length-1] The index to search from.\n     * @returns {number} Returns the index of the found element, else `-1`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n     * // => 2\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n     * // => 0\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findLastIndex(users, ['active', false]);\n     * // => 2\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findLastIndex(users, 'active');\n     * // => 0\n     */\n    function findLastIndex(array, predicate, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = length - 1;\n      if (fromIndex !== undefined) {\n        index = toInteger(fromIndex);\n        index = fromIndex < 0\n          ? nativeMax(length + index, 0)\n          : nativeMin(index, length - 1);\n      }\n      return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n    }\n\n    /**\n     * Flattens `array` a single level deep.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * _.flatten([1, [2, [3, [4]], 5]]);\n     * // => [1, 2, [3, [4]], 5]\n     */\n    function flatten(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseFlatten(array, 1) : [];\n    }\n\n    /**\n     * Recursively flattens `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * _.flattenDeep([1, [2, [3, [4]], 5]]);\n     * // => [1, 2, 3, 4, 5]\n     */\n    function flattenDeep(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseFlatten(array, INFINITY) : [];\n    }\n\n    /**\n     * Recursively flatten `array` up to `depth` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.4.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @param {number} [depth=1] The maximum recursion depth.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * var array = [1, [2, [3, [4]], 5]];\n     *\n     * _.flattenDepth(array, 1);\n     * // => [1, 2, [3, [4]], 5]\n     *\n     * _.flattenDepth(array, 2);\n     * // => [1, 2, 3, [4], 5]\n     */\n    function flattenDepth(array, depth) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      depth = depth === undefined ? 1 : toInteger(depth);\n      return baseFlatten(array, depth);\n    }\n\n    /**\n     * The inverse of `_.toPairs`; this method returns an object composed\n     * from key-value `pairs`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} pairs The key-value pairs.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.fromPairs([['a', 1], ['b', 2]]);\n     * // => { 'a': 1, 'b': 2 }\n     */\n    function fromPairs(pairs) {\n      var index = -1,\n          length = pairs == null ? 0 : pairs.length,\n          result = {};\n\n      while (++index < length) {\n        var pair = pairs[index];\n        result[pair[0]] = pair[1];\n      }\n      return result;\n    }\n\n    /**\n     * Gets the first element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @alias first\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {*} Returns the first element of `array`.\n     * @example\n     *\n     * _.head([1, 2, 3]);\n     * // => 1\n     *\n     * _.head([]);\n     * // => undefined\n     */\n    function head(array) {\n      return (array && array.length) ? array[0] : undefined;\n    }\n\n    /**\n     * Gets the index at which the first occurrence of `value` is found in `array`\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. If `fromIndex` is negative, it's used as the\n     * offset from the end of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.indexOf([1, 2, 1, 2], 2);\n     * // => 1\n     *\n     * // Search from the `fromIndex`.\n     * _.indexOf([1, 2, 1, 2], 2, 2);\n     * // => 3\n     */\n    function indexOf(array, value, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = fromIndex == null ? 0 : toInteger(fromIndex);\n      if (index < 0) {\n        index = nativeMax(length + index, 0);\n      }\n      return baseIndexOf(array, value, index);\n    }\n\n    /**\n     * Gets all but the last element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.initial([1, 2, 3]);\n     * // => [1, 2]\n     */\n    function initial(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseSlice(array, 0, -1) : [];\n    }\n\n    /**\n     * Creates an array of unique values that are included in all given arrays\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. The order and references of result values are\n     * determined by the first array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * _.intersection([2, 1], [2, 3]);\n     * // => [2]\n     */\n    var intersection = baseRest(function(arrays) {\n      var mapped = arrayMap(arrays, castArrayLikeObject);\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped)\n        : [];\n    });\n\n    /**\n     * This method is like `_.intersection` except that it accepts `iteratee`\n     * which is invoked for each element of each `arrays` to generate the criterion\n     * by which they're compared. The order and references of result values are\n     * determined by the first array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [2.1]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }]\n     */\n    var intersectionBy = baseRest(function(arrays) {\n      var iteratee = last(arrays),\n          mapped = arrayMap(arrays, castArrayLikeObject);\n\n      if (iteratee === last(mapped)) {\n        iteratee = undefined;\n      } else {\n        mapped.pop();\n      }\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped, getIteratee(iteratee, 2))\n        : [];\n    });\n\n    /**\n     * This method is like `_.intersection` except that it accepts `comparator`\n     * which is invoked to compare elements of `arrays`. The order and references\n     * of result values are determined by the first array. The comparator is\n     * invoked with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.intersectionWith(objects, others, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }]\n     */\n    var intersectionWith = baseRest(function(arrays) {\n      var comparator = last(arrays),\n          mapped = arrayMap(arrays, castArrayLikeObject);\n\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      if (comparator) {\n        mapped.pop();\n      }\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped, undefined, comparator)\n        : [];\n    });\n\n    /**\n     * Converts all elements in `array` into a string separated by `separator`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to convert.\n     * @param {string} [separator=','] The element separator.\n     * @returns {string} Returns the joined string.\n     * @example\n     *\n     * _.join(['a', 'b', 'c'], '~');\n     * // => 'a~b~c'\n     */\n    function join(array, separator) {\n      return array == null ? '' : nativeJoin.call(array, separator);\n    }\n\n    /**\n     * Gets the last element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {*} Returns the last element of `array`.\n     * @example\n     *\n     * _.last([1, 2, 3]);\n     * // => 3\n     */\n    function last(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? array[length - 1] : undefined;\n    }\n\n    /**\n     * This method is like `_.indexOf` except that it iterates over elements of\n     * `array` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=array.length-1] The index to search from.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.lastIndexOf([1, 2, 1, 2], 2);\n     * // => 3\n     *\n     * // Search from the `fromIndex`.\n     * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n     * // => 1\n     */\n    function lastIndexOf(array, value, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = length;\n      if (fromIndex !== undefined) {\n        index = toInteger(fromIndex);\n        index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n      }\n      return value === value\n        ? strictLastIndexOf(array, value, index)\n        : baseFindIndex(array, baseIsNaN, index, true);\n    }\n\n    /**\n     * Gets the element at index `n` of `array`. If `n` is negative, the nth\n     * element from the end is returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.11.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=0] The index of the element to return.\n     * @returns {*} Returns the nth element of `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'd'];\n     *\n     * _.nth(array, 1);\n     * // => 'b'\n     *\n     * _.nth(array, -2);\n     * // => 'c';\n     */\n    function nth(array, n) {\n      return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n    }\n\n    /**\n     * Removes all given values from `array` using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n     * to remove elements from an array by predicate.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {...*} [values] The values to remove.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n     *\n     * _.pull(array, 'a', 'c');\n     * console.log(array);\n     * // => ['b', 'b']\n     */\n    var pull = baseRest(pullAll);\n\n    /**\n     * This method is like `_.pull` except that it accepts an array of values to remove.\n     *\n     * **Note:** Unlike `_.difference`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n     *\n     * _.pullAll(array, ['a', 'c']);\n     * console.log(array);\n     * // => ['b', 'b']\n     */\n    function pullAll(array, values) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values)\n        : array;\n    }\n\n    /**\n     * This method is like `_.pullAll` except that it accepts `iteratee` which is\n     * invoked for each element of `array` and `values` to generate the criterion\n     * by which they're compared. The iteratee is invoked with one argument: (value).\n     *\n     * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n     *\n     * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n     * console.log(array);\n     * // => [{ 'x': 2 }]\n     */\n    function pullAllBy(array, values, iteratee) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values, getIteratee(iteratee, 2))\n        : array;\n    }\n\n    /**\n     * This method is like `_.pullAll` except that it accepts `comparator` which\n     * is invoked to compare elements of `array` to `values`. The comparator is\n     * invoked with two arguments: (arrVal, othVal).\n     *\n     * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n     *\n     * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n     * console.log(array);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n     */\n    function pullAllWith(array, values, comparator) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values, undefined, comparator)\n        : array;\n    }\n\n    /**\n     * Removes elements from `array` corresponding to `indexes` and returns an\n     * array of removed elements.\n     *\n     * **Note:** Unlike `_.at`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n     * @returns {Array} Returns the new array of removed elements.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'd'];\n     * var pulled = _.pullAt(array, [1, 3]);\n     *\n     * console.log(array);\n     * // => ['a', 'c']\n     *\n     * console.log(pulled);\n     * // => ['b', 'd']\n     */\n    var pullAt = flatRest(function(array, indexes) {\n      var length = array == null ? 0 : array.length,\n          result = baseAt(array, indexes);\n\n      basePullAt(array, arrayMap(indexes, function(index) {\n        return isIndex(index, length) ? +index : index;\n      }).sort(compareAscending));\n\n      return result;\n    });\n\n    /**\n     * Removes all elements from `array` that `predicate` returns truthy for\n     * and returns an array of the removed elements. The predicate is invoked\n     * with three arguments: (value, index, array).\n     *\n     * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n     * to pull elements from an array by value.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new array of removed elements.\n     * @example\n     *\n     * var array = [1, 2, 3, 4];\n     * var evens = _.remove(array, function(n) {\n     *   return n % 2 == 0;\n     * });\n     *\n     * console.log(array);\n     * // => [1, 3]\n     *\n     * console.log(evens);\n     * // => [2, 4]\n     */\n    function remove(array, predicate) {\n      var result = [];\n      if (!(array && array.length)) {\n        return result;\n      }\n      var index = -1,\n          indexes = [],\n          length = array.length;\n\n      predicate = getIteratee(predicate, 3);\n      while (++index < length) {\n        var value = array[index];\n        if (predicate(value, index, array)) {\n          result.push(value);\n          indexes.push(index);\n        }\n      }\n      basePullAt(array, indexes);\n      return result;\n    }\n\n    /**\n     * Reverses `array` so that the first element becomes the last, the second\n     * element becomes the second to last, and so on.\n     *\n     * **Note:** This method mutates `array` and is based on\n     * [`Array#reverse`](https://mdn.io/Array/reverse).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _.reverse(array);\n     * // => [3, 2, 1]\n     *\n     * console.log(array);\n     * // => [3, 2, 1]\n     */\n    function reverse(array) {\n      return array == null ? array : nativeReverse.call(array);\n    }\n\n    /**\n     * Creates a slice of `array` from `start` up to, but not including, `end`.\n     *\n     * **Note:** This method is used instead of\n     * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n     * returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to slice.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function slice(array, start, end) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n        start = 0;\n        end = length;\n      }\n      else {\n        start = start == null ? 0 : toInteger(start);\n        end = end === undefined ? length : toInteger(end);\n      }\n      return baseSlice(array, start, end);\n    }\n\n    /**\n     * Uses a binary search to determine the lowest index at which `value`\n     * should be inserted into `array` in order to maintain its sort order.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * _.sortedIndex([30, 50], 40);\n     * // => 1\n     */\n    function sortedIndex(array, value) {\n      return baseSortedIndex(array, value);\n    }\n\n    /**\n     * This method is like `_.sortedIndex` except that it accepts `iteratee`\n     * which is invoked for `value` and each element of `array` to compute their\n     * sort ranking. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * var objects = [{ 'x': 4 }, { 'x': 5 }];\n     *\n     * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n     * // => 0\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n     * // => 0\n     */\n    function sortedIndexBy(array, value, iteratee) {\n      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n    }\n\n    /**\n     * This method is like `_.indexOf` except that it performs a binary\n     * search on a sorted `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n     * // => 1\n     */\n    function sortedIndexOf(array, value) {\n      var length = array == null ? 0 : array.length;\n      if (length) {\n        var index = baseSortedIndex(array, value);\n        if (index < length && eq(array[index], value)) {\n          return index;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * This method is like `_.sortedIndex` except that it returns the highest\n     * index at which `value` should be inserted into `array` in order to\n     * maintain its sort order.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n     * // => 4\n     */\n    function sortedLastIndex(array, value) {\n      return baseSortedIndex(array, value, true);\n    }\n\n    /**\n     * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n     * which is invoked for `value` and each element of `array` to compute their\n     * sort ranking. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * var objects = [{ 'x': 4 }, { 'x': 5 }];\n     *\n     * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n     * // => 1\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n     * // => 1\n     */\n    function sortedLastIndexBy(array, value, iteratee) {\n      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n    }\n\n    /**\n     * This method is like `_.lastIndexOf` except that it performs a binary\n     * search on a sorted `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n     * // => 3\n     */\n    function sortedLastIndexOf(array, value) {\n      var length = array == null ? 0 : array.length;\n      if (length) {\n        var index = baseSortedIndex(array, value, true) - 1;\n        if (eq(array[index], value)) {\n          return index;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * This method is like `_.uniq` except that it's designed and optimized\n     * for sorted arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.sortedUniq([1, 1, 2]);\n     * // => [1, 2]\n     */\n    function sortedUniq(array) {\n      return (array && array.length)\n        ? baseSortedUniq(array)\n        : [];\n    }\n\n    /**\n     * This method is like `_.uniqBy` except that it's designed and optimized\n     * for sorted arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n     * // => [1.1, 2.3]\n     */\n    function sortedUniqBy(array, iteratee) {\n      return (array && array.length)\n        ? baseSortedUniq(array, getIteratee(iteratee, 2))\n        : [];\n    }\n\n    /**\n     * Gets all but the first element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.tail([1, 2, 3]);\n     * // => [2, 3]\n     */\n    function tail(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseSlice(array, 1, length) : [];\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements taken from the beginning.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to take.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.take([1, 2, 3]);\n     * // => [1]\n     *\n     * _.take([1, 2, 3], 2);\n     * // => [1, 2]\n     *\n     * _.take([1, 2, 3], 5);\n     * // => [1, 2, 3]\n     *\n     * _.take([1, 2, 3], 0);\n     * // => []\n     */\n    function take(array, n, guard) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      return baseSlice(array, 0, n < 0 ? 0 : n);\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements taken from the end.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to take.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.takeRight([1, 2, 3]);\n     * // => [3]\n     *\n     * _.takeRight([1, 2, 3], 2);\n     * // => [2, 3]\n     *\n     * _.takeRight([1, 2, 3], 5);\n     * // => [1, 2, 3]\n     *\n     * _.takeRight([1, 2, 3], 0);\n     * // => []\n     */\n    function takeRight(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      n = length - n;\n      return baseSlice(array, n < 0 ? 0 : n, length);\n    }\n\n    /**\n     * Creates a slice of `array` with elements taken from the end. Elements are\n     * taken until `predicate` returns falsey. The predicate is invoked with\n     * three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.takeRightWhile(users, function(o) { return !o.active; });\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n     * // => objects for ['pebbles']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.takeRightWhile(users, ['active', false]);\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.takeRightWhile(users, 'active');\n     * // => []\n     */\n    function takeRightWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), false, true)\n        : [];\n    }\n\n    /**\n     * Creates a slice of `array` with elements taken from the beginning. Elements\n     * are taken until `predicate` returns falsey. The predicate is invoked with\n     * three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.takeWhile(users, function(o) { return !o.active; });\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.takeWhile(users, { 'user': 'barney', 'active': false });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.takeWhile(users, ['active', false]);\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.takeWhile(users, 'active');\n     * // => []\n     */\n    function takeWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3))\n        : [];\n    }\n\n    /**\n     * Creates an array of unique values, in order, from all given arrays using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * _.union([2], [1, 2]);\n     * // => [2, 1]\n     */\n    var union = baseRest(function(arrays) {\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n    });\n\n    /**\n     * This method is like `_.union` except that it accepts `iteratee` which is\n     * invoked for each element of each `arrays` to generate the criterion by\n     * which uniqueness is computed. Result values are chosen from the first\n     * array in which the value occurs. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n     * // => [2.1, 1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }, { 'x': 2 }]\n     */\n    var unionBy = baseRest(function(arrays) {\n      var iteratee = last(arrays);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n    });\n\n    /**\n     * This method is like `_.union` except that it accepts `comparator` which\n     * is invoked to compare elements of `arrays`. Result values are chosen from\n     * the first array in which the value occurs. The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.unionWith(objects, others, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n     */\n    var unionWith = baseRest(function(arrays) {\n      var comparator = last(arrays);\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n    });\n\n    /**\n     * Creates a duplicate-free version of an array, using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons, in which only the first occurrence of each element\n     * is kept. The order of result values is determined by the order they occur\n     * in the array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.uniq([2, 1, 2]);\n     * // => [2, 1]\n     */\n    function uniq(array) {\n      return (array && array.length) ? baseUniq(array) : [];\n    }\n\n    /**\n     * This method is like `_.uniq` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * uniqueness is computed. The order of result values is determined by the\n     * order they occur in the array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n     * // => [2.1, 1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }, { 'x': 2 }]\n     */\n    function uniqBy(array, iteratee) {\n      return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n    }\n\n    /**\n     * This method is like `_.uniq` except that it accepts `comparator` which\n     * is invoked to compare elements of `array`. The order of result values is\n     * determined by the order they occur in the array.The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.uniqWith(objects, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n     */\n    function uniqWith(array, comparator) {\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n    }\n\n    /**\n     * This method is like `_.zip` except that it accepts an array of grouped\n     * elements and creates an array regrouping the elements to their pre-zip\n     * configuration.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.2.0\n     * @category Array\n     * @param {Array} array The array of grouped elements to process.\n     * @returns {Array} Returns the new array of regrouped elements.\n     * @example\n     *\n     * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n     * // => [['a', 1, true], ['b', 2, false]]\n     *\n     * _.unzip(zipped);\n     * // => [['a', 'b'], [1, 2], [true, false]]\n     */\n    function unzip(array) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      var length = 0;\n      array = arrayFilter(array, function(group) {\n        if (isArrayLikeObject(group)) {\n          length = nativeMax(group.length, length);\n          return true;\n        }\n      });\n      return baseTimes(length, function(index) {\n        return arrayMap(array, baseProperty(index));\n      });\n    }\n\n    /**\n     * This method is like `_.unzip` except that it accepts `iteratee` to specify\n     * how regrouped values should be combined. The iteratee is invoked with the\n     * elements of each group: (...group).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Array\n     * @param {Array} array The array of grouped elements to process.\n     * @param {Function} [iteratee=_.identity] The function to combine\n     *  regrouped values.\n     * @returns {Array} Returns the new array of regrouped elements.\n     * @example\n     *\n     * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n     * // => [[1, 10, 100], [2, 20, 200]]\n     *\n     * _.unzipWith(zipped, _.add);\n     * // => [3, 30, 300]\n     */\n    function unzipWith(array, iteratee) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      var result = unzip(array);\n      if (iteratee == null) {\n        return result;\n      }\n      return arrayMap(result, function(group) {\n        return apply(iteratee, undefined, group);\n      });\n    }\n\n    /**\n     * Creates an array excluding all given values using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * **Note:** Unlike `_.pull`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...*} [values] The values to exclude.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.difference, _.xor\n     * @example\n     *\n     * _.without([2, 1, 2, 3], 1, 2);\n     * // => [3]\n     */\n    var without = baseRest(function(array, values) {\n      return isArrayLikeObject(array)\n        ? baseDifference(array, values)\n        : [];\n    });\n\n    /**\n     * Creates an array of unique values that is the\n     * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n     * of the given arrays. The order of result values is determined by the order\n     * they occur in the arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.difference, _.without\n     * @example\n     *\n     * _.xor([2, 1], [2, 3]);\n     * // => [1, 3]\n     */\n    var xor = baseRest(function(arrays) {\n      return baseXor(arrayFilter(arrays, isArrayLikeObject));\n    });\n\n    /**\n     * This method is like `_.xor` except that it accepts `iteratee` which is\n     * invoked for each element of each `arrays` to generate the criterion by\n     * which by which they're compared. The order of result values is determined\n     * by the order they occur in the arrays. The iteratee is invoked with one\n     * argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [1.2, 3.4]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 2 }]\n     */\n    var xorBy = baseRest(function(arrays) {\n      var iteratee = last(arrays);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n    });\n\n    /**\n     * This method is like `_.xor` except that it accepts `comparator` which is\n     * invoked to compare elements of `arrays`. The order of result values is\n     * determined by the order they occur in the arrays. The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.xorWith(objects, others, _.isEqual);\n     * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n     */\n    var xorWith = baseRest(function(arrays) {\n      var comparator = last(arrays);\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n    });\n\n    /**\n     * Creates an array of grouped elements, the first of which contains the\n     * first elements of the given arrays, the second of which contains the\n     * second elements of the given arrays, and so on.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to process.\n     * @returns {Array} Returns the new array of grouped elements.\n     * @example\n     *\n     * _.zip(['a', 'b'], [1, 2], [true, false]);\n     * // => [['a', 1, true], ['b', 2, false]]\n     */\n    var zip = baseRest(unzip);\n\n    /**\n     * This method is like `_.fromPairs` except that it accepts two arrays,\n     * one of property identifiers and one of corresponding values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.4.0\n     * @category Array\n     * @param {Array} [props=[]] The property identifiers.\n     * @param {Array} [values=[]] The property values.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.zipObject(['a', 'b'], [1, 2]);\n     * // => { 'a': 1, 'b': 2 }\n     */\n    function zipObject(props, values) {\n      return baseZipObject(props || [], values || [], assignValue);\n    }\n\n    /**\n     * This method is like `_.zipObject` except that it supports property paths.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.1.0\n     * @category Array\n     * @param {Array} [props=[]] The property identifiers.\n     * @param {Array} [values=[]] The property values.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n     * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n     */\n    function zipObjectDeep(props, values) {\n      return baseZipObject(props || [], values || [], baseSet);\n    }\n\n    /**\n     * This method is like `_.zip` except that it accepts `iteratee` to specify\n     * how grouped values should be combined. The iteratee is invoked with the\n     * elements of each group: (...group).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to process.\n     * @param {Function} [iteratee=_.identity] The function to combine\n     *  grouped values.\n     * @returns {Array} Returns the new array of grouped elements.\n     * @example\n     *\n     * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n     *   return a + b + c;\n     * });\n     * // => [111, 222]\n     */\n    var zipWith = baseRest(function(arrays) {\n      var length = arrays.length,\n          iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n      iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n      return unzipWith(arrays, iteratee);\n    });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n     * chain sequences enabled. The result of such sequences must be unwrapped\n     * with `_#value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.3.0\n     * @category Seq\n     * @param {*} value The value to wrap.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36 },\n     *   { 'user': 'fred',    'age': 40 },\n     *   { 'user': 'pebbles', 'age': 1 }\n     * ];\n     *\n     * var youngest = _\n     *   .chain(users)\n     *   .sortBy('age')\n     *   .map(function(o) {\n     *     return o.user + ' is ' + o.age;\n     *   })\n     *   .head()\n     *   .value();\n     * // => 'pebbles is 1'\n     */\n    function chain(value) {\n      var result = lodash(value);\n      result.__chain__ = true;\n      return result;\n    }\n\n    /**\n     * This method invokes `interceptor` and returns `value`. The interceptor\n     * is invoked with one argument; (value). The purpose of this method is to\n     * \"tap into\" a method chain sequence in order to modify intermediate results.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @param {*} value The value to provide to `interceptor`.\n     * @param {Function} interceptor The function to invoke.\n     * @returns {*} Returns `value`.\n     * @example\n     *\n     * _([1, 2, 3])\n     *  .tap(function(array) {\n     *    // Mutate input array.\n     *    array.pop();\n     *  })\n     *  .reverse()\n     *  .value();\n     * // => [2, 1]\n     */\n    function tap(value, interceptor) {\n      interceptor(value);\n      return value;\n    }\n\n    /**\n     * This method is like `_.tap` except that it returns the result of `interceptor`.\n     * The purpose of this method is to \"pass thru\" values replacing intermediate\n     * results in a method chain sequence.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Seq\n     * @param {*} value The value to provide to `interceptor`.\n     * @param {Function} interceptor The function to invoke.\n     * @returns {*} Returns the result of `interceptor`.\n     * @example\n     *\n     * _('  abc  ')\n     *  .chain()\n     *  .trim()\n     *  .thru(function(value) {\n     *    return [value];\n     *  })\n     *  .value();\n     * // => ['abc']\n     */\n    function thru(value, interceptor) {\n      return interceptor(value);\n    }\n\n    /**\n     * This method is the wrapper version of `_.at`.\n     *\n     * @name at\n     * @memberOf _\n     * @since 1.0.0\n     * @category Seq\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n     *\n     * _(object).at(['a[0].b.c', 'a[1]']).value();\n     * // => [3, 4]\n     */\n    var wrapperAt = flatRest(function(paths) {\n      var length = paths.length,\n          start = length ? paths[0] : 0,\n          value = this.__wrapped__,\n          interceptor = function(object) { return baseAt(object, paths); };\n\n      if (length > 1 || this.__actions__.length ||\n          !(value instanceof LazyWrapper) || !isIndex(start)) {\n        return this.thru(interceptor);\n      }\n      value = value.slice(start, +start + (length ? 1 : 0));\n      value.__actions__.push({\n        'func': thru,\n        'args': [interceptor],\n        'thisArg': undefined\n      });\n      return new LodashWrapper(value, this.__chain__).thru(function(array) {\n        if (length && !array.length) {\n          array.push(undefined);\n        }\n        return array;\n      });\n    });\n\n    /**\n     * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n     *\n     * @name chain\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36 },\n     *   { 'user': 'fred',   'age': 40 }\n     * ];\n     *\n     * // A sequence without explicit chaining.\n     * _(users).head();\n     * // => { 'user': 'barney', 'age': 36 }\n     *\n     * // A sequence with explicit chaining.\n     * _(users)\n     *   .chain()\n     *   .head()\n     *   .pick('user')\n     *   .value();\n     * // => { 'user': 'barney' }\n     */\n    function wrapperChain() {\n      return chain(this);\n    }\n\n    /**\n     * Executes the chain sequence and returns the wrapped result.\n     *\n     * @name commit\n     * @memberOf _\n     * @since 3.2.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var array = [1, 2];\n     * var wrapped = _(array).push(3);\n     *\n     * console.log(array);\n     * // => [1, 2]\n     *\n     * wrapped = wrapped.commit();\n     * console.log(array);\n     * // => [1, 2, 3]\n     *\n     * wrapped.last();\n     * // => 3\n     *\n     * console.log(array);\n     * // => [1, 2, 3]\n     */\n    function wrapperCommit() {\n      return new LodashWrapper(this.value(), this.__chain__);\n    }\n\n    /**\n     * Gets the next value on a wrapped object following the\n     * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n     *\n     * @name next\n     * @memberOf _\n     * @since 4.0.0\n     * @category Seq\n     * @returns {Object} Returns the next iterator value.\n     * @example\n     *\n     * var wrapped = _([1, 2]);\n     *\n     * wrapped.next();\n     * // => { 'done': false, 'value': 1 }\n     *\n     * wrapped.next();\n     * // => { 'done': false, 'value': 2 }\n     *\n     * wrapped.next();\n     * // => { 'done': true, 'value': undefined }\n     */\n    function wrapperNext() {\n      if (this.__values__ === undefined) {\n        this.__values__ = toArray(this.value());\n      }\n      var done = this.__index__ >= this.__values__.length,\n          value = done ? undefined : this.__values__[this.__index__++];\n\n      return { 'done': done, 'value': value };\n    }\n\n    /**\n     * Enables the wrapper to be iterable.\n     *\n     * @name Symbol.iterator\n     * @memberOf _\n     * @since 4.0.0\n     * @category Seq\n     * @returns {Object} Returns the wrapper object.\n     * @example\n     *\n     * var wrapped = _([1, 2]);\n     *\n     * wrapped[Symbol.iterator]() === wrapped;\n     * // => true\n     *\n     * Array.from(wrapped);\n     * // => [1, 2]\n     */\n    function wrapperToIterator() {\n      return this;\n    }\n\n    /**\n     * Creates a clone of the chain sequence planting `value` as the wrapped value.\n     *\n     * @name plant\n     * @memberOf _\n     * @since 3.2.0\n     * @category Seq\n     * @param {*} value The value to plant.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var wrapped = _([1, 2]).map(square);\n     * var other = wrapped.plant([3, 4]);\n     *\n     * other.value();\n     * // => [9, 16]\n     *\n     * wrapped.value();\n     * // => [1, 4]\n     */\n    function wrapperPlant(value) {\n      var result,\n          parent = this;\n\n      while (parent instanceof baseLodash) {\n        var clone = wrapperClone(parent);\n        clone.__index__ = 0;\n        clone.__values__ = undefined;\n        if (result) {\n          previous.__wrapped__ = clone;\n        } else {\n          result = clone;\n        }\n        var previous = clone;\n        parent = parent.__wrapped__;\n      }\n      previous.__wrapped__ = value;\n      return result;\n    }\n\n    /**\n     * This method is the wrapper version of `_.reverse`.\n     *\n     * **Note:** This method mutates the wrapped array.\n     *\n     * @name reverse\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _(array).reverse().value()\n     * // => [3, 2, 1]\n     *\n     * console.log(array);\n     * // => [3, 2, 1]\n     */\n    function wrapperReverse() {\n      var value = this.__wrapped__;\n      if (value instanceof LazyWrapper) {\n        var wrapped = value;\n        if (this.__actions__.length) {\n          wrapped = new LazyWrapper(this);\n        }\n        wrapped = wrapped.reverse();\n        wrapped.__actions__.push({\n          'func': thru,\n          'args': [reverse],\n          'thisArg': undefined\n        });\n        return new LodashWrapper(wrapped, this.__chain__);\n      }\n      return this.thru(reverse);\n    }\n\n    /**\n     * Executes the chain sequence to resolve the unwrapped value.\n     *\n     * @name value\n     * @memberOf _\n     * @since 0.1.0\n     * @alias toJSON, valueOf\n     * @category Seq\n     * @returns {*} Returns the resolved unwrapped value.\n     * @example\n     *\n     * _([1, 2, 3]).value();\n     * // => [1, 2, 3]\n     */\n    function wrapperValue() {\n      return baseWrapperValue(this.__wrapped__, this.__actions__);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The corresponding value of\n     * each key is the number of times the key was returned by `iteratee`. The\n     * iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * _.countBy([6.1, 4.2, 6.3], Math.floor);\n     * // => { '4': 1, '6': 2 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.countBy(['one', 'two', 'three'], 'length');\n     * // => { '3': 2, '5': 1 }\n     */\n    var countBy = createAggregator(function(result, value, key) {\n      if (hasOwnProperty.call(result, key)) {\n        ++result[key];\n      } else {\n        baseAssignValue(result, key, 1);\n      }\n    });\n\n    /**\n     * Checks if `predicate` returns truthy for **all** elements of `collection`.\n     * Iteration is stopped once `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index|key, collection).\n     *\n     * **Note:** This method returns `true` for\n     * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n     * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n     * elements of empty collections.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {boolean} Returns `true` if all elements pass the predicate check,\n     *  else `false`.\n     * @example\n     *\n     * _.every([true, 1, null, 'yes'], Boolean);\n     * // => false\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': false },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.every(users, { 'user': 'barney', 'active': false });\n     * // => false\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.every(users, ['active', false]);\n     * // => true\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.every(users, 'active');\n     * // => false\n     */\n    function every(collection, predicate, guard) {\n      var func = isArray(collection) ? arrayEvery : baseEvery;\n      if (guard && isIterateeCall(collection, predicate, guard)) {\n        predicate = undefined;\n      }\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Iterates over elements of `collection`, returning an array of all elements\n     * `predicate` returns truthy for. The predicate is invoked with three\n     * arguments: (value, index|key, collection).\n     *\n     * **Note:** Unlike `_.remove`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     * @see _.reject\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': true },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * _.filter(users, function(o) { return !o.active; });\n     * // => objects for ['fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.filter(users, { 'age': 36, 'active': true });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.filter(users, ['active', false]);\n     * // => objects for ['fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.filter(users, 'active');\n     * // => objects for ['barney']\n     *\n     * // Combining several predicates using `_.overEvery` or `_.overSome`.\n     * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n     * // => objects for ['fred', 'barney']\n     */\n    function filter(collection, predicate) {\n      var func = isArray(collection) ? arrayFilter : baseFilter;\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Iterates over elements of `collection`, returning the first element\n     * `predicate` returns truthy for. The predicate is invoked with three\n     * arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {*} Returns the matched element, else `undefined`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36, 'active': true },\n     *   { 'user': 'fred',    'age': 40, 'active': false },\n     *   { 'user': 'pebbles', 'age': 1,  'active': true }\n     * ];\n     *\n     * _.find(users, function(o) { return o.age < 40; });\n     * // => object for 'barney'\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.find(users, { 'age': 1, 'active': true });\n     * // => object for 'pebbles'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.find(users, ['active', false]);\n     * // => object for 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.find(users, 'active');\n     * // => object for 'barney'\n     */\n    var find = createFind(findIndex);\n\n    /**\n     * This method is like `_.find` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=collection.length-1] The index to search from.\n     * @returns {*} Returns the matched element, else `undefined`.\n     * @example\n     *\n     * _.findLast([1, 2, 3, 4], function(n) {\n     *   return n % 2 == 1;\n     * });\n     * // => 3\n     */\n    var findLast = createFind(findLastIndex);\n\n    /**\n     * Creates a flattened array of values by running each element in `collection`\n     * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n     * with three arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [n, n];\n     * }\n     *\n     * _.flatMap([1, 2], duplicate);\n     * // => [1, 1, 2, 2]\n     */\n    function flatMap(collection, iteratee) {\n      return baseFlatten(map(collection, iteratee), 1);\n    }\n\n    /**\n     * This method is like `_.flatMap` except that it recursively flattens the\n     * mapped results.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [[[n, n]]];\n     * }\n     *\n     * _.flatMapDeep([1, 2], duplicate);\n     * // => [1, 1, 2, 2]\n     */\n    function flatMapDeep(collection, iteratee) {\n      return baseFlatten(map(collection, iteratee), INFINITY);\n    }\n\n    /**\n     * This method is like `_.flatMap` except that it recursively flattens the\n     * mapped results up to `depth` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {number} [depth=1] The maximum recursion depth.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [[[n, n]]];\n     * }\n     *\n     * _.flatMapDepth([1, 2], duplicate, 2);\n     * // => [[1, 1], [2, 2]]\n     */\n    function flatMapDepth(collection, iteratee, depth) {\n      depth = depth === undefined ? 1 : toInteger(depth);\n      return baseFlatten(map(collection, iteratee), depth);\n    }\n\n    /**\n     * Iterates over elements of `collection` and invokes `iteratee` for each element.\n     * The iteratee is invoked with three arguments: (value, index|key, collection).\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n     * property are iterated like arrays. To avoid this behavior use `_.forIn`\n     * or `_.forOwn` for object iteration.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @alias each\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     * @see _.forEachRight\n     * @example\n     *\n     * _.forEach([1, 2], function(value) {\n     *   console.log(value);\n     * });\n     * // => Logs `1` then `2`.\n     *\n     * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n     */\n    function forEach(collection, iteratee) {\n      var func = isArray(collection) ? arrayEach : baseEach;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.forEach` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @alias eachRight\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     * @see _.forEach\n     * @example\n     *\n     * _.forEachRight([1, 2], function(value) {\n     *   console.log(value);\n     * });\n     * // => Logs `2` then `1`.\n     */\n    function forEachRight(collection, iteratee) {\n      var func = isArray(collection) ? arrayEachRight : baseEachRight;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The order of grouped values\n     * is determined by the order they occur in `collection`. The corresponding\n     * value of each key is an array of elements responsible for generating the\n     * key. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n     * // => { '4': [4.2], '6': [6.1, 6.3] }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.groupBy(['one', 'two', 'three'], 'length');\n     * // => { '3': ['one', 'two'], '5': ['three'] }\n     */\n    var groupBy = createAggregator(function(result, value, key) {\n      if (hasOwnProperty.call(result, key)) {\n        result[key].push(value);\n      } else {\n        baseAssignValue(result, key, [value]);\n      }\n    });\n\n    /**\n     * Checks if `value` is in `collection`. If `collection` is a string, it's\n     * checked for a substring of `value`, otherwise\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * is used for equality comparisons. If `fromIndex` is negative, it's used as\n     * the offset from the end of `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object|string} collection The collection to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n     * @returns {boolean} Returns `true` if `value` is found, else `false`.\n     * @example\n     *\n     * _.includes([1, 2, 3], 1);\n     * // => true\n     *\n     * _.includes([1, 2, 3], 1, 2);\n     * // => false\n     *\n     * _.includes({ 'a': 1, 'b': 2 }, 1);\n     * // => true\n     *\n     * _.includes('abcd', 'bc');\n     * // => true\n     */\n    function includes(collection, value, fromIndex, guard) {\n      collection = isArrayLike(collection) ? collection : values(collection);\n      fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n      var length = collection.length;\n      if (fromIndex < 0) {\n        fromIndex = nativeMax(length + fromIndex, 0);\n      }\n      return isString(collection)\n        ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n        : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n    }\n\n    /**\n     * Invokes the method at `path` of each element in `collection`, returning\n     * an array of the results of each invoked method. Any additional arguments\n     * are provided to each invoked method. If `path` is a function, it's invoked\n     * for, and `this` bound to, each element in `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Array|Function|string} path The path of the method to invoke or\n     *  the function invoked per iteration.\n     * @param {...*} [args] The arguments to invoke each method with.\n     * @returns {Array} Returns the array of results.\n     * @example\n     *\n     * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n     * // => [[1, 5, 7], [1, 2, 3]]\n     *\n     * _.invokeMap([123, 456], String.prototype.split, '');\n     * // => [['1', '2', '3'], ['4', '5', '6']]\n     */\n    var invokeMap = baseRest(function(collection, path, args) {\n      var index = -1,\n          isFunc = typeof path == 'function',\n          result = isArrayLike(collection) ? Array(collection.length) : [];\n\n      baseEach(collection, function(value) {\n        result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n      });\n      return result;\n    });\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The corresponding value of\n     * each key is the last element responsible for generating the key. The\n     * iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * var array = [\n     *   { 'dir': 'left', 'code': 97 },\n     *   { 'dir': 'right', 'code': 100 }\n     * ];\n     *\n     * _.keyBy(array, function(o) {\n     *   return String.fromCharCode(o.code);\n     * });\n     * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n     *\n     * _.keyBy(array, 'dir');\n     * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n     */\n    var keyBy = createAggregator(function(result, value, key) {\n      baseAssignValue(result, key, value);\n    });\n\n    /**\n     * Creates an array of values by running each element in `collection` thru\n     * `iteratee`. The iteratee is invoked with three arguments:\n     * (value, index|key, collection).\n     *\n     * Many lodash methods are guarded to work as iteratees for methods like\n     * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n     *\n     * The guarded methods are:\n     * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n     * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n     * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n     * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new mapped array.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * _.map([4, 8], square);\n     * // => [16, 64]\n     *\n     * _.map({ 'a': 4, 'b': 8 }, square);\n     * // => [16, 64] (iteration order is not guaranteed)\n     *\n     * var users = [\n     *   { 'user': 'barney' },\n     *   { 'user': 'fred' }\n     * ];\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.map(users, 'user');\n     * // => ['barney', 'fred']\n     */\n    function map(collection, iteratee) {\n      var func = isArray(collection) ? arrayMap : baseMap;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.sortBy` except that it allows specifying the sort\n     * orders of the iteratees to sort by. If `orders` is unspecified, all values\n     * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n     * descending or \"asc\" for ascending sort order of corresponding values.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n     *  The iteratees to sort by.\n     * @param {string[]} [orders] The sort orders of `iteratees`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n     * @returns {Array} Returns the new sorted array.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'fred',   'age': 48 },\n     *   { 'user': 'barney', 'age': 34 },\n     *   { 'user': 'fred',   'age': 40 },\n     *   { 'user': 'barney', 'age': 36 }\n     * ];\n     *\n     * // Sort by `user` in ascending order and by `age` in descending order.\n     * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n     */\n    function orderBy(collection, iteratees, orders, guard) {\n      if (collection == null) {\n        return [];\n      }\n      if (!isArray(iteratees)) {\n        iteratees = iteratees == null ? [] : [iteratees];\n      }\n      orders = guard ? undefined : orders;\n      if (!isArray(orders)) {\n        orders = orders == null ? [] : [orders];\n      }\n      return baseOrderBy(collection, iteratees, orders);\n    }\n\n    /**\n     * Creates an array of elements split into two groups, the first of which\n     * contains elements `predicate` returns truthy for, the second of which\n     * contains elements `predicate` returns falsey for. The predicate is\n     * invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the array of grouped elements.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36, 'active': false },\n     *   { 'user': 'fred',    'age': 40, 'active': true },\n     *   { 'user': 'pebbles', 'age': 1,  'active': false }\n     * ];\n     *\n     * _.partition(users, function(o) { return o.active; });\n     * // => objects for [['fred'], ['barney', 'pebbles']]\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.partition(users, { 'age': 1, 'active': false });\n     * // => objects for [['pebbles'], ['barney', 'fred']]\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.partition(users, ['active', false]);\n     * // => objects for [['barney', 'pebbles'], ['fred']]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.partition(users, 'active');\n     * // => objects for [['fred'], ['barney', 'pebbles']]\n     */\n    var partition = createAggregator(function(result, value, key) {\n      result[key ? 0 : 1].push(value);\n    }, function() { return [[], []]; });\n\n    /**\n     * Reduces `collection` to a value which is the accumulated result of running\n     * each element in `collection` thru `iteratee`, where each successive\n     * invocation is supplied the return value of the previous. If `accumulator`\n     * is not given, the first element of `collection` is used as the initial\n     * value. The iteratee is invoked with four arguments:\n     * (accumulator, value, index|key, collection).\n     *\n     * Many lodash methods are guarded to work as iteratees for methods like\n     * `_.reduce`, `_.reduceRight`, and `_.transform`.\n     *\n     * The guarded methods are:\n     * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n     * and `sortBy`\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The initial value.\n     * @returns {*} Returns the accumulated value.\n     * @see _.reduceRight\n     * @example\n     *\n     * _.reduce([1, 2], function(sum, n) {\n     *   return sum + n;\n     * }, 0);\n     * // => 3\n     *\n     * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n     *   (result[value] || (result[value] = [])).push(key);\n     *   return result;\n     * }, {});\n     * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n     */\n    function reduce(collection, iteratee, accumulator) {\n      var func = isArray(collection) ? arrayReduce : baseReduce,\n          initAccum = arguments.length < 3;\n\n      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n    }\n\n    /**\n     * This method is like `_.reduce` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The initial value.\n     * @returns {*} Returns the accumulated value.\n     * @see _.reduce\n     * @example\n     *\n     * var array = [[0, 1], [2, 3], [4, 5]];\n     *\n     * _.reduceRight(array, function(flattened, other) {\n     *   return flattened.concat(other);\n     * }, []);\n     * // => [4, 5, 2, 3, 0, 1]\n     */\n    function reduceRight(collection, iteratee, accumulator) {\n      var func = isArray(collection) ? arrayReduceRight : baseReduce,\n          initAccum = arguments.length < 3;\n\n      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n    }\n\n    /**\n     * The opposite of `_.filter`; this method returns the elements of `collection`\n     * that `predicate` does **not** return truthy for.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     * @see _.filter\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': false },\n     *   { 'user': 'fred',   'age': 40, 'active': true }\n     * ];\n     *\n     * _.reject(users, function(o) { return !o.active; });\n     * // => objects for ['fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.reject(users, { 'age': 40, 'active': true });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.reject(users, ['active', false]);\n     * // => objects for ['fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.reject(users, 'active');\n     * // => objects for ['barney']\n     */\n    function reject(collection, predicate) {\n      var func = isArray(collection) ? arrayFilter : baseFilter;\n      return func(collection, negate(getIteratee(predicate, 3)));\n    }\n\n    /**\n     * Gets a random element from `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to sample.\n     * @returns {*} Returns the random element.\n     * @example\n     *\n     * _.sample([1, 2, 3, 4]);\n     * // => 2\n     */\n    function sample(collection) {\n      var func = isArray(collection) ? arraySample : baseSample;\n      return func(collection);\n    }\n\n    /**\n     * Gets `n` random elements at unique keys from `collection` up to the\n     * size of `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to sample.\n     * @param {number} [n=1] The number of elements to sample.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the random elements.\n     * @example\n     *\n     * _.sampleSize([1, 2, 3], 2);\n     * // => [3, 1]\n     *\n     * _.sampleSize([1, 2, 3], 4);\n     * // => [2, 3, 1]\n     */\n    function sampleSize(collection, n, guard) {\n      if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n        n = 1;\n      } else {\n        n = toInteger(n);\n      }\n      var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n      return func(collection, n);\n    }\n\n    /**\n     * Creates an array of shuffled values, using a version of the\n     * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     * @example\n     *\n     * _.shuffle([1, 2, 3, 4]);\n     * // => [4, 1, 3, 2]\n     */\n    function shuffle(collection) {\n      var func = isArray(collection) ? arrayShuffle : baseShuffle;\n      return func(collection);\n    }\n\n    /**\n     * Gets the size of `collection` by returning its length for array-like\n     * values or the number of own enumerable string keyed properties for objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object|string} collection The collection to inspect.\n     * @returns {number} Returns the collection size.\n     * @example\n     *\n     * _.size([1, 2, 3]);\n     * // => 3\n     *\n     * _.size({ 'a': 1, 'b': 2 });\n     * // => 2\n     *\n     * _.size('pebbles');\n     * // => 7\n     */\n    function size(collection) {\n      if (collection == null) {\n        return 0;\n      }\n      if (isArrayLike(collection)) {\n        return isString(collection) ? stringSize(collection) : collection.length;\n      }\n      var tag = getTag(collection);\n      if (tag == mapTag || tag == setTag) {\n        return collection.size;\n      }\n      return baseKeys(collection).length;\n    }\n\n    /**\n     * Checks if `predicate` returns truthy for **any** element of `collection`.\n     * Iteration is stopped once `predicate` returns truthy. The predicate is\n     * invoked with three arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {boolean} Returns `true` if any element passes the predicate check,\n     *  else `false`.\n     * @example\n     *\n     * _.some([null, 0, 'yes', false], Boolean);\n     * // => true\n     *\n     * var users = [\n     *   { 'user': 'barney', 'active': true },\n     *   { 'user': 'fred',   'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.some(users, { 'user': 'barney', 'active': false });\n     * // => false\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.some(users, ['active', false]);\n     * // => true\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.some(users, 'active');\n     * // => true\n     */\n    function some(collection, predicate, guard) {\n      var func = isArray(collection) ? arraySome : baseSome;\n      if (guard && isIterateeCall(collection, predicate, guard)) {\n        predicate = undefined;\n      }\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Creates an array of elements, sorted in ascending order by the results of\n     * running each element in a collection thru each iteratee. This method\n     * performs a stable sort, that is, it preserves the original sort order of\n     * equal elements. The iteratees are invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {...(Function|Function[])} [iteratees=[_.identity]]\n     *  The iteratees to sort by.\n     * @returns {Array} Returns the new sorted array.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'fred',   'age': 48 },\n     *   { 'user': 'barney', 'age': 36 },\n     *   { 'user': 'fred',   'age': 30 },\n     *   { 'user': 'barney', 'age': 34 }\n     * ];\n     *\n     * _.sortBy(users, [function(o) { return o.user; }]);\n     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n     *\n     * _.sortBy(users, ['user', 'age']);\n     * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n     */\n    var sortBy = baseRest(function(collection, iteratees) {\n      if (collection == null) {\n        return [];\n      }\n      var length = iteratees.length;\n      if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n        iteratees = [];\n      } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n        iteratees = [iteratees[0]];\n      }\n      return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n    });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Gets the timestamp of the number of milliseconds that have elapsed since\n     * the Unix epoch (1 January 1970 00:00:00 UTC).\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Date\n     * @returns {number} Returns the timestamp.\n     * @example\n     *\n     * _.defer(function(stamp) {\n     *   console.log(_.now() - stamp);\n     * }, _.now());\n     * // => Logs the number of milliseconds it took for the deferred invocation.\n     */\n    var now = ctxNow || function() {\n      return root.Date.now();\n    };\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The opposite of `_.before`; this method creates a function that invokes\n     * `func` once it's called `n` or more times.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {number} n The number of calls before `func` is invoked.\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * var saves = ['profile', 'settings'];\n     *\n     * var done = _.after(saves.length, function() {\n     *   console.log('done saving!');\n     * });\n     *\n     * _.forEach(saves, function(type) {\n     *   asyncSave({ 'type': type, 'complete': done });\n     * });\n     * // => Logs 'done saving!' after the two async saves have completed.\n     */\n    function after(n, func) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      n = toInteger(n);\n      return function() {\n        if (--n < 1) {\n          return func.apply(this, arguments);\n        }\n      };\n    }\n\n    /**\n     * Creates a function that invokes `func`, with up to `n` arguments,\n     * ignoring any additional arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to cap arguments for.\n     * @param {number} [n=func.length] The arity cap.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new capped function.\n     * @example\n     *\n     * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n     * // => [6, 8, 10]\n     */\n    function ary(func, n, guard) {\n      n = guard ? undefined : n;\n      n = (func && n == null) ? func.length : n;\n      return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n    }\n\n    /**\n     * Creates a function that invokes `func`, with the `this` binding and arguments\n     * of the created function, while it's called less than `n` times. Subsequent\n     * calls to the created function return the result of the last `func` invocation.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {number} n The number of calls at which `func` is no longer invoked.\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * jQuery(element).on('click', _.before(5, addContactToList));\n     * // => Allows adding up to 4 contacts to the list.\n     */\n    function before(n, func) {\n      var result;\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      n = toInteger(n);\n      return function() {\n        if (--n > 0) {\n          result = func.apply(this, arguments);\n        }\n        if (n <= 1) {\n          func = undefined;\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of `thisArg`\n     * and `partials` prepended to the arguments it receives.\n     *\n     * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n     * may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n     * property of bound functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to bind.\n     * @param {*} thisArg The `this` binding of `func`.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new bound function.\n     * @example\n     *\n     * function greet(greeting, punctuation) {\n     *   return greeting + ' ' + this.user + punctuation;\n     * }\n     *\n     * var object = { 'user': 'fred' };\n     *\n     * var bound = _.bind(greet, object, 'hi');\n     * bound('!');\n     * // => 'hi fred!'\n     *\n     * // Bound with placeholders.\n     * var bound = _.bind(greet, object, _, '!');\n     * bound('hi');\n     * // => 'hi fred!'\n     */\n    var bind = baseRest(function(func, thisArg, partials) {\n      var bitmask = WRAP_BIND_FLAG;\n      if (partials.length) {\n        var holders = replaceHolders(partials, getHolder(bind));\n        bitmask |= WRAP_PARTIAL_FLAG;\n      }\n      return createWrap(func, bitmask, thisArg, partials, holders);\n    });\n\n    /**\n     * Creates a function that invokes the method at `object[key]` with `partials`\n     * prepended to the arguments it receives.\n     *\n     * This method differs from `_.bind` by allowing bound functions to reference\n     * methods that may be redefined or don't yet exist. See\n     * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n     * for more details.\n     *\n     * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.10.0\n     * @category Function\n     * @param {Object} object The object to invoke the method on.\n     * @param {string} key The key of the method.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new bound function.\n     * @example\n     *\n     * var object = {\n     *   'user': 'fred',\n     *   'greet': function(greeting, punctuation) {\n     *     return greeting + ' ' + this.user + punctuation;\n     *   }\n     * };\n     *\n     * var bound = _.bindKey(object, 'greet', 'hi');\n     * bound('!');\n     * // => 'hi fred!'\n     *\n     * object.greet = function(greeting, punctuation) {\n     *   return greeting + 'ya ' + this.user + punctuation;\n     * };\n     *\n     * bound('!');\n     * // => 'hiya fred!'\n     *\n     * // Bound with placeholders.\n     * var bound = _.bindKey(object, 'greet', _, '!');\n     * bound('hi');\n     * // => 'hiya fred!'\n     */\n    var bindKey = baseRest(function(object, key, partials) {\n      var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n      if (partials.length) {\n        var holders = replaceHolders(partials, getHolder(bindKey));\n        bitmask |= WRAP_PARTIAL_FLAG;\n      }\n      return createWrap(key, bitmask, object, partials, holders);\n    });\n\n    /**\n     * Creates a function that accepts arguments of `func` and either invokes\n     * `func` returning its result, if at least `arity` number of arguments have\n     * been provided, or returns a function that accepts the remaining `func`\n     * arguments, and so on. The arity of `func` may be specified if `func.length`\n     * is not sufficient.\n     *\n     * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n     * may be used as a placeholder for provided arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of curried functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Function\n     * @param {Function} func The function to curry.\n     * @param {number} [arity=func.length] The arity of `func`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new curried function.\n     * @example\n     *\n     * var abc = function(a, b, c) {\n     *   return [a, b, c];\n     * };\n     *\n     * var curried = _.curry(abc);\n     *\n     * curried(1)(2)(3);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2)(3);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2, 3);\n     * // => [1, 2, 3]\n     *\n     * // Curried with placeholders.\n     * curried(1)(_, 3)(2);\n     * // => [1, 2, 3]\n     */\n    function curry(func, arity, guard) {\n      arity = guard ? undefined : arity;\n      var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n      result.placeholder = curry.placeholder;\n      return result;\n    }\n\n    /**\n     * This method is like `_.curry` except that arguments are applied to `func`\n     * in the manner of `_.partialRight` instead of `_.partial`.\n     *\n     * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for provided arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of curried functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to curry.\n     * @param {number} [arity=func.length] The arity of `func`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new curried function.\n     * @example\n     *\n     * var abc = function(a, b, c) {\n     *   return [a, b, c];\n     * };\n     *\n     * var curried = _.curryRight(abc);\n     *\n     * curried(3)(2)(1);\n     * // => [1, 2, 3]\n     *\n     * curried(2, 3)(1);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2, 3);\n     * // => [1, 2, 3]\n     *\n     * // Curried with placeholders.\n     * curried(3)(1, _)(2);\n     * // => [1, 2, 3]\n     */\n    function curryRight(func, arity, guard) {\n      arity = guard ? undefined : arity;\n      var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n      result.placeholder = curryRight.placeholder;\n      return result;\n    }\n\n    /**\n     * Creates a debounced function that delays invoking `func` until after `wait`\n     * milliseconds have elapsed since the last time the debounced function was\n     * invoked. The debounced function comes with a `cancel` method to cancel\n     * delayed `func` invocations and a `flush` method to immediately invoke them.\n     * Provide `options` to indicate whether `func` should be invoked on the\n     * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n     * with the last arguments provided to the debounced function. Subsequent\n     * calls to the debounced function return the result of the last `func`\n     * invocation.\n     *\n     * **Note:** If `leading` and `trailing` options are `true`, `func` is\n     * invoked on the trailing edge of the timeout only if the debounced function\n     * is invoked more than once during the `wait` timeout.\n     *\n     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n     * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n     *\n     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n     * for details over the differences between `_.debounce` and `_.throttle`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to debounce.\n     * @param {number} [wait=0] The number of milliseconds to delay.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.leading=false]\n     *  Specify invoking on the leading edge of the timeout.\n     * @param {number} [options.maxWait]\n     *  The maximum time `func` is allowed to be delayed before it's invoked.\n     * @param {boolean} [options.trailing=true]\n     *  Specify invoking on the trailing edge of the timeout.\n     * @returns {Function} Returns the new debounced function.\n     * @example\n     *\n     * // Avoid costly calculations while the window size is in flux.\n     * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n     *\n     * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n     * jQuery(element).on('click', _.debounce(sendMail, 300, {\n     *   'leading': true,\n     *   'trailing': false\n     * }));\n     *\n     * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n     * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n     * var source = new EventSource('/stream');\n     * jQuery(source).on('message', debounced);\n     *\n     * // Cancel the trailing debounced invocation.\n     * jQuery(window).on('popstate', debounced.cancel);\n     */\n    function debounce(func, wait, options) {\n      var lastArgs,\n          lastThis,\n          maxWait,\n          result,\n          timerId,\n          lastCallTime,\n          lastInvokeTime = 0,\n          leading = false,\n          maxing = false,\n          trailing = true;\n\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      wait = toNumber(wait) || 0;\n      if (isObject(options)) {\n        leading = !!options.leading;\n        maxing = 'maxWait' in options;\n        maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n        trailing = 'trailing' in options ? !!options.trailing : trailing;\n      }\n\n      function invokeFunc(time) {\n        var args = lastArgs,\n            thisArg = lastThis;\n\n        lastArgs = lastThis = undefined;\n        lastInvokeTime = time;\n        result = func.apply(thisArg, args);\n        return result;\n      }\n\n      function leadingEdge(time) {\n        // Reset any `maxWait` timer.\n        lastInvokeTime = time;\n        // Start the timer for the trailing edge.\n        timerId = setTimeout(timerExpired, wait);\n        // Invoke the leading edge.\n        return leading ? invokeFunc(time) : result;\n      }\n\n      function remainingWait(time) {\n        var timeSinceLastCall = time - lastCallTime,\n            timeSinceLastInvoke = time - lastInvokeTime,\n            timeWaiting = wait - timeSinceLastCall;\n\n        return maxing\n          ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n          : timeWaiting;\n      }\n\n      function shouldInvoke(time) {\n        var timeSinceLastCall = time - lastCallTime,\n            timeSinceLastInvoke = time - lastInvokeTime;\n\n        // Either this is the first call, activity has stopped and we're at the\n        // trailing edge, the system time has gone backwards and we're treating\n        // it as the trailing edge, or we've hit the `maxWait` limit.\n        return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n          (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n      }\n\n      function timerExpired() {\n        var time = now();\n        if (shouldInvoke(time)) {\n          return trailingEdge(time);\n        }\n        // Restart the timer.\n        timerId = setTimeout(timerExpired, remainingWait(time));\n      }\n\n      function trailingEdge(time) {\n        timerId = undefined;\n\n        // Only invoke if we have `lastArgs` which means `func` has been\n        // debounced at least once.\n        if (trailing && lastArgs) {\n          return invokeFunc(time);\n        }\n        lastArgs = lastThis = undefined;\n        return result;\n      }\n\n      function cancel() {\n        if (timerId !== undefined) {\n          clearTimeout(timerId);\n        }\n        lastInvokeTime = 0;\n        lastArgs = lastCallTime = lastThis = timerId = undefined;\n      }\n\n      function flush() {\n        return timerId === undefined ? result : trailingEdge(now());\n      }\n\n      function debounced() {\n        var time = now(),\n            isInvoking = shouldInvoke(time);\n\n        lastArgs = arguments;\n        lastThis = this;\n        lastCallTime = time;\n\n        if (isInvoking) {\n          if (timerId === undefined) {\n            return leadingEdge(lastCallTime);\n          }\n          if (maxing) {\n            // Handle invocations in a tight loop.\n            clearTimeout(timerId);\n            timerId = setTimeout(timerExpired, wait);\n            return invokeFunc(lastCallTime);\n          }\n        }\n        if (timerId === undefined) {\n          timerId = setTimeout(timerExpired, wait);\n        }\n        return result;\n      }\n      debounced.cancel = cancel;\n      debounced.flush = flush;\n      return debounced;\n    }\n\n    /**\n     * Defers invoking the `func` until the current call stack has cleared. Any\n     * additional arguments are provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to defer.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {number} Returns the timer id.\n     * @example\n     *\n     * _.defer(function(text) {\n     *   console.log(text);\n     * }, 'deferred');\n     * // => Logs 'deferred' after one millisecond.\n     */\n    var defer = baseRest(function(func, args) {\n      return baseDelay(func, 1, args);\n    });\n\n    /**\n     * Invokes `func` after `wait` milliseconds. Any additional arguments are\n     * provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {number} Returns the timer id.\n     * @example\n     *\n     * _.delay(function(text) {\n     *   console.log(text);\n     * }, 1000, 'later');\n     * // => Logs 'later' after one second.\n     */\n    var delay = baseRest(function(func, wait, args) {\n      return baseDelay(func, toNumber(wait) || 0, args);\n    });\n\n    /**\n     * Creates a function that invokes `func` with arguments reversed.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to flip arguments for.\n     * @returns {Function} Returns the new flipped function.\n     * @example\n     *\n     * var flipped = _.flip(function() {\n     *   return _.toArray(arguments);\n     * });\n     *\n     * flipped('a', 'b', 'c', 'd');\n     * // => ['d', 'c', 'b', 'a']\n     */\n    function flip(func) {\n      return createWrap(func, WRAP_FLIP_FLAG);\n    }\n\n    /**\n     * Creates a function that memoizes the result of `func`. If `resolver` is\n     * provided, it determines the cache key for storing the result based on the\n     * arguments provided to the memoized function. By default, the first argument\n     * provided to the memoized function is used as the map cache key. The `func`\n     * is invoked with the `this` binding of the memoized function.\n     *\n     * **Note:** The cache is exposed as the `cache` property on the memoized\n     * function. Its creation may be customized by replacing the `_.memoize.Cache`\n     * constructor with one whose instances implement the\n     * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n     * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to have its output memoized.\n     * @param {Function} [resolver] The function to resolve the cache key.\n     * @returns {Function} Returns the new memoized function.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     * var other = { 'c': 3, 'd': 4 };\n     *\n     * var values = _.memoize(_.values);\n     * values(object);\n     * // => [1, 2]\n     *\n     * values(other);\n     * // => [3, 4]\n     *\n     * object.a = 2;\n     * values(object);\n     * // => [1, 2]\n     *\n     * // Modify the result cache.\n     * values.cache.set(object, ['a', 'b']);\n     * values(object);\n     * // => ['a', 'b']\n     *\n     * // Replace `_.memoize.Cache`.\n     * _.memoize.Cache = WeakMap;\n     */\n    function memoize(func, resolver) {\n      if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      var memoized = function() {\n        var args = arguments,\n            key = resolver ? resolver.apply(this, args) : args[0],\n            cache = memoized.cache;\n\n        if (cache.has(key)) {\n          return cache.get(key);\n        }\n        var result = func.apply(this, args);\n        memoized.cache = cache.set(key, result) || cache;\n        return result;\n      };\n      memoized.cache = new (memoize.Cache || MapCache);\n      return memoized;\n    }\n\n    // Expose `MapCache`.\n    memoize.Cache = MapCache;\n\n    /**\n     * Creates a function that negates the result of the predicate `func`. The\n     * `func` predicate is invoked with the `this` binding and arguments of the\n     * created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} predicate The predicate to negate.\n     * @returns {Function} Returns the new negated function.\n     * @example\n     *\n     * function isEven(n) {\n     *   return n % 2 == 0;\n     * }\n     *\n     * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n     * // => [1, 3, 5]\n     */\n    function negate(predicate) {\n      if (typeof predicate != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      return function() {\n        var args = arguments;\n        switch (args.length) {\n          case 0: return !predicate.call(this);\n          case 1: return !predicate.call(this, args[0]);\n          case 2: return !predicate.call(this, args[0], args[1]);\n          case 3: return !predicate.call(this, args[0], args[1], args[2]);\n        }\n        return !predicate.apply(this, args);\n      };\n    }\n\n    /**\n     * Creates a function that is restricted to invoking `func` once. Repeat calls\n     * to the function return the value of the first invocation. The `func` is\n     * invoked with the `this` binding and arguments of the created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * var initialize = _.once(createApplication);\n     * initialize();\n     * initialize();\n     * // => `createApplication` is invoked once\n     */\n    function once(func) {\n      return before(2, func);\n    }\n\n    /**\n     * Creates a function that invokes `func` with its arguments transformed.\n     *\n     * @static\n     * @since 4.0.0\n     * @memberOf _\n     * @category Function\n     * @param {Function} func The function to wrap.\n     * @param {...(Function|Function[])} [transforms=[_.identity]]\n     *  The argument transforms.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * function doubled(n) {\n     *   return n * 2;\n     * }\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var func = _.overArgs(function(x, y) {\n     *   return [x, y];\n     * }, [square, doubled]);\n     *\n     * func(9, 3);\n     * // => [81, 6]\n     *\n     * func(10, 5);\n     * // => [100, 10]\n     */\n    var overArgs = castRest(function(func, transforms) {\n      transforms = (transforms.length == 1 && isArray(transforms[0]))\n        ? arrayMap(transforms[0], baseUnary(getIteratee()))\n        : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n      var funcsLength = transforms.length;\n      return baseRest(function(args) {\n        var index = -1,\n            length = nativeMin(args.length, funcsLength);\n\n        while (++index < length) {\n          args[index] = transforms[index].call(this, args[index]);\n        }\n        return apply(func, this, args);\n      });\n    });\n\n    /**\n     * Creates a function that invokes `func` with `partials` prepended to the\n     * arguments it receives. This method is like `_.bind` except it does **not**\n     * alter the `this` binding.\n     *\n     * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of partially\n     * applied functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.2.0\n     * @category Function\n     * @param {Function} func The function to partially apply arguments to.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new partially applied function.\n     * @example\n     *\n     * function greet(greeting, name) {\n     *   return greeting + ' ' + name;\n     * }\n     *\n     * var sayHelloTo = _.partial(greet, 'hello');\n     * sayHelloTo('fred');\n     * // => 'hello fred'\n     *\n     * // Partially applied with placeholders.\n     * var greetFred = _.partial(greet, _, 'fred');\n     * greetFred('hi');\n     * // => 'hi fred'\n     */\n    var partial = baseRest(function(func, partials) {\n      var holders = replaceHolders(partials, getHolder(partial));\n      return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n    });\n\n    /**\n     * This method is like `_.partial` except that partially applied arguments\n     * are appended to the arguments it receives.\n     *\n     * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of partially\n     * applied functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Function\n     * @param {Function} func The function to partially apply arguments to.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new partially applied function.\n     * @example\n     *\n     * function greet(greeting, name) {\n     *   return greeting + ' ' + name;\n     * }\n     *\n     * var greetFred = _.partialRight(greet, 'fred');\n     * greetFred('hi');\n     * // => 'hi fred'\n     *\n     * // Partially applied with placeholders.\n     * var sayHelloTo = _.partialRight(greet, 'hello', _);\n     * sayHelloTo('fred');\n     * // => 'hello fred'\n     */\n    var partialRight = baseRest(function(func, partials) {\n      var holders = replaceHolders(partials, getHolder(partialRight));\n      return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n    });\n\n    /**\n     * Creates a function that invokes `func` with arguments arranged according\n     * to the specified `indexes` where the argument value at the first index is\n     * provided as the first argument, the argument value at the second index is\n     * provided as the second argument, and so on.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to rearrange arguments for.\n     * @param {...(number|number[])} indexes The arranged argument indexes.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var rearged = _.rearg(function(a, b, c) {\n     *   return [a, b, c];\n     * }, [2, 0, 1]);\n     *\n     * rearged('b', 'c', 'a')\n     * // => ['a', 'b', 'c']\n     */\n    var rearg = flatRest(function(func, indexes) {\n      return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n    });\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of the\n     * created function and arguments from `start` and beyond provided as\n     * an array.\n     *\n     * **Note:** This method is based on the\n     * [rest parameter](https://mdn.io/rest_parameters).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var say = _.rest(function(what, names) {\n     *   return what + ' ' + _.initial(names).join(', ') +\n     *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n     * });\n     *\n     * say('hello', 'fred', 'barney', 'pebbles');\n     * // => 'hello fred, barney, & pebbles'\n     */\n    function rest(func, start) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      start = start === undefined ? start : toInteger(start);\n      return baseRest(func, start);\n    }\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of the\n     * create function and an array of arguments much like\n     * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n     *\n     * **Note:** This method is based on the\n     * [spread operator](https://mdn.io/spread_operator).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Function\n     * @param {Function} func The function to spread arguments over.\n     * @param {number} [start=0] The start position of the spread.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var say = _.spread(function(who, what) {\n     *   return who + ' says ' + what;\n     * });\n     *\n     * say(['fred', 'hello']);\n     * // => 'fred says hello'\n     *\n     * var numbers = Promise.all([\n     *   Promise.resolve(40),\n     *   Promise.resolve(36)\n     * ]);\n     *\n     * numbers.then(_.spread(function(x, y) {\n     *   return x + y;\n     * }));\n     * // => a Promise of 76\n     */\n    function spread(func, start) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      start = start == null ? 0 : nativeMax(toInteger(start), 0);\n      return baseRest(function(args) {\n        var array = args[start],\n            otherArgs = castSlice(args, 0, start);\n\n        if (array) {\n          arrayPush(otherArgs, array);\n        }\n        return apply(func, this, otherArgs);\n      });\n    }\n\n    /**\n     * Creates a throttled function that only invokes `func` at most once per\n     * every `wait` milliseconds. The throttled function comes with a `cancel`\n     * method to cancel delayed `func` invocations and a `flush` method to\n     * immediately invoke them. Provide `options` to indicate whether `func`\n     * should be invoked on the leading and/or trailing edge of the `wait`\n     * timeout. The `func` is invoked with the last arguments provided to the\n     * throttled function. Subsequent calls to the throttled function return the\n     * result of the last `func` invocation.\n     *\n     * **Note:** If `leading` and `trailing` options are `true`, `func` is\n     * invoked on the trailing edge of the timeout only if the throttled function\n     * is invoked more than once during the `wait` timeout.\n     *\n     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n     * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n     *\n     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n     * for details over the differences between `_.throttle` and `_.debounce`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to throttle.\n     * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.leading=true]\n     *  Specify invoking on the leading edge of the timeout.\n     * @param {boolean} [options.trailing=true]\n     *  Specify invoking on the trailing edge of the timeout.\n     * @returns {Function} Returns the new throttled function.\n     * @example\n     *\n     * // Avoid excessively updating the position while scrolling.\n     * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n     *\n     * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n     * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n     * jQuery(element).on('click', throttled);\n     *\n     * // Cancel the trailing throttled invocation.\n     * jQuery(window).on('popstate', throttled.cancel);\n     */\n    function throttle(func, wait, options) {\n      var leading = true,\n          trailing = true;\n\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      if (isObject(options)) {\n        leading = 'leading' in options ? !!options.leading : leading;\n        trailing = 'trailing' in options ? !!options.trailing : trailing;\n      }\n      return debounce(func, wait, {\n        'leading': leading,\n        'maxWait': wait,\n        'trailing': trailing\n      });\n    }\n\n    /**\n     * Creates a function that accepts up to one argument, ignoring any\n     * additional arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to cap arguments for.\n     * @returns {Function} Returns the new capped function.\n     * @example\n     *\n     * _.map(['6', '8', '10'], _.unary(parseInt));\n     * // => [6, 8, 10]\n     */\n    function unary(func) {\n      return ary(func, 1);\n    }\n\n    /**\n     * Creates a function that provides `value` to `wrapper` as its first\n     * argument. Any additional arguments provided to the function are appended\n     * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n     * binding of the created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {*} value The value to wrap.\n     * @param {Function} [wrapper=identity] The wrapper function.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var p = _.wrap(_.escape, function(func, text) {\n     *   return '<p>' + func(text) + '</p>';\n     * });\n     *\n     * p('fred, barney, & pebbles');\n     * // => '<p>fred, barney, &amp; pebbles</p>'\n     */\n    function wrap(value, wrapper) {\n      return partial(castFunction(wrapper), value);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Casts `value` as an array if it's not one.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.4.0\n     * @category Lang\n     * @param {*} value The value to inspect.\n     * @returns {Array} Returns the cast array.\n     * @example\n     *\n     * _.castArray(1);\n     * // => [1]\n     *\n     * _.castArray({ 'a': 1 });\n     * // => [{ 'a': 1 }]\n     *\n     * _.castArray('abc');\n     * // => ['abc']\n     *\n     * _.castArray(null);\n     * // => [null]\n     *\n     * _.castArray(undefined);\n     * // => [undefined]\n     *\n     * _.castArray();\n     * // => []\n     *\n     * var array = [1, 2, 3];\n     * console.log(_.castArray(array) === array);\n     * // => true\n     */\n    function castArray() {\n      if (!arguments.length) {\n        return [];\n      }\n      var value = arguments[0];\n      return isArray(value) ? value : [value];\n    }\n\n    /**\n     * Creates a shallow clone of `value`.\n     *\n     * **Note:** This method is loosely based on the\n     * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n     * and supports cloning arrays, array buffers, booleans, date objects, maps,\n     * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n     * arrays. The own enumerable properties of `arguments` objects are cloned\n     * as plain objects. An empty object is returned for uncloneable values such\n     * as error objects, functions, DOM nodes, and WeakMaps.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to clone.\n     * @returns {*} Returns the cloned value.\n     * @see _.cloneDeep\n     * @example\n     *\n     * var objects = [{ 'a': 1 }, { 'b': 2 }];\n     *\n     * var shallow = _.clone(objects);\n     * console.log(shallow[0] === objects[0]);\n     * // => true\n     */\n    function clone(value) {\n      return baseClone(value, CLONE_SYMBOLS_FLAG);\n    }\n\n    /**\n     * This method is like `_.clone` except that it accepts `customizer` which\n     * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n     * cloning is handled by the method instead. The `customizer` is invoked with\n     * up to four arguments; (value [, index|key, object, stack]).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to clone.\n     * @param {Function} [customizer] The function to customize cloning.\n     * @returns {*} Returns the cloned value.\n     * @see _.cloneDeepWith\n     * @example\n     *\n     * function customizer(value) {\n     *   if (_.isElement(value)) {\n     *     return value.cloneNode(false);\n     *   }\n     * }\n     *\n     * var el = _.cloneWith(document.body, customizer);\n     *\n     * console.log(el === document.body);\n     * // => false\n     * console.log(el.nodeName);\n     * // => 'BODY'\n     * console.log(el.childNodes.length);\n     * // => 0\n     */\n    function cloneWith(value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n    }\n\n    /**\n     * This method is like `_.clone` except that it recursively clones `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Lang\n     * @param {*} value The value to recursively clone.\n     * @returns {*} Returns the deep cloned value.\n     * @see _.clone\n     * @example\n     *\n     * var objects = [{ 'a': 1 }, { 'b': 2 }];\n     *\n     * var deep = _.cloneDeep(objects);\n     * console.log(deep[0] === objects[0]);\n     * // => false\n     */\n    function cloneDeep(value) {\n      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n    }\n\n    /**\n     * This method is like `_.cloneWith` except that it recursively clones `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to recursively clone.\n     * @param {Function} [customizer] The function to customize cloning.\n     * @returns {*} Returns the deep cloned value.\n     * @see _.cloneWith\n     * @example\n     *\n     * function customizer(value) {\n     *   if (_.isElement(value)) {\n     *     return value.cloneNode(true);\n     *   }\n     * }\n     *\n     * var el = _.cloneDeepWith(document.body, customizer);\n     *\n     * console.log(el === document.body);\n     * // => false\n     * console.log(el.nodeName);\n     * // => 'BODY'\n     * console.log(el.childNodes.length);\n     * // => 20\n     */\n    function cloneDeepWith(value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n    }\n\n    /**\n     * Checks if `object` conforms to `source` by invoking the predicate\n     * properties of `source` with the corresponding property values of `object`.\n     *\n     * **Note:** This method is equivalent to `_.conforms` when `source` is\n     * partially applied.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.14.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     *\n     * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n     * // => true\n     *\n     * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n     * // => false\n     */\n    function conformsTo(object, source) {\n      return source == null || baseConformsTo(object, source, keys(source));\n    }\n\n    /**\n     * Performs a\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * comparison between two values to determine if they are equivalent.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     * var other = { 'a': 1 };\n     *\n     * _.eq(object, object);\n     * // => true\n     *\n     * _.eq(object, other);\n     * // => false\n     *\n     * _.eq('a', 'a');\n     * // => true\n     *\n     * _.eq('a', Object('a'));\n     * // => false\n     *\n     * _.eq(NaN, NaN);\n     * // => true\n     */\n    function eq(value, other) {\n      return value === other || (value !== value && other !== other);\n    }\n\n    /**\n     * Checks if `value` is greater than `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than `other`,\n     *  else `false`.\n     * @see _.lt\n     * @example\n     *\n     * _.gt(3, 1);\n     * // => true\n     *\n     * _.gt(3, 3);\n     * // => false\n     *\n     * _.gt(1, 3);\n     * // => false\n     */\n    var gt = createRelationalOperation(baseGt);\n\n    /**\n     * Checks if `value` is greater than or equal to `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than or equal to\n     *  `other`, else `false`.\n     * @see _.lte\n     * @example\n     *\n     * _.gte(3, 1);\n     * // => true\n     *\n     * _.gte(3, 3);\n     * // => true\n     *\n     * _.gte(1, 3);\n     * // => false\n     */\n    var gte = createRelationalOperation(function(value, other) {\n      return value >= other;\n    });\n\n    /**\n     * Checks if `value` is likely an `arguments` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n     *  else `false`.\n     * @example\n     *\n     * _.isArguments(function() { return arguments; }());\n     * // => true\n     *\n     * _.isArguments([1, 2, 3]);\n     * // => false\n     */\n    var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n      return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n        !propertyIsEnumerable.call(value, 'callee');\n    };\n\n    /**\n     * Checks if `value` is classified as an `Array` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n     * @example\n     *\n     * _.isArray([1, 2, 3]);\n     * // => true\n     *\n     * _.isArray(document.body.children);\n     * // => false\n     *\n     * _.isArray('abc');\n     * // => false\n     *\n     * _.isArray(_.noop);\n     * // => false\n     */\n    var isArray = Array.isArray;\n\n    /**\n     * Checks if `value` is classified as an `ArrayBuffer` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n     * @example\n     *\n     * _.isArrayBuffer(new ArrayBuffer(2));\n     * // => true\n     *\n     * _.isArrayBuffer(new Array(2));\n     * // => false\n     */\n    var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n    /**\n     * Checks if `value` is array-like. A value is considered array-like if it's\n     * not a function and has a `value.length` that's an integer greater than or\n     * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n     * @example\n     *\n     * _.isArrayLike([1, 2, 3]);\n     * // => true\n     *\n     * _.isArrayLike(document.body.children);\n     * // => true\n     *\n     * _.isArrayLike('abc');\n     * // => true\n     *\n     * _.isArrayLike(_.noop);\n     * // => false\n     */\n    function isArrayLike(value) {\n      return value != null && isLength(value.length) && !isFunction(value);\n    }\n\n    /**\n     * This method is like `_.isArrayLike` except that it also checks if `value`\n     * is an object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array-like object,\n     *  else `false`.\n     * @example\n     *\n     * _.isArrayLikeObject([1, 2, 3]);\n     * // => true\n     *\n     * _.isArrayLikeObject(document.body.children);\n     * // => true\n     *\n     * _.isArrayLikeObject('abc');\n     * // => false\n     *\n     * _.isArrayLikeObject(_.noop);\n     * // => false\n     */\n    function isArrayLikeObject(value) {\n      return isObjectLike(value) && isArrayLike(value);\n    }\n\n    /**\n     * Checks if `value` is classified as a boolean primitive or object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n     * @example\n     *\n     * _.isBoolean(false);\n     * // => true\n     *\n     * _.isBoolean(null);\n     * // => false\n     */\n    function isBoolean(value) {\n      return value === true || value === false ||\n        (isObjectLike(value) && baseGetTag(value) == boolTag);\n    }\n\n    /**\n     * Checks if `value` is a buffer.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n     * @example\n     *\n     * _.isBuffer(new Buffer(2));\n     * // => true\n     *\n     * _.isBuffer(new Uint8Array(2));\n     * // => false\n     */\n    var isBuffer = nativeIsBuffer || stubFalse;\n\n    /**\n     * Checks if `value` is classified as a `Date` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n     * @example\n     *\n     * _.isDate(new Date);\n     * // => true\n     *\n     * _.isDate('Mon April 23 2012');\n     * // => false\n     */\n    var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n    /**\n     * Checks if `value` is likely a DOM element.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n     * @example\n     *\n     * _.isElement(document.body);\n     * // => true\n     *\n     * _.isElement('<body>');\n     * // => false\n     */\n    function isElement(value) {\n      return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n    }\n\n    /**\n     * Checks if `value` is an empty object, collection, map, or set.\n     *\n     * Objects are considered empty if they have no own enumerable string keyed\n     * properties.\n     *\n     * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n     * jQuery-like collections are considered empty if they have a `length` of `0`.\n     * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n     * @example\n     *\n     * _.isEmpty(null);\n     * // => true\n     *\n     * _.isEmpty(true);\n     * // => true\n     *\n     * _.isEmpty(1);\n     * // => true\n     *\n     * _.isEmpty([1, 2, 3]);\n     * // => false\n     *\n     * _.isEmpty({ 'a': 1 });\n     * // => false\n     */\n    function isEmpty(value) {\n      if (value == null) {\n        return true;\n      }\n      if (isArrayLike(value) &&\n          (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n            isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n        return !value.length;\n      }\n      var tag = getTag(value);\n      if (tag == mapTag || tag == setTag) {\n        return !value.size;\n      }\n      if (isPrototype(value)) {\n        return !baseKeys(value).length;\n      }\n      for (var key in value) {\n        if (hasOwnProperty.call(value, key)) {\n          return false;\n        }\n      }\n      return true;\n    }\n\n    /**\n     * Performs a deep comparison between two values to determine if they are\n     * equivalent.\n     *\n     * **Note:** This method supports comparing arrays, array buffers, booleans,\n     * date objects, error objects, maps, numbers, `Object` objects, regexes,\n     * sets, strings, symbols, and typed arrays. `Object` objects are compared\n     * by their own, not inherited, enumerable properties. Functions and DOM\n     * nodes are compared by strict equality, i.e. `===`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     * var other = { 'a': 1 };\n     *\n     * _.isEqual(object, other);\n     * // => true\n     *\n     * object === other;\n     * // => false\n     */\n    function isEqual(value, other) {\n      return baseIsEqual(value, other);\n    }\n\n    /**\n     * This method is like `_.isEqual` except that it accepts `customizer` which\n     * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n     * are handled by the method instead. The `customizer` is invoked with up to\n     * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * function isGreeting(value) {\n     *   return /^h(?:i|ello)$/.test(value);\n     * }\n     *\n     * function customizer(objValue, othValue) {\n     *   if (isGreeting(objValue) && isGreeting(othValue)) {\n     *     return true;\n     *   }\n     * }\n     *\n     * var array = ['hello', 'goodbye'];\n     * var other = ['hi', 'goodbye'];\n     *\n     * _.isEqualWith(array, other, customizer);\n     * // => true\n     */\n    function isEqualWith(value, other, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      var result = customizer ? customizer(value, other) : undefined;\n      return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n    }\n\n    /**\n     * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n     * `SyntaxError`, `TypeError`, or `URIError` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n     * @example\n     *\n     * _.isError(new Error);\n     * // => true\n     *\n     * _.isError(Error);\n     * // => false\n     */\n    function isError(value) {\n      if (!isObjectLike(value)) {\n        return false;\n      }\n      var tag = baseGetTag(value);\n      return tag == errorTag || tag == domExcTag ||\n        (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n    }\n\n    /**\n     * Checks if `value` is a finite primitive number.\n     *\n     * **Note:** This method is based on\n     * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n     * @example\n     *\n     * _.isFinite(3);\n     * // => true\n     *\n     * _.isFinite(Number.MIN_VALUE);\n     * // => true\n     *\n     * _.isFinite(Infinity);\n     * // => false\n     *\n     * _.isFinite('3');\n     * // => false\n     */\n    function isFinite(value) {\n      return typeof value == 'number' && nativeIsFinite(value);\n    }\n\n    /**\n     * Checks if `value` is classified as a `Function` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n     * @example\n     *\n     * _.isFunction(_);\n     * // => true\n     *\n     * _.isFunction(/abc/);\n     * // => false\n     */\n    function isFunction(value) {\n      if (!isObject(value)) {\n        return false;\n      }\n      // The use of `Object#toString` avoids issues with the `typeof` operator\n      // in Safari 9 which returns 'object' for typed arrays and other constructors.\n      var tag = baseGetTag(value);\n      return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n    }\n\n    /**\n     * Checks if `value` is an integer.\n     *\n     * **Note:** This method is based on\n     * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n     * @example\n     *\n     * _.isInteger(3);\n     * // => true\n     *\n     * _.isInteger(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isInteger(Infinity);\n     * // => false\n     *\n     * _.isInteger('3');\n     * // => false\n     */\n    function isInteger(value) {\n      return typeof value == 'number' && value == toInteger(value);\n    }\n\n    /**\n     * Checks if `value` is a valid array-like length.\n     *\n     * **Note:** This method is loosely based on\n     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n     * @example\n     *\n     * _.isLength(3);\n     * // => true\n     *\n     * _.isLength(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isLength(Infinity);\n     * // => false\n     *\n     * _.isLength('3');\n     * // => false\n     */\n    function isLength(value) {\n      return typeof value == 'number' &&\n        value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n    }\n\n    /**\n     * Checks if `value` is the\n     * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n     * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n     * @example\n     *\n     * _.isObject({});\n     * // => true\n     *\n     * _.isObject([1, 2, 3]);\n     * // => true\n     *\n     * _.isObject(_.noop);\n     * // => true\n     *\n     * _.isObject(null);\n     * // => false\n     */\n    function isObject(value) {\n      var type = typeof value;\n      return value != null && (type == 'object' || type == 'function');\n    }\n\n    /**\n     * Checks if `value` is object-like. A value is object-like if it's not `null`\n     * and has a `typeof` result of \"object\".\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n     * @example\n     *\n     * _.isObjectLike({});\n     * // => true\n     *\n     * _.isObjectLike([1, 2, 3]);\n     * // => true\n     *\n     * _.isObjectLike(_.noop);\n     * // => false\n     *\n     * _.isObjectLike(null);\n     * // => false\n     */\n    function isObjectLike(value) {\n      return value != null && typeof value == 'object';\n    }\n\n    /**\n     * Checks if `value` is classified as a `Map` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n     * @example\n     *\n     * _.isMap(new Map);\n     * // => true\n     *\n     * _.isMap(new WeakMap);\n     * // => false\n     */\n    var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n    /**\n     * Performs a partial deep comparison between `object` and `source` to\n     * determine if `object` contains equivalent property values.\n     *\n     * **Note:** This method is equivalent to `_.matches` when `source` is\n     * partially applied.\n     *\n     * Partial comparisons will match empty array and empty object `source`\n     * values against any array or object value, respectively. See `_.isEqual`\n     * for a list of supported value comparisons.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     *\n     * _.isMatch(object, { 'b': 2 });\n     * // => true\n     *\n     * _.isMatch(object, { 'b': 1 });\n     * // => false\n     */\n    function isMatch(object, source) {\n      return object === source || baseIsMatch(object, source, getMatchData(source));\n    }\n\n    /**\n     * This method is like `_.isMatch` except that it accepts `customizer` which\n     * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n     * are handled by the method instead. The `customizer` is invoked with five\n     * arguments: (objValue, srcValue, index|key, object, source).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     * @example\n     *\n     * function isGreeting(value) {\n     *   return /^h(?:i|ello)$/.test(value);\n     * }\n     *\n     * function customizer(objValue, srcValue) {\n     *   if (isGreeting(objValue) && isGreeting(srcValue)) {\n     *     return true;\n     *   }\n     * }\n     *\n     * var object = { 'greeting': 'hello' };\n     * var source = { 'greeting': 'hi' };\n     *\n     * _.isMatchWith(object, source, customizer);\n     * // => true\n     */\n    function isMatchWith(object, source, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseIsMatch(object, source, getMatchData(source), customizer);\n    }\n\n    /**\n     * Checks if `value` is `NaN`.\n     *\n     * **Note:** This method is based on\n     * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n     * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n     * `undefined` and other non-number values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n     * @example\n     *\n     * _.isNaN(NaN);\n     * // => true\n     *\n     * _.isNaN(new Number(NaN));\n     * // => true\n     *\n     * isNaN(undefined);\n     * // => true\n     *\n     * _.isNaN(undefined);\n     * // => false\n     */\n    function isNaN(value) {\n      // An `NaN` primitive is the only value that is not equal to itself.\n      // Perform the `toStringTag` check first to avoid errors with some\n      // ActiveX objects in IE.\n      return isNumber(value) && value != +value;\n    }\n\n    /**\n     * Checks if `value` is a pristine native function.\n     *\n     * **Note:** This method can't reliably detect native functions in the presence\n     * of the core-js package because core-js circumvents this kind of detection.\n     * Despite multiple requests, the core-js maintainer has made it clear: any\n     * attempt to fix the detection will be obstructed. As a result, we're left\n     * with little choice but to throw an error. Unfortunately, this also affects\n     * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n     * which rely on core-js.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a native function,\n     *  else `false`.\n     * @example\n     *\n     * _.isNative(Array.prototype.push);\n     * // => true\n     *\n     * _.isNative(_);\n     * // => false\n     */\n    function isNative(value) {\n      if (isMaskable(value)) {\n        throw new Error(CORE_ERROR_TEXT);\n      }\n      return baseIsNative(value);\n    }\n\n    /**\n     * Checks if `value` is `null`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n     * @example\n     *\n     * _.isNull(null);\n     * // => true\n     *\n     * _.isNull(void 0);\n     * // => false\n     */\n    function isNull(value) {\n      return value === null;\n    }\n\n    /**\n     * Checks if `value` is `null` or `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n     * @example\n     *\n     * _.isNil(null);\n     * // => true\n     *\n     * _.isNil(void 0);\n     * // => true\n     *\n     * _.isNil(NaN);\n     * // => false\n     */\n    function isNil(value) {\n      return value == null;\n    }\n\n    /**\n     * Checks if `value` is classified as a `Number` primitive or object.\n     *\n     * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n     * classified as numbers, use the `_.isFinite` method.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n     * @example\n     *\n     * _.isNumber(3);\n     * // => true\n     *\n     * _.isNumber(Number.MIN_VALUE);\n     * // => true\n     *\n     * _.isNumber(Infinity);\n     * // => true\n     *\n     * _.isNumber('3');\n     * // => false\n     */\n    function isNumber(value) {\n      return typeof value == 'number' ||\n        (isObjectLike(value) && baseGetTag(value) == numberTag);\n    }\n\n    /**\n     * Checks if `value` is a plain object, that is, an object created by the\n     * `Object` constructor or one with a `[[Prototype]]` of `null`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.8.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * _.isPlainObject(new Foo);\n     * // => false\n     *\n     * _.isPlainObject([1, 2, 3]);\n     * // => false\n     *\n     * _.isPlainObject({ 'x': 0, 'y': 0 });\n     * // => true\n     *\n     * _.isPlainObject(Object.create(null));\n     * // => true\n     */\n    function isPlainObject(value) {\n      if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n        return false;\n      }\n      var proto = getPrototype(value);\n      if (proto === null) {\n        return true;\n      }\n      var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n      return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n        funcToString.call(Ctor) == objectCtorString;\n    }\n\n    /**\n     * Checks if `value` is classified as a `RegExp` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n     * @example\n     *\n     * _.isRegExp(/abc/);\n     * // => true\n     *\n     * _.isRegExp('/abc/');\n     * // => false\n     */\n    var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n    /**\n     * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n     * double precision number which isn't the result of a rounded unsafe integer.\n     *\n     * **Note:** This method is based on\n     * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n     * @example\n     *\n     * _.isSafeInteger(3);\n     * // => true\n     *\n     * _.isSafeInteger(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isSafeInteger(Infinity);\n     * // => false\n     *\n     * _.isSafeInteger('3');\n     * // => false\n     */\n    function isSafeInteger(value) {\n      return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n    }\n\n    /**\n     * Checks if `value` is classified as a `Set` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n     * @example\n     *\n     * _.isSet(new Set);\n     * // => true\n     *\n     * _.isSet(new WeakSet);\n     * // => false\n     */\n    var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n    /**\n     * Checks if `value` is classified as a `String` primitive or object.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n     * @example\n     *\n     * _.isString('abc');\n     * // => true\n     *\n     * _.isString(1);\n     * // => false\n     */\n    function isString(value) {\n      return typeof value == 'string' ||\n        (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n    }\n\n    /**\n     * Checks if `value` is classified as a `Symbol` primitive or object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n     * @example\n     *\n     * _.isSymbol(Symbol.iterator);\n     * // => true\n     *\n     * _.isSymbol('abc');\n     * // => false\n     */\n    function isSymbol(value) {\n      return typeof value == 'symbol' ||\n        (isObjectLike(value) && baseGetTag(value) == symbolTag);\n    }\n\n    /**\n     * Checks if `value` is classified as a typed array.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n     * @example\n     *\n     * _.isTypedArray(new Uint8Array);\n     * // => true\n     *\n     * _.isTypedArray([]);\n     * // => false\n     */\n    var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n    /**\n     * Checks if `value` is `undefined`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n     * @example\n     *\n     * _.isUndefined(void 0);\n     * // => true\n     *\n     * _.isUndefined(null);\n     * // => false\n     */\n    function isUndefined(value) {\n      return value === undefined;\n    }\n\n    /**\n     * Checks if `value` is classified as a `WeakMap` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n     * @example\n     *\n     * _.isWeakMap(new WeakMap);\n     * // => true\n     *\n     * _.isWeakMap(new Map);\n     * // => false\n     */\n    function isWeakMap(value) {\n      return isObjectLike(value) && getTag(value) == weakMapTag;\n    }\n\n    /**\n     * Checks if `value` is classified as a `WeakSet` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n     * @example\n     *\n     * _.isWeakSet(new WeakSet);\n     * // => true\n     *\n     * _.isWeakSet(new Set);\n     * // => false\n     */\n    function isWeakSet(value) {\n      return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n    }\n\n    /**\n     * Checks if `value` is less than `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than `other`,\n     *  else `false`.\n     * @see _.gt\n     * @example\n     *\n     * _.lt(1, 3);\n     * // => true\n     *\n     * _.lt(3, 3);\n     * // => false\n     *\n     * _.lt(3, 1);\n     * // => false\n     */\n    var lt = createRelationalOperation(baseLt);\n\n    /**\n     * Checks if `value` is less than or equal to `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than or equal to\n     *  `other`, else `false`.\n     * @see _.gte\n     * @example\n     *\n     * _.lte(1, 3);\n     * // => true\n     *\n     * _.lte(3, 3);\n     * // => true\n     *\n     * _.lte(3, 1);\n     * // => false\n     */\n    var lte = createRelationalOperation(function(value, other) {\n      return value <= other;\n    });\n\n    /**\n     * Converts `value` to an array.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {Array} Returns the converted array.\n     * @example\n     *\n     * _.toArray({ 'a': 1, 'b': 2 });\n     * // => [1, 2]\n     *\n     * _.toArray('abc');\n     * // => ['a', 'b', 'c']\n     *\n     * _.toArray(1);\n     * // => []\n     *\n     * _.toArray(null);\n     * // => []\n     */\n    function toArray(value) {\n      if (!value) {\n        return [];\n      }\n      if (isArrayLike(value)) {\n        return isString(value) ? stringToArray(value) : copyArray(value);\n      }\n      if (symIterator && value[symIterator]) {\n        return iteratorToArray(value[symIterator]());\n      }\n      var tag = getTag(value),\n          func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n      return func(value);\n    }\n\n    /**\n     * Converts `value` to a finite number.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.12.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted number.\n     * @example\n     *\n     * _.toFinite(3.2);\n     * // => 3.2\n     *\n     * _.toFinite(Number.MIN_VALUE);\n     * // => 5e-324\n     *\n     * _.toFinite(Infinity);\n     * // => 1.7976931348623157e+308\n     *\n     * _.toFinite('3.2');\n     * // => 3.2\n     */\n    function toFinite(value) {\n      if (!value) {\n        return value === 0 ? value : 0;\n      }\n      value = toNumber(value);\n      if (value === INFINITY || value === -INFINITY) {\n        var sign = (value < 0 ? -1 : 1);\n        return sign * MAX_INTEGER;\n      }\n      return value === value ? value : 0;\n    }\n\n    /**\n     * Converts `value` to an integer.\n     *\n     * **Note:** This method is loosely based on\n     * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toInteger(3.2);\n     * // => 3\n     *\n     * _.toInteger(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toInteger(Infinity);\n     * // => 1.7976931348623157e+308\n     *\n     * _.toInteger('3.2');\n     * // => 3\n     */\n    function toInteger(value) {\n      var result = toFinite(value),\n          remainder = result % 1;\n\n      return result === result ? (remainder ? result - remainder : result) : 0;\n    }\n\n    /**\n     * Converts `value` to an integer suitable for use as the length of an\n     * array-like object.\n     *\n     * **Note:** This method is based on\n     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toLength(3.2);\n     * // => 3\n     *\n     * _.toLength(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toLength(Infinity);\n     * // => 4294967295\n     *\n     * _.toLength('3.2');\n     * // => 3\n     */\n    function toLength(value) {\n      return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n    }\n\n    /**\n     * Converts `value` to a number.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to process.\n     * @returns {number} Returns the number.\n     * @example\n     *\n     * _.toNumber(3.2);\n     * // => 3.2\n     *\n     * _.toNumber(Number.MIN_VALUE);\n     * // => 5e-324\n     *\n     * _.toNumber(Infinity);\n     * // => Infinity\n     *\n     * _.toNumber('3.2');\n     * // => 3.2\n     */\n    function toNumber(value) {\n      if (typeof value == 'number') {\n        return value;\n      }\n      if (isSymbol(value)) {\n        return NAN;\n      }\n      if (isObject(value)) {\n        var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n        value = isObject(other) ? (other + '') : other;\n      }\n      if (typeof value != 'string') {\n        return value === 0 ? value : +value;\n      }\n      value = baseTrim(value);\n      var isBinary = reIsBinary.test(value);\n      return (isBinary || reIsOctal.test(value))\n        ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n        : (reIsBadHex.test(value) ? NAN : +value);\n    }\n\n    /**\n     * Converts `value` to a plain object flattening inherited enumerable string\n     * keyed properties of `value` to own properties of the plain object.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {Object} Returns the converted plain object.\n     * @example\n     *\n     * function Foo() {\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.assign({ 'a': 1 }, new Foo);\n     * // => { 'a': 1, 'b': 2 }\n     *\n     * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n     * // => { 'a': 1, 'b': 2, 'c': 3 }\n     */\n    function toPlainObject(value) {\n      return copyObject(value, keysIn(value));\n    }\n\n    /**\n     * Converts `value` to a safe integer. A safe integer can be compared and\n     * represented correctly.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toSafeInteger(3.2);\n     * // => 3\n     *\n     * _.toSafeInteger(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toSafeInteger(Infinity);\n     * // => 9007199254740991\n     *\n     * _.toSafeInteger('3.2');\n     * // => 3\n     */\n    function toSafeInteger(value) {\n      return value\n        ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n        : (value === 0 ? value : 0);\n    }\n\n    /**\n     * Converts `value` to a string. An empty string is returned for `null`\n     * and `undefined` values. The sign of `-0` is preserved.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.toString(null);\n     * // => ''\n     *\n     * _.toString(-0);\n     * // => '-0'\n     *\n     * _.toString([1, 2, 3]);\n     * // => '1,2,3'\n     */\n    function toString(value) {\n      return value == null ? '' : baseToString(value);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Assigns own enumerable string keyed properties of source objects to the\n     * destination object. Source objects are applied from left to right.\n     * Subsequent sources overwrite property assignments of previous sources.\n     *\n     * **Note:** This method mutates `object` and is loosely based on\n     * [`Object.assign`](https://mdn.io/Object/assign).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.10.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.assignIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * function Bar() {\n     *   this.c = 3;\n     * }\n     *\n     * Foo.prototype.b = 2;\n     * Bar.prototype.d = 4;\n     *\n     * _.assign({ 'a': 0 }, new Foo, new Bar);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    var assign = createAssigner(function(object, source) {\n      if (isPrototype(source) || isArrayLike(source)) {\n        copyObject(source, keys(source), object);\n        return;\n      }\n      for (var key in source) {\n        if (hasOwnProperty.call(source, key)) {\n          assignValue(object, key, source[key]);\n        }\n      }\n    });\n\n    /**\n     * This method is like `_.assign` except that it iterates over own and\n     * inherited source properties.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias extend\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.assign\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * function Bar() {\n     *   this.c = 3;\n     * }\n     *\n     * Foo.prototype.b = 2;\n     * Bar.prototype.d = 4;\n     *\n     * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n     * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n     */\n    var assignIn = createAssigner(function(object, source) {\n      copyObject(source, keysIn(source), object);\n    });\n\n    /**\n     * This method is like `_.assignIn` except that it accepts `customizer`\n     * which is invoked to produce the assigned values. If `customizer` returns\n     * `undefined`, assignment is handled by the method instead. The `customizer`\n     * is invoked with five arguments: (objValue, srcValue, key, object, source).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias extendWith\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @see _.assignWith\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   return _.isUndefined(objValue) ? srcValue : objValue;\n     * }\n     *\n     * var defaults = _.partialRight(_.assignInWith, customizer);\n     *\n     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n      copyObject(source, keysIn(source), object, customizer);\n    });\n\n    /**\n     * This method is like `_.assign` except that it accepts `customizer`\n     * which is invoked to produce the assigned values. If `customizer` returns\n     * `undefined`, assignment is handled by the method instead. The `customizer`\n     * is invoked with five arguments: (objValue, srcValue, key, object, source).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @see _.assignInWith\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   return _.isUndefined(objValue) ? srcValue : objValue;\n     * }\n     *\n     * var defaults = _.partialRight(_.assignWith, customizer);\n     *\n     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n      copyObject(source, keys(source), object, customizer);\n    });\n\n    /**\n     * Creates an array of values corresponding to `paths` of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Array} Returns the picked values.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n     *\n     * _.at(object, ['a[0].b.c', 'a[1]']);\n     * // => [3, 4]\n     */\n    var at = flatRest(baseAt);\n\n    /**\n     * Creates an object that inherits from the `prototype` object. If a\n     * `properties` object is given, its own enumerable string keyed properties\n     * are assigned to the created object.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.3.0\n     * @category Object\n     * @param {Object} prototype The object to inherit from.\n     * @param {Object} [properties] The properties to assign to the object.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * function Shape() {\n     *   this.x = 0;\n     *   this.y = 0;\n     * }\n     *\n     * function Circle() {\n     *   Shape.call(this);\n     * }\n     *\n     * Circle.prototype = _.create(Shape.prototype, {\n     *   'constructor': Circle\n     * });\n     *\n     * var circle = new Circle;\n     * circle instanceof Circle;\n     * // => true\n     *\n     * circle instanceof Shape;\n     * // => true\n     */\n    function create(prototype, properties) {\n      var result = baseCreate(prototype);\n      return properties == null ? result : baseAssign(result, properties);\n    }\n\n    /**\n     * Assigns own and inherited enumerable string keyed properties of source\n     * objects to the destination object for all destination properties that\n     * resolve to `undefined`. Source objects are applied from left to right.\n     * Once a property is set, additional values of the same property are ignored.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.defaultsDeep\n     * @example\n     *\n     * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var defaults = baseRest(function(object, sources) {\n      object = Object(object);\n\n      var index = -1;\n      var length = sources.length;\n      var guard = length > 2 ? sources[2] : undefined;\n\n      if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n        length = 1;\n      }\n\n      while (++index < length) {\n        var source = sources[index];\n        var props = keysIn(source);\n        var propsIndex = -1;\n        var propsLength = props.length;\n\n        while (++propsIndex < propsLength) {\n          var key = props[propsIndex];\n          var value = object[key];\n\n          if (value === undefined ||\n              (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n            object[key] = source[key];\n          }\n        }\n      }\n\n      return object;\n    });\n\n    /**\n     * This method is like `_.defaults` except that it recursively assigns\n     * default properties.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.defaults\n     * @example\n     *\n     * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n     * // => { 'a': { 'b': 2, 'c': 3 } }\n     */\n    var defaultsDeep = baseRest(function(args) {\n      args.push(undefined, customDefaultsMerge);\n      return apply(mergeWith, undefined, args);\n    });\n\n    /**\n     * This method is like `_.find` except that it returns the key of the first\n     * element `predicate` returns truthy for instead of the element itself.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {string|undefined} Returns the key of the matched element,\n     *  else `undefined`.\n     * @example\n     *\n     * var users = {\n     *   'barney':  { 'age': 36, 'active': true },\n     *   'fred':    { 'age': 40, 'active': false },\n     *   'pebbles': { 'age': 1,  'active': true }\n     * };\n     *\n     * _.findKey(users, function(o) { return o.age < 40; });\n     * // => 'barney' (iteration order is not guaranteed)\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findKey(users, { 'age': 1, 'active': true });\n     * // => 'pebbles'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findKey(users, ['active', false]);\n     * // => 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findKey(users, 'active');\n     * // => 'barney'\n     */\n    function findKey(object, predicate) {\n      return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n    }\n\n    /**\n     * This method is like `_.findKey` except that it iterates over elements of\n     * a collection in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {string|undefined} Returns the key of the matched element,\n     *  else `undefined`.\n     * @example\n     *\n     * var users = {\n     *   'barney':  { 'age': 36, 'active': true },\n     *   'fred':    { 'age': 40, 'active': false },\n     *   'pebbles': { 'age': 1,  'active': true }\n     * };\n     *\n     * _.findLastKey(users, function(o) { return o.age < 40; });\n     * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findLastKey(users, { 'age': 36, 'active': true });\n     * // => 'barney'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findLastKey(users, ['active', false]);\n     * // => 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findLastKey(users, 'active');\n     * // => 'pebbles'\n     */\n    function findLastKey(object, predicate) {\n      return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n    }\n\n    /**\n     * Iterates over own and inherited enumerable string keyed properties of an\n     * object and invokes `iteratee` for each property. The iteratee is invoked\n     * with three arguments: (value, key, object). Iteratee functions may exit\n     * iteration early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forInRight\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forIn(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n     */\n    function forIn(object, iteratee) {\n      return object == null\n        ? object\n        : baseFor(object, getIteratee(iteratee, 3), keysIn);\n    }\n\n    /**\n     * This method is like `_.forIn` except that it iterates over properties of\n     * `object` in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forInRight(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n     */\n    function forInRight(object, iteratee) {\n      return object == null\n        ? object\n        : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n    }\n\n    /**\n     * Iterates over own enumerable string keyed properties of an object and\n     * invokes `iteratee` for each property. The iteratee is invoked with three\n     * arguments: (value, key, object). Iteratee functions may exit iteration\n     * early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forOwnRight\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forOwn(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n     */\n    function forOwn(object, iteratee) {\n      return object && baseForOwn(object, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.forOwn` except that it iterates over properties of\n     * `object` in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forOwn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forOwnRight(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n     */\n    function forOwnRight(object, iteratee) {\n      return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * Creates an array of function property names from own enumerable properties\n     * of `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @returns {Array} Returns the function names.\n     * @see _.functionsIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = _.constant('a');\n     *   this.b = _.constant('b');\n     * }\n     *\n     * Foo.prototype.c = _.constant('c');\n     *\n     * _.functions(new Foo);\n     * // => ['a', 'b']\n     */\n    function functions(object) {\n      return object == null ? [] : baseFunctions(object, keys(object));\n    }\n\n    /**\n     * Creates an array of function property names from own and inherited\n     * enumerable properties of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @returns {Array} Returns the function names.\n     * @see _.functions\n     * @example\n     *\n     * function Foo() {\n     *   this.a = _.constant('a');\n     *   this.b = _.constant('b');\n     * }\n     *\n     * Foo.prototype.c = _.constant('c');\n     *\n     * _.functionsIn(new Foo);\n     * // => ['a', 'b', 'c']\n     */\n    function functionsIn(object) {\n      return object == null ? [] : baseFunctions(object, keysIn(object));\n    }\n\n    /**\n     * Gets the value at `path` of `object`. If the resolved value is\n     * `undefined`, the `defaultValue` is returned in its place.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to get.\n     * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.get(object, 'a[0].b.c');\n     * // => 3\n     *\n     * _.get(object, ['a', '0', 'b', 'c']);\n     * // => 3\n     *\n     * _.get(object, 'a.b.c', 'default');\n     * // => 'default'\n     */\n    function get(object, path, defaultValue) {\n      var result = object == null ? undefined : baseGet(object, path);\n      return result === undefined ? defaultValue : result;\n    }\n\n    /**\n     * Checks if `path` is a direct property of `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     * @example\n     *\n     * var object = { 'a': { 'b': 2 } };\n     * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n     *\n     * _.has(object, 'a');\n     * // => true\n     *\n     * _.has(object, 'a.b');\n     * // => true\n     *\n     * _.has(object, ['a', 'b']);\n     * // => true\n     *\n     * _.has(other, 'a');\n     * // => false\n     */\n    function has(object, path) {\n      return object != null && hasPath(object, path, baseHas);\n    }\n\n    /**\n     * Checks if `path` is a direct or inherited property of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     * @example\n     *\n     * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n     *\n     * _.hasIn(object, 'a');\n     * // => true\n     *\n     * _.hasIn(object, 'a.b');\n     * // => true\n     *\n     * _.hasIn(object, ['a', 'b']);\n     * // => true\n     *\n     * _.hasIn(object, 'b');\n     * // => false\n     */\n    function hasIn(object, path) {\n      return object != null && hasPath(object, path, baseHasIn);\n    }\n\n    /**\n     * Creates an object composed of the inverted keys and values of `object`.\n     * If `object` contains duplicate values, subsequent values overwrite\n     * property assignments of previous values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.7.0\n     * @category Object\n     * @param {Object} object The object to invert.\n     * @returns {Object} Returns the new inverted object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2, 'c': 1 };\n     *\n     * _.invert(object);\n     * // => { '1': 'c', '2': 'b' }\n     */\n    var invert = createInverter(function(result, value, key) {\n      if (value != null &&\n          typeof value.toString != 'function') {\n        value = nativeObjectToString.call(value);\n      }\n\n      result[value] = key;\n    }, constant(identity));\n\n    /**\n     * This method is like `_.invert` except that the inverted object is generated\n     * from the results of running each element of `object` thru `iteratee`. The\n     * corresponding inverted value of each inverted key is an array of keys\n     * responsible for generating the inverted value. The iteratee is invoked\n     * with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.1.0\n     * @category Object\n     * @param {Object} object The object to invert.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Object} Returns the new inverted object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2, 'c': 1 };\n     *\n     * _.invertBy(object);\n     * // => { '1': ['a', 'c'], '2': ['b'] }\n     *\n     * _.invertBy(object, function(value) {\n     *   return 'group' + value;\n     * });\n     * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n     */\n    var invertBy = createInverter(function(result, value, key) {\n      if (value != null &&\n          typeof value.toString != 'function') {\n        value = nativeObjectToString.call(value);\n      }\n\n      if (hasOwnProperty.call(result, value)) {\n        result[value].push(key);\n      } else {\n        result[value] = [key];\n      }\n    }, getIteratee);\n\n    /**\n     * Invokes the method at `path` of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {*} Returns the result of the invoked method.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n     *\n     * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n     * // => [2, 3]\n     */\n    var invoke = baseRest(baseInvoke);\n\n    /**\n     * Creates an array of the own enumerable property names of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects. See the\n     * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n     * for more details.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.keys(new Foo);\n     * // => ['a', 'b'] (iteration order is not guaranteed)\n     *\n     * _.keys('hi');\n     * // => ['0', '1']\n     */\n    function keys(object) {\n      return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n    }\n\n    /**\n     * Creates an array of the own and inherited enumerable property names of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.keysIn(new Foo);\n     * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n     */\n    function keysIn(object) {\n      return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n    }\n\n    /**\n     * The opposite of `_.mapValues`; this method creates an object with the\n     * same values as `object` and keys generated by running each own enumerable\n     * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n     * with three arguments: (value, key, object).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns the new mapped object.\n     * @see _.mapValues\n     * @example\n     *\n     * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n     *   return key + value;\n     * });\n     * // => { 'a1': 1, 'b2': 2 }\n     */\n    function mapKeys(object, iteratee) {\n      var result = {};\n      iteratee = getIteratee(iteratee, 3);\n\n      baseForOwn(object, function(value, key, object) {\n        baseAssignValue(result, iteratee(value, key, object), value);\n      });\n      return result;\n    }\n\n    /**\n     * Creates an object with the same keys as `object` and values generated\n     * by running each own enumerable string keyed property of `object` thru\n     * `iteratee`. The iteratee is invoked with three arguments:\n     * (value, key, object).\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns the new mapped object.\n     * @see _.mapKeys\n     * @example\n     *\n     * var users = {\n     *   'fred':    { 'user': 'fred',    'age': 40 },\n     *   'pebbles': { 'user': 'pebbles', 'age': 1 }\n     * };\n     *\n     * _.mapValues(users, function(o) { return o.age; });\n     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.mapValues(users, 'age');\n     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n     */\n    function mapValues(object, iteratee) {\n      var result = {};\n      iteratee = getIteratee(iteratee, 3);\n\n      baseForOwn(object, function(value, key, object) {\n        baseAssignValue(result, key, iteratee(value, key, object));\n      });\n      return result;\n    }\n\n    /**\n     * This method is like `_.assign` except that it recursively merges own and\n     * inherited enumerable string keyed properties of source objects into the\n     * destination object. Source properties that resolve to `undefined` are\n     * skipped if a destination value exists. Array and plain object properties\n     * are merged recursively. Other objects and value types are overridden by\n     * assignment. Source objects are applied from left to right. Subsequent\n     * sources overwrite property assignments of previous sources.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {\n     *   'a': [{ 'b': 2 }, { 'd': 4 }]\n     * };\n     *\n     * var other = {\n     *   'a': [{ 'c': 3 }, { 'e': 5 }]\n     * };\n     *\n     * _.merge(object, other);\n     * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n     */\n    var merge = createAssigner(function(object, source, srcIndex) {\n      baseMerge(object, source, srcIndex);\n    });\n\n    /**\n     * This method is like `_.merge` except that it accepts `customizer` which\n     * is invoked to produce the merged values of the destination and source\n     * properties. If `customizer` returns `undefined`, merging is handled by the\n     * method instead. The `customizer` is invoked with six arguments:\n     * (objValue, srcValue, key, object, source, stack).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} customizer The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   if (_.isArray(objValue)) {\n     *     return objValue.concat(srcValue);\n     *   }\n     * }\n     *\n     * var object = { 'a': [1], 'b': [2] };\n     * var other = { 'a': [3], 'b': [4] };\n     *\n     * _.mergeWith(object, other, customizer);\n     * // => { 'a': [1, 3], 'b': [2, 4] }\n     */\n    var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n      baseMerge(object, source, srcIndex, customizer);\n    });\n\n    /**\n     * The opposite of `_.pick`; this method creates an object composed of the\n     * own and inherited enumerable property paths of `object` that are not omitted.\n     *\n     * **Note:** This method is considerably slower than `_.pick`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {...(string|string[])} [paths] The property paths to omit.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.omit(object, ['a', 'c']);\n     * // => { 'b': '2' }\n     */\n    var omit = flatRest(function(object, paths) {\n      var result = {};\n      if (object == null) {\n        return result;\n      }\n      var isDeep = false;\n      paths = arrayMap(paths, function(path) {\n        path = castPath(path, object);\n        isDeep || (isDeep = path.length > 1);\n        return path;\n      });\n      copyObject(object, getAllKeysIn(object), result);\n      if (isDeep) {\n        result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n      }\n      var length = paths.length;\n      while (length--) {\n        baseUnset(result, paths[length]);\n      }\n      return result;\n    });\n\n    /**\n     * The opposite of `_.pickBy`; this method creates an object composed of\n     * the own and inherited enumerable string keyed properties of `object` that\n     * `predicate` doesn't return truthy for. The predicate is invoked with two\n     * arguments: (value, key).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {Function} [predicate=_.identity] The function invoked per property.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.omitBy(object, _.isNumber);\n     * // => { 'b': '2' }\n     */\n    function omitBy(object, predicate) {\n      return pickBy(object, negate(getIteratee(predicate)));\n    }\n\n    /**\n     * Creates an object composed of the picked `object` properties.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.pick(object, ['a', 'c']);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    var pick = flatRest(function(object, paths) {\n      return object == null ? {} : basePick(object, paths);\n    });\n\n    /**\n     * Creates an object composed of the `object` properties `predicate` returns\n     * truthy for. The predicate is invoked with two arguments: (value, key).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {Function} [predicate=_.identity] The function invoked per property.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.pickBy(object, _.isNumber);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    function pickBy(object, predicate) {\n      if (object == null) {\n        return {};\n      }\n      var props = arrayMap(getAllKeysIn(object), function(prop) {\n        return [prop];\n      });\n      predicate = getIteratee(predicate);\n      return basePickBy(object, props, function(value, path) {\n        return predicate(value, path[0]);\n      });\n    }\n\n    /**\n     * This method is like `_.get` except that if the resolved value is a\n     * function it's invoked with the `this` binding of its parent object and\n     * its result is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to resolve.\n     * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n     *\n     * _.result(object, 'a[0].b.c1');\n     * // => 3\n     *\n     * _.result(object, 'a[0].b.c2');\n     * // => 4\n     *\n     * _.result(object, 'a[0].b.c3', 'default');\n     * // => 'default'\n     *\n     * _.result(object, 'a[0].b.c3', _.constant('default'));\n     * // => 'default'\n     */\n    function result(object, path, defaultValue) {\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length;\n\n      // Ensure the loop is entered when path is empty.\n      if (!length) {\n        length = 1;\n        object = undefined;\n      }\n      while (++index < length) {\n        var value = object == null ? undefined : object[toKey(path[index])];\n        if (value === undefined) {\n          index = length;\n          value = defaultValue;\n        }\n        object = isFunction(value) ? value.call(object) : value;\n      }\n      return object;\n    }\n\n    /**\n     * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n     * it's created. Arrays are created for missing index properties while objects\n     * are created for all other missing properties. Use `_.setWith` to customize\n     * `path` creation.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.set(object, 'a[0].b.c', 4);\n     * console.log(object.a[0].b.c);\n     * // => 4\n     *\n     * _.set(object, ['x', '0', 'y', 'z'], 5);\n     * console.log(object.x[0].y.z);\n     * // => 5\n     */\n    function set(object, path, value) {\n      return object == null ? object : baseSet(object, path, value);\n    }\n\n    /**\n     * This method is like `_.set` except that it accepts `customizer` which is\n     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n     * path creation is handled by the method instead. The `customizer` is invoked\n     * with three arguments: (nsValue, key, nsObject).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {};\n     *\n     * _.setWith(object, '[0][1]', 'a', Object);\n     * // => { '0': { '1': 'a' } }\n     */\n    function setWith(object, path, value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return object == null ? object : baseSet(object, path, value, customizer);\n    }\n\n    /**\n     * Creates an array of own enumerable string keyed-value pairs for `object`\n     * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n     * entries are returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias entries\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the key-value pairs.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.toPairs(new Foo);\n     * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n     */\n    var toPairs = createToPairs(keys);\n\n    /**\n     * Creates an array of own and inherited enumerable string keyed-value pairs\n     * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n     * or set, its entries are returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias entriesIn\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the key-value pairs.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.toPairsIn(new Foo);\n     * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n     */\n    var toPairsIn = createToPairs(keysIn);\n\n    /**\n     * An alternative to `_.reduce`; this method transforms `object` to a new\n     * `accumulator` object which is the result of running each of its own\n     * enumerable string keyed properties thru `iteratee`, with each invocation\n     * potentially mutating the `accumulator` object. If `accumulator` is not\n     * provided, a new object with the same `[[Prototype]]` will be used. The\n     * iteratee is invoked with four arguments: (accumulator, value, key, object).\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The custom accumulator value.\n     * @returns {*} Returns the accumulated value.\n     * @example\n     *\n     * _.transform([2, 3, 4], function(result, n) {\n     *   result.push(n *= n);\n     *   return n % 2 == 0;\n     * }, []);\n     * // => [4, 9]\n     *\n     * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n     *   (result[value] || (result[value] = [])).push(key);\n     * }, {});\n     * // => { '1': ['a', 'c'], '2': ['b'] }\n     */\n    function transform(object, iteratee, accumulator) {\n      var isArr = isArray(object),\n          isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n      iteratee = getIteratee(iteratee, 4);\n      if (accumulator == null) {\n        var Ctor = object && object.constructor;\n        if (isArrLike) {\n          accumulator = isArr ? new Ctor : [];\n        }\n        else if (isObject(object)) {\n          accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n        }\n        else {\n          accumulator = {};\n        }\n      }\n      (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n        return iteratee(accumulator, value, index, object);\n      });\n      return accumulator;\n    }\n\n    /**\n     * Removes the property at `path` of `object`.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to unset.\n     * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n     * _.unset(object, 'a[0].b.c');\n     * // => true\n     *\n     * console.log(object);\n     * // => { 'a': [{ 'b': {} }] };\n     *\n     * _.unset(object, ['a', '0', 'b', 'c']);\n     * // => true\n     *\n     * console.log(object);\n     * // => { 'a': [{ 'b': {} }] };\n     */\n    function unset(object, path) {\n      return object == null ? true : baseUnset(object, path);\n    }\n\n    /**\n     * This method is like `_.set` except that accepts `updater` to produce the\n     * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n     * is invoked with one argument: (value).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {Function} updater The function to produce the updated value.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n     * console.log(object.a[0].b.c);\n     * // => 9\n     *\n     * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n     * console.log(object.x[0].y.z);\n     * // => 0\n     */\n    function update(object, path, updater) {\n      return object == null ? object : baseUpdate(object, path, castFunction(updater));\n    }\n\n    /**\n     * This method is like `_.update` except that it accepts `customizer` which is\n     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n     * path creation is handled by the method instead. The `customizer` is invoked\n     * with three arguments: (nsValue, key, nsObject).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {Function} updater The function to produce the updated value.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {};\n     *\n     * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n     * // => { '0': { '1': 'a' } }\n     */\n    function updateWith(object, path, updater, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n    }\n\n    /**\n     * Creates an array of the own enumerable string keyed property values of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property values.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.values(new Foo);\n     * // => [1, 2] (iteration order is not guaranteed)\n     *\n     * _.values('hi');\n     * // => ['h', 'i']\n     */\n    function values(object) {\n      return object == null ? [] : baseValues(object, keys(object));\n    }\n\n    /**\n     * Creates an array of the own and inherited enumerable string keyed property\n     * values of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property values.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.valuesIn(new Foo);\n     * // => [1, 2, 3] (iteration order is not guaranteed)\n     */\n    function valuesIn(object) {\n      return object == null ? [] : baseValues(object, keysIn(object));\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Clamps `number` within the inclusive `lower` and `upper` bounds.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Number\n     * @param {number} number The number to clamp.\n     * @param {number} [lower] The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the clamped number.\n     * @example\n     *\n     * _.clamp(-10, -5, 5);\n     * // => -5\n     *\n     * _.clamp(10, -5, 5);\n     * // => 5\n     */\n    function clamp(number, lower, upper) {\n      if (upper === undefined) {\n        upper = lower;\n        lower = undefined;\n      }\n      if (upper !== undefined) {\n        upper = toNumber(upper);\n        upper = upper === upper ? upper : 0;\n      }\n      if (lower !== undefined) {\n        lower = toNumber(lower);\n        lower = lower === lower ? lower : 0;\n      }\n      return baseClamp(toNumber(number), lower, upper);\n    }\n\n    /**\n     * Checks if `n` is between `start` and up to, but not including, `end`. If\n     * `end` is not specified, it's set to `start` with `start` then set to `0`.\n     * If `start` is greater than `end` the params are swapped to support\n     * negative ranges.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.3.0\n     * @category Number\n     * @param {number} number The number to check.\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n     * @see _.range, _.rangeRight\n     * @example\n     *\n     * _.inRange(3, 2, 4);\n     * // => true\n     *\n     * _.inRange(4, 8);\n     * // => true\n     *\n     * _.inRange(4, 2);\n     * // => false\n     *\n     * _.inRange(2, 2);\n     * // => false\n     *\n     * _.inRange(1.2, 2);\n     * // => true\n     *\n     * _.inRange(5.2, 4);\n     * // => false\n     *\n     * _.inRange(-3, -2, -6);\n     * // => true\n     */\n    function inRange(number, start, end) {\n      start = toFinite(start);\n      if (end === undefined) {\n        end = start;\n        start = 0;\n      } else {\n        end = toFinite(end);\n      }\n      number = toNumber(number);\n      return baseInRange(number, start, end);\n    }\n\n    /**\n     * Produces a random number between the inclusive `lower` and `upper` bounds.\n     * If only one argument is provided a number between `0` and the given number\n     * is returned. If `floating` is `true`, or either `lower` or `upper` are\n     * floats, a floating-point number is returned instead of an integer.\n     *\n     * **Note:** JavaScript follows the IEEE-754 standard for resolving\n     * floating-point values which can produce unexpected results.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.7.0\n     * @category Number\n     * @param {number} [lower=0] The lower bound.\n     * @param {number} [upper=1] The upper bound.\n     * @param {boolean} [floating] Specify returning a floating-point number.\n     * @returns {number} Returns the random number.\n     * @example\n     *\n     * _.random(0, 5);\n     * // => an integer between 0 and 5\n     *\n     * _.random(5);\n     * // => also an integer between 0 and 5\n     *\n     * _.random(5, true);\n     * // => a floating-point number between 0 and 5\n     *\n     * _.random(1.2, 5.2);\n     * // => a floating-point number between 1.2 and 5.2\n     */\n    function random(lower, upper, floating) {\n      if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n        upper = floating = undefined;\n      }\n      if (floating === undefined) {\n        if (typeof upper == 'boolean') {\n          floating = upper;\n          upper = undefined;\n        }\n        else if (typeof lower == 'boolean') {\n          floating = lower;\n          lower = undefined;\n        }\n      }\n      if (lower === undefined && upper === undefined) {\n        lower = 0;\n        upper = 1;\n      }\n      else {\n        lower = toFinite(lower);\n        if (upper === undefined) {\n          upper = lower;\n          lower = 0;\n        } else {\n          upper = toFinite(upper);\n        }\n      }\n      if (lower > upper) {\n        var temp = lower;\n        lower = upper;\n        upper = temp;\n      }\n      if (floating || lower % 1 || upper % 1) {\n        var rand = nativeRandom();\n        return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n      }\n      return baseRandom(lower, upper);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the camel cased string.\n     * @example\n     *\n     * _.camelCase('Foo Bar');\n     * // => 'fooBar'\n     *\n     * _.camelCase('--foo-bar--');\n     * // => 'fooBar'\n     *\n     * _.camelCase('__FOO_BAR__');\n     * // => 'fooBar'\n     */\n    var camelCase = createCompounder(function(result, word, index) {\n      word = word.toLowerCase();\n      return result + (index ? capitalize(word) : word);\n    });\n\n    /**\n     * Converts the first character of `string` to upper case and the remaining\n     * to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to capitalize.\n     * @returns {string} Returns the capitalized string.\n     * @example\n     *\n     * _.capitalize('FRED');\n     * // => 'Fred'\n     */\n    function capitalize(string) {\n      return upperFirst(toString(string).toLowerCase());\n    }\n\n    /**\n     * Deburrs `string` by converting\n     * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n     * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n     * letters to basic Latin letters and removing\n     * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to deburr.\n     * @returns {string} Returns the deburred string.\n     * @example\n     *\n     * _.deburr('déjà vu');\n     * // => 'deja vu'\n     */\n    function deburr(string) {\n      string = toString(string);\n      return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n    }\n\n    /**\n     * Checks if `string` ends with the given target string.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {string} [target] The string to search for.\n     * @param {number} [position=string.length] The position to search up to.\n     * @returns {boolean} Returns `true` if `string` ends with `target`,\n     *  else `false`.\n     * @example\n     *\n     * _.endsWith('abc', 'c');\n     * // => true\n     *\n     * _.endsWith('abc', 'b');\n     * // => false\n     *\n     * _.endsWith('abc', 'b', 2);\n     * // => true\n     */\n    function endsWith(string, target, position) {\n      string = toString(string);\n      target = baseToString(target);\n\n      var length = string.length;\n      position = position === undefined\n        ? length\n        : baseClamp(toInteger(position), 0, length);\n\n      var end = position;\n      position -= target.length;\n      return position >= 0 && string.slice(position, end) == target;\n    }\n\n    /**\n     * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n     * corresponding HTML entities.\n     *\n     * **Note:** No other characters are escaped. To escape additional\n     * characters use a third-party library like [_he_](https://mths.be/he).\n     *\n     * Though the \">\" character is escaped for symmetry, characters like\n     * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n     * unless they're part of a tag or unquoted attribute value. See\n     * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n     * (under \"semi-related fun fact\") for more details.\n     *\n     * When working with HTML you should always\n     * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n     * XSS vectors.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category String\n     * @param {string} [string=''] The string to escape.\n     * @returns {string} Returns the escaped string.\n     * @example\n     *\n     * _.escape('fred, barney, & pebbles');\n     * // => 'fred, barney, &amp; pebbles'\n     */\n    function escape(string) {\n      string = toString(string);\n      return (string && reHasUnescapedHtml.test(string))\n        ? string.replace(reUnescapedHtml, escapeHtmlChar)\n        : string;\n    }\n\n    /**\n     * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n     * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to escape.\n     * @returns {string} Returns the escaped string.\n     * @example\n     *\n     * _.escapeRegExp('[lodash](https://lodash.com/)');\n     * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n     */\n    function escapeRegExp(string) {\n      string = toString(string);\n      return (string && reHasRegExpChar.test(string))\n        ? string.replace(reRegExpChar, '\\\\$&')\n        : string;\n    }\n\n    /**\n     * Converts `string` to\n     * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the kebab cased string.\n     * @example\n     *\n     * _.kebabCase('Foo Bar');\n     * // => 'foo-bar'\n     *\n     * _.kebabCase('fooBar');\n     * // => 'foo-bar'\n     *\n     * _.kebabCase('__FOO_BAR__');\n     * // => 'foo-bar'\n     */\n    var kebabCase = createCompounder(function(result, word, index) {\n      return result + (index ? '-' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Converts `string`, as space separated words, to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the lower cased string.\n     * @example\n     *\n     * _.lowerCase('--Foo-Bar--');\n     * // => 'foo bar'\n     *\n     * _.lowerCase('fooBar');\n     * // => 'foo bar'\n     *\n     * _.lowerCase('__FOO_BAR__');\n     * // => 'foo bar'\n     */\n    var lowerCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Converts the first character of `string` to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.lowerFirst('Fred');\n     * // => 'fred'\n     *\n     * _.lowerFirst('FRED');\n     * // => 'fRED'\n     */\n    var lowerFirst = createCaseFirst('toLowerCase');\n\n    /**\n     * Pads `string` on the left and right sides if it's shorter than `length`.\n     * Padding characters are truncated if they can't be evenly divided by `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.pad('abc', 8);\n     * // => '  abc   '\n     *\n     * _.pad('abc', 8, '_-');\n     * // => '_-abc_-_'\n     *\n     * _.pad('abc', 3);\n     * // => 'abc'\n     */\n    function pad(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      if (!length || strLength >= length) {\n        return string;\n      }\n      var mid = (length - strLength) / 2;\n      return (\n        createPadding(nativeFloor(mid), chars) +\n        string +\n        createPadding(nativeCeil(mid), chars)\n      );\n    }\n\n    /**\n     * Pads `string` on the right side if it's shorter than `length`. Padding\n     * characters are truncated if they exceed `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.padEnd('abc', 6);\n     * // => 'abc   '\n     *\n     * _.padEnd('abc', 6, '_-');\n     * // => 'abc_-_'\n     *\n     * _.padEnd('abc', 3);\n     * // => 'abc'\n     */\n    function padEnd(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      return (length && strLength < length)\n        ? (string + createPadding(length - strLength, chars))\n        : string;\n    }\n\n    /**\n     * Pads `string` on the left side if it's shorter than `length`. Padding\n     * characters are truncated if they exceed `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.padStart('abc', 6);\n     * // => '   abc'\n     *\n     * _.padStart('abc', 6, '_-');\n     * // => '_-_abc'\n     *\n     * _.padStart('abc', 3);\n     * // => 'abc'\n     */\n    function padStart(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      return (length && strLength < length)\n        ? (createPadding(length - strLength, chars) + string)\n        : string;\n    }\n\n    /**\n     * Converts `string` to an integer of the specified radix. If `radix` is\n     * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n     * hexadecimal, in which case a `radix` of `16` is used.\n     *\n     * **Note:** This method aligns with the\n     * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category String\n     * @param {string} string The string to convert.\n     * @param {number} [radix=10] The radix to interpret `value` by.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.parseInt('08');\n     * // => 8\n     *\n     * _.map(['6', '08', '10'], _.parseInt);\n     * // => [6, 8, 10]\n     */\n    function parseInt(string, radix, guard) {\n      if (guard || radix == null) {\n        radix = 0;\n      } else if (radix) {\n        radix = +radix;\n      }\n      return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n    }\n\n    /**\n     * Repeats the given string `n` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to repeat.\n     * @param {number} [n=1] The number of times to repeat the string.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the repeated string.\n     * @example\n     *\n     * _.repeat('*', 3);\n     * // => '***'\n     *\n     * _.repeat('abc', 2);\n     * // => 'abcabc'\n     *\n     * _.repeat('abc', 0);\n     * // => ''\n     */\n    function repeat(string, n, guard) {\n      if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n        n = 1;\n      } else {\n        n = toInteger(n);\n      }\n      return baseRepeat(toString(string), n);\n    }\n\n    /**\n     * Replaces matches for `pattern` in `string` with `replacement`.\n     *\n     * **Note:** This method is based on\n     * [`String#replace`](https://mdn.io/String/replace).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to modify.\n     * @param {RegExp|string} pattern The pattern to replace.\n     * @param {Function|string} replacement The match replacement.\n     * @returns {string} Returns the modified string.\n     * @example\n     *\n     * _.replace('Hi Fred', 'Fred', 'Barney');\n     * // => 'Hi Barney'\n     */\n    function replace() {\n      var args = arguments,\n          string = toString(args[0]);\n\n      return args.length < 3 ? string : string.replace(args[1], args[2]);\n    }\n\n    /**\n     * Converts `string` to\n     * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the snake cased string.\n     * @example\n     *\n     * _.snakeCase('Foo Bar');\n     * // => 'foo_bar'\n     *\n     * _.snakeCase('fooBar');\n     * // => 'foo_bar'\n     *\n     * _.snakeCase('--FOO-BAR--');\n     * // => 'foo_bar'\n     */\n    var snakeCase = createCompounder(function(result, word, index) {\n      return result + (index ? '_' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Splits `string` by `separator`.\n     *\n     * **Note:** This method is based on\n     * [`String#split`](https://mdn.io/String/split).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to split.\n     * @param {RegExp|string} separator The separator pattern to split by.\n     * @param {number} [limit] The length to truncate results to.\n     * @returns {Array} Returns the string segments.\n     * @example\n     *\n     * _.split('a-b-c', '-', 2);\n     * // => ['a', 'b']\n     */\n    function split(string, separator, limit) {\n      if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n        separator = limit = undefined;\n      }\n      limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n      if (!limit) {\n        return [];\n      }\n      string = toString(string);\n      if (string && (\n            typeof separator == 'string' ||\n            (separator != null && !isRegExp(separator))\n          )) {\n        separator = baseToString(separator);\n        if (!separator && hasUnicode(string)) {\n          return castSlice(stringToArray(string), 0, limit);\n        }\n      }\n      return string.split(separator, limit);\n    }\n\n    /**\n     * Converts `string` to\n     * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.1.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the start cased string.\n     * @example\n     *\n     * _.startCase('--foo-bar--');\n     * // => 'Foo Bar'\n     *\n     * _.startCase('fooBar');\n     * // => 'Foo Bar'\n     *\n     * _.startCase('__FOO_BAR__');\n     * // => 'FOO BAR'\n     */\n    var startCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + upperFirst(word);\n    });\n\n    /**\n     * Checks if `string` starts with the given target string.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {string} [target] The string to search for.\n     * @param {number} [position=0] The position to search from.\n     * @returns {boolean} Returns `true` if `string` starts with `target`,\n     *  else `false`.\n     * @example\n     *\n     * _.startsWith('abc', 'a');\n     * // => true\n     *\n     * _.startsWith('abc', 'b');\n     * // => false\n     *\n     * _.startsWith('abc', 'b', 1);\n     * // => true\n     */\n    function startsWith(string, target, position) {\n      string = toString(string);\n      position = position == null\n        ? 0\n        : baseClamp(toInteger(position), 0, string.length);\n\n      target = baseToString(target);\n      return string.slice(position, position + target.length) == target;\n    }\n\n    /**\n     * Creates a compiled template function that can interpolate data properties\n     * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n     * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n     * properties may be accessed as free variables in the template. If a setting\n     * object is given, it takes precedence over `_.templateSettings` values.\n     *\n     * **Note:** In the development build `_.template` utilizes\n     * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n     * for easier debugging.\n     *\n     * For more information on precompiling templates see\n     * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n     *\n     * For more information on Chrome extension sandboxes see\n     * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category String\n     * @param {string} [string=''] The template string.\n     * @param {Object} [options={}] The options object.\n     * @param {RegExp} [options.escape=_.templateSettings.escape]\n     *  The HTML \"escape\" delimiter.\n     * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n     *  The \"evaluate\" delimiter.\n     * @param {Object} [options.imports=_.templateSettings.imports]\n     *  An object to import into the template as free variables.\n     * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n     *  The \"interpolate\" delimiter.\n     * @param {string} [options.sourceURL='lodash.templateSources[n]']\n     *  The sourceURL of the compiled template.\n     * @param {string} [options.variable='obj']\n     *  The data object variable name.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the compiled template function.\n     * @example\n     *\n     * // Use the \"interpolate\" delimiter to create a compiled template.\n     * var compiled = _.template('hello <%= user %>!');\n     * compiled({ 'user': 'fred' });\n     * // => 'hello fred!'\n     *\n     * // Use the HTML \"escape\" delimiter to escape data property values.\n     * var compiled = _.template('<b><%- value %></b>');\n     * compiled({ 'value': '<script>' });\n     * // => '<b>&lt;script&gt;</b>'\n     *\n     * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n     * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n     * compiled({ 'users': ['fred', 'barney'] });\n     * // => '<li>fred</li><li>barney</li>'\n     *\n     * // Use the internal `print` function in \"evaluate\" delimiters.\n     * var compiled = _.template('<% print(\"hello \" + user); %>!');\n     * compiled({ 'user': 'barney' });\n     * // => 'hello barney!'\n     *\n     * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n     * // Disable support by replacing the \"interpolate\" delimiter.\n     * var compiled = _.template('hello ${ user }!');\n     * compiled({ 'user': 'pebbles' });\n     * // => 'hello pebbles!'\n     *\n     * // Use backslashes to treat delimiters as plain text.\n     * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n     * compiled({ 'value': 'ignored' });\n     * // => '<%- value %>'\n     *\n     * // Use the `imports` option to import `jQuery` as `jq`.\n     * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n     * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n     * compiled({ 'users': ['fred', 'barney'] });\n     * // => '<li>fred</li><li>barney</li>'\n     *\n     * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n     * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n     * compiled(data);\n     * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n     *\n     * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n     * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n     * compiled.source;\n     * // => function(data) {\n     * //   var __t, __p = '';\n     * //   __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n     * //   return __p;\n     * // }\n     *\n     * // Use custom template delimiters.\n     * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n     * var compiled = _.template('hello {{ user }}!');\n     * compiled({ 'user': 'mustache' });\n     * // => 'hello mustache!'\n     *\n     * // Use the `source` property to inline compiled templates for meaningful\n     * // line numbers in error messages and stack traces.\n     * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n     *   var JST = {\\\n     *     \"main\": ' + _.template(mainText).source + '\\\n     *   };\\\n     * ');\n     */\n    function template(string, options, guard) {\n      // Based on John Resig's `tmpl` implementation\n      // (http://ejohn.org/blog/javascript-micro-templating/)\n      // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n      var settings = lodash.templateSettings;\n\n      if (guard && isIterateeCall(string, options, guard)) {\n        options = undefined;\n      }\n      string = toString(string);\n      options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n      var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n          importsKeys = keys(imports),\n          importsValues = baseValues(imports, importsKeys);\n\n      var isEscaping,\n          isEvaluating,\n          index = 0,\n          interpolate = options.interpolate || reNoMatch,\n          source = \"__p += '\";\n\n      // Compile the regexp to match each delimiter.\n      var reDelimiters = RegExp(\n        (options.escape || reNoMatch).source + '|' +\n        interpolate.source + '|' +\n        (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n        (options.evaluate || reNoMatch).source + '|$'\n      , 'g');\n\n      // Use a sourceURL for easier debugging.\n      // The sourceURL gets injected into the source that's eval-ed, so be careful\n      // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in\n      // and escape the comment, thus injecting code that gets evaled.\n      var sourceURL = '//# sourceURL=' +\n        (hasOwnProperty.call(options, 'sourceURL')\n          ? (options.sourceURL + '').replace(/\\s/g, ' ')\n          : ('lodash.templateSources[' + (++templateCounter) + ']')\n        ) + '\\n';\n\n      string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n        interpolateValue || (interpolateValue = esTemplateValue);\n\n        // Escape characters that can't be included in string literals.\n        source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n        // Replace delimiters with snippets.\n        if (escapeValue) {\n          isEscaping = true;\n          source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n        }\n        if (evaluateValue) {\n          isEvaluating = true;\n          source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n        }\n        if (interpolateValue) {\n          source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n        }\n        index = offset + match.length;\n\n        // The JS engine embedded in Adobe products needs `match` returned in\n        // order to produce the correct `offset` value.\n        return match;\n      });\n\n      source += \"';\\n\";\n\n      // If `variable` is not specified wrap a with-statement around the generated\n      // code to add the data object to the top of the scope chain.\n      var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n      if (!variable) {\n        source = 'with (obj) {\\n' + source + '\\n}\\n';\n      }\n      // Throw an error if a forbidden character was found in `variable`, to prevent\n      // potential command injection attacks.\n      else if (reForbiddenIdentifierChars.test(variable)) {\n        throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);\n      }\n\n      // Cleanup code by stripping empty strings.\n      source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n        .replace(reEmptyStringMiddle, '$1')\n        .replace(reEmptyStringTrailing, '$1;');\n\n      // Frame code as the function body.\n      source = 'function(' + (variable || 'obj') + ') {\\n' +\n        (variable\n          ? ''\n          : 'obj || (obj = {});\\n'\n        ) +\n        \"var __t, __p = ''\" +\n        (isEscaping\n           ? ', __e = _.escape'\n           : ''\n        ) +\n        (isEvaluating\n          ? ', __j = Array.prototype.join;\\n' +\n            \"function print() { __p += __j.call(arguments, '') }\\n\"\n          : ';\\n'\n        ) +\n        source +\n        'return __p\\n}';\n\n      var result = attempt(function() {\n        return Function(importsKeys, sourceURL + 'return ' + source)\n          .apply(undefined, importsValues);\n      });\n\n      // Provide the compiled function's source by its `toString` method or\n      // the `source` property as a convenience for inlining compiled templates.\n      result.source = source;\n      if (isError(result)) {\n        throw result;\n      }\n      return result;\n    }\n\n    /**\n     * Converts `string`, as a whole, to lower case just like\n     * [String#toLowerCase](https://mdn.io/toLowerCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the lower cased string.\n     * @example\n     *\n     * _.toLower('--Foo-Bar--');\n     * // => '--foo-bar--'\n     *\n     * _.toLower('fooBar');\n     * // => 'foobar'\n     *\n     * _.toLower('__FOO_BAR__');\n     * // => '__foo_bar__'\n     */\n    function toLower(value) {\n      return toString(value).toLowerCase();\n    }\n\n    /**\n     * Converts `string`, as a whole, to upper case just like\n     * [String#toUpperCase](https://mdn.io/toUpperCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the upper cased string.\n     * @example\n     *\n     * _.toUpper('--foo-bar--');\n     * // => '--FOO-BAR--'\n     *\n     * _.toUpper('fooBar');\n     * // => 'FOOBAR'\n     *\n     * _.toUpper('__foo_bar__');\n     * // => '__FOO_BAR__'\n     */\n    function toUpper(value) {\n      return toString(value).toUpperCase();\n    }\n\n    /**\n     * Removes leading and trailing whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trim('  abc  ');\n     * // => 'abc'\n     *\n     * _.trim('-_-abc-_-', '_-');\n     * // => 'abc'\n     *\n     * _.map(['  foo  ', '  bar  '], _.trim);\n     * // => ['foo', 'bar']\n     */\n    function trim(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return baseTrim(string);\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          chrSymbols = stringToArray(chars),\n          start = charsStartIndex(strSymbols, chrSymbols),\n          end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n      return castSlice(strSymbols, start, end).join('');\n    }\n\n    /**\n     * Removes trailing whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trimEnd('  abc  ');\n     * // => '  abc'\n     *\n     * _.trimEnd('-_-abc-_-', '_-');\n     * // => '-_-abc'\n     */\n    function trimEnd(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return string.slice(0, trimmedEndIndex(string) + 1);\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n      return castSlice(strSymbols, 0, end).join('');\n    }\n\n    /**\n     * Removes leading whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trimStart('  abc  ');\n     * // => 'abc  '\n     *\n     * _.trimStart('-_-abc-_-', '_-');\n     * // => 'abc-_-'\n     */\n    function trimStart(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return string.replace(reTrimStart, '');\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          start = charsStartIndex(strSymbols, stringToArray(chars));\n\n      return castSlice(strSymbols, start).join('');\n    }\n\n    /**\n     * Truncates `string` if it's longer than the given maximum string length.\n     * The last characters of the truncated string are replaced with the omission\n     * string which defaults to \"...\".\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to truncate.\n     * @param {Object} [options={}] The options object.\n     * @param {number} [options.length=30] The maximum string length.\n     * @param {string} [options.omission='...'] The string to indicate text is omitted.\n     * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n     * @returns {string} Returns the truncated string.\n     * @example\n     *\n     * _.truncate('hi-diddly-ho there, neighborino');\n     * // => 'hi-diddly-ho there, neighbo...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'length': 24,\n     *   'separator': ' '\n     * });\n     * // => 'hi-diddly-ho there,...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'length': 24,\n     *   'separator': /,? +/\n     * });\n     * // => 'hi-diddly-ho there...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'omission': ' [...]'\n     * });\n     * // => 'hi-diddly-ho there, neig [...]'\n     */\n    function truncate(string, options) {\n      var length = DEFAULT_TRUNC_LENGTH,\n          omission = DEFAULT_TRUNC_OMISSION;\n\n      if (isObject(options)) {\n        var separator = 'separator' in options ? options.separator : separator;\n        length = 'length' in options ? toInteger(options.length) : length;\n        omission = 'omission' in options ? baseToString(options.omission) : omission;\n      }\n      string = toString(string);\n\n      var strLength = string.length;\n      if (hasUnicode(string)) {\n        var strSymbols = stringToArray(string);\n        strLength = strSymbols.length;\n      }\n      if (length >= strLength) {\n        return string;\n      }\n      var end = length - stringSize(omission);\n      if (end < 1) {\n        return omission;\n      }\n      var result = strSymbols\n        ? castSlice(strSymbols, 0, end).join('')\n        : string.slice(0, end);\n\n      if (separator === undefined) {\n        return result + omission;\n      }\n      if (strSymbols) {\n        end += (result.length - end);\n      }\n      if (isRegExp(separator)) {\n        if (string.slice(end).search(separator)) {\n          var match,\n              substring = result;\n\n          if (!separator.global) {\n            separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n          }\n          separator.lastIndex = 0;\n          while ((match = separator.exec(substring))) {\n            var newEnd = match.index;\n          }\n          result = result.slice(0, newEnd === undefined ? end : newEnd);\n        }\n      } else if (string.indexOf(baseToString(separator), end) != end) {\n        var index = result.lastIndexOf(separator);\n        if (index > -1) {\n          result = result.slice(0, index);\n        }\n      }\n      return result + omission;\n    }\n\n    /**\n     * The inverse of `_.escape`; this method converts the HTML entities\n     * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to\n     * their corresponding characters.\n     *\n     * **Note:** No other HTML entities are unescaped. To unescape additional\n     * HTML entities use a third-party library like [_he_](https://mths.be/he).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.6.0\n     * @category String\n     * @param {string} [string=''] The string to unescape.\n     * @returns {string} Returns the unescaped string.\n     * @example\n     *\n     * _.unescape('fred, barney, &amp; pebbles');\n     * // => 'fred, barney, & pebbles'\n     */\n    function unescape(string) {\n      string = toString(string);\n      return (string && reHasEscapedHtml.test(string))\n        ? string.replace(reEscapedHtml, unescapeHtmlChar)\n        : string;\n    }\n\n    /**\n     * Converts `string`, as space separated words, to upper case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the upper cased string.\n     * @example\n     *\n     * _.upperCase('--foo-bar');\n     * // => 'FOO BAR'\n     *\n     * _.upperCase('fooBar');\n     * // => 'FOO BAR'\n     *\n     * _.upperCase('__foo_bar__');\n     * // => 'FOO BAR'\n     */\n    var upperCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + word.toUpperCase();\n    });\n\n    /**\n     * Converts the first character of `string` to upper case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.upperFirst('fred');\n     * // => 'Fred'\n     *\n     * _.upperFirst('FRED');\n     * // => 'FRED'\n     */\n    var upperFirst = createCaseFirst('toUpperCase');\n\n    /**\n     * Splits `string` into an array of its words.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {RegExp|string} [pattern] The pattern to match words.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the words of `string`.\n     * @example\n     *\n     * _.words('fred, barney, & pebbles');\n     * // => ['fred', 'barney', 'pebbles']\n     *\n     * _.words('fred, barney, & pebbles', /[^, ]+/g);\n     * // => ['fred', 'barney', '&', 'pebbles']\n     */\n    function words(string, pattern, guard) {\n      string = toString(string);\n      pattern = guard ? undefined : pattern;\n\n      if (pattern === undefined) {\n        return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n      }\n      return string.match(pattern) || [];\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Attempts to invoke `func`, returning either the result or the caught error\n     * object. Any additional arguments are provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Function} func The function to attempt.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {*} Returns the `func` result or error object.\n     * @example\n     *\n     * // Avoid throwing errors for invalid selectors.\n     * var elements = _.attempt(function(selector) {\n     *   return document.querySelectorAll(selector);\n     * }, '>_>');\n     *\n     * if (_.isError(elements)) {\n     *   elements = [];\n     * }\n     */\n    var attempt = baseRest(function(func, args) {\n      try {\n        return apply(func, undefined, args);\n      } catch (e) {\n        return isError(e) ? e : new Error(e);\n      }\n    });\n\n    /**\n     * Binds methods of an object to the object itself, overwriting the existing\n     * method.\n     *\n     * **Note:** This method doesn't set the \"length\" property of bound functions.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {Object} object The object to bind and assign the bound methods to.\n     * @param {...(string|string[])} methodNames The object method names to bind.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var view = {\n     *   'label': 'docs',\n     *   'click': function() {\n     *     console.log('clicked ' + this.label);\n     *   }\n     * };\n     *\n     * _.bindAll(view, ['click']);\n     * jQuery(element).on('click', view.click);\n     * // => Logs 'clicked docs' when clicked.\n     */\n    var bindAll = flatRest(function(object, methodNames) {\n      arrayEach(methodNames, function(key) {\n        key = toKey(key);\n        baseAssignValue(object, key, bind(object[key], object));\n      });\n      return object;\n    });\n\n    /**\n     * Creates a function that iterates over `pairs` and invokes the corresponding\n     * function of the first predicate to return truthy. The predicate-function\n     * pairs are invoked with the `this` binding and arguments of the created\n     * function.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {Array} pairs The predicate-function pairs.\n     * @returns {Function} Returns the new composite function.\n     * @example\n     *\n     * var func = _.cond([\n     *   [_.matches({ 'a': 1 }),           _.constant('matches A')],\n     *   [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n     *   [_.stubTrue,                      _.constant('no match')]\n     * ]);\n     *\n     * func({ 'a': 1, 'b': 2 });\n     * // => 'matches A'\n     *\n     * func({ 'a': 0, 'b': 1 });\n     * // => 'matches B'\n     *\n     * func({ 'a': '1', 'b': '2' });\n     * // => 'no match'\n     */\n    function cond(pairs) {\n      var length = pairs == null ? 0 : pairs.length,\n          toIteratee = getIteratee();\n\n      pairs = !length ? [] : arrayMap(pairs, function(pair) {\n        if (typeof pair[1] != 'function') {\n          throw new TypeError(FUNC_ERROR_TEXT);\n        }\n        return [toIteratee(pair[0]), pair[1]];\n      });\n\n      return baseRest(function(args) {\n        var index = -1;\n        while (++index < length) {\n          var pair = pairs[index];\n          if (apply(pair[0], this, args)) {\n            return apply(pair[1], this, args);\n          }\n        }\n      });\n    }\n\n    /**\n     * Creates a function that invokes the predicate properties of `source` with\n     * the corresponding property values of a given object, returning `true` if\n     * all predicates return truthy, else `false`.\n     *\n     * **Note:** The created function is equivalent to `_.conformsTo` with\n     * `source` partially applied.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 2, 'b': 1 },\n     *   { 'a': 1, 'b': 2 }\n     * ];\n     *\n     * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n     * // => [{ 'a': 1, 'b': 2 }]\n     */\n    function conforms(source) {\n      return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that returns `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Util\n     * @param {*} value The value to return from the new function.\n     * @returns {Function} Returns the new constant function.\n     * @example\n     *\n     * var objects = _.times(2, _.constant({ 'a': 1 }));\n     *\n     * console.log(objects);\n     * // => [{ 'a': 1 }, { 'a': 1 }]\n     *\n     * console.log(objects[0] === objects[1]);\n     * // => true\n     */\n    function constant(value) {\n      return function() {\n        return value;\n      };\n    }\n\n    /**\n     * Checks `value` to determine whether a default value should be returned in\n     * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n     * or `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.14.0\n     * @category Util\n     * @param {*} value The value to check.\n     * @param {*} defaultValue The default value.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * _.defaultTo(1, 10);\n     * // => 1\n     *\n     * _.defaultTo(undefined, 10);\n     * // => 10\n     */\n    function defaultTo(value, defaultValue) {\n      return (value == null || value !== value) ? defaultValue : value;\n    }\n\n    /**\n     * Creates a function that returns the result of invoking the given functions\n     * with the `this` binding of the created function, where each successive\n     * invocation is supplied the return value of the previous.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [funcs] The functions to invoke.\n     * @returns {Function} Returns the new composite function.\n     * @see _.flowRight\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var addSquare = _.flow([_.add, square]);\n     * addSquare(1, 2);\n     * // => 9\n     */\n    var flow = createFlow();\n\n    /**\n     * This method is like `_.flow` except that it creates a function that\n     * invokes the given functions from right to left.\n     *\n     * @static\n     * @since 3.0.0\n     * @memberOf _\n     * @category Util\n     * @param {...(Function|Function[])} [funcs] The functions to invoke.\n     * @returns {Function} Returns the new composite function.\n     * @see _.flow\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var addSquare = _.flowRight([square, _.add]);\n     * addSquare(1, 2);\n     * // => 9\n     */\n    var flowRight = createFlow(true);\n\n    /**\n     * This method returns the first argument it receives.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {*} value Any value.\n     * @returns {*} Returns `value`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     *\n     * console.log(_.identity(object) === object);\n     * // => true\n     */\n    function identity(value) {\n      return value;\n    }\n\n    /**\n     * Creates a function that invokes `func` with the arguments of the created\n     * function. If `func` is a property name, the created function returns the\n     * property value for a given element. If `func` is an array or object, the\n     * created function returns `true` for elements that contain the equivalent\n     * source properties, otherwise it returns `false`.\n     *\n     * @static\n     * @since 4.0.0\n     * @memberOf _\n     * @category Util\n     * @param {*} [func=_.identity] The value to convert to a callback.\n     * @returns {Function} Returns the callback.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': true },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n     * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.filter(users, _.iteratee(['user', 'fred']));\n     * // => [{ 'user': 'fred', 'age': 40 }]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.map(users, _.iteratee('user'));\n     * // => ['barney', 'fred']\n     *\n     * // Create custom iteratee shorthands.\n     * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n     *   return !_.isRegExp(func) ? iteratee(func) : function(string) {\n     *     return func.test(string);\n     *   };\n     * });\n     *\n     * _.filter(['abc', 'def'], /ef/);\n     * // => ['def']\n     */\n    function iteratee(func) {\n      return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that performs a partial deep comparison between a given\n     * object and `source`, returning `true` if the given object has equivalent\n     * property values, else `false`.\n     *\n     * **Note:** The created function is equivalent to `_.isMatch` with `source`\n     * partially applied.\n     *\n     * Partial comparisons will match empty array and empty object `source`\n     * values against any array or object value, respectively. See `_.isEqual`\n     * for a list of supported value comparisons.\n     *\n     * **Note:** Multiple values can be checked by combining several matchers\n     * using `_.overSome`\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Object} source The object of property values to match.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 1, 'b': 2, 'c': 3 },\n     *   { 'a': 4, 'b': 5, 'c': 6 }\n     * ];\n     *\n     * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n     * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n     *\n     * // Checking for several possible values\n     * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n     */\n    function matches(source) {\n      return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that performs a partial deep comparison between the\n     * value at `path` of a given object to `srcValue`, returning `true` if the\n     * object value is equivalent, else `false`.\n     *\n     * **Note:** Partial comparisons will match empty array and empty object\n     * `srcValue` values against any array or object value, respectively. See\n     * `_.isEqual` for a list of supported value comparisons.\n     *\n     * **Note:** Multiple values can be checked by combining several matchers\n     * using `_.overSome`\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Util\n     * @param {Array|string} path The path of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 1, 'b': 2, 'c': 3 },\n     *   { 'a': 4, 'b': 5, 'c': 6 }\n     * ];\n     *\n     * _.find(objects, _.matchesProperty('a', 4));\n     * // => { 'a': 4, 'b': 5, 'c': 6 }\n     *\n     * // Checking for several possible values\n     * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n     */\n    function matchesProperty(path, srcValue) {\n      return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that invokes the method at `path` of a given object.\n     * Any additional arguments are provided to the invoked method.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Util\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {Function} Returns the new invoker function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': { 'b': _.constant(2) } },\n     *   { 'a': { 'b': _.constant(1) } }\n     * ];\n     *\n     * _.map(objects, _.method('a.b'));\n     * // => [2, 1]\n     *\n     * _.map(objects, _.method(['a', 'b']));\n     * // => [2, 1]\n     */\n    var method = baseRest(function(path, args) {\n      return function(object) {\n        return baseInvoke(object, path, args);\n      };\n    });\n\n    /**\n     * The opposite of `_.method`; this method creates a function that invokes\n     * the method at a given path of `object`. Any additional arguments are\n     * provided to the invoked method.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Util\n     * @param {Object} object The object to query.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {Function} Returns the new invoker function.\n     * @example\n     *\n     * var array = _.times(3, _.constant),\n     *     object = { 'a': array, 'b': array, 'c': array };\n     *\n     * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n     * // => [2, 0]\n     *\n     * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n     * // => [2, 0]\n     */\n    var methodOf = baseRest(function(object, args) {\n      return function(path) {\n        return baseInvoke(object, path, args);\n      };\n    });\n\n    /**\n     * Adds all own enumerable string keyed function properties of a source\n     * object to the destination object. If `object` is a function, then methods\n     * are added to its prototype as well.\n     *\n     * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n     * avoid conflicts caused by modifying the original.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {Function|Object} [object=lodash] The destination object.\n     * @param {Object} source The object of functions to add.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n     * @returns {Function|Object} Returns `object`.\n     * @example\n     *\n     * function vowels(string) {\n     *   return _.filter(string, function(v) {\n     *     return /[aeiou]/i.test(v);\n     *   });\n     * }\n     *\n     * _.mixin({ 'vowels': vowels });\n     * _.vowels('fred');\n     * // => ['e']\n     *\n     * _('fred').vowels().value();\n     * // => ['e']\n     *\n     * _.mixin({ 'vowels': vowels }, { 'chain': false });\n     * _('fred').vowels();\n     * // => ['e']\n     */\n    function mixin(object, source, options) {\n      var props = keys(source),\n          methodNames = baseFunctions(source, props);\n\n      if (options == null &&\n          !(isObject(source) && (methodNames.length || !props.length))) {\n        options = source;\n        source = object;\n        object = this;\n        methodNames = baseFunctions(source, keys(source));\n      }\n      var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n          isFunc = isFunction(object);\n\n      arrayEach(methodNames, function(methodName) {\n        var func = source[methodName];\n        object[methodName] = func;\n        if (isFunc) {\n          object.prototype[methodName] = function() {\n            var chainAll = this.__chain__;\n            if (chain || chainAll) {\n              var result = object(this.__wrapped__),\n                  actions = result.__actions__ = copyArray(this.__actions__);\n\n              actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n              result.__chain__ = chainAll;\n              return result;\n            }\n            return func.apply(object, arrayPush([this.value()], arguments));\n          };\n        }\n      });\n\n      return object;\n    }\n\n    /**\n     * Reverts the `_` variable to its previous value and returns a reference to\n     * the `lodash` function.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @returns {Function} Returns the `lodash` function.\n     * @example\n     *\n     * var lodash = _.noConflict();\n     */\n    function noConflict() {\n      if (root._ === this) {\n        root._ = oldDash;\n      }\n      return this;\n    }\n\n    /**\n     * This method returns `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.3.0\n     * @category Util\n     * @example\n     *\n     * _.times(2, _.noop);\n     * // => [undefined, undefined]\n     */\n    function noop() {\n      // No operation performed.\n    }\n\n    /**\n     * Creates a function that gets the argument at index `n`. If `n` is negative,\n     * the nth argument from the end is returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {number} [n=0] The index of the argument to return.\n     * @returns {Function} Returns the new pass-thru function.\n     * @example\n     *\n     * var func = _.nthArg(1);\n     * func('a', 'b', 'c', 'd');\n     * // => 'b'\n     *\n     * var func = _.nthArg(-2);\n     * func('a', 'b', 'c', 'd');\n     * // => 'c'\n     */\n    function nthArg(n) {\n      n = toInteger(n);\n      return baseRest(function(args) {\n        return baseNth(args, n);\n      });\n    }\n\n    /**\n     * Creates a function that invokes `iteratees` with the arguments it receives\n     * and returns their results.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [iteratees=[_.identity]]\n     *  The iteratees to invoke.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.over([Math.max, Math.min]);\n     *\n     * func(1, 2, 3, 4);\n     * // => [4, 1]\n     */\n    var over = createOver(arrayMap);\n\n    /**\n     * Creates a function that checks if **all** of the `predicates` return\n     * truthy when invoked with the arguments it receives.\n     *\n     * Following shorthands are possible for providing predicates.\n     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [predicates=[_.identity]]\n     *  The predicates to check.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.overEvery([Boolean, isFinite]);\n     *\n     * func('1');\n     * // => true\n     *\n     * func(null);\n     * // => false\n     *\n     * func(NaN);\n     * // => false\n     */\n    var overEvery = createOver(arrayEvery);\n\n    /**\n     * Creates a function that checks if **any** of the `predicates` return\n     * truthy when invoked with the arguments it receives.\n     *\n     * Following shorthands are possible for providing predicates.\n     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [predicates=[_.identity]]\n     *  The predicates to check.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.overSome([Boolean, isFinite]);\n     *\n     * func('1');\n     * // => true\n     *\n     * func(null);\n     * // => true\n     *\n     * func(NaN);\n     * // => false\n     *\n     * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])\n     * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])\n     */\n    var overSome = createOver(arraySome);\n\n    /**\n     * Creates a function that returns the value at `path` of a given object.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Util\n     * @param {Array|string} path The path of the property to get.\n     * @returns {Function} Returns the new accessor function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': { 'b': 2 } },\n     *   { 'a': { 'b': 1 } }\n     * ];\n     *\n     * _.map(objects, _.property('a.b'));\n     * // => [2, 1]\n     *\n     * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n     * // => [1, 2]\n     */\n    function property(path) {\n      return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n    }\n\n    /**\n     * The opposite of `_.property`; this method creates a function that returns\n     * the value at a given path of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Object} object The object to query.\n     * @returns {Function} Returns the new accessor function.\n     * @example\n     *\n     * var array = [0, 1, 2],\n     *     object = { 'a': array, 'b': array, 'c': array };\n     *\n     * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n     * // => [2, 0]\n     *\n     * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n     * // => [2, 0]\n     */\n    function propertyOf(object) {\n      return function(path) {\n        return object == null ? undefined : baseGet(object, path);\n      };\n    }\n\n    /**\n     * Creates an array of numbers (positive and/or negative) progressing from\n     * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n     * `start` is specified without an `end` or `step`. If `end` is not specified,\n     * it's set to `start` with `start` then set to `0`.\n     *\n     * **Note:** JavaScript follows the IEEE-754 standard for resolving\n     * floating-point values which can produce unexpected results.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} [step=1] The value to increment or decrement by.\n     * @returns {Array} Returns the range of numbers.\n     * @see _.inRange, _.rangeRight\n     * @example\n     *\n     * _.range(4);\n     * // => [0, 1, 2, 3]\n     *\n     * _.range(-4);\n     * // => [0, -1, -2, -3]\n     *\n     * _.range(1, 5);\n     * // => [1, 2, 3, 4]\n     *\n     * _.range(0, 20, 5);\n     * // => [0, 5, 10, 15]\n     *\n     * _.range(0, -4, -1);\n     * // => [0, -1, -2, -3]\n     *\n     * _.range(1, 4, 0);\n     * // => [1, 1, 1]\n     *\n     * _.range(0);\n     * // => []\n     */\n    var range = createRange();\n\n    /**\n     * This method is like `_.range` except that it populates values in\n     * descending order.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} [step=1] The value to increment or decrement by.\n     * @returns {Array} Returns the range of numbers.\n     * @see _.inRange, _.range\n     * @example\n     *\n     * _.rangeRight(4);\n     * // => [3, 2, 1, 0]\n     *\n     * _.rangeRight(-4);\n     * // => [-3, -2, -1, 0]\n     *\n     * _.rangeRight(1, 5);\n     * // => [4, 3, 2, 1]\n     *\n     * _.rangeRight(0, 20, 5);\n     * // => [15, 10, 5, 0]\n     *\n     * _.rangeRight(0, -4, -1);\n     * // => [-3, -2, -1, 0]\n     *\n     * _.rangeRight(1, 4, 0);\n     * // => [1, 1, 1]\n     *\n     * _.rangeRight(0);\n     * // => []\n     */\n    var rangeRight = createRange(true);\n\n    /**\n     * This method returns a new empty array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {Array} Returns the new empty array.\n     * @example\n     *\n     * var arrays = _.times(2, _.stubArray);\n     *\n     * console.log(arrays);\n     * // => [[], []]\n     *\n     * console.log(arrays[0] === arrays[1]);\n     * // => false\n     */\n    function stubArray() {\n      return [];\n    }\n\n    /**\n     * This method returns `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {boolean} Returns `false`.\n     * @example\n     *\n     * _.times(2, _.stubFalse);\n     * // => [false, false]\n     */\n    function stubFalse() {\n      return false;\n    }\n\n    /**\n     * This method returns a new empty object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {Object} Returns the new empty object.\n     * @example\n     *\n     * var objects = _.times(2, _.stubObject);\n     *\n     * console.log(objects);\n     * // => [{}, {}]\n     *\n     * console.log(objects[0] === objects[1]);\n     * // => false\n     */\n    function stubObject() {\n      return {};\n    }\n\n    /**\n     * This method returns an empty string.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {string} Returns the empty string.\n     * @example\n     *\n     * _.times(2, _.stubString);\n     * // => ['', '']\n     */\n    function stubString() {\n      return '';\n    }\n\n    /**\n     * This method returns `true`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {boolean} Returns `true`.\n     * @example\n     *\n     * _.times(2, _.stubTrue);\n     * // => [true, true]\n     */\n    function stubTrue() {\n      return true;\n    }\n\n    /**\n     * Invokes the iteratee `n` times, returning an array of the results of\n     * each invocation. The iteratee is invoked with one argument; (index).\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {number} n The number of times to invoke `iteratee`.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the array of results.\n     * @example\n     *\n     * _.times(3, String);\n     * // => ['0', '1', '2']\n     *\n     *  _.times(4, _.constant(0));\n     * // => [0, 0, 0, 0]\n     */\n    function times(n, iteratee) {\n      n = toInteger(n);\n      if (n < 1 || n > MAX_SAFE_INTEGER) {\n        return [];\n      }\n      var index = MAX_ARRAY_LENGTH,\n          length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n      iteratee = getIteratee(iteratee);\n      n -= MAX_ARRAY_LENGTH;\n\n      var result = baseTimes(length, iteratee);\n      while (++index < n) {\n        iteratee(index);\n      }\n      return result;\n    }\n\n    /**\n     * Converts `value` to a property path array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {*} value The value to convert.\n     * @returns {Array} Returns the new property path array.\n     * @example\n     *\n     * _.toPath('a.b.c');\n     * // => ['a', 'b', 'c']\n     *\n     * _.toPath('a[0].b.c');\n     * // => ['a', '0', 'b', 'c']\n     */\n    function toPath(value) {\n      if (isArray(value)) {\n        return arrayMap(value, toKey);\n      }\n      return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n    }\n\n    /**\n     * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {string} [prefix=''] The value to prefix the ID with.\n     * @returns {string} Returns the unique ID.\n     * @example\n     *\n     * _.uniqueId('contact_');\n     * // => 'contact_104'\n     *\n     * _.uniqueId();\n     * // => '105'\n     */\n    function uniqueId(prefix) {\n      var id = ++idCounter;\n      return toString(prefix) + id;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Adds two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.4.0\n     * @category Math\n     * @param {number} augend The first number in an addition.\n     * @param {number} addend The second number in an addition.\n     * @returns {number} Returns the total.\n     * @example\n     *\n     * _.add(6, 4);\n     * // => 10\n     */\n    var add = createMathOperation(function(augend, addend) {\n      return augend + addend;\n    }, 0);\n\n    /**\n     * Computes `number` rounded up to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round up.\n     * @param {number} [precision=0] The precision to round up to.\n     * @returns {number} Returns the rounded up number.\n     * @example\n     *\n     * _.ceil(4.006);\n     * // => 5\n     *\n     * _.ceil(6.004, 2);\n     * // => 6.01\n     *\n     * _.ceil(6040, -2);\n     * // => 6100\n     */\n    var ceil = createRound('ceil');\n\n    /**\n     * Divide two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {number} dividend The first number in a division.\n     * @param {number} divisor The second number in a division.\n     * @returns {number} Returns the quotient.\n     * @example\n     *\n     * _.divide(6, 4);\n     * // => 1.5\n     */\n    var divide = createMathOperation(function(dividend, divisor) {\n      return dividend / divisor;\n    }, 1);\n\n    /**\n     * Computes `number` rounded down to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round down.\n     * @param {number} [precision=0] The precision to round down to.\n     * @returns {number} Returns the rounded down number.\n     * @example\n     *\n     * _.floor(4.006);\n     * // => 4\n     *\n     * _.floor(0.046, 2);\n     * // => 0.04\n     *\n     * _.floor(4060, -2);\n     * // => 4000\n     */\n    var floor = createRound('floor');\n\n    /**\n     * Computes the maximum value of `array`. If `array` is empty or falsey,\n     * `undefined` is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {*} Returns the maximum value.\n     * @example\n     *\n     * _.max([4, 2, 8, 6]);\n     * // => 8\n     *\n     * _.max([]);\n     * // => undefined\n     */\n    function max(array) {\n      return (array && array.length)\n        ? baseExtremum(array, identity, baseGt)\n        : undefined;\n    }\n\n    /**\n     * This method is like `_.max` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * the value is ranked. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {*} Returns the maximum value.\n     * @example\n     *\n     * var objects = [{ 'n': 1 }, { 'n': 2 }];\n     *\n     * _.maxBy(objects, function(o) { return o.n; });\n     * // => { 'n': 2 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.maxBy(objects, 'n');\n     * // => { 'n': 2 }\n     */\n    function maxBy(array, iteratee) {\n      return (array && array.length)\n        ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n        : undefined;\n    }\n\n    /**\n     * Computes the mean of the values in `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {number} Returns the mean.\n     * @example\n     *\n     * _.mean([4, 2, 8, 6]);\n     * // => 5\n     */\n    function mean(array) {\n      return baseMean(array, identity);\n    }\n\n    /**\n     * This method is like `_.mean` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the value to be averaged.\n     * The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the mean.\n     * @example\n     *\n     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n     *\n     * _.meanBy(objects, function(o) { return o.n; });\n     * // => 5\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.meanBy(objects, 'n');\n     * // => 5\n     */\n    function meanBy(array, iteratee) {\n      return baseMean(array, getIteratee(iteratee, 2));\n    }\n\n    /**\n     * Computes the minimum value of `array`. If `array` is empty or falsey,\n     * `undefined` is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {*} Returns the minimum value.\n     * @example\n     *\n     * _.min([4, 2, 8, 6]);\n     * // => 2\n     *\n     * _.min([]);\n     * // => undefined\n     */\n    function min(array) {\n      return (array && array.length)\n        ? baseExtremum(array, identity, baseLt)\n        : undefined;\n    }\n\n    /**\n     * This method is like `_.min` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * the value is ranked. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {*} Returns the minimum value.\n     * @example\n     *\n     * var objects = [{ 'n': 1 }, { 'n': 2 }];\n     *\n     * _.minBy(objects, function(o) { return o.n; });\n     * // => { 'n': 1 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.minBy(objects, 'n');\n     * // => { 'n': 1 }\n     */\n    function minBy(array, iteratee) {\n      return (array && array.length)\n        ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n        : undefined;\n    }\n\n    /**\n     * Multiply two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {number} multiplier The first number in a multiplication.\n     * @param {number} multiplicand The second number in a multiplication.\n     * @returns {number} Returns the product.\n     * @example\n     *\n     * _.multiply(6, 4);\n     * // => 24\n     */\n    var multiply = createMathOperation(function(multiplier, multiplicand) {\n      return multiplier * multiplicand;\n    }, 1);\n\n    /**\n     * Computes `number` rounded to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round.\n     * @param {number} [precision=0] The precision to round to.\n     * @returns {number} Returns the rounded number.\n     * @example\n     *\n     * _.round(4.006);\n     * // => 4\n     *\n     * _.round(4.006, 2);\n     * // => 4.01\n     *\n     * _.round(4060, -2);\n     * // => 4100\n     */\n    var round = createRound('round');\n\n    /**\n     * Subtract two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {number} minuend The first number in a subtraction.\n     * @param {number} subtrahend The second number in a subtraction.\n     * @returns {number} Returns the difference.\n     * @example\n     *\n     * _.subtract(6, 4);\n     * // => 2\n     */\n    var subtract = createMathOperation(function(minuend, subtrahend) {\n      return minuend - subtrahend;\n    }, 0);\n\n    /**\n     * Computes the sum of the values in `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.4.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {number} Returns the sum.\n     * @example\n     *\n     * _.sum([4, 2, 8, 6]);\n     * // => 20\n     */\n    function sum(array) {\n      return (array && array.length)\n        ? baseSum(array, identity)\n        : 0;\n    }\n\n    /**\n     * This method is like `_.sum` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the value to be summed.\n     * The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the sum.\n     * @example\n     *\n     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n     *\n     * _.sumBy(objects, function(o) { return o.n; });\n     * // => 20\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sumBy(objects, 'n');\n     * // => 20\n     */\n    function sumBy(array, iteratee) {\n      return (array && array.length)\n        ? baseSum(array, getIteratee(iteratee, 2))\n        : 0;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    // Add methods that return wrapped values in chain sequences.\n    lodash.after = after;\n    lodash.ary = ary;\n    lodash.assign = assign;\n    lodash.assignIn = assignIn;\n    lodash.assignInWith = assignInWith;\n    lodash.assignWith = assignWith;\n    lodash.at = at;\n    lodash.before = before;\n    lodash.bind = bind;\n    lodash.bindAll = bindAll;\n    lodash.bindKey = bindKey;\n    lodash.castArray = castArray;\n    lodash.chain = chain;\n    lodash.chunk = chunk;\n    lodash.compact = compact;\n    lodash.concat = concat;\n    lodash.cond = cond;\n    lodash.conforms = conforms;\n    lodash.constant = constant;\n    lodash.countBy = countBy;\n    lodash.create = create;\n    lodash.curry = curry;\n    lodash.curryRight = curryRight;\n    lodash.debounce = debounce;\n    lodash.defaults = defaults;\n    lodash.defaultsDeep = defaultsDeep;\n    lodash.defer = defer;\n    lodash.delay = delay;\n    lodash.difference = difference;\n    lodash.differenceBy = differenceBy;\n    lodash.differenceWith = differenceWith;\n    lodash.drop = drop;\n    lodash.dropRight = dropRight;\n    lodash.dropRightWhile = dropRightWhile;\n    lodash.dropWhile = dropWhile;\n    lodash.fill = fill;\n    lodash.filter = filter;\n    lodash.flatMap = flatMap;\n    lodash.flatMapDeep = flatMapDeep;\n    lodash.flatMapDepth = flatMapDepth;\n    lodash.flatten = flatten;\n    lodash.flattenDeep = flattenDeep;\n    lodash.flattenDepth = flattenDepth;\n    lodash.flip = flip;\n    lodash.flow = flow;\n    lodash.flowRight = flowRight;\n    lodash.fromPairs = fromPairs;\n    lodash.functions = functions;\n    lodash.functionsIn = functionsIn;\n    lodash.groupBy = groupBy;\n    lodash.initial = initial;\n    lodash.intersection = intersection;\n    lodash.intersectionBy = intersectionBy;\n    lodash.intersectionWith = intersectionWith;\n    lodash.invert = invert;\n    lodash.invertBy = invertBy;\n    lodash.invokeMap = invokeMap;\n    lodash.iteratee = iteratee;\n    lodash.keyBy = keyBy;\n    lodash.keys = keys;\n    lodash.keysIn = keysIn;\n    lodash.map = map;\n    lodash.mapKeys = mapKeys;\n    lodash.mapValues = mapValues;\n    lodash.matches = matches;\n    lodash.matchesProperty = matchesProperty;\n    lodash.memoize = memoize;\n    lodash.merge = merge;\n    lodash.mergeWith = mergeWith;\n    lodash.method = method;\n    lodash.methodOf = methodOf;\n    lodash.mixin = mixin;\n    lodash.negate = negate;\n    lodash.nthArg = nthArg;\n    lodash.omit = omit;\n    lodash.omitBy = omitBy;\n    lodash.once = once;\n    lodash.orderBy = orderBy;\n    lodash.over = over;\n    lodash.overArgs = overArgs;\n    lodash.overEvery = overEvery;\n    lodash.overSome = overSome;\n    lodash.partial = partial;\n    lodash.partialRight = partialRight;\n    lodash.partition = partition;\n    lodash.pick = pick;\n    lodash.pickBy = pickBy;\n    lodash.property = property;\n    lodash.propertyOf = propertyOf;\n    lodash.pull = pull;\n    lodash.pullAll = pullAll;\n    lodash.pullAllBy = pullAllBy;\n    lodash.pullAllWith = pullAllWith;\n    lodash.pullAt = pullAt;\n    lodash.range = range;\n    lodash.rangeRight = rangeRight;\n    lodash.rearg = rearg;\n    lodash.reject = reject;\n    lodash.remove = remove;\n    lodash.rest = rest;\n    lodash.reverse = reverse;\n    lodash.sampleSize = sampleSize;\n    lodash.set = set;\n    lodash.setWith = setWith;\n    lodash.shuffle = shuffle;\n    lodash.slice = slice;\n    lodash.sortBy = sortBy;\n    lodash.sortedUniq = sortedUniq;\n    lodash.sortedUniqBy = sortedUniqBy;\n    lodash.split = split;\n    lodash.spread = spread;\n    lodash.tail = tail;\n    lodash.take = take;\n    lodash.takeRight = takeRight;\n    lodash.takeRightWhile = takeRightWhile;\n    lodash.takeWhile = takeWhile;\n    lodash.tap = tap;\n    lodash.throttle = throttle;\n    lodash.thru = thru;\n    lodash.toArray = toArray;\n    lodash.toPairs = toPairs;\n    lodash.toPairsIn = toPairsIn;\n    lodash.toPath = toPath;\n    lodash.toPlainObject = toPlainObject;\n    lodash.transform = transform;\n    lodash.unary = unary;\n    lodash.union = union;\n    lodash.unionBy = unionBy;\n    lodash.unionWith = unionWith;\n    lodash.uniq = uniq;\n    lodash.uniqBy = uniqBy;\n    lodash.uniqWith = uniqWith;\n    lodash.unset = unset;\n    lodash.unzip = unzip;\n    lodash.unzipWith = unzipWith;\n    lodash.update = update;\n    lodash.updateWith = updateWith;\n    lodash.values = values;\n    lodash.valuesIn = valuesIn;\n    lodash.without = without;\n    lodash.words = words;\n    lodash.wrap = wrap;\n    lodash.xor = xor;\n    lodash.xorBy = xorBy;\n    lodash.xorWith = xorWith;\n    lodash.zip = zip;\n    lodash.zipObject = zipObject;\n    lodash.zipObjectDeep = zipObjectDeep;\n    lodash.zipWith = zipWith;\n\n    // Add aliases.\n    lodash.entries = toPairs;\n    lodash.entriesIn = toPairsIn;\n    lodash.extend = assignIn;\n    lodash.extendWith = assignInWith;\n\n    // Add methods to `lodash.prototype`.\n    mixin(lodash, lodash);\n\n    /*------------------------------------------------------------------------*/\n\n    // Add methods that return unwrapped values in chain sequences.\n    lodash.add = add;\n    lodash.attempt = attempt;\n    lodash.camelCase = camelCase;\n    lodash.capitalize = capitalize;\n    lodash.ceil = ceil;\n    lodash.clamp = clamp;\n    lodash.clone = clone;\n    lodash.cloneDeep = cloneDeep;\n    lodash.cloneDeepWith = cloneDeepWith;\n    lodash.cloneWith = cloneWith;\n    lodash.conformsTo = conformsTo;\n    lodash.deburr = deburr;\n    lodash.defaultTo = defaultTo;\n    lodash.divide = divide;\n    lodash.endsWith = endsWith;\n    lodash.eq = eq;\n    lodash.escape = escape;\n    lodash.escapeRegExp = escapeRegExp;\n    lodash.every = every;\n    lodash.find = find;\n    lodash.findIndex = findIndex;\n    lodash.findKey = findKey;\n    lodash.findLast = findLast;\n    lodash.findLastIndex = findLastIndex;\n    lodash.findLastKey = findLastKey;\n    lodash.floor = floor;\n    lodash.forEach = forEach;\n    lodash.forEachRight = forEachRight;\n    lodash.forIn = forIn;\n    lodash.forInRight = forInRight;\n    lodash.forOwn = forOwn;\n    lodash.forOwnRight = forOwnRight;\n    lodash.get = get;\n    lodash.gt = gt;\n    lodash.gte = gte;\n    lodash.has = has;\n    lodash.hasIn = hasIn;\n    lodash.head = head;\n    lodash.identity = identity;\n    lodash.includes = includes;\n    lodash.indexOf = indexOf;\n    lodash.inRange = inRange;\n    lodash.invoke = invoke;\n    lodash.isArguments = isArguments;\n    lodash.isArray = isArray;\n    lodash.isArrayBuffer = isArrayBuffer;\n    lodash.isArrayLike = isArrayLike;\n    lodash.isArrayLikeObject = isArrayLikeObject;\n    lodash.isBoolean = isBoolean;\n    lodash.isBuffer = isBuffer;\n    lodash.isDate = isDate;\n    lodash.isElement = isElement;\n    lodash.isEmpty = isEmpty;\n    lodash.isEqual = isEqual;\n    lodash.isEqualWith = isEqualWith;\n    lodash.isError = isError;\n    lodash.isFinite = isFinite;\n    lodash.isFunction = isFunction;\n    lodash.isInteger = isInteger;\n    lodash.isLength = isLength;\n    lodash.isMap = isMap;\n    lodash.isMatch = isMatch;\n    lodash.isMatchWith = isMatchWith;\n    lodash.isNaN = isNaN;\n    lodash.isNative = isNative;\n    lodash.isNil = isNil;\n    lodash.isNull = isNull;\n    lodash.isNumber = isNumber;\n    lodash.isObject = isObject;\n    lodash.isObjectLike = isObjectLike;\n    lodash.isPlainObject = isPlainObject;\n    lodash.isRegExp = isRegExp;\n    lodash.isSafeInteger = isSafeInteger;\n    lodash.isSet = isSet;\n    lodash.isString = isString;\n    lodash.isSymbol = isSymbol;\n    lodash.isTypedArray = isTypedArray;\n    lodash.isUndefined = isUndefined;\n    lodash.isWeakMap = isWeakMap;\n    lodash.isWeakSet = isWeakSet;\n    lodash.join = join;\n    lodash.kebabCase = kebabCase;\n    lodash.last = last;\n    lodash.lastIndexOf = lastIndexOf;\n    lodash.lowerCase = lowerCase;\n    lodash.lowerFirst = lowerFirst;\n    lodash.lt = lt;\n    lodash.lte = lte;\n    lodash.max = max;\n    lodash.maxBy = maxBy;\n    lodash.mean = mean;\n    lodash.meanBy = meanBy;\n    lodash.min = min;\n    lodash.minBy = minBy;\n    lodash.stubArray = stubArray;\n    lodash.stubFalse = stubFalse;\n    lodash.stubObject = stubObject;\n    lodash.stubString = stubString;\n    lodash.stubTrue = stubTrue;\n    lodash.multiply = multiply;\n    lodash.nth = nth;\n    lodash.noConflict = noConflict;\n    lodash.noop = noop;\n    lodash.now = now;\n    lodash.pad = pad;\n    lodash.padEnd = padEnd;\n    lodash.padStart = padStart;\n    lodash.parseInt = parseInt;\n    lodash.random = random;\n    lodash.reduce = reduce;\n    lodash.reduceRight = reduceRight;\n    lodash.repeat = repeat;\n    lodash.replace = replace;\n    lodash.result = result;\n    lodash.round = round;\n    lodash.runInContext = runInContext;\n    lodash.sample = sample;\n    lodash.size = size;\n    lodash.snakeCase = snakeCase;\n    lodash.some = some;\n    lodash.sortedIndex = sortedIndex;\n    lodash.sortedIndexBy = sortedIndexBy;\n    lodash.sortedIndexOf = sortedIndexOf;\n    lodash.sortedLastIndex = sortedLastIndex;\n    lodash.sortedLastIndexBy = sortedLastIndexBy;\n    lodash.sortedLastIndexOf = sortedLastIndexOf;\n    lodash.startCase = startCase;\n    lodash.startsWith = startsWith;\n    lodash.subtract = subtract;\n    lodash.sum = sum;\n    lodash.sumBy = sumBy;\n    lodash.template = template;\n    lodash.times = times;\n    lodash.toFinite = toFinite;\n    lodash.toInteger = toInteger;\n    lodash.toLength = toLength;\n    lodash.toLower = toLower;\n    lodash.toNumber = toNumber;\n    lodash.toSafeInteger = toSafeInteger;\n    lodash.toString = toString;\n    lodash.toUpper = toUpper;\n    lodash.trim = trim;\n    lodash.trimEnd = trimEnd;\n    lodash.trimStart = trimStart;\n    lodash.truncate = truncate;\n    lodash.unescape = unescape;\n    lodash.uniqueId = uniqueId;\n    lodash.upperCase = upperCase;\n    lodash.upperFirst = upperFirst;\n\n    // Add aliases.\n    lodash.each = forEach;\n    lodash.eachRight = forEachRight;\n    lodash.first = head;\n\n    mixin(lodash, (function() {\n      var source = {};\n      baseForOwn(lodash, function(func, methodName) {\n        if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n          source[methodName] = func;\n        }\n      });\n      return source;\n    }()), { 'chain': false });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The semantic version number.\n     *\n     * @static\n     * @memberOf _\n     * @type {string}\n     */\n    lodash.VERSION = VERSION;\n\n    // Assign default placeholders.\n    arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n      lodash[methodName].placeholder = lodash;\n    });\n\n    // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n    arrayEach(['drop', 'take'], function(methodName, index) {\n      LazyWrapper.prototype[methodName] = function(n) {\n        n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n        var result = (this.__filtered__ && !index)\n          ? new LazyWrapper(this)\n          : this.clone();\n\n        if (result.__filtered__) {\n          result.__takeCount__ = nativeMin(n, result.__takeCount__);\n        } else {\n          result.__views__.push({\n            'size': nativeMin(n, MAX_ARRAY_LENGTH),\n            'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n          });\n        }\n        return result;\n      };\n\n      LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n        return this.reverse()[methodName](n).reverse();\n      };\n    });\n\n    // Add `LazyWrapper` methods that accept an `iteratee` value.\n    arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n      var type = index + 1,\n          isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n      LazyWrapper.prototype[methodName] = function(iteratee) {\n        var result = this.clone();\n        result.__iteratees__.push({\n          'iteratee': getIteratee(iteratee, 3),\n          'type': type\n        });\n        result.__filtered__ = result.__filtered__ || isFilter;\n        return result;\n      };\n    });\n\n    // Add `LazyWrapper` methods for `_.head` and `_.last`.\n    arrayEach(['head', 'last'], function(methodName, index) {\n      var takeName = 'take' + (index ? 'Right' : '');\n\n      LazyWrapper.prototype[methodName] = function() {\n        return this[takeName](1).value()[0];\n      };\n    });\n\n    // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n    arrayEach(['initial', 'tail'], function(methodName, index) {\n      var dropName = 'drop' + (index ? '' : 'Right');\n\n      LazyWrapper.prototype[methodName] = function() {\n        return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n      };\n    });\n\n    LazyWrapper.prototype.compact = function() {\n      return this.filter(identity);\n    };\n\n    LazyWrapper.prototype.find = function(predicate) {\n      return this.filter(predicate).head();\n    };\n\n    LazyWrapper.prototype.findLast = function(predicate) {\n      return this.reverse().find(predicate);\n    };\n\n    LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n      if (typeof path == 'function') {\n        return new LazyWrapper(this);\n      }\n      return this.map(function(value) {\n        return baseInvoke(value, path, args);\n      });\n    });\n\n    LazyWrapper.prototype.reject = function(predicate) {\n      return this.filter(negate(getIteratee(predicate)));\n    };\n\n    LazyWrapper.prototype.slice = function(start, end) {\n      start = toInteger(start);\n\n      var result = this;\n      if (result.__filtered__ && (start > 0 || end < 0)) {\n        return new LazyWrapper(result);\n      }\n      if (start < 0) {\n        result = result.takeRight(-start);\n      } else if (start) {\n        result = result.drop(start);\n      }\n      if (end !== undefined) {\n        end = toInteger(end);\n        result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n      }\n      return result;\n    };\n\n    LazyWrapper.prototype.takeRightWhile = function(predicate) {\n      return this.reverse().takeWhile(predicate).reverse();\n    };\n\n    LazyWrapper.prototype.toArray = function() {\n      return this.take(MAX_ARRAY_LENGTH);\n    };\n\n    // Add `LazyWrapper` methods to `lodash.prototype`.\n    baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n      var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n          isTaker = /^(?:head|last)$/.test(methodName),\n          lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n          retUnwrapped = isTaker || /^find/.test(methodName);\n\n      if (!lodashFunc) {\n        return;\n      }\n      lodash.prototype[methodName] = function() {\n        var value = this.__wrapped__,\n            args = isTaker ? [1] : arguments,\n            isLazy = value instanceof LazyWrapper,\n            iteratee = args[0],\n            useLazy = isLazy || isArray(value);\n\n        var interceptor = function(value) {\n          var result = lodashFunc.apply(lodash, arrayPush([value], args));\n          return (isTaker && chainAll) ? result[0] : result;\n        };\n\n        if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n          // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n          isLazy = useLazy = false;\n        }\n        var chainAll = this.__chain__,\n            isHybrid = !!this.__actions__.length,\n            isUnwrapped = retUnwrapped && !chainAll,\n            onlyLazy = isLazy && !isHybrid;\n\n        if (!retUnwrapped && useLazy) {\n          value = onlyLazy ? value : new LazyWrapper(this);\n          var result = func.apply(value, args);\n          result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n          return new LodashWrapper(result, chainAll);\n        }\n        if (isUnwrapped && onlyLazy) {\n          return func.apply(this, args);\n        }\n        result = this.thru(interceptor);\n        return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n      };\n    });\n\n    // Add `Array` methods to `lodash.prototype`.\n    arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n      var func = arrayProto[methodName],\n          chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n          retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n      lodash.prototype[methodName] = function() {\n        var args = arguments;\n        if (retUnwrapped && !this.__chain__) {\n          var value = this.value();\n          return func.apply(isArray(value) ? value : [], args);\n        }\n        return this[chainName](function(value) {\n          return func.apply(isArray(value) ? value : [], args);\n        });\n      };\n    });\n\n    // Map minified method names to their real names.\n    baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n      var lodashFunc = lodash[methodName];\n      if (lodashFunc) {\n        var key = lodashFunc.name + '';\n        if (!hasOwnProperty.call(realNames, key)) {\n          realNames[key] = [];\n        }\n        realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n      }\n    });\n\n    realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n      'name': 'wrapper',\n      'func': undefined\n    }];\n\n    // Add methods to `LazyWrapper`.\n    LazyWrapper.prototype.clone = lazyClone;\n    LazyWrapper.prototype.reverse = lazyReverse;\n    LazyWrapper.prototype.value = lazyValue;\n\n    // Add chain sequence methods to the `lodash` wrapper.\n    lodash.prototype.at = wrapperAt;\n    lodash.prototype.chain = wrapperChain;\n    lodash.prototype.commit = wrapperCommit;\n    lodash.prototype.next = wrapperNext;\n    lodash.prototype.plant = wrapperPlant;\n    lodash.prototype.reverse = wrapperReverse;\n    lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n    // Add lazy aliases.\n    lodash.prototype.first = lodash.prototype.head;\n\n    if (symIterator) {\n      lodash.prototype[symIterator] = wrapperToIterator;\n    }\n    return lodash;\n  });\n\n  /*--------------------------------------------------------------------------*/\n\n  // Export lodash.\n  var _ = runInContext();\n\n  // Some AMD build optimizers, like r.js, check for condition patterns like:\n  if (true) {\n    // Expose Lodash on the global object to prevent errors when Lodash is\n    // loaded by a script tag in the presence of an AMD loader.\n    // See http://requirejs.org/docs/errors.html#mismatch for more details.\n    // Use `_.noConflict` to remove Lodash from the global object.\n    root._ = _;\n\n    // Define as an anonymous module so, through path mapping, it can be\n    // referenced as the \"underscore\" module.\n    !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {\n      return _;\n    }).call(exports, __webpack_require__, exports, module),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n  }\n  // Check for `exports` after `define` in case a build optimizer adds it.\n  else {}\n}.call(this));\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/lodash.js?")},"./node_modules/lodash/stubArray.js":
/*!******************************************!*\
  !*** ./node_modules/lodash/stubArray.js ***!
  \******************************************/module=>{eval("/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = stubArray;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/stubArray.js?")},"./node_modules/lodash/stubFalse.js":
/*!******************************************!*\
  !*** ./node_modules/lodash/stubFalse.js ***!
  \******************************************/module=>{eval("/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/stubFalse.js?")},"./node_modules/lodash/toString.js":
/*!*****************************************!*\
  !*** ./node_modules/lodash/toString.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var baseToString = __webpack_require__(/*! ./_baseToString */ \"./node_modules/lodash/_baseToString.js\");\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lodash/toString.js?")},"./node_modules/long/src/long.js":
/*!***************************************!*\
  !*** ./node_modules/long/src/long.js ***!
  \***************************************/module=>{eval("module.exports = Long;\r\n\r\n/**\r\n * wasm optimizations, to do native i64 multiplication and divide\r\n */\r\nvar wasm = null;\r\n\r\ntry {\r\n  wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([\r\n    0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11\r\n  ])), {}).exports;\r\n} catch (e) {\r\n  // no wasm support :(\r\n}\r\n\r\n/**\r\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\r\n *  See the from* functions below for more convenient ways of constructing Longs.\r\n * @exports Long\r\n * @class A Long class for representing a 64 bit two's-complement integer value.\r\n * @param {number} low The low (signed) 32 bits of the long\r\n * @param {number} high The high (signed) 32 bits of the long\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @constructor\r\n */\r\nfunction Long(low, high, unsigned) {\r\n\r\n    /**\r\n     * The low 32 bits as a signed value.\r\n     * @type {number}\r\n     */\r\n    this.low = low | 0;\r\n\r\n    /**\r\n     * The high 32 bits as a signed value.\r\n     * @type {number}\r\n     */\r\n    this.high = high | 0;\r\n\r\n    /**\r\n     * Whether unsigned or not.\r\n     * @type {boolean}\r\n     */\r\n    this.unsigned = !!unsigned;\r\n}\r\n\r\n// The internal representation of a long is the two given signed, 32-bit values.\r\n// We use 32-bit pieces because these are the size of integers on which\r\n// Javascript performs bit-operations.  For operations like addition and\r\n// multiplication, we split each number into 16 bit pieces, which can easily be\r\n// multiplied within Javascript's floating-point representation without overflow\r\n// or change in sign.\r\n//\r\n// In the algorithms below, we frequently reduce the negative case to the\r\n// positive case by negating the input(s) and then post-processing the result.\r\n// Note that we must ALWAYS check specially whether those values are MIN_VALUE\r\n// (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\r\n// a positive number, it overflows back into a negative).  Not handling this\r\n// case would often result in infinite recursion.\r\n//\r\n// Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\r\n// methods on which they depend.\r\n\r\n/**\r\n * An indicator used to reliably determine if an object is a Long or not.\r\n * @type {boolean}\r\n * @const\r\n * @private\r\n */\r\nLong.prototype.__isLong__;\r\n\r\nObject.defineProperty(Long.prototype, \"__isLong__\", { value: true });\r\n\r\n/**\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n * @inner\r\n */\r\nfunction isLong(obj) {\r\n    return (obj && obj[\"__isLong__\"]) === true;\r\n}\r\n\r\n/**\r\n * Tests if the specified object is a Long.\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n */\r\nLong.isLong = isLong;\r\n\r\n/**\r\n * A cache of the Long representations of small integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\nvar INT_CACHE = {};\r\n\r\n/**\r\n * A cache of the Long representations of small unsigned integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\nvar UINT_CACHE = {};\r\n\r\n/**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromInt(value, unsigned) {\r\n    var obj, cachedObj, cache;\r\n    if (unsigned) {\r\n        value >>>= 0;\r\n        if (cache = (0 <= value && value < 256)) {\r\n            cachedObj = UINT_CACHE[value];\r\n            if (cachedObj)\r\n                return cachedObj;\r\n        }\r\n        obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true);\r\n        if (cache)\r\n            UINT_CACHE[value] = obj;\r\n        return obj;\r\n    } else {\r\n        value |= 0;\r\n        if (cache = (-128 <= value && value < 128)) {\r\n            cachedObj = INT_CACHE[value];\r\n            if (cachedObj)\r\n                return cachedObj;\r\n        }\r\n        obj = fromBits(value, value < 0 ? -1 : 0, false);\r\n        if (cache)\r\n            INT_CACHE[value] = obj;\r\n        return obj;\r\n    }\r\n}\r\n\r\n/**\r\n * Returns a Long representing the given 32 bit integer value.\r\n * @function\r\n * @param {number} value The 32 bit integer in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromInt = fromInt;\r\n\r\n/**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromNumber(value, unsigned) {\r\n    if (isNaN(value))\r\n        return unsigned ? UZERO : ZERO;\r\n    if (unsigned) {\r\n        if (value < 0)\r\n            return UZERO;\r\n        if (value >= TWO_PWR_64_DBL)\r\n            return MAX_UNSIGNED_VALUE;\r\n    } else {\r\n        if (value <= -TWO_PWR_63_DBL)\r\n            return MIN_VALUE;\r\n        if (value + 1 >= TWO_PWR_63_DBL)\r\n            return MAX_VALUE;\r\n    }\r\n    if (value < 0)\r\n        return fromNumber(-value, unsigned).neg();\r\n    return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);\r\n}\r\n\r\n/**\r\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\r\n * @function\r\n * @param {number} value The number in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromNumber = fromNumber;\r\n\r\n/**\r\n * @param {number} lowBits\r\n * @param {number} highBits\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromBits(lowBits, highBits, unsigned) {\r\n    return new Long(lowBits, highBits, unsigned);\r\n}\r\n\r\n/**\r\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\r\n *  assumed to use 32 bits.\r\n * @function\r\n * @param {number} lowBits The low 32 bits\r\n * @param {number} highBits The high 32 bits\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromBits = fromBits;\r\n\r\n/**\r\n * @function\r\n * @param {number} base\r\n * @param {number} exponent\r\n * @returns {number}\r\n * @inner\r\n */\r\nvar pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\r\n\r\n/**\r\n * @param {string} str\r\n * @param {(boolean|number)=} unsigned\r\n * @param {number=} radix\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromString(str, unsigned, radix) {\r\n    if (str.length === 0)\r\n        throw Error('empty string');\r\n    if (str === \"NaN\" || str === \"Infinity\" || str === \"+Infinity\" || str === \"-Infinity\")\r\n        return ZERO;\r\n    if (typeof unsigned === 'number') {\r\n        // For goog.math.long compatibility\r\n        radix = unsigned,\r\n        unsigned = false;\r\n    } else {\r\n        unsigned = !! unsigned;\r\n    }\r\n    radix = radix || 10;\r\n    if (radix < 2 || 36 < radix)\r\n        throw RangeError('radix');\r\n\r\n    var p;\r\n    if ((p = str.indexOf('-')) > 0)\r\n        throw Error('interior hyphen');\r\n    else if (p === 0) {\r\n        return fromString(str.substring(1), unsigned, radix).neg();\r\n    }\r\n\r\n    // Do several (8) digits each time through the loop, so as to\r\n    // minimize the calls to the very expensive emulated div.\r\n    var radixToPower = fromNumber(pow_dbl(radix, 8));\r\n\r\n    var result = ZERO;\r\n    for (var i = 0; i < str.length; i += 8) {\r\n        var size = Math.min(8, str.length - i),\r\n            value = parseInt(str.substring(i, i + size), radix);\r\n        if (size < 8) {\r\n            var power = fromNumber(pow_dbl(radix, size));\r\n            result = result.mul(power).add(fromNumber(value));\r\n        } else {\r\n            result = result.mul(radixToPower);\r\n            result = result.add(fromNumber(value));\r\n        }\r\n    }\r\n    result.unsigned = unsigned;\r\n    return result;\r\n}\r\n\r\n/**\r\n * Returns a Long representation of the given string, written using the specified radix.\r\n * @function\r\n * @param {string} str The textual representation of the Long\r\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to signed\r\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromString = fromString;\r\n\r\n/**\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromValue(val, unsigned) {\r\n    if (typeof val === 'number')\r\n        return fromNumber(val, unsigned);\r\n    if (typeof val === 'string')\r\n        return fromString(val, unsigned);\r\n    // Throws for non-objects, converts non-instanceof Long:\r\n    return fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned);\r\n}\r\n\r\n/**\r\n * Converts the specified value to a Long using the appropriate from* function for its type.\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long}\r\n */\r\nLong.fromValue = fromValue;\r\n\r\n// NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\r\n// no runtime penalty for these.\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_16_DBL = 1 << 16;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_24_DBL = 1 << 24;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\r\n\r\n/**\r\n * @type {!Long}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar ZERO = fromInt(0);\r\n\r\n/**\r\n * Signed zero.\r\n * @type {!Long}\r\n */\r\nLong.ZERO = ZERO;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar UZERO = fromInt(0, true);\r\n\r\n/**\r\n * Unsigned zero.\r\n * @type {!Long}\r\n */\r\nLong.UZERO = UZERO;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar ONE = fromInt(1);\r\n\r\n/**\r\n * Signed one.\r\n * @type {!Long}\r\n */\r\nLong.ONE = ONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar UONE = fromInt(1, true);\r\n\r\n/**\r\n * Unsigned one.\r\n * @type {!Long}\r\n */\r\nLong.UONE = UONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar NEG_ONE = fromInt(-1);\r\n\r\n/**\r\n * Signed negative one.\r\n * @type {!Long}\r\n */\r\nLong.NEG_ONE = NEG_ONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false);\r\n\r\n/**\r\n * Maximum signed value.\r\n * @type {!Long}\r\n */\r\nLong.MAX_VALUE = MAX_VALUE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true);\r\n\r\n/**\r\n * Maximum unsigned value.\r\n * @type {!Long}\r\n */\r\nLong.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MIN_VALUE = fromBits(0, 0x80000000|0, false);\r\n\r\n/**\r\n * Minimum signed value.\r\n * @type {!Long}\r\n */\r\nLong.MIN_VALUE = MIN_VALUE;\r\n\r\n/**\r\n * @alias Long.prototype\r\n * @inner\r\n */\r\nvar LongPrototype = Long.prototype;\r\n\r\n/**\r\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\r\n * @returns {number}\r\n */\r\nLongPrototype.toInt = function toInt() {\r\n    return this.unsigned ? this.low >>> 0 : this.low;\r\n};\r\n\r\n/**\r\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\r\n * @returns {number}\r\n */\r\nLongPrototype.toNumber = function toNumber() {\r\n    if (this.unsigned)\r\n        return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0);\r\n    return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\r\n};\r\n\r\n/**\r\n * Converts the Long to a string written in the specified radix.\r\n * @param {number=} radix Radix (2-36), defaults to 10\r\n * @returns {string}\r\n * @override\r\n * @throws {RangeError} If `radix` is out of range\r\n */\r\nLongPrototype.toString = function toString(radix) {\r\n    radix = radix || 10;\r\n    if (radix < 2 || 36 < radix)\r\n        throw RangeError('radix');\r\n    if (this.isZero())\r\n        return '0';\r\n    if (this.isNegative()) { // Unsigned Longs are never negative\r\n        if (this.eq(MIN_VALUE)) {\r\n            // We need to change the Long value before it can be negated, so we remove\r\n            // the bottom-most digit in this base and then recurse to do the rest.\r\n            var radixLong = fromNumber(radix),\r\n                div = this.div(radixLong),\r\n                rem1 = div.mul(radixLong).sub(this);\r\n            return div.toString(radix) + rem1.toInt().toString(radix);\r\n        } else\r\n            return '-' + this.neg().toString(radix);\r\n    }\r\n\r\n    // Do several (6) digits each time through the loop, so as to\r\n    // minimize the calls to the very expensive emulated div.\r\n    var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\r\n        rem = this;\r\n    var result = '';\r\n    while (true) {\r\n        var remDiv = rem.div(radixToPower),\r\n            intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\r\n            digits = intval.toString(radix);\r\n        rem = remDiv;\r\n        if (rem.isZero())\r\n            return digits + result;\r\n        else {\r\n            while (digits.length < 6)\r\n                digits = '0' + digits;\r\n            result = '' + digits + result;\r\n        }\r\n    }\r\n};\r\n\r\n/**\r\n * Gets the high 32 bits as a signed integer.\r\n * @returns {number} Signed high bits\r\n */\r\nLongPrototype.getHighBits = function getHighBits() {\r\n    return this.high;\r\n};\r\n\r\n/**\r\n * Gets the high 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned high bits\r\n */\r\nLongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\r\n    return this.high >>> 0;\r\n};\r\n\r\n/**\r\n * Gets the low 32 bits as a signed integer.\r\n * @returns {number} Signed low bits\r\n */\r\nLongPrototype.getLowBits = function getLowBits() {\r\n    return this.low;\r\n};\r\n\r\n/**\r\n * Gets the low 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned low bits\r\n */\r\nLongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\r\n    return this.low >>> 0;\r\n};\r\n\r\n/**\r\n * Gets the number of bits needed to represent the absolute value of this Long.\r\n * @returns {number}\r\n */\r\nLongPrototype.getNumBitsAbs = function getNumBitsAbs() {\r\n    if (this.isNegative()) // Unsigned Longs are never negative\r\n        return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\r\n    var val = this.high != 0 ? this.high : this.low;\r\n    for (var bit = 31; bit > 0; bit--)\r\n        if ((val & (1 << bit)) != 0)\r\n            break;\r\n    return this.high != 0 ? bit + 33 : bit + 1;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals zero.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isZero = function isZero() {\r\n    return this.high === 0 && this.low === 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals zero. This is an alias of {@link Long#isZero}.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.eqz = LongPrototype.isZero;\r\n\r\n/**\r\n * Tests if this Long's value is negative.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isNegative = function isNegative() {\r\n    return !this.unsigned && this.high < 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is positive.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isPositive = function isPositive() {\r\n    return this.unsigned || this.high >= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is odd.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isOdd = function isOdd() {\r\n    return (this.low & 1) === 1;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is even.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isEven = function isEven() {\r\n    return (this.low & 1) === 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.equals = function equals(other) {\r\n    if (!isLong(other))\r\n        other = fromValue(other);\r\n    if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1)\r\n        return false;\r\n    return this.high === other.high && this.low === other.low;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.eq = LongPrototype.equals;\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.notEquals = function notEquals(other) {\r\n    return !this.eq(/* validates */ other);\r\n};\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.neq = LongPrototype.notEquals;\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.ne = LongPrototype.notEquals;\r\n\r\n/**\r\n * Tests if this Long's value is less than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lessThan = function lessThan(other) {\r\n    return this.comp(/* validates */ other) < 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lt = LongPrototype.lessThan;\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\r\n    return this.comp(/* validates */ other) <= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lte = LongPrototype.lessThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.le = LongPrototype.lessThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is greater than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.greaterThan = function greaterThan(other) {\r\n    return this.comp(/* validates */ other) > 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.gt = LongPrototype.greaterThan;\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\r\n    return this.comp(/* validates */ other) >= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.gte = LongPrototype.greaterThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.ge = LongPrototype.greaterThanOrEqual;\r\n\r\n/**\r\n * Compares this Long's value with the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n *  if the given one is greater\r\n */\r\nLongPrototype.compare = function compare(other) {\r\n    if (!isLong(other))\r\n        other = fromValue(other);\r\n    if (this.eq(other))\r\n        return 0;\r\n    var thisNeg = this.isNegative(),\r\n        otherNeg = other.isNegative();\r\n    if (thisNeg && !otherNeg)\r\n        return -1;\r\n    if (!thisNeg && otherNeg)\r\n        return 1;\r\n    // At this point the sign bits are the same\r\n    if (!this.unsigned)\r\n        return this.sub(other).isNegative() ? -1 : 1;\r\n    // Both are positive if at least one is unsigned\r\n    return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1;\r\n};\r\n\r\n/**\r\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n *  if the given one is greater\r\n */\r\nLongPrototype.comp = LongPrototype.compare;\r\n\r\n/**\r\n * Negates this Long's value.\r\n * @returns {!Long} Negated Long\r\n */\r\nLongPrototype.negate = function negate() {\r\n    if (!this.unsigned && this.eq(MIN_VALUE))\r\n        return MIN_VALUE;\r\n    return this.not().add(ONE);\r\n};\r\n\r\n/**\r\n * Negates this Long's value. This is an alias of {@link Long#negate}.\r\n * @function\r\n * @returns {!Long} Negated Long\r\n */\r\nLongPrototype.neg = LongPrototype.negate;\r\n\r\n/**\r\n * Returns the sum of this and the specified Long.\r\n * @param {!Long|number|string} addend Addend\r\n * @returns {!Long} Sum\r\n */\r\nLongPrototype.add = function add(addend) {\r\n    if (!isLong(addend))\r\n        addend = fromValue(addend);\r\n\r\n    // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\r\n\r\n    var a48 = this.high >>> 16;\r\n    var a32 = this.high & 0xFFFF;\r\n    var a16 = this.low >>> 16;\r\n    var a00 = this.low & 0xFFFF;\r\n\r\n    var b48 = addend.high >>> 16;\r\n    var b32 = addend.high & 0xFFFF;\r\n    var b16 = addend.low >>> 16;\r\n    var b00 = addend.low & 0xFFFF;\r\n\r\n    var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n    c00 += a00 + b00;\r\n    c16 += c00 >>> 16;\r\n    c00 &= 0xFFFF;\r\n    c16 += a16 + b16;\r\n    c32 += c16 >>> 16;\r\n    c16 &= 0xFFFF;\r\n    c32 += a32 + b32;\r\n    c48 += c32 >>> 16;\r\n    c32 &= 0xFFFF;\r\n    c48 += a48 + b48;\r\n    c48 &= 0xFFFF;\r\n    return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the difference of this and the specified Long.\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\nLongPrototype.subtract = function subtract(subtrahend) {\r\n    if (!isLong(subtrahend))\r\n        subtrahend = fromValue(subtrahend);\r\n    return this.add(subtrahend.neg());\r\n};\r\n\r\n/**\r\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\r\n * @function\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\nLongPrototype.sub = LongPrototype.subtract;\r\n\r\n/**\r\n * Returns the product of this and the specified Long.\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\nLongPrototype.multiply = function multiply(multiplier) {\r\n    if (this.isZero())\r\n        return ZERO;\r\n    if (!isLong(multiplier))\r\n        multiplier = fromValue(multiplier);\r\n\r\n    // use wasm support if present\r\n    if (wasm) {\r\n        var low = wasm.mul(this.low,\r\n                           this.high,\r\n                           multiplier.low,\r\n                           multiplier.high);\r\n        return fromBits(low, wasm.get_high(), this.unsigned);\r\n    }\r\n\r\n    if (multiplier.isZero())\r\n        return ZERO;\r\n    if (this.eq(MIN_VALUE))\r\n        return multiplier.isOdd() ? MIN_VALUE : ZERO;\r\n    if (multiplier.eq(MIN_VALUE))\r\n        return this.isOdd() ? MIN_VALUE : ZERO;\r\n\r\n    if (this.isNegative()) {\r\n        if (multiplier.isNegative())\r\n            return this.neg().mul(multiplier.neg());\r\n        else\r\n            return this.neg().mul(multiplier).neg();\r\n    } else if (multiplier.isNegative())\r\n        return this.mul(multiplier.neg()).neg();\r\n\r\n    // If both longs are small, use float multiplication\r\n    if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))\r\n        return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);\r\n\r\n    // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\r\n    // We can skip products that would overflow.\r\n\r\n    var a48 = this.high >>> 16;\r\n    var a32 = this.high & 0xFFFF;\r\n    var a16 = this.low >>> 16;\r\n    var a00 = this.low & 0xFFFF;\r\n\r\n    var b48 = multiplier.high >>> 16;\r\n    var b32 = multiplier.high & 0xFFFF;\r\n    var b16 = multiplier.low >>> 16;\r\n    var b00 = multiplier.low & 0xFFFF;\r\n\r\n    var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n    c00 += a00 * b00;\r\n    c16 += c00 >>> 16;\r\n    c00 &= 0xFFFF;\r\n    c16 += a16 * b00;\r\n    c32 += c16 >>> 16;\r\n    c16 &= 0xFFFF;\r\n    c16 += a00 * b16;\r\n    c32 += c16 >>> 16;\r\n    c16 &= 0xFFFF;\r\n    c32 += a32 * b00;\r\n    c48 += c32 >>> 16;\r\n    c32 &= 0xFFFF;\r\n    c32 += a16 * b16;\r\n    c48 += c32 >>> 16;\r\n    c32 &= 0xFFFF;\r\n    c32 += a00 * b32;\r\n    c48 += c32 >>> 16;\r\n    c32 &= 0xFFFF;\r\n    c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\r\n    c48 &= 0xFFFF;\r\n    return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\r\n * @function\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\nLongPrototype.mul = LongPrototype.multiply;\r\n\r\n/**\r\n * Returns this Long divided by the specified. The result is signed if this Long is signed or\r\n *  unsigned if this Long is unsigned.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\nLongPrototype.divide = function divide(divisor) {\r\n    if (!isLong(divisor))\r\n        divisor = fromValue(divisor);\r\n    if (divisor.isZero())\r\n        throw Error('division by zero');\r\n\r\n    // use wasm support if present\r\n    if (wasm) {\r\n        // guard against signed division overflow: the largest\r\n        // negative number / -1 would be 1 larger than the largest\r\n        // positive number, due to two's complement.\r\n        if (!this.unsigned &&\r\n            this.high === -0x80000000 &&\r\n            divisor.low === -1 && divisor.high === -1) {\r\n            // be consistent with non-wasm code path\r\n            return this;\r\n        }\r\n        var low = (this.unsigned ? wasm.div_u : wasm.div_s)(\r\n            this.low,\r\n            this.high,\r\n            divisor.low,\r\n            divisor.high\r\n        );\r\n        return fromBits(low, wasm.get_high(), this.unsigned);\r\n    }\r\n\r\n    if (this.isZero())\r\n        return this.unsigned ? UZERO : ZERO;\r\n    var approx, rem, res;\r\n    if (!this.unsigned) {\r\n        // This section is only relevant for signed longs and is derived from the\r\n        // closure library as a whole.\r\n        if (this.eq(MIN_VALUE)) {\r\n            if (divisor.eq(ONE) || divisor.eq(NEG_ONE))\r\n                return MIN_VALUE;  // recall that -MIN_VALUE == MIN_VALUE\r\n            else if (divisor.eq(MIN_VALUE))\r\n                return ONE;\r\n            else {\r\n                // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\r\n                var halfThis = this.shr(1);\r\n                approx = halfThis.div(divisor).shl(1);\r\n                if (approx.eq(ZERO)) {\r\n                    return divisor.isNegative() ? ONE : NEG_ONE;\r\n                } else {\r\n                    rem = this.sub(divisor.mul(approx));\r\n                    res = approx.add(rem.div(divisor));\r\n                    return res;\r\n                }\r\n            }\r\n        } else if (divisor.eq(MIN_VALUE))\r\n            return this.unsigned ? UZERO : ZERO;\r\n        if (this.isNegative()) {\r\n            if (divisor.isNegative())\r\n                return this.neg().div(divisor.neg());\r\n            return this.neg().div(divisor).neg();\r\n        } else if (divisor.isNegative())\r\n            return this.div(divisor.neg()).neg();\r\n        res = ZERO;\r\n    } else {\r\n        // The algorithm below has not been made for unsigned longs. It's therefore\r\n        // required to take special care of the MSB prior to running it.\r\n        if (!divisor.unsigned)\r\n            divisor = divisor.toUnsigned();\r\n        if (divisor.gt(this))\r\n            return UZERO;\r\n        if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true\r\n            return UONE;\r\n        res = UZERO;\r\n    }\r\n\r\n    // Repeat the following until the remainder is less than other:  find a\r\n    // floating-point that approximates remainder / other *from below*, add this\r\n    // into the result, and subtract it from the remainder.  It is critical that\r\n    // the approximate value is less than or equal to the real value so that the\r\n    // remainder never becomes negative.\r\n    rem = this;\r\n    while (rem.gte(divisor)) {\r\n        // Approximate the result of division. This may be a little greater or\r\n        // smaller than the actual value.\r\n        approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\r\n\r\n        // We will tweak the approximate result by changing it in the 48-th digit or\r\n        // the smallest non-fractional digit, whichever is larger.\r\n        var log2 = Math.ceil(Math.log(approx) / Math.LN2),\r\n            delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48),\r\n\r\n        // Decrease the approximation until it is smaller than the remainder.  Note\r\n        // that if it is too large, the product overflows and is negative.\r\n            approxRes = fromNumber(approx),\r\n            approxRem = approxRes.mul(divisor);\r\n        while (approxRem.isNegative() || approxRem.gt(rem)) {\r\n            approx -= delta;\r\n            approxRes = fromNumber(approx, this.unsigned);\r\n            approxRem = approxRes.mul(divisor);\r\n        }\r\n\r\n        // We know the answer can't be zero... and actually, zero would cause\r\n        // infinite recursion since we would make no progress.\r\n        if (approxRes.isZero())\r\n            approxRes = ONE;\r\n\r\n        res = res.add(approxRes);\r\n        rem = rem.sub(approxRem);\r\n    }\r\n    return res;\r\n};\r\n\r\n/**\r\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\nLongPrototype.div = LongPrototype.divide;\r\n\r\n/**\r\n * Returns this Long modulo the specified.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.modulo = function modulo(divisor) {\r\n    if (!isLong(divisor))\r\n        divisor = fromValue(divisor);\r\n\r\n    // use wasm support if present\r\n    if (wasm) {\r\n        var low = (this.unsigned ? wasm.rem_u : wasm.rem_s)(\r\n            this.low,\r\n            this.high,\r\n            divisor.low,\r\n            divisor.high\r\n        );\r\n        return fromBits(low, wasm.get_high(), this.unsigned);\r\n    }\r\n\r\n    return this.sub(this.div(divisor).mul(divisor));\r\n};\r\n\r\n/**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.mod = LongPrototype.modulo;\r\n\r\n/**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.rem = LongPrototype.modulo;\r\n\r\n/**\r\n * Returns the bitwise NOT of this Long.\r\n * @returns {!Long}\r\n */\r\nLongPrototype.not = function not() {\r\n    return fromBits(~this.low, ~this.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise AND of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.and = function and(other) {\r\n    if (!isLong(other))\r\n        other = fromValue(other);\r\n    return fromBits(this.low & other.low, this.high & other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise OR of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.or = function or(other) {\r\n    if (!isLong(other))\r\n        other = fromValue(other);\r\n    return fromBits(this.low | other.low, this.high | other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise XOR of this Long and the given one.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.xor = function xor(other) {\r\n    if (!isLong(other))\r\n        other = fromValue(other);\r\n    return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits shifted to the left by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftLeft = function shiftLeft(numBits) {\r\n    if (isLong(numBits))\r\n        numBits = numBits.toInt();\r\n    if ((numBits &= 63) === 0)\r\n        return this;\r\n    else if (numBits < 32)\r\n        return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);\r\n    else\r\n        return fromBits(0, this.low << (numBits - 32), this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shl = LongPrototype.shiftLeft;\r\n\r\n/**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftRight = function shiftRight(numBits) {\r\n    if (isLong(numBits))\r\n        numBits = numBits.toInt();\r\n    if ((numBits &= 63) === 0)\r\n        return this;\r\n    else if (numBits < 32)\r\n        return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);\r\n    else\r\n        return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shr = LongPrototype.shiftRight;\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\r\n    if (isLong(numBits))\r\n        numBits = numBits.toInt();\r\n    numBits &= 63;\r\n    if (numBits === 0)\r\n        return this;\r\n    else {\r\n        var high = this.high;\r\n        if (numBits < 32) {\r\n            var low = this.low;\r\n            return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);\r\n        } else if (numBits === 32)\r\n            return fromBits(high, 0, this.unsigned);\r\n        else\r\n            return fromBits(high >>> (numBits - 32), 0, this.unsigned);\r\n    }\r\n};\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shru = LongPrototype.shiftRightUnsigned;\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shr_u = LongPrototype.shiftRightUnsigned;\r\n\r\n/**\r\n * Converts this Long to signed.\r\n * @returns {!Long} Signed long\r\n */\r\nLongPrototype.toSigned = function toSigned() {\r\n    if (!this.unsigned)\r\n        return this;\r\n    return fromBits(this.low, this.high, false);\r\n};\r\n\r\n/**\r\n * Converts this Long to unsigned.\r\n * @returns {!Long} Unsigned long\r\n */\r\nLongPrototype.toUnsigned = function toUnsigned() {\r\n    if (this.unsigned)\r\n        return this;\r\n    return fromBits(this.low, this.high, true);\r\n};\r\n\r\n/**\r\n * Converts this Long to its byte representation.\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {!Array.<number>} Byte representation\r\n */\r\nLongPrototype.toBytes = function toBytes(le) {\r\n    return le ? this.toBytesLE() : this.toBytesBE();\r\n};\r\n\r\n/**\r\n * Converts this Long to its little endian byte representation.\r\n * @returns {!Array.<number>} Little endian byte representation\r\n */\r\nLongPrototype.toBytesLE = function toBytesLE() {\r\n    var hi = this.high,\r\n        lo = this.low;\r\n    return [\r\n        lo        & 0xff,\r\n        lo >>>  8 & 0xff,\r\n        lo >>> 16 & 0xff,\r\n        lo >>> 24       ,\r\n        hi        & 0xff,\r\n        hi >>>  8 & 0xff,\r\n        hi >>> 16 & 0xff,\r\n        hi >>> 24\r\n    ];\r\n};\r\n\r\n/**\r\n * Converts this Long to its big endian byte representation.\r\n * @returns {!Array.<number>} Big endian byte representation\r\n */\r\nLongPrototype.toBytesBE = function toBytesBE() {\r\n    var hi = this.high,\r\n        lo = this.low;\r\n    return [\r\n        hi >>> 24       ,\r\n        hi >>> 16 & 0xff,\r\n        hi >>>  8 & 0xff,\r\n        hi        & 0xff,\r\n        lo >>> 24       ,\r\n        lo >>> 16 & 0xff,\r\n        lo >>>  8 & 0xff,\r\n        lo        & 0xff\r\n    ];\r\n};\r\n\r\n/**\r\n * Creates a Long from its byte representation.\r\n * @param {!Array.<number>} bytes Byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytes = function fromBytes(bytes, unsigned, le) {\r\n    return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned);\r\n};\r\n\r\n/**\r\n * Creates a Long from its little endian byte representation.\r\n * @param {!Array.<number>} bytes Little endian byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytesLE = function fromBytesLE(bytes, unsigned) {\r\n    return new Long(\r\n        bytes[0]       |\r\n        bytes[1] <<  8 |\r\n        bytes[2] << 16 |\r\n        bytes[3] << 24,\r\n        bytes[4]       |\r\n        bytes[5] <<  8 |\r\n        bytes[6] << 16 |\r\n        bytes[7] << 24,\r\n        unsigned\r\n    );\r\n};\r\n\r\n/**\r\n * Creates a Long from its big endian byte representation.\r\n * @param {!Array.<number>} bytes Big endian byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytesBE = function fromBytesBE(bytes, unsigned) {\r\n    return new Long(\r\n        bytes[4] << 24 |\r\n        bytes[5] << 16 |\r\n        bytes[6] <<  8 |\r\n        bytes[7],\r\n        bytes[0] << 24 |\r\n        bytes[1] << 16 |\r\n        bytes[2] <<  8 |\r\n        bytes[3],\r\n        unsigned\r\n    );\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./node_modules/long/src/long.js?")},"./node_modules/lowdb/adapters/Base.js":
/*!*********************************************!*\
  !*** ./node_modules/lowdb/adapters/Base.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nvar stringify = __webpack_require__(/*! ./_stringify */ "./node_modules/lowdb/adapters/_stringify.js");\n\nvar Base = function Base(source) {\n  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n      _ref$defaultValue = _ref.defaultValue,\n      defaultValue = _ref$defaultValue === undefined ? {} : _ref$defaultValue,\n      _ref$serialize = _ref.serialize,\n      serialize = _ref$serialize === undefined ? stringify : _ref$serialize,\n      _ref$deserialize = _ref.deserialize,\n      deserialize = _ref$deserialize === undefined ? JSON.parse : _ref$deserialize;\n\n  _classCallCheck(this, Base);\n\n  this.source = source;\n  this.defaultValue = defaultValue;\n  this.serialize = serialize;\n  this.deserialize = deserialize;\n};\n\nmodule.exports = Base;\n\n//# sourceURL=webpack://txadmin/./node_modules/lowdb/adapters/Base.js?')},"./node_modules/lowdb/adapters/FileAsync.js":
/*!**************************************************!*\
  !*** ./node_modules/lowdb/adapters/FileAsync.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// Not using async/await on purpose to avoid adding regenerator-runtime\n// to lowdb dependencies\nvar fs = __webpack_require__(/*! graceful-fs */ "./node_modules/graceful-fs/graceful-fs.js");\nvar pify = __webpack_require__(/*! pify */ "./node_modules/pify/index.js");\nvar steno = __webpack_require__(/*! steno */ "./node_modules/steno/index.js");\nvar Base = __webpack_require__(/*! ./Base */ "./node_modules/lowdb/adapters/Base.js");\n\nvar readFile = pify(fs.readFile);\nvar writeFile = pify(steno.writeFile);\n\nvar FileAsync = function (_Base) {\n  _inherits(FileAsync, _Base);\n\n  function FileAsync() {\n    _classCallCheck(this, FileAsync);\n\n    return _possibleConstructorReturn(this, (FileAsync.__proto__ || Object.getPrototypeOf(FileAsync)).apply(this, arguments));\n  }\n\n  _createClass(FileAsync, [{\n    key: \'read\',\n    value: function read() {\n      var _this2 = this;\n\n      // fs.exists is deprecated but not fs.existsSync\n      if (fs.existsSync(this.source)) {\n        // Read database\n        return readFile(this.source, \'utf-8\').then(function (data) {\n          // Handle blank file\n          var trimmed = data.trim();\n          return trimmed ? _this2.deserialize(trimmed) : _this2.defaultValue;\n        }).catch(function (e) {\n          if (e instanceof SyntaxError) {\n            e.message = `Malformed JSON in file: ${_this2.source}\\n${e.message}`;\n          }\n          throw e;\n        });\n      } else {\n        // Initialize\n        return writeFile(this.source, this.serialize(this.defaultValue)).then(function () {\n          return _this2.defaultValue;\n        });\n      }\n    }\n  }, {\n    key: \'write\',\n    value: function write(data) {\n      return writeFile(this.source, this.serialize(data));\n    }\n  }]);\n\n  return FileAsync;\n}(Base);\n\nmodule.exports = FileAsync;\n\n//# sourceURL=webpack://txadmin/./node_modules/lowdb/adapters/FileAsync.js?')},"./node_modules/lowdb/adapters/_stringify.js":
/*!***************************************************!*\
  !*** ./node_modules/lowdb/adapters/_stringify.js ***!
  \***************************************************/module=>{"use strict";eval("\n\n// Pretty stringify\nmodule.exports = function stringify(obj) {\n  return JSON.stringify(obj, null, 2);\n};\n\n//# sourceURL=webpack://txadmin/./node_modules/lowdb/adapters/_stringify.js?")},"./node_modules/lowdb/lib/main.js":
/*!****************************************!*\
  !*** ./node_modules/lowdb/lib/main.js ***!
  \****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar lodash = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\nvar isPromise = __webpack_require__(/*! is-promise */ \"./node_modules/is-promise/index.js\");\n\nmodule.exports = function (adapter) {\n  if (typeof adapter !== 'object') {\n    throw new Error('An adapter must be provided, see https://github.com/typicode/lowdb/#usage');\n  }\n\n  // Create a fresh copy of lodash\n  var _ = lodash.runInContext();\n  var db = _.chain({});\n\n  // Add write function to lodash\n  // Calls save before returning result\n  _.prototype.write = _.wrap(_.prototype.value, function (func) {\n    var funcRes = func.apply(this);\n    return db.write(funcRes);\n  });\n\n  function plant(state) {\n    db.__wrapped__ = state;\n    return db;\n  }\n\n  // Lowdb API\n  // Expose _ for mixins\n  db._ = _;\n\n  db.read = function () {\n    var r = adapter.read();\n    return isPromise(r) ? r.then(plant) : plant(r);\n  };\n\n  db.write = function (returnValue) {\n    var w = adapter.write(db.getState());\n    return isPromise(w) ? w.then(function () {\n      return returnValue;\n    }) : returnValue;\n  };\n\n  db.getState = function () {\n    return db.__wrapped__;\n  };\n\n  db.setState = function (state) {\n    return plant(state);\n  };\n\n  return db.read();\n};\n\n//# sourceURL=webpack://txadmin/./node_modules/lowdb/lib/main.js?")},"./node_modules/lowercase-keys/index.js":
/*!**********************************************!*\
  !*** ./node_modules/lowercase-keys/index.js ***!
  \**********************************************/module=>{"use strict";eval("\nmodule.exports = object => {\n\tconst result = {};\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tresult[key.toLowerCase()] = value;\n\t}\n\n\treturn result;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lowercase-keys/index.js?")},"./node_modules/lru-cache/index.js":
/*!*****************************************!*\
  !*** ./node_modules/lru-cache/index.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = __webpack_require__(/*! yallist */ \"./node_modules/yallist/yallist.js\")\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest.  the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node.  This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n  constructor (options) {\n    if (typeof options === 'number')\n      options = { max: options }\n\n    if (!options)\n      options = {}\n\n    if (options.max && (typeof options.max !== 'number' || options.max < 0))\n      throw new TypeError('max must be a non-negative number')\n    // Kind of weird to have a default max of Infinity, but oh well.\n    const max = this[MAX] = options.max || Infinity\n\n    const lc = options.length || naiveLength\n    this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n    this[ALLOW_STALE] = options.stale || false\n    if (options.maxAge && typeof options.maxAge !== 'number')\n      throw new TypeError('maxAge must be a number')\n    this[MAX_AGE] = options.maxAge || 0\n    this[DISPOSE] = options.dispose\n    this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n    this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n    this.reset()\n  }\n\n  // resize the cache when the max changes.\n  set max (mL) {\n    if (typeof mL !== 'number' || mL < 0)\n      throw new TypeError('max must be a non-negative number')\n\n    this[MAX] = mL || Infinity\n    trim(this)\n  }\n  get max () {\n    return this[MAX]\n  }\n\n  set allowStale (allowStale) {\n    this[ALLOW_STALE] = !!allowStale\n  }\n  get allowStale () {\n    return this[ALLOW_STALE]\n  }\n\n  set maxAge (mA) {\n    if (typeof mA !== 'number')\n      throw new TypeError('maxAge must be a non-negative number')\n\n    this[MAX_AGE] = mA\n    trim(this)\n  }\n  get maxAge () {\n    return this[MAX_AGE]\n  }\n\n  // resize the cache when the lengthCalculator changes.\n  set lengthCalculator (lC) {\n    if (typeof lC !== 'function')\n      lC = naiveLength\n\n    if (lC !== this[LENGTH_CALCULATOR]) {\n      this[LENGTH_CALCULATOR] = lC\n      this[LENGTH] = 0\n      this[LRU_LIST].forEach(hit => {\n        hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n        this[LENGTH] += hit.length\n      })\n    }\n    trim(this)\n  }\n  get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n  get length () { return this[LENGTH] }\n  get itemCount () { return this[LRU_LIST].length }\n\n  rforEach (fn, thisp) {\n    thisp = thisp || this\n    for (let walker = this[LRU_LIST].tail; walker !== null;) {\n      const prev = walker.prev\n      forEachStep(this, fn, walker, thisp)\n      walker = prev\n    }\n  }\n\n  forEach (fn, thisp) {\n    thisp = thisp || this\n    for (let walker = this[LRU_LIST].head; walker !== null;) {\n      const next = walker.next\n      forEachStep(this, fn, walker, thisp)\n      walker = next\n    }\n  }\n\n  keys () {\n    return this[LRU_LIST].toArray().map(k => k.key)\n  }\n\n  values () {\n    return this[LRU_LIST].toArray().map(k => k.value)\n  }\n\n  reset () {\n    if (this[DISPOSE] &&\n        this[LRU_LIST] &&\n        this[LRU_LIST].length) {\n      this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n    }\n\n    this[CACHE] = new Map() // hash of items by key\n    this[LRU_LIST] = new Yallist() // list of items in order of use recency\n    this[LENGTH] = 0 // length of items in the list\n  }\n\n  dump () {\n    return this[LRU_LIST].map(hit =>\n      isStale(this, hit) ? false : {\n        k: hit.key,\n        v: hit.value,\n        e: hit.now + (hit.maxAge || 0)\n      }).toArray().filter(h => h)\n  }\n\n  dumpLru () {\n    return this[LRU_LIST]\n  }\n\n  set (key, value, maxAge) {\n    maxAge = maxAge || this[MAX_AGE]\n\n    if (maxAge && typeof maxAge !== 'number')\n      throw new TypeError('maxAge must be a number')\n\n    const now = maxAge ? Date.now() : 0\n    const len = this[LENGTH_CALCULATOR](value, key)\n\n    if (this[CACHE].has(key)) {\n      if (len > this[MAX]) {\n        del(this, this[CACHE].get(key))\n        return false\n      }\n\n      const node = this[CACHE].get(key)\n      const item = node.value\n\n      // dispose of the old one before overwriting\n      // split out into 2 ifs for better coverage tracking\n      if (this[DISPOSE]) {\n        if (!this[NO_DISPOSE_ON_SET])\n          this[DISPOSE](key, item.value)\n      }\n\n      item.now = now\n      item.maxAge = maxAge\n      item.value = value\n      this[LENGTH] += len - item.length\n      item.length = len\n      this.get(key)\n      trim(this)\n      return true\n    }\n\n    const hit = new Entry(key, value, len, now, maxAge)\n\n    // oversized objects fall out of cache automatically.\n    if (hit.length > this[MAX]) {\n      if (this[DISPOSE])\n        this[DISPOSE](key, value)\n\n      return false\n    }\n\n    this[LENGTH] += hit.length\n    this[LRU_LIST].unshift(hit)\n    this[CACHE].set(key, this[LRU_LIST].head)\n    trim(this)\n    return true\n  }\n\n  has (key) {\n    if (!this[CACHE].has(key)) return false\n    const hit = this[CACHE].get(key).value\n    return !isStale(this, hit)\n  }\n\n  get (key) {\n    return get(this, key, true)\n  }\n\n  peek (key) {\n    return get(this, key, false)\n  }\n\n  pop () {\n    const node = this[LRU_LIST].tail\n    if (!node)\n      return null\n\n    del(this, node)\n    return node.value\n  }\n\n  del (key) {\n    del(this, this[CACHE].get(key))\n  }\n\n  load (arr) {\n    // reset the cache\n    this.reset()\n\n    const now = Date.now()\n    // A previous serialized cache has the most recent items first\n    for (let l = arr.length - 1; l >= 0; l--) {\n      const hit = arr[l]\n      const expiresAt = hit.e || 0\n      if (expiresAt === 0)\n        // the item was created without expiration in a non aged cache\n        this.set(hit.k, hit.v)\n      else {\n        const maxAge = expiresAt - now\n        // dont add already expired items\n        if (maxAge > 0) {\n          this.set(hit.k, hit.v, maxAge)\n        }\n      }\n    }\n  }\n\n  prune () {\n    this[CACHE].forEach((value, key) => get(this, key, false))\n  }\n}\n\nconst get = (self, key, doUse) => {\n  const node = self[CACHE].get(key)\n  if (node) {\n    const hit = node.value\n    if (isStale(self, hit)) {\n      del(self, node)\n      if (!self[ALLOW_STALE])\n        return undefined\n    } else {\n      if (doUse) {\n        if (self[UPDATE_AGE_ON_GET])\n          node.value.now = Date.now()\n        self[LRU_LIST].unshiftNode(node)\n      }\n    }\n    return hit.value\n  }\n}\n\nconst isStale = (self, hit) => {\n  if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n    return false\n\n  const diff = Date.now() - hit.now\n  return hit.maxAge ? diff > hit.maxAge\n    : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n  if (self[LENGTH] > self[MAX]) {\n    for (let walker = self[LRU_LIST].tail;\n      self[LENGTH] > self[MAX] && walker !== null;) {\n      // We know that we're about to delete this one, and also\n      // what the next least recently used key will be, so just\n      // go ahead and set it now.\n      const prev = walker.prev\n      del(self, walker)\n      walker = prev\n    }\n  }\n}\n\nconst del = (self, node) => {\n  if (node) {\n    const hit = node.value\n    if (self[DISPOSE])\n      self[DISPOSE](hit.key, hit.value)\n\n    self[LENGTH] -= hit.length\n    self[CACHE].delete(hit.key)\n    self[LRU_LIST].removeNode(node)\n  }\n}\n\nclass Entry {\n  constructor (key, value, length, now, maxAge) {\n    this.key = key\n    this.value = value\n    this.length = length\n    this.now = now\n    this.maxAge = maxAge || 0\n  }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n  let hit = node.value\n  if (isStale(self, hit)) {\n    del(self, node)\n    if (!self[ALLOW_STALE])\n      hit = undefined\n  }\n  if (hit)\n    fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n\n\n//# sourceURL=webpack://txadmin/./node_modules/lru-cache/index.js?")},"./node_modules/media-typer/index.js":
/*!*******************************************!*\
  !*** ./node_modules/media-typer/index.js ***!
  \*******************************************/(__unused_webpack_module,exports)=>{eval('/*!\n * media-typer\n * Copyright(c) 2014 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * RegExp to match *( ";" parameter ) in RFC 2616 sec 3.7\n *\n * parameter     = token "=" ( token | quoted-string )\n * token         = 1*<any CHAR except CTLs or separators>\n * separators    = "(" | ")" | "<" | ">" | "@"\n *               | "," | ";" | ":" | "\\" | <">\n *               | "/" | "[" | "]" | "?" | "="\n *               | "{" | "}" | SP | HT\n * quoted-string = ( <"> *(qdtext | quoted-pair ) <"> )\n * qdtext        = <any TEXT except <">>\n * quoted-pair   = "\\" CHAR\n * CHAR          = <any US-ASCII character (octets 0 - 127)>\n * TEXT          = <any OCTET except CTLs, but including LWS>\n * LWS           = [CRLF] 1*( SP | HT )\n * CRLF          = CR LF\n * CR            = <US-ASCII CR, carriage return (13)>\n * LF            = <US-ASCII LF, linefeed (10)>\n * SP            = <US-ASCII SP, space (32)>\n * SHT           = <US-ASCII HT, horizontal-tab (9)>\n * CTL           = <any US-ASCII control character (octets 0 - 31) and DEL (127)>\n * OCTET         = <any 8-bit sequence of data>\n */\nvar paramRegExp = /; *([!#$%&\'\\*\\+\\-\\.0-9A-Z\\^_`a-z\\|~]+) *= *("(?:[ !\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\u0020-\\u007e])*"|[!#$%&\'\\*\\+\\-\\.0-9A-Z\\^_`a-z\\|~]+) */g;\nvar textRegExp = /^[\\u0020-\\u007e\\u0080-\\u00ff]+$/\nvar tokenRegExp = /^[!#$%&\'\\*\\+\\-\\.0-9A-Z\\^_`a-z\\|~]+$/\n\n/**\n * RegExp to match quoted-pair in RFC 2616\n *\n * quoted-pair = "\\" CHAR\n * CHAR        = <any US-ASCII character (octets 0 - 127)>\n */\nvar qescRegExp = /\\\\([\\u0000-\\u007f])/g;\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 2616\n */\nvar quoteRegExp = /([\\\\"])/g;\n\n/**\n * RegExp to match type in RFC 6838\n *\n * type-name = restricted-name\n * subtype-name = restricted-name\n * restricted-name = restricted-name-first *126restricted-name-chars\n * restricted-name-first  = ALPHA / DIGIT\n * restricted-name-chars  = ALPHA / DIGIT / "!" / "#" /\n *                          "$" / "&" / "-" / "^" / "_"\n * restricted-name-chars =/ "." ; Characters before first dot always\n *                              ; specify a facet name\n * restricted-name-chars =/ "+" ; Characters after last plus always\n *                              ; specify a structured syntax suffix\n * ALPHA =  %x41-5A / %x61-7A   ; A-Z / a-z\n * DIGIT =  %x30-39             ; 0-9\n */\nvar subtypeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/\nvar typeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/\nvar typeRegExp = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/;\n\n/**\n * Module exports.\n */\n\nexports.format = format\nexports.parse = parse\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @api public\n */\n\nfunction format(obj) {\n  if (!obj || typeof obj !== \'object\') {\n    throw new TypeError(\'argument obj is required\')\n  }\n\n  var parameters = obj.parameters\n  var subtype = obj.subtype\n  var suffix = obj.suffix\n  var type = obj.type\n\n  if (!type || !typeNameRegExp.test(type)) {\n    throw new TypeError(\'invalid type\')\n  }\n\n  if (!subtype || !subtypeNameRegExp.test(subtype)) {\n    throw new TypeError(\'invalid subtype\')\n  }\n\n  // format as type/subtype\n  var string = type + \'/\' + subtype\n\n  // append +suffix\n  if (suffix) {\n    if (!typeNameRegExp.test(suffix)) {\n      throw new TypeError(\'invalid suffix\')\n    }\n\n    string += \'+\' + suffix\n  }\n\n  // append parameters\n  if (parameters && typeof parameters === \'object\') {\n    var param\n    var params = Object.keys(parameters).sort()\n\n    for (var i = 0; i < params.length; i++) {\n      param = params[i]\n\n      if (!tokenRegExp.test(param)) {\n        throw new TypeError(\'invalid parameter name\')\n      }\n\n      string += \'; \' + param + \'=\' + qstring(parameters[param])\n    }\n  }\n\n  return string\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string|object} string\n * @return {Object}\n * @api public\n */\n\nfunction parse(string) {\n  if (!string) {\n    throw new TypeError(\'argument string is required\')\n  }\n\n  // support req/res-like objects as argument\n  if (typeof string === \'object\') {\n    string = getcontenttype(string)\n  }\n\n  if (typeof string !== \'string\') {\n    throw new TypeError(\'argument string is required to be a string\')\n  }\n\n  var index = string.indexOf(\';\')\n  var type = index !== -1\n    ? string.substr(0, index)\n    : string\n\n  var key\n  var match\n  var obj = splitType(type)\n  var params = {}\n  var value\n\n  paramRegExp.lastIndex = index\n\n  while (match = paramRegExp.exec(string)) {\n    if (match.index !== index) {\n      throw new TypeError(\'invalid parameter format\')\n    }\n\n    index += match[0].length\n    key = match[1].toLowerCase()\n    value = match[2]\n\n    if (value[0] === \'"\') {\n      // remove quotes and escapes\n      value = value\n        .substr(1, value.length - 2)\n        .replace(qescRegExp, \'$1\')\n    }\n\n    params[key] = value\n  }\n\n  if (index !== -1 && index !== string.length) {\n    throw new TypeError(\'invalid parameter format\')\n  }\n\n  obj.parameters = params\n\n  return obj\n}\n\n/**\n * Get content-type from req/res objects.\n *\n * @param {object}\n * @return {Object}\n * @api private\n */\n\nfunction getcontenttype(obj) {\n  if (typeof obj.getHeader === \'function\') {\n    // res-like\n    return obj.getHeader(\'content-type\')\n  }\n\n  if (typeof obj.headers === \'object\') {\n    // req-like\n    return obj.headers && obj.headers[\'content-type\']\n  }\n}\n\n/**\n * Quote a string if necessary.\n *\n * @param {string} val\n * @return {string}\n * @api private\n */\n\nfunction qstring(val) {\n  var str = String(val)\n\n  // no need to quote tokens\n  if (tokenRegExp.test(str)) {\n    return str\n  }\n\n  if (str.length > 0 && !textRegExp.test(str)) {\n    throw new TypeError(\'invalid parameter value\')\n  }\n\n  return \'"\' + str.replace(quoteRegExp, \'\\\\$1\') + \'"\'\n}\n\n/**\n * Simply "type/subtype+siffx" into parts.\n *\n * @param {string} string\n * @return {Object}\n * @api private\n */\n\nfunction splitType(string) {\n  var match = typeRegExp.exec(string.toLowerCase())\n\n  if (!match) {\n    throw new TypeError(\'invalid media type\')\n  }\n\n  var type = match[1]\n  var subtype = match[2]\n  var suffix\n\n  // suffix after last +\n  var index = subtype.lastIndexOf(\'+\')\n  if (index !== -1) {\n    suffix = subtype.substr(index + 1)\n    subtype = subtype.substr(0, index)\n  }\n\n  var obj = {\n    type: type,\n    subtype: subtype,\n    suffix: suffix\n  }\n\n  return obj\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/media-typer/index.js?')},"./node_modules/merge-stream/index.js":
/*!********************************************!*\
  !*** ./node_modules/merge-stream/index.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { PassThrough } = __webpack_require__(/*! stream */ \"stream\");\n\nmodule.exports = function (/*streams...*/) {\n  var sources = []\n  var output  = new PassThrough({objectMode: true})\n\n  output.setMaxListeners(0)\n\n  output.add = add\n  output.isEmpty = isEmpty\n\n  output.on('unpipe', remove)\n\n  Array.prototype.slice.call(arguments).forEach(add)\n\n  return output\n\n  function add (source) {\n    if (Array.isArray(source)) {\n      source.forEach(add)\n      return this\n    }\n\n    sources.push(source);\n    source.once('end', remove.bind(null, source))\n    source.once('error', output.emit.bind(output, 'error'))\n    source.pipe(output, {end: false})\n    return this\n  }\n\n  function isEmpty () {\n    return sources.length == 0;\n  }\n\n  function remove (source) {\n    sources = sources.filter(function (it) { return it !== source })\n    if (!sources.length && output.readable) { output.end() }\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/merge-stream/index.js?")},"./node_modules/methods/index.js":
/*!***************************************!*\
  !*** ./node_modules/methods/index.js ***!
  \***************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("/*!\n * methods\n * Copyright(c) 2013-2014 TJ Holowaychuk\n * Copyright(c) 2015-2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar http = __webpack_require__(/*! http */ \"http\");\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = getCurrentNodeMethods() || getBasicNodeMethods();\n\n/**\n * Get the current Node.js methods.\n * @private\n */\n\nfunction getCurrentNodeMethods() {\n  return http.METHODS && http.METHODS.map(function lowerCaseMethod(method) {\n    return method.toLowerCase();\n  });\n}\n\n/**\n * Get the \"basic\" Node.js methods, a snapshot from Node.js 0.10.\n * @private\n */\n\nfunction getBasicNodeMethods() {\n  return [\n    'get',\n    'post',\n    'put',\n    'head',\n    'delete',\n    'options',\n    'trace',\n    'copy',\n    'lock',\n    'mkcol',\n    'move',\n    'purge',\n    'propfind',\n    'proppatch',\n    'unlock',\n    'report',\n    'mkactivity',\n    'checkout',\n    'merge',\n    'm-search',\n    'notify',\n    'subscribe',\n    'unsubscribe',\n    'patch',\n    'search',\n    'connect'\n  ];\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/methods/index.js?")},"./node_modules/mime-db/index.js":
/*!***************************************!*\
  !*** ./node_modules/mime-db/index.js ***!
  \***************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('/*!\n * mime-db\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module exports.\n */\n\nmodule.exports = __webpack_require__(/*! ./db.json */ "./node_modules/mime-db/db.json")\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mime-db/index.js?')},"./node_modules/mime-types/index.js":
/*!******************************************!*\
  !*** ./node_modules/mime-types/index.js ***!
  \******************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("/*!\n * mime-types\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar db = __webpack_require__(/*! mime-db */ \"./node_modules/mime-db/index.js\")\nvar extname = (__webpack_require__(/*! path */ \"path\").extname)\n\n/**\n * Module variables.\n * @private\n */\n\nvar EXTRACT_TYPE_REGEXP = /^\\s*([^;\\s]*)(?:;|\\s|$)/\nvar TEXT_TYPE_REGEXP = /^text\\//i\n\n/**\n * Module exports.\n * @public\n */\n\nexports.charset = charset\nexports.charsets = { lookup: charset }\nexports.contentType = contentType\nexports.extension = extension\nexports.extensions = Object.create(null)\nexports.lookup = lookup\nexports.types = Object.create(null)\n\n// Populate the extensions/types maps\npopulateMaps(exports.extensions, exports.types)\n\n/**\n * Get the default charset for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction charset (type) {\n  if (!type || typeof type !== 'string') {\n    return false\n  }\n\n  // TODO: use media-typer\n  var match = EXTRACT_TYPE_REGEXP.exec(type)\n  var mime = match && db[match[1].toLowerCase()]\n\n  if (mime && mime.charset) {\n    return mime.charset\n  }\n\n  // default text/* to utf-8\n  if (match && TEXT_TYPE_REGEXP.test(match[1])) {\n    return 'UTF-8'\n  }\n\n  return false\n}\n\n/**\n * Create a full Content-Type header given a MIME type or extension.\n *\n * @param {string} str\n * @return {boolean|string}\n */\n\nfunction contentType (str) {\n  // TODO: should this even be in this module?\n  if (!str || typeof str !== 'string') {\n    return false\n  }\n\n  var mime = str.indexOf('/') === -1\n    ? exports.lookup(str)\n    : str\n\n  if (!mime) {\n    return false\n  }\n\n  // TODO: use content-type or other module\n  if (mime.indexOf('charset') === -1) {\n    var charset = exports.charset(mime)\n    if (charset) mime += '; charset=' + charset.toLowerCase()\n  }\n\n  return mime\n}\n\n/**\n * Get the default extension for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction extension (type) {\n  if (!type || typeof type !== 'string') {\n    return false\n  }\n\n  // TODO: use media-typer\n  var match = EXTRACT_TYPE_REGEXP.exec(type)\n\n  // get extensions\n  var exts = match && exports.extensions[match[1].toLowerCase()]\n\n  if (!exts || !exts.length) {\n    return false\n  }\n\n  return exts[0]\n}\n\n/**\n * Lookup the MIME type for a file path/extension.\n *\n * @param {string} path\n * @return {boolean|string}\n */\n\nfunction lookup (path) {\n  if (!path || typeof path !== 'string') {\n    return false\n  }\n\n  // get the extension (\"ext\" or \".ext\" or full path)\n  var extension = extname('x.' + path)\n    .toLowerCase()\n    .substr(1)\n\n  if (!extension) {\n    return false\n  }\n\n  return exports.types[extension] || false\n}\n\n/**\n * Populate the extensions and types maps.\n * @private\n */\n\nfunction populateMaps (extensions, types) {\n  // source preference (least -> most)\n  var preference = ['nginx', 'apache', undefined, 'iana']\n\n  Object.keys(db).forEach(function forEachMimeType (type) {\n    var mime = db[type]\n    var exts = mime.extensions\n\n    if (!exts || !exts.length) {\n      return\n    }\n\n    // mime -> extensions\n    extensions[type] = exts\n\n    // extension -> mime\n    for (var i = 0; i < exts.length; i++) {\n      var extension = exts[i]\n\n      if (types[extension]) {\n        var from = preference.indexOf(db[types[extension]].source)\n        var to = preference.indexOf(mime.source)\n\n        if (types[extension] !== 'application/octet-stream' &&\n          (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) {\n          // skip the remapping\n          continue\n        }\n      }\n\n      // set the extension -> mime\n      types[extension] = type\n    }\n  })\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mime-types/index.js?")},"./node_modules/mimic-fn/index.js":
/*!****************************************!*\
  !*** ./node_modules/mimic-fn/index.js ***!
  \****************************************/module=>{"use strict";eval('\n\nconst mimicFn = (to, from) => {\n\tfor (const prop of Reflect.ownKeys(from)) {\n\t\tObject.defineProperty(to, prop, Object.getOwnPropertyDescriptor(from, prop));\n\t}\n\n\treturn to;\n};\n\nmodule.exports = mimicFn;\n// TODO: Remove this for the next major release\nmodule.exports["default"] = mimicFn;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mimic-fn/index.js?')},"./node_modules/mimic-response/index.js":
/*!**********************************************!*\
  !*** ./node_modules/mimic-response/index.js ***!
  \**********************************************/module=>{"use strict";eval("\n\n// We define these manually to ensure they're always copied\n// even if they would move up the prototype chain\n// https://nodejs.org/api/http.html#http_class_http_incomingmessage\nconst knownProps = [\n\t'destroy',\n\t'setTimeout',\n\t'socket',\n\t'headers',\n\t'trailers',\n\t'rawHeaders',\n\t'statusCode',\n\t'httpVersion',\n\t'httpVersionMinor',\n\t'httpVersionMajor',\n\t'rawTrailers',\n\t'statusMessage'\n];\n\nmodule.exports = (fromStream, toStream) => {\n\tconst fromProps = new Set(Object.keys(fromStream).concat(knownProps));\n\n\tfor (const prop of fromProps) {\n\t\t// Don't overwrite existing properties\n\t\tif (prop in toStream) {\n\t\t\tcontinue;\n\t\t}\n\n\t\ttoStream[prop] = typeof fromStream[prop] === 'function' ? fromStream[prop].bind(fromStream) : fromStream[prop];\n\t}\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mimic-response/index.js?")},"./node_modules/ms/index.js":
/*!**********************************!*\
  !*** ./node_modules/ms/index.js ***!
  \**********************************/module=>{eval("/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n  options = options || {};\n  var type = typeof val;\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isFinite(val)) {\n    return options.long ? fmtLong(val) : fmtShort(val);\n  }\n  throw new Error(\n    'val is not a non-empty string or a valid number. val=' +\n      JSON.stringify(val)\n  );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = String(str);\n  if (str.length > 100) {\n    return;\n  }\n  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(\n    str\n  );\n  if (!match) {\n    return;\n  }\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'weeks':\n    case 'week':\n    case 'w':\n      return n * w;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n    default:\n      return undefined;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n  if (msAbs >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n  if (msAbs >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n  if (msAbs >= s) {\n    return Math.round(ms / s) + 's';\n  }\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return plural(ms, msAbs, d, 'day');\n  }\n  if (msAbs >= h) {\n    return plural(ms, msAbs, h, 'hour');\n  }\n  if (msAbs >= m) {\n    return plural(ms, msAbs, m, 'minute');\n  }\n  if (msAbs >= s) {\n    return plural(ms, msAbs, s, 'second');\n  }\n  return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n  var isPlural = msAbs >= n * 1.5;\n  return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ms/index.js?")},"./node_modules/mysql2/index.js":
/*!**************************************!*\
  !*** ./node_modules/mysql2/index.js ***!
  \**************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n\nconst SqlString = __webpack_require__(/*! sqlstring */ "./node_modules/sqlstring/index.js");\n\nconst Connection = __webpack_require__(/*! ./lib/connection.js */ "./node_modules/mysql2/lib/connection.js");\nconst ConnectionConfig = __webpack_require__(/*! ./lib/connection_config.js */ "./node_modules/mysql2/lib/connection_config.js");\nconst parserCache = __webpack_require__(/*! ./lib/parsers/parser_cache */ "./node_modules/mysql2/lib/parsers/parser_cache.js");\n\nexports.createConnection = function(opts) {\n  return new Connection({ config: new ConnectionConfig(opts) });\n};\n\nexports.connect = exports.createConnection;\nexports.Connection = Connection;\n\nconst Pool = __webpack_require__(/*! ./lib/pool.js */ "./node_modules/mysql2/lib/pool.js");\nconst PoolCluster = __webpack_require__(/*! ./lib/pool_cluster.js */ "./node_modules/mysql2/lib/pool_cluster.js");\n\nexports.createPool = function(config) {\n  const PoolConfig = __webpack_require__(/*! ./lib/pool_config.js */ "./node_modules/mysql2/lib/pool_config.js");\n  return new Pool({ config: new PoolConfig(config) });\n};\n\nexports.createPoolCluster = function(config) {\n  const PoolCluster = __webpack_require__(/*! ./lib/pool_cluster.js */ "./node_modules/mysql2/lib/pool_cluster.js");\n  return new PoolCluster(config);\n};\n\nexports.createQuery = Connection.createQuery;\n\nexports.Pool = Pool;\n\nexports.PoolCluster = PoolCluster;\n\nexports.createServer = function(handler) {\n  const Server = __webpack_require__(/*! ./lib/server.js */ "./node_modules/mysql2/lib/server.js");\n  const s = new Server();\n  if (handler) {\n    s.on(\'connection\', handler);\n  }\n  return s;\n};\n\nexports.PoolConnection = __webpack_require__(/*! ./lib/pool_connection */ "./node_modules/mysql2/lib/pool_connection.js");\nexports.escape = SqlString.escape;\nexports.escapeId = SqlString.escapeId;\nexports.format = SqlString.format;\nexports.raw = SqlString.raw;\n\nexports.__defineGetter__(\n  \'createConnectionPromise\',\n  () => (__webpack_require__(/*! ./promise.js */ "./node_modules/mysql2/promise.js").createConnection)\n);\n\nexports.__defineGetter__(\n  \'createPoolPromise\',\n  () => (__webpack_require__(/*! ./promise.js */ "./node_modules/mysql2/promise.js").createPool)\n);\n\nexports.__defineGetter__(\n  \'createPoolClusterPromise\',\n  () => (__webpack_require__(/*! ./promise.js */ "./node_modules/mysql2/promise.js").createPoolCluster)\n);\n\nexports.__defineGetter__(\'Types\', () => __webpack_require__(/*! ./lib/constants/types.js */ "./node_modules/mysql2/lib/constants/types.js"));\n\nexports.__defineGetter__(\'Charsets\', () =>\n  __webpack_require__(/*! ./lib/constants/charsets.js */ "./node_modules/mysql2/lib/constants/charsets.js")\n);\n\nexports.__defineGetter__(\'CharsetToEncoding\', () =>\n  __webpack_require__(/*! ./lib/constants/charset_encodings.js */ "./node_modules/mysql2/lib/constants/charset_encodings.js")\n);\n\nexports.setMaxParserCache = function(max) {\n  parserCache.setMaxCache(max);\n};\n\nexports.clearParserCache = function() {\n  parserCache.clearCache();\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/index.js?')},"./node_modules/mysql2/lib/auth_41.js":
/*!********************************************!*\
  !*** ./node_modules/mysql2/lib/auth_41.js ***!
  \********************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\n/*\n4.1 authentication: (http://bazaar.launchpad.net/~mysql/mysql-server/5.5/view/head:/sql/password.c)\n\n  SERVER:  public_seed=create_random_string()\n           send(public_seed)\n\n  CLIENT:  recv(public_seed)\n           hash_stage1=sha1(\"password\")\n           hash_stage2=sha1(hash_stage1)\n           reply=xor(hash_stage1, sha1(public_seed,hash_stage2)\n\n           // this three steps are done in scramble()\n\n           send(reply)\n\n\n  SERVER:  recv(reply)\n           hash_stage1=xor(reply, sha1(public_seed,hash_stage2))\n           candidate_hash2=sha1(hash_stage1)\n           check(candidate_hash2==hash_stage2)\n\nserver stores sha1(sha1(password)) ( hash_stag2)\n*/\n\nconst crypto = __webpack_require__(/*! crypto */ \"crypto\");\n\nfunction sha1(msg, msg1, msg2) {\n  const hash = crypto.createHash('sha1');\n  hash.update(msg);\n  if (msg1) {\n    hash.update(msg1);\n  }\n\n  if (msg2) {\n    hash.update(msg2);\n  }\n\n  return hash.digest();\n}\n\nfunction xor(a, b) {\n  if (!Buffer.isBuffer(a)) {\n    a = Buffer.from(a, 'binary');\n  }\n\n  if (!Buffer.isBuffer(b)) {\n    b = Buffer.from(b, 'binary');\n  }\n\n  const result = Buffer.allocUnsafe(a.length);\n\n  for (let i = 0; i < a.length; i++) {\n    result[i] = a[i] ^ b[i];\n  }\n  return result;\n}\n\nexports.xor = xor;\n\nfunction token(password, scramble1, scramble2) {\n  // TODO: use buffers (not sure why strings here)\n  if (!password) {\n    return Buffer.alloc(0);\n  }\n  const stage1 = sha1(password);\n  return exports.calculateTokenFromPasswordSha(stage1, scramble1, scramble2);\n}\n\nexports.calculateTokenFromPasswordSha = function(\n  passwordSha,\n  scramble1,\n  scramble2\n) {\n  // we use AUTH 41 here, and we need only the bytes we just need.\n  const authPluginData1 = scramble1.slice(0, 8);\n  const authPluginData2 = scramble2.slice(0, 12);\n  const stage2 = sha1(passwordSha);\n  const stage3 = sha1(authPluginData1, authPluginData2, stage2);\n  return xor(stage3, passwordSha);\n};\n\nexports.calculateToken = token;\n\nexports.verifyToken = function(publicSeed1, publicSeed2, token, doubleSha) {\n  const hashStage1 = xor(token, sha1(publicSeed1, publicSeed2, doubleSha));\n  const candidateHash2 = sha1(hashStage1);\n  return candidateHash2.compare(doubleSha) === 0;\n};\n\nexports.doubleSha1 = function(password) {\n  return sha1(sha1(password));\n};\n\nfunction xorRotating(a, seed) {\n  if (!Buffer.isBuffer(a)) {\n    a = Buffer.from(a, 'binary');\n  }\n\n  if (!Buffer.isBuffer(seed)) {\n    seed = Buffer.from(seed, 'binary');\n  }\n\n  const result = Buffer.allocUnsafe(a.length);\n  const seedLen = seed.length;\n\n  for (let i = 0; i < a.length; i++) {\n    result[i] = a[i] ^ seed[i % seedLen];\n  }\n  return result;\n}\nexports.xorRotating = xorRotating;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/auth_41.js?")},"./node_modules/mysql2/lib/auth_plugins/caching_sha2_password.js":
/*!***********************************************************************!*\
  !*** ./node_modules/mysql2/lib/auth_plugins/caching_sha2_password.js ***!
  \***********************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n// https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/\n\nconst PLUGIN_NAME = 'caching_sha2_password';\nconst crypto = __webpack_require__(/*! crypto */ \"crypto\");\nconst { xor, xorRotating } = __webpack_require__(/*! ../auth_41 */ \"./node_modules/mysql2/lib/auth_41.js\");\n\nconst REQUEST_SERVER_KEY_PACKET = Buffer.from([2]);\nconst FAST_AUTH_SUCCESS_PACKET = Buffer.from([3]);\nconst PERFORM_FULL_AUTHENTICATION_PACKET = Buffer.from([4]);\n\nconst STATE_INITIAL = 0;\nconst STATE_TOKEN_SENT = 1;\nconst STATE_WAIT_SERVER_KEY = 2;\nconst STATE_FINAL = -1;\n\nfunction sha256(msg) {\n  const hash = crypto.createHash('sha256');\n  hash.update(msg, 'binary');\n  return hash.digest('binary');\n}\n\nfunction calculateToken(password, scramble) {\n  if (!password) {\n    return Buffer.alloc(0);\n  }\n  const stage1 = sha256(Buffer.from(password, 'utf8').toString('binary'));\n  const stage2 = sha256(stage1);\n  const stage3 = sha256(stage2 + scramble.toString('binary'));\n  return xor(stage1, stage3);\n}\n\nfunction encrypt(password, scramble, key) {\n  const stage1 = xorRotating(\n    Buffer.from(`${password}\\0`, 'utf8').toString('binary'),\n    scramble.toString('binary')\n  );\n  return crypto.publicEncrypt(key, stage1);\n}\n\nmodule.exports = (pluginOptions = {}) => ({ connection }) => {\n  let state = 0;\n  let scramble = null;\n\n  const password = connection.config.password;\n\n  const authWithKey = serverKey => {\n    const _password = encrypt(password, scramble, serverKey);\n    state = STATE_FINAL;\n    return _password;\n  };\n\n  return data => {\n    switch (state) {\n      case STATE_INITIAL:\n        scramble = data.slice(0, 20);\n        state = STATE_TOKEN_SENT;\n        return calculateToken(password, scramble);\n\n      case STATE_TOKEN_SENT:\n        if (FAST_AUTH_SUCCESS_PACKET.equals(data)) {\n          state = STATE_FINAL;\n          return null;\n        }\n\n        if (PERFORM_FULL_AUTHENTICATION_PACKET.equals(data)) {\n          const isSecureConnection =\n            typeof pluginOptions.overrideIsSecure === 'undefined'\n              ? connection.config.ssl || connection.config.socketPath\n              : pluginOptions.overrideIsSecure;\n          if (isSecureConnection) {\n            state = STATE_FINAL;\n            return Buffer.from(`${password}\\0`, 'utf8');\n          }\n\n          // if client provides key we can save one extra roundrip on first connection\n          if (pluginOptions.serverPublicKey) {\n            return authWithKey(pluginOptions.serverPublicKey);\n          }\n\n          state = STATE_WAIT_SERVER_KEY;\n          return REQUEST_SERVER_KEY_PACKET;\n        }\n        throw new Error(\n          `Invalid AuthMoreData packet received by ${PLUGIN_NAME} plugin in STATE_TOKEN_SENT state.`\n        );\n      case STATE_WAIT_SERVER_KEY:\n        if (pluginOptions.onServerPublicKey) {\n          pluginOptions.onServerPublicKey(data);\n        }\n        return authWithKey(data);\n      case STATE_FINAL:\n        throw new Error(\n          `Unexpected data in AuthMoreData packet received by ${PLUGIN_NAME} plugin in STATE_FINAL state.`\n        );\n    }\n\n    throw new Error(\n      `Unexpected data in AuthMoreData packet received by ${PLUGIN_NAME} plugin in state ${state}`\n    );\n  };\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/auth_plugins/caching_sha2_password.js?")},"./node_modules/mysql2/lib/auth_plugins/mysql_native_password.js":
/*!***********************************************************************!*\
  !*** ./node_modules/mysql2/lib/auth_plugins/mysql_native_password.js ***!
  \***********************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n//const PLUGIN_NAME = 'mysql_native_password';\nconst auth41 = __webpack_require__(/*! ../auth_41.js */ \"./node_modules/mysql2/lib/auth_41.js\");\n\nmodule.exports = pluginOptions => ({ connection, command }) => {\n  const password =\n    command.password || pluginOptions.password || connection.config.password;\n  const passwordSha1 =\n    command.passwordSha1 ||\n    pluginOptions.passwordSha1 ||\n    connection.config.passwordSha1;\n  return data => {\n    const authPluginData1 = data.slice(0, 8);\n    const authPluginData2 = data.slice(8, 20);\n    let authToken;\n    if (passwordSha1) {\n      authToken = auth41.calculateTokenFromPasswordSha(\n        passwordSha1,\n        authPluginData1,\n        authPluginData2\n      );\n    } else {\n      authToken = auth41.calculateToken(\n        password,\n        authPluginData1,\n        authPluginData2\n      );\n    }\n    return authToken;\n  };\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/auth_plugins/mysql_native_password.js?")},"./node_modules/mysql2/lib/auth_plugins/sha256_password.js":
/*!*****************************************************************!*\
  !*** ./node_modules/mysql2/lib/auth_plugins/sha256_password.js ***!
  \*****************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst PLUGIN_NAME = 'sha256_password';\nconst crypto = __webpack_require__(/*! crypto */ \"crypto\");\nconst { xor } = __webpack_require__(/*! ../auth_41 */ \"./node_modules/mysql2/lib/auth_41.js\");\n\nconst REQUEST_SERVER_KEY_PACKET = Buffer.from([1]);\n\nconst STATE_INITIAL = 0;\nconst STATE_WAIT_SERVER_KEY = 1;\nconst STATE_FINAL = -1;\n\nfunction encrypt(password, scramble, key) {\n  const stage1 = xor(\n    Buffer.from(`${password}\\0`, 'utf8').toString('binary'),\n    scramble.toString('binary')\n  );\n  return crypto.publicEncrypt(key, stage1);\n}\n\nmodule.exports = (pluginOptions = {}) => ({ connection }) => {\n  let state = 0;\n  let scramble = null;\n\n  const password = connection.config.password;\n\n  const authWithKey = serverKey => {\n    const _password = encrypt(password, scramble, serverKey);\n    state = STATE_FINAL;\n    return _password;\n  };\n\n  return data => {\n    switch (state) {\n      case STATE_INITIAL:\n        scramble = data.slice(0, 20);\n        // if client provides key we can save one extra roundrip on first connection\n        if (pluginOptions.serverPublicKey) {\n          return authWithKey(pluginOptions.serverPublicKey);\n        }\n\n        state = STATE_WAIT_SERVER_KEY;\n        return REQUEST_SERVER_KEY_PACKET;\n\n      case STATE_WAIT_SERVER_KEY:\n        if (pluginOptions.onServerPublicKey) {\n          pluginOptions.onServerPublicKey(data);\n        }\n        return authWithKey(data);\n      case STATE_FINAL:\n        throw new Error(\n          `Unexpected data in AuthMoreData packet received by ${PLUGIN_NAME} plugin in STATE_FINAL state.`\n        );\n    }\n\n    throw new Error(\n      `Unexpected data in AuthMoreData packet received by ${PLUGIN_NAME} plugin in state ${state}`\n    );\n  };\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/auth_plugins/sha256_password.js?")},"./node_modules/mysql2/lib/commands/auth_switch.js":
/*!*********************************************************!*\
  !*** ./node_modules/mysql2/lib/commands/auth_switch.js ***!
  \*********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("// This file was modified by Oracle on July 5, 2021.\n// Errors generated by asynchronous authentication plugins are now being\n// handled and subsequently emitted at the command level.\n// Modifications copyright (c) 2021, Oracle and/or its affiliates.\n\n\n\nconst Packets = __webpack_require__(/*! ../packets/index.js */ \"./node_modules/mysql2/lib/packets/index.js\");\nconst sha256_password = __webpack_require__(/*! ../auth_plugins/sha256_password */ \"./node_modules/mysql2/lib/auth_plugins/sha256_password.js\");\nconst caching_sha2_password = __webpack_require__(/*! ../auth_plugins/caching_sha2_password.js */ \"./node_modules/mysql2/lib/auth_plugins/caching_sha2_password.js\");\nconst mysql_native_password = __webpack_require__(/*! ../auth_plugins/mysql_native_password.js */ \"./node_modules/mysql2/lib/auth_plugins/mysql_native_password.js\");\n\nconst standardAuthPlugins = {\n  sha256_password: sha256_password({}),\n  caching_sha2_password: caching_sha2_password({}),\n  mysql_native_password: mysql_native_password({})\n};\n\nfunction warnLegacyAuthSwitch() {\n  console.warn(\n    'WARNING! authSwitchHandler api is deprecated, please use new authPlugins api'\n  );\n}\n\nfunction authSwitchPluginError(error, command) {\n  // Authentication errors are fatal\n  error.code = 'AUTH_SWITCH_PLUGIN_ERROR';\n  error.fatal = true;\n\n  command.emit('error', error);\n}\n\nfunction authSwitchRequest(packet, connection, command) {\n  const { pluginName, pluginData } = Packets.AuthSwitchRequest.fromPacket(\n    packet\n  );\n  let authPlugin =\n    connection.config.authPlugins && connection.config.authPlugins[pluginName];\n\n  // legacy plugin api don't allow to override mysql_native_password\n  // if pluginName is mysql_native_password it's using standard auth4.1 auth\n  if (\n    connection.config.authSwitchHandler &&\n    pluginName !== 'mysql_native_password'\n  ) {\n    const legacySwitchHandler = connection.config.authSwitchHandler;\n    warnLegacyAuthSwitch();\n    legacySwitchHandler({ pluginName, pluginData }, (err, data) => {\n      if (err) {\n        return authSwitchPluginError(err, command);\n      }\n      connection.writePacket(new Packets.AuthSwitchResponse(data).toPacket());\n    });\n    return;\n  }\n  if (!authPlugin) {\n    authPlugin = standardAuthPlugins[pluginName];\n  }\n  if (!authPlugin) {\n    throw new Error(\n      `Server requests authentication using unknown plugin ${pluginName}. See ${'TODO: add plugins doco here'} on how to configure or author authentication plugins.`\n    );\n  }\n  connection._authPlugin = authPlugin({ connection, command });\n  Promise.resolve(connection._authPlugin(pluginData)).then(data => {\n    if (data) {\n      connection.writePacket(new Packets.AuthSwitchResponse(data).toPacket());\n    }\n  }).catch(err => {\n    authSwitchPluginError(err, command);\n  });\n}\n\nfunction authSwitchRequestMoreData(packet, connection, command) {\n  const { data } = Packets.AuthSwitchRequestMoreData.fromPacket(packet);\n\n  if (connection.config.authSwitchHandler) {\n    const legacySwitchHandler = connection.config.authSwitchHandler;\n    warnLegacyAuthSwitch();\n    legacySwitchHandler({ pluginData: data }, (err, data) => {\n      if (err) {\n        return authSwitchPluginError(err, command);\n      }\n      connection.writePacket(new Packets.AuthSwitchResponse(data).toPacket());\n    });\n    return;\n  }\n\n  if (!connection._authPlugin) {\n    throw new Error(\n      'AuthPluginMoreData received but no auth plugin instance found'\n    );\n  }\n  Promise.resolve(connection._authPlugin(data)).then(data => {\n    if (data) {\n      connection.writePacket(new Packets.AuthSwitchResponse(data).toPacket());\n    }\n  }).catch(err => {\n    authSwitchPluginError(err, command);\n  });\n}\n\nmodule.exports = {\n  authSwitchRequest,\n  authSwitchRequestMoreData\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/commands/auth_switch.js?")},"./node_modules/mysql2/lib/commands/binlog_dump.js":
/*!*********************************************************!*\
  !*** ./node_modules/mysql2/lib/commands/binlog_dump.js ***!
  \*********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Command = __webpack_require__(/*! ./command */ \"./node_modules/mysql2/lib/commands/command.js\");\nconst Packets = __webpack_require__(/*! ../packets */ \"./node_modules/mysql2/lib/packets/index.js\");\n\nconst eventParsers = [];\n\nclass BinlogEventHeader {\n  constructor(packet) {\n    this.timestamp = packet.readInt32();\n    this.eventType = packet.readInt8();\n    this.serverId = packet.readInt32();\n    this.eventSize = packet.readInt32();\n    this.logPos = packet.readInt32();\n    this.flags = packet.readInt16();\n  }\n}\n\nclass BinlogDump extends Command {\n  constructor(opts) {\n    super();\n    // this.onResult = callback;\n    this.opts = opts;\n  }\n\n  start(packet, connection) {\n    const newPacket = new Packets.BinlogDump(this.opts);\n    connection.writePacket(newPacket.toPacket(1));\n    return BinlogDump.prototype.binlogData;\n  }\n\n  binlogData(packet) {\n    // ok - continue consuming events\n    // error - error\n    // eof - end of binlog\n    if (packet.isEOF()) {\n      this.emit('eof');\n      return null;\n    }\n    // binlog event header\n    packet.readInt8();\n    const header = new BinlogEventHeader(packet);\n    const EventParser = eventParsers[header.eventType];\n    let event;\n    if (EventParser) {\n      event = new EventParser(packet);\n    } else {\n      event = {\n        name: 'UNKNOWN'\n      };\n    }\n    event.header = header;\n    this.emit('event', event);\n    return BinlogDump.prototype.binlogData;\n  }\n}\n\nclass RotateEvent {\n  constructor(packet) {\n    this.pposition = packet.readInt32();\n    // TODO: read uint64 here\n    packet.readInt32(); // positionDword2\n    this.nextBinlog = packet.readString();\n    this.name = 'RotateEvent';\n  }\n}\n\nclass FormatDescriptionEvent {\n  constructor(packet) {\n    this.binlogVersion = packet.readInt16();\n    this.serverVersion = packet.readString(50).replace(/\\u0000.*/, ''); // eslint-disable-line no-control-regex\n    this.createTimestamp = packet.readInt32();\n    this.eventHeaderLength = packet.readInt8(); // should be 19\n    this.eventsLength = packet.readBuffer();\n    this.name = 'FormatDescriptionEvent';\n  }\n}\n\nclass QueryEvent {\n  constructor(packet) {\n    const parseStatusVars = __webpack_require__(/*! ../packets/binlog_query_statusvars.js */ \"./node_modules/mysql2/lib/packets/binlog_query_statusvars.js\");\n    this.slaveProxyId = packet.readInt32();\n    this.executionTime = packet.readInt32();\n    const schemaLength = packet.readInt8();\n    this.errorCode = packet.readInt16();\n    const statusVarsLength = packet.readInt16();\n    const statusVars = packet.readBuffer(statusVarsLength);\n    this.schema = packet.readString(schemaLength);\n    packet.readInt8(); // should be zero\n    this.statusVars = parseStatusVars(statusVars);\n    this.query = packet.readString();\n    this.name = 'QueryEvent';\n  }\n}\n\nclass XidEvent {\n  constructor(packet) {\n    this.binlogVersion = packet.readInt16();\n    this.xid = packet.readInt64();\n    this.name = 'XidEvent';\n  }\n}\n\neventParsers[2] = QueryEvent;\neventParsers[4] = RotateEvent;\neventParsers[15] = FormatDescriptionEvent;\neventParsers[16] = XidEvent;\n\nmodule.exports = BinlogDump;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/commands/binlog_dump.js?")},"./node_modules/mysql2/lib/commands/change_user.js":
/*!*********************************************************!*\
  !*** ./node_modules/mysql2/lib/commands/change_user.js ***!
  \*********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Command = __webpack_require__(/*! ./command.js */ "./node_modules/mysql2/lib/commands/command.js");\nconst Packets = __webpack_require__(/*! ../packets/index.js */ "./node_modules/mysql2/lib/packets/index.js");\nconst ClientHandshake = __webpack_require__(/*! ./client_handshake.js */ "./node_modules/mysql2/lib/commands/client_handshake.js");\nconst CharsetToEncoding = __webpack_require__(/*! ../constants/charset_encodings.js */ "./node_modules/mysql2/lib/constants/charset_encodings.js");\n\nclass ChangeUser extends Command {\n  constructor(options, callback) {\n    super();\n    this.onResult = callback;\n    this.user = options.user;\n    this.password = options.password;\n    this.database = options.database;\n    this.passwordSha1 = options.passwordSha1;\n    this.charsetNumber = options.charsetNumber;\n    this.currentConfig = options.currentConfig;\n  }\n  start(packet, connection) {\n    const newPacket = new Packets.ChangeUser({\n      flags: connection.config.clientFlags,\n      user: this.user,\n      database: this.database,\n      charsetNumber: this.charsetNumber,\n      password: this.password,\n      passwordSha1: this.passwordSha1,\n      authPluginData1: connection._handshakePacket.authPluginData1,\n      authPluginData2: connection._handshakePacket.authPluginData2\n    });\n    this.currentConfig.user = this.user;\n    this.currentConfig.password = this.password;\n    this.currentConfig.database = this.database;\n    this.currentConfig.charsetNumber = this.charsetNumber;\n    connection.clientEncoding = CharsetToEncoding[this.charsetNumber];\n    // reset prepared statements cache as all statements become invalid after changeUser\n    connection._statements.reset();\n    connection.writePacket(newPacket.toPacket());\n    return ChangeUser.prototype.handshakeResult;\n  }\n}\n\nChangeUser.prototype.handshakeResult =\n  ClientHandshake.prototype.handshakeResult;\nChangeUser.prototype.calculateNativePasswordAuthToken =\n  ClientHandshake.prototype.calculateNativePasswordAuthToken;\n\nmodule.exports = ChangeUser;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/commands/change_user.js?')},"./node_modules/mysql2/lib/commands/client_handshake.js":
/*!**************************************************************!*\
  !*** ./node_modules/mysql2/lib/commands/client_handshake.js ***!
  \**************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("// This file was modified by Oracle on June 17, 2021.\n// Handshake errors are now maked as fatal and the corresponding events are\n// emitted in the command instance itself.\n// Modifications copyright (c) 2021, Oracle and/or its affiliates.\n\n\n\nconst Command = __webpack_require__(/*! ./command.js */ \"./node_modules/mysql2/lib/commands/command.js\");\nconst Packets = __webpack_require__(/*! ../packets/index.js */ \"./node_modules/mysql2/lib/packets/index.js\");\nconst ClientConstants = __webpack_require__(/*! ../constants/client.js */ \"./node_modules/mysql2/lib/constants/client.js\");\nconst CharsetToEncoding = __webpack_require__(/*! ../constants/charset_encodings.js */ \"./node_modules/mysql2/lib/constants/charset_encodings.js\");\nconst auth41 = __webpack_require__(/*! ../auth_41.js */ \"./node_modules/mysql2/lib/auth_41.js\");\n\nfunction flagNames(flags) {\n  const res = [];\n  for (const c in ClientConstants) {\n    if (flags & ClientConstants[c]) {\n      res.push(c.replace(/_/g, ' ').toLowerCase());\n    }\n  }\n  return res;\n}\n\nclass ClientHandshake extends Command {\n  constructor(clientFlags) {\n    super();\n    this.handshake = null;\n    this.clientFlags = clientFlags;\n  }\n\n  start() {\n    return ClientHandshake.prototype.handshakeInit;\n  }\n\n  sendSSLRequest(connection) {\n    const sslRequest = new Packets.SSLRequest(\n      this.clientFlags,\n      connection.config.charsetNumber\n    );\n    connection.writePacket(sslRequest.toPacket());\n  }\n\n  sendCredentials(connection) {\n    if (connection.config.debug) {\n      // eslint-disable-next-line\n      console.log(\n        'Sending handshake packet: flags:%d=(%s)',\n        this.clientFlags,\n        flagNames(this.clientFlags).join(', ')\n      );\n    }\n    this.user = connection.config.user;\n    this.password = connection.config.password;\n    this.passwordSha1 = connection.config.passwordSha1;\n    this.database = connection.config.database;\n    this.autPluginName = this.handshake.autPluginName;\n    const handshakeResponse = new Packets.HandshakeResponse({\n      flags: this.clientFlags,\n      user: this.user,\n      database: this.database,\n      password: this.password,\n      passwordSha1: this.passwordSha1,\n      charsetNumber: connection.config.charsetNumber,\n      authPluginData1: this.handshake.authPluginData1,\n      authPluginData2: this.handshake.authPluginData2,\n      compress: connection.config.compress,\n      connectAttributes: connection.config.connectAttributes\n    });\n    connection.writePacket(handshakeResponse.toPacket());\n  }\n\n  calculateNativePasswordAuthToken(authPluginData) {\n    // TODO: dont split into authPluginData1 and authPluginData2, instead join when 1 & 2 received\n    const authPluginData1 = authPluginData.slice(0, 8);\n    const authPluginData2 = authPluginData.slice(8, 20);\n    let authToken;\n    if (this.passwordSha1) {\n      authToken = auth41.calculateTokenFromPasswordSha(\n        this.passwordSha1,\n        authPluginData1,\n        authPluginData2\n      );\n    } else {\n      authToken = auth41.calculateToken(\n        this.password,\n        authPluginData1,\n        authPluginData2\n      );\n    }\n    return authToken;\n  }\n\n  handshakeInit(helloPacket, connection) {\n    this.on('error', e => {\n      connection._fatalError = e;\n      connection._protocolError = e;\n    });\n    this.handshake = Packets.Handshake.fromPacket(helloPacket);\n    if (connection.config.debug) {\n      // eslint-disable-next-line\n      console.log(\n        'Server hello packet: capability flags:%d=(%s)',\n        this.handshake.capabilityFlags,\n        flagNames(this.handshake.capabilityFlags).join(', ')\n      );\n    }\n    connection.serverCapabilityFlags = this.handshake.capabilityFlags;\n    connection.serverEncoding = CharsetToEncoding[this.handshake.characterSet];\n    connection.connectionId = this.handshake.connectionId;\n    const serverSSLSupport =\n      this.handshake.capabilityFlags & ClientConstants.SSL;\n    // use compression only if requested by client and supported by server\n    connection.config.compress =\n      connection.config.compress &&\n      this.handshake.capabilityFlags & ClientConstants.COMPRESS;\n    this.clientFlags = this.clientFlags | connection.config.compress;\n    if (connection.config.ssl) {\n      // client requires SSL but server does not support it\n      if (!serverSSLSupport) {\n        const err = new Error('Server does not support secure connnection');\n        err.code = 'HANDSHAKE_NO_SSL_SUPPORT';\n        err.fatal = true;\n        this.emit('error', err);\n        return false;\n      }\n      // send ssl upgrade request and immediately upgrade connection to secure\n      this.clientFlags |= ClientConstants.SSL;\n      this.sendSSLRequest(connection);\n      connection.startTLS(err => {\n        // after connection is secure\n        if (err) {\n          // SSL negotiation error are fatal\n          err.code = 'HANDSHAKE_SSL_ERROR';\n          err.fatal = true;\n          this.emit('error', err);\n          return;\n        }\n        // rest of communication is encrypted\n        this.sendCredentials(connection);\n      });\n    } else {\n      this.sendCredentials(connection);\n    }\n    return ClientHandshake.prototype.handshakeResult;\n  }\n\n  handshakeResult(packet, connection) {\n    const marker = packet.peekByte();\n    if (marker === 0xfe || marker === 1) {\n      const authSwitch = __webpack_require__(/*! ./auth_switch */ \"./node_modules/mysql2/lib/commands/auth_switch.js\");\n      try {\n        if (marker === 1) {\n          authSwitch.authSwitchRequestMoreData(packet, connection, this);\n        } else {\n          authSwitch.authSwitchRequest(packet, connection, this);\n        }\n        return ClientHandshake.prototype.handshakeResult;\n      } catch (err) {\n        // Authentication errors are fatal\n        err.code = 'AUTH_SWITCH_PLUGIN_ERROR';\n        err.fatal = true;\n\n        if (this.onResult) {\n          this.onResult(err);\n        } else {\n          this.emit('error', err);\n        }\n        return null;\n      }\n    }\n    if (marker !== 0) {\n      const err = new Error('Unexpected packet during handshake phase');\n      // Unknown handshake errors are fatal\n      err.code = 'HANDSHAKE_UNKNOWN_ERROR';\n      err.fatal = true;\n\n      if (this.onResult) {\n        this.onResult(err);\n      } else {\n        this.emit('error', err);\n      }\n      return null;\n    }\n    // this should be called from ClientHandshake command only\n    // and skipped when called from ChangeUser command\n    if (!connection.authorized) {\n      connection.authorized = true;\n      if (connection.config.compress) {\n        const enableCompression = (__webpack_require__(/*! ../compressed_protocol.js */ \"./node_modules/mysql2/lib/compressed_protocol.js\").enableCompression);\n        enableCompression(connection);\n      }\n    }\n    if (this.onResult) {\n      this.onResult(null);\n    }\n    return null;\n  }\n}\nmodule.exports = ClientHandshake;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/commands/client_handshake.js?")},"./node_modules/mysql2/lib/commands/close_statement.js":
/*!*************************************************************!*\
  !*** ./node_modules/mysql2/lib/commands/close_statement.js ***!
  \*************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Command = __webpack_require__(/*! ./command */ "./node_modules/mysql2/lib/commands/command.js");\nconst Packets = __webpack_require__(/*! ../packets/index.js */ "./node_modules/mysql2/lib/packets/index.js");\n\nclass CloseStatement extends Command {\n  constructor(id) {\n    super();\n    this.id = id;\n  }\n\n  start(packet, connection) {\n    connection.writePacket(new Packets.CloseStatement(this.id).toPacket(1));\n    return null;\n  }\n}\n\nmodule.exports = CloseStatement;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/commands/close_statement.js?')},"./node_modules/mysql2/lib/commands/command.js":
/*!*****************************************************!*\
  !*** ./node_modules/mysql2/lib/commands/command.js ***!
  \*****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst EventEmitter = (__webpack_require__(/*! events */ \"events\").EventEmitter);\nconst Timers = __webpack_require__(/*! timers */ \"timers\");\n\nclass Command extends EventEmitter {\n  constructor() {\n    super();\n    this.next = null;\n  }\n\n  // slow. debug only\n  stateName() {\n    const state = this.next;\n    for (const i in this) {\n      if (this[i] === state && i !== 'next') {\n        return i;\n      }\n    }\n    return 'unknown name';\n  }\n\n  execute(packet, connection) {\n    if (!this.next) {\n      this.next = this.start;\n      connection._resetSequenceId();\n    }\n    if (packet && packet.isError()) {\n      const err = packet.asError(connection.clientEncoding);\n      err.sql = this.sql || this.query;\n      if (this.queryTimeout) {\n        Timers.clearTimeout(this.queryTimeout);\n        this.queryTimeout = null;\n      }\n      if (this.onResult) {\n        this.onResult(err);\n        this.emit('end');\n      } else {\n        this.emit('error', err);\n        this.emit('end');\n      }\n      return true;\n    }\n    // TODO: don't return anything from execute, it's ugly and error-prone. Listen for 'end' event in connection\n    this.next = this.next(packet, connection);\n    if (this.next) {\n      return false;\n    } \n    this.emit('end');\n    return true;\n    \n  }\n}\n\nmodule.exports = Command;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/commands/command.js?")},"./node_modules/mysql2/lib/commands/execute.js":
/*!*****************************************************!*\
  !*** ./node_modules/mysql2/lib/commands/execute.js ***!
  \*****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Command = __webpack_require__(/*! ./command.js */ "./node_modules/mysql2/lib/commands/command.js");\nconst Query = __webpack_require__(/*! ./query.js */ "./node_modules/mysql2/lib/commands/query.js");\nconst Packets = __webpack_require__(/*! ../packets/index.js */ "./node_modules/mysql2/lib/packets/index.js");\n\nconst getBinaryParser = __webpack_require__(/*! ../parsers/binary_parser.js */ "./node_modules/mysql2/lib/parsers/binary_parser.js");\n\nclass Execute extends Command {\n  constructor(options, callback) {\n    super();\n    this.statement = options.statement;\n    this.sql = options.sql;\n    this.values = options.values;\n    this.onResult = callback;\n    this.parameters = options.values;\n    this.insertId = 0;\n    this.timeout = options.timeout;\n    this.queryTimeout = null;\n    this._rows = [];\n    this._fields = [];\n    this._result = [];\n    this._fieldCount = 0;\n    this._rowParser = null;\n    this._executeOptions = options;\n    this._resultIndex = 0;\n    this._localStream = null;\n    this._unpipeStream = function() {};\n    this._streamFactory = options.infileStreamFactory;\n    this._connection = null;\n  }\n\n  buildParserFromFields(fields, connection) {\n    return getBinaryParser(fields, this.options, connection.config);\n  }\n\n  start(packet, connection) {\n    this._connection = connection;\n    this.options = Object.assign({}, connection.config, this._executeOptions);\n    this._setTimeout();\n    const executePacket = new Packets.Execute(\n      this.statement.id,\n      this.parameters,\n      connection.config.charsetNumber,\n      connection.config.timezone\n    );\n    //For reasons why this try-catch is here, please see\n    // https://github.com/sidorares/node-mysql2/pull/689\n    //For additional discussion, see\n    // 1. https://github.com/sidorares/node-mysql2/issues/493\n    // 2. https://github.com/sidorares/node-mysql2/issues/187\n    // 3. https://github.com/sidorares/node-mysql2/issues/480\n    try {\n      connection.writePacket(executePacket.toPacket(1));\n    } catch (error) {\n      this.onResult(error);\n    }\n    return Execute.prototype.resultsetHeader;\n  }\n\n  readField(packet, connection) {\n    let fields;\n    // disabling for now, but would be great to find reliable way to parse fields only once\n    // fields reported by prepare can be empty at all or just incorrect - see #169\n    //\n    // perfomance optimisation: if we already have this field parsed in statement header, use one from header\n    // const field = this.statement.columns.length == this._fieldCount ?\n    //  this.statement.columns[this._receivedFieldsCount] : new Packets.ColumnDefinition(packet);\n    const field = new Packets.ColumnDefinition(\n      packet,\n      connection.clientEncoding\n    );\n    this._receivedFieldsCount++;\n    this._fields[this._resultIndex].push(field);\n    if (this._receivedFieldsCount === this._fieldCount) {\n      fields = this._fields[this._resultIndex];\n      this.emit(\'fields\', fields, this._resultIndex);\n      return Execute.prototype.fieldsEOF;\n    }\n    return Execute.prototype.readField;\n  }\n\n  fieldsEOF(packet, connection) {\n    // check EOF\n    if (!packet.isEOF()) {\n      return connection.protocolError(\'Expected EOF packet\');\n    }\n    this._rowParser = new (this.buildParserFromFields(\n      this._fields[this._resultIndex],\n      connection\n    ))();\n    return Execute.prototype.row;\n  }\n}\n\nExecute.prototype.done = Query.prototype.done;\nExecute.prototype.doneInsert = Query.prototype.doneInsert;\nExecute.prototype.resultsetHeader = Query.prototype.resultsetHeader;\nExecute.prototype._findOrCreateReadStream =\n  Query.prototype._findOrCreateReadStream;\nExecute.prototype._streamLocalInfile = Query.prototype._streamLocalInfile;\nExecute.prototype._setTimeout = Query.prototype._setTimeout;\nExecute.prototype._handleTimeoutError = Query.prototype._handleTimeoutError;\nExecute.prototype.row = Query.prototype.row;\nExecute.prototype.stream = Query.prototype.stream;\n\nmodule.exports = Execute;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/commands/execute.js?')},"./node_modules/mysql2/lib/commands/index.js":
/*!***************************************************!*\
  !*** ./node_modules/mysql2/lib/commands/index.js ***!
  \***************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst ClientHandshake = __webpack_require__(/*! ./client_handshake.js */ "./node_modules/mysql2/lib/commands/client_handshake.js");\nconst ServerHandshake = __webpack_require__(/*! ./server_handshake.js */ "./node_modules/mysql2/lib/commands/server_handshake.js");\nconst Query = __webpack_require__(/*! ./query.js */ "./node_modules/mysql2/lib/commands/query.js");\nconst Prepare = __webpack_require__(/*! ./prepare.js */ "./node_modules/mysql2/lib/commands/prepare.js");\nconst CloseStatement = __webpack_require__(/*! ./close_statement.js */ "./node_modules/mysql2/lib/commands/close_statement.js");\nconst Execute = __webpack_require__(/*! ./execute.js */ "./node_modules/mysql2/lib/commands/execute.js");\nconst Ping = __webpack_require__(/*! ./ping.js */ "./node_modules/mysql2/lib/commands/ping.js");\nconst RegisterSlave = __webpack_require__(/*! ./register_slave.js */ "./node_modules/mysql2/lib/commands/register_slave.js");\nconst BinlogDump = __webpack_require__(/*! ./binlog_dump.js */ "./node_modules/mysql2/lib/commands/binlog_dump.js");\nconst ChangeUser = __webpack_require__(/*! ./change_user.js */ "./node_modules/mysql2/lib/commands/change_user.js");\nconst Quit = __webpack_require__(/*! ./quit.js */ "./node_modules/mysql2/lib/commands/quit.js");\n\nmodule.exports = {\n  ClientHandshake,\n  ServerHandshake,\n  Query,\n  Prepare,\n  CloseStatement,\n  Execute,\n  Ping,\n  RegisterSlave,\n  BinlogDump,\n  ChangeUser,\n  Quit\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/commands/index.js?')},"./node_modules/mysql2/lib/commands/ping.js":
/*!**************************************************!*\
  !*** ./node_modules/mysql2/lib/commands/ping.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Command = __webpack_require__(/*! ./command */ "./node_modules/mysql2/lib/commands/command.js");\nconst CommandCode = __webpack_require__(/*! ../constants/commands */ "./node_modules/mysql2/lib/constants/commands.js");\nconst Packet = __webpack_require__(/*! ../packets/packet */ "./node_modules/mysql2/lib/packets/packet.js");\n\n// TODO: time statistics?\n// usefull for queue size and network latency monitoring\n// store created,sent,reply timestamps\nclass Ping extends Command {\n  constructor(callback) {\n    super();\n    this.onResult = callback;\n  }\n\n  start(packet, connection) {\n    const ping = new Packet(\n      0,\n      Buffer.from([1, 0, 0, 0, CommandCode.PING]),\n      0,\n      5\n    );\n    connection.writePacket(ping);\n    return Ping.prototype.pingResponse;\n  }\n\n  pingResponse() {\n    // TODO: check it\'s OK packet. error check already done in caller\n    if (this.onResult) {\n      process.nextTick(this.onResult.bind(this));\n    }\n    return null;\n  }\n}\n\nmodule.exports = Ping;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/commands/ping.js?')},"./node_modules/mysql2/lib/commands/prepare.js":
/*!*****************************************************!*\
  !*** ./node_modules/mysql2/lib/commands/prepare.js ***!
  \*****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Packets = __webpack_require__(/*! ../packets/index.js */ "./node_modules/mysql2/lib/packets/index.js");\nconst Command = __webpack_require__(/*! ./command.js */ "./node_modules/mysql2/lib/commands/command.js");\nconst CloseStatement = __webpack_require__(/*! ./close_statement.js */ "./node_modules/mysql2/lib/commands/close_statement.js");\nconst Execute = __webpack_require__(/*! ./execute.js */ "./node_modules/mysql2/lib/commands/execute.js");\n\nclass PreparedStatementInfo {\n  constructor(query, id, columns, parameters, connection) {\n    this.query = query;\n    this.id = id;\n    this.columns = columns;\n    this.parameters = parameters;\n    this.rowParser = null;\n    this._connection = connection;\n  }\n\n  close() {\n    return this._connection.addCommand(new CloseStatement(this.id));\n  }\n\n  execute(parameters, callback) {\n    if (typeof parameters === \'function\') {\n      callback = parameters;\n      parameters = [];\n    }\n    return this._connection.addCommand(\n      new Execute({ statement: this, values: parameters }, callback)\n    );\n  }\n}\n\nclass Prepare extends Command {\n  constructor(options, callback) {\n    super();\n    this.query = options.sql;\n    this.onResult = callback;\n    this.id = 0;\n    this.fieldCount = 0;\n    this.parameterCount = 0;\n    this.fields = [];\n    this.parameterDefinitions = [];\n    this.options = options;\n  }\n\n  start(packet, connection) {\n    const Connection = connection.constructor;\n    this.key = Connection.statementKey(this.options);\n    const statement = connection._statements.get(this.key);\n    if (statement) {\n      if (this.onResult) {\n        this.onResult(null, statement);\n      }\n      return null;\n    }\n    const cmdPacket = new Packets.PrepareStatement(\n      this.query,\n      connection.config.charsetNumber\n    );\n    connection.writePacket(cmdPacket.toPacket(1));\n    return Prepare.prototype.prepareHeader;\n  }\n\n  prepareHeader(packet, connection) {\n    const header = new Packets.PreparedStatementHeader(packet);\n    this.id = header.id;\n    this.fieldCount = header.fieldCount;\n    this.parameterCount = header.parameterCount;\n    if (this.parameterCount > 0) {\n      return Prepare.prototype.readParameter;\n    } if (this.fieldCount > 0) {\n      return Prepare.prototype.readField;\n    } \n    return this.prepareDone(connection);\n    \n  }\n\n  readParameter(packet, connection) {\n    const def = new Packets.ColumnDefinition(packet, connection.clientEncoding);\n    this.parameterDefinitions.push(def);\n    if (this.parameterDefinitions.length === this.parameterCount) {\n      return Prepare.prototype.parametersEOF;\n    }\n    return this.readParameter;\n  }\n\n  readField(packet, connection) {\n    const def = new Packets.ColumnDefinition(packet, connection.clientEncoding);\n    this.fields.push(def);\n    if (this.fields.length === this.fieldCount) {\n      return Prepare.prototype.fieldsEOF;\n    }\n    return Prepare.prototype.readField;\n  }\n\n  parametersEOF(packet, connection) {\n    if (!packet.isEOF()) {\n      return connection.protocolError(\'Expected EOF packet after parameters\');\n    }\n    if (this.fieldCount > 0) {\n      return Prepare.prototype.readField;\n    } \n    return this.prepareDone(connection);\n    \n  }\n\n  fieldsEOF(packet, connection) {\n    if (!packet.isEOF()) {\n      return connection.protocolError(\'Expected EOF packet after fields\');\n    }\n    return this.prepareDone(connection);\n  }\n\n  prepareDone(connection) {\n    const statement = new PreparedStatementInfo(\n      this.query,\n      this.id,\n      this.fields,\n      this.parameterDefinitions,\n      connection\n    );\n    connection._statements.set(this.key, statement);\n    if (this.onResult) {\n      this.onResult(null, statement);\n    }\n    return null;\n  }\n}\n\nmodule.exports = Prepare;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/commands/prepare.js?')},"./node_modules/mysql2/lib/commands/query.js":
/*!***************************************************!*\
  !*** ./node_modules/mysql2/lib/commands/query.js ***!
  \***************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst process = __webpack_require__(/*! process */ \"process\");\nconst Timers = __webpack_require__(/*! timers */ \"timers\");\n\nconst Readable = (__webpack_require__(/*! stream */ \"stream\").Readable);\n\nconst Command = __webpack_require__(/*! ./command.js */ \"./node_modules/mysql2/lib/commands/command.js\");\nconst Packets = __webpack_require__(/*! ../packets/index.js */ \"./node_modules/mysql2/lib/packets/index.js\");\nconst getTextParser = __webpack_require__(/*! ../parsers/text_parser.js */ \"./node_modules/mysql2/lib/parsers/text_parser.js\");\nconst ServerStatus = __webpack_require__(/*! ../constants/server_status.js */ \"./node_modules/mysql2/lib/constants/server_status.js\");\n\nconst EmptyPacket = new Packets.Packet(0, Buffer.allocUnsafe(4), 0, 4);\n\n// http://dev.mysql.com/doc/internals/en/com-query.html\nclass Query extends Command {\n  constructor(options, callback) {\n    super();\n    this.sql = options.sql;\n    this.values = options.values;\n    this._queryOptions = options;\n    this.namedPlaceholders = options.namedPlaceholders || false;\n    this.onResult = callback;\n    this.timeout = options.timeout;\n    this.queryTimeout = null;\n    this._fieldCount = 0;\n    this._rowParser = null;\n    this._fields = [];\n    this._rows = [];\n    this._receivedFieldsCount = 0;\n    this._resultIndex = 0;\n    this._localStream = null;\n    this._unpipeStream = function() {};\n    this._streamFactory = options.infileStreamFactory;\n    this._connection = null;\n  }\n\n  then() {\n    const err =\n      \"You have tried to call .then(), .catch(), or invoked await on the result of query that is not a promise, which is a programming error. Try calling con.promise().query(), or require('mysql2/promise') instead of 'mysql2' for a promise-compatible version of the query interface. To learn how to use async/await or Promises check out documentation at https://www.npmjs.com/package/mysql2#using-promise-wrapper, or the mysql2 documentation at https://github.com/sidorares/node-mysql2/tree/master/documentation/Promise-Wrapper.md\";\n    // eslint-disable-next-line\n    console.log(err);\n    throw new Error(err);\n  }\n\n  /* eslint no-unused-vars: [\"error\", { \"argsIgnorePattern\": \"^_\" }] */\n  start(_packet, connection) {\n    if (connection.config.debug) {\n      // eslint-disable-next-line\n      console.log('        Sending query command: %s', this.sql);\n    }\n    this._connection = connection;\n    this.options = Object.assign({}, connection.config, this._queryOptions);\n    this._setTimeout();\n\n    const cmdPacket = new Packets.Query(\n      this.sql,\n      connection.config.charsetNumber\n    );\n    connection.writePacket(cmdPacket.toPacket(1));\n    return Query.prototype.resultsetHeader;\n  }\n\n  done() {\n    this._unpipeStream();\n    // if all ready timeout, return null directly\n    if (this.timeout && !this.queryTimeout) {\n      return null;\n    }\n    // else clear timer\n    if (this.queryTimeout) {\n      Timers.clearTimeout(this.queryTimeout);\n      this.queryTimeout = null;\n    }\n    if (this.onResult) {\n      let rows, fields;\n      if (this._resultIndex === 0) {\n        rows = this._rows[0];\n        fields = this._fields[0];\n      } else {\n        rows = this._rows;\n        fields = this._fields;\n      }\n      if (fields) {\n        process.nextTick(() => {\n          this.onResult(null, rows, fields);\n        });\n      } else {\n        process.nextTick(() => {\n          this.onResult(null, rows);\n        });\n      }\n    }\n    return null;\n  }\n\n  doneInsert(rs) {\n    if (this._localStreamError) {\n      if (this.onResult) {\n        this.onResult(this._localStreamError, rs);\n      } else {\n        this.emit('error', this._localStreamError);\n      }\n      return null;\n    }\n    this._rows.push(rs);\n    this._fields.push(void 0);\n    this.emit('fields', void 0);\n    this.emit('result', rs);\n    if (rs.serverStatus & ServerStatus.SERVER_MORE_RESULTS_EXISTS) {\n      this._resultIndex++;\n      return this.resultsetHeader;\n    }\n    return this.done();\n  }\n\n  resultsetHeader(packet, connection) {\n    const rs = new Packets.ResultSetHeader(packet, connection);\n    this._fieldCount = rs.fieldCount;\n    if (connection.config.debug) {\n      // eslint-disable-next-line\n      console.log(\n        `        Resultset header received, expecting ${rs.fieldCount} column definition packets`\n      );\n    }\n    if (this._fieldCount === 0) {\n      return this.doneInsert(rs);\n    }\n    if (this._fieldCount === null) {\n      return this._streamLocalInfile(connection, rs.infileName);\n    }\n    this._receivedFieldsCount = 0;\n    this._rows.push([]);\n    this._fields.push([]);\n    return this.readField;\n  }\n\n  _streamLocalInfile(connection, path) {\n    if (this._streamFactory) {\n      this._localStream = this._streamFactory(path);\n    } else {\n      this._localStreamError = new Error(\n        `As a result of LOCAL INFILE command server wants to read ${path} file, but as of v2.0 you must provide streamFactory option returning ReadStream.`\n      );\n      connection.writePacket(EmptyPacket);\n      return this.infileOk;\n    }\n\n    const onConnectionError = () => {\n      this._unpipeStream();\n    };\n    const onDrain = () => {\n      this._localStream.resume();\n    };\n    const onPause = () => {\n      this._localStream.pause();\n    };\n    const onData = function(data) {\n      const dataWithHeader = Buffer.allocUnsafe(data.length + 4);\n      data.copy(dataWithHeader, 4);\n      connection.writePacket(\n        new Packets.Packet(0, dataWithHeader, 0, dataWithHeader.length)\n      );\n    };\n    const onEnd = () => {\n      connection.removeListener('error', onConnectionError);\n      connection.writePacket(EmptyPacket);\n    };\n    const onError = err => {\n      this._localStreamError = err;\n      connection.removeListener('error', onConnectionError);\n      connection.writePacket(EmptyPacket);\n    };\n    this._unpipeStream = () => {\n      connection.stream.removeListener('pause', onPause);\n      connection.stream.removeListener('drain', onDrain);\n      this._localStream.removeListener('data', onData);\n      this._localStream.removeListener('end', onEnd);\n      this._localStream.removeListener('error', onError);\n    };\n    connection.stream.on('pause', onPause);\n    connection.stream.on('drain', onDrain);\n    this._localStream.on('data', onData);\n    this._localStream.on('end', onEnd);\n    this._localStream.on('error', onError);\n    connection.once('error', onConnectionError);\n    return this.infileOk;\n  }\n\n  readField(packet, connection) {\n    this._receivedFieldsCount++;\n    // Often there is much more data in the column definition than in the row itself\n    // If you set manually _fields[0] to array of ColumnDefinition's (from previous call)\n    // you can 'cache' result of parsing. Field packets still received, but ignored in that case\n    // this is the reason _receivedFieldsCount exist (otherwise we could just use current length of fields array)\n    if (this._fields[this._resultIndex].length !== this._fieldCount) {\n      const field = new Packets.ColumnDefinition(\n        packet,\n        connection.clientEncoding\n      );\n      this._fields[this._resultIndex].push(field);\n      if (connection.config.debug) {\n        /* eslint-disable no-console */\n        console.log('        Column definition:');\n        console.log(`          name: ${field.name}`);\n        console.log(`          type: ${field.columnType}`);\n        console.log(`         flags: ${field.flags}`);\n        /* eslint-enable no-console */\n      }\n    }\n    // last field received\n    if (this._receivedFieldsCount === this._fieldCount) {\n      const fields = this._fields[this._resultIndex];\n      this.emit('fields', fields);\n      this._rowParser = new (getTextParser(fields, this.options, connection.config))(fields);\n      return Query.prototype.fieldsEOF;\n    }\n    return Query.prototype.readField;\n  }\n\n  fieldsEOF(packet, connection) {\n    // check EOF\n    if (!packet.isEOF()) {\n      return connection.protocolError('Expected EOF packet');\n    }\n    return this.row;\n  }\n\n  /* eslint no-unused-vars: [\"error\", { \"argsIgnorePattern\": \"^_\" }] */\n  row(packet, _connection) { \n    if (packet.isEOF()) {\n      const status = packet.eofStatusFlags();\n      const moreResults = status & ServerStatus.SERVER_MORE_RESULTS_EXISTS;\n      if (moreResults) {\n        this._resultIndex++;\n        return Query.prototype.resultsetHeader;\n      }\n      return this.done();\n    }\n    let row;\n    try {\n      row = this._rowParser.next(\n        packet,\n        this._fields[this._resultIndex],\n        this.options\n      );\n    } catch (err) {\n      this._localStreamError = err;\n      return this.doneInsert(null);\n    }\n    if (this.onResult) {\n      this._rows[this._resultIndex].push(row);\n    } else {\n      this.emit('result', row);\n    }\n    return Query.prototype.row;\n  }\n\n  infileOk(packet, connection) {\n    const rs = new Packets.ResultSetHeader(packet, connection);\n    return this.doneInsert(rs);\n  }\n\n  stream(options) {\n    options = options || {};\n    options.objectMode = true;\n    const stream = new Readable(options);\n    stream._read = () => {\n      this._connection && this._connection.resume();\n    };\n    this.on('result', row => {\n      if (!stream.push(row)) {\n        this._connection.pause();\n      }\n      stream.emit('result', row); // replicate old emitter\n    });\n    this.on('error', err => {\n      stream.emit('error', err); // Pass on any errors\n    });\n    this.on('end', () => {\n      stream.push(null); // pushing null, indicating EOF\n      stream.emit('close'); // notify readers that query has completed\n    });\n    this.on('fields', fields => {\n      stream.emit('fields', fields); // replicate old emitter\n    });\n    return stream;\n  }\n\n  _setTimeout() {\n    if (this.timeout) {\n      const timeoutHandler = this._handleTimeoutError.bind(this);\n      this.queryTimeout = Timers.setTimeout(\n        timeoutHandler,\n        this.timeout\n      );\n    }\n  }\n\n  _handleTimeoutError() {\n    if (this.queryTimeout) {\n      Timers.clearTimeout(this.queryTimeout);\n      this.queryTimeout = null;\n    }\n    \n    const err = new Error('Query inactivity timeout');\n    err.errorno = 'PROTOCOL_SEQUENCE_TIMEOUT';\n    err.code = 'PROTOCOL_SEQUENCE_TIMEOUT';\n    err.syscall = 'query';\n\n    if (this.onResult) {\n      this.onResult(err);\n    } else {\n      this.emit('error', err);\n    }\n  }\n}\n\nQuery.prototype.catch = Query.prototype.then;\n\nmodule.exports = Query;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/commands/query.js?")},"./node_modules/mysql2/lib/commands/quit.js":
/*!**************************************************!*\
  !*** ./node_modules/mysql2/lib/commands/quit.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Command = __webpack_require__(/*! ./command.js */ "./node_modules/mysql2/lib/commands/command.js");\nconst CommandCode = __webpack_require__(/*! ../constants/commands.js */ "./node_modules/mysql2/lib/constants/commands.js");\nconst Packet = __webpack_require__(/*! ../packets/packet.js */ "./node_modules/mysql2/lib/packets/packet.js");\n\nclass Quit extends Command {\n  constructor(callback) {\n    super();\n    this.done = callback;\n  }\n\n  start(packet, connection) {\n    connection._closing = true;\n    const quit = new Packet(\n      0,\n      Buffer.from([1, 0, 0, 0, CommandCode.QUIT]),\n      0,\n      5\n    );\n    if (this.done) {\n      this.done();\n    }\n    connection.writePacket(quit);\n    return null;\n  }\n}\n\nmodule.exports = Quit;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/commands/quit.js?')},"./node_modules/mysql2/lib/commands/register_slave.js":
/*!************************************************************!*\
  !*** ./node_modules/mysql2/lib/commands/register_slave.js ***!
  \************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Command = __webpack_require__(/*! ./command */ "./node_modules/mysql2/lib/commands/command.js");\nconst Packets = __webpack_require__(/*! ../packets */ "./node_modules/mysql2/lib/packets/index.js");\n\nclass RegisterSlave extends Command {\n  constructor(opts, callback) {\n    super();\n    this.onResult = callback;\n    this.opts = opts;\n  }\n\n  start(packet, connection) {\n    const newPacket = new Packets.RegisterSlave(this.opts);\n    connection.writePacket(newPacket.toPacket(1));\n    return RegisterSlave.prototype.registerResponse;\n  }\n\n  registerResponse() {\n    if (this.onResult) {\n      process.nextTick(this.onResult.bind(this));\n    }\n    return null;\n  }\n}\n\nmodule.exports = RegisterSlave;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/commands/register_slave.js?')},"./node_modules/mysql2/lib/commands/server_handshake.js":
/*!**************************************************************!*\
  !*** ./node_modules/mysql2/lib/commands/server_handshake.js ***!
  \**************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst CommandCode = __webpack_require__(/*! ../constants/commands.js */ \"./node_modules/mysql2/lib/constants/commands.js\");\nconst Errors = __webpack_require__(/*! ../constants/errors.js */ \"./node_modules/mysql2/lib/constants/errors.js\");\n\nconst Command = __webpack_require__(/*! ./command.js */ \"./node_modules/mysql2/lib/commands/command.js\");\nconst Packets = __webpack_require__(/*! ../packets/index.js */ \"./node_modules/mysql2/lib/packets/index.js\");\n\nclass ServerHandshake extends Command {\n  constructor(args) {\n    super();\n    this.args = args;\n    /*\n    this.protocolVersion = args.protocolVersion || 10;\n    this.serverVersion   = args.serverVersion;\n    this.connectionId    = args.connectionId,\n    this.statusFlags     = args.statusFlags,\n    this.characterSet    = args.characterSet,\n    this.capabilityFlags = args.capabilityFlags || 512;\n    */\n  }\n\n  start(packet, connection) {\n    const serverHelloPacket = new Packets.Handshake(this.args);\n    this.serverHello = serverHelloPacket;\n    serverHelloPacket.setScrambleData(err => {\n      if (err) {\n        connection.emit('error', new Error('Error generating random bytes'));\n        return;\n      }\n      connection.writePacket(serverHelloPacket.toPacket(0));\n    });\n    return ServerHandshake.prototype.readClientReply;\n  }\n\n  readClientReply(packet, connection) {\n    // check auth here\n    const clientHelloReply = Packets.HandshakeResponse.fromPacket(packet);\n    // TODO check we don't have something similar already\n    connection.clientHelloReply = clientHelloReply;\n    if (this.args.authCallback) {\n      this.args.authCallback(\n        {\n          user: clientHelloReply.user,\n          database: clientHelloReply.database,\n          address: connection.stream.remoteAddress,\n          authPluginData1: this.serverHello.authPluginData1,\n          authPluginData2: this.serverHello.authPluginData2,\n          authToken: clientHelloReply.authToken\n        },\n        (err, mysqlError) => {\n          // if (err)\n          if (!mysqlError) {\n            connection.writeOk();\n          } else {\n            // TODO create constants / errorToCode\n            // 1045 = ER_ACCESS_DENIED_ERROR\n            connection.writeError({\n              message: mysqlError.message || '',\n              code: mysqlError.code || 1045\n            });\n            connection.close();\n          }\n        }\n      );\n    } else {\n      connection.writeOk();\n    }\n    return ServerHandshake.prototype.dispatchCommands;\n  }\n\n  dispatchCommands(packet, connection) {\n    // command from client to server\n    let knownCommand = true;\n    const encoding = connection.clientHelloReply.encoding;\n    const commandCode = packet.readInt8();\n    switch (commandCode) {\n      case CommandCode.QUIT:\n        if (connection.listeners('quit').length) {\n          connection.emit('quit');\n        } else {\n          connection.stream.end();\n        }\n        break;\n      case CommandCode.INIT_DB:\n        if (connection.listeners('init_db').length) {\n          const schemaName = packet.readString(undefined, encoding);\n          connection.emit('init_db', schemaName);\n        } else {\n          connection.writeOk();\n        }\n        break;\n      case CommandCode.QUERY:\n        if (connection.listeners('query').length) {\n          const query = packet.readString(undefined, encoding);\n          connection.emit('query', query);\n        } else {\n          connection.writeError({\n            code: Errors.HA_ERR_INTERNAL_ERROR,\n            message: 'No query handler'\n          });\n        }\n        break;\n      case CommandCode.FIELD_LIST:\n        if (connection.listeners('field_list').length) {\n          const table = packet.readNullTerminatedString();\n          const fields = packet.readString(undefined, encoding);\n          connection.emit('field_list', table, fields);\n        } else {\n          connection.writeError({\n            code: Errors.ER_WARN_DEPRECATED_SYNTAX,\n            message:\n              'As of MySQL 5.7.11, COM_FIELD_LIST is deprecated and will be removed in a future version of MySQL.'\n          });\n        }\n        break;\n      case CommandCode.PING:\n        if (connection.listeners('ping').length) {\n          connection.emit('ping');\n        } else {\n          connection.writeOk();\n        }\n        break;\n      default:\n        knownCommand = false;\n    }\n    if (connection.listeners('packet').length) {\n      connection.emit('packet', packet.clone(), knownCommand, commandCode);\n    } else if (!knownCommand) {\n      // eslint-disable-next-line no-console\n      console.log('Unknown command:', commandCode);\n    }\n    return ServerHandshake.prototype.dispatchCommands;\n  }\n}\n\nmodule.exports = ServerHandshake;\n\n// TODO: implement server-side 4.1 authentication\n/*\n4.1 authentication: (http://bazaar.launchpad.net/~mysql/mysql-server/5.5/view/head:/sql/password.c)\n\n  SERVER:  public_seed=create_random_string()\n           send(public_seed)\n\n  CLIENT:  recv(public_seed)\n           hash_stage1=sha1(\"password\")\n           hash_stage2=sha1(hash_stage1)\n           reply=xor(hash_stage1, sha1(public_seed,hash_stage2)\n\n           // this three steps are done in scramble()\n\n           send(reply)\n\n\n  SERVER:  recv(reply)\n           hash_stage1=xor(reply, sha1(public_seed,hash_stage2))\n           candidate_hash2=sha1(hash_stage1)\n           check(candidate_hash2==hash_stage2)\n\nserver stores sha1(sha1(password)) ( hash_stag2)\n*/\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/commands/server_handshake.js?")},"./node_modules/mysql2/lib/compressed_protocol.js":
/*!********************************************************!*\
  !*** ./node_modules/mysql2/lib/compressed_protocol.js ***!
  \********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\n// connection mixins\n// implementation of http://dev.mysql.com/doc/internals/en/compression.html\n\nconst zlib = __webpack_require__(/*! zlib */ "zlib");\nconst PacketParser = __webpack_require__(/*! ./packet_parser.js */ "./node_modules/mysql2/lib/packet_parser.js");\n\nfunction handleCompressedPacket(packet) {\n  // eslint-disable-next-line consistent-this, no-invalid-this\n  const connection = this;\n  const deflatedLength = packet.readInt24();\n  const body = packet.readBuffer();\n\n  if (deflatedLength !== 0) {\n    connection.inflateQueue.push(task => {\n      zlib.inflate(body, (err, data) => {\n        if (err) {\n          connection._handleNetworkError(err);\n          return;\n        }\n        connection._bumpCompressedSequenceId(packet.numPackets);\n        connection._inflatedPacketsParser.execute(data);\n        task.done();\n      });\n    });\n  } else {\n    connection.inflateQueue.push(task => {\n      connection._bumpCompressedSequenceId(packet.numPackets);\n      connection._inflatedPacketsParser.execute(body);\n      task.done();\n    });\n  }\n}\n\nfunction writeCompressed(buffer) {\n  // http://dev.mysql.com/doc/internals/en/example-several-mysql-packets.html\n  // note: sending a MySQL Packet of the size 2^24−5 to 2^24−1 via compression\n  // leads to at least one extra compressed packet.\n  // (this is because "length of the packet before compression" need to fit\n  // into 3 byte unsigned int. "length of the packet before compression" includes\n  // 4 byte packet header, hence 2^24−5)\n  const MAX_COMPRESSED_LENGTH = 16777210;\n  let start;\n  if (buffer.length > MAX_COMPRESSED_LENGTH) {\n    for (start = 0; start < buffer.length; start += MAX_COMPRESSED_LENGTH) {\n      writeCompressed.call(\n        // eslint-disable-next-line no-invalid-this\n        this,\n        buffer.slice(start, start + MAX_COMPRESSED_LENGTH)\n      );\n    }\n    return;\n  }\n\n  // eslint-disable-next-line no-invalid-this, consistent-this\n  const connection = this;\n\n  let packetLen = buffer.length;\n  const compressHeader = Buffer.allocUnsafe(7);\n\n  // seqqueue is used here because zlib async execution is routed via thread pool\n  // internally and when we have multiple compressed packets arriving we need\n  // to assemble uncompressed result sequentially\n  (function(seqId) {\n    connection.deflateQueue.push(task => {\n      zlib.deflate(buffer, (err, compressed) => {\n        if (err) {\n          connection._handleFatalError(err);\n          return;\n        }\n        let compressedLength = compressed.length;\n\n        if (compressedLength < packetLen) {\n          compressHeader.writeUInt8(compressedLength & 0xff, 0);\n          compressHeader.writeUInt16LE(compressedLength >> 8, 1);\n          compressHeader.writeUInt8(seqId, 3);\n          compressHeader.writeUInt8(packetLen & 0xff, 4);\n          compressHeader.writeUInt16LE(packetLen >> 8, 5);\n          connection.writeUncompressed(compressHeader);\n          connection.writeUncompressed(compressed);\n        } else {\n          // http://dev.mysql.com/doc/internals/en/uncompressed-payload.html\n          // To send an uncompressed payload:\n          //   - set length of payload before compression to 0\n          //   - the compressed payload contains the uncompressed payload instead.\n          compressedLength = packetLen;\n          packetLen = 0;\n          compressHeader.writeUInt8(compressedLength & 0xff, 0);\n          compressHeader.writeUInt16LE(compressedLength >> 8, 1);\n          compressHeader.writeUInt8(seqId, 3);\n          compressHeader.writeUInt8(packetLen & 0xff, 4);\n          compressHeader.writeUInt16LE(packetLen >> 8, 5);\n          connection.writeUncompressed(compressHeader);\n          connection.writeUncompressed(buffer);\n        }\n        task.done();\n      });\n    });\n  })(connection.compressedSequenceId);\n  connection._bumpCompressedSequenceId(1);\n}\n\nfunction enableCompression(connection) {\n  connection._lastWrittenPacketId = 0;\n  connection._lastReceivedPacketId = 0;\n\n  connection._handleCompressedPacket = handleCompressedPacket;\n  connection._inflatedPacketsParser = new PacketParser(p => {\n    connection.handlePacket(p);\n  }, 4);\n  connection._inflatedPacketsParser._lastPacket = 0;\n  connection.packetParser = new PacketParser(packet => {\n    connection._handleCompressedPacket(packet);\n  }, 7);\n\n  connection.writeUncompressed = connection.write;\n  connection.write = writeCompressed;\n\n  const seqqueue = __webpack_require__(/*! seq-queue */ "./node_modules/seq-queue/index.js");\n  connection.inflateQueue = seqqueue.createQueue();\n  connection.deflateQueue = seqqueue.createQueue();\n}\n\nmodule.exports = {\n  enableCompression: enableCompression\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/compressed_protocol.js?')},"./node_modules/mysql2/lib/connection.js":
/*!***********************************************!*\
  !*** ./node_modules/mysql2/lib/connection.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("// This file was modified by Oracle on June 1, 2021.\n// The changes involve new logic to handle an additional ERR Packet sent by\n// the MySQL server when the connection is closed unexpectedly.\n// Modifications copyright (c) 2021, Oracle and/or its affiliates.\n\n// This file was modified by Oracle on June 17, 2021.\n// The changes involve logic to ensure the socket connection is closed when\n// there is a fatal error.\n// Modifications copyright (c) 2021, Oracle and/or its affiliates.\n\n\n\nconst Net = __webpack_require__(/*! net */ \"net\");\nconst Tls = __webpack_require__(/*! tls */ \"tls\");\nconst Timers = __webpack_require__(/*! timers */ \"timers\");\nconst EventEmitter = (__webpack_require__(/*! events */ \"events\").EventEmitter);\nconst Readable = (__webpack_require__(/*! stream */ \"stream\").Readable);\nconst Queue = __webpack_require__(/*! denque */ \"./node_modules/denque/index.js\");\nconst SqlString = __webpack_require__(/*! sqlstring */ \"./node_modules/sqlstring/index.js\");\nconst LRU = __webpack_require__(/*! lru-cache */ \"./node_modules/lru-cache/index.js\");\n\nconst PacketParser = __webpack_require__(/*! ./packet_parser.js */ \"./node_modules/mysql2/lib/packet_parser.js\");\nconst Packets = __webpack_require__(/*! ./packets/index.js */ \"./node_modules/mysql2/lib/packets/index.js\");\nconst Commands = __webpack_require__(/*! ./commands/index.js */ \"./node_modules/mysql2/lib/commands/index.js\");\nconst ConnectionConfig = __webpack_require__(/*! ./connection_config.js */ \"./node_modules/mysql2/lib/connection_config.js\");\nconst CharsetToEncoding = __webpack_require__(/*! ./constants/charset_encodings.js */ \"./node_modules/mysql2/lib/constants/charset_encodings.js\");\n\nlet _connectionId = 0;\n\nlet convertNamedPlaceholders = null;\n\nclass Connection extends EventEmitter {\n  constructor(opts) {\n    super();\n    this.config = opts.config;\n    // TODO: fill defaults\n    // if no params, connect to /var/lib/mysql/mysql.sock ( /tmp/mysql.sock on OSX )\n    // if host is given, connect to host:3306\n    // TODO: use `/usr/local/mysql/bin/mysql_config --socket` output? as default socketPath\n    // if there is no host/port and no socketPath parameters?\n    if (!opts.config.stream) {\n      if (opts.config.socketPath) {\n        this.stream = Net.connect(opts.config.socketPath);\n      } else {\n        this.stream = Net.connect(\n          opts.config.port,\n          opts.config.host\n        );\n\n        // Enable keep-alive on the socket.  It's disabled by default, but the\n        // user can enable it and supply an initial delay.\n        this.stream.setKeepAlive(true, this.config.keepAliveInitialDelay);\n      }\n      // if stream is a function, treat it as \"stream agent / factory\"\n    } else if (typeof opts.config.stream === 'function')  {\n      this.stream = opts.config.stream(opts);\n    } else {\n      this.stream = opts.config.stream;\n    }\n\n    this._internalId = _connectionId++;\n    this._commands = new Queue();\n    this._command = null;\n    this._paused = false;\n    this._paused_packets = new Queue();\n    this._statements = new LRU({\n      max: this.config.maxPreparedStatements,\n      dispose: function(key, statement) {\n        statement.close();\n      }\n    });\n    this.serverCapabilityFlags = 0;\n    this.authorized = false;\n    this.sequenceId = 0;\n    this.compressedSequenceId = 0;\n    this.threadId = null;\n    this._handshakePacket = null;\n    this._fatalError = null;\n    this._protocolError = null;\n    this._outOfOrderPackets = [];\n    this.clientEncoding = CharsetToEncoding[this.config.charsetNumber];\n    this.stream.on('error', this._handleNetworkError.bind(this));\n    // see https://gist.github.com/khoomeister/4985691#use-that-instead-of-bind\n    this.packetParser = new PacketParser(p => {\n      this.handlePacket(p);\n    });\n    this.stream.on('data', data => {\n      if (this.connectTimeout) {\n        Timers.clearTimeout(this.connectTimeout);\n        this.connectTimeout = null;\n      }\n      this.packetParser.execute(data);\n    });\n    this.stream.on('close', () => {\n      // we need to set this flag everywhere where we want connection to close\n      if (this._closing) {\n        return;\n      }\n      if (!this._protocolError) {\n        // no particular error message before disconnect\n        this._protocolError = new Error(\n          'Connection lost: The server closed the connection.'\n        );\n        this._protocolError.fatal = true;\n        this._protocolError.code = 'PROTOCOL_CONNECTION_LOST';\n      }\n      this._notifyError(this._protocolError);\n    });\n    let handshakeCommand;\n    if (!this.config.isServer) {\n      handshakeCommand = new Commands.ClientHandshake(this.config.clientFlags);\n      handshakeCommand.on('end', () => {\n        // this happens when handshake finishes early either because there was\n        // some fatal error or the server sent an error packet instead of\n        // an hello packet (for example, 'Too many connactions' error)\n        if (!handshakeCommand.handshake || this._fatalError || this._protocolError) {\n          return;\n        }\n        this._handshakePacket = handshakeCommand.handshake;\n        this.threadId = handshakeCommand.handshake.connectionId;\n        this.emit('connect', handshakeCommand.handshake);\n      });\n      handshakeCommand.on('error', err => {\n        this._closing = true;\n        this._notifyError(err);\n      });\n      this.addCommand(handshakeCommand);\n    }\n    // in case there was no initiall handshake but we need to read sting, assume it utf-8\n    // most common example: \"Too many connections\" error ( packet is sent immediately on connection attempt, we don't know server encoding yet)\n    // will be overwrittedn with actial encoding value as soon as server handshake packet is received\n    this.serverEncoding = 'utf8';\n    if (this.config.connectTimeout) {\n      const timeoutHandler = this._handleTimeoutError.bind(this);\n      this.connectTimeout = Timers.setTimeout(\n        timeoutHandler,\n        this.config.connectTimeout\n      );\n    }\n  }\n\n  promise(promiseImpl) {\n    const PromiseConnection = (__webpack_require__(/*! ../promise */ \"./node_modules/mysql2/promise.js\").PromiseConnection);\n    return new PromiseConnection(this, promiseImpl);\n  }\n\n  _addCommandClosedState(cmd) {\n    const err = new Error(\n      \"Can't add new command when connection is in closed state\"\n    );\n    err.fatal = true;\n    if (cmd.onResult) {\n      cmd.onResult(err);\n    } else {\n      this.emit('error', err);\n    }\n  }\n\n  _handleFatalError(err) {\n    err.fatal = true;\n    // stop receiving packets\n    this.stream.removeAllListeners('data');\n    this.addCommand = this._addCommandClosedState;\n    this.write = () => {\n      this.emit('error', new Error(\"Can't write in closed state\"));\n    };\n    this._notifyError(err);\n    this._fatalError = err;\n  }\n\n  _handleNetworkError(err) {\n    if (this.connectTimeout) {\n      Timers.clearTimeout(this.connectTimeout);\n      this.connectTimeout = null;\n    }\n    // Do not throw an error when a connection ends with a RST,ACK packet\n    if (err.errno === 'ECONNRESET' && this._closing) {\n      return;\n    }\n    this._handleFatalError(err);\n  }\n\n  _handleTimeoutError() {\n    if (this.connectTimeout) {\n      Timers.clearTimeout(this.connectTimeout);\n      this.connectTimeout = null;\n    }\n    this.stream.destroy && this.stream.destroy();\n    const err = new Error('connect ETIMEDOUT');\n    err.errorno = 'ETIMEDOUT';\n    err.code = 'ETIMEDOUT';\n    err.syscall = 'connect';\n    this._handleNetworkError(err);\n  }\n\n  // notify all commands in the queue and bubble error as connection \"error\"\n  // called on stream error or unexpected termination\n  _notifyError(err) {\n    if (this.connectTimeout) {\n      Timers.clearTimeout(this.connectTimeout);\n      this.connectTimeout = null;\n    }\n    // prevent from emitting 'PROTOCOL_CONNECTION_LOST' after EPIPE or ECONNRESET\n    if (this._fatalError) {\n      return;\n    }\n    let command;\n    // if there is no active command, notify connection\n    // if there are commands and all of them have callbacks, pass error via callback\n    let bubbleErrorToConnection = !this._command;\n    if (this._command && this._command.onResult) {\n      this._command.onResult(err);\n      this._command = null;\n      // connection handshake is special because we allow it to be implicit\n      // if error happened during handshake, but there are others commands in queue\n      // then bubble error to other commands and not to connection\n    } else if (\n      !(\n        this._command &&\n        this._command.constructor === Commands.ClientHandshake &&\n        this._commands.length > 0\n      )\n    ) {\n      bubbleErrorToConnection = true;\n    }\n    while ((command = this._commands.shift())) {\n      if (command.onResult) {\n        command.onResult(err);\n      } else {\n        bubbleErrorToConnection = true;\n      }\n    }\n    // notify connection if some comands in the queue did not have callbacks\n    // or if this is pool connection ( so it can be removed from pool )\n    if (bubbleErrorToConnection || this._pool) {\n      this.emit('error', err);\n    }\n    // close connection after emitting the event in case of a fatal error\n    if (err.fatal) {\n      this.close();\n    }\n  }\n\n  write(buffer) {\n    const result = this.stream.write(buffer, err => {\n      if (err) {\n        this._handleNetworkError(err);\n      }\n    });\n\n    if (!result) {\n      this.stream.emit('pause');\n    }\n  }\n\n  // http://dev.mysql.com/doc/internals/en/sequence-id.html\n  //\n  // The sequence-id is incremented with each packet and may wrap around.\n  // It starts at 0 and is reset to 0 when a new command\n  // begins in the Command Phase.\n  // http://dev.mysql.com/doc/internals/en/example-several-mysql-packets.html\n  _resetSequenceId() {\n    this.sequenceId = 0;\n    this.compressedSequenceId = 0;\n  }\n\n  _bumpCompressedSequenceId(numPackets) {\n    this.compressedSequenceId += numPackets;\n    this.compressedSequenceId %= 256;\n  }\n\n  _bumpSequenceId(numPackets) {\n    this.sequenceId += numPackets;\n    this.sequenceId %= 256;\n  }\n\n  writePacket(packet) {\n    const MAX_PACKET_LENGTH = 16777215;\n    const length = packet.length();\n    let chunk, offset, header;\n    if (length < MAX_PACKET_LENGTH) {\n      packet.writeHeader(this.sequenceId);\n      if (this.config.debug) {\n        // eslint-disable-next-line no-console\n        console.log(\n          `${this._internalId} ${this.connectionId} <== ${this._command._commandName}#${this._command.stateName()}(${[this.sequenceId, packet._name, packet.length()].join(',')})`\n        );\n        // eslint-disable-next-line no-console\n        console.log(\n          `${this._internalId} ${this.connectionId} <== ${packet.buffer.toString('hex')}`\n        );\n      }\n      this._bumpSequenceId(1);\n      this.write(packet.buffer);\n    } else {\n      if (this.config.debug) {\n        // eslint-disable-next-line no-console\n        console.log(\n          `${this._internalId} ${this.connectionId} <== Writing large packet, raw content not written:`\n        );\n        // eslint-disable-next-line no-console\n        console.log(\n          `${this._internalId} ${this.connectionId} <== ${this._command._commandName}#${this._command.stateName()}(${[this.sequenceId, packet._name, packet.length()].join(',')})`\n        );\n      }\n      for (offset = 4; offset < 4 + length; offset += MAX_PACKET_LENGTH) {\n        chunk = packet.buffer.slice(offset, offset + MAX_PACKET_LENGTH);\n        if (chunk.length === MAX_PACKET_LENGTH) {\n          header = Buffer.from([0xff, 0xff, 0xff, this.sequenceId]);\n        } else {\n          header = Buffer.from([\n            chunk.length & 0xff,\n            (chunk.length >> 8) & 0xff,\n            (chunk.length >> 16) & 0xff,\n            this.sequenceId\n          ]);\n        }\n        this._bumpSequenceId(1);\n        this.write(header);\n        this.write(chunk);\n      }\n    }\n  }\n\n  // 0.11+ environment\n  startTLS(onSecure) {\n    if (this.config.debug) {\n      // eslint-disable-next-line no-console\n      console.log('Upgrading connection to TLS');\n    }\n    const secureContext = Tls.createSecureContext({\n      ca: this.config.ssl.ca,\n      cert: this.config.ssl.cert,\n      ciphers: this.config.ssl.ciphers,\n      key: this.config.ssl.key,\n      passphrase: this.config.ssl.passphrase,\n      minVersion: this.config.ssl.minVersion\n    });\n    const rejectUnauthorized = this.config.ssl.rejectUnauthorized;\n    let secureEstablished = false;\n    const secureSocket = new Tls.TLSSocket(this.stream, {\n      rejectUnauthorized: rejectUnauthorized,\n      requestCert: true,\n      secureContext: secureContext,\n      isServer: false\n    });\n    // error handler for secure socket\n    secureSocket.on('_tlsError', err => {\n      if (secureEstablished) {\n        this._handleNetworkError(err);\n      } else {\n        onSecure(err);\n      }\n    });\n    secureSocket.on('secure', () => {\n      secureEstablished = true;\n      onSecure(rejectUnauthorized ? secureSocket.ssl.verifyError() : null);\n    });\n    secureSocket.on('data', data => {\n      this.packetParser.execute(data);\n    });\n    this.write = buffer => {\n      secureSocket.write(buffer);\n    };\n    // start TLS communications\n    secureSocket._start();\n  }\n\n  pipe() {\n    if (this.stream instanceof Net.Stream) {\n      this.stream.ondata = (data, start, end) => {\n        this.packetParser.execute(data, start, end);\n      };\n    } else {\n      this.stream.on('data', data => {\n        this.packetParser.execute(\n          data.parent,\n          data.offset,\n          data.offset + data.length\n        );\n      });\n    }\n  }\n\n  protocolError(message, code) {\n    // Starting with MySQL 8.0.24, if the client closes the connection\n    // unexpectedly, the server will send a last ERR Packet, which we can\n    // safely ignore.\n    // https://dev.mysql.com/worklog/task/?id=12999\n    if (this._closing) {\n      return;\n    }\n\n    const err = new Error(message);\n    err.fatal = true;\n    err.code = code || 'PROTOCOL_ERROR';\n    this.emit('error', err);\n  }\n\n  handlePacket(packet) {\n    if (this._paused) {\n      this._paused_packets.push(packet);\n      return;\n    }\n    if (packet) {\n      if (this.sequenceId !== packet.sequenceId) {\n        const err = new Error(\n          `Warning: got packets out of order. Expected ${this.sequenceId} but received ${packet.sequenceId}`\n        );\n        err.expected = this.sequenceId;\n        err.received = packet.sequenceId;\n        this.emit('warn', err); // REVIEW\n        // eslint-disable-next-line no-console\n        console.error(err.message);\n      }\n      this._bumpSequenceId(packet.numPackets);\n    }\n    if (this.config.debug) {\n      if (packet) {\n        // eslint-disable-next-line no-console\n        console.log(\n          ` raw: ${packet.buffer\n            .slice(packet.offset, packet.offset + packet.length())\n            .toString('hex')}`\n        );\n        // eslint-disable-next-line no-console\n        console.trace();\n        const commandName = this._command\n          ? this._command._commandName\n          : '(no command)';\n        const stateName = this._command\n          ? this._command.stateName()\n          : '(no command)';\n        // eslint-disable-next-line no-console\n        console.log(\n          `${this._internalId} ${this.connectionId} ==> ${commandName}#${stateName}(${[packet.sequenceId, packet.type(), packet.length()].join(',')})`\n        );\n      }\n    }\n    if (!this._command) {\n      const marker = packet.peekByte();\n      // If it's an Err Packet, we should use it.\n      if (marker === 0xff) {\n        const error = Packets.Error.fromPacket(packet);\n        this.protocolError(error.message, error.code);\n      } else {\n        // Otherwise, it means it's some other unexpected packet.\n        this.protocolError(\n          'Unexpected packet while no commands in the queue',\n          'PROTOCOL_UNEXPECTED_PACKET'\n        );\n      }\n      this.close();\n      return;\n    }\n    const done = this._command.execute(packet, this);\n    if (done) {\n      this._command = this._commands.shift();\n      if (this._command) {\n        this.sequenceId = 0;\n        this.compressedSequenceId = 0;\n        this.handlePacket();\n      }\n    }\n  }\n\n  addCommand(cmd) {\n    // this.compressedSequenceId = 0;\n    // this.sequenceId = 0;\n    if (this.config.debug) {\n      const commandName = cmd.constructor.name;\n      // eslint-disable-next-line no-console\n      console.log(`Add command: ${commandName}`);\n      cmd._commandName = commandName;\n    }\n    if (!this._command) {\n      this._command = cmd;\n      this.handlePacket();\n    } else {\n      this._commands.push(cmd);\n    }\n    return cmd;\n  }\n\n  format(sql, values) {\n    if (typeof this.config.queryFormat === 'function') {\n      return this.config.queryFormat.call(\n        this,\n        sql,\n        values,\n        this.config.timezone\n      );\n    }\n    const opts = {\n      sql: sql,\n      values: values\n    };\n    this._resolveNamedPlaceholders(opts);\n    return SqlString.format(\n      opts.sql,\n      opts.values,\n      this.config.stringifyObjects,\n      this.config.timezone\n    );\n  }\n\n  escape(value) {\n    return SqlString.escape(value, false, this.config.timezone);\n  }\n\n  escapeId(value) {\n    return SqlString.escapeId(value, false);\n  }\n\n  raw(sql) {\n    return SqlString.raw(sql);\n  }\n\n  _resolveNamedPlaceholders(options) {\n    let unnamed;\n    if (this.config.namedPlaceholders || options.namedPlaceholders) {\n      if (Array.isArray(options.values)) {\n        // if an array is provided as the values, assume the conversion is not necessary.\n        // this allows the usage of unnamed placeholders even if the namedPlaceholders flag is enabled.\n        return\n      }\n      if (convertNamedPlaceholders === null) {\n        convertNamedPlaceholders = __webpack_require__(/*! named-placeholders */ \"./node_modules/named-placeholders/index.js\")();\n      }\n      unnamed = convertNamedPlaceholders(options.sql, options.values);\n      options.sql = unnamed[0];\n      options.values = unnamed[1];\n    }\n  }\n\n  query(sql, values, cb) {\n    let cmdQuery;\n    if (sql.constructor === Commands.Query) {\n      cmdQuery = sql;\n    } else {\n      cmdQuery = Connection.createQuery(sql, values, cb, this.config);\n    }\n    this._resolveNamedPlaceholders(cmdQuery);\n    const rawSql = this.format(cmdQuery.sql, cmdQuery.values !== undefined ? cmdQuery.values : []);\n    cmdQuery.sql = rawSql;\n    return this.addCommand(cmdQuery);\n  }\n\n  pause() {\n    this._paused = true;\n    this.stream.pause();\n  }\n\n  resume() {\n    let packet;\n    this._paused = false;\n    while ((packet = this._paused_packets.shift())) {\n      this.handlePacket(packet);\n      // don't resume if packet hander paused connection\n      if (this._paused) {\n        return;\n      }\n    }\n    this.stream.resume();\n  }\n\n  // TODO: named placeholders support\n  prepare(options, cb) {\n    if (typeof options === 'string') {\n      options = { sql: options };\n    }\n    return this.addCommand(new Commands.Prepare(options, cb));\n  }\n\n  unprepare(sql) {\n    let options = {};\n    if (typeof sql === 'object') {\n      options = sql;\n    } else {\n      options.sql = sql;\n    }\n    const key = Connection.statementKey(options);\n    const stmt = this._statements.get(key);\n    if (stmt) {\n      this._statements.del(key);\n      stmt.close();\n    }\n    return stmt;\n  }\n\n  execute(sql, values, cb) {\n    let options = {};\n    if (typeof sql === 'object') {\n      // execute(options, cb)\n      options = sql;\n      if (typeof values === 'function') {\n        cb = values;\n      } else {\n        options.values = options.values || values;\n      }\n    } else if (typeof values === 'function') {\n      // execute(sql, cb)\n      cb = values;\n      options.sql = sql;\n      options.values = undefined;\n    } else {\n      // execute(sql, values, cb)\n      options.sql = sql;\n      options.values = values;\n    }\n    this._resolveNamedPlaceholders(options);\n    // check for values containing undefined\n    if (options.values) {\n      //If namedPlaceholder is not enabled and object is passed as bind parameters\n      if (!Array.isArray(options.values)) {\n        throw new TypeError(\n          'Bind parameters must be array if namedPlaceholders parameter is not enabled'\n        );\n      }\n      options.values.forEach(val => {\n        //If namedPlaceholder is not enabled and object is passed as bind parameters\n        if (!Array.isArray(options.values)) {\n          throw new TypeError(\n            'Bind parameters must be array if namedPlaceholders parameter is not enabled'\n          );\n        }\n        if (val === undefined) {\n          throw new TypeError(\n            'Bind parameters must not contain undefined. To pass SQL NULL specify JS null'\n          );\n        }\n        if (typeof val === 'function') {\n          throw new TypeError(\n            'Bind parameters must not contain function(s). To pass the body of a function as a string call .toString() first'\n          );\n        }\n      });\n    }\n    const executeCommand = new Commands.Execute(options, cb);\n    const prepareCommand = new Commands.Prepare(options, (err, stmt) => {\n      if (err) {\n        // skip execute command if prepare failed, we have main\n        // combined callback here\n        executeCommand.start = function() {\n          return null;\n        };\n        if (cb) {\n          cb(err);\n        } else {\n          executeCommand.emit('error', err);\n        }\n        executeCommand.emit('end');\n        return;\n      }\n      executeCommand.statement = stmt;\n    });\n    this.addCommand(prepareCommand);\n    this.addCommand(executeCommand);\n    return executeCommand;\n  }\n\n  changeUser(options, callback) {\n    if (!callback && typeof options === 'function') {\n      callback = options;\n      options = {};\n    }\n    const charsetNumber = options.charset\n      ? ConnectionConfig.getCharsetNumber(options.charset)\n      : this.config.charsetNumber;\n    return this.addCommand(\n      new Commands.ChangeUser(\n        {\n          user: options.user || this.config.user,\n          password: options.password || this.config.password,\n          passwordSha1: options.passwordSha1 || this.config.passwordSha1,\n          database: options.database || this.config.database,\n          timeout: options.timeout,\n          charsetNumber: charsetNumber,\n          currentConfig: this.config\n        },\n        err => {\n          if (err) {\n            err.fatal = true;\n          }\n          if (callback) {\n            callback(err);\n          }\n        }\n      )\n    );\n  }\n\n  // transaction helpers\n  beginTransaction(cb) {\n    return this.query('START TRANSACTION', cb);\n  }\n\n  commit(cb) {\n    return this.query('COMMIT', cb);\n  }\n\n  rollback(cb) {\n    return this.query('ROLLBACK', cb);\n  }\n\n  ping(cb) {\n    return this.addCommand(new Commands.Ping(cb));\n  }\n\n  _registerSlave(opts, cb) {\n    return this.addCommand(new Commands.RegisterSlave(opts, cb));\n  }\n\n  _binlogDump(opts, cb) {\n    return this.addCommand(new Commands.BinlogDump(opts, cb));\n  }\n\n  // currently just alias to close\n  destroy() {\n    this.close();\n  }\n\n  close() {\n    if (this.connectTimeout) {\n      Timers.clearTimeout(this.connectTimeout);\n      this.connectTimeout = null;\n    }\n    this._closing = true;\n    this.stream.end();\n    this.addCommand = this._addCommandClosedState;\n  }\n\n  createBinlogStream(opts) {\n    // TODO: create proper stream class\n    // TODO: use through2\n    let test = 1;\n    const stream = new Readable({ objectMode: true });\n    stream._read = function() {\n      return {\n        data: test++\n      };\n    };\n    this._registerSlave(opts, () => {\n      const dumpCmd = this._binlogDump(opts);\n      dumpCmd.on('event', ev => {\n        stream.push(ev);\n      });\n      dumpCmd.on('eof', () => {\n        stream.push(null);\n        // if non-blocking, then close stream to prevent errors\n        if (opts.flags && opts.flags & 0x01) {\n          this.close();\n        }\n      });\n      // TODO: pipe errors as well\n    });\n    return stream;\n  }\n\n  connect(cb) {\n    if (!cb) {\n      return;\n    }\n    if (this._fatalError || this._protocolError) {\n      return cb(this._fatalError || this._protocolError);\n    }\n    if (this._handshakePacket) {\n      return cb(null, this);\n    }\n    let connectCalled = 0;\n    function callbackOnce(isErrorHandler) {\n      return function(param) {\n        if (!connectCalled) {\n          if (isErrorHandler) {\n            cb(param);\n          } else {\n            cb(null, param);\n          }\n        }\n        connectCalled = 1;\n      };\n    }\n    this.once('error', callbackOnce(true));\n    this.once('connect', callbackOnce(false));\n  }\n\n  // ===================================\n  // outgoing server connection methods\n  // ===================================\n  writeColumns(columns) {\n    this.writePacket(Packets.ResultSetHeader.toPacket(columns.length));\n    columns.forEach(column => {\n      this.writePacket(\n        Packets.ColumnDefinition.toPacket(column, this.serverConfig.encoding)\n      );\n    });\n    this.writeEof();\n  }\n\n  // row is array of columns, not hash\n  writeTextRow(column) {\n    this.writePacket(\n      Packets.TextRow.toPacket(column, this.serverConfig.encoding)\n    );\n  }\n\n  writeTextResult(rows, columns) {\n    this.writeColumns(columns);\n    rows.forEach(row => {\n      const arrayRow = new Array(columns.length);\n      columns.forEach(column => {\n        arrayRow.push(row[column.name]);\n      });\n      this.writeTextRow(arrayRow);\n    });\n    this.writeEof();\n  }\n\n  writeEof(warnings, statusFlags) {\n    this.writePacket(Packets.EOF.toPacket(warnings, statusFlags));\n  }\n\n  writeOk(args) {\n    if (!args) {\n      args = { affectedRows: 0 };\n    }\n    this.writePacket(Packets.OK.toPacket(args, this.serverConfig.encoding));\n  }\n\n  writeError(args) {\n    // if we want to send error before initial hello was sent, use default encoding\n    const encoding = this.serverConfig ? this.serverConfig.encoding : 'cesu8';\n    this.writePacket(Packets.Error.toPacket(args, encoding));\n  }\n\n  serverHandshake(args) {\n    this.serverConfig = args;\n    this.serverConfig.encoding =\n      CharsetToEncoding[this.serverConfig.characterSet];\n    return this.addCommand(new Commands.ServerHandshake(args));\n  }\n\n  // ===============================================================\n  end(callback) {\n    if (this.config.isServer) {\n      this._closing = true;\n      const quitCmd = new EventEmitter();\n      setImmediate(() => {\n        this.stream.end();\n        quitCmd.emit('end');\n      });\n      return quitCmd;\n    }\n    // trigger error if more commands enqueued after end command\n    const quitCmd = this.addCommand(new Commands.Quit(callback));\n    this.addCommand = this._addCommandClosedState;\n    return quitCmd;\n  }\n\n  static createQuery(sql, values, cb, config) {\n    let options = {\n      rowsAsArray: config.rowsAsArray\n    };\n    if (typeof sql === 'object') {\n      // query(options, cb)\n      options = sql;\n      if (typeof values === 'function') {\n        cb = values;\n      } else if (values !== undefined) {\n        options.values = values;\n      }\n    } else if (typeof values === 'function') {\n      // query(sql, cb)\n      cb = values;\n      options.sql = sql;\n      options.values = undefined;\n    } else {\n      // query(sql, values, cb)\n      options.sql = sql;\n      options.values = values;\n    }\n    return new Commands.Query(options, cb);\n  }\n\n  static statementKey(options) {\n    return (\n      `${typeof options.nestTables}/${options.nestTables}/${options.rowsAsArray}${options.sql}`\n    );\n  }\n}\n\nif (Tls.TLSSocket) {\n  // not supported\n} else {\n  Connection.prototype.startTLS = function _startTLS(onSecure) {\n    if (this.config.debug) {\n      // eslint-disable-next-line no-console\n      console.log('Upgrading connection to TLS');\n    }\n    const crypto = __webpack_require__(/*! crypto */ \"crypto\");\n    const config = this.config;\n    const stream = this.stream;\n    const rejectUnauthorized = this.config.ssl.rejectUnauthorized;\n    const credentials = crypto.createCredentials({\n      key: config.ssl.key,\n      cert: config.ssl.cert,\n      passphrase: config.ssl.passphrase,\n      ca: config.ssl.ca,\n      ciphers: config.ssl.ciphers\n    });\n    const securePair = Tls.createSecurePair(\n      credentials,\n      false,\n      true,\n      rejectUnauthorized\n    );\n\n    if (stream.ondata) {\n      stream.ondata = null;\n    }\n    stream.removeAllListeners('data');\n    stream.pipe(securePair.encrypted);\n    securePair.encrypted.pipe(stream);\n    securePair.cleartext.on('data', data => {\n      this.packetParser.execute(data);\n    });\n    this.write = function(buffer) {\n      securePair.cleartext.write(buffer);\n    };\n    securePair.on('secure', () => {\n      onSecure(rejectUnauthorized ? securePair.ssl.verifyError() : null);\n    });\n  };\n}\n\nmodule.exports = Connection;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/connection.js?")},"./node_modules/mysql2/lib/connection_config.js":
/*!******************************************************!*\
  !*** ./node_modules/mysql2/lib/connection_config.js ***!
  \******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { URL } = __webpack_require__(/*! url */ \"url\");\nconst ClientConstants = __webpack_require__(/*! ./constants/client */ \"./node_modules/mysql2/lib/constants/client.js\");\nconst Charsets = __webpack_require__(/*! ./constants/charsets */ \"./node_modules/mysql2/lib/constants/charsets.js\");\nlet SSLProfiles = null;\n\nconst validOptions = {\n  authPlugins: 1,\n  authSwitchHandler: 1,\n  bigNumberStrings: 1,\n  charset: 1,\n  charsetNumber: 1,\n  compress: 1,\n  connectAttributes: 1,\n  connectTimeout: 1,\n  database: 1,\n  dateStrings: 1,\n  debug: 1,\n  decimalNumbers: 1,\n  enableKeepAlive: 1,\n  flags: 1,\n  host: 1,\n  insecureAuth: 1,\n  isServer: 1,\n  keepAliveInitialDelay: 1,\n  localAddress: 1,\n  maxPreparedStatements: 1,\n  multipleStatements: 1,\n  namedPlaceholders: 1,\n  nestTables: 1,\n  password: 1,\n  passwordSha1: 1,\n  pool: 1,\n  port: 1,\n  queryFormat: 1,\n  rowsAsArray: 1,\n  socketPath: 1,\n  ssl: 1,\n  stream: 1,\n  stringifyObjects: 1,\n  supportBigNumbers: 1,\n  timezone: 1,\n  trace: 1,\n  typeCast: 1,\n  uri: 1,\n  user: 1,\n  // These options are used for Pool\n  connectionLimit: 1,\n  Promise: 1,\n  queueLimit: 1,\n  waitForConnections: 1\n};\n\nclass ConnectionConfig {\n  constructor(options) {\n    if (typeof options === 'string') {\n      options = ConnectionConfig.parseUrl(options);\n    } else if (options && options.uri) {\n      const uriOptions = ConnectionConfig.parseUrl(options.uri);\n      for (const key in uriOptions) {\n        if (!Object.prototype.hasOwnProperty.call(uriOptions, key)) continue;\n        if (options[key]) continue;\n        options[key] = uriOptions[key];\n      }\n    }\n    for (const key in options) {\n      if (!Object.prototype.hasOwnProperty.call(options, key)) continue;\n      if (validOptions[key] !== 1) {\n        // REVIEW: Should this be emitted somehow?\n        // eslint-disable-next-line no-console\n        console.error(\n          `Ignoring invalid configuration option passed to Connection: ${key}. This is currently a warning, but in future versions of MySQL2, an error will be thrown if you pass an invalid configuration option to a Connection`\n        );\n      }\n    }\n    this.isServer = options.isServer;\n    this.stream = options.stream;\n    this.host = options.host || 'localhost';\n    this.port = options.port || 3306;\n    this.localAddress = options.localAddress;\n    this.socketPath = options.socketPath;\n    this.user = options.user || undefined;\n    this.password = options.password || undefined;\n    this.passwordSha1 = options.passwordSha1 || undefined;\n    this.database = options.database;\n    this.connectTimeout = isNaN(options.connectTimeout)\n      ? 10 * 1000\n      : options.connectTimeout;\n    this.insecureAuth = options.insecureAuth || false;\n    this.supportBigNumbers = options.supportBigNumbers || false;\n    this.bigNumberStrings = options.bigNumberStrings || false;\n    this.decimalNumbers = options.decimalNumbers || false;\n    this.dateStrings = options.dateStrings || false;\n    this.debug = options.debug;\n    this.trace = options.trace !== false;\n    this.stringifyObjects = options.stringifyObjects || false;\n    this.enableKeepAlive = !!options.enableKeepAlive;\n    this.keepAliveInitialDelay = options.keepAliveInitialDelay || 0;\n    if (\n      options.timezone &&\n      !/^(?:local|Z|[ +-]\\d\\d:\\d\\d)$/.test(options.timezone)\n    ) {\n      // strictly supports timezones specified by mysqljs/mysql:\n      // https://github.com/mysqljs/mysql#user-content-connection-options\n      // eslint-disable-next-line no-console\n      console.error(\n        `Ignoring invalid timezone passed to Connection: ${options.timezone}. This is currently a warning, but in future versions of MySQL2, an error will be thrown if you pass an invalid configuration option to a Connection`\n      );\n      // SqlStrings falls back to UTC on invalid timezone\n      this.timezone = 'Z';\n    } else {\n      this.timezone = options.timezone || 'local';\n    }\n    this.queryFormat = options.queryFormat;\n    this.pool = options.pool || undefined;\n    this.ssl =\n      typeof options.ssl === 'string'\n        ? ConnectionConfig.getSSLProfile(options.ssl)\n        : options.ssl || false;\n    this.multipleStatements = options.multipleStatements || false;\n    this.rowsAsArray = options.rowsAsArray || false;\n    this.namedPlaceholders = options.namedPlaceholders || false;\n    this.nestTables =\n      options.nestTables === undefined ? undefined : options.nestTables;\n    this.typeCast = options.typeCast === undefined ? true : options.typeCast;\n    if (this.timezone[0] === ' ') {\n      // \"+\" is a url encoded char for space so it\n      // gets translated to space when giving a\n      // connection string..\n      this.timezone = `+${this.timezone.substr(1)}`;\n    }\n    if (this.ssl) {\n      if (typeof this.ssl !== 'object') {\n        throw new TypeError(\n          `SSL profile must be an object, instead it's a ${typeof this.ssl}`\n        );\n      }\n      // Default rejectUnauthorized to true\n      this.ssl.rejectUnauthorized = this.ssl.rejectUnauthorized !== false;\n    }\n    this.maxPacketSize = 0;\n    this.charsetNumber = options.charset\n      ? ConnectionConfig.getCharsetNumber(options.charset)\n      : options.charsetNumber || Charsets.UTF8MB4_UNICODE_CI;\n    this.compress = options.compress || false;\n    this.authPlugins = options.authPlugins;\n    this.authSwitchHandler = options.authSwitchHandler;\n    this.clientFlags = ConnectionConfig.mergeFlags(\n      ConnectionConfig.getDefaultFlags(options),\n      options.flags || ''\n    );\n    this.connectAttributes = options.connectAttributes;\n    this.maxPreparedStatements = options.maxPreparedStatements || 16000;\n  }\n\n  static mergeFlags(default_flags, user_flags) {\n    let flags = 0x0,\n      i;\n    if (!Array.isArray(user_flags)) {\n      user_flags = String(user_flags || '')\n        .toUpperCase()\n        .split(/\\s*,+\\s*/);\n    }\n    // add default flags unless \"blacklisted\"\n    for (i in default_flags) {\n      if (user_flags.indexOf(`-${default_flags[i]}`) >= 0) {\n        continue;\n      }\n      flags |= ClientConstants[default_flags[i]] || 0x0;\n    }\n    // add user flags unless already already added\n    for (i in user_flags) {\n      if (user_flags[i][0] === '-') {\n        continue;\n      }\n      if (default_flags.indexOf(user_flags[i]) >= 0) {\n        continue;\n      }\n      flags |= ClientConstants[user_flags[i]] || 0x0;\n    }\n    return flags;\n  }\n\n  static getDefaultFlags(options) {\n    const defaultFlags = [\n      'LONG_PASSWORD',\n      'FOUND_ROWS',\n      'LONG_FLAG',\n      'CONNECT_WITH_DB',\n      'ODBC',\n      'LOCAL_FILES',\n      'IGNORE_SPACE',\n      'PROTOCOL_41',\n      'IGNORE_SIGPIPE',\n      'TRANSACTIONS',\n      'RESERVED',\n      'SECURE_CONNECTION',\n      'MULTI_RESULTS',\n      'TRANSACTIONS',\n      'SESSION_TRACK'\n    ];\n    if (options && options.multipleStatements) {\n      defaultFlags.push('MULTI_STATEMENTS');\n    }\n    defaultFlags.push('PLUGIN_AUTH');\n    defaultFlags.push('PLUGIN_AUTH_LENENC_CLIENT_DATA');\n\n    if (options && options.connectAttributes) {\n      defaultFlags.push('CONNECT_ATTRS');\n    }\n    return defaultFlags;\n  }\n\n  static getCharsetNumber(charset) {\n    const num = Charsets[charset.toUpperCase()];\n    if (num === undefined) {\n      throw new TypeError(`Unknown charset '${charset}'`);\n    }\n    return num;\n  }\n\n  static getSSLProfile(name) {\n    if (!SSLProfiles) {\n      SSLProfiles = __webpack_require__(/*! ./constants/ssl_profiles.js */ \"./node_modules/mysql2/lib/constants/ssl_profiles.js\");\n    }\n    const ssl = SSLProfiles[name];\n    if (ssl === undefined) {\n      throw new TypeError(`Unknown SSL profile '${name}'`);\n    }\n    return ssl;\n  }\n\n  static parseUrl(url) {\n    const parsedUrl = new URL(url);\n    const options = {\n      host: parsedUrl.hostname,\n      port: parsedUrl.port,\n      database: parsedUrl.pathname.substr(1),\n      user: parsedUrl.username,\n      password: parsedUrl.password\n    };\n    parsedUrl.searchParams.forEach((value, key) => {\n      try {\n        // Try to parse this as a JSON expression first\n        options[key] = JSON.parse(value);\n      } catch (err) {\n        // Otherwise assume it is a plain string\n        options[key] = value;\n      }\n    });\n    return options;\n  }\n}\n\nmodule.exports = ConnectionConfig;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/connection_config.js?")},"./node_modules/mysql2/lib/constants/charset_encodings.js":
/*!****************************************************************!*\
  !*** ./node_modules/mysql2/lib/constants/charset_encodings.js ***!
  \****************************************************************/module=>{"use strict";eval("\n\n// see tools/generate-charset-mapping.js\n// basicalliy result of \"SHOW COLLATION\" query\n\nmodule.exports = [\n  'utf8',\n  'big5',\n  'latin2',\n  'dec8',\n  'cp850',\n  'latin1',\n  'hp8',\n  'koi8r',\n  'latin1',\n  'latin2',\n  'swe7',\n  'ascii',\n  'eucjp',\n  'sjis',\n  'cp1251',\n  'latin1',\n  'hebrew',\n  'utf8',\n  'tis620',\n  'euckr',\n  'latin7',\n  'latin2',\n  'koi8u',\n  'cp1251',\n  'gb2312',\n  'greek',\n  'cp1250',\n  'latin2',\n  'gbk',\n  'cp1257',\n  'latin5',\n  'latin1',\n  'armscii8',\n  'cesu8',\n  'cp1250',\n  'ucs2',\n  'cp866',\n  'keybcs2',\n  'macintosh',\n  'macroman',\n  'cp852',\n  'latin7',\n  'latin7',\n  'macintosh',\n  'cp1250',\n  'utf8',\n  'utf8',\n  'latin1',\n  'latin1',\n  'latin1',\n  'cp1251',\n  'cp1251',\n  'cp1251',\n  'macroman',\n  'utf16',\n  'utf16',\n  'utf16-le',\n  'cp1256',\n  'cp1257',\n  'cp1257',\n  'utf32',\n  'utf32',\n  'utf16-le',\n  'binary',\n  'armscii8',\n  'ascii',\n  'cp1250',\n  'cp1256',\n  'cp866',\n  'dec8',\n  'greek',\n  'hebrew',\n  'hp8',\n  'keybcs2',\n  'koi8r',\n  'koi8u',\n  'cesu8',\n  'latin2',\n  'latin5',\n  'latin7',\n  'cp850',\n  'cp852',\n  'swe7',\n  'cesu8',\n  'big5',\n  'euckr',\n  'gb2312',\n  'gbk',\n  'sjis',\n  'tis620',\n  'ucs2',\n  'eucjp',\n  'geostd8',\n  'geostd8',\n  'latin1',\n  'cp932',\n  'cp932',\n  'eucjpms',\n  'eucjpms',\n  'cp1250',\n  'utf8',\n  'utf16',\n  'utf16',\n  'utf16',\n  'utf16',\n  'utf16',\n  'utf16',\n  'utf16',\n  'utf16',\n  'utf16',\n  'utf16',\n  'utf16',\n  'utf16',\n  'utf16',\n  'utf16',\n  'utf16',\n  'utf16',\n  'utf16',\n  'utf16',\n  'utf16',\n  'utf16',\n  'utf16',\n  'utf16',\n  'utf16',\n  'utf16',\n  'utf8',\n  'utf8',\n  'utf8',\n  'ucs2',\n  'ucs2',\n  'ucs2',\n  'ucs2',\n  'ucs2',\n  'ucs2',\n  'ucs2',\n  'ucs2',\n  'ucs2',\n  'ucs2',\n  'ucs2',\n  'ucs2',\n  'ucs2',\n  'ucs2',\n  'ucs2',\n  'ucs2',\n  'ucs2',\n  'ucs2',\n  'ucs2',\n  'ucs2',\n  'ucs2',\n  'ucs2',\n  'ucs2',\n  'ucs2',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'ucs2',\n  'utf32',\n  'utf32',\n  'utf32',\n  'utf32',\n  'utf32',\n  'utf32',\n  'utf32',\n  'utf32',\n  'utf32',\n  'utf32',\n  'utf32',\n  'utf32',\n  'utf32',\n  'utf32',\n  'utf32',\n  'utf32',\n  'utf32',\n  'utf32',\n  'utf32',\n  'utf32',\n  'utf32',\n  'utf32',\n  'utf32',\n  'utf32',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'cesu8',\n  'cesu8',\n  'cesu8',\n  'cesu8',\n  'cesu8',\n  'cesu8',\n  'cesu8',\n  'cesu8',\n  'cesu8',\n  'cesu8',\n  'cesu8',\n  'cesu8',\n  'cesu8',\n  'cesu8',\n  'cesu8',\n  'cesu8',\n  'cesu8',\n  'cesu8',\n  'cesu8',\n  'cesu8',\n  'cesu8',\n  'cesu8',\n  'cesu8',\n  'cesu8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'cesu8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'gb18030',\n  'gb18030',\n  'gb18030',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8',\n  'utf8'\n];\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/constants/charset_encodings.js?")},"./node_modules/mysql2/lib/constants/charsets.js":
/*!*******************************************************!*\
  !*** ./node_modules/mysql2/lib/constants/charsets.js ***!
  \*******************************************************/(__unused_webpack_module,exports)=>{"use strict";eval("\n\nexports.BIG5_CHINESE_CI = 1;\nexports.LATIN2_CZECH_CS = 2;\nexports.DEC8_SWEDISH_CI = 3;\nexports.CP850_GENERAL_CI = 4;\nexports.LATIN1_GERMAN1_CI = 5;\nexports.HP8_ENGLISH_CI = 6;\nexports.KOI8R_GENERAL_CI = 7;\nexports.LATIN1_SWEDISH_CI = 8;\nexports.LATIN2_GENERAL_CI = 9;\nexports.SWE7_SWEDISH_CI = 10;\nexports.ASCII_GENERAL_CI = 11;\nexports.UJIS_JAPANESE_CI = 12;\nexports.SJIS_JAPANESE_CI = 13;\nexports.CP1251_BULGARIAN_CI = 14;\nexports.LATIN1_DANISH_CI = 15;\nexports.HEBREW_GENERAL_CI = 16;\nexports.TIS620_THAI_CI = 18;\nexports.EUCKR_KOREAN_CI = 19;\nexports.LATIN7_ESTONIAN_CS = 20;\nexports.LATIN2_HUNGARIAN_CI = 21;\nexports.KOI8U_GENERAL_CI = 22;\nexports.CP1251_UKRAINIAN_CI = 23;\nexports.GB2312_CHINESE_CI = 24;\nexports.GREEK_GENERAL_CI = 25;\nexports.CP1250_GENERAL_CI = 26;\nexports.LATIN2_CROATIAN_CI = 27;\nexports.GBK_CHINESE_CI = 28;\nexports.CP1257_LITHUANIAN_CI = 29;\nexports.LATIN5_TURKISH_CI = 30;\nexports.LATIN1_GERMAN2_CI = 31;\nexports.ARMSCII8_GENERAL_CI = 32;\nexports.UTF8_GENERAL_CI = 33;\nexports.CP1250_CZECH_CS = 34;\nexports.UCS2_GENERAL_CI = 35;\nexports.CP866_GENERAL_CI = 36;\nexports.KEYBCS2_GENERAL_CI = 37;\nexports.MACCE_GENERAL_CI = 38;\nexports.MACROMAN_GENERAL_CI = 39;\nexports.CP852_GENERAL_CI = 40;\nexports.LATIN7_GENERAL_CI = 41;\nexports.LATIN7_GENERAL_CS = 42;\nexports.MACCE_BIN = 43;\nexports.CP1250_CROATIAN_CI = 44;\nexports.UTF8MB4_GENERAL_CI = 45;\nexports.UTF8MB4_BIN = 46;\nexports.LATIN1_BIN = 47;\nexports.LATIN1_GENERAL_CI = 48;\nexports.LATIN1_GENERAL_CS = 49;\nexports.CP1251_BIN = 50;\nexports.CP1251_GENERAL_CI = 51;\nexports.CP1251_GENERAL_CS = 52;\nexports.MACROMAN_BIN = 53;\nexports.UTF16_GENERAL_CI = 54;\nexports.UTF16_BIN = 55;\nexports.UTF16LE_GENERAL_CI = 56;\nexports.CP1256_GENERAL_CI = 57;\nexports.CP1257_BIN = 58;\nexports.CP1257_GENERAL_CI = 59;\nexports.UTF32_GENERAL_CI = 60;\nexports.UTF32_BIN = 61;\nexports.UTF16LE_BIN = 62;\nexports.BINARY = 63;\nexports.ARMSCII8_BIN = 64;\nexports.ASCII_BIN = 65;\nexports.CP1250_BIN = 66;\nexports.CP1256_BIN = 67;\nexports.CP866_BIN = 68;\nexports.DEC8_BIN = 69;\nexports.GREEK_BIN = 70;\nexports.HEBREW_BIN = 71;\nexports.HP8_BIN = 72;\nexports.KEYBCS2_BIN = 73;\nexports.KOI8R_BIN = 74;\nexports.KOI8U_BIN = 75;\nexports.UTF8_TOLOWER_CI = 76;\nexports.LATIN2_BIN = 77;\nexports.LATIN5_BIN = 78;\nexports.LATIN7_BIN = 79;\nexports.CP850_BIN = 80;\nexports.CP852_BIN = 81;\nexports.SWE7_BIN = 82;\nexports.UTF8_BIN = 83;\nexports.BIG5_BIN = 84;\nexports.EUCKR_BIN = 85;\nexports.GB2312_BIN = 86;\nexports.GBK_BIN = 87;\nexports.SJIS_BIN = 88;\nexports.TIS620_BIN = 89;\nexports.UCS2_BIN = 90;\nexports.UJIS_BIN = 91;\nexports.GEOSTD8_GENERAL_CI = 92;\nexports.GEOSTD8_BIN = 93;\nexports.LATIN1_SPANISH_CI = 94;\nexports.CP932_JAPANESE_CI = 95;\nexports.CP932_BIN = 96;\nexports.EUCJPMS_JAPANESE_CI = 97;\nexports.EUCJPMS_BIN = 98;\nexports.CP1250_POLISH_CI = 99;\nexports.UTF16_UNICODE_CI = 101;\nexports.UTF16_ICELANDIC_CI = 102;\nexports.UTF16_LATVIAN_CI = 103;\nexports.UTF16_ROMANIAN_CI = 104;\nexports.UTF16_SLOVENIAN_CI = 105;\nexports.UTF16_POLISH_CI = 106;\nexports.UTF16_ESTONIAN_CI = 107;\nexports.UTF16_SPANISH_CI = 108;\nexports.UTF16_SWEDISH_CI = 109;\nexports.UTF16_TURKISH_CI = 110;\nexports.UTF16_CZECH_CI = 111;\nexports.UTF16_DANISH_CI = 112;\nexports.UTF16_LITHUANIAN_CI = 113;\nexports.UTF16_SLOVAK_CI = 114;\nexports.UTF16_SPANISH2_CI = 115;\nexports.UTF16_ROMAN_CI = 116;\nexports.UTF16_PERSIAN_CI = 117;\nexports.UTF16_ESPERANTO_CI = 118;\nexports.UTF16_HUNGARIAN_CI = 119;\nexports.UTF16_SINHALA_CI = 120;\nexports.UTF16_GERMAN2_CI = 121;\nexports.UTF16_CROATIAN_CI = 122;\nexports.UTF16_UNICODE_520_CI = 123;\nexports.UTF16_VIETNAMESE_CI = 124;\nexports.UCS2_UNICODE_CI = 128;\nexports.UCS2_ICELANDIC_CI = 129;\nexports.UCS2_LATVIAN_CI = 130;\nexports.UCS2_ROMANIAN_CI = 131;\nexports.UCS2_SLOVENIAN_CI = 132;\nexports.UCS2_POLISH_CI = 133;\nexports.UCS2_ESTONIAN_CI = 134;\nexports.UCS2_SPANISH_CI = 135;\nexports.UCS2_SWEDISH_CI = 136;\nexports.UCS2_TURKISH_CI = 137;\nexports.UCS2_CZECH_CI = 138;\nexports.UCS2_DANISH_CI = 139;\nexports.UCS2_LITHUANIAN_CI = 140;\nexports.UCS2_SLOVAK_CI = 141;\nexports.UCS2_SPANISH2_CI = 142;\nexports.UCS2_ROMAN_CI = 143;\nexports.UCS2_PERSIAN_CI = 144;\nexports.UCS2_ESPERANTO_CI = 145;\nexports.UCS2_HUNGARIAN_CI = 146;\nexports.UCS2_SINHALA_CI = 147;\nexports.UCS2_GERMAN2_CI = 148;\nexports.UCS2_CROATIAN_CI = 149;\nexports.UCS2_UNICODE_520_CI = 150;\nexports.UCS2_VIETNAMESE_CI = 151;\nexports.UCS2_GENERAL_MYSQL500_CI = 159;\nexports.UTF32_UNICODE_CI = 160;\nexports.UTF32_ICELANDIC_CI = 161;\nexports.UTF32_LATVIAN_CI = 162;\nexports.UTF32_ROMANIAN_CI = 163;\nexports.UTF32_SLOVENIAN_CI = 164;\nexports.UTF32_POLISH_CI = 165;\nexports.UTF32_ESTONIAN_CI = 166;\nexports.UTF32_SPANISH_CI = 167;\nexports.UTF32_SWEDISH_CI = 168;\nexports.UTF32_TURKISH_CI = 169;\nexports.UTF32_CZECH_CI = 170;\nexports.UTF32_DANISH_CI = 171;\nexports.UTF32_LITHUANIAN_CI = 172;\nexports.UTF32_SLOVAK_CI = 173;\nexports.UTF32_SPANISH2_CI = 174;\nexports.UTF32_ROMAN_CI = 175;\nexports.UTF32_PERSIAN_CI = 176;\nexports.UTF32_ESPERANTO_CI = 177;\nexports.UTF32_HUNGARIAN_CI = 178;\nexports.UTF32_SINHALA_CI = 179;\nexports.UTF32_GERMAN2_CI = 180;\nexports.UTF32_CROATIAN_CI = 181;\nexports.UTF32_UNICODE_520_CI = 182;\nexports.UTF32_VIETNAMESE_CI = 183;\nexports.UTF8_UNICODE_CI = 192;\nexports.UTF8_ICELANDIC_CI = 193;\nexports.UTF8_LATVIAN_CI = 194;\nexports.UTF8_ROMANIAN_CI = 195;\nexports.UTF8_SLOVENIAN_CI = 196;\nexports.UTF8_POLISH_CI = 197;\nexports.UTF8_ESTONIAN_CI = 198;\nexports.UTF8_SPANISH_CI = 199;\nexports.UTF8_SWEDISH_CI = 200;\nexports.UTF8_TURKISH_CI = 201;\nexports.UTF8_CZECH_CI = 202;\nexports.UTF8_DANISH_CI = 203;\nexports.UTF8_LITHUANIAN_CI = 204;\nexports.UTF8_SLOVAK_CI = 205;\nexports.UTF8_SPANISH2_CI = 206;\nexports.UTF8_ROMAN_CI = 207;\nexports.UTF8_PERSIAN_CI = 208;\nexports.UTF8_ESPERANTO_CI = 209;\nexports.UTF8_HUNGARIAN_CI = 210;\nexports.UTF8_SINHALA_CI = 211;\nexports.UTF8_GERMAN2_CI = 212;\nexports.UTF8_CROATIAN_CI = 213;\nexports.UTF8_UNICODE_520_CI = 214;\nexports.UTF8_VIETNAMESE_CI = 215;\nexports.UTF8_GENERAL_MYSQL500_CI = 223;\nexports.UTF8MB4_UNICODE_CI = 224;\nexports.UTF8MB4_ICELANDIC_CI = 225;\nexports.UTF8MB4_LATVIAN_CI = 226;\nexports.UTF8MB4_ROMANIAN_CI = 227;\nexports.UTF8MB4_SLOVENIAN_CI = 228;\nexports.UTF8MB4_POLISH_CI = 229;\nexports.UTF8MB4_ESTONIAN_CI = 230;\nexports.UTF8MB4_SPANISH_CI = 231;\nexports.UTF8MB4_SWEDISH_CI = 232;\nexports.UTF8MB4_TURKISH_CI = 233;\nexports.UTF8MB4_CZECH_CI = 234;\nexports.UTF8MB4_DANISH_CI = 235;\nexports.UTF8MB4_LITHUANIAN_CI = 236;\nexports.UTF8MB4_SLOVAK_CI = 237;\nexports.UTF8MB4_SPANISH2_CI = 238;\nexports.UTF8MB4_ROMAN_CI = 239;\nexports.UTF8MB4_PERSIAN_CI = 240;\nexports.UTF8MB4_ESPERANTO_CI = 241;\nexports.UTF8MB4_HUNGARIAN_CI = 242;\nexports.UTF8MB4_SINHALA_CI = 243;\nexports.UTF8MB4_GERMAN2_CI = 244;\nexports.UTF8MB4_CROATIAN_CI = 245;\nexports.UTF8MB4_UNICODE_520_CI = 246;\nexports.UTF8MB4_VIETNAMESE_CI = 247;\nexports.GB18030_CHINESE_CI = 248;\nexports.GB18030_BIN = 249;\nexports.GB18030_UNICODE_520_CI = 250;\nexports.UTF8_GENERAL50_CI = 253;\nexports.UTF8MB4_0900_AI_CI = 255;\nexports.UTF8MB4_CS_0900_AI_CI = 266;\nexports.UTF8MB4_DA_0900_AI_CI = 267;\nexports.UTF8MB4_DE_PB_0900_AI_CI = 256;\nexports.UTF8MB4_EO_0900_AI_CI = 273;\nexports.UTF8MB4_ES_0900_AI_CI = 263;\nexports.UTF8MB4_ES_TRAD_0900_AI_CI = 270;\nexports.UTF8MB4_ET_0900_AI_CI = 262;\nexports.UTF8MB4_HR_0900_AI_CI = 275;\nexports.UTF8MB4_HU_0900_AI_CI = 274;\nexports.UTF8MB4_IS_0900_AI_CI = 257;\nexports.UTF8MB4_LA_0900_AI_CI = 271;\nexports.UTF8MB4_LT_0900_AI_CI = 268;\nexports.UTF8MB4_LV_0900_AI_CI = 258;\nexports.UTF8MB4_PL_0900_AI_CI = 261;\nexports.UTF8MB4_RO_0900_AI_CI = 259;\nexports.UTF8MB4_SK_0900_AI_CI = 269;\nexports.UTF8MB4_SL_0900_AI_CI = 260;\nexports.UTF8MB4_SV_0900_AI_CI = 264;\nexports.UTF8MB4_TR_0900_AI_CI = 265;\nexports.UTF8MB4_VI_0900_AI_CI = 277;\n\n// short aliases\nexports.BIG5 = exports.BIG5_CHINESE_CI;\nexports.DEC8 = exports.DEC8_SWEDISH_CI;\nexports.CP850 = exports.CP850_GENERAL_CI;\nexports.HP8 = exports.HP8_ENGLISH_CI;\nexports.KOI8R = exports.KOI8R_GENERAL_CI;\nexports.LATIN1 = exports.LATIN1_SWEDISH_CI;\nexports.LATIN2 = exports.LATIN2_GENERAL_CI;\nexports.SWE7 = exports.SWE7_SWEDISH_CI;\nexports.ASCII = exports.ASCII_GENERAL_CI;\nexports.UJIS = exports.UJIS_JAPANESE_CI;\nexports.SJIS = exports.SJIS_JAPANESE_CI;\nexports.HEBREW = exports.HEBREW_GENERAL_CI;\nexports.TIS620 = exports.TIS620_THAI_CI;\nexports.EUCKR = exports.EUCKR_KOREAN_CI;\nexports.KOI8U = exports.KOI8U_GENERAL_CI;\nexports.GB2312 = exports.GB2312_CHINESE_CI;\nexports.GREEK = exports.GREEK_GENERAL_CI;\nexports.CP1250 = exports.CP1250_GENERAL_CI;\nexports.GBK = exports.GBK_CHINESE_CI;\nexports.LATIN5 = exports.LATIN5_TURKISH_CI;\nexports.ARMSCII8 = exports.ARMSCII8_GENERAL_CI;\nexports.UTF8 = exports.UTF8_GENERAL_CI;\nexports.UCS2 = exports.UCS2_GENERAL_CI;\nexports.CP866 = exports.CP866_GENERAL_CI;\nexports.KEYBCS2 = exports.KEYBCS2_GENERAL_CI;\nexports.MACCE = exports.MACCE_GENERAL_CI;\nexports.MACROMAN = exports.MACROMAN_GENERAL_CI;\nexports.CP852 = exports.CP852_GENERAL_CI;\nexports.LATIN7 = exports.LATIN7_GENERAL_CI;\nexports.UTF8MB4 = exports.UTF8MB4_GENERAL_CI;\nexports.CP1251 = exports.CP1251_GENERAL_CI;\nexports.UTF16 = exports.UTF16_GENERAL_CI;\nexports.UTF16LE = exports.UTF16LE_GENERAL_CI;\nexports.CP1256 = exports.CP1256_GENERAL_CI;\nexports.CP1257 = exports.CP1257_GENERAL_CI;\nexports.UTF32 = exports.UTF32_GENERAL_CI;\nexports.CP932 = exports.CP932_JAPANESE_CI;\nexports.EUCJPMS = exports.EUCJPMS_JAPANESE_CI;\nexports.GB18030 = exports.GB18030_CHINESE_CI;\nexports.GEOSTD8 = exports.GEOSTD8_GENERAL_CI;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/constants/charsets.js?")},"./node_modules/mysql2/lib/constants/client.js":
/*!*****************************************************!*\
  !*** ./node_modules/mysql2/lib/constants/client.js ***!
  \*****************************************************/(__unused_webpack_module,exports)=>{"use strict";eval("\n\n// Manually extracted from mysql-5.5.23/include/mysql_com.h\nexports.LONG_PASSWORD = 0x00000001; /* new more secure passwords */\nexports.FOUND_ROWS = 0x00000002; /* found instead of affected rows */\nexports.LONG_FLAG = 0x00000004; /* get all column flags */\nexports.CONNECT_WITH_DB = 0x00000008; /* one can specify db on connect */\nexports.NO_SCHEMA = 0x00000010; /* don't allow database.table.column */\nexports.COMPRESS = 0x00000020; /* can use compression protocol */\nexports.ODBC = 0x00000040; /* odbc client */\nexports.LOCAL_FILES = 0x00000080; /* can use LOAD DATA LOCAL */\nexports.IGNORE_SPACE = 0x00000100; /* ignore spaces before '' */\nexports.PROTOCOL_41 = 0x00000200; /* new 4.1 protocol */\nexports.INTERACTIVE = 0x00000400; /* this is an interactive client */\nexports.SSL = 0x00000800; /* switch to ssl after handshake */\nexports.IGNORE_SIGPIPE = 0x00001000; /* IGNORE sigpipes */\nexports.TRANSACTIONS = 0x00002000; /* client knows about transactions */\nexports.RESERVED = 0x00004000; /* old flag for 4.1 protocol  */\nexports.SECURE_CONNECTION = 0x00008000; /* new 4.1 authentication */\nexports.MULTI_STATEMENTS = 0x00010000; /* enable/disable multi-stmt support */\nexports.MULTI_RESULTS = 0x00020000; /* enable/disable multi-results */\nexports.PS_MULTI_RESULTS = 0x00040000; /* multi-results in ps-protocol */\nexports.PLUGIN_AUTH = 0x00080000; /* client supports plugin authentication */\nexports.CONNECT_ATTRS = 0x00100000; /* permits connection attributes */\nexports.PLUGIN_AUTH_LENENC_CLIENT_DATA = 0x00200000; /* Understands length-encoded integer for auth response data in Protocol::HandshakeResponse41. */\nexports.CAN_HANDLE_EXPIRED_PASSWORDS = 0x00400000; /* Announces support for expired password extension. */\nexports.SESSION_TRACK = 0x00800000; /* Can set SERVER_SESSION_STATE_CHANGED in the Status Flags and send session-state change data after a OK packet. */\nexports.DEPRECATE_EOF = 0x01000000; /* Can send OK after a Text Resultset. */\n\nexports.SSL_VERIFY_SERVER_CERT = 0x40000000;\nexports.REMEMBER_OPTIONS = 0x80000000;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/constants/client.js?")},"./node_modules/mysql2/lib/constants/commands.js":
/*!*******************************************************!*\
  !*** ./node_modules/mysql2/lib/constants/commands.js ***!
  \*******************************************************/module=>{"use strict";eval("\n\nmodule.exports = {\n  SLEEP: 0x00, // deprecated\n  QUIT: 0x01,\n  INIT_DB: 0x02,\n  QUERY: 0x03,\n  FIELD_LIST: 0x04,\n  CREATE_DB: 0x05,\n  DROP_DB: 0x06,\n  REFRESH: 0x07,\n  SHUTDOWN: 0x08,\n  STATISTICS: 0x09,\n  PROCESS_INFO: 0x0a, // deprecated\n  CONNECT: 0x0b, // deprecated\n  PROCESS_KILL: 0x0c,\n  DEBUG: 0x0d,\n  PING: 0x0e,\n  TIME: 0x0f, // deprecated\n  DELAYED_INSERT: 0x10, // deprecated\n  CHANGE_USER: 0x11,\n  BINLOG_DUMP: 0x12,\n  TABLE_DUMP: 0x13,\n  CONNECT_OUT: 0x14,\n  REGISTER_SLAVE: 0x15,\n  STMT_PREPARE: 0x16,\n  STMT_EXECUTE: 0x17,\n  STMT_SEND_LONG_DATA: 0x18,\n  STMT_CLOSE: 0x19,\n  STMT_RESET: 0x1a,\n  SET_OPTION: 0x1b,\n  STMT_FETCH: 0x1c,\n  DAEMON: 0x1d, // deprecated\n  BINLOG_DUMP_GTID: 0x1e,\n  UNKNOWN: 0xff // bad!\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/constants/commands.js?")},"./node_modules/mysql2/lib/constants/cursor.js":
/*!*****************************************************!*\
  !*** ./node_modules/mysql2/lib/constants/cursor.js ***!
  \*****************************************************/module=>{"use strict";eval("\n\nmodule.exports = {\n  NO_CURSOR: 0,\n  READ_ONLY: 1,\n  FOR_UPDATE: 2,\n  SCROLLABLE: 3\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/constants/cursor.js?")},"./node_modules/mysql2/lib/constants/encoding_charset.js":
/*!***************************************************************!*\
  !*** ./node_modules/mysql2/lib/constants/encoding_charset.js ***!
  \***************************************************************/module=>{"use strict";eval("\n\n// inverse of charset_encodings\n// given encoding, get matching mysql charset number\n\nmodule.exports = {\n  big5: 1,\n  latin2: 2,\n  dec8: 3,\n  cp850: 4,\n  latin1: 5,\n  hp8: 6,\n  koi8r: 7,\n  swe7: 10,\n  ascii: 11,\n  eucjp: 12,\n  sjis: 13,\n  cp1251: 14,\n  hebrew: 16,\n  tis620: 18,\n  euckr: 19,\n  latin7: 20,\n  koi8u: 22,\n  gb2312: 24,\n  greek: 25,\n  cp1250: 26,\n  gbk: 28,\n  cp1257: 29,\n  latin5: 30,\n  armscii8: 32,\n  cesu8: 33,\n  ucs2: 35,\n  cp866: 36,\n  keybcs2: 37,\n  macintosh: 38,\n  macroman: 39,\n  cp852: 40,\n  utf8: 45,\n  utf8mb4: 45,\n  utf16: 54,\n  utf16le: 56,\n  cp1256: 57,\n  utf32: 60,\n  binary: 63,\n  geostd8: 92,\n  cp932: 95,\n  eucjpms: 97,\n  gb18030: 248\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/constants/encoding_charset.js?")},"./node_modules/mysql2/lib/constants/errors.js":
/*!*****************************************************!*\
  !*** ./node_modules/mysql2/lib/constants/errors.js ***!
  \*****************************************************/(__unused_webpack_module,exports)=>{"use strict";eval("// This file was modified by Oracle on June 1, 2021.\n// An entry was created for a new error reported by the MySQL server due to\n// client inactivity.\n// Modifications copyright (c) 2021, Oracle and/or its affiliates.\n\n\n\n// copy from https://raw.githubusercontent.com/mysqljs/mysql/7770ee5bb13260c56a160b91fe480d9165dbeeba/lib/protocol/constants/errors.js\n// (c) node-mysql authors\n\n/**\n * MySQL error constants\n *\n * !! Generated by generate-error-constants.js, do not modify by hand !!\n */\n\nexports.EE_CANTCREATEFILE = 1;\nexports.EE_READ = 2;\nexports.EE_WRITE = 3;\nexports.EE_BADCLOSE = 4;\nexports.EE_OUTOFMEMORY = 5;\nexports.EE_DELETE = 6;\nexports.EE_LINK = 7;\nexports.EE_EOFERR = 9;\nexports.EE_CANTLOCK = 10;\nexports.EE_CANTUNLOCK = 11;\nexports.EE_DIR = 12;\nexports.EE_STAT = 13;\nexports.EE_CANT_CHSIZE = 14;\nexports.EE_CANT_OPEN_STREAM = 15;\nexports.EE_GETWD = 16;\nexports.EE_SETWD = 17;\nexports.EE_LINK_WARNING = 18;\nexports.EE_OPEN_WARNING = 19;\nexports.EE_DISK_FULL = 20;\nexports.EE_CANT_MKDIR = 21;\nexports.EE_UNKNOWN_CHARSET = 22;\nexports.EE_OUT_OF_FILERESOURCES = 23;\nexports.EE_CANT_READLINK = 24;\nexports.EE_CANT_SYMLINK = 25;\nexports.EE_REALPATH = 26;\nexports.EE_SYNC = 27;\nexports.EE_UNKNOWN_COLLATION = 28;\nexports.EE_FILENOTFOUND = 29;\nexports.EE_FILE_NOT_CLOSED = 30;\nexports.EE_CHANGE_OWNERSHIP = 31;\nexports.EE_CHANGE_PERMISSIONS = 32;\nexports.EE_CANT_SEEK = 33;\nexports.HA_ERR_KEY_NOT_FOUND = 120;\nexports.HA_ERR_FOUND_DUPP_KEY = 121;\nexports.HA_ERR_INTERNAL_ERROR = 122;\nexports.HA_ERR_RECORD_CHANGED = 123;\nexports.HA_ERR_WRONG_INDEX = 124;\nexports.HA_ERR_CRASHED = 126;\nexports.HA_ERR_WRONG_IN_RECORD = 127;\nexports.HA_ERR_OUT_OF_MEM = 128;\nexports.HA_ERR_NOT_A_TABLE = 130;\nexports.HA_ERR_WRONG_COMMAND = 131;\nexports.HA_ERR_OLD_FILE = 132;\nexports.HA_ERR_NO_ACTIVE_RECORD = 133;\nexports.HA_ERR_RECORD_DELETED = 134;\nexports.HA_ERR_RECORD_FILE_FULL = 135;\nexports.HA_ERR_INDEX_FILE_FULL = 136;\nexports.HA_ERR_END_OF_FILE = 137;\nexports.HA_ERR_UNSUPPORTED = 138;\nexports.HA_ERR_TO_BIG_ROW = 139;\nexports.HA_WRONG_CREATE_OPTION = 140;\nexports.HA_ERR_FOUND_DUPP_UNIQUE = 141;\nexports.HA_ERR_UNKNOWN_CHARSET = 142;\nexports.HA_ERR_WRONG_MRG_TABLE_DEF = 143;\nexports.HA_ERR_CRASHED_ON_REPAIR = 144;\nexports.HA_ERR_CRASHED_ON_USAGE = 145;\nexports.HA_ERR_LOCK_WAIT_TIMEOUT = 146;\nexports.HA_ERR_LOCK_TABLE_FULL = 147;\nexports.HA_ERR_READ_ONLY_TRANSACTION = 148;\nexports.HA_ERR_LOCK_DEADLOCK = 149;\nexports.HA_ERR_CANNOT_ADD_FOREIGN = 150;\nexports.HA_ERR_NO_REFERENCED_ROW = 151;\nexports.HA_ERR_ROW_IS_REFERENCED = 152;\nexports.HA_ERR_NO_SAVEPOINT = 153;\nexports.HA_ERR_NON_UNIQUE_BLOCK_SIZE = 154;\nexports.HA_ERR_NO_SUCH_TABLE = 155;\nexports.HA_ERR_TABLE_EXIST = 156;\nexports.HA_ERR_NO_CONNECTION = 157;\nexports.HA_ERR_NULL_IN_SPATIAL = 158;\nexports.HA_ERR_TABLE_DEF_CHANGED = 159;\nexports.HA_ERR_NO_PARTITION_FOUND = 160;\nexports.HA_ERR_RBR_LOGGING_FAILED = 161;\nexports.HA_ERR_DROP_INDEX_FK = 162;\nexports.HA_ERR_FOREIGN_DUPLICATE_KEY = 163;\nexports.HA_ERR_TABLE_NEEDS_UPGRADE = 164;\nexports.HA_ERR_TABLE_READONLY = 165;\nexports.HA_ERR_AUTOINC_READ_FAILED = 166;\nexports.HA_ERR_AUTOINC_ERANGE = 167;\nexports.HA_ERR_GENERIC = 168;\nexports.HA_ERR_RECORD_IS_THE_SAME = 169;\nexports.HA_ERR_LOGGING_IMPOSSIBLE = 170;\nexports.HA_ERR_CORRUPT_EVENT = 171;\nexports.HA_ERR_NEW_FILE = 172;\nexports.HA_ERR_ROWS_EVENT_APPLY = 173;\nexports.HA_ERR_INITIALIZATION = 174;\nexports.HA_ERR_FILE_TOO_SHORT = 175;\nexports.HA_ERR_WRONG_CRC = 176;\nexports.HA_ERR_TOO_MANY_CONCURRENT_TRXS = 177;\nexports.HA_ERR_NOT_IN_LOCK_PARTITIONS = 178;\nexports.HA_ERR_INDEX_COL_TOO_LONG = 179;\nexports.HA_ERR_INDEX_CORRUPT = 180;\nexports.HA_ERR_UNDO_REC_TOO_BIG = 181;\nexports.HA_FTS_INVALID_DOCID = 182;\nexports.HA_ERR_TABLE_IN_FK_CHECK = 183;\nexports.HA_ERR_TABLESPACE_EXISTS = 184;\nexports.HA_ERR_TOO_MANY_FIELDS = 185;\nexports.HA_ERR_ROW_IN_WRONG_PARTITION = 186;\nexports.HA_ERR_INNODB_READ_ONLY = 187;\nexports.HA_ERR_FTS_EXCEED_RESULT_CACHE_LIMIT = 188;\nexports.HA_ERR_TEMP_FILE_WRITE_FAILURE = 189;\nexports.HA_ERR_INNODB_FORCED_RECOVERY = 190;\nexports.HA_ERR_FTS_TOO_MANY_WORDS_IN_PHRASE = 191;\nexports.ER_HASHCHK = 1000;\nexports.ER_NISAMCHK = 1001;\nexports.ER_NO = 1002;\nexports.ER_YES = 1003;\nexports.ER_CANT_CREATE_FILE = 1004;\nexports.ER_CANT_CREATE_TABLE = 1005;\nexports.ER_CANT_CREATE_DB = 1006;\nexports.ER_DB_CREATE_EXISTS = 1007;\nexports.ER_DB_DROP_EXISTS = 1008;\nexports.ER_DB_DROP_DELETE = 1009;\nexports.ER_DB_DROP_RMDIR = 1010;\nexports.ER_CANT_DELETE_FILE = 1011;\nexports.ER_CANT_FIND_SYSTEM_REC = 1012;\nexports.ER_CANT_GET_STAT = 1013;\nexports.ER_CANT_GET_WD = 1014;\nexports.ER_CANT_LOCK = 1015;\nexports.ER_CANT_OPEN_FILE = 1016;\nexports.ER_FILE_NOT_FOUND = 1017;\nexports.ER_CANT_READ_DIR = 1018;\nexports.ER_CANT_SET_WD = 1019;\nexports.ER_CHECKREAD = 1020;\nexports.ER_DISK_FULL = 1021;\nexports.ER_DUP_KEY = 1022;\nexports.ER_ERROR_ON_CLOSE = 1023;\nexports.ER_ERROR_ON_READ = 1024;\nexports.ER_ERROR_ON_RENAME = 1025;\nexports.ER_ERROR_ON_WRITE = 1026;\nexports.ER_FILE_USED = 1027;\nexports.ER_FILSORT_ABORT = 1028;\nexports.ER_FORM_NOT_FOUND = 1029;\nexports.ER_GET_ERRNO = 1030;\nexports.ER_ILLEGAL_HA = 1031;\nexports.ER_KEY_NOT_FOUND = 1032;\nexports.ER_NOT_FORM_FILE = 1033;\nexports.ER_NOT_KEYFILE = 1034;\nexports.ER_OLD_KEYFILE = 1035;\nexports.ER_OPEN_AS_READONLY = 1036;\nexports.ER_OUTOFMEMORY = 1037;\nexports.ER_OUT_OF_SORTMEMORY = 1038;\nexports.ER_UNEXPECTED_EOF = 1039;\nexports.ER_CON_COUNT_ERROR = 1040;\nexports.ER_OUT_OF_RESOURCES = 1041;\nexports.ER_BAD_HOST_ERROR = 1042;\nexports.ER_HANDSHAKE_ERROR = 1043;\nexports.ER_DBACCESS_DENIED_ERROR = 1044;\nexports.ER_ACCESS_DENIED_ERROR = 1045;\nexports.ER_NO_DB_ERROR = 1046;\nexports.ER_UNKNOWN_COM_ERROR = 1047;\nexports.ER_BAD_NULL_ERROR = 1048;\nexports.ER_BAD_DB_ERROR = 1049;\nexports.ER_TABLE_EXISTS_ERROR = 1050;\nexports.ER_BAD_TABLE_ERROR = 1051;\nexports.ER_NON_UNIQ_ERROR = 1052;\nexports.ER_SERVER_SHUTDOWN = 1053;\nexports.ER_BAD_FIELD_ERROR = 1054;\nexports.ER_WRONG_FIELD_WITH_GROUP = 1055;\nexports.ER_WRONG_GROUP_FIELD = 1056;\nexports.ER_WRONG_SUM_SELECT = 1057;\nexports.ER_WRONG_VALUE_COUNT = 1058;\nexports.ER_TOO_LONG_IDENT = 1059;\nexports.ER_DUP_FIELDNAME = 1060;\nexports.ER_DUP_KEYNAME = 1061;\nexports.ER_DUP_ENTRY = 1062;\nexports.ER_WRONG_FIELD_SPEC = 1063;\nexports.ER_PARSE_ERROR = 1064;\nexports.ER_EMPTY_QUERY = 1065;\nexports.ER_NONUNIQ_TABLE = 1066;\nexports.ER_INVALID_DEFAULT = 1067;\nexports.ER_MULTIPLE_PRI_KEY = 1068;\nexports.ER_TOO_MANY_KEYS = 1069;\nexports.ER_TOO_MANY_KEY_PARTS = 1070;\nexports.ER_TOO_LONG_KEY = 1071;\nexports.ER_KEY_COLUMN_DOES_NOT_EXITS = 1072;\nexports.ER_BLOB_USED_AS_KEY = 1073;\nexports.ER_TOO_BIG_FIELDLENGTH = 1074;\nexports.ER_WRONG_AUTO_KEY = 1075;\nexports.ER_READY = 1076;\nexports.ER_NORMAL_SHUTDOWN = 1077;\nexports.ER_GOT_SIGNAL = 1078;\nexports.ER_SHUTDOWN_COMPLETE = 1079;\nexports.ER_FORCING_CLOSE = 1080;\nexports.ER_IPSOCK_ERROR = 1081;\nexports.ER_NO_SUCH_INDEX = 1082;\nexports.ER_WRONG_FIELD_TERMINATORS = 1083;\nexports.ER_BLOBS_AND_NO_TERMINATED = 1084;\nexports.ER_TEXTFILE_NOT_READABLE = 1085;\nexports.ER_FILE_EXISTS_ERROR = 1086;\nexports.ER_LOAD_INFO = 1087;\nexports.ER_ALTER_INFO = 1088;\nexports.ER_WRONG_SUB_KEY = 1089;\nexports.ER_CANT_REMOVE_ALL_FIELDS = 1090;\nexports.ER_CANT_DROP_FIELD_OR_KEY = 1091;\nexports.ER_INSERT_INFO = 1092;\nexports.ER_UPDATE_TABLE_USED = 1093;\nexports.ER_NO_SUCH_THREAD = 1094;\nexports.ER_KILL_DENIED_ERROR = 1095;\nexports.ER_NO_TABLES_USED = 1096;\nexports.ER_TOO_BIG_SET = 1097;\nexports.ER_NO_UNIQUE_LOGFILE = 1098;\nexports.ER_TABLE_NOT_LOCKED_FOR_WRITE = 1099;\nexports.ER_TABLE_NOT_LOCKED = 1100;\nexports.ER_BLOB_CANT_HAVE_DEFAULT = 1101;\nexports.ER_WRONG_DB_NAME = 1102;\nexports.ER_WRONG_TABLE_NAME = 1103;\nexports.ER_TOO_BIG_SELECT = 1104;\nexports.ER_UNKNOWN_ERROR = 1105;\nexports.ER_UNKNOWN_PROCEDURE = 1106;\nexports.ER_WRONG_PARAMCOUNT_TO_PROCEDURE = 1107;\nexports.ER_WRONG_PARAMETERS_TO_PROCEDURE = 1108;\nexports.ER_UNKNOWN_TABLE = 1109;\nexports.ER_FIELD_SPECIFIED_TWICE = 1110;\nexports.ER_INVALID_GROUP_FUNC_USE = 1111;\nexports.ER_UNSUPPORTED_EXTENSION = 1112;\nexports.ER_TABLE_MUST_HAVE_COLUMNS = 1113;\nexports.ER_RECORD_FILE_FULL = 1114;\nexports.ER_UNKNOWN_CHARACTER_SET = 1115;\nexports.ER_TOO_MANY_TABLES = 1116;\nexports.ER_TOO_MANY_FIELDS = 1117;\nexports.ER_TOO_BIG_ROWSIZE = 1118;\nexports.ER_STACK_OVERRUN = 1119;\nexports.ER_WRONG_OUTER_JOIN = 1120;\nexports.ER_NULL_COLUMN_IN_INDEX = 1121;\nexports.ER_CANT_FIND_UDF = 1122;\nexports.ER_CANT_INITIALIZE_UDF = 1123;\nexports.ER_UDF_NO_PATHS = 1124;\nexports.ER_UDF_EXISTS = 1125;\nexports.ER_CANT_OPEN_LIBRARY = 1126;\nexports.ER_CANT_FIND_DL_ENTRY = 1127;\nexports.ER_FUNCTION_NOT_DEFINED = 1128;\nexports.ER_HOST_IS_BLOCKED = 1129;\nexports.ER_HOST_NOT_PRIVILEGED = 1130;\nexports.ER_PASSWORD_ANONYMOUS_USER = 1131;\nexports.ER_PASSWORD_NOT_ALLOWED = 1132;\nexports.ER_PASSWORD_NO_MATCH = 1133;\nexports.ER_UPDATE_INFO = 1134;\nexports.ER_CANT_CREATE_THREAD = 1135;\nexports.ER_WRONG_VALUE_COUNT_ON_ROW = 1136;\nexports.ER_CANT_REOPEN_TABLE = 1137;\nexports.ER_INVALID_USE_OF_NULL = 1138;\nexports.ER_REGEXP_ERROR = 1139;\nexports.ER_MIX_OF_GROUP_FUNC_AND_FIELDS = 1140;\nexports.ER_NONEXISTING_GRANT = 1141;\nexports.ER_TABLEACCESS_DENIED_ERROR = 1142;\nexports.ER_COLUMNACCESS_DENIED_ERROR = 1143;\nexports.ER_ILLEGAL_GRANT_FOR_TABLE = 1144;\nexports.ER_GRANT_WRONG_HOST_OR_USER = 1145;\nexports.ER_NO_SUCH_TABLE = 1146;\nexports.ER_NONEXISTING_TABLE_GRANT = 1147;\nexports.ER_NOT_ALLOWED_COMMAND = 1148;\nexports.ER_SYNTAX_ERROR = 1149;\nexports.ER_DELAYED_CANT_CHANGE_LOCK = 1150;\nexports.ER_TOO_MANY_DELAYED_THREADS = 1151;\nexports.ER_ABORTING_CONNECTION = 1152;\nexports.ER_NET_PACKET_TOO_LARGE = 1153;\nexports.ER_NET_READ_ERROR_FROM_PIPE = 1154;\nexports.ER_NET_FCNTL_ERROR = 1155;\nexports.ER_NET_PACKETS_OUT_OF_ORDER = 1156;\nexports.ER_NET_UNCOMPRESS_ERROR = 1157;\nexports.ER_NET_READ_ERROR = 1158;\nexports.ER_NET_READ_INTERRUPTED = 1159;\nexports.ER_NET_ERROR_ON_WRITE = 1160;\nexports.ER_NET_WRITE_INTERRUPTED = 1161;\nexports.ER_TOO_LONG_STRING = 1162;\nexports.ER_TABLE_CANT_HANDLE_BLOB = 1163;\nexports.ER_TABLE_CANT_HANDLE_AUTO_INCREMENT = 1164;\nexports.ER_DELAYED_INSERT_TABLE_LOCKED = 1165;\nexports.ER_WRONG_COLUMN_NAME = 1166;\nexports.ER_WRONG_KEY_COLUMN = 1167;\nexports.ER_WRONG_MRG_TABLE = 1168;\nexports.ER_DUP_UNIQUE = 1169;\nexports.ER_BLOB_KEY_WITHOUT_LENGTH = 1170;\nexports.ER_PRIMARY_CANT_HAVE_NULL = 1171;\nexports.ER_TOO_MANY_ROWS = 1172;\nexports.ER_REQUIRES_PRIMARY_KEY = 1173;\nexports.ER_NO_RAID_COMPILED = 1174;\nexports.ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE = 1175;\nexports.ER_KEY_DOES_NOT_EXITS = 1176;\nexports.ER_CHECK_NO_SUCH_TABLE = 1177;\nexports.ER_CHECK_NOT_IMPLEMENTED = 1178;\nexports.ER_CANT_DO_THIS_DURING_AN_TRANSACTION = 1179;\nexports.ER_ERROR_DURING_COMMIT = 1180;\nexports.ER_ERROR_DURING_ROLLBACK = 1181;\nexports.ER_ERROR_DURING_FLUSH_LOGS = 1182;\nexports.ER_ERROR_DURING_CHECKPOINT = 1183;\nexports.ER_NEW_ABORTING_CONNECTION = 1184;\nexports.ER_DUMP_NOT_IMPLEMENTED = 1185;\nexports.ER_FLUSH_MASTER_BINLOG_CLOSED = 1186; // deprecated\nexports.ER_FLUSH_SOURCE_BINLOG_CLOSED = 1186;\nexports.ER_INDEX_REBUILD = 1187;\nexports.ER_MASTER = 1188; // deprecated\nexports.ER_SOURCE = 1188;\nexports.ER_MASTER_NET_READ = 1189; // deprecated\nexports.ER_SOURCE_NET_READ = 1189;\nexports.ER_MASTER_NET_WRITE = 1190; // deprecated\nexports.ER_SOURCE_NET_WRITE = 1190;\nexports.ER_FT_MATCHING_KEY_NOT_FOUND = 1191;\nexports.ER_LOCK_OR_ACTIVE_TRANSACTION = 1192;\nexports.ER_UNKNOWN_SYSTEM_VARIABLE = 1193;\nexports.ER_CRASHED_ON_USAGE = 1194;\nexports.ER_CRASHED_ON_REPAIR = 1195;\nexports.ER_WARNING_NOT_COMPLETE_ROLLBACK = 1196;\nexports.ER_TRANS_CACHE_FULL = 1197;\nexports.ER_SLAVE_MUST_STOP = 1198; // deprecated\nexports.ER_REPLICA_MUST_STOP = 1198;\nexports.ER_SLAVE_NOT_RUNNING = 1199; // deprecated\nexports.ER_REPLICA_NOT_RUNNING = 1199;\nexports.ER_BAD_SLAVE = 1200; // deprecated\nexports.ER_BAD_REPLICA = 1200;\nexports.ER_MASTER_INFO = 1201; // deprecated\nexports.ER_SOURCE_INFO = 1201;\nexports.ER_SLAVE_THREAD = 1202; // deprecated\nexports.ER_REPLICA_THREAD = 1202;\nexports.ER_TOO_MANY_USER_CONNECTIONS = 1203;\nexports.ER_SET_CONSTANTS_ONLY = 1204;\nexports.ER_LOCK_WAIT_TIMEOUT = 1205;\nexports.ER_LOCK_TABLE_FULL = 1206;\nexports.ER_READ_ONLY_TRANSACTION = 1207;\nexports.ER_DROP_DB_WITH_READ_LOCK = 1208;\nexports.ER_CREATE_DB_WITH_READ_LOCK = 1209;\nexports.ER_WRONG_ARGUMENTS = 1210;\nexports.ER_NO_PERMISSION_TO_CREATE_USER = 1211;\nexports.ER_UNION_TABLES_IN_DIFFERENT_DIR = 1212;\nexports.ER_LOCK_DEADLOCK = 1213;\nexports.ER_TABLE_CANT_HANDLE_FT = 1214;\nexports.ER_CANNOT_ADD_FOREIGN = 1215;\nexports.ER_NO_REFERENCED_ROW = 1216;\nexports.ER_ROW_IS_REFERENCED = 1217;\nexports.ER_CONNECT_TO_MASTER = 1218; // deprecated\nexports.ER_CONNECT_TO_SOURCE = 1218;\nexports.ER_QUERY_ON_MASTER = 1219; // deprecated\nexports.ER_QUERY_ON_SOURCE = 1219;\nexports.ER_ERROR_WHEN_EXECUTING_COMMAND = 1220;\nexports.ER_WRONG_USAGE = 1221;\nexports.ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT = 1222;\nexports.ER_CANT_UPDATE_WITH_READLOCK = 1223;\nexports.ER_MIXING_NOT_ALLOWED = 1224;\nexports.ER_DUP_ARGUMENT = 1225;\nexports.ER_USER_LIMIT_REACHED = 1226;\nexports.ER_SPECIFIC_ACCESS_DENIED_ERROR = 1227;\nexports.ER_LOCAL_VARIABLE = 1228;\nexports.ER_GLOBAL_VARIABLE = 1229;\nexports.ER_NO_DEFAULT = 1230;\nexports.ER_WRONG_VALUE_FOR_VAR = 1231;\nexports.ER_WRONG_TYPE_FOR_VAR = 1232;\nexports.ER_VAR_CANT_BE_READ = 1233;\nexports.ER_CANT_USE_OPTION_HERE = 1234;\nexports.ER_NOT_SUPPORTED_YET = 1235;\nexports.ER_MASTER_FATAL_ERROR_READING_BINLOG = 1236; // deprecated\nexports.ER_SOURCE_FATAL_ERROR_READING_BINLOG = 1236;\nexports.ER_SLAVE_IGNORED_TABLE = 1237; // deprecated\nexports.ER_REPLICA_IGNORED_TABLE = 1237;\nexports.ER_INCORRECT_GLOBAL_LOCAL_VAR = 1238;\nexports.ER_WRONG_FK_DEF = 1239;\nexports.ER_KEY_REF_DO_NOT_MATCH_TABLE_REF = 1240;\nexports.ER_OPERAND_COLUMNS = 1241;\nexports.ER_SUBQUERY_NO_1_ROW = 1242;\nexports.ER_UNKNOWN_STMT_HANDLER = 1243;\nexports.ER_CORRUPT_HELP_DB = 1244;\nexports.ER_CYCLIC_REFERENCE = 1245;\nexports.ER_AUTO_CONVERT = 1246;\nexports.ER_ILLEGAL_REFERENCE = 1247;\nexports.ER_DERIVED_MUST_HAVE_ALIAS = 1248;\nexports.ER_SELECT_REDUCED = 1249;\nexports.ER_TABLENAME_NOT_ALLOWED_HERE = 1250;\nexports.ER_NOT_SUPPORTED_AUTH_MODE = 1251;\nexports.ER_SPATIAL_CANT_HAVE_NULL = 1252;\nexports.ER_COLLATION_CHARSET_MISMATCH = 1253;\nexports.ER_SLAVE_WAS_RUNNING = 1254; // deprecated\nexports.ER_REPLICA_WAS_RUNNING = 1254;\nexports.ER_SLAVE_WAS_NOT_RUNNING = 1255; // deprecated\nexports.ER_REPLICA_WAS_NOT_RUNNING = 1255;\nexports.ER_TOO_BIG_FOR_UNCOMPRESS = 1256;\nexports.ER_ZLIB_Z_MEM_ERROR = 1257;\nexports.ER_ZLIB_Z_BUF_ERROR = 1258;\nexports.ER_ZLIB_Z_DATA_ERROR = 1259;\nexports.ER_CUT_VALUE_GROUP_CONCAT = 1260;\nexports.ER_WARN_TOO_FEW_RECORDS = 1261;\nexports.ER_WARN_TOO_MANY_RECORDS = 1262;\nexports.ER_WARN_NULL_TO_NOTNULL = 1263;\nexports.ER_WARN_DATA_OUT_OF_RANGE = 1264;\nexports.ER_WARN_DATA_TRUNCATED = 1265;\nexports.ER_WARN_USING_OTHER_HANDLER = 1266;\nexports.ER_CANT_AGGREGATE_2COLLATIONS = 1267;\nexports.ER_DROP_USER = 1268;\nexports.ER_REVOKE_GRANTS = 1269;\nexports.ER_CANT_AGGREGATE_3COLLATIONS = 1270;\nexports.ER_CANT_AGGREGATE_NCOLLATIONS = 1271;\nexports.ER_VARIABLE_IS_NOT_STRUCT = 1272;\nexports.ER_UNKNOWN_COLLATION = 1273;\nexports.ER_SLAVE_IGNORED_SSL_PARAMS = 1274; // deprecated\nexports.ER_REPLICA_IGNORED_SSL_PARAMS = 1274;\nexports.ER_SERVER_IS_IN_SECURE_AUTH_MODE = 1275;\nexports.ER_WARN_FIELD_RESOLVED = 1276;\nexports.ER_BAD_SLAVE_UNTIL_COND = 1277; // deprecated\nexports.ER_BAD_REPLICA_UNTIL_COND = 1277;\nexports.ER_MISSING_SKIP_SLAVE = 1278; // deprecated\nexports.ER_MISSING_SKIP_REPLICA = 1278;\nexports.ER_UNTIL_COND_IGNORED = 1279;\nexports.ER_WRONG_NAME_FOR_INDEX = 1280;\nexports.ER_WRONG_NAME_FOR_CATALOG = 1281;\nexports.ER_WARN_QC_RESIZE = 1282;\nexports.ER_BAD_FT_COLUMN = 1283;\nexports.ER_UNKNOWN_KEY_CACHE = 1284;\nexports.ER_WARN_HOSTNAME_WONT_WORK = 1285;\nexports.ER_UNKNOWN_STORAGE_ENGINE = 1286;\nexports.ER_WARN_DEPRECATED_SYNTAX = 1287;\nexports.ER_NON_UPDATABLE_TABLE = 1288;\nexports.ER_FEATURE_DISABLED = 1289;\nexports.ER_OPTION_PREVENTS_STATEMENT = 1290;\nexports.ER_DUPLICATED_VALUE_IN_TYPE = 1291;\nexports.ER_TRUNCATED_WRONG_VALUE = 1292;\nexports.ER_TOO_MUCH_AUTO_TIMESTAMP_COLS = 1293;\nexports.ER_INVALID_ON_UPDATE = 1294;\nexports.ER_UNSUPPORTED_PS = 1295;\nexports.ER_GET_ERRMSG = 1296;\nexports.ER_GET_TEMPORARY_ERRMSG = 1297;\nexports.ER_UNKNOWN_TIME_ZONE = 1298;\nexports.ER_WARN_INVALID_TIMESTAMP = 1299;\nexports.ER_INVALID_CHARACTER_STRING = 1300;\nexports.ER_WARN_ALLOWED_PACKET_OVERFLOWED = 1301;\nexports.ER_CONFLICTING_DECLARATIONS = 1302;\nexports.ER_SP_NO_RECURSIVE_CREATE = 1303;\nexports.ER_SP_ALREADY_EXISTS = 1304;\nexports.ER_SP_DOES_NOT_EXIST = 1305;\nexports.ER_SP_DROP_FAILED = 1306;\nexports.ER_SP_STORE_FAILED = 1307;\nexports.ER_SP_LILABEL_MISMATCH = 1308;\nexports.ER_SP_LABEL_REDEFINE = 1309;\nexports.ER_SP_LABEL_MISMATCH = 1310;\nexports.ER_SP_UNINIT_VAR = 1311;\nexports.ER_SP_BADSELECT = 1312;\nexports.ER_SP_BADRETURN = 1313;\nexports.ER_SP_BADSTATEMENT = 1314;\nexports.ER_UPDATE_LOG_DEPRECATED_IGNORED = 1315;\nexports.ER_UPDATE_LOG_DEPRECATED_TRANSLATED = 1316;\nexports.ER_QUERY_INTERRUPTED = 1317;\nexports.ER_SP_WRONG_NO_OF_ARGS = 1318;\nexports.ER_SP_COND_MISMATCH = 1319;\nexports.ER_SP_NORETURN = 1320;\nexports.ER_SP_NORETURNEND = 1321;\nexports.ER_SP_BAD_CURSOR_QUERY = 1322;\nexports.ER_SP_BAD_CURSOR_SELECT = 1323;\nexports.ER_SP_CURSOR_MISMATCH = 1324;\nexports.ER_SP_CURSOR_ALREADY_OPEN = 1325;\nexports.ER_SP_CURSOR_NOT_OPEN = 1326;\nexports.ER_SP_UNDECLARED_VAR = 1327;\nexports.ER_SP_WRONG_NO_OF_FETCH_ARGS = 1328;\nexports.ER_SP_FETCH_NO_DATA = 1329;\nexports.ER_SP_DUP_PARAM = 1330;\nexports.ER_SP_DUP_VAR = 1331;\nexports.ER_SP_DUP_COND = 1332;\nexports.ER_SP_DUP_CURS = 1333;\nexports.ER_SP_CANT_ALTER = 1334;\nexports.ER_SP_SUBSELECT_NYI = 1335;\nexports.ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG = 1336;\nexports.ER_SP_VARCOND_AFTER_CURSHNDLR = 1337;\nexports.ER_SP_CURSOR_AFTER_HANDLER = 1338;\nexports.ER_SP_CASE_NOT_FOUND = 1339;\nexports.ER_FPARSER_TOO_BIG_FILE = 1340;\nexports.ER_FPARSER_BAD_HEADER = 1341;\nexports.ER_FPARSER_EOF_IN_COMMENT = 1342;\nexports.ER_FPARSER_ERROR_IN_PARAMETER = 1343;\nexports.ER_FPARSER_EOF_IN_UNKNOWN_PARAMETER = 1344;\nexports.ER_VIEW_NO_EXPLAIN = 1345;\nexports.ER_FRM_UNKNOWN_TYPE = 1346;\nexports.ER_WRONG_OBJECT = 1347;\nexports.ER_NONUPDATEABLE_COLUMN = 1348;\nexports.ER_VIEW_SELECT_DERIVED = 1349;\nexports.ER_VIEW_SELECT_CLAUSE = 1350;\nexports.ER_VIEW_SELECT_VARIABLE = 1351;\nexports.ER_VIEW_SELECT_TMPTABLE = 1352;\nexports.ER_VIEW_WRONG_LIST = 1353;\nexports.ER_WARN_VIEW_MERGE = 1354;\nexports.ER_WARN_VIEW_WITHOUT_KEY = 1355;\nexports.ER_VIEW_INVALID = 1356;\nexports.ER_SP_NO_DROP_SP = 1357;\nexports.ER_SP_GOTO_IN_HNDLR = 1358;\nexports.ER_TRG_ALREADY_EXISTS = 1359;\nexports.ER_TRG_DOES_NOT_EXIST = 1360;\nexports.ER_TRG_ON_VIEW_OR_TEMP_TABLE = 1361;\nexports.ER_TRG_CANT_CHANGE_ROW = 1362;\nexports.ER_TRG_NO_SUCH_ROW_IN_TRG = 1363;\nexports.ER_NO_DEFAULT_FOR_FIELD = 1364;\nexports.ER_DIVISION_BY_ZERO = 1365;\nexports.ER_TRUNCATED_WRONG_VALUE_FOR_FIELD = 1366;\nexports.ER_ILLEGAL_VALUE_FOR_TYPE = 1367;\nexports.ER_VIEW_NONUPD_CHECK = 1368;\nexports.ER_VIEW_CHECK_FAILED = 1369;\nexports.ER_PROCACCESS_DENIED_ERROR = 1370;\nexports.ER_RELAY_LOG_FAIL = 1371;\nexports.ER_PASSWD_LENGTH = 1372;\nexports.ER_UNKNOWN_TARGET_BINLOG = 1373;\nexports.ER_IO_ERR_LOG_INDEX_READ = 1374;\nexports.ER_BINLOG_PURGE_PROHIBITED = 1375;\nexports.ER_FSEEK_FAIL = 1376;\nexports.ER_BINLOG_PURGE_FATAL_ERR = 1377;\nexports.ER_LOG_IN_USE = 1378;\nexports.ER_LOG_PURGE_UNKNOWN_ERR = 1379;\nexports.ER_RELAY_LOG_INIT = 1380;\nexports.ER_NO_BINARY_LOGGING = 1381;\nexports.ER_RESERVED_SYNTAX = 1382;\nexports.ER_WSAS_FAILED = 1383;\nexports.ER_DIFF_GROUPS_PROC = 1384;\nexports.ER_NO_GROUP_FOR_PROC = 1385;\nexports.ER_ORDER_WITH_PROC = 1386;\nexports.ER_LOGGING_PROHIBIT_CHANGING_OF = 1387;\nexports.ER_NO_FILE_MAPPING = 1388;\nexports.ER_WRONG_MAGIC = 1389;\nexports.ER_PS_MANY_PARAM = 1390;\nexports.ER_KEY_PART_0 = 1391;\nexports.ER_VIEW_CHECKSUM = 1392;\nexports.ER_VIEW_MULTIUPDATE = 1393;\nexports.ER_VIEW_NO_INSERT_FIELD_LIST = 1394;\nexports.ER_VIEW_DELETE_MERGE_VIEW = 1395;\nexports.ER_CANNOT_USER = 1396;\nexports.ER_XAER_NOTA = 1397;\nexports.ER_XAER_INVAL = 1398;\nexports.ER_XAER_RMFAIL = 1399;\nexports.ER_XAER_OUTSIDE = 1400;\nexports.ER_XAER_RMERR = 1401;\nexports.ER_XA_RBROLLBACK = 1402;\nexports.ER_NONEXISTING_PROC_GRANT = 1403;\nexports.ER_PROC_AUTO_GRANT_FAIL = 1404;\nexports.ER_PROC_AUTO_REVOKE_FAIL = 1405;\nexports.ER_DATA_TOO_LONG = 1406;\nexports.ER_SP_BAD_SQLSTATE = 1407;\nexports.ER_STARTUP = 1408;\nexports.ER_LOAD_FROM_FIXED_SIZE_ROWS_TO_VAR = 1409;\nexports.ER_CANT_CREATE_USER_WITH_GRANT = 1410;\nexports.ER_WRONG_VALUE_FOR_TYPE = 1411;\nexports.ER_TABLE_DEF_CHANGED = 1412;\nexports.ER_SP_DUP_HANDLER = 1413;\nexports.ER_SP_NOT_VAR_ARG = 1414;\nexports.ER_SP_NO_RETSET = 1415;\nexports.ER_CANT_CREATE_GEOMETRY_OBJECT = 1416;\nexports.ER_FAILED_ROUTINE_BREAK_BINLOG = 1417;\nexports.ER_BINLOG_UNSAFE_ROUTINE = 1418;\nexports.ER_BINLOG_CREATE_ROUTINE_NEED_SUPER = 1419;\nexports.ER_EXEC_STMT_WITH_OPEN_CURSOR = 1420;\nexports.ER_STMT_HAS_NO_OPEN_CURSOR = 1421;\nexports.ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG = 1422;\nexports.ER_NO_DEFAULT_FOR_VIEW_FIELD = 1423;\nexports.ER_SP_NO_RECURSION = 1424;\nexports.ER_TOO_BIG_SCALE = 1425;\nexports.ER_TOO_BIG_PRECISION = 1426;\nexports.ER_M_BIGGER_THAN_D = 1427;\nexports.ER_WRONG_LOCK_OF_SYSTEM_TABLE = 1428;\nexports.ER_CONNECT_TO_FOREIGN_DATA_SOURCE = 1429;\nexports.ER_QUERY_ON_FOREIGN_DATA_SOURCE = 1430;\nexports.ER_FOREIGN_DATA_SOURCE_DOESNT_EXIST = 1431;\nexports.ER_FOREIGN_DATA_STRING_INVALID_CANT_CREATE = 1432;\nexports.ER_FOREIGN_DATA_STRING_INVALID = 1433;\nexports.ER_CANT_CREATE_FEDERATED_TABLE = 1434;\nexports.ER_TRG_IN_WRONG_SCHEMA = 1435;\nexports.ER_STACK_OVERRUN_NEED_MORE = 1436;\nexports.ER_TOO_LONG_BODY = 1437;\nexports.ER_WARN_CANT_DROP_DEFAULT_KEYCACHE = 1438;\nexports.ER_TOO_BIG_DISPLAYWIDTH = 1439;\nexports.ER_XAER_DUPID = 1440;\nexports.ER_DATETIME_FUNCTION_OVERFLOW = 1441;\nexports.ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG = 1442;\nexports.ER_VIEW_PREVENT_UPDATE = 1443;\nexports.ER_PS_NO_RECURSION = 1444;\nexports.ER_SP_CANT_SET_AUTOCOMMIT = 1445;\nexports.ER_MALFORMED_DEFINER = 1446;\nexports.ER_VIEW_FRM_NO_USER = 1447;\nexports.ER_VIEW_OTHER_USER = 1448;\nexports.ER_NO_SUCH_USER = 1449;\nexports.ER_FORBID_SCHEMA_CHANGE = 1450;\nexports.ER_ROW_IS_REFERENCED_2 = 1451;\nexports.ER_NO_REFERENCED_ROW_2 = 1452;\nexports.ER_SP_BAD_VAR_SHADOW = 1453;\nexports.ER_TRG_NO_DEFINER = 1454;\nexports.ER_OLD_FILE_FORMAT = 1455;\nexports.ER_SP_RECURSION_LIMIT = 1456;\nexports.ER_SP_PROC_TABLE_CORRUPT = 1457;\nexports.ER_SP_WRONG_NAME = 1458;\nexports.ER_TABLE_NEEDS_UPGRADE = 1459;\nexports.ER_SP_NO_AGGREGATE = 1460;\nexports.ER_MAX_PREPARED_STMT_COUNT_REACHED = 1461;\nexports.ER_VIEW_RECURSIVE = 1462;\nexports.ER_NON_GROUPING_FIELD_USED = 1463;\nexports.ER_TABLE_CANT_HANDLE_SPKEYS = 1464;\nexports.ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA = 1465;\nexports.ER_REMOVED_SPACES = 1466;\nexports.ER_AUTOINC_READ_FAILED = 1467;\nexports.ER_USERNAME = 1468;\nexports.ER_HOSTNAME = 1469;\nexports.ER_WRONG_STRING_LENGTH = 1470;\nexports.ER_NON_INSERTABLE_TABLE = 1471;\nexports.ER_ADMIN_WRONG_MRG_TABLE = 1472;\nexports.ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT = 1473;\nexports.ER_NAME_BECOMES_EMPTY = 1474;\nexports.ER_AMBIGUOUS_FIELD_TERM = 1475;\nexports.ER_FOREIGN_SERVER_EXISTS = 1476;\nexports.ER_FOREIGN_SERVER_DOESNT_EXIST = 1477;\nexports.ER_ILLEGAL_HA_CREATE_OPTION = 1478;\nexports.ER_PARTITION_REQUIRES_VALUES_ERROR = 1479;\nexports.ER_PARTITION_WRONG_VALUES_ERROR = 1480;\nexports.ER_PARTITION_MAXVALUE_ERROR = 1481;\nexports.ER_PARTITION_SUBPARTITION_ERROR = 1482;\nexports.ER_PARTITION_SUBPART_MIX_ERROR = 1483;\nexports.ER_PARTITION_WRONG_NO_PART_ERROR = 1484;\nexports.ER_PARTITION_WRONG_NO_SUBPART_ERROR = 1485;\nexports.ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR = 1486;\nexports.ER_NO_CONST_EXPR_IN_RANGE_OR_LIST_ERROR = 1487;\nexports.ER_FIELD_NOT_FOUND_PART_ERROR = 1488;\nexports.ER_LIST_OF_FIELDS_ONLY_IN_HASH_ERROR = 1489;\nexports.ER_INCONSISTENT_PARTITION_INFO_ERROR = 1490;\nexports.ER_PARTITION_FUNC_NOT_ALLOWED_ERROR = 1491;\nexports.ER_PARTITIONS_MUST_BE_DEFINED_ERROR = 1492;\nexports.ER_RANGE_NOT_INCREASING_ERROR = 1493;\nexports.ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR = 1494;\nexports.ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR = 1495;\nexports.ER_PARTITION_ENTRY_ERROR = 1496;\nexports.ER_MIX_HANDLER_ERROR = 1497;\nexports.ER_PARTITION_NOT_DEFINED_ERROR = 1498;\nexports.ER_TOO_MANY_PARTITIONS_ERROR = 1499;\nexports.ER_SUBPARTITION_ERROR = 1500;\nexports.ER_CANT_CREATE_HANDLER_FILE = 1501;\nexports.ER_BLOB_FIELD_IN_PART_FUNC_ERROR = 1502;\nexports.ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF = 1503;\nexports.ER_NO_PARTS_ERROR = 1504;\nexports.ER_PARTITION_MGMT_ON_NONPARTITIONED = 1505;\nexports.ER_FOREIGN_KEY_ON_PARTITIONED = 1506;\nexports.ER_DROP_PARTITION_NON_EXISTENT = 1507;\nexports.ER_DROP_LAST_PARTITION = 1508;\nexports.ER_COALESCE_ONLY_ON_HASH_PARTITION = 1509;\nexports.ER_REORG_HASH_ONLY_ON_SAME_NO = 1510;\nexports.ER_REORG_NO_PARAM_ERROR = 1511;\nexports.ER_ONLY_ON_RANGE_LIST_PARTITION = 1512;\nexports.ER_ADD_PARTITION_SUBPART_ERROR = 1513;\nexports.ER_ADD_PARTITION_NO_NEW_PARTITION = 1514;\nexports.ER_COALESCE_PARTITION_NO_PARTITION = 1515;\nexports.ER_REORG_PARTITION_NOT_EXIST = 1516;\nexports.ER_SAME_NAME_PARTITION = 1517;\nexports.ER_NO_BINLOG_ERROR = 1518;\nexports.ER_CONSECUTIVE_REORG_PARTITIONS = 1519;\nexports.ER_REORG_OUTSIDE_RANGE = 1520;\nexports.ER_PARTITION_FUNCTION_FAILURE = 1521;\nexports.ER_PART_STATE_ERROR = 1522;\nexports.ER_LIMITED_PART_RANGE = 1523;\nexports.ER_PLUGIN_IS_NOT_LOADED = 1524;\nexports.ER_WRONG_VALUE = 1525;\nexports.ER_NO_PARTITION_FOR_GIVEN_VALUE = 1526;\nexports.ER_FILEGROUP_OPTION_ONLY_ONCE = 1527;\nexports.ER_CREATE_FILEGROUP_FAILED = 1528;\nexports.ER_DROP_FILEGROUP_FAILED = 1529;\nexports.ER_TABLESPACE_AUTO_EXTEND_ERROR = 1530;\nexports.ER_WRONG_SIZE_NUMBER = 1531;\nexports.ER_SIZE_OVERFLOW_ERROR = 1532;\nexports.ER_ALTER_FILEGROUP_FAILED = 1533;\nexports.ER_BINLOG_ROW_LOGGING_FAILED = 1534;\nexports.ER_BINLOG_ROW_WRONG_TABLE_DEF = 1535;\nexports.ER_BINLOG_ROW_RBR_TO_SBR = 1536;\nexports.ER_EVENT_ALREADY_EXISTS = 1537;\nexports.ER_EVENT_STORE_FAILED = 1538;\nexports.ER_EVENT_DOES_NOT_EXIST = 1539;\nexports.ER_EVENT_CANT_ALTER = 1540;\nexports.ER_EVENT_DROP_FAILED = 1541;\nexports.ER_EVENT_INTERVAL_NOT_POSITIVE_OR_TOO_BIG = 1542;\nexports.ER_EVENT_ENDS_BEFORE_STARTS = 1543;\nexports.ER_EVENT_EXEC_TIME_IN_THE_PAST = 1544;\nexports.ER_EVENT_OPEN_TABLE_FAILED = 1545;\nexports.ER_EVENT_NEITHER_M_EXPR_NOR_M_AT = 1546;\nexports.ER_COL_COUNT_DOESNT_MATCH_CORRUPTED = 1547;\nexports.ER_CANNOT_LOAD_FROM_TABLE = 1548;\nexports.ER_EVENT_CANNOT_DELETE = 1549;\nexports.ER_EVENT_COMPILE_ERROR = 1550;\nexports.ER_EVENT_SAME_NAME = 1551;\nexports.ER_EVENT_DATA_TOO_LONG = 1552;\nexports.ER_DROP_INDEX_FK = 1553;\nexports.ER_WARN_DEPRECATED_SYNTAX_WITH_VER = 1554;\nexports.ER_CANT_WRITE_LOCK_LOG_TABLE = 1555;\nexports.ER_CANT_LOCK_LOG_TABLE = 1556;\nexports.ER_FOREIGN_DUPLICATE_KEY = 1557;\nexports.ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE = 1558;\nexports.ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR = 1559;\nexports.ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_FORMAT = 1560;\nexports.ER_NDB_CANT_SWITCH_BINLOG_FORMAT = 1561;\nexports.ER_PARTITION_NO_TEMPORARY = 1562;\nexports.ER_PARTITION_CONST_DOMAIN_ERROR = 1563;\nexports.ER_PARTITION_FUNCTION_IS_NOT_ALLOWED = 1564;\nexports.ER_DDL_LOG_ERROR = 1565;\nexports.ER_NULL_IN_VALUES_LESS_THAN = 1566;\nexports.ER_WRONG_PARTITION_NAME = 1567;\nexports.ER_CANT_CHANGE_TX_ISOLATION = 1568;\nexports.ER_DUP_ENTRY_AUTOINCREMENT_CASE = 1569;\nexports.ER_EVENT_MODIFY_QUEUE_ERROR = 1570;\nexports.ER_EVENT_SET_VAR_ERROR = 1571;\nexports.ER_PARTITION_MERGE_ERROR = 1572;\nexports.ER_CANT_ACTIVATE_LOG = 1573;\nexports.ER_RBR_NOT_AVAILABLE = 1574;\nexports.ER_BASE64_DECODE_ERROR = 1575;\nexports.ER_EVENT_RECURSION_FORBIDDEN = 1576;\nexports.ER_EVENTS_DB_ERROR = 1577;\nexports.ER_ONLY_INTEGERS_ALLOWED = 1578;\nexports.ER_UNSUPORTED_LOG_ENGINE = 1579;\nexports.ER_BAD_LOG_STATEMENT = 1580;\nexports.ER_CANT_RENAME_LOG_TABLE = 1581;\nexports.ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT = 1582;\nexports.ER_WRONG_PARAMETERS_TO_NATIVE_FCT = 1583;\nexports.ER_WRONG_PARAMETERS_TO_STORED_FCT = 1584;\nexports.ER_NATIVE_FCT_NAME_COLLISION = 1585;\nexports.ER_DUP_ENTRY_WITH_KEY_NAME = 1586;\nexports.ER_BINLOG_PURGE_EMFILE = 1587;\nexports.ER_EVENT_CANNOT_CREATE_IN_THE_PAST = 1588;\nexports.ER_EVENT_CANNOT_ALTER_IN_THE_PAST = 1589;\nexports.ER_SLAVE_INCIDENT = 1590; // deprecated\nexports.ER_REPLICA_INCIDENT = 1590;\nexports.ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT = 1591;\nexports.ER_BINLOG_UNSAFE_STATEMENT = 1592;\nexports.ER_SLAVE_FATAL_ERROR = 1593; // deprecated\nexports.ER_REPLICA_FATAL_ERROR = 1593;\nexports.ER_SLAVE_RELAY_LOG_READ_FAILURE = 1594; //deprecated\nexports.ER_REPLICA_RELAY_LOG_READ_FAILURE = 1594;\nexports.ER_SLAVE_RELAY_LOG_WRITE_FAILURE = 1595; // deprecated\nexports.ER_REPLICA_RELAY_LOG_WRITE_FAILURE = 1595;\nexports.ER_SLAVE_CREATE_EVENT_FAILURE = 1596; // deprecated\nexports.ER_REPLICA_CREATE_EVENT_FAILURE = 1596;\nexports.ER_SLAVE_MASTER_COM_FAILURE = 1597; // deprecated\nexports.ER_REPLICA_SOURCE_COM_FAILURE = 1597;\nexports.ER_BINLOG_LOGGING_IMPOSSIBLE = 1598;\nexports.ER_VIEW_NO_CREATION_CTX = 1599;\nexports.ER_VIEW_INVALID_CREATION_CTX = 1600;\nexports.ER_SR_INVALID_CREATION_CTX = 1601;\nexports.ER_TRG_CORRUPTED_FILE = 1602;\nexports.ER_TRG_NO_CREATION_CTX = 1603;\nexports.ER_TRG_INVALID_CREATION_CTX = 1604;\nexports.ER_EVENT_INVALID_CREATION_CTX = 1605;\nexports.ER_TRG_CANT_OPEN_TABLE = 1606;\nexports.ER_CANT_CREATE_SROUTINE = 1607;\nexports.ER_NEVER_USED = 1608;\nexports.ER_NO_FORMAT_DESCRIPTION_EVENT_BEFORE_BINLOG_STATEMENT = 1609;\nexports.ER_SLAVE_CORRUPT_EVENT = 1610; // deprecated\nexports.ER_REPLICA_CORRUPT_EVENT = 1610;\nexports.ER_LOAD_DATA_INVALID_COLUMN = 1611;\nexports.ER_LOG_PURGE_NO_FILE = 1612;\nexports.ER_XA_RBTIMEOUT = 1613;\nexports.ER_XA_RBDEADLOCK = 1614;\nexports.ER_NEED_REPREPARE = 1615;\nexports.ER_DELAYED_NOT_SUPPORTED = 1616;\nexports.WARN_NO_MASTER_INFO = 1617; // deprecated\nexports.WARN_NO_SOURCE_INFO = 1617;\nexports.WARN_OPTION_IGNORED = 1618;\nexports.WARN_PLUGIN_DELETE_BUILTIN = 1619;\nexports.WARN_PLUGIN_BUSY = 1620;\nexports.ER_VARIABLE_IS_READONLY = 1621;\nexports.ER_WARN_ENGINE_TRANSACTION_ROLLBACK = 1622;\nexports.ER_SLAVE_HEARTBEAT_FAILURE = 1623; // deprecated\nexports.ER_REPLICA_HEARTBEAT_FAILURE = 1623;\nexports.ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE = 1624; // deprecated\nexports.ER_REPLICA_HEARTBEAT_VALUE_OUT_OF_RANGE = 1624;\nexports.ER_NDB_REPLICATION_SCHEMA_ERROR = 1625;\nexports.ER_CONFLICT_FN_PARSE_ERROR = 1626;\nexports.ER_EXCEPTIONS_WRITE_ERROR = 1627;\nexports.ER_TOO_LONG_TABLE_COMMENT = 1628;\nexports.ER_TOO_LONG_FIELD_COMMENT = 1629;\nexports.ER_FUNC_INEXISTENT_NAME_COLLISION = 1630;\nexports.ER_DATABASE_NAME = 1631;\nexports.ER_TABLE_NAME = 1632;\nexports.ER_PARTITION_NAME = 1633;\nexports.ER_SUBPARTITION_NAME = 1634;\nexports.ER_TEMPORARY_NAME = 1635;\nexports.ER_RENAMED_NAME = 1636;\nexports.ER_TOO_MANY_CONCURRENT_TRXS = 1637;\nexports.WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED = 1638;\nexports.ER_DEBUG_SYNC_TIMEOUT = 1639;\nexports.ER_DEBUG_SYNC_HIT_LIMIT = 1640;\nexports.ER_DUP_SIGNAL_SET = 1641;\nexports.ER_SIGNAL_WARN = 1642;\nexports.ER_SIGNAL_NOT_FOUND = 1643;\nexports.ER_SIGNAL_EXCEPTION = 1644;\nexports.ER_RESIGNAL_WITHOUT_ACTIVE_HANDLER = 1645;\nexports.ER_SIGNAL_BAD_CONDITION_TYPE = 1646;\nexports.WARN_COND_ITEM_TRUNCATED = 1647;\nexports.ER_COND_ITEM_TOO_LONG = 1648;\nexports.ER_UNKNOWN_LOCALE = 1649;\nexports.ER_SLAVE_IGNORE_SERVER_IDS = 1650; // deprecated\nexports.ER_REPLICA_IGNORE_SERVER_IDS = 1650;\nexports.ER_QUERY_CACHE_DISABLED = 1651;\nexports.ER_SAME_NAME_PARTITION_FIELD = 1652;\nexports.ER_PARTITION_COLUMN_LIST_ERROR = 1653;\nexports.ER_WRONG_TYPE_COLUMN_VALUE_ERROR = 1654;\nexports.ER_TOO_MANY_PARTITION_FUNC_FIELDS_ERROR = 1655;\nexports.ER_MAXVALUE_IN_VALUES_IN = 1656;\nexports.ER_TOO_MANY_VALUES_ERROR = 1657;\nexports.ER_ROW_SINGLE_PARTITION_FIELD_ERROR = 1658;\nexports.ER_FIELD_TYPE_NOT_ALLOWED_AS_PARTITION_FIELD = 1659;\nexports.ER_PARTITION_FIELDS_TOO_LONG = 1660;\nexports.ER_BINLOG_ROW_ENGINE_AND_STMT_ENGINE = 1661;\nexports.ER_BINLOG_ROW_MODE_AND_STMT_ENGINE = 1662;\nexports.ER_BINLOG_UNSAFE_AND_STMT_ENGINE = 1663;\nexports.ER_BINLOG_ROW_INJECTION_AND_STMT_ENGINE = 1664;\nexports.ER_BINLOG_STMT_MODE_AND_ROW_ENGINE = 1665;\nexports.ER_BINLOG_ROW_INJECTION_AND_STMT_MODE = 1666;\nexports.ER_BINLOG_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE = 1667;\nexports.ER_BINLOG_UNSAFE_LIMIT = 1668;\nexports.ER_BINLOG_UNSAFE_INSERT_DELAYED = 1669;\nexports.ER_BINLOG_UNSAFE_SYSTEM_TABLE = 1670;\nexports.ER_BINLOG_UNSAFE_AUTOINC_COLUMNS = 1671;\nexports.ER_BINLOG_UNSAFE_UDF = 1672;\nexports.ER_BINLOG_UNSAFE_SYSTEM_VARIABLE = 1673;\nexports.ER_BINLOG_UNSAFE_SYSTEM_FUNCTION = 1674;\nexports.ER_BINLOG_UNSAFE_NONTRANS_AFTER_TRANS = 1675;\nexports.ER_MESSAGE_AND_STATEMENT = 1676;\nexports.ER_SLAVE_CONVERSION_FAILED = 1677; // deprecated\nexports.ER_REPLICA_CONVERSION_FAILED = 1677;\nexports.ER_SLAVE_CANT_CREATE_CONVERSION = 1678; // deprecated\nexports.ER_REPLICA_CANT_CREATE_CONVERSION = 1678;\nexports.ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT = 1679;\nexports.ER_PATH_LENGTH = 1680;\nexports.ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT = 1681;\nexports.ER_WRONG_NATIVE_TABLE_STRUCTURE = 1682;\nexports.ER_WRONG_PERFSCHEMA_USAGE = 1683;\nexports.ER_WARN_I_S_SKIPPED_TABLE = 1684;\nexports.ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_DIRECT = 1685;\nexports.ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_DIRECT = 1686;\nexports.ER_SPATIAL_MUST_HAVE_GEOM_COL = 1687;\nexports.ER_TOO_LONG_INDEX_COMMENT = 1688;\nexports.ER_LOCK_ABORTED = 1689;\nexports.ER_DATA_OUT_OF_RANGE = 1690;\nexports.ER_WRONG_SPVAR_TYPE_IN_LIMIT = 1691;\nexports.ER_BINLOG_UNSAFE_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE = 1692;\nexports.ER_BINLOG_UNSAFE_MIXED_STATEMENT = 1693;\nexports.ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_SQL_LOG_BIN = 1694;\nexports.ER_STORED_FUNCTION_PREVENTS_SWITCH_SQL_LOG_BIN = 1695;\nexports.ER_FAILED_READ_FROM_PAR_FILE = 1696;\nexports.ER_VALUES_IS_NOT_INT_TYPE_ERROR = 1697;\nexports.ER_ACCESS_DENIED_NO_PASSWORD_ERROR = 1698;\nexports.ER_SET_PASSWORD_AUTH_PLUGIN = 1699;\nexports.ER_GRANT_PLUGIN_USER_EXISTS = 1700;\nexports.ER_TRUNCATE_ILLEGAL_FK = 1701;\nexports.ER_PLUGIN_IS_PERMANENT = 1702;\nexports.ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MIN = 1703; // deprecated\nexports.ER_REPLICA_HEARTBEAT_VALUE_OUT_OF_RANGE_MIN = 1703;\nexports.ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MAX = 1704; // deprecated\nexports.ER_REPLICA_HEARTBEAT_VALUE_OUT_OF_RANGE_MAX = 1704;\nexports.ER_STMT_CACHE_FULL = 1705;\nexports.ER_MULTI_UPDATE_KEY_CONFLICT = 1706;\nexports.ER_TABLE_NEEDS_REBUILD = 1707;\nexports.WARN_OPTION_BELOW_LIMIT = 1708;\nexports.ER_INDEX_COLUMN_TOO_LONG = 1709;\nexports.ER_ERROR_IN_TRIGGER_BODY = 1710;\nexports.ER_ERROR_IN_UNKNOWN_TRIGGER_BODY = 1711;\nexports.ER_INDEX_CORRUPT = 1712;\nexports.ER_UNDO_RECORD_TOO_BIG = 1713;\nexports.ER_BINLOG_UNSAFE_INSERT_IGNORE_SELECT = 1714;\nexports.ER_BINLOG_UNSAFE_INSERT_SELECT_UPDATE = 1715;\nexports.ER_BINLOG_UNSAFE_REPLACE_SELECT = 1716;\nexports.ER_BINLOG_UNSAFE_CREATE_IGNORE_SELECT = 1717;\nexports.ER_BINLOG_UNSAFE_CREATE_REPLACE_SELECT = 1718;\nexports.ER_BINLOG_UNSAFE_UPDATE_IGNORE = 1719;\nexports.ER_PLUGIN_NO_UNINSTALL = 1720;\nexports.ER_PLUGIN_NO_INSTALL = 1721;\nexports.ER_BINLOG_UNSAFE_WRITE_AUTOINC_SELECT = 1722;\nexports.ER_BINLOG_UNSAFE_CREATE_SELECT_AUTOINC = 1723;\nexports.ER_BINLOG_UNSAFE_INSERT_TWO_KEYS = 1724;\nexports.ER_TABLE_IN_FK_CHECK = 1725;\nexports.ER_UNSUPPORTED_ENGINE = 1726;\nexports.ER_BINLOG_UNSAFE_AUTOINC_NOT_FIRST = 1727;\nexports.ER_CANNOT_LOAD_FROM_TABLE_V2 = 1728;\nexports.ER_MASTER_DELAY_VALUE_OUT_OF_RANGE = 1729; // deprecated\nexports.ER_SOURCE_DELAY_VALUE_OUT_OF_RANGE = 1729;\nexports.ER_ONLY_FD_AND_RBR_EVENTS_ALLOWED_IN_BINLOG_STATEMENT = 1730;\nexports.ER_PARTITION_EXCHANGE_DIFFERENT_OPTION = 1731;\nexports.ER_PARTITION_EXCHANGE_PART_TABLE = 1732;\nexports.ER_PARTITION_EXCHANGE_TEMP_TABLE = 1733;\nexports.ER_PARTITION_INSTEAD_OF_SUBPARTITION = 1734;\nexports.ER_UNKNOWN_PARTITION = 1735;\nexports.ER_TABLES_DIFFERENT_METADATA = 1736;\nexports.ER_ROW_DOES_NOT_MATCH_PARTITION = 1737;\nexports.ER_BINLOG_CACHE_SIZE_GREATER_THAN_MAX = 1738;\nexports.ER_WARN_INDEX_NOT_APPLICABLE = 1739;\nexports.ER_PARTITION_EXCHANGE_FOREIGN_KEY = 1740;\nexports.ER_NO_SUCH_KEY_VALUE = 1741;\nexports.ER_RPL_INFO_DATA_TOO_LONG = 1742;\nexports.ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE = 1743;\nexports.ER_BINLOG_READ_EVENT_CHECKSUM_FAILURE = 1744;\nexports.ER_BINLOG_STMT_CACHE_SIZE_GREATER_THAN_MAX = 1745;\nexports.ER_CANT_UPDATE_TABLE_IN_CREATE_TABLE_SELECT = 1746;\nexports.ER_PARTITION_CLAUSE_ON_NONPARTITIONED = 1747;\nexports.ER_ROW_DOES_NOT_MATCH_GIVEN_PARTITION_SET = 1748;\nexports.ER_NO_SUCH_PARTITION = 1749;\nexports.ER_CHANGE_RPL_INFO_REPOSITORY_FAILURE = 1750;\nexports.ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_CREATED_TEMP_TABLE = 1751;\nexports.ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_DROPPED_TEMP_TABLE = 1752;\nexports.ER_MTS_FEATURE_IS_NOT_SUPPORTED = 1753;\nexports.ER_MTS_UPDATED_DBS_GREATER_MAX = 1754;\nexports.ER_MTS_CANT_PARALLEL = 1755;\nexports.ER_MTS_INCONSISTENT_DATA = 1756;\nexports.ER_FULLTEXT_NOT_SUPPORTED_WITH_PARTITIONING = 1757;\nexports.ER_DA_INVALID_CONDITION_NUMBER = 1758;\nexports.ER_INSECURE_PLAIN_TEXT = 1759;\nexports.ER_INSECURE_CHANGE_MASTER = 1760; // deprecated\nexports.ER_INSECURE_CHANGE_SOURCE = 1760;\nexports.ER_FOREIGN_DUPLICATE_KEY_WITH_CHILD_INFO = 1761;\nexports.ER_FOREIGN_DUPLICATE_KEY_WITHOUT_CHILD_INFO = 1762;\nexports.ER_SQLTHREAD_WITH_SECURE_SLAVE = 1763; // deprecated\nexports.ER_SQLTHREAD_WITH_SECURE_REPLICA = 1763;\nexports.ER_TABLE_HAS_NO_FT = 1764;\nexports.ER_VARIABLE_NOT_SETTABLE_IN_SF_OR_TRIGGER = 1765;\nexports.ER_VARIABLE_NOT_SETTABLE_IN_TRANSACTION = 1766;\nexports.ER_GTID_NEXT_IS_NOT_IN_GTID_NEXT_LIST = 1767;\nexports.ER_CANT_CHANGE_GTID_NEXT_IN_TRANSACTION_WHEN_GTID_NEXT_LIST_IS_NULL = 1768;\nexports.ER_SET_STATEMENT_CANNOT_INVOKE_FUNCTION = 1769;\nexports.ER_GTID_NEXT_CANT_BE_AUTOMATIC_IF_GTID_NEXT_LIST_IS_NON_NULL = 1770;\nexports.ER_SKIPPING_LOGGED_TRANSACTION = 1771;\nexports.ER_MALFORMED_GTID_SET_SPECIFICATION = 1772;\nexports.ER_MALFORMED_GTID_SET_ENCODING = 1773;\nexports.ER_MALFORMED_GTID_SPECIFICATION = 1774;\nexports.ER_GNO_EXHAUSTED = 1775;\nexports.ER_BAD_SLAVE_AUTO_POSITION = 1776; // deprecated\nexports.ER_BAD_REPLICA_AUTO_POSITION = 1776;\nexports.ER_AUTO_POSITION_REQUIRES_GTID_MODE_ON = 1777;\nexports.ER_CANT_DO_IMPLICIT_COMMIT_IN_TRX_WHEN_GTID_NEXT_IS_SET = 1778;\nexports.ER_GTID_MODE_2_OR_3_REQUIRES_ENFORCE_GTID_CONSISTENCY_ON = 1779;\nexports.ER_GTID_MODE_REQUIRES_BINLOG = 1780;\nexports.ER_CANT_SET_GTID_NEXT_TO_GTID_WHEN_GTID_MODE_IS_OFF = 1781;\nexports.ER_CANT_SET_GTID_NEXT_TO_ANONYMOUS_WHEN_GTID_MODE_IS_ON = 1782;\nexports.ER_CANT_SET_GTID_NEXT_LIST_TO_NON_NULL_WHEN_GTID_MODE_IS_OFF = 1783;\nexports.ER_FOUND_GTID_EVENT_WHEN_GTID_MODE_IS_OFF = 1784;\nexports.ER_GTID_UNSAFE_NON_TRANSACTIONAL_TABLE = 1785;\nexports.ER_GTID_UNSAFE_CREATE_SELECT = 1786;\nexports.ER_GTID_UNSAFE_CREATE_DROP_TEMPORARY_TABLE_IN_TRANSACTION = 1787;\nexports.ER_GTID_MODE_CAN_ONLY_CHANGE_ONE_STEP_AT_A_TIME = 1788;\nexports.ER_MASTER_HAS_PURGED_REQUIRED_GTIDS = 1789; // deprecated\nexports.ER_SOURCE_HAS_PURGED_REQUIRED_GTIDS = 1789;\nexports.ER_CANT_SET_GTID_NEXT_WHEN_OWNING_GTID = 1790;\nexports.ER_UNKNOWN_EXPLAIN_FORMAT = 1791;\nexports.ER_CANT_EXECUTE_IN_READ_ONLY_TRANSACTION = 1792;\nexports.ER_TOO_LONG_TABLE_PARTITION_COMMENT = 1793;\nexports.ER_SLAVE_CONFIGURATION = 1794; // deprecated\nexports.ER_REPLICA_CONFIGURATION = 1794;\nexports.ER_INNODB_FT_LIMIT = 1795;\nexports.ER_INNODB_NO_FT_TEMP_TABLE = 1796;\nexports.ER_INNODB_FT_WRONG_DOCID_COLUMN = 1797;\nexports.ER_INNODB_FT_WRONG_DOCID_INDEX = 1798;\nexports.ER_INNODB_ONLINE_LOG_TOO_BIG = 1799;\nexports.ER_UNKNOWN_ALTER_ALGORITHM = 1800;\nexports.ER_UNKNOWN_ALTER_LOCK = 1801;\nexports.ER_MTS_CHANGE_MASTER_CANT_RUN_WITH_GAPS = 1802; // deprecated\nexports.ER_MTS_CHANGE_SOURCE_CANT_RUN_WITH_GAPS = 1802;\nexports.ER_MTS_RECOVERY_FAILURE = 1803;\nexports.ER_MTS_RESET_WORKERS = 1804;\nexports.ER_COL_COUNT_DOESNT_MATCH_CORRUPTED_V2 = 1805;\nexports.ER_SLAVE_SILENT_RETRY_TRANSACTION = 1806; // deprecated\nexports.ER_REPLICA_SILENT_RETRY_TRANSACTION = 1806;\nexports.ER_DISCARD_FK_CHECKS_RUNNING = 1807;\nexports.ER_TABLE_SCHEMA_MISMATCH = 1808;\nexports.ER_TABLE_IN_SYSTEM_TABLESPACE = 1809;\nexports.ER_IO_READ_ERROR = 1810;\nexports.ER_IO_WRITE_ERROR = 1811;\nexports.ER_TABLESPACE_MISSING = 1812;\nexports.ER_TABLESPACE_EXISTS = 1813;\nexports.ER_TABLESPACE_DISCARDED = 1814;\nexports.ER_INTERNAL_ERROR = 1815;\nexports.ER_INNODB_IMPORT_ERROR = 1816;\nexports.ER_INNODB_INDEX_CORRUPT = 1817;\nexports.ER_INVALID_YEAR_COLUMN_LENGTH = 1818;\nexports.ER_NOT_VALID_PASSWORD = 1819;\nexports.ER_MUST_CHANGE_PASSWORD = 1820;\nexports.ER_FK_NO_INDEX_CHILD = 1821;\nexports.ER_FK_NO_INDEX_PARENT = 1822;\nexports.ER_FK_FAIL_ADD_SYSTEM = 1823;\nexports.ER_FK_CANNOT_OPEN_PARENT = 1824;\nexports.ER_FK_INCORRECT_OPTION = 1825;\nexports.ER_FK_DUP_NAME = 1826;\nexports.ER_PASSWORD_FORMAT = 1827;\nexports.ER_FK_COLUMN_CANNOT_DROP = 1828;\nexports.ER_FK_COLUMN_CANNOT_DROP_CHILD = 1829;\nexports.ER_FK_COLUMN_NOT_NULL = 1830;\nexports.ER_DUP_INDEX = 1831;\nexports.ER_FK_COLUMN_CANNOT_CHANGE = 1832;\nexports.ER_FK_COLUMN_CANNOT_CHANGE_CHILD = 1833;\nexports.ER_FK_CANNOT_DELETE_PARENT = 1834;\nexports.ER_MALFORMED_PACKET = 1835;\nexports.ER_READ_ONLY_MODE = 1836;\nexports.ER_GTID_NEXT_TYPE_UNDEFINED_GROUP = 1837;\nexports.ER_VARIABLE_NOT_SETTABLE_IN_SP = 1838;\nexports.ER_CANT_SET_GTID_PURGED_WHEN_GTID_MODE_IS_OFF = 1839;\nexports.ER_CANT_SET_GTID_PURGED_WHEN_GTID_EXECUTED_IS_NOT_EMPTY = 1840;\nexports.ER_CANT_SET_GTID_PURGED_WHEN_OWNED_GTIDS_IS_NOT_EMPTY = 1841;\nexports.ER_GTID_PURGED_WAS_CHANGED = 1842;\nexports.ER_GTID_EXECUTED_WAS_CHANGED = 1843;\nexports.ER_BINLOG_STMT_MODE_AND_NO_REPL_TABLES = 1844;\nexports.ER_ALTER_OPERATION_NOT_SUPPORTED = 1845;\nexports.ER_ALTER_OPERATION_NOT_SUPPORTED_REASON = 1846;\nexports.ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_COPY = 1847;\nexports.ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_PARTITION = 1848;\nexports.ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FK_RENAME = 1849;\nexports.ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_COLUMN_TYPE = 1850;\nexports.ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FK_CHECK = 1851;\nexports.ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_IGNORE = 1852;\nexports.ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_NOPK = 1853;\nexports.ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_AUTOINC = 1854;\nexports.ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_HIDDEN_FTS = 1855;\nexports.ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_CHANGE_FTS = 1856;\nexports.ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FTS = 1857;\nexports.ER_SQL_SLAVE_SKIP_COUNTER_NOT_SETTABLE_IN_GTID_MODE = 1858; // deprecated\nexports.ER_SQL_REPLICA_SKIP_COUNTER_NOT_SETTABLE_IN_GTID_MODE = 1858;\nexports.ER_DUP_UNKNOWN_IN_INDEX = 1859;\nexports.ER_IDENT_CAUSES_TOO_LONG_PATH = 1860;\nexports.ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_NOT_NULL = 1861;\nexports.ER_MUST_CHANGE_PASSWORD_LOGIN = 1862;\nexports.ER_ROW_IN_WRONG_PARTITION = 1863;\nexports.ER_MTS_EVENT_BIGGER_PENDING_JOBS_SIZE_MAX = 1864;\nexports.ER_INNODB_NO_FT_USES_PARSER = 1865;\nexports.ER_BINLOG_LOGICAL_CORRUPTION = 1866;\nexports.ER_WARN_PURGE_LOG_IN_USE = 1867;\nexports.ER_WARN_PURGE_LOG_IS_ACTIVE = 1868;\nexports.ER_AUTO_INCREMENT_CONFLICT = 1869;\nexports.WARN_ON_BLOCKHOLE_IN_RBR = 1870;\nexports.ER_SLAVE_MI_INIT_REPOSITORY = 1871; // deprecated\nexports.ER_REPLICA_MI_INIT_REPOSITORY = 1871;\nexports.ER_SLAVE_RLI_INIT_REPOSITORY = 1872; // deprecated\nexports.ER_REPLICA_RLI_INIT_REPOSITORY = 1872;\nexports.ER_ACCESS_DENIED_CHANGE_USER_ERROR = 1873;\nexports.ER_INNODB_READ_ONLY = 1874;\nexports.ER_STOP_SLAVE_SQL_THREAD_TIMEOUT = 1875; // deprecated\nexports.ER_STOP_REPLICA_SQL_THREAD_TIMEOUT = 1875;\nexports.ER_STOP_SLAVE_IO_THREAD_TIMEOUT = 1876; // deprecated\nexports.ER_STOP_REPLICA_IO_THREAD_TIMEOUT = 1876;\nexports.ER_TABLE_CORRUPT = 1877;\nexports.ER_TEMP_FILE_WRITE_FAILURE = 1878;\nexports.ER_INNODB_FT_AUX_NOT_HEX_ID = 1879;\nexports.ER_OLD_TEMPORALS_UPGRADED = 1880;\nexports.ER_INNODB_FORCED_RECOVERY = 1881;\nexports.ER_AES_INVALID_IV = 1882;\nexports.ER_FILE_CORRUPT = 1883;\nexports.ER_ERROR_ON_SOURCE = 1884;\nexports.ER_INCONSISTENT_ERROR = 1885;\nexports.ER_STORAGE_ENGINE_NOT_LOADED = 1886;\nexports.ER_GET_STACKED_DA_WITHOUT_ACTIVE_HANDLER = 1887;\nexports.ER_WARN_LEGACY_SYNTAX_CONVERTED = 1888;\nexports.ER_BINLOG_UNSAFE_FULLTEXT_PLUGIN = 1889;\nexports.ER_CANNOT_DISCARD_TEMPORARY_TABLE = 1890;\nexports.ER_FK_DEPTH_EXCEEDED = 1891;\nexports.ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE_V2 = 1892;\nexports.ER_WARN_TRIGGER_DOESNT_HAVE_CREATED = 1893;\nexports.ER_REFERENCED_TRG_DOES_NOT_EXIST = 1894;\nexports.ER_EXPLAIN_NOT_SUPPORTED = 1895;\nexports.ER_INVALID_FIELD_SIZE = 1896;\nexports.ER_MISSING_HA_CREATE_OPTION = 1897;\nexports.ER_ENGINE_OUT_OF_MEMORY = 1898;\nexports.ER_PASSWORD_EXPIRE_ANONYMOUS_USER = 1899;\nexports.ER_REPLICA_SQL_THREAD_MUST_STOP = 1900;\nexports.ER_NO_FT_MATERIALIZED_SUBQUERY = 1901;\nexports.ER_INNODB_UNDO_LOG_FULL = 1902;\nexports.ER_INVALID_ARGUMENT_FOR_LOGARITHM = 1903;\nexports.ER_REPLICA_IO_THREAD_MUST_STOP = 1904;\nexports.ER_WARN_OPEN_TEMP_TABLES_MUST_BE_ZERO = 1905;\nexports.ER_WARN_ONLY_SOURCE_LOG_FILE_NO_POS = 1906;\nexports.ER_QUERY_TIMEOUT = 1907;\nexports.ER_NON_RO_SELECT_DISABLE_TIMER = 1908;\nexports.ER_DUP_LIST_ENTRY = 1909;\nexports.ER_SQL_MODE_NO_EFFECT = 1910;\nexports.ER_SESSION_WAS_KILLED = 3169;\nexports.ER_CLIENT_INTERACTION_TIMEOUT = 4031;\n\n// Lookup-by-number table\nexports[1] = 'EE_CANTCREATEFILE';\nexports[2] = 'EE_READ';\nexports[3] = 'EE_WRITE';\nexports[4] = 'EE_BADCLOSE';\nexports[5] = 'EE_OUTOFMEMORY';\nexports[6] = 'EE_DELETE';\nexports[7] = 'EE_LINK';\nexports[9] = 'EE_EOFERR';\nexports[10] = 'EE_CANTLOCK';\nexports[11] = 'EE_CANTUNLOCK';\nexports[12] = 'EE_DIR';\nexports[13] = 'EE_STAT';\nexports[14] = 'EE_CANT_CHSIZE';\nexports[15] = 'EE_CANT_OPEN_STREAM';\nexports[16] = 'EE_GETWD';\nexports[17] = 'EE_SETWD';\nexports[18] = 'EE_LINK_WARNING';\nexports[19] = 'EE_OPEN_WARNING';\nexports[20] = 'EE_DISK_FULL';\nexports[21] = 'EE_CANT_MKDIR';\nexports[22] = 'EE_UNKNOWN_CHARSET';\nexports[23] = 'EE_OUT_OF_FILERESOURCES';\nexports[24] = 'EE_CANT_READLINK';\nexports[25] = 'EE_CANT_SYMLINK';\nexports[26] = 'EE_REALPATH';\nexports[27] = 'EE_SYNC';\nexports[28] = 'EE_UNKNOWN_COLLATION';\nexports[29] = 'EE_FILENOTFOUND';\nexports[30] = 'EE_FILE_NOT_CLOSED';\nexports[31] = 'EE_CHANGE_OWNERSHIP';\nexports[32] = 'EE_CHANGE_PERMISSIONS';\nexports[33] = 'EE_CANT_SEEK';\nexports[120] = 'HA_ERR_KEY_NOT_FOUND';\nexports[121] = 'HA_ERR_FOUND_DUPP_KEY';\nexports[122] = 'HA_ERR_INTERNAL_ERROR';\nexports[123] = 'HA_ERR_RECORD_CHANGED';\nexports[124] = 'HA_ERR_WRONG_INDEX';\nexports[126] = 'HA_ERR_CRASHED';\nexports[127] = 'HA_ERR_WRONG_IN_RECORD';\nexports[128] = 'HA_ERR_OUT_OF_MEM';\nexports[130] = 'HA_ERR_NOT_A_TABLE';\nexports[131] = 'HA_ERR_WRONG_COMMAND';\nexports[132] = 'HA_ERR_OLD_FILE';\nexports[133] = 'HA_ERR_NO_ACTIVE_RECORD';\nexports[134] = 'HA_ERR_RECORD_DELETED';\nexports[135] = 'HA_ERR_RECORD_FILE_FULL';\nexports[136] = 'HA_ERR_INDEX_FILE_FULL';\nexports[137] = 'HA_ERR_END_OF_FILE';\nexports[138] = 'HA_ERR_UNSUPPORTED';\nexports[139] = 'HA_ERR_TO_BIG_ROW';\nexports[140] = 'HA_WRONG_CREATE_OPTION';\nexports[141] = 'HA_ERR_FOUND_DUPP_UNIQUE';\nexports[142] = 'HA_ERR_UNKNOWN_CHARSET';\nexports[143] = 'HA_ERR_WRONG_MRG_TABLE_DEF';\nexports[144] = 'HA_ERR_CRASHED_ON_REPAIR';\nexports[145] = 'HA_ERR_CRASHED_ON_USAGE';\nexports[146] = 'HA_ERR_LOCK_WAIT_TIMEOUT';\nexports[147] = 'HA_ERR_LOCK_TABLE_FULL';\nexports[148] = 'HA_ERR_READ_ONLY_TRANSACTION';\nexports[149] = 'HA_ERR_LOCK_DEADLOCK';\nexports[150] = 'HA_ERR_CANNOT_ADD_FOREIGN';\nexports[151] = 'HA_ERR_NO_REFERENCED_ROW';\nexports[152] = 'HA_ERR_ROW_IS_REFERENCED';\nexports[153] = 'HA_ERR_NO_SAVEPOINT';\nexports[154] = 'HA_ERR_NON_UNIQUE_BLOCK_SIZE';\nexports[155] = 'HA_ERR_NO_SUCH_TABLE';\nexports[156] = 'HA_ERR_TABLE_EXIST';\nexports[157] = 'HA_ERR_NO_CONNECTION';\nexports[158] = 'HA_ERR_NULL_IN_SPATIAL';\nexports[159] = 'HA_ERR_TABLE_DEF_CHANGED';\nexports[160] = 'HA_ERR_NO_PARTITION_FOUND';\nexports[161] = 'HA_ERR_RBR_LOGGING_FAILED';\nexports[162] = 'HA_ERR_DROP_INDEX_FK';\nexports[163] = 'HA_ERR_FOREIGN_DUPLICATE_KEY';\nexports[164] = 'HA_ERR_TABLE_NEEDS_UPGRADE';\nexports[165] = 'HA_ERR_TABLE_READONLY';\nexports[166] = 'HA_ERR_AUTOINC_READ_FAILED';\nexports[167] = 'HA_ERR_AUTOINC_ERANGE';\nexports[168] = 'HA_ERR_GENERIC';\nexports[169] = 'HA_ERR_RECORD_IS_THE_SAME';\nexports[170] = 'HA_ERR_LOGGING_IMPOSSIBLE';\nexports[171] = 'HA_ERR_CORRUPT_EVENT';\nexports[172] = 'HA_ERR_NEW_FILE';\nexports[173] = 'HA_ERR_ROWS_EVENT_APPLY';\nexports[174] = 'HA_ERR_INITIALIZATION';\nexports[175] = 'HA_ERR_FILE_TOO_SHORT';\nexports[176] = 'HA_ERR_WRONG_CRC';\nexports[177] = 'HA_ERR_TOO_MANY_CONCURRENT_TRXS';\nexports[178] = 'HA_ERR_NOT_IN_LOCK_PARTITIONS';\nexports[179] = 'HA_ERR_INDEX_COL_TOO_LONG';\nexports[180] = 'HA_ERR_INDEX_CORRUPT';\nexports[181] = 'HA_ERR_UNDO_REC_TOO_BIG';\nexports[182] = 'HA_FTS_INVALID_DOCID';\nexports[183] = 'HA_ERR_TABLE_IN_FK_CHECK';\nexports[184] = 'HA_ERR_TABLESPACE_EXISTS';\nexports[185] = 'HA_ERR_TOO_MANY_FIELDS';\nexports[186] = 'HA_ERR_ROW_IN_WRONG_PARTITION';\nexports[187] = 'HA_ERR_INNODB_READ_ONLY';\nexports[188] = 'HA_ERR_FTS_EXCEED_RESULT_CACHE_LIMIT';\nexports[189] = 'HA_ERR_TEMP_FILE_WRITE_FAILURE';\nexports[190] = 'HA_ERR_INNODB_FORCED_RECOVERY';\nexports[191] = 'HA_ERR_FTS_TOO_MANY_WORDS_IN_PHRASE';\nexports[1000] = 'ER_HASHCHK';\nexports[1001] = 'ER_NISAMCHK';\nexports[1002] = 'ER_NO';\nexports[1003] = 'ER_YES';\nexports[1004] = 'ER_CANT_CREATE_FILE';\nexports[1005] = 'ER_CANT_CREATE_TABLE';\nexports[1006] = 'ER_CANT_CREATE_DB';\nexports[1007] = 'ER_DB_CREATE_EXISTS';\nexports[1008] = 'ER_DB_DROP_EXISTS';\nexports[1009] = 'ER_DB_DROP_DELETE';\nexports[1010] = 'ER_DB_DROP_RMDIR';\nexports[1011] = 'ER_CANT_DELETE_FILE';\nexports[1012] = 'ER_CANT_FIND_SYSTEM_REC';\nexports[1013] = 'ER_CANT_GET_STAT';\nexports[1014] = 'ER_CANT_GET_WD';\nexports[1015] = 'ER_CANT_LOCK';\nexports[1016] = 'ER_CANT_OPEN_FILE';\nexports[1017] = 'ER_FILE_NOT_FOUND';\nexports[1018] = 'ER_CANT_READ_DIR';\nexports[1019] = 'ER_CANT_SET_WD';\nexports[1020] = 'ER_CHECKREAD';\nexports[1021] = 'ER_DISK_FULL';\nexports[1022] = 'ER_DUP_KEY';\nexports[1023] = 'ER_ERROR_ON_CLOSE';\nexports[1024] = 'ER_ERROR_ON_READ';\nexports[1025] = 'ER_ERROR_ON_RENAME';\nexports[1026] = 'ER_ERROR_ON_WRITE';\nexports[1027] = 'ER_FILE_USED';\nexports[1028] = 'ER_FILSORT_ABORT';\nexports[1029] = 'ER_FORM_NOT_FOUND';\nexports[1030] = 'ER_GET_ERRNO';\nexports[1031] = 'ER_ILLEGAL_HA';\nexports[1032] = 'ER_KEY_NOT_FOUND';\nexports[1033] = 'ER_NOT_FORM_FILE';\nexports[1034] = 'ER_NOT_KEYFILE';\nexports[1035] = 'ER_OLD_KEYFILE';\nexports[1036] = 'ER_OPEN_AS_READONLY';\nexports[1037] = 'ER_OUTOFMEMORY';\nexports[1038] = 'ER_OUT_OF_SORTMEMORY';\nexports[1039] = 'ER_UNEXPECTED_EOF';\nexports[1040] = 'ER_CON_COUNT_ERROR';\nexports[1041] = 'ER_OUT_OF_RESOURCES';\nexports[1042] = 'ER_BAD_HOST_ERROR';\nexports[1043] = 'ER_HANDSHAKE_ERROR';\nexports[1044] = 'ER_DBACCESS_DENIED_ERROR';\nexports[1045] = 'ER_ACCESS_DENIED_ERROR';\nexports[1046] = 'ER_NO_DB_ERROR';\nexports[1047] = 'ER_UNKNOWN_COM_ERROR';\nexports[1048] = 'ER_BAD_NULL_ERROR';\nexports[1049] = 'ER_BAD_DB_ERROR';\nexports[1050] = 'ER_TABLE_EXISTS_ERROR';\nexports[1051] = 'ER_BAD_TABLE_ERROR';\nexports[1052] = 'ER_NON_UNIQ_ERROR';\nexports[1053] = 'ER_SERVER_SHUTDOWN';\nexports[1054] = 'ER_BAD_FIELD_ERROR';\nexports[1055] = 'ER_WRONG_FIELD_WITH_GROUP';\nexports[1056] = 'ER_WRONG_GROUP_FIELD';\nexports[1057] = 'ER_WRONG_SUM_SELECT';\nexports[1058] = 'ER_WRONG_VALUE_COUNT';\nexports[1059] = 'ER_TOO_LONG_IDENT';\nexports[1060] = 'ER_DUP_FIELDNAME';\nexports[1061] = 'ER_DUP_KEYNAME';\nexports[1062] = 'ER_DUP_ENTRY';\nexports[1063] = 'ER_WRONG_FIELD_SPEC';\nexports[1064] = 'ER_PARSE_ERROR';\nexports[1065] = 'ER_EMPTY_QUERY';\nexports[1066] = 'ER_NONUNIQ_TABLE';\nexports[1067] = 'ER_INVALID_DEFAULT';\nexports[1068] = 'ER_MULTIPLE_PRI_KEY';\nexports[1069] = 'ER_TOO_MANY_KEYS';\nexports[1070] = 'ER_TOO_MANY_KEY_PARTS';\nexports[1071] = 'ER_TOO_LONG_KEY';\nexports[1072] = 'ER_KEY_COLUMN_DOES_NOT_EXITS';\nexports[1073] = 'ER_BLOB_USED_AS_KEY';\nexports[1074] = 'ER_TOO_BIG_FIELDLENGTH';\nexports[1075] = 'ER_WRONG_AUTO_KEY';\nexports[1076] = 'ER_READY';\nexports[1077] = 'ER_NORMAL_SHUTDOWN';\nexports[1078] = 'ER_GOT_SIGNAL';\nexports[1079] = 'ER_SHUTDOWN_COMPLETE';\nexports[1080] = 'ER_FORCING_CLOSE';\nexports[1081] = 'ER_IPSOCK_ERROR';\nexports[1082] = 'ER_NO_SUCH_INDEX';\nexports[1083] = 'ER_WRONG_FIELD_TERMINATORS';\nexports[1084] = 'ER_BLOBS_AND_NO_TERMINATED';\nexports[1085] = 'ER_TEXTFILE_NOT_READABLE';\nexports[1086] = 'ER_FILE_EXISTS_ERROR';\nexports[1087] = 'ER_LOAD_INFO';\nexports[1088] = 'ER_ALTER_INFO';\nexports[1089] = 'ER_WRONG_SUB_KEY';\nexports[1090] = 'ER_CANT_REMOVE_ALL_FIELDS';\nexports[1091] = 'ER_CANT_DROP_FIELD_OR_KEY';\nexports[1092] = 'ER_INSERT_INFO';\nexports[1093] = 'ER_UPDATE_TABLE_USED';\nexports[1094] = 'ER_NO_SUCH_THREAD';\nexports[1095] = 'ER_KILL_DENIED_ERROR';\nexports[1096] = 'ER_NO_TABLES_USED';\nexports[1097] = 'ER_TOO_BIG_SET';\nexports[1098] = 'ER_NO_UNIQUE_LOGFILE';\nexports[1099] = 'ER_TABLE_NOT_LOCKED_FOR_WRITE';\nexports[1100] = 'ER_TABLE_NOT_LOCKED';\nexports[1101] = 'ER_BLOB_CANT_HAVE_DEFAULT';\nexports[1102] = 'ER_WRONG_DB_NAME';\nexports[1103] = 'ER_WRONG_TABLE_NAME';\nexports[1104] = 'ER_TOO_BIG_SELECT';\nexports[1105] = 'ER_UNKNOWN_ERROR';\nexports[1106] = 'ER_UNKNOWN_PROCEDURE';\nexports[1107] = 'ER_WRONG_PARAMCOUNT_TO_PROCEDURE';\nexports[1108] = 'ER_WRONG_PARAMETERS_TO_PROCEDURE';\nexports[1109] = 'ER_UNKNOWN_TABLE';\nexports[1110] = 'ER_FIELD_SPECIFIED_TWICE';\nexports[1111] = 'ER_INVALID_GROUP_FUNC_USE';\nexports[1112] = 'ER_UNSUPPORTED_EXTENSION';\nexports[1113] = 'ER_TABLE_MUST_HAVE_COLUMNS';\nexports[1114] = 'ER_RECORD_FILE_FULL';\nexports[1115] = 'ER_UNKNOWN_CHARACTER_SET';\nexports[1116] = 'ER_TOO_MANY_TABLES';\nexports[1117] = 'ER_TOO_MANY_FIELDS';\nexports[1118] = 'ER_TOO_BIG_ROWSIZE';\nexports[1119] = 'ER_STACK_OVERRUN';\nexports[1120] = 'ER_WRONG_OUTER_JOIN';\nexports[1121] = 'ER_NULL_COLUMN_IN_INDEX';\nexports[1122] = 'ER_CANT_FIND_UDF';\nexports[1123] = 'ER_CANT_INITIALIZE_UDF';\nexports[1124] = 'ER_UDF_NO_PATHS';\nexports[1125] = 'ER_UDF_EXISTS';\nexports[1126] = 'ER_CANT_OPEN_LIBRARY';\nexports[1127] = 'ER_CANT_FIND_DL_ENTRY';\nexports[1128] = 'ER_FUNCTION_NOT_DEFINED';\nexports[1129] = 'ER_HOST_IS_BLOCKED';\nexports[1130] = 'ER_HOST_NOT_PRIVILEGED';\nexports[1131] = 'ER_PASSWORD_ANONYMOUS_USER';\nexports[1132] = 'ER_PASSWORD_NOT_ALLOWED';\nexports[1133] = 'ER_PASSWORD_NO_MATCH';\nexports[1134] = 'ER_UPDATE_INFO';\nexports[1135] = 'ER_CANT_CREATE_THREAD';\nexports[1136] = 'ER_WRONG_VALUE_COUNT_ON_ROW';\nexports[1137] = 'ER_CANT_REOPEN_TABLE';\nexports[1138] = 'ER_INVALID_USE_OF_NULL';\nexports[1139] = 'ER_REGEXP_ERROR';\nexports[1140] = 'ER_MIX_OF_GROUP_FUNC_AND_FIELDS';\nexports[1141] = 'ER_NONEXISTING_GRANT';\nexports[1142] = 'ER_TABLEACCESS_DENIED_ERROR';\nexports[1143] = 'ER_COLUMNACCESS_DENIED_ERROR';\nexports[1144] = 'ER_ILLEGAL_GRANT_FOR_TABLE';\nexports[1145] = 'ER_GRANT_WRONG_HOST_OR_USER';\nexports[1146] = 'ER_NO_SUCH_TABLE';\nexports[1147] = 'ER_NONEXISTING_TABLE_GRANT';\nexports[1148] = 'ER_NOT_ALLOWED_COMMAND';\nexports[1149] = 'ER_SYNTAX_ERROR';\nexports[1150] = 'ER_DELAYED_CANT_CHANGE_LOCK';\nexports[1151] = 'ER_TOO_MANY_DELAYED_THREADS';\nexports[1152] = 'ER_ABORTING_CONNECTION';\nexports[1153] = 'ER_NET_PACKET_TOO_LARGE';\nexports[1154] = 'ER_NET_READ_ERROR_FROM_PIPE';\nexports[1155] = 'ER_NET_FCNTL_ERROR';\nexports[1156] = 'ER_NET_PACKETS_OUT_OF_ORDER';\nexports[1157] = 'ER_NET_UNCOMPRESS_ERROR';\nexports[1158] = 'ER_NET_READ_ERROR';\nexports[1159] = 'ER_NET_READ_INTERRUPTED';\nexports[1160] = 'ER_NET_ERROR_ON_WRITE';\nexports[1161] = 'ER_NET_WRITE_INTERRUPTED';\nexports[1162] = 'ER_TOO_LONG_STRING';\nexports[1163] = 'ER_TABLE_CANT_HANDLE_BLOB';\nexports[1164] = 'ER_TABLE_CANT_HANDLE_AUTO_INCREMENT';\nexports[1165] = 'ER_DELAYED_INSERT_TABLE_LOCKED';\nexports[1166] = 'ER_WRONG_COLUMN_NAME';\nexports[1167] = 'ER_WRONG_KEY_COLUMN';\nexports[1168] = 'ER_WRONG_MRG_TABLE';\nexports[1169] = 'ER_DUP_UNIQUE';\nexports[1170] = 'ER_BLOB_KEY_WITHOUT_LENGTH';\nexports[1171] = 'ER_PRIMARY_CANT_HAVE_NULL';\nexports[1172] = 'ER_TOO_MANY_ROWS';\nexports[1173] = 'ER_REQUIRES_PRIMARY_KEY';\nexports[1174] = 'ER_NO_RAID_COMPILED';\nexports[1175] = 'ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE';\nexports[1176] = 'ER_KEY_DOES_NOT_EXITS';\nexports[1177] = 'ER_CHECK_NO_SUCH_TABLE';\nexports[1178] = 'ER_CHECK_NOT_IMPLEMENTED';\nexports[1179] = 'ER_CANT_DO_THIS_DURING_AN_TRANSACTION';\nexports[1180] = 'ER_ERROR_DURING_COMMIT';\nexports[1181] = 'ER_ERROR_DURING_ROLLBACK';\nexports[1182] = 'ER_ERROR_DURING_FLUSH_LOGS';\nexports[1183] = 'ER_ERROR_DURING_CHECKPOINT';\nexports[1184] = 'ER_NEW_ABORTING_CONNECTION';\nexports[1185] = 'ER_DUMP_NOT_IMPLEMENTED';\nexports[1186] = 'ER_FLUSH_SOURCE_BINLOG_CLOSED';\nexports[1187] = 'ER_INDEX_REBUILD';\nexports[1188] = 'ER_SOURCE';\nexports[1189] = 'ER_SOURCE_NET_READ';\nexports[1190] = 'ER_SOURCE_NET_WRITE';\nexports[1191] = 'ER_FT_MATCHING_KEY_NOT_FOUND';\nexports[1192] = 'ER_LOCK_OR_ACTIVE_TRANSACTION';\nexports[1193] = 'ER_UNKNOWN_SYSTEM_VARIABLE';\nexports[1194] = 'ER_CRASHED_ON_USAGE';\nexports[1195] = 'ER_CRASHED_ON_REPAIR';\nexports[1196] = 'ER_WARNING_NOT_COMPLETE_ROLLBACK';\nexports[1197] = 'ER_TRANS_CACHE_FULL';\nexports[1198] = 'ER_REPLICA_MUST_STOP';\nexports[1199] = 'ER_REPLICA_NOT_RUNNING';\nexports[1200] = 'ER_BAD_REPLICA';\nexports[1201] = 'ER_SOURCE_INFO';\nexports[1202] = 'ER_REPLICA_THREAD';\nexports[1203] = 'ER_TOO_MANY_USER_CONNECTIONS';\nexports[1204] = 'ER_SET_CONSTANTS_ONLY';\nexports[1205] = 'ER_LOCK_WAIT_TIMEOUT';\nexports[1206] = 'ER_LOCK_TABLE_FULL';\nexports[1207] = 'ER_READ_ONLY_TRANSACTION';\nexports[1208] = 'ER_DROP_DB_WITH_READ_LOCK';\nexports[1209] = 'ER_CREATE_DB_WITH_READ_LOCK';\nexports[1210] = 'ER_WRONG_ARGUMENTS';\nexports[1211] = 'ER_NO_PERMISSION_TO_CREATE_USER';\nexports[1212] = 'ER_UNION_TABLES_IN_DIFFERENT_DIR';\nexports[1213] = 'ER_LOCK_DEADLOCK';\nexports[1214] = 'ER_TABLE_CANT_HANDLE_FT';\nexports[1215] = 'ER_CANNOT_ADD_FOREIGN';\nexports[1216] = 'ER_NO_REFERENCED_ROW';\nexports[1217] = 'ER_ROW_IS_REFERENCED';\nexports[1218] = 'ER_CONNECT_TO_SOURCE';\nexports[1219] = 'ER_QUERY_ON_SOURCE';\nexports[1220] = 'ER_ERROR_WHEN_EXECUTING_COMMAND';\nexports[1221] = 'ER_WRONG_USAGE';\nexports[1222] = 'ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT';\nexports[1223] = 'ER_CANT_UPDATE_WITH_READLOCK';\nexports[1224] = 'ER_MIXING_NOT_ALLOWED';\nexports[1225] = 'ER_DUP_ARGUMENT';\nexports[1226] = 'ER_USER_LIMIT_REACHED';\nexports[1227] = 'ER_SPECIFIC_ACCESS_DENIED_ERROR';\nexports[1228] = 'ER_LOCAL_VARIABLE';\nexports[1229] = 'ER_GLOBAL_VARIABLE';\nexports[1230] = 'ER_NO_DEFAULT';\nexports[1231] = 'ER_WRONG_VALUE_FOR_VAR';\nexports[1232] = 'ER_WRONG_TYPE_FOR_VAR';\nexports[1233] = 'ER_VAR_CANT_BE_READ';\nexports[1234] = 'ER_CANT_USE_OPTION_HERE';\nexports[1235] = 'ER_NOT_SUPPORTED_YET';\nexports[1236] = 'ER_SOURCE_FATAL_ERROR_READING_BINLOG';\nexports[1237] = 'ER_REPLICA_IGNORED_TABLE';\nexports[1238] = 'ER_INCORRECT_GLOBAL_LOCAL_VAR';\nexports[1239] = 'ER_WRONG_FK_DEF';\nexports[1240] = 'ER_KEY_REF_DO_NOT_MATCH_TABLE_REF';\nexports[1241] = 'ER_OPERAND_COLUMNS';\nexports[1242] = 'ER_SUBQUERY_NO_1_ROW';\nexports[1243] = 'ER_UNKNOWN_STMT_HANDLER';\nexports[1244] = 'ER_CORRUPT_HELP_DB';\nexports[1245] = 'ER_CYCLIC_REFERENCE';\nexports[1246] = 'ER_AUTO_CONVERT';\nexports[1247] = 'ER_ILLEGAL_REFERENCE';\nexports[1248] = 'ER_DERIVED_MUST_HAVE_ALIAS';\nexports[1249] = 'ER_SELECT_REDUCED';\nexports[1250] = 'ER_TABLENAME_NOT_ALLOWED_HERE';\nexports[1251] = 'ER_NOT_SUPPORTED_AUTH_MODE';\nexports[1252] = 'ER_SPATIAL_CANT_HAVE_NULL';\nexports[1253] = 'ER_COLLATION_CHARSET_MISMATCH';\nexports[1254] = 'ER_REPLICA_WAS_RUNNING';\nexports[1255] = 'ER_REPLICA_WAS_NOT_RUNNING';\nexports[1256] = 'ER_TOO_BIG_FOR_UNCOMPRESS';\nexports[1257] = 'ER_ZLIB_Z_MEM_ERROR';\nexports[1258] = 'ER_ZLIB_Z_BUF_ERROR';\nexports[1259] = 'ER_ZLIB_Z_DATA_ERROR';\nexports[1260] = 'ER_CUT_VALUE_GROUP_CONCAT';\nexports[1261] = 'ER_WARN_TOO_FEW_RECORDS';\nexports[1262] = 'ER_WARN_TOO_MANY_RECORDS';\nexports[1263] = 'ER_WARN_NULL_TO_NOTNULL';\nexports[1264] = 'ER_WARN_DATA_OUT_OF_RANGE';\nexports[1265] = 'ER_WARN_DATA_TRUNCATED';\nexports[1266] = 'ER_WARN_USING_OTHER_HANDLER';\nexports[1267] = 'ER_CANT_AGGREGATE_2COLLATIONS';\nexports[1268] = 'ER_DROP_USER';\nexports[1269] = 'ER_REVOKE_GRANTS';\nexports[1270] = 'ER_CANT_AGGREGATE_3COLLATIONS';\nexports[1271] = 'ER_CANT_AGGREGATE_NCOLLATIONS';\nexports[1272] = 'ER_VARIABLE_IS_NOT_STRUCT';\nexports[1273] = 'ER_UNKNOWN_COLLATION';\nexports[1274] = 'ER_REPLICA_IGNORED_SSL_PARAMS';\nexports[1275] = 'ER_SERVER_IS_IN_SECURE_AUTH_MODE';\nexports[1276] = 'ER_WARN_FIELD_RESOLVED';\nexports[1277] = 'ER_BAD_REPLICA_UNTIL_COND';\nexports[1278] = 'ER_MISSING_SKIP_REPLICA';\nexports[1279] = 'ER_UNTIL_COND_IGNORED';\nexports[1280] = 'ER_WRONG_NAME_FOR_INDEX';\nexports[1281] = 'ER_WRONG_NAME_FOR_CATALOG';\nexports[1282] = 'ER_WARN_QC_RESIZE';\nexports[1283] = 'ER_BAD_FT_COLUMN';\nexports[1284] = 'ER_UNKNOWN_KEY_CACHE';\nexports[1285] = 'ER_WARN_HOSTNAME_WONT_WORK';\nexports[1286] = 'ER_UNKNOWN_STORAGE_ENGINE';\nexports[1287] = 'ER_WARN_DEPRECATED_SYNTAX';\nexports[1288] = 'ER_NON_UPDATABLE_TABLE';\nexports[1289] = 'ER_FEATURE_DISABLED';\nexports[1290] = 'ER_OPTION_PREVENTS_STATEMENT';\nexports[1291] = 'ER_DUPLICATED_VALUE_IN_TYPE';\nexports[1292] = 'ER_TRUNCATED_WRONG_VALUE';\nexports[1293] = 'ER_TOO_MUCH_AUTO_TIMESTAMP_COLS';\nexports[1294] = 'ER_INVALID_ON_UPDATE';\nexports[1295] = 'ER_UNSUPPORTED_PS';\nexports[1296] = 'ER_GET_ERRMSG';\nexports[1297] = 'ER_GET_TEMPORARY_ERRMSG';\nexports[1298] = 'ER_UNKNOWN_TIME_ZONE';\nexports[1299] = 'ER_WARN_INVALID_TIMESTAMP';\nexports[1300] = 'ER_INVALID_CHARACTER_STRING';\nexports[1301] = 'ER_WARN_ALLOWED_PACKET_OVERFLOWED';\nexports[1302] = 'ER_CONFLICTING_DECLARATIONS';\nexports[1303] = 'ER_SP_NO_RECURSIVE_CREATE';\nexports[1304] = 'ER_SP_ALREADY_EXISTS';\nexports[1305] = 'ER_SP_DOES_NOT_EXIST';\nexports[1306] = 'ER_SP_DROP_FAILED';\nexports[1307] = 'ER_SP_STORE_FAILED';\nexports[1308] = 'ER_SP_LILABEL_MISMATCH';\nexports[1309] = 'ER_SP_LABEL_REDEFINE';\nexports[1310] = 'ER_SP_LABEL_MISMATCH';\nexports[1311] = 'ER_SP_UNINIT_VAR';\nexports[1312] = 'ER_SP_BADSELECT';\nexports[1313] = 'ER_SP_BADRETURN';\nexports[1314] = 'ER_SP_BADSTATEMENT';\nexports[1315] = 'ER_UPDATE_LOG_DEPRECATED_IGNORED';\nexports[1316] = 'ER_UPDATE_LOG_DEPRECATED_TRANSLATED';\nexports[1317] = 'ER_QUERY_INTERRUPTED';\nexports[1318] = 'ER_SP_WRONG_NO_OF_ARGS';\nexports[1319] = 'ER_SP_COND_MISMATCH';\nexports[1320] = 'ER_SP_NORETURN';\nexports[1321] = 'ER_SP_NORETURNEND';\nexports[1322] = 'ER_SP_BAD_CURSOR_QUERY';\nexports[1323] = 'ER_SP_BAD_CURSOR_SELECT';\nexports[1324] = 'ER_SP_CURSOR_MISMATCH';\nexports[1325] = 'ER_SP_CURSOR_ALREADY_OPEN';\nexports[1326] = 'ER_SP_CURSOR_NOT_OPEN';\nexports[1327] = 'ER_SP_UNDECLARED_VAR';\nexports[1328] = 'ER_SP_WRONG_NO_OF_FETCH_ARGS';\nexports[1329] = 'ER_SP_FETCH_NO_DATA';\nexports[1330] = 'ER_SP_DUP_PARAM';\nexports[1331] = 'ER_SP_DUP_VAR';\nexports[1332] = 'ER_SP_DUP_COND';\nexports[1333] = 'ER_SP_DUP_CURS';\nexports[1334] = 'ER_SP_CANT_ALTER';\nexports[1335] = 'ER_SP_SUBSELECT_NYI';\nexports[1336] = 'ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG';\nexports[1337] = 'ER_SP_VARCOND_AFTER_CURSHNDLR';\nexports[1338] = 'ER_SP_CURSOR_AFTER_HANDLER';\nexports[1339] = 'ER_SP_CASE_NOT_FOUND';\nexports[1340] = 'ER_FPARSER_TOO_BIG_FILE';\nexports[1341] = 'ER_FPARSER_BAD_HEADER';\nexports[1342] = 'ER_FPARSER_EOF_IN_COMMENT';\nexports[1343] = 'ER_FPARSER_ERROR_IN_PARAMETER';\nexports[1344] = 'ER_FPARSER_EOF_IN_UNKNOWN_PARAMETER';\nexports[1345] = 'ER_VIEW_NO_EXPLAIN';\nexports[1346] = 'ER_FRM_UNKNOWN_TYPE';\nexports[1347] = 'ER_WRONG_OBJECT';\nexports[1348] = 'ER_NONUPDATEABLE_COLUMN';\nexports[1349] = 'ER_VIEW_SELECT_DERIVED';\nexports[1350] = 'ER_VIEW_SELECT_CLAUSE';\nexports[1351] = 'ER_VIEW_SELECT_VARIABLE';\nexports[1352] = 'ER_VIEW_SELECT_TMPTABLE';\nexports[1353] = 'ER_VIEW_WRONG_LIST';\nexports[1354] = 'ER_WARN_VIEW_MERGE';\nexports[1355] = 'ER_WARN_VIEW_WITHOUT_KEY';\nexports[1356] = 'ER_VIEW_INVALID';\nexports[1357] = 'ER_SP_NO_DROP_SP';\nexports[1358] = 'ER_SP_GOTO_IN_HNDLR';\nexports[1359] = 'ER_TRG_ALREADY_EXISTS';\nexports[1360] = 'ER_TRG_DOES_NOT_EXIST';\nexports[1361] = 'ER_TRG_ON_VIEW_OR_TEMP_TABLE';\nexports[1362] = 'ER_TRG_CANT_CHANGE_ROW';\nexports[1363] = 'ER_TRG_NO_SUCH_ROW_IN_TRG';\nexports[1364] = 'ER_NO_DEFAULT_FOR_FIELD';\nexports[1365] = 'ER_DIVISION_BY_ZERO';\nexports[1366] = 'ER_TRUNCATED_WRONG_VALUE_FOR_FIELD';\nexports[1367] = 'ER_ILLEGAL_VALUE_FOR_TYPE';\nexports[1368] = 'ER_VIEW_NONUPD_CHECK';\nexports[1369] = 'ER_VIEW_CHECK_FAILED';\nexports[1370] = 'ER_PROCACCESS_DENIED_ERROR';\nexports[1371] = 'ER_RELAY_LOG_FAIL';\nexports[1372] = 'ER_PASSWD_LENGTH';\nexports[1373] = 'ER_UNKNOWN_TARGET_BINLOG';\nexports[1374] = 'ER_IO_ERR_LOG_INDEX_READ';\nexports[1375] = 'ER_BINLOG_PURGE_PROHIBITED';\nexports[1376] = 'ER_FSEEK_FAIL';\nexports[1377] = 'ER_BINLOG_PURGE_FATAL_ERR';\nexports[1378] = 'ER_LOG_IN_USE';\nexports[1379] = 'ER_LOG_PURGE_UNKNOWN_ERR';\nexports[1380] = 'ER_RELAY_LOG_INIT';\nexports[1381] = 'ER_NO_BINARY_LOGGING';\nexports[1382] = 'ER_RESERVED_SYNTAX';\nexports[1383] = 'ER_WSAS_FAILED';\nexports[1384] = 'ER_DIFF_GROUPS_PROC';\nexports[1385] = 'ER_NO_GROUP_FOR_PROC';\nexports[1386] = 'ER_ORDER_WITH_PROC';\nexports[1387] = 'ER_LOGGING_PROHIBIT_CHANGING_OF';\nexports[1388] = 'ER_NO_FILE_MAPPING';\nexports[1389] = 'ER_WRONG_MAGIC';\nexports[1390] = 'ER_PS_MANY_PARAM';\nexports[1391] = 'ER_KEY_PART_0';\nexports[1392] = 'ER_VIEW_CHECKSUM';\nexports[1393] = 'ER_VIEW_MULTIUPDATE';\nexports[1394] = 'ER_VIEW_NO_INSERT_FIELD_LIST';\nexports[1395] = 'ER_VIEW_DELETE_MERGE_VIEW';\nexports[1396] = 'ER_CANNOT_USER';\nexports[1397] = 'ER_XAER_NOTA';\nexports[1398] = 'ER_XAER_INVAL';\nexports[1399] = 'ER_XAER_RMFAIL';\nexports[1400] = 'ER_XAER_OUTSIDE';\nexports[1401] = 'ER_XA_RMERR';\nexports[1402] = 'ER_XA_RBROLLBACK';\nexports[1403] = 'ER_NONEXISTING_PROC_GRANT';\nexports[1404] = 'ER_PROC_AUTO_GRANT_FAIL';\nexports[1405] = 'ER_PROC_AUTO_REVOKE_FAIL';\nexports[1406] = 'ER_DATA_TOO_LONG';\nexports[1407] = 'ER_SP_BAD_SQLSTATE';\nexports[1408] = 'ER_STARTUP';\nexports[1409] = 'ER_LOAD_FROM_FIXED_SIZE_ROWS_TO_VAR';\nexports[1410] = 'ER_CANT_CREATE_USER_WITH_GRANT';\nexports[1411] = 'ER_WRONG_VALUE_FOR_TYPE';\nexports[1412] = 'ER_TABLE_DEF_CHANGED';\nexports[1413] = 'ER_SP_DUP_HANDLER';\nexports[1414] = 'ER_SP_NOT_VAR_ARG';\nexports[1415] = 'ER_SP_NO_RETSET';\nexports[1416] = 'ER_CANT_CREATE_GEOMETRY_OBJECT';\nexports[1417] = 'ER_FAILED_ROUTINE_BREAK_BINLOG';\nexports[1418] = 'ER_BINLOG_UNSAFE_ROUTINE';\nexports[1419] = 'ER_BINLOG_CREATE_ROUTINE_NEED_SUPER';\nexports[1420] = 'ER_EXEC_STMT_WITH_OPEN_CURSOR';\nexports[1421] = 'ER_STMT_HAS_NO_OPEN_CURSOR';\nexports[1422] = 'ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG';\nexports[1423] = 'ER_NO_DEFAULT_FOR_VIEW_FIELD';\nexports[1424] = 'ER_SP_NO_RECURSION';\nexports[1425] = 'ER_TOO_BIG_SCALE';\nexports[1426] = 'ER_TOO_BIG_PRECISION';\nexports[1427] = 'ER_M_BIGGER_THAN_D';\nexports[1428] = 'ER_WRONG_LOCK_OF_SYSTEM_TABLE';\nexports[1429] = 'ER_CONNECT_TO_FOREIGN_DATA_SOURCE';\nexports[1430] = 'ER_QUERY_ON_FOREIGN_DATA_SOURCE';\nexports[1431] = 'ER_FOREIGN_DATA_SOURCE_DOESNT_EXIST';\nexports[1432] = 'ER_FOREIGN_DATA_STRING_INVALID_CANT_CREATE';\nexports[1433] = 'ER_FOREIGN_DATA_STRING_INVALID';\nexports[1434] = 'ER_CANT_CREATE_FEDERATED_TABLE';\nexports[1435] = 'ER_TRG_IN_WRONG_SCHEMA';\nexports[1436] = 'ER_STACK_OVERRUN_NEED_MORE';\nexports[1437] = 'ER_TOO_LONG_BODY';\nexports[1438] = 'ER_WARN_CANT_DROP_DEFAULT_KEYCACHE';\nexports[1439] = 'ER_TOO_BIG_DISPLAYWIDTH';\nexports[1440] = 'ER_XAER_DUPID';\nexports[1441] = 'ER_DATETIME_FUNCTION_OVERFLOW';\nexports[1442] = 'ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG';\nexports[1443] = 'ER_VIEW_PREVENT_UPDATE';\nexports[1444] = 'ER_PS_NO_RECURSION';\nexports[1445] = 'ER_SP_CANT_SET_AUTOCOMMIT';\nexports[1446] = 'ER_MALFORMED_DEFINER';\nexports[1447] = 'ER_VIEW_FRM_NO_USER';\nexports[1448] = 'ER_VIEW_OTHER_USER';\nexports[1449] = 'ER_NO_SUCH_USER';\nexports[1450] = 'ER_FORBID_SCHEMA_CHANGE';\nexports[1451] = 'ER_ROW_IS_REFERENCED_2';\nexports[1452] = 'ER_NO_REFERENCED_ROW_2';\nexports[1453] = 'ER_SP_BAD_VAR_SHADOW';\nexports[1454] = 'ER_TRG_NO_DEFINER';\nexports[1455] = 'ER_OLD_FILE_FORMAT';\nexports[1456] = 'ER_SP_RECURSION_LIMIT';\nexports[1457] = 'ER_SP_PROC_TABLE_CORRUPT';\nexports[1458] = 'ER_SP_WRONG_NAME';\nexports[1459] = 'ER_TABLE_NEEDS_UPGRADE';\nexports[1460] = 'ER_SP_NO_AGGREGATE';\nexports[1461] = 'ER_MAX_PREPARED_STMT_COUNT_REACHED';\nexports[1462] = 'ER_VIEW_RECURSIVE';\nexports[1463] = 'ER_NON_GROUPING_FIELD_USED';\nexports[1464] = 'ER_TABLE_CANT_HANDLE_SPKEYS';\nexports[1465] = 'ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA';\nexports[1466] = 'ER_REMOVED_SPACES';\nexports[1467] = 'ER_AUTOINC_READ_FAILED';\nexports[1468] = 'ER_USERNAME';\nexports[1469] = 'ER_HOSTNAME';\nexports[1470] = 'ER_WRONG_STRING_LENGTH';\nexports[1471] = 'ER_NON_INSERTABLE_TABLE';\nexports[1472] = 'ER_ADMIN_WRONG_MRG_TABLE';\nexports[1473] = 'ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT';\nexports[1474] = 'ER_NAME_BECOMES_EMPTY';\nexports[1475] = 'ER_AMBIGUOUS_FIELD_TERM';\nexports[1476] = 'ER_FOREIGN_SERVER_EXISTS';\nexports[1477] = 'ER_FOREIGN_SERVER_DOESNT_EXIST';\nexports[1478] = 'ER_ILLEGAL_HA_CREATE_OPTION';\nexports[1479] = 'ER_PARTITION_REQUIRES_VALUES_ERROR';\nexports[1480] = 'ER_PARTITION_WRONG_VALUES_ERROR';\nexports[1481] = 'ER_PARTITION_MAXVALUE_ERROR';\nexports[1482] = 'ER_PARTITION_SUBPARTITION_ERROR';\nexports[1483] = 'ER_PARTITION_SUBPART_MIX_ERROR';\nexports[1484] = 'ER_PARTITION_WRONG_NO_PART_ERROR';\nexports[1485] = 'ER_PARTITION_WRONG_NO_SUBPART_ERROR';\nexports[1486] = 'ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR';\nexports[1487] = 'ER_NO_CONST_EXPR_IN_RANGE_OR_LIST_ERROR';\nexports[1488] = 'ER_FIELD_NOT_FOUND_PART_ERROR';\nexports[1489] = 'ER_LIST_OF_FIELDS_ONLY_IN_HASH_ERROR';\nexports[1490] = 'ER_INCONSISTENT_PARTITION_INFO_ERROR';\nexports[1491] = 'ER_PARTITION_FUNC_NOT_ALLOWED_ERROR';\nexports[1492] = 'ER_PARTITIONS_MUST_BE_DEFINED_ERROR';\nexports[1493] = 'ER_RANGE_NOT_INCREASING_ERROR';\nexports[1494] = 'ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR';\nexports[1495] = 'ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR';\nexports[1496] = 'ER_PARTITION_ENTRY_ERROR';\nexports[1497] = 'ER_MIX_HANDLER_ERROR';\nexports[1498] = 'ER_PARTITION_NOT_DEFINED_ERROR';\nexports[1499] = 'ER_TOO_MANY_PARTITIONS_ERROR';\nexports[1500] = 'ER_SUBPARTITION_ERROR';\nexports[1501] = 'ER_CANT_CREATE_HANDLER_FILE';\nexports[1502] = 'ER_BLOB_FIELD_IN_PART_FUNC_ERROR';\nexports[1503] = 'ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF';\nexports[1504] = 'ER_NO_PARTS_ERROR';\nexports[1505] = 'ER_PARTITION_MGMT_ON_NONPARTITIONED';\nexports[1506] = 'ER_FOREIGN_KEY_ON_PARTITIONED';\nexports[1507] = 'ER_DROP_PARTITION_NON_EXISTENT';\nexports[1508] = 'ER_DROP_LAST_PARTITION';\nexports[1509] = 'ER_COALESCE_ONLY_ON_HASH_PARTITION';\nexports[1510] = 'ER_REORG_HASH_ONLY_ON_SAME_NO';\nexports[1511] = 'ER_REORG_NO_PARAM_ERROR';\nexports[1512] = 'ER_ONLY_ON_RANGE_LIST_PARTITION';\nexports[1513] = 'ER_ADD_PARTITION_SUBPART_ERROR';\nexports[1514] = 'ER_ADD_PARTITION_NO_NEW_PARTITION';\nexports[1515] = 'ER_COALESCE_PARTITION_NO_PARTITION';\nexports[1516] = 'ER_REORG_PARTITION_NOT_EXIST';\nexports[1517] = 'ER_SAME_NAME_PARTITION';\nexports[1518] = 'ER_NO_BINLOG_ERROR';\nexports[1519] = 'ER_CONSECUTIVE_REORG_PARTITIONS';\nexports[1520] = 'ER_REORG_OUTSIDE_RANGE';\nexports[1521] = 'ER_PARTITION_FUNCTION_FAILURE';\nexports[1522] = 'ER_PART_STATE_ERROR';\nexports[1523] = 'ER_LIMITED_PART_RANGE';\nexports[1524] = 'ER_PLUGIN_IS_NOT_LOADED';\nexports[1525] = 'ER_WRONG_VALUE';\nexports[1526] = 'ER_NO_PARTITION_FOR_GIVEN_VALUE';\nexports[1527] = 'ER_FILEGROUP_OPTION_ONLY_ONCE';\nexports[1528] = 'ER_CREATE_FILEGROUP_FAILED';\nexports[1529] = 'ER_DROP_FILEGROUP_FAILED';\nexports[1530] = 'ER_TABLESPACE_AUTO_EXTEND_ERROR';\nexports[1531] = 'ER_WRONG_SIZE_NUMBER';\nexports[1532] = 'ER_SIZE_OVERFLOW_ERROR';\nexports[1533] = 'ER_ALTER_FILEGROUP_FAILED';\nexports[1534] = 'ER_BINLOG_ROW_LOGGING_FAILED';\nexports[1535] = 'ER_BINLOG_ROW_WRONG_TABLE_DEF';\nexports[1536] = 'ER_BINLOG_ROW_RBR_TO_SBR';\nexports[1537] = 'ER_EVENT_ALREADY_EXISTS';\nexports[1538] = 'ER_EVENT_STORE_FAILED';\nexports[1539] = 'ER_EVENT_DOES_NOT_EXIST';\nexports[1540] = 'ER_EVENT_CANT_ALTER';\nexports[1541] = 'ER_EVENT_DROP_FAILED';\nexports[1542] = 'ER_EVENT_INTERVAL_NOT_POSITIVE_OR_TOO_BIG';\nexports[1543] = 'ER_EVENT_ENDS_BEFORE_STARTS';\nexports[1544] = 'ER_EVENT_EXEC_TIME_IN_THE_PAST';\nexports[1545] = 'ER_EVENT_OPEN_TABLE_FAILED';\nexports[1546] = 'ER_EVENT_NEITHER_M_EXPR_NOR_M_AT';\nexports[1547] = 'ER_COL_COUNT_DOESNT_MATCH_CORRUPTED';\nexports[1548] = 'ER_CANNOT_LOAD_FROM_TABLE';\nexports[1549] = 'ER_EVENT_CANNOT_DELETE';\nexports[1550] = 'ER_EVENT_COMPILE_ERROR';\nexports[1551] = 'ER_EVENT_SAME_NAME';\nexports[1552] = 'ER_EVENT_DATA_TOO_LONG';\nexports[1553] = 'ER_DROP_INDEX_FK';\nexports[1554] = 'ER_WARN_DEPRECATED_SYNTAX_WITH_VER';\nexports[1555] = 'ER_CANT_WRITE_LOCK_LOG_TABLE';\nexports[1556] = 'ER_CANT_LOCK_LOG_TABLE';\nexports[1557] = 'ER_FOREIGN_DUPLICATE_KEY';\nexports[1558] = 'ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE';\nexports[1559] = 'ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR';\nexports[1560] = 'ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_FORMAT';\nexports[1561] = 'ER_NDB_CANT_SWITCH_BINLOG_FORMAT';\nexports[1562] = 'ER_PARTITION_NO_TEMPORARY';\nexports[1563] = 'ER_PARTITION_CONST_DOMAIN_ERROR';\nexports[1564] = 'ER_PARTITION_FUNCTION_IS_NOT_ALLOWED';\nexports[1565] = 'ER_DDL_LOG_ERROR';\nexports[1566] = 'ER_NULL_IN_VALUES_LESS_THAN';\nexports[1567] = 'ER_WRONG_PARTITION_NAME';\nexports[1568] = 'ER_CANT_CHANGE_TX_ISOLATION';\nexports[1569] = 'ER_DUP_ENTRY_AUTOINCREMENT_CASE';\nexports[1570] = 'ER_EVENT_MODIFY_QUEUE_ERROR';\nexports[1571] = 'ER_EVENT_SET_VAR_ERROR';\nexports[1572] = 'ER_PARTITION_MERGE_ERROR';\nexports[1573] = 'ER_CANT_ACTIVATE_LOG';\nexports[1574] = 'ER_RBR_NOT_AVAILABLE';\nexports[1575] = 'ER_BASE64_DECODE_ERROR';\nexports[1576] = 'ER_EVENT_RECURSION_FORBIDDEN';\nexports[1577] = 'ER_EVENTS_DB_ERROR';\nexports[1578] = 'ER_ONLY_INTEGERS_ALLOWED';\nexports[1579] = 'ER_UNSUPORTED_LOG_ENGINE';\nexports[1580] = 'ER_BAD_LOG_STATEMENT';\nexports[1581] = 'ER_CANT_RENAME_LOG_TABLE';\nexports[1582] = 'ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT';\nexports[1583] = 'ER_WRONG_PARAMETERS_TO_NATIVE_FCT';\nexports[1584] = 'ER_WRONG_PARAMETERS_TO_STORED_FCT';\nexports[1585] = 'ER_NATIVE_FCT_NAME_COLLISION';\nexports[1586] = 'ER_DUP_ENTRY_WITH_KEY_NAME';\nexports[1587] = 'ER_BINLOG_PURGE_EMFILE';\nexports[1588] = 'ER_EVENT_CANNOT_CREATE_IN_THE_PAST';\nexports[1589] = 'ER_EVENT_CANNOT_ALTER_IN_THE_PAST';\nexports[1590] = 'ER_REPLICA_INCIDENT';\nexports[1591] = 'ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT';\nexports[1592] = 'ER_BINLOG_UNSAFE_STATEMENT';\nexports[1593] = 'ER_REPLICA_FATAL_ERROR';\nexports[1594] = 'ER_REPLICA_RELAY_LOG_READ_FAILURE';\nexports[1595] = 'ER_REPLICA_RELAY_LOG_WRITE_FAILURE';\nexports[1596] = 'ER_REPLICA_CREATE_EVENT_FAILURE';\nexports[1597] = 'ER_REPLICA_SOURCE_COM_FAILURE';\nexports[1598] = 'ER_BINLOG_LOGGING_IMPOSSIBLE';\nexports[1599] = 'ER_VIEW_NO_CREATION_CTX';\nexports[1600] = 'ER_VIEW_INVALID_CREATION_CTX';\nexports[1601] = 'ER_SR_INVALID_CREATION_CTX';\nexports[1602] = 'ER_TRG_CORRUPTED_FILE';\nexports[1603] = 'ER_TRG_NO_CREATION_CTX';\nexports[1604] = 'ER_TRG_INVALID_CREATION_CTX';\nexports[1605] = 'ER_EVENT_INVALID_CREATION_CTX';\nexports[1606] = 'ER_TRG_CANT_OPEN_TABLE';\nexports[1607] = 'ER_CANT_CREATE_SROUTINE';\nexports[1608] = 'ER_NEVER_USED';\nexports[1609] = 'ER_NO_FORMAT_DESCRIPTION_EVENT_BEFORE_BINLOG_STATEMENT';\nexports[1610] = 'ER_REPLICA_CORRUPT_EVENT';\nexports[1611] = 'ER_LOAD_DATA_INVALID_COLUMN';\nexports[1612] = 'ER_LOG_PURGE_NO_FILE';\nexports[1613] = 'ER_XA_RBTIMEOUT';\nexports[1614] = 'ER_XA_RBDEADLOCK';\nexports[1615] = 'ER_NEED_REPREPARE';\nexports[1616] = 'ER_DELAYED_NOT_SUPPORTED';\nexports[1617] = 'WARN_NO_SOURCE_INFO';\nexports[1618] = 'WARN_OPTION_IGNORED';\nexports[1619] = 'WARN_PLUGIN_DELETE_BUILTIN';\nexports[1620] = 'WARN_PLUGIN_BUSY';\nexports[1621] = 'ER_VARIABLE_IS_READONLY';\nexports[1622] = 'ER_WARN_ENGINE_TRANSACTION_ROLLBACK';\nexports[1623] = 'ER_REPLICA_HEARTBEAT_FAILURE';\nexports[1624] = 'ER_REPLICA_HEARTBEAT_VALUE_OUT_OF_RANGE';\nexports[1625] = 'ER_NDB_REPLICATION_SCHEMA_ERROR';\nexports[1626] = 'ER_CONFLICT_FN_PARSE_ERROR';\nexports[1627] = 'ER_EXCEPTIONS_WRITE_ERROR';\nexports[1628] = 'ER_TOO_LONG_TABLE_COMMENT';\nexports[1629] = 'ER_TOO_LONG_FIELD_COMMENT';\nexports[1630] = 'ER_FUNC_INEXISTENT_NAME_COLLISION';\nexports[1631] = 'ER_DATABASE_NAME';\nexports[1632] = 'ER_TABLE_NAME';\nexports[1633] = 'ER_PARTITION_NAME';\nexports[1634] = 'ER_SUBPARTITION_NAME';\nexports[1635] = 'ER_TEMPORARY_NAME';\nexports[1636] = 'ER_RENAMED_NAME';\nexports[1637] = 'ER_TOO_MANY_CONCURRENT_TRXS';\nexports[1638] = 'WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED';\nexports[1639] = 'ER_DEBUG_SYNC_TIMEOUT';\nexports[1640] = 'ER_DEBUG_SYNC_HIT_LIMIT';\nexports[1641] = 'ER_DUP_SIGNAL_SET';\nexports[1642] = 'ER_SIGNAL_WARN';\nexports[1643] = 'ER_SIGNAL_NOT_FOUND';\nexports[1644] = 'ER_SIGNAL_EXCEPTION';\nexports[1645] = 'ER_RESIGNAL_WITHOUT_ACTIVE_HANDLER';\nexports[1646] = 'ER_SIGNAL_BAD_CONDITION_TYPE';\nexports[1647] = 'WARN_COND_ITEM_TRUNCATED';\nexports[1648] = 'ER_COND_ITEM_TOO_LONG';\nexports[1649] = 'ER_UNKNOWN_LOCALE';\nexports[1650] = 'ER_REPLICA_IGNORE_SERVER_IDS';\nexports[1651] = 'ER_QUERY_CACHE_DISABLED';\nexports[1652] = 'ER_SAME_NAME_PARTITION_FIELD';\nexports[1653] = 'ER_PARTITION_COLUMN_LIST_ERROR';\nexports[1654] = 'ER_WRONG_TYPE_COLUMN_VALUE_ERROR';\nexports[1655] = 'ER_TOO_MANY_PARTITION_FUNC_FIELDS_ERROR';\nexports[1656] = 'ER_MAXVALUE_IN_VALUES_IN';\nexports[1657] = 'ER_TOO_MANY_VALUES_ERROR';\nexports[1658] = 'ER_ROW_SINGLE_PARTITION_FIELD_ERROR';\nexports[1659] = 'ER_FIELD_TYPE_NOT_ALLOWED_AS_PARTITION_FIELD';\nexports[1660] = 'ER_PARTITION_FIELDS_TOO_LONG';\nexports[1661] = 'ER_BINLOG_ROW_ENGINE_AND_STMT_ENGINE';\nexports[1662] = 'ER_BINLOG_ROW_MODE_AND_STMT_ENGINE';\nexports[1663] = 'ER_BINLOG_UNSAFE_AND_STMT_ENGINE';\nexports[1664] = 'ER_BINLOG_ROW_INJECTION_AND_STMT_ENGINE';\nexports[1665] = 'ER_BINLOG_STMT_MODE_AND_ROW_ENGINE';\nexports[1666] = 'ER_BINLOG_ROW_INJECTION_AND_STMT_MODE';\nexports[1667] = 'ER_BINLOG_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE';\nexports[1668] = 'ER_BINLOG_UNSAFE_LIMIT';\nexports[1669] = 'ER_BINLOG_UNSAFE_INSERT_DELAYED';\nexports[1670] = 'ER_BINLOG_UNSAFE_SYSTEM_TABLE';\nexports[1671] = 'ER_BINLOG_UNSAFE_AUTOINC_COLUMNS';\nexports[1672] = 'ER_BINLOG_UNSAFE_UDF';\nexports[1673] = 'ER_BINLOG_UNSAFE_SYSTEM_VARIABLE';\nexports[1674] = 'ER_BINLOG_UNSAFE_SYSTEM_FUNCTION';\nexports[1675] = 'ER_BINLOG_UNSAFE_NONTRANS_AFTER_TRANS';\nexports[1676] = 'ER_MESSAGE_AND_STATEMENT';\nexports[1677] = 'ER_REPLICA_CONVERSION_FAILED';\nexports[1678] = 'ER_REPLICA_CANT_CREATE_CONVERSION';\nexports[1679] = 'ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT';\nexports[1680] = 'ER_PATH_LENGTH';\nexports[1681] = 'ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT';\nexports[1682] = 'ER_WRONG_NATIVE_TABLE_STRUCTURE';\nexports[1683] = 'ER_WRONG_PERFSCHEMA_USAGE';\nexports[1684] = 'ER_WARN_I_S_SKIPPED_TABLE';\nexports[1685] = 'ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_DIRECT';\nexports[1686] = 'ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_DIRECT';\nexports[1687] = 'ER_SPATIAL_MUST_HAVE_GEOM_COL';\nexports[1688] = 'ER_TOO_LONG_INDEX_COMMENT';\nexports[1689] = 'ER_LOCK_ABORTED';\nexports[1690] = 'ER_DATA_OUT_OF_RANGE';\nexports[1691] = 'ER_WRONG_SPVAR_TYPE_IN_LIMIT';\nexports[1692] = 'ER_BINLOG_UNSAFE_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE';\nexports[1693] = 'ER_BINLOG_UNSAFE_MIXED_STATEMENT';\nexports[1694] = 'ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_SQL_LOG_BIN';\nexports[1695] = 'ER_STORED_FUNCTION_PREVENTS_SWITCH_SQL_LOG_BIN';\nexports[1696] = 'ER_FAILED_READ_FROM_PAR_FILE';\nexports[1697] = 'ER_VALUES_IS_NOT_INT_TYPE_ERROR';\nexports[1698] = 'ER_ACCESS_DENIED_NO_PASSWORD_ERROR';\nexports[1699] = 'ER_SET_PASSWORD_AUTH_PLUGIN';\nexports[1700] = 'ER_GRANT_PLUGIN_USER_EXISTS';\nexports[1701] = 'ER_TRUNCATE_ILLEGAL_FK';\nexports[1702] = 'ER_PLUGIN_IS_PERMANENT';\nexports[1703] = 'ER_REPLICA_HEARTBEAT_VALUE_OUT_OF_RANGE_MIN';\nexports[1704] = 'ER_REPLICA_HEARTBEAT_VALUE_OUT_OF_RANGE_MAX';\nexports[1705] = 'ER_STMT_CACHE_FULL';\nexports[1706] = 'ER_MULTI_UPDATE_KEY_CONFLICT';\nexports[1707] = 'ER_TABLE_NEEDS_REBUILD';\nexports[1708] = 'WARN_OPTION_BELOW_LIMIT';\nexports[1709] = 'ER_INDEX_COLUMN_TOO_LONG';\nexports[1710] = 'ER_ERROR_IN_TRIGGER_BODY';\nexports[1711] = 'ER_ERROR_IN_UNKNOWN_TRIGGER_BODY';\nexports[1712] = 'ER_INDEX_CORRUPT';\nexports[1713] = 'ER_UNDO_RECORD_TOO_BIG';\nexports[1714] = 'ER_BINLOG_UNSAFE_INSERT_IGNORE_SELECT';\nexports[1715] = 'ER_BINLOG_UNSAFE_INSERT_SELECT_UPDATE';\nexports[1716] = 'ER_BINLOG_UNSAFE_REPLACE_SELECT';\nexports[1717] = 'ER_BINLOG_UNSAFE_CREATE_IGNORE_SELECT';\nexports[1718] = 'ER_BINLOG_UNSAFE_CREATE_REPLACE_SELECT';\nexports[1719] = 'ER_BINLOG_UNSAFE_UPDATE_IGNORE';\nexports[1720] = 'ER_PLUGIN_NO_UNINSTALL';\nexports[1721] = 'ER_PLUGIN_NO_INSTALL';\nexports[1722] = 'ER_BINLOG_UNSAFE_WRITE_AUTOINC_SELECT';\nexports[1723] = 'ER_BINLOG_UNSAFE_CREATE_SELECT_AUTOINC';\nexports[1724] = 'ER_BINLOG_UNSAFE_INSERT_TWO_KEYS';\nexports[1725] = 'ER_TABLE_IN_FK_CHECK';\nexports[1726] = 'ER_UNSUPPORTED_ENGINE';\nexports[1727] = 'ER_BINLOG_UNSAFE_AUTOINC_NOT_FIRST';\nexports[1728] = 'ER_CANNOT_LOAD_FROM_TABLE_V2';\nexports[1729] = 'ER_SOURCE_DELAY_VALUE_OUT_OF_RANGE';\nexports[1730] = 'ER_ONLY_FD_AND_RBR_EVENTS_ALLOWED_IN_BINLOG_STATEMENT';\nexports[1731] = 'ER_PARTITION_EXCHANGE_DIFFERENT_OPTION';\nexports[1732] = 'ER_PARTITION_EXCHANGE_PART_TABLE';\nexports[1733] = 'ER_PARTITION_EXCHANGE_TEMP_TABLE';\nexports[1734] = 'ER_PARTITION_INSTEAD_OF_SUBPARTITION';\nexports[1735] = 'ER_UNKNOWN_PARTITION';\nexports[1736] = 'ER_TABLES_DIFFERENT_METADATA';\nexports[1737] = 'ER_ROW_DOES_NOT_MATCH_PARTITION';\nexports[1738] = 'ER_BINLOG_CACHE_SIZE_GREATER_THAN_MAX';\nexports[1739] = 'ER_WARN_INDEX_NOT_APPLICABLE';\nexports[1740] = 'ER_PARTITION_EXCHANGE_FOREIGN_KEY';\nexports[1741] = 'ER_NO_SUCH_KEY_VALUE';\nexports[1742] = 'ER_RPL_INFO_DATA_TOO_LONG';\nexports[1743] = 'ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE';\nexports[1744] = 'ER_BINLOG_READ_EVENT_CHECKSUM_FAILURE';\nexports[1745] = 'ER_BINLOG_STMT_CACHE_SIZE_GREATER_THAN_MAX';\nexports[1746] = 'ER_CANT_UPDATE_TABLE_IN_CREATE_TABLE_SELECT';\nexports[1747] = 'ER_PARTITION_CLAUSE_ON_NONPARTITIONED';\nexports[1748] = 'ER_ROW_DOES_NOT_MATCH_GIVEN_PARTITION_SET';\nexports[1749] = 'ER_NO_SUCH_PARTITION';\nexports[1750] = 'ER_CHANGE_RPL_INFO_REPOSITORY_FAILURE';\nexports[1751] = 'ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_CREATED_TEMP_TABLE';\nexports[1752] = 'ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_DROPPED_TEMP_TABLE';\nexports[1753] = 'ER_MTS_FEATURE_IS_NOT_SUPPORTED';\nexports[1754] = 'ER_MTS_UPDATED_DBS_GREATER_MAX';\nexports[1755] = 'ER_MTS_CANT_PARALLEL';\nexports[1756] = 'ER_MTS_INCONSISTENT_DATA';\nexports[1757] = 'ER_FULLTEXT_NOT_SUPPORTED_WITH_PARTITIONING';\nexports[1758] = 'ER_DA_INVALID_CONDITION_NUMBER';\nexports[1759] = 'ER_INSECURE_PLAIN_TEXT';\nexports[1760] = 'ER_INSECURE_CHANGE_SOURCE';\nexports[1761] = 'ER_FOREIGN_DUPLICATE_KEY_WITH_CHILD_INFO';\nexports[1762] = 'ER_FOREIGN_DUPLICATE_KEY_WITHOUT_CHILD_INFO';\nexports[1763] = 'ER_SQLTHREAD_WITH_SECURE_REPLICA';\nexports[1764] = 'ER_TABLE_HAS_NO_FT';\nexports[1765] = 'ER_VARIABLE_NOT_SETTABLE_IN_SF_OR_TRIGGER';\nexports[1766] = 'ER_VARIABLE_NOT_SETTABLE_IN_TRANSACTION';\nexports[1767] = 'ER_GTID_NEXT_IS_NOT_IN_GTID_NEXT_LIST';\nexports[1768] = 'ER_CANT_CHANGE_GTID_NEXT_IN_TRANSACTION_WHEN_GTID_NEXT_LIST_IS_NULL';\nexports[1769] = 'ER_SET_STATEMENT_CANNOT_INVOKE_FUNCTION';\nexports[1770] = 'ER_GTID_NEXT_CANT_BE_AUTOMATIC_IF_GTID_NEXT_LIST_IS_NON_NULL';\nexports[1771] = 'ER_SKIPPING_LOGGED_TRANSACTION';\nexports[1772] = 'ER_MALFORMED_GTID_SET_SPECIFICATION';\nexports[1773] = 'ER_MALFORMED_GTID_SET_ENCODING';\nexports[1774] = 'ER_MALFORMED_GTID_SPECIFICATION';\nexports[1775] = 'ER_GNO_EXHAUSTED';\nexports[1776] = 'ER_BAD_REPLICA_AUTO_POSITION';\nexports[1777] = 'ER_AUTO_POSITION_REQUIRES_GTID_MODE_ON';\nexports[1778] = 'ER_CANT_DO_IMPLICIT_COMMIT_IN_TRX_WHEN_GTID_NEXT_IS_SET';\nexports[1779] = 'ER_GTID_MODE_2_OR_3_REQUIRES_ENFORCE_GTID_CONSISTENCY_ON';\nexports[1780] = 'ER_GTID_MODE_REQUIRES_BINLOG';\nexports[1781] = 'ER_CANT_SET_GTID_NEXT_TO_GTID_WHEN_GTID_MODE_IS_OFF';\nexports[1782] = 'ER_CANT_SET_GTID_NEXT_TO_ANONYMOUS_WHEN_GTID_MODE_IS_ON';\nexports[1783] = 'ER_CANT_SET_GTID_NEXT_LIST_TO_NON_NULL_WHEN_GTID_MODE_IS_OFF';\nexports[1784] = 'ER_FOUND_GTID_EVENT_WHEN_GTID_MODE_IS_OFF';\nexports[1785] = 'ER_GTID_UNSAFE_NON_TRANSACTIONAL_TABLE';\nexports[1786] = 'ER_GTID_UNSAFE_CREATE_SELECT';\nexports[1787] = 'ER_GTID_UNSAFE_CREATE_DROP_TEMPORARY_TABLE_IN_TRANSACTION';\nexports[1788] = 'ER_GTID_MODE_CAN_ONLY_CHANGE_ONE_STEP_AT_A_TIME';\nexports[1789] = 'ER_SOURCE_HAS_PURGED_REQUIRED_GTIDS';\nexports[1790] = 'ER_CANT_SET_GTID_NEXT_WHEN_OWNING_GTID';\nexports[1791] = 'ER_UNKNOWN_EXPLAIN_FORMAT';\nexports[1792] = 'ER_CANT_EXECUTE_IN_READ_ONLY_TRANSACTION';\nexports[1793] = 'ER_TOO_LONG_TABLE_PARTITION_COMMENT';\nexports[1794] = 'ER_REPLICA_CONFIGURATION';\nexports[1795] = 'ER_INNODB_FT_LIMIT';\nexports[1796] = 'ER_INNODB_NO_FT_TEMP_TABLE';\nexports[1797] = 'ER_INNODB_FT_WRONG_DOCID_COLUMN';\nexports[1798] = 'ER_INNODB_FT_WRONG_DOCID_INDEX';\nexports[1799] = 'ER_INNODB_ONLINE_LOG_TOO_BIG';\nexports[1800] = 'ER_UNKNOWN_ALTER_ALGORITHM';\nexports[1801] = 'ER_UNKNOWN_ALTER_LOCK';\nexports[1802] = 'ER_MTS_CHANGE_SOURCE_CANT_RUN_WITH_GAPS';\nexports[1803] = 'ER_MTS_RECOVERY_FAILURE';\nexports[1804] = 'ER_MTS_RESET_WORKERS';\nexports[1805] = 'ER_COL_COUNT_DOESNT_MATCH_CORRUPTED_V2';\nexports[1806] = 'ER_REPLICA_SILENT_RETRY_TRANSACTION';\nexports[1807] = 'ER_DISCARD_FK_CHECKS_RUNNING';\nexports[1808] = 'ER_TABLE_SCHEMA_MISMATCH';\nexports[1809] = 'ER_TABLE_IN_SYSTEM_TABLESPACE';\nexports[1810] = 'ER_IO_READ_ERROR';\nexports[1811] = 'ER_IO_WRITE_ERROR';\nexports[1812] = 'ER_TABLESPACE_MISSING';\nexports[1813] = 'ER_TABLESPACE_EXISTS';\nexports[1814] = 'ER_TABLESPACE_DISCARDED';\nexports[1815] = 'ER_INTERNAL_ERROR';\nexports[1816] = 'ER_INNODB_IMPORT_ERROR';\nexports[1817] = 'ER_INNODB_INDEX_CORRUPT';\nexports[1818] = 'ER_INVALID_YEAR_COLUMN_LENGTH';\nexports[1819] = 'ER_NOT_VALID_PASSWORD';\nexports[1820] = 'ER_MUST_CHANGE_PASSWORD';\nexports[1821] = 'ER_FK_NO_INDEX_CHILD';\nexports[1822] = 'ER_FK_NO_INDEX_PARENT';\nexports[1823] = 'ER_FK_FAIL_ADD_SYSTEM';\nexports[1824] = 'ER_FK_CANNOT_OPEN_PARENT';\nexports[1825] = 'ER_FK_INCORRECT_OPTION';\nexports[1826] = 'ER_FK_DUP_NAME';\nexports[1827] = 'ER_PASSWORD_FORMAT';\nexports[1828] = 'ER_FK_COLUMN_CANNOT_DROP';\nexports[1829] = 'ER_FK_COLUMN_CANNOT_DROP_CHILD';\nexports[1830] = 'ER_FK_COLUMN_NOT_NULL';\nexports[1831] = 'ER_DUP_INDEX';\nexports[1832] = 'ER_FK_COLUMN_CANNOT_CHANGE';\nexports[1833] = 'ER_FK_COLUMN_CANNOT_CHANGE_CHILD';\nexports[1834] = 'ER_FK_CANNOT_DELETE_PARENT';\nexports[1835] = 'ER_MALFORMED_PACKET';\nexports[1836] = 'ER_READ_ONLY_MODE';\nexports[1837] = 'ER_GTID_NEXT_TYPE_UNDEFINED_GROUP';\nexports[1838] = 'ER_VARIABLE_NOT_SETTABLE_IN_SP';\nexports[1839] = 'ER_CANT_SET_GTID_PURGED_WHEN_GTID_MODE_IS_OFF';\nexports[1840] = 'ER_CANT_SET_GTID_PURGED_WHEN_GTID_EXECUTED_IS_NOT_EMPTY';\nexports[1841] = 'ER_CANT_SET_GTID_PURGED_WHEN_OWNED_GTIDS_IS_NOT_EMPTY';\nexports[1842] = 'ER_GTID_PURGED_WAS_CHANGED';\nexports[1843] = 'ER_GTID_EXECUTED_WAS_CHANGED';\nexports[1844] = 'ER_BINLOG_STMT_MODE_AND_NO_REPL_TABLES';\nexports[1845] = 'ER_ALTER_OPERATION_NOT_SUPPORTED';\nexports[1846] = 'ER_ALTER_OPERATION_NOT_SUPPORTED_REASON';\nexports[1847] = 'ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_COPY';\nexports[1848] = 'ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_PARTITION';\nexports[1849] = 'ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FK_RENAME';\nexports[1850] = 'ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_COLUMN_TYPE';\nexports[1851] = 'ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FK_CHECK';\nexports[1852] = 'ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_IGNORE';\nexports[1853] = 'ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_NOPK';\nexports[1854] = 'ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_AUTOINC';\nexports[1855] = 'ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_HIDDEN_FTS';\nexports[1856] = 'ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_CHANGE_FTS';\nexports[1857] = 'ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FTS';\nexports[1858] = 'ER_SQL_REPLICA_SKIP_COUNTER_NOT_SETTABLE_IN_GTID_MODE';\nexports[1859] = 'ER_DUP_UNKNOWN_IN_INDEX';\nexports[1860] = 'ER_IDENT_CAUSES_TOO_LONG_PATH';\nexports[1861] = 'ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_NOT_NULL';\nexports[1862] = 'ER_MUST_CHANGE_PASSWORD_LOGIN';\nexports[1863] = 'ER_ROW_IN_WRONG_PARTITION';\nexports[1864] = 'ER_MTS_EVENT_BIGGER_PENDING_JOBS_SIZE_MAX';\nexports[1865] = 'ER_INNODB_NO_FT_USES_PARSER';\nexports[1866] = 'ER_BINLOG_LOGICAL_CORRUPTION';\nexports[1867] = 'ER_WARN_PURGE_LOG_IN_USE';\nexports[1868] = 'ER_WARN_PURGE_LOG_IS_ACTIVE';\nexports[1869] = 'ER_AUTO_INCREMENT_CONFLICT';\nexports[1870] = 'WARN_ON_BLOCKHOLE_IN_RBR';\nexports[1871] = 'ER_REPLICA_MI_INIT_REPOSITORY';\nexports[1872] = 'ER_REPLICA_RLI_INIT_REPOSITORY';\nexports[1873] = 'ER_ACCESS_DENIED_CHANGE_USER_ERROR';\nexports[1874] = 'ER_INNODB_READ_ONLY';\nexports[1875] = 'ER_STOP_REPLICA_SQL_THREAD_TIMEOUT';\nexports[1876] = 'ER_STOP_REPLICA_IO_THREAD_TIMEOUT';\nexports[1877] = 'ER_TABLE_CORRUPT';\nexports[1878] = 'ER_TEMP_FILE_WRITE_FAILURE';\nexports[1879] = 'ER_INNODB_FT_AUX_NOT_HEX_ID';\nexports[1880] = 'ER_OLD_TEMPORALS_UPGRADED';\nexports[1881] = 'ER_INNODB_FORCED_RECOVERY';\nexports[1882] = 'ER_AES_INVALID_IV';\nexports[1883] = 'ER_FILE_CORRUPT';\nexports[1884] = 'ER_ERROR_ON_SOURCE';\nexports[1885] = 'ER_INCONSISTENT_ERROR';\nexports[1886] = 'ER_STORAGE_ENGINE_NOT_LOADED';\nexports[1887] = 'ER_GET_STACKED_DA_WITHOUT_ACTIVE_HANDLER';\nexports[1888] = 'ER_WARN_LEGACY_SYNTAX_CONVERTED';\nexports[1889] = 'ER_BINLOG_UNSAFE_FULLTEXT_PLUGIN';\nexports[1890] = 'ER_CANNOT_DISCARD_TEMPORARY_TABLE';\nexports[1891] = 'ER_FK_DEPTH_EXCEEDED';\nexports[1892] = 'ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE_V2';\nexports[1893] = 'ER_WARN_TRIGGER_DOESNT_HAVE_CREATED';\nexports[1894] = 'ER_REFERENCED_TRG_DOES_NOT_EXIST';\nexports[1895] = 'ER_EXPLAIN_NOT_SUPPORTED';\nexports[1896] = 'ER_INVALID_FIELD_SIZE';\nexports[1897] = 'ER_MISSING_HA_CREATE_OPTION';\nexports[1898] = 'ER_ENGINE_OUT_OF_MEMORY';\nexports[1899] = 'ER_PASSWORD_EXPIRE_ANONYMOUS_USER';\nexports[1900] = 'ER_REPLICA_SQL_THREAD_MUST_STOP';\nexports[1901] = 'ER_NO_FT_MATERIALIZED_SUBQUERY';\nexports[1902] = 'ER_INNODB_UNDO_LOG_FULL';\nexports[1903] = 'ER_INVALID_ARGUMENT_FOR_LOGARITHM';\nexports[1904] = 'ER_REPLICA_IO_THREAD_MUST_STOP';\nexports[1905] = 'ER_WARN_OPEN_TEMP_TABLES_MUST_BE_ZERO';\nexports[1906] = 'ER_WARN_ONLY_SOURCE_LOG_FILE_NO_POS';\nexports[1907] = 'ER_QUERY_TIMEOUT';\nexports[1908] = 'ER_NON_RO_SELECT_DISABLE_TIMER';\nexports[1909] = 'ER_DUP_LIST_ENTRY';\nexports[1910] = 'ER_SQL_MODE_NO_EFFECT';\nexports[3169] = 'ER_SESSION_WAS_KILLED';\nexports[4031] = 'ER_CLIENT_INTERACTION_TIMEOUT';\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/constants/errors.js?")},"./node_modules/mysql2/lib/constants/field_flags.js":
/*!**********************************************************!*\
  !*** ./node_modules/mysql2/lib/constants/field_flags.js ***!
  \**********************************************************/(__unused_webpack_module,exports)=>{"use strict";eval("\n\n// Manually extracted from mysql-5.5.23/include/mysql_com.h\nexports.NOT_NULL = 1; /* Field can't be NULL */\nexports.PRI_KEY = 2; /* Field is part of a primary key */\nexports.UNIQUE_KEY = 4; /* Field is part of a unique key */\nexports.MULTIPLE_KEY = 8; /* Field is part of a key */\nexports.BLOB = 16; /* Field is a blob */\nexports.UNSIGNED = 32; /* Field is unsigned */\nexports.ZEROFILL = 64; /* Field is zerofill */\nexports.BINARY = 128; /* Field is binary   */\n\n/* The following are only sent to new clients */\nexports.ENUM = 256; /* field is an enum */\nexports.AUTO_INCREMENT = 512; /* field is a autoincrement field */\nexports.TIMESTAMP = 1024; /* Field is a timestamp */\nexports.SET = 2048; /* field is a set */\nexports.NO_DEFAULT_VALUE = 4096; /* Field doesn't have default value */\nexports.ON_UPDATE_NOW = 8192; /* Field is set to NOW on UPDATE */\nexports.NUM = 32768; /* Field is num (for clients) */\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/constants/field_flags.js?")},"./node_modules/mysql2/lib/constants/server_status.js":
/*!************************************************************!*\
  !*** ./node_modules/mysql2/lib/constants/server_status.js ***!
  \************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval("\n\n// Manually extracted from mysql-5.5.23/include/mysql_com.h\n\n/**\n  Is raised when a multi-statement transaction\n  has been started, either explicitly, by means\n  of BEGIN or COMMIT AND CHAIN, or\n  implicitly, by the first transactional\n  statement, when autocommit=off.\n*/\nexports.SERVER_STATUS_IN_TRANS = 1;\nexports.SERVER_STATUS_AUTOCOMMIT = 2; /* Server in auto_commit mode */\nexports.SERVER_MORE_RESULTS_EXISTS = 8; /* Multi query - next query exists */\nexports.SERVER_QUERY_NO_GOOD_INDEX_USED = 16;\nexports.SERVER_QUERY_NO_INDEX_USED = 32;\n/**\n  The server was able to fulfill the clients request and opened a\n  read-only non-scrollable cursor for a query. This flag comes\n  in reply to COM_STMT_EXECUTE and COM_STMT_FETCH commands.\n*/\nexports.SERVER_STATUS_CURSOR_EXISTS = 64;\n/**\n  This flag is sent when a read-only cursor is exhausted, in reply to\n  COM_STMT_FETCH command.\n*/\nexports.SERVER_STATUS_LAST_ROW_SENT = 128;\nexports.SERVER_STATUS_DB_DROPPED = 256; /* A database was dropped */\nexports.SERVER_STATUS_NO_BACKSLASH_ESCAPES = 512;\n/**\n  Sent to the client if after a prepared statement reprepare\n  we discovered that the new statement returns a different\n  number of result set columns.\n*/\nexports.SERVER_STATUS_METADATA_CHANGED = 1024;\nexports.SERVER_QUERY_WAS_SLOW = 2048;\n\n/**\n  To mark ResultSet containing output parameter values.\n*/\nexports.SERVER_PS_OUT_PARAMS = 4096;\n\nexports.SERVER_STATUS_IN_TRANS_READONLY = 0x2000; // in a read-only transaction\nexports.SERVER_SESSION_STATE_CHANGED = 0x4000;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/constants/server_status.js?")},"./node_modules/mysql2/lib/constants/session_track.js":
/*!************************************************************!*\
  !*** ./node_modules/mysql2/lib/constants/session_track.js ***!
  \************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval("\n\nexports.SYSTEM_VARIABLES = 0;\nexports.SCHEMA = 1;\nexports.STATE_CHANGE = 2;\nexports.STATE_GTIDS = 3;\nexports.TRANSACTION_CHARACTERISTICS = 4;\nexports.TRANSACTION_STATE = 5;\n\nexports.FIRST_KEY = exports.SYSTEM_VARIABLES;\nexports.LAST_KEY = exports.TRANSACTION_STATE;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/constants/session_track.js?")},"./node_modules/mysql2/lib/constants/ssl_profiles.js":
/*!***********************************************************!*\
  !*** ./node_modules/mysql2/lib/constants/ssl_profiles.js ***!
  \***********************************************************/(__unused_webpack_module,exports)=>{"use strict";eval("\n\n// Certificate for Amazon RDS (Updated for 2019)\n// https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html\n// https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.html#aurora-serverless.tls\nexports[\"Amazon RDS\"] = {\n  ca: [\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIID9DCCAtygAwIBAgIBQjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\\n' +\n      'EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\\n' +\n      'GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\\n' +\n      'GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUwOTExMzFaFw0y\\n' +\n      'MDAzMDUwOTExMzFaMIGKMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\\n' +\n      'bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\\n' +\n      'cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEbMBkGA1UEAwwSQW1hem9uIFJE\\n' +\n      'UyBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuD8nrZ8V\\n' +\n      'u+VA8yVlUipCZIKPTDcOILYpUe8Tct0YeQQr0uyl018StdBsa3CjBgvwpDRq1HgF\\n' +\n      'Ji2N3+39+shCNspQeE6aYU+BHXhKhIIStt3r7gl/4NqYiDDMWKHxHq0nsGDFfArf\\n' +\n      'AOcjZdJagOMqb3fF46flc8k2E7THTm9Sz4L7RY1WdABMuurpICLFE3oHcGdapOb9\\n' +\n      'T53pQR+xpHW9atkcf3pf7gbO0rlKVSIoUenBlZipUlp1VZl/OD/E+TtRhDDNdI2J\\n' +\n      'P/DSMM3aEsq6ZQkfbz/Ilml+Lx3tJYXUDmp+ZjzMPLk/+3beT8EhrwtcG3VPpvwp\\n' +\n      'BIOqsqVVTvw/CwIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw\\n' +\n      'AwEB/zAdBgNVHQ4EFgQUTgLurD72FchM7Sz1BcGPnIQISYMwHwYDVR0jBBgwFoAU\\n' +\n      'TgLurD72FchM7Sz1BcGPnIQISYMwDQYJKoZIhvcNAQEFBQADggEBAHZcgIio8pAm\\n' +\n      'MjHD5cl6wKjXxScXKtXygWH2BoDMYBJF9yfyKO2jEFxYKbHePpnXB1R04zJSWAw5\\n' +\n      '2EUuDI1pSBh9BA82/5PkuNlNeSTB3dXDD2PEPdzVWbSKvUB8ZdooV+2vngL0Zm4r\\n' +\n      '47QPyd18yPHrRIbtBtHR/6CwKevLZ394zgExqhnekYKIqqEX41xsUV0Gm6x4vpjf\\n' +\n      '2u6O/+YE2U+qyyxHE5Wd5oqde0oo9UUpFETJPVb6Q2cEeQib8PBAyi0i6KnF+kIV\\n' +\n      'A9dY7IHSubtCK/i8wxMVqfd5GtbA8mmpeJFwnDvm9rBEsHybl08qlax9syEwsUYr\\n' +\n      '/40NawZfTUU=\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIEATCCAumgAwIBAgIBRDANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\\n' +\n      'EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\\n' +\n      'GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\\n' +\n      'GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMjAzMDZaFw0y\\n' +\n      'MDAzMDUyMjAzMDZaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\\n' +\n      'bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\\n' +\n      'cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1hem9uIFJE\\n' +\n      'UyBhcC1ub3J0aGVhc3QtMSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\\n' +\n      'ggEBAMmM2B4PfTXCZjbZMWiDPyxvk/eeNwIRJAhfzesiGUiLozX6CRy3rwC1ZOPV\\n' +\n      'AcQf0LB+O8wY88C/cV+d4Q2nBDmnk+Vx7o2MyMh343r5rR3Na+4izd89tkQVt0WW\\n' +\n      'vO21KRH5i8EuBjinboOwAwu6IJ+HyiQiM0VjgjrmEr/YzFPL8MgHD/YUHehqjACn\\n' +\n      'C0+B7/gu7W4qJzBL2DOf7ub2qszGtwPE+qQzkCRDwE1A4AJmVE++/FLH2Zx78Egg\\n' +\n      'fV1sUxPtYgjGH76VyyO6GNKM6rAUMD/q5mnPASQVIXgKbupr618bnH+SWHFjBqZq\\n' +\n      'HvDGPMtiiWII41EmGUypyt5AbysCAwEAAaNmMGQwDgYDVR0PAQH/BAQDAgEGMBIG\\n' +\n      'A1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFIiKM0Q6n1K4EmLxs3ZXxINbwEwR\\n' +\n      'MB8GA1UdIwQYMBaAFE4C7qw+9hXITO0s9QXBj5yECEmDMA0GCSqGSIb3DQEBBQUA\\n' +\n      'A4IBAQBezGbE9Rw/k2e25iGjj5n8r+M3dlye8ORfCE/dijHtxqAKasXHgKX8I9Tw\\n' +\n      'JkBiGWiuzqn7gO5MJ0nMMro1+gq29qjZnYX1pDHPgsRjUX8R+juRhgJ3JSHijRbf\\n' +\n      '4qNJrnwga7pj94MhcLq9u0f6dxH6dXbyMv21T4TZMTmcFduf1KgaiVx1PEyJjC6r\\n' +\n      'M+Ru+A0eM+jJ7uCjUoZKcpX8xkj4nmSnz9NMPog3wdOSB9cAW7XIc5mHa656wr7I\\n' +\n      'WJxVcYNHTXIjCcng2zMKd1aCcl2KSFfy56sRfT7J5Wp69QSr+jq8KM55gw8uqAwi\\n' +\n      'VPrXn2899T1rcTtFYFP16WXjGuc0\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIEATCCAumgAwIBAgIBRTANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\\n' +\n      'EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\\n' +\n      'GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\\n' +\n      'GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMjAzMTlaFw0y\\n' +\n      'MDAzMDUyMjAzMTlaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\\n' +\n      'bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\\n' +\n      'cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1hem9uIFJE\\n' +\n      'UyBhcC1zb3V0aGVhc3QtMSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\\n' +\n      'ggEBANaXElmSEYt/UtxHFsARFhSUahTf1KNJzR0Dmay6hqOXQuRVbKRwPd19u5vx\\n' +\n      'DdF1sLT7D69IK3VDnUiQScaCv2Dpu9foZt+rLx+cpx1qiQd1UHrvqq8xPzQOqCdC\\n' +\n      'RFStq6yVYZ69yfpfoI67AjclMOjl2Vph3ftVnqP0IgVKZdzeC7fd+umGgR9xY0Qr\\n' +\n      'Ubhd/lWdsbNvzK3f1TPWcfIKQnpvSt85PIEDJir6/nuJUKMtmJRwTymJf0i+JZ4x\\n' +\n      '7dJa341p2kHKcHMgOPW7nJQklGBA70ytjUV6/qebS3yIugr/28mwReflg3TJzVDl\\n' +\n      'EOvi6pqbqNbkMuEwGDCmEQIVqgkCAwEAAaNmMGQwDgYDVR0PAQH/BAQDAgEGMBIG\\n' +\n      'A1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFAu93/4k5xbWOsgdCdn+/KdiRuit\\n' +\n      'MB8GA1UdIwQYMBaAFE4C7qw+9hXITO0s9QXBj5yECEmDMA0GCSqGSIb3DQEBBQUA\\n' +\n      'A4IBAQBlcjSyscpPjf5+MgzMuAsCxByqUt+WFspwcMCpwdaBeHOPSQrXNqX2Sk6P\\n' +\n      'kth6oCivA64trWo8tFMvPYlUA1FYVD5WpN0kCK+P5pD4KHlaDsXhuhClJzp/OP8t\\n' +\n      'pOyUr5109RHLxqoKB5J5m1XA7rgcFjnMxwBSWFe3/4uMk/+4T53YfCVXuc6QV3i7\\n' +\n      'I/2LAJwFf//pTtt6fZenYfCsahnr2nvrNRNyAxcfvGZ/4Opn/mJtR6R/AjvQZHiR\\n' +\n      'bkRNKF2GW0ueK5W4FkZVZVhhX9xh1Aj2Ollb+lbOqADaVj+AT3PoJPZ3MPQHKCXm\\n' +\n      'xwG0LOLlRr/TfD6li1AfOVTAJXv9\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIEATCCAumgAwIBAgIBRjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\\n' +\n      'EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\\n' +\n      'GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\\n' +\n      'GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMjAzMjRaFw0y\\n' +\n      'MDAzMDUyMjAzMjRaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\\n' +\n      'bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\\n' +\n      'cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1hem9uIFJE\\n' +\n      'UyBhcC1zb3V0aGVhc3QtMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\\n' +\n      'ggEBAJqBAJutz69hFOh3BtLHZTbwE8eejGGKayn9hu98YMDPzWzGXWCmW+ZYWELA\\n' +\n      'cY3cNWNF8K4FqKXFr2ssorBYim1UtYFX8yhydT2hMD5zgQ2sCGUpuidijuPA6zaq\\n' +\n      'Z3tdhVR94f0q8mpwpv2zqR9PcqaGDx2VR1x773FupRPRo7mEW1vC3IptHCQlP/zE\\n' +\n      '7jQiLl28bDIH2567xg7e7E9WnZToRnhlYdTaDaJsHTzi5mwILi4cihSok7Shv/ME\\n' +\n      'hnukvxeSPUpaVtFaBhfBqq055ePq9I+Ns4KGreTKMhU0O9fkkaBaBmPaFgmeX/XO\\n' +\n      'n2AX7gMouo3mtv34iDTZ0h6YCGkCAwEAAaNmMGQwDgYDVR0PAQH/BAQDAgEGMBIG\\n' +\n      'A1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFIlQnY0KHYWn1jYumSdJYfwj/Nfw\\n' +\n      'MB8GA1UdIwQYMBaAFE4C7qw+9hXITO0s9QXBj5yECEmDMA0GCSqGSIb3DQEBBQUA\\n' +\n      'A4IBAQA0wVU6/l41cTzHc4azc4CDYY2Wd90DFWiH9C/mw0SgToYfCJ/5Cfi0NT/Y\\n' +\n      'PRnk3GchychCJgoPA/k9d0//IhYEAIiIDjyFVgjbTkKV3sh4RbdldKVOUB9kumz/\\n' +\n      'ZpShplsGt3z4QQiVnKfrAgqxWDjR0I0pQKkxXa6Sjkicos9LQxVtJ0XA4ieG1E7z\\n' +\n      'zJr+6t80wmzxvkInSaWP3xNJK9azVRTrgQZQlvkbpDbExl4mNTG66VD3bAp6t3Wa\\n' +\n      'B49//uDdfZmPkqqbX+hsxp160OH0rxJppwO3Bh869PkDnaPEd/Pxw7PawC+li0gi\\n' +\n      'NRV8iCEx85aFxcyOhqn0WZOasxee\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIID/zCCAuegAwIBAgIBRzANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\\n' +\n      'EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\\n' +\n      'GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\\n' +\n      'GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMjAzMzFaFw0y\\n' +\n      'MDAzMDUyMjAzMzFaMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\\n' +\n      'bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\\n' +\n      'cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEjMCEGA1UEAwwaQW1hem9uIFJE\\n' +\n      'UyBldS1jZW50cmFsLTEgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB\\n' +\n      'AQDFtP2dhSLuaPOI4ZrrPWsK4OY9ocQBp3yApH1KJYmI9wpQKZG/KCH2E6Oo7JAw\\n' +\n      'QORU519r033T+FO2Z7pFPlmz1yrxGXyHpJs8ySx3Yo5S8ncDCdZJCLmtPiq/hahg\\n' +\n      '5/0ffexMFUCQaYicFZsrJ/cStdxUV+tSw2JQLD7UxS9J97LQWUPyyG+ZrjYVTVq+\\n' +\n      'zudnFmNSe4QoecXMhAFTGJFQXxP7nhSL9Ao5FGgdXy7/JWeWdQIAj8ku6cBDKPa6\\n' +\n      'Y6kP+ak+In+Lye8z9qsCD/afUozfWjPR2aA4JoIZVF8dNRShIMo8l0XfgfM2q0+n\\n' +\n      'ApZWZ+BjhIO5XuoUgHS3D2YFAgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNV\\n' +\n      'HRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBRm4GsWIA/M6q+tK8WGHWDGh2gcyTAf\\n' +\n      'BgNVHSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQUFAAOC\\n' +\n      'AQEAHpMmeVQNqcxgfQdbDIi5UIy+E7zZykmtAygN1XQrvga9nXTis4kOTN6g5/+g\\n' +\n      'HCx7jIXeNJzAbvg8XFqBN84Quqgpl/tQkbpco9Jh1HDs558D5NnZQxNqH5qXQ3Mm\\n' +\n      'uPgCw0pYcPOa7bhs07i+MdVwPBsX27CFDtsgAIru8HvKxY1oTZrWnyIRo93tt/pk\\n' +\n      'WuItVMVHjaQZVfTCow0aDUbte6Vlw82KjUFq+n2NMSCJDiDKsDDHT6BJc4AJHIq3\\n' +\n      '/4Z52MSC9KMr0yAaaoWfW/yMEj9LliQauAgwVjArF4q78rxpfKTG9Rfd8U1BZANP\\n' +\n      '7FrFMN0ThjfA1IvmOYcgskY5bQ==\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIID/DCCAuSgAwIBAgIBSDANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\\n' +\n      'EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\\n' +\n      'GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\\n' +\n      'GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMjAzMzVaFw0y\\n' +\n      'MDAzMDUyMjAzMzVaMIGPMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\\n' +\n      'bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\\n' +\n      'cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJE\\n' +\n      'UyBldS13ZXN0LTEgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx\\n' +\n      'PdbqQ0HKRj79Pmocxvjc+P6i4Ux24kgFIl+ckiir1vzkmesc3a58gjrMlCksEObt\\n' +\n      'Yihs5IhzEq1ePT0gbfS9GYFp34Uj/MtPwlrfCBWG4d2TcrsKRHr1/EXUYhWqmdrb\\n' +\n      'RhX8XqoRhVkbF/auzFSBhTzcGGvZpQ2KIaxRcQfcXlMVhj/pxxAjh8U4F350Fb0h\\n' +\n      'nX1jw4/KvEreBL0Xb2lnlGTkwVxaKGSgXEnOgIyOFdOQc61vdome0+eeZsP4jqeR\\n' +\n      'TGYJA9izJsRbe2YJxHuazD+548hsPlM3vFzKKEVURCha466rAaYAHy3rKur3HYQx\\n' +\n      'Yt+SoKcEz9PXuSGj96ejAgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB\\n' +\n      'Af8ECDAGAQH/AgEAMB0GA1UdDgQWBBTebg//h2oeXbZjQ4uuoiuLYzuiPDAfBgNV\\n' +\n      'HSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQUFAAOCAQEA\\n' +\n      'TikPaGeZasTPw+4RBemlsyPAjtFFQLo7ddaFdORLgdEysVf8aBqndvbA6MT/v4lj\\n' +\n      'GtEtUdF59ZcbWOrVm+fBZ2h/jYJ59dYF/xzb09nyRbdMSzB9+mkSsnOMqluq5y8o\\n' +\n      'DY/PfP2vGhEg/2ZncRC7nlQU1Dm8F4lFWEiQ2fi7O1cW852Vmbq61RIfcYsH/9Ma\\n' +\n      'kpgk10VZ75b8m3UhmpZ/2uRY+JEHImH5WpcTJ7wNiPNJsciZMznGtrgOnPzYco8L\\n' +\n      'cDleOASIZifNMQi9PKOJKvi0ITz0B/imr8KBsW0YjZVJ54HMa7W1lwugSM7aMAs+\\n' +\n      'E3Sd5lS+SHwWaOCHwhOEVA==\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIID/DCCAuSgAwIBAgIBSTANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\\n' +\n      'EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\\n' +\n      'GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\\n' +\n      'GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMjAzNDBaFw0y\\n' +\n      'MDAzMDUyMjAzNDBaMIGPMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\\n' +\n      'bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\\n' +\n      'cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJE\\n' +\n      'UyBzYS1lYXN0LTEgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCU\\n' +\n      'X4OBnQ5xA6TLJAiFEI6l7bUWjoVJBa/VbMdCCSs2i2dOKmqUaXu2ix2zcPILj3lZ\\n' +\n      'GMk3d/2zvTK/cKhcFrewHUBamTeVHdEmynhMQamqNmkM4ptYzFcvEUw1TGxHT4pV\\n' +\n      'Q6gSN7+/AJewQvyHexHo8D0+LDN0/Wa9mRm4ixCYH2CyYYJNKaZt9+EZfNu+PPS4\\n' +\n      '8iB0TWH0DgQkbWMBfCRgolLLitAZklZ4dvdlEBS7evN1/7ttBxUK6SvkeeSx3zBl\\n' +\n      'ww3BlXqc3bvTQL0A+RRysaVyFbvtp9domFaDKZCpMmDFAN/ntx215xmQdrSt+K3F\\n' +\n      'cXdGQYHx5q410CAclGnbAgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB\\n' +\n      'Af8ECDAGAQH/AgEAMB0GA1UdDgQWBBT6iVWnm/uakS+tEX2mzIfw+8JL0zAfBgNV\\n' +\n      'HSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQUFAAOCAQEA\\n' +\n      'FmDD+QuDklXn2EgShwQxV13+txPRuVdOSrutHhoCgMwFWCMtPPtBAKs6KPY7Guvw\\n' +\n      'DpJoZSehDiOfsgMirjOWjvfkeWSNvKfjWTVneX7pZD9W5WPnsDBvTbCGezm+v87z\\n' +\n      'b+ZM2ZMo98m/wkMcIEAgdSKilR2fuw8rLkAjhYFfs0A7tDgZ9noKwgHvoE4dsrI0\\n' +\n      'KZYco6DlP/brASfHTPa2puBLN9McK3v+h0JaSqqm5Ro2Bh56tZkQh8AWy/miuDuK\\n' +\n      '3+hNEVdxosxlkM1TPa1DGj0EzzK0yoeerXuH2HX7LlCrrxf6/wdKnjR12PMrLQ4A\\n' +\n      'pCqkcWw894z6bV9MAvKe6A==\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIID/DCCAuSgAwIBAgIBQzANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\\n' +\n      'EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\\n' +\n      'GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\\n' +\n      'GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMTU0MDRaFw0y\\n' +\n      'MDAzMDUyMTU0MDRaMIGPMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\\n' +\n      'bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\\n' +\n      'cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJE\\n' +\n      'UyB1cy1lYXN0LTEgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDI\\n' +\n      'UIuwh8NusKHk1SqPXcP7OqxY3S/M2ZyQWD3w7Bfihpyyy/fc1w0/suIpX3kbMhAV\\n' +\n      '2ESwged2/2zSx4pVnjp/493r4luhSqQYzru78TuPt9bhJIJ51WXunZW2SWkisSaf\\n' +\n      'USYUzVN9ezR/bjXTumSUQaLIouJt3OHLX49s+3NAbUyOI8EdvgBQWD68H1epsC0n\\n' +\n      'CI5s+pIktyOZ59c4DCDLQcXErQ+tNbDC++oct1ANd/q8p9URonYwGCGOBy7sbCYq\\n' +\n      '9eVHh1Iy2M+SNXddVOGw5EuruvHoCIQyOz5Lz4zSuZA9dRbrfztNOpezCNYu6NKM\\n' +\n      'n+hzcvdiyxv77uNm8EaxAgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB\\n' +\n      'Af8ECDAGAQH/AgEAMB0GA1UdDgQWBBQSQG3TmMe6Sa3KufaPBa72v4QFDzAfBgNV\\n' +\n      'HSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQUFAAOCAQEA\\n' +\n      'L/mOZfB3187xTmjOHMqN2G2oSKHBKiQLM9uv8+97qT+XR+TVsBT6b3yoPpMAGhHA\\n' +\n      'Pc7nxAF5gPpuzatx0OTLPcmYucFmfqT/1qA5WlgCnMNtczyNMH97lKFTNV7Njtek\\n' +\n      'jWEzAEQSyEWrkNpNlC4j6kMYyPzVXQeXUeZTgJ9FNnVZqmvfjip2N22tawMjrCn5\\n' +\n      '7KN/zN65EwY2oO9XsaTwwWmBu3NrDdMbzJnbxoWcFWj4RBwanR1XjQOVNhDwmCOl\\n' +\n      '/1Et13b8CPyj69PC8BOVU6cfTSx8WUVy0qvYOKHNY9Bqa5BDnIL3IVmUkeTlM1mt\\n' +\n      'enRpyBj+Bk9rh/ICdiRKmA==\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIID/DCCAuSgAwIBAgIBSjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\\n' +\n      'EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\\n' +\n      'GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\\n' +\n      'GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMjAzNDVaFw0y\\n' +\n      'MDAzMDUyMjAzNDVaMIGPMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\\n' +\n      'bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\\n' +\n      'cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJE\\n' +\n      'UyB1cy13ZXN0LTEgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDE\\n' +\n      'Dhw+uw/ycaiIhhyu2pXFRimq0DlB8cNtIe8hdqndH8TV/TFrljNgR8QdzOgZtZ9C\\n' +\n      'zzQ2GRpInN/qJF6slEd6wO+6TaDBQkPY+07TXNt52POFUhdVkhJXHpE2BS7Xn6J7\\n' +\n      '7RFAOeG1IZmc2DDt+sR1BgXzUqHslQGfFYNS0/MBO4P+ya6W7IhruB1qfa4HiYQS\\n' +\n      'dbe4MvGWnv0UzwAqdR7OF8+8/5c58YXZIXCO9riYF2ql6KNSL5cyDPcYK5VK0+Q9\\n' +\n      'VI6vuJHSMYcF7wLePw8jtBktqAFE/wbdZiIHhZvNyiNWPPNTGUmQbaJ+TzQEHDs5\\n' +\n      '8en+/W7JKnPyBOkxxENbAgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB\\n' +\n      'Af8ECDAGAQH/AgEAMB0GA1UdDgQWBBS0nw/tFR9bCjgqWTPJkyy4oOD8bzAfBgNV\\n' +\n      'HSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQUFAAOCAQEA\\n' +\n      'CXGAY3feAak6lHdqj6+YWjy6yyUnLK37bRxZDsyDVXrPRQaXRzPTzx79jvDwEb/H\\n' +\n      'Q/bdQ7zQRWqJcbivQlwhuPJ4kWPUZgSt3JUUuqkMsDzsvj/bwIjlrEFDOdHGh0mi\\n' +\n      'eVIngFEjUXjMh+5aHPEF9BlQnB8LfVtKj18e15UDTXFa+xJPFxUR7wDzCfo4WI1m\\n' +\n      'sUMG4q1FkGAZgsoyFPZfF8IVvgCuGdR8z30VWKklFxttlK0eGLlPAyIO0CQxPQlo\\n' +\n      'saNJrHf4tLOgZIWk+LpDhNd9Et5EzvJ3aURUsKY4pISPPF5WdvM9OE59bERwUErd\\n' +\n      'nuOuQWQeeadMceZnauRzJQ==\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIID/DCCAuSgAwIBAgIBSzANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\\n' +\n      'EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\\n' +\n      'GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\\n' +\n      'GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMjAzNTBaFw0y\\n' +\n      'MDAzMDUyMjAzNTBaMIGPMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\\n' +\n      'bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\\n' +\n      'cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJE\\n' +\n      'UyB1cy13ZXN0LTIgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDM\\n' +\n      'H58SR48U6jyERC1vYTnub34smf5EQVXyzaTmspWGWGzT31NLNZGSDFaa7yef9kdO\\n' +\n      'mzJsgebR5tXq6LdwlIoWkKYQ7ycUaadtVKVYdI40QcI3cHn0qLFlg2iBXmWp/B+i\\n' +\n      'Z34VuVlCh31Uj5WmhaBoz8t/GRqh1V/aCsf3Wc6jCezH3QfuCjBpzxdOOHN6Ie2v\\n' +\n      'xX09O5qmZTvMoRBAvPkxdaPg/Mi7fxueWTbEVk78kuFbF1jHYw8U1BLILIAhcqlq\\n' +\n      'x4u8nl73t3O3l/soNUcIwUDK0/S+Kfqhwn9yQyPlhb4Wy3pfnZLJdkyHldktnQav\\n' +\n      '9TB9u7KH5Lk0aAYslMLxAgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB\\n' +\n      'Af8ECDAGAQH/AgEAMB0GA1UdDgQWBBT8roM4lRnlFHWMPWRz0zkwFZog1jAfBgNV\\n' +\n      'HSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQUFAAOCAQEA\\n' +\n      'JwrxwgwmPtcdaU7O7WDdYa4hprpOMamI49NDzmE0s10oGrqmLwZygcWU0jT+fJ+Y\\n' +\n      'pJe1w0CVfKaeLYNsOBVW3X4ZPmffYfWBheZiaiEflq/P6t7/Eg81gaKYnZ/x1Dfa\\n' +\n      'sUYkzPvCkXe9wEz5zdUTOCptDt89rBR9CstL9vE7WYUgiVVmBJffWbHQLtfjv6OF\\n' +\n      'NMb0QME981kGRzc2WhgP71YS2hHd1kXtsoYP1yTu4vThSKsoN4bkiHsaC1cRkLoy\\n' +\n      '0fFA4wpB3WloMEvCDaUvvH1LZlBXTNlwi9KtcwD4tDxkkBt4tQczKLGpQ/nF/W9n\\n' +\n      '8YDWk3IIc1sd0bkZqoau2Q==\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIEATCCAumgAwIBAgIBTDANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\\n' +\n      'EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\\n' +\n      'GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\\n' +\n      'GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTExMDYwMDA1NDZaFw0y\\n' +\n      'MDAzMDUwMDA1NDZaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\\n' +\n      'bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\\n' +\n      'cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1hem9uIFJE\\n' +\n      'UyBhcC1ub3J0aGVhc3QtMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\\n' +\n      'ggEBAKSwd+RVUzTRH0FgnbwoTK8TMm/zMT4+2BvALpAUe6YXbkisg2goycWuuWLg\\n' +\n      'jOpFBB3GtyvXZnkqi7MkDWUmj1a2kf8l2oLyoaZ+Hm9x/sV+IJzOqPvj1XVUGjP6\\n' +\n      'yYYnPJmUYqvZeI7fEkIGdFkP2m4/sgsSGsFvpD9FK1bL1Kx2UDpYX0kHTtr18Zm/\\n' +\n      '1oN6irqWALSmXMDydb8hE0FB2A1VFyeKE6PnoDj/Y5cPHwPPdEi6/3gkDkSaOG30\\n' +\n      'rWeQfL3pOcKqzbHaWTxMphd0DSL/quZ64Nr+Ly65Q5PRcTrtr55ekOUziuqXwk+o\\n' +\n      '9QpACMwcJ7ROqOznZTqTzSFVXFECAwEAAaNmMGQwDgYDVR0PAQH/BAQDAgEGMBIG\\n' +\n      'A1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFM6Nox/QWbhzWVvzoJ/y0kGpNPK+\\n' +\n      'MB8GA1UdIwQYMBaAFE4C7qw+9hXITO0s9QXBj5yECEmDMA0GCSqGSIb3DQEBBQUA\\n' +\n      'A4IBAQCTkWBqNvyRf3Y/W21DwFx3oT/AIWrHt0BdGZO34tavummXemTH9LZ/mqv9\\n' +\n      'aljt6ZuDtf5DEQjdsAwXMsyo03ffnP7doWm8iaF1+Mui77ot0TmTsP/deyGwukvJ\\n' +\n      'tkxX8bZjDh+EaNauWKr+CYnniNxCQLfFtXYJsfOdVBzK3xNL+Z3ucOQRhr2helWc\\n' +\n      'CDQgwfhP1+3pRVKqHvWCPC4R3fT7RZHuRmZ38kndv476GxRntejh+ePffif78bFI\\n' +\n      '3rIZCPBGobrrUMycafSbyXteoGca/kA+/IqrAPlk0pWQ4aEL0yTWN2h2dnjoD7oX\\n' +\n      'byIuL/g9AGRh97+ssn7D6bDRPTbW\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIID/TCCAuWgAwIBAgIBTTANBgkqhkiG9w0BAQsFADCBijELMAkGA1UEBhMCVVMx\\n' +\n      'EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\\n' +\n      'GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\\n' +\n      'GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNjA1MDMyMTI5MjJaFw0y\\n' +\n      'MDAzMDUyMTI5MjJaMIGQMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\\n' +\n      'bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\\n' +\n      'cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEhMB8GA1UEAwwYQW1hem9uIFJE\\n' +\n      'UyBhcC1zb3V0aC0xIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\\n' +\n      '06eWGLE0TeqL9kyWOLkS8q0fXO97z+xyBV3DKSB2lg2GkgBz3B98MkmkeB0SZy3G\\n' +\n      'Ce4uCpCPbFKiFEdiUclOlhZsrBuCeaimxLM3Ig2wuenElO/7TqgaYHYUbT3d+VQW\\n' +\n      'GUbLn5GRZJZe1OAClYdOWm7A1CKpuo+cVV1vxbY2nGUQSJPpVn2sT9gnwvjdE60U\\n' +\n      'JGYU/RLCTm8zmZBvlWaNIeKDnreIc4rKn6gUnJ2cQn1ryCVleEeyc3xjYDSrjgdn\\n' +\n      'FLYGcp9mphqVT0byeQMOk0c7RHpxrCSA0V5V6/CreFV2LteK50qcDQzDSM18vWP/\\n' +\n      'p09FoN8O7QrtOeZJzH/lmwIDAQABo2YwZDAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0T\\n' +\n      'AQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU2i83QHuEl/d0keXF+69HNJph7cMwHwYD\\n' +\n      'VR0jBBgwFoAUTgLurD72FchM7Sz1BcGPnIQISYMwDQYJKoZIhvcNAQELBQADggEB\\n' +\n      'ACqnH2VjApoDqoSQOky52QBwsGaj+xWYHW5Gm7EvCqvQuhWMkeBuD6YJmMvNyA9G\\n' +\n      'I2lh6/o+sUk/RIsbYbxPRdhNPTOgDR9zsNRw6qxaHztq/CEC+mxDCLa3O1hHBaDV\\n' +\n      'BmB3nCZb93BvO0EQSEk7aytKq/f+sjyxqOcs385gintdHGU9uM7gTZHnU9vByJsm\\n' +\n      '/TL07Miq67X0NlhIoo3jAk+xHaeKJdxdKATQp0448P5cY20q4b8aMk1twcNaMvCP\\n' +\n      'dG4M5doaoUA8OQ/0ukLLae/LBxLeTw04q1/a2SyFaVUX2Twbb1S3xVWwLA8vsyGr\\n' +\n      'igXx7B5GgP+IHb6DTjPJAi0=\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIID/DCCAuSgAwIBAgIBTjANBgkqhkiG9w0BAQsFADCBijELMAkGA1UEBhMCVVMx\\n' +\n      'EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\\n' +\n      'GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\\n' +\n      'GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNjA4MTExOTU4NDVaFw0y\\n' +\n      'MDAzMDUxOTU4NDVaMIGPMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\\n' +\n      'bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\\n' +\n      'cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJE\\n' +\n      'UyB1cy1lYXN0LTIgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCp\\n' +\n      'WnnUX7wM0zzstccX+4iXKJa9GR0a2PpvB1paEX4QRCgfhEdQWDaSqyrWNgdVCKkt\\n' +\n      '1aQkWu5j6VAC2XIG7kKoonm1ZdBVyBLqW5lXNywlaiU9yhJkwo8BR+/OqgE+PLt/\\n' +\n      'EO1mlN0PQudja/XkExCXTO29TG2j7F/O7hox6vTyHNHc0H88zS21uPuBE+jivViS\\n' +\n      'yzj/BkyoQ85hnkues3f9R6gCGdc+J51JbZnmgzUkvXjAEuKhAm9JksVOxcOKUYe5\\n' +\n      'ERhn0U9zjzpfbAITIkul97VVa5IxskFFTHIPJbvRKHJkiF6wTJww/tc9wm+fSCJ1\\n' +\n      '+DbQTGZgkQ3bJrqRN29/AgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB\\n' +\n      'Af8ECDAGAQH/AgEAMB0GA1UdDgQWBBSAHQzUYYZbepwKEMvGdHp8wzHnfDAfBgNV\\n' +\n      'HSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQsFAAOCAQEA\\n' +\n      'MbaEzSYZ+aZeTBxf8yi0ta8K4RdwEJsEmP6IhFFQHYUtva2Cynl4Q9tZg3RMsybT\\n' +\n      '9mlnSQQlbN/wqIIXbkrcgFcHoXG9Odm/bDtUwwwDaiEhXVfeQom3G77QHOWMTCGK\\n' +\n      'qadwuh5msrb17JdXZoXr4PYHDKP7j0ONfAyFNER2+uecblHfRSpVq5UeF3L6ZJb8\\n' +\n      'fSw/GtAV6an+/0r+Qm+PiI2H5XuZ4GmRJYnGMhqWhBYrY7p3jtVnKcsh39wgfUnW\\n' +\n      'AvZEZG/yhFyAZW0Essa39LiL5VSq14Y1DOj0wgnhSY/9WHxaAo1HB1T9OeZknYbD\\n' +\n      'fl/EGSZ0TEvZkENrXcPlVA==\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIID/zCCAuegAwIBAgIBTzANBgkqhkiG9w0BAQsFADCBijELMAkGA1UEBhMCVVMx\\n' +\n      'EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\\n' +\n      'GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\\n' +\n      'GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNjA5MTUwMDEwMTFaFw0y\\n' +\n      'MDAzMDUwMDEwMTFaMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\\n' +\n      'bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\\n' +\n      'cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEjMCEGA1UEAwwaQW1hem9uIFJE\\n' +\n      'UyBjYS1jZW50cmFsLTEgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB\\n' +\n      'AQCZYI/iQ6DrS3ny3t1EwX1wAD+3LMgh7Fd01EW5LIuaK2kYIIQpsVKhxLCit/V5\\n' +\n      'AGc/1qiJS1Qz9ODLTh0Na6bZW6EakRzuHJLe32KJtoFYPC7Z09UqzXrpA/XL+1hM\\n' +\n      'P0ZmCWsU7Nn/EmvfBp9zX3dZp6P6ATrvDuYaVFr+SA7aT3FXpBroqBS1fyzUPs+W\\n' +\n      'c6zTR6+yc4zkHX0XQxC5RH6xjgpeRkoOajA/sNo7AQF7KlWmKHbdVF44cvvAhRKZ\\n' +\n      'XaoVs/C4GjkaAEPTCbopYdhzg+KLx9eB2BQnYLRrIOQZtRfbQI2Nbj7p3VsRuOW1\\n' +\n      'tlcks2w1Gb0YC6w6SuIMFkl1AgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNV\\n' +\n      'HRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBToYWxE1lawl6Ks6NsvpbHQ3GKEtzAf\\n' +\n      'BgNVHSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQsFAAOC\\n' +\n      'AQEAG/8tQ0ooi3hoQpa5EJz0/E5VYBsAz3YxA2HoIonn0jJyG16bzB4yZt4vNQMA\\n' +\n      'KsNlQ1uwDWYL1nz63axieUUFIxqxl1KmwfhsmLgZ0Hd2mnTPIl2Hw3uj5+wdgGBg\\n' +\n      'agnAZ0bajsBYgD2VGQbqjdk2Qn7Fjy3LEWIvGZx4KyZ99OJ2QxB7JOPdauURAtWA\\n' +\n      'DKYkP4LLJxtj07DSzG8kuRWb9B47uqUD+eKDIyjfjbnzGtd9HqqzYFau7EX3HVD9\\n' +\n      '9Qhnjl7bTZ6YfAEZ3nH2t3Vc0z76XfGh47rd0pNRhMV+xpok75asKf/lNh5mcUrr\\n' +\n      'VKwflyMkQpSbDCmcdJ90N2xEXQ==\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIID/DCCAuSgAwIBAgIBUDANBgkqhkiG9w0BAQsFADCBijELMAkGA1UEBhMCVVMx\\n' +\n      'EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\\n' +\n      'GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\\n' +\n      'GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNjEwMTAxNzQ0NDJaFw0y\\n' +\n      'MDAzMDUxNzQ0NDJaMIGPMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\\n' +\n      'bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\\n' +\n      'cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJE\\n' +\n      'UyBldS13ZXN0LTIgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDO\\n' +\n      'cttLJfubB4XMMIGWNfJISkIdCMGJyOzLiMJaiWB5GYoXKhEl7YGotpy0qklwW3BQ\\n' +\n      'a0fmVdcCLX+dIuVQ9iFK+ZcK7zwm7HtdDTCHOCKeOh2IcnU4c/VIokFi6Gn8udM6\\n' +\n      'N/Zi5M5OGpVwLVALQU7Yctsn3c95el6MdVx6mJiIPVu7tCVZn88Z2koBQ2gq9P4O\\n' +\n      'Sb249SHFqOb03lYDsaqy1NDsznEOhaRBw7DPJFpvmw1lA3/Y6qrExRI06H2VYR2i\\n' +\n      '7qxwDV50N58fs10n7Ye1IOxTVJsgEA7X6EkRRXqYaM39Z76R894548WHfwXWjUsi\\n' +\n      'MEX0RS0/t1GmnUQjvevDAgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB\\n' +\n      'Af8ECDAGAQH/AgEAMB0GA1UdDgQWBBQBxmcuRSxERYCtNnSr5xNfySokHjAfBgNV\\n' +\n      'HSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQsFAAOCAQEA\\n' +\n      'UyCUQjsF3nUAABjfEZmpksTuUo07aT3KGYt+EMMFdejnBQ0+2lJJFGtT+CDAk1SD\\n' +\n      'RSgfEBon5vvKEtlnTf9a3pv8WXOAkhfxnryr9FH6NiB8obISHNQNPHn0ljT2/T+I\\n' +\n      'Y6ytfRvKHa0cu3V0NXbJm2B4KEOt4QCDiFxUIX9z6eB4Kditwu05OgQh6KcogOiP\\n' +\n      'JesWxBMXXGoDC1rIYTFO7szwDyOHlCcVXJDNsTJhc32oDWYdeIbW7o/5I+aQsrXZ\\n' +\n      'C96HykZcgWzz6sElrQxUaT3IoMw/5nmw4uWKKnZnxgI9bY4fpQwMeBZ96iHfFxvH\\n' +\n      'mqfEEuC7uUoPofXdBp2ObQ==\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIID/DCCAuSgAwIBAgIBUTANBgkqhkiG9w0BAQsFADCBijELMAkGA1UEBhMCVVMx\\n' +\n      'EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\\n' +\n      'GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\\n' +\n      'GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNzA4MjUyMTM5MjZaFw0y\\n' +\n      'MDAzMDUyMTM5MjZaMIGPMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\\n' +\n      'bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\\n' +\n      'cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJE\\n' +\n      'UyBldS13ZXN0LTMgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+\\n' +\n      'xmlEC/3a4cJH+UPwXCE02lC7Zq5NHd0dn6peMeLN8agb6jW4VfSY0NydjRj2DJZ8\\n' +\n      'K7wV6sub5NUGT1NuFmvSmdbNR2T59KX0p2dVvxmXHHtIpQ9Y8Aq3ZfhmC5q5Bqgw\\n' +\n      'tMA1xayDi7HmoPX3R8kk9ktAZQf6lDeksCvok8idjTu9tiSpDiMwds5BjMsWfyjZ\\n' +\n      'd13PTGGNHYVdP692BSyXzSP1Vj84nJKnciW8tAqwIiadreJt5oXyrCXi8ekUMs80\\n' +\n      'cUTuGm3aA3Q7PB5ljJMPqz0eVddaiIvmTJ9O3Ez3Du/HpImyMzXjkFaf+oNXf/Hx\\n' +\n      '/EW5jCRR6vEiXJcDRDS7AgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB\\n' +\n      'Af8ECDAGAQH/AgEAMB0GA1UdDgQWBBRZ9mRtS5fHk3ZKhG20Oack4cAqMTAfBgNV\\n' +\n      'HSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQsFAAOCAQEA\\n' +\n      'F/u/9L6ExQwD73F/bhCw7PWcwwqsK1mypIdrjdIsu0JSgwWwGCXmrIspA3n3Dqxq\\n' +\n      'sMhAJD88s9Em7337t+naar2VyLO63MGwjj+vA4mtvQRKq8ScIpiEc7xN6g8HUMsd\\n' +\n      'gPG9lBGfNjuAZsrGJflrko4HyuSM7zHExMjXLH+CXcv/m3lWOZwnIvlVMa4x0Tz0\\n' +\n      'A4fklaawryngzeEjuW6zOiYCzjZtPlP8Fw0SpzppJ8VpQfrZ751RDo4yudmPqoPK\\n' +\n      '5EUe36L8U+oYBXnC5TlYs9bpVv9o5wJQI5qA9oQE2eFWxF1E0AyZ4V5sgGUBStaX\\n' +\n      'BjDDWul0wSo7rt1Tq7XpnA==\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIEATCCAumgAwIBAgIBTjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\\n' +\n      'EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\\n' +\n      'GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\\n' +\n      'GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNzEyMDEwMDU1NDJaFw0y\\n' +\n      'MDAzMDUwMDU1NDJaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\\n' +\n      'bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\\n' +\n      'cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1hem9uIFJE\\n' +\n      'UyBhcC1ub3J0aGVhc3QtMyBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\\n' +\n      'ggEBAMZtQNnm/XT19mTa10ftHLzg5UhajoI65JHv4TQNdGXdsv+CQdGYU49BJ9Eu\\n' +\n      '3bYgiEtTzR2lQe9zGMvtuJobLhOWuavzp7IixoIQcHkFHN6wJ1CvqrxgvJfBq6Hy\\n' +\n      'EuCDCiU+PPDLUNA6XM6Qx3IpHd1wrJkjRB80dhmMSpxmRmx849uFafhN+P1QybsM\\n' +\n      'TI0o48VON2+vj+mNuQTyLMMP8D4odSQHjaoG+zyJfJGZeAyqQyoOUOFEyQaHC3TT\\n' +\n      '3IDSNCQlpxb9LerbCoKu79WFBBq3CS5cYpg8/fsnV2CniRBFFUumBt5z4dhw9RJU\\n' +\n      'qlUXXO1ZyzpGd+c5v6FtrfXtnIUCAwEAAaNmMGQwDgYDVR0PAQH/BAQDAgEGMBIG\\n' +\n      'A1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFETv7ELNplYy/xTeIOInl6nzeiHg\\n' +\n      'MB8GA1UdIwQYMBaAFE4C7qw+9hXITO0s9QXBj5yECEmDMA0GCSqGSIb3DQEBBQUA\\n' +\n      'A4IBAQCpKxOQcd0tEKb3OtsOY8q/MPwTyustGk2Rt7t9G68idADp8IytB7M0SDRo\\n' +\n      'wWZqynEq7orQVKdVOanhEWksNDzGp0+FPAf/KpVvdYCd7ru3+iI+V4ZEp2JFdjuZ\\n' +\n      'Zz0PIjS6AgsZqE5Ri1J+NmfmjGZCPhsHnGZiBaenX6K5VRwwwmLN6xtoqrrfR5zL\\n' +\n      'QfBeeZNJG6KiM3R/DxJ5rAa6Fz+acrhJ60L7HprhB7SFtj1RCijau3+ZwiGmUOMr\\n' +\n      'yKlMv+VgmzSw7o4Hbxy1WVrA6zQsTHHSGf+vkQn2PHvnFMUEu/ZLbTDYFNmTLK91\\n' +\n      'K6o4nMsEvhBKgo4z7H1EqqxXhvN2\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIEBDCCAuygAwIBAgIBTTANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\\n' +\n      'EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\\n' +\n      'GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\\n' +\n      'GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNzEyMDYyMjQyMjdaFw0y\\n' +\n      'MDAzMDQyMjQyMjdaMIGXMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\\n' +\n      'bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\\n' +\n      'cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEoMCYGA1UEAwwfQW1hem9uIFJE\\n' +\n      'UyBwcmV2aWV3LXVzLWVhc3QtMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC\\n' +\n      'AQoCggEBAMw0E8k8URanS0c/i1S7wzFf5+XC9H2bm+4pENdElGP5s9rVCybrzJaw\\n' +\n      '6zZgVLpOFnS9mJ+sDHIMUexPjj0X4+r7wZ4+hPfy7Rmrgbt23IQwr+PIBxsKAVjj\\n' +\n      'iaQ3bSm5WQ79an5elfQqEDdZ13ckUcLBJDA8bUDthI8m7gnteGtx0M1D0VS5PDs9\\n' +\n      'cf96QlBia9Lx3VcNo3cc0PzP30E4j3h/Ywlb0jXUgB6oVlTxK70BjD3kZa+2xlea\\n' +\n      'vKmm4NqGVhPY7BWd4XNdbSYsPDeZ9HxHNWXZxoHcQ7vSU8RKYVPtoBK/zIp3eWOi\\n' +\n      'gzZlm5vYPvlkYh2pshttPPVyhZqlEZ8CAwEAAaNmMGQwDgYDVR0PAQH/BAQDAgEG\\n' +\n      'MBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFI93K+FRhste6w3MiD+IK3Tc\\n' +\n      'g/BsMB8GA1UdIwQYMBaAFE4C7qw+9hXITO0s9QXBj5yECEmDMA0GCSqGSIb3DQEB\\n' +\n      'BQUAA4IBAQAs4RsC8MJVOvrlRi5sgKC9LJ4BvSrrbR5V8CdIEwlPqrVOSsU5t7Py\\n' +\n      'j8CHoPUY/ya1azlBSO62BqdZxipFuAR06NdxNG2Gy0fGl71N2udxokwEPW+IEZ81\\n' +\n      'G6JeX8HNFjnna8ehimz1VJDDW7qborhg3dCAgEWkgv5PDR9/zoUu6bbmHPV77zbx\\n' +\n      'Gq7Sybz5OiagC7Nj9N1WgjNXUEmlfY2DHXnJmIVgUGEVrBgu5tGcIU/bQCRznH1N\\n' +\n      'JsBH0SalneCbSzMBhQdnzL+L5KOERibWAZvS6ebmomTBwa03kgo/T0DfEccgobTs\\n' +\n      'rV6T9/8Vg9T18vEeqURL+LOGs7+lIKmN\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIID/TCCAuWgAwIBAgIBUjANBgkqhkiG9w0BAQsFADCBijELMAkGA1UEBhMCVVMx\\n' +\n      'EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\\n' +\n      'GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\\n' +\n      'GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xODA5MjgxNzM0NTJaFw0y\\n' +\n      'MDAzMDUxNzM0NTJaMIGQMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\\n' +\n      'bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\\n' +\n      'cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEhMB8GA1UEAwwYQW1hem9uIFJE\\n' +\n      'UyBldS1ub3J0aC0xIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\\n' +\n      'wvHfpoixHNy1jvcq/WNhXDHlsFVbEOX7mp01YQeK0wWqlpFvjs2HFJ1sRnnmyhdT\\n' +\n      'sv4VQuXnQw2V2iFAO2HveDi8pcJ+eIXY+wloSVBytgYLTMcNpn5LmqIeyGO+Lr6p\\n' +\n      'KUr78I4uE0mnabxyILA96CYrYtgwpLCtpEXSdSJPwOSK9nX9++molxLcJ5v4fiPS\\n' +\n      'j46PETsbFoFdXXwYCdiJKpzO4zUAkKzzvzbF7cXg9R4noJuytjEKbluxugDHdnwl\\n' +\n      'SctGZ3moju2I0OpPbJKUI3wHsUMtY5v15X74MOED5lbtaW5+/6JIERggve0b23Ni\\n' +\n      '4nlYSt0Bb3z3Zwc83twCUwIDAQABo2YwZDAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0T\\n' +\n      'AQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU4stOy1OAFRyvZCSKNfCiPRD+rPowHwYD\\n' +\n      'VR0jBBgwFoAUTgLurD72FchM7Sz1BcGPnIQISYMwDQYJKoZIhvcNAQELBQADggEB\\n' +\n      'AHpRIlKh1fqbMHl0+VnJ/52XQy1F5gM2hnw3lYkOLsDyzj9W4V6D1v2EDgYW+ZVH\\n' +\n      '0wWqo8m0jS6CDn14W2HqNlyXyHpJK3eh3088zxvJgKqzKS4ghNzafN7axwYIwRN6\\n' +\n      '9rrhRWy9MaFHaSPKtgiuTxw9fOekqyJdO+OYpBVEp7KEEyEG9/W5xZcU64zGb6UT\\n' +\n      '8/g4+5t+HlT0nYBMvt8HW7w2XbFBetfKKK4WaoPKloOMN+RLO/JgJ6pVWvxM8nhC\\n' +\n      'PbVtr43OI1sQAXYk0an7aUDgXT98vGwovWNHI6lFCMGRG+WXhauLtKRsIr4hR1LV\\n' +\n      'fES7Q9MWPzPYHQoKELF9Jhk=\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIEBzCCAu+gAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwgZQxCzAJBgNVBAYTAlVT\\n' +\n      'MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\\n' +\n      'DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\\n' +\n      'MSUwIwYDVQQDDBxBbWF6b24gUkRTIGFwLWVhc3QtMSBSb290IENBMB4XDTE5MDIx\\n' +\n      'NzAyNDcwMFoXDTIyMDYwMTEyMDAwMFowgY8xCzAJBgNVBAYTAlVTMRMwEQYDVQQI\\n' +\n      'DApXYXNoaW5ndG9uMRAwDgYDVQQHDAdTZWF0dGxlMSIwIAYDVQQKDBlBbWF6b24g\\n' +\n      'V2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMSAwHgYDVQQD\\n' +\n      'DBdBbWF6b24gUkRTIGFwLWVhc3QtMSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\\n' +\n      'ADCCAQoCggEBAOcJAUofyJuBuPr5ISHi/Ha5ed8h3eGdzn4MBp6rytPOg9NVGRQs\\n' +\n      'O93fNGCIKsUT6gPuk+1f1ncMTV8Y0Fdf4aqGWme+Khm3ZOP3V1IiGnVq0U2xiOmn\\n' +\n      'SQ4Q7LoeQC4lC6zpoCHVJyDjZ4pAknQQfsXb77Togdt/tK5ahev0D+Q3gCwAoBoO\\n' +\n      'DHKJ6t820qPi63AeGbJrsfNjLKiXlFPDUj4BGir4dUzjEeH7/hx37na1XG/3EcxP\\n' +\n      '399cT5k7sY/CR9kctMlUyEEUNQOmhi/ly1Lgtihm3QfjL6K9aGLFNwX35Bkh9aL2\\n' +\n      'F058u+n8DP/dPeKUAcJKiQZUmzuen5n57x8CAwEAAaNmMGQwDgYDVR0PAQH/BAQD\\n' +\n      'AgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFFlqgF4FQlb9yP6c+Q3E\\n' +\n      'O3tXv+zOMB8GA1UdIwQYMBaAFK9T6sY/PBZVbnHcNcQXf58P4OuPMA0GCSqGSIb3\\n' +\n      'DQEBCwUAA4IBAQDeXiS3v1z4jWAo1UvVyKDeHjtrtEH1Rida1eOXauFuEQa5tuOk\\n' +\n      'E53Os4haZCW4mOlKjigWs4LN+uLIAe1aFXGo92nGIqyJISHJ1L+bopx/JmIbHMCZ\\n' +\n      '0lTNJfR12yBma5VQy7vzeFku/SisKwX0Lov1oHD4MVhJoHbUJYkmAjxorcIHORvh\\n' +\n      'I3Vj5XrgDWtLDPL8/Id/roul/L+WX5ir+PGScKBfQIIN2lWdZoqdsx8YWqhm/ikL\\n' +\n      'C6qNieSwcvWL7C03ri0DefTQMY54r5wP33QU5hJ71JoaZI3YTeT0Nf+NRL4hM++w\\n' +\n      'Q0veeNzBQXg1f/JxfeA39IDIX1kiCf71tGlT\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIEEDCCAvigAwIBAgIJAJF3HxEqKM4lMA0GCSqGSIb3DQEBCwUAMIGUMQswCQYD\\n' +\n      'VQQGEwJVUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEi\\n' +\n      'MCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1h\\n' +\n      'em9uIFJEUzElMCMGA1UEAwwcQW1hem9uIFJEUyBhcC1lYXN0LTEgUm9vdCBDQTAe\\n' +\n      'Fw0xOTAyMTcwMjQ2MTFaFw0yNDAyMTYwMjQ2MTFaMIGUMQswCQYDVQQGEwJVUzEQ\\n' +\n      'MA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEiMCAGA1UECgwZ\\n' +\n      'QW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEl\\n' +\n      'MCMGA1UEAwwcQW1hem9uIFJEUyBhcC1lYXN0LTEgUm9vdCBDQTCCASIwDQYJKoZI\\n' +\n      'hvcNAQEBBQADggEPADCCAQoCggEBAOCVr1Yj5IW4XWa9QOLGJDSz4pqIM6BAbqQp\\n' +\n      'gYvzIO4Lv8c8dEnuuuCY8M/zOrJ1iQJ3cDiKGa32HVBVcH+nUdXzw4Jq5jw0hsb6\\n' +\n      '/WW2RD2aUe4jCkRD5wNzmeHM4gTgtMZnXNVHpELgKR4wVhSHEfWFTiMsZi35y8mj\\n' +\n      'PL98Mz/m/nMnB/59EjMvcJMrsUljHO6B9BMEcvNkwvre9xza0BQWKyiVRcbOpoj1\\n' +\n      'w4BPtYYZ+dW2QKw9AmYXwAmCLeATsxrHIJ/IbzS7obxv2QN2Eh4pJ3ghRCFv1XM9\\n' +\n      'XVkm13oiCjj7jsxAwF7o+VggPl/GG+/Gwk+TLuaTFNAtROpPxL8CAwEAAaNjMGEw\\n' +\n      'DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9T6sY/\\n' +\n      'PBZVbnHcNcQXf58P4OuPMB8GA1UdIwQYMBaAFK9T6sY/PBZVbnHcNcQXf58P4OuP\\n' +\n      'MA0GCSqGSIb3DQEBCwUAA4IBAQBBY+KATaT7ndYT3Ky0VWaiwNfyl1u3aDxr+MKP\\n' +\n      'VeDhtOhlob5u0E+edOXUvEXd4A+ntS+U0HmwvtMXtQbQ2EJbsNRqZnS8KG9YB2Yc\\n' +\n      'Q99auphW3wMjwHRtflLO5h14aa9SspqJJgcM1R7Z3pAYeq6bpBDxZSGrYtWI64q4\\n' +\n      'h4i67qWAGDFcXSTW1kJ00GMlBCIGTeYiu8LYutdsDWzYKkeezJRjx9VR4w7A7e1G\\n' +\n      'WmY4aUg/8aPxCioY2zEQKNl55Ghg6Dwy+6BxaV6RlV9r9EaSCai11p1bgS568WQn\\n' +\n      '4WNQK36EGe37l2SOpDB6STrq57/rjREvmq803Ylg/Gf6qqzK\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIECTCCAvGgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwgZUxCzAJBgNVBAYTAlVT\\n' +\n      'MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\\n' +\n      'DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\\n' +\n      'MSYwJAYDVQQDDB1BbWF6b24gUkRTIG1lLXNvdXRoLTEgUm9vdCBDQTAeFw0xOTA1\\n' +\n      'MTAyMTU4NDNaFw0yNTA2MDExMjAwMDBaMIGQMQswCQYDVQQGEwJVUzETMBEGA1UE\\n' +\n      'CAwKV2FzaGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9u\\n' +\n      'IFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEhMB8GA1UE\\n' +\n      'AwwYQW1hem9uIFJEUyBtZS1zb3V0aC0xIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC\\n' +\n      'AQ8AMIIBCgKCAQEAudOYPZH+ihJAo6hNYMB5izPVBe3TYhnZm8+X3IoaaYiKtsp1\\n' +\n      'JJhkTT0CEejYIQ58Fh4QrMUyWvU8qsdK3diNyQRoYLbctsBPgxBR1u07eUJDv38/\\n' +\n      'C1JlqgHmMnMi4y68Iy7ymv50QgAMuaBqgEBRI1R6Lfbyrb2YvH5txjJyTVMwuCfd\\n' +\n      'YPAtZVouRz0JxmnfsHyxjE+So56uOKTDuw++Ho4HhZ7Qveej7XB8b+PIPuroknd3\\n' +\n      'FQB5RVbXRvt5ZcVD4F2fbEdBniF7FAF4dEiofVCQGQ2nynT7dZdEIPfPdH3n7ZmE\\n' +\n      'lAOmwHQ6G83OsiHRBLnbp+QZRgOsjkHJxT20bQIDAQABo2YwZDAOBgNVHQ8BAf8E\\n' +\n      'BAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUOEVDM7VomRH4HVdA\\n' +\n      'QvIMNq2tXOcwHwYDVR0jBBgwFoAU54cfDjgwBx4ycBH8+/r8WXdaiqYwDQYJKoZI\\n' +\n      'hvcNAQELBQADggEBAHhvMssj+Th8IpNePU6RH0BiL6o9c437R3Q4IEJeFdYL+nZz\\n' +\n      'PW/rELDPvLRUNMfKM+KzduLZ+l29HahxefejYPXtvXBlq/E/9czFDD4fWXg+zVou\\n' +\n      'uDXhyrV4kNmP4S0eqsAP/jQHPOZAMFA4yVwO9hlqmePhyDnszCh9c1PfJSBh49+b\\n' +\n      '4w7i/L3VBOMt8j3EKYvqz0gVfpeqhJwL4Hey8UbVfJRFJMJzfNHpePqtDRAY7yjV\\n' +\n      'PYquRaV2ab/E+/7VFkWMM4tazYz/qsYA2jSH+4xDHvYk8LnsbcrF9iuidQmEc5sb\\n' +\n      'FgcWaSKG4DJjcI5k7AJLWcXyTDt21Ci43LE+I9Q=\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIEEjCCAvqgAwIBAgIJANew34ehz5l8MA0GCSqGSIb3DQEBCwUAMIGVMQswCQYD\\n' +\n      'VQQGEwJVUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEi\\n' +\n      'MCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1h\\n' +\n      'em9uIFJEUzEmMCQGA1UEAwwdQW1hem9uIFJEUyBtZS1zb3V0aC0xIFJvb3QgQ0Ew\\n' +\n      'HhcNMTkwNTEwMjE0ODI3WhcNMjQwNTA4MjE0ODI3WjCBlTELMAkGA1UEBhMCVVMx\\n' +\n      'EDAOBgNVBAcMB1NlYXR0bGUxEzARBgNVBAgMCldhc2hpbmd0b24xIjAgBgNVBAoM\\n' +\n      'GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\\n' +\n      'JjAkBgNVBAMMHUFtYXpvbiBSRFMgbWUtc291dGgtMSBSb290IENBMIIBIjANBgkq\\n' +\n      'hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp7BYV88MukcY+rq0r79+C8UzkT30fEfT\\n' +\n      'aPXbx1d6M7uheGN4FMaoYmL+JE1NZPaMRIPTHhFtLSdPccInvenRDIatcXX+jgOk\\n' +\n      'UA6lnHQ98pwN0pfDUyz/Vph4jBR9LcVkBbe0zdoKKp+HGbMPRU0N2yNrog9gM5O8\\n' +\n      'gkU/3O2csJ/OFQNnj4c2NQloGMUpEmedwJMOyQQfcUyt9CvZDfIPNnheUS29jGSw\\n' +\n      'ERpJe/AENu8Pxyc72jaXQuD+FEi2Ck6lBkSlWYQFhTottAeGvVFNCzKszCntrtqd\\n' +\n      'rdYUwurYsLTXDHv9nW2hfDUQa0mhXf9gNDOBIVAZugR9NqNRNyYLHQIDAQABo2Mw\\n' +\n      'YTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU54cf\\n' +\n      'DjgwBx4ycBH8+/r8WXdaiqYwHwYDVR0jBBgwFoAU54cfDjgwBx4ycBH8+/r8WXda\\n' +\n      'iqYwDQYJKoZIhvcNAQELBQADggEBAIIMTSPx/dR7jlcxggr+O6OyY49Rlap2laKA\\n' +\n      'eC/XI4ySP3vQkIFlP822U9Kh8a9s46eR0uiwV4AGLabcu0iKYfXjPkIprVCqeXV7\\n' +\n      'ny9oDtrbflyj7NcGdZLvuzSwgl9SYTJp7PVCZtZutsPYlbJrBPHwFABvAkMvRtDB\\n' +\n      'hitIg4AESDGPoCl94sYHpfDfjpUDMSrAMDUyO6DyBdZH5ryRMAs3lGtsmkkNUrso\\n' +\n      'aTW6R05681Z0mvkRdb+cdXtKOSuDZPoe2wJJIaz3IlNQNSrB5TImMYgmt6iAsFhv\\n' +\n      '3vfTSTKrZDNTJn4ybG6pq1zWExoXsktZPylJly6R3RBwV6nwqBM=\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIEETCCAvmgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwgZQxCzAJBgNVBAYTAlVT\\n' +\n      'MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\\n' +\n      'DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\\n' +\n      'MSUwIwYDVQQDDBxBbWF6b24gUkRTIEJldGEgUm9vdCAyMDE5IENBMB4XDTE5MDgy\\n' +\n      'MDE3MTAwN1oXDTI0MDgxOTE3MzgyNlowgZkxCzAJBgNVBAYTAlVTMRMwEQYDVQQI\\n' +\n      'DApXYXNoaW5ndG9uMRAwDgYDVQQHDAdTZWF0dGxlMSIwIAYDVQQKDBlBbWF6b24g\\n' +\n      'V2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMSowKAYDVQQD\\n' +\n      'DCFBbWF6b24gUkRTIEJldGEgdXMtZWFzdC0xIDIwMTkgQ0EwggEiMA0GCSqGSIb3\\n' +\n      'DQEBAQUAA4IBDwAwggEKAoIBAQDTNCOlotQcLP8TP82U2+nk0bExVuuMVOgFeVMx\\n' +\n      'vbUHZQeIj9ikjk+jm6eTDnnkhoZcmJiJgRy+5Jt69QcRbb3y3SAU7VoHgtraVbxF\\n' +\n      'QDh7JEHI9tqEEVOA5OvRrDRcyeEYBoTDgh76ROco2lR+/9uCvGtHVrMCtG7BP7ZB\\n' +\n      'sSVNAr1IIRZZqKLv2skKT/7mzZR2ivcw9UeBBTUf8xsfiYVBvMGoEsXEycjYdf6w\\n' +\n      'WV+7XS7teNOc9UgsFNN+9AhIBc1jvee5E//72/4F8pAttAg/+mmPUyIKtekNJ4gj\\n' +\n      'OAR2VAzGx1ybzWPwIgOudZFHXFduxvq4f1hIRPH0KbQ/gkRrAgMBAAGjZjBkMA4G\\n' +\n      'A1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBTkvpCD\\n' +\n      '6C43rar9TtJoXr7q8dkrrjAfBgNVHSMEGDAWgBStoQwVpbGx87fxB3dEGDqKKnBT\\n' +\n      '4TANBgkqhkiG9w0BAQsFAAOCAQEAJd9fOSkwB3uVdsS+puj6gCER8jqmhd3g/J5V\\n' +\n      'Zjk9cKS8H0e8pq/tMxeJ8kpurPAzUk5RkCspGt2l0BSwmf3ahr8aJRviMX6AuW3/\\n' +\n      'g8aKplTvq/WMNGKLXONa3Sq8591J+ce8gtOX/1rDKmFI4wQ/gUzOSYiT991m7QKS\\n' +\n      'Fr6HMgFuz7RNJbb3Fy5cnurh8eYWA7mMv7laiLwTNsaro5qsqErD5uXuot6o9beT\\n' +\n      'a+GiKinEur35tNxAr47ax4IRubuIzyfCrezjfKc5raVV2NURJDyKP0m0CCaffAxE\\n' +\n      'qn2dNfYc3v1D8ypg3XjHlOzRo32RB04o8ALHMD9LSwsYDLpMag==\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIEEDCCAvigAwIBAgIJAKFMXyltvuRdMA0GCSqGSIb3DQEBCwUAMIGUMQswCQYD\\n' +\n      'VQQGEwJVUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEi\\n' +\n      'MCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1h\\n' +\n      'em9uIFJEUzElMCMGA1UEAwwcQW1hem9uIFJEUyBCZXRhIFJvb3QgMjAxOSBDQTAe\\n' +\n      'Fw0xOTA4MTkxNzM4MjZaFw0yNDA4MTkxNzM4MjZaMIGUMQswCQYDVQQGEwJVUzEQ\\n' +\n      'MA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEiMCAGA1UECgwZ\\n' +\n      'QW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEl\\n' +\n      'MCMGA1UEAwwcQW1hem9uIFJEUyBCZXRhIFJvb3QgMjAxOSBDQTCCASIwDQYJKoZI\\n' +\n      'hvcNAQEBBQADggEPADCCAQoCggEBAMkZdnIH9ndatGAcFo+DppGJ1HUt4x+zeO+0\\n' +\n      'ZZ29m0sfGetVulmTlv2d5b66e+QXZFWpcPQMouSxxYTW08TbrQiZngKr40JNXftA\\n' +\n      'atvzBqIImD4II0ZX5UEVj2h98qe/ypW5xaDN7fEa5e8FkYB1TEemPaWIbNXqchcL\\n' +\n      'tV7IJPr3Cd7Z5gZJlmujIVDPpMuSiNaal9/6nT9oqN+JSM1fx5SzrU5ssg1Vp1vv\\n' +\n      '5Xab64uOg7wCJRB9R2GC9XD04odX6VcxUAGrZo6LR64ZSifupo3l+R5sVOc5i8NH\\n' +\n      'skdboTzU9H7+oSdqoAyhIU717PcqeDum23DYlPE2nGBWckE+eT8CAwEAAaNjMGEw\\n' +\n      'DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFK2hDBWl\\n' +\n      'sbHzt/EHd0QYOooqcFPhMB8GA1UdIwQYMBaAFK2hDBWlsbHzt/EHd0QYOooqcFPh\\n' +\n      'MA0GCSqGSIb3DQEBCwUAA4IBAQAO/718k8EnOqJDx6wweUscGTGL/QdKXUzTVRAx\\n' +\n      'JUsjNUv49mH2HQVEW7oxszfH6cPCaupNAddMhQc4C/af6GHX8HnqfPDk27/yBQI+\\n' +\n      'yBBvIanGgxv9c9wBbmcIaCEWJcsLp3HzXSYHmjiqkViXwCpYfkoV3Ns2m8bp+KCO\\n' +\n      'y9XmcCKRaXkt237qmoxoh2sGmBHk2UlQtOsMC0aUQ4d7teAJG0q6pbyZEiPyKZY1\\n' +\n      'XR/UVxMJL0Q4iVpcRS1kaNCMfqS2smbLJeNdsan8pkw1dvPhcaVTb7CvjhJtjztF\\n' +\n      'YfDzAI5794qMlWxwilKMmUvDlPPOTen8NNHkLwWvyFCH7Doh\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIEFzCCAv+gAwIBAgICFSUwDQYJKoZIhvcNAQELBQAwgZcxCzAJBgNVBAYTAlVT\\n' +\n      'MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\\n' +\n      'DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\\n' +\n      'MSgwJgYDVQQDDB9BbWF6b24gUkRTIFByZXZpZXcgUm9vdCAyMDE5IENBMB4XDTE5\\n' +\n      'MDgyMTIyMzk0N1oXDTI0MDgyMTIyMjk0OVowgZwxCzAJBgNVBAYTAlVTMRMwEQYD\\n' +\n      'VQQIDApXYXNoaW5ndG9uMRAwDgYDVQQHDAdTZWF0dGxlMSIwIAYDVQQKDBlBbWF6\\n' +\n      'b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMS0wKwYD\\n' +\n      'VQQDDCRBbWF6b24gUkRTIFByZXZpZXcgdXMtZWFzdC0yIDIwMTkgQ0EwggEiMA0G\\n' +\n      'CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQD0dB/U7qRnSf05wOi7m10Pa2uPMTJv\\n' +\n      'r6U/3Y17a5prq5Zr4++CnSUYarG51YuIf355dKs+7Lpzs782PIwCmLpzAHKWzix6\\n' +\n      'pOaTQ+WZ0+vUMTxyqgqWbsBgSCyP7pVBiyqnmLC/L4az9XnscrbAX4pNaoJxsuQe\\n' +\n      'mzBo6yofjQaAzCX69DuqxFkVTRQnVy7LCFkVaZtjNAftnAHJjVgQw7lIhdGZp9q9\\n' +\n      'IafRt2gteihYfpn+EAQ/t/E4MnhrYs4CPLfS7BaYXBycEKC5Muj1l4GijNNQ0Efo\\n' +\n      'xG8LSZz7SNgUvfVwiNTaqfLP3AtEAWiqxyMyh3VO+1HpCjT7uNBFtmF3AgMBAAGj\\n' +\n      'ZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQW\\n' +\n      'BBQtinkdrj+0B2+qdXngV2tgHnPIujAfBgNVHSMEGDAWgBRp0xqULkNh/w2ZVzEI\\n' +\n      'o2RIY7O03TANBgkqhkiG9w0BAQsFAAOCAQEAtJdqbCxDeMc8VN1/RzCabw9BIL/z\\n' +\n      '73Auh8eFTww/sup26yn8NWUkfbckeDYr1BrXa+rPyLfHpg06kwR8rBKyrs5mHwJx\\n' +\n      'bvOzXD/5WTdgreB+2Fb7mXNvWhenYuji1MF+q1R2DXV3I05zWHteKX6Dajmx+Uuq\\n' +\n      'Yq78oaCBSV48hMxWlp8fm40ANCL1+gzQ122xweMFN09FmNYFhwuW+Ao+Vv90ZfQG\\n' +\n      'PYwTvN4n/gegw2TYcifGZC2PNX74q3DH03DXe5fvNgRW5plgz/7f+9mS+YHd5qa9\\n' +\n      'tYTPUvoRbi169ou6jicsMKUKPORHWhiTpSCWR1FMMIbsAcsyrvtIsuaGCQ==\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIEFjCCAv6gAwIBAgIJAMzYZJ+R9NBVMA0GCSqGSIb3DQEBCwUAMIGXMQswCQYD\\n' +\n      'VQQGEwJVUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEi\\n' +\n      'MCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1h\\n' +\n      'em9uIFJEUzEoMCYGA1UEAwwfQW1hem9uIFJEUyBQcmV2aWV3IFJvb3QgMjAxOSBD\\n' +\n      'QTAeFw0xOTA4MjEyMjI5NDlaFw0yNDA4MjEyMjI5NDlaMIGXMQswCQYDVQQGEwJV\\n' +\n      'UzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEiMCAGA1UE\\n' +\n      'CgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJE\\n' +\n      'UzEoMCYGA1UEAwwfQW1hem9uIFJEUyBQcmV2aWV3IFJvb3QgMjAxOSBDQTCCASIw\\n' +\n      'DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM7kkS6vjgKKQTPynC2NjdN5aPPV\\n' +\n      'O71G0JJS/2ARVBVJd93JLiGovVJilfWYfwZCs4gTRSSjrUD4D4HyqCd6A+eEEtJq\\n' +\n      'M0DEC7i0dC+9WNTsPszuB206Jy2IUmxZMIKJAA1NHSbIMjB+b6/JhbSUi7nKdbR/\\n' +\n      'brj83bF+RoSA+ogrgX7mQbxhmFcoZN9OGaJgYKsKWUt5Wqv627KkGodUK8mDepgD\\n' +\n      'S3ZfoRQRx3iceETpcmHJvaIge6+vyDX3d9Z22jmvQ4AKv3py2CmU2UwuhOltFDwB\\n' +\n      '0ddtb39vgwrJxaGfiMRHpEP1DfNLWHAnA69/pgZPwIggidS+iBPUhgucMp8CAwEA\\n' +\n      'AaNjMGEwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE\\n' +\n      'FGnTGpQuQ2H/DZlXMQijZEhjs7TdMB8GA1UdIwQYMBaAFGnTGpQuQ2H/DZlXMQij\\n' +\n      'ZEhjs7TdMA0GCSqGSIb3DQEBCwUAA4IBAQC3xz1vQvcXAfpcZlngiRWeqU8zQAMQ\\n' +\n      'LZPCFNv7PVk4pmqX+ZiIRo4f9Zy7TrOVcboCnqmP/b/mNq0gVF4O+88jwXJZD+f8\\n' +\n      '/RnABMZcnGU+vK0YmxsAtYU6TIb1uhRFmbF8K80HHbj9vSjBGIQdPCbvmR2zY6VJ\\n' +\n      'BYM+w9U9hp6H4DVMLKXPc1bFlKA5OBTgUtgkDibWJKFOEPW3UOYwp9uq6pFoN0AO\\n' +\n      'xMTldqWFsOF3bJIlvOY0c/1EFZXu3Ns6/oCP//Ap9vumldYMUZWmbK+gK33FPOXV\\n' +\n      '8BQ6jNC29icv7lLDpRPwjibJBXX+peDR5UK4FdYcswWEB1Tix5X8dYu6\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIECDCCAvCgAwIBAgICVIYwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\\n' +\n      'MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\\n' +\n      'DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\\n' +\n      'MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MDQxNzEz\\n' +\n      'MDRaFw0yNDA4MjIxNzA4NTBaMIGVMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\\n' +\n      'aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\\n' +\n      'ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEmMCQGA1UEAwwdQW1h\\n' +\n      'em9uIFJEUyBhcC1zb3V0aC0xIDIwMTkgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IB\\n' +\n      'DwAwggEKAoIBAQDUYOz1hGL42yUCrcsMSOoU8AeD/3KgZ4q7gP+vAz1WnY9K/kim\\n' +\n      'eWN/2Qqzlo3+mxSFQFyD4MyV3+CnCPnBl9Sh1G/F6kThNiJ7dEWSWBQGAB6HMDbC\\n' +\n      'BaAsmUc1UIz8sLTL3fO+S9wYhA63Wun0Fbm/Rn2yk/4WnJAaMZcEtYf6e0KNa0LM\\n' +\n      'p/kN/70/8cD3iz3dDR8zOZFpHoCtf0ek80QqTich0A9n3JLxR6g6tpwoYviVg89e\\n' +\n      'qCjQ4axxOkWWeusLeTJCcY6CkVyFvDAKvcUl1ytM5AiaUkXblE7zDFXRM4qMMRdt\\n' +\n      'lPm8d3pFxh0fRYk8bIKnpmtOpz3RIctDrZZxAgMBAAGjZjBkMA4GA1UdDwEB/wQE\\n' +\n      'AwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBT99wKJftD3jb4sHoHG\\n' +\n      'i3uGlH6W6TAfBgNVHSMEGDAWgBRzX2DYvMsDmPQrFzQuNlqmYP+8HzANBgkqhkiG\\n' +\n      '9w0BAQsFAAOCAQEAZ17hhr3dII3hUfuHQ1hPWGrpJOX/G9dLzkprEIcCidkmRYl+\\n' +\n      'hu1Pe3caRMh/17+qsoEErmnVq5jNY9X1GZL04IZH8YbHc7iRHw3HcWAdhN8633+K\\n' +\n      'jYEB2LbJ3vluCGnCejq9djDb6alOugdLMJzxOkHDhMZ6/gYbECOot+ph1tQuZXzD\\n' +\n      'tZ7prRsrcuPBChHlPjmGy8M9z8u+kF196iNSUGC4lM8vLkHM7ycc1/ZOwRq9aaTe\\n' +\n      'iOghbQQyAEe03MWCyDGtSmDfr0qEk+CHN+6hPiaL8qKt4s+V9P7DeK4iW08ny8Ox\\n' +\n      'AVS7u0OK/5+jKMAMrKwpYrBydOjTUTHScocyNw==\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIEBjCCAu6gAwIBAgIJAMc0ZzaSUK51MA0GCSqGSIb3DQEBCwUAMIGPMQswCQYD\\n' +\n      'VQQGEwJVUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEi\\n' +\n      'MCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1h\\n' +\n      'em9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJEUyBSb290IDIwMTkgQ0EwHhcNMTkw\\n' +\n      'ODIyMTcwODUwWhcNMjQwODIyMTcwODUwWjCBjzELMAkGA1UEBhMCVVMxEDAOBgNV\\n' +\n      'BAcMB1NlYXR0bGUxEzARBgNVBAgMCldhc2hpbmd0b24xIjAgBgNVBAoMGUFtYXpv\\n' +\n      'biBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxIDAeBgNV\\n' +\n      'BAMMF0FtYXpvbiBSRFMgUm9vdCAyMDE5IENBMIIBIjANBgkqhkiG9w0BAQEFAAOC\\n' +\n      'AQ8AMIIBCgKCAQEArXnF/E6/Qh+ku3hQTSKPMhQQlCpoWvnIthzX6MK3p5a0eXKZ\\n' +\n      'oWIjYcNNG6UwJjp4fUXl6glp53Jobn+tWNX88dNH2n8DVbppSwScVE2LpuL+94vY\\n' +\n      '0EYE/XxN7svKea8YvlrqkUBKyxLxTjh+U/KrGOaHxz9v0l6ZNlDbuaZw3qIWdD/I\\n' +\n      '6aNbGeRUVtpM6P+bWIoxVl/caQylQS6CEYUk+CpVyJSkopwJlzXT07tMoDL5WgX9\\n' +\n      'O08KVgDNz9qP/IGtAcRduRcNioH3E9v981QO1zt/Gpb2f8NqAjUUCUZzOnij6mx9\\n' +\n      'McZ+9cWX88CRzR0vQODWuZscgI08NvM69Fn2SQIDAQABo2MwYTAOBgNVHQ8BAf8E\\n' +\n      'BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUc19g2LzLA5j0Kxc0LjZa\\n' +\n      'pmD/vB8wHwYDVR0jBBgwFoAUc19g2LzLA5j0Kxc0LjZapmD/vB8wDQYJKoZIhvcN\\n' +\n      'AQELBQADggEBAHAG7WTmyjzPRIM85rVj+fWHsLIvqpw6DObIjMWokpliCeMINZFV\\n' +\n      'ynfgBKsf1ExwbvJNzYFXW6dihnguDG9VMPpi2up/ctQTN8tm9nDKOy08uNZoofMc\\n' +\n      'NUZxKCEkVKZv+IL4oHoeayt8egtv3ujJM6V14AstMQ6SwvwvA93EP/Ug2e4WAXHu\\n' +\n      'cbI1NAbUgVDqp+DRdfvZkgYKryjTWd/0+1fS8X1bBZVWzl7eirNVnHbSH2ZDpNuY\\n' +\n      '0SBd8dj5F6ld3t58ydZbrTHze7JJOd8ijySAp4/kiu9UfZWuTPABzDa/DSdz9Dk/\\n' +\n      'zPW4CXXvhLmE02TA9/HeCw3KEHIwicNuEfw=\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIEBzCCAu+gAwIBAgICQ2QwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\\n' +\n      'MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\\n' +\n      'DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\\n' +\n      'MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MDUxODQ2\\n' +\n      'MjlaFw0yNDA4MjIxNzA4NTBaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\\n' +\n      'aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\\n' +\n      'ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1h\\n' +\n      'em9uIFJEUyBzYS1lYXN0LTEgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\\n' +\n      'ADCCAQoCggEBAMMvR+ReRnOzqJzoaPipNTt1Z2VA968jlN1+SYKUrYM3No+Vpz0H\\n' +\n      'M6Tn0oYB66ByVsXiGc28ulsqX1HbHsxqDPwvQTKvO7SrmDokoAkjJgLocOLUAeld\\n' +\n      '5AwvUjxGRP6yY90NV7X786MpnYb2Il9DIIaV9HjCmPt+rjy2CZjS0UjPjCKNfB8J\\n' +\n      'bFjgW6GGscjeyGb/zFwcom5p4j0rLydbNaOr9wOyQrtt3ZQWLYGY9Zees/b8pmcc\\n' +\n      'Jt+7jstZ2UMV32OO/kIsJ4rMUn2r/uxccPwAc1IDeRSSxOrnFKhW3Cu69iB3bHp7\\n' +\n      'JbawY12g7zshE4I14sHjv3QoXASoXjx4xgMCAwEAAaNmMGQwDgYDVR0PAQH/BAQD\\n' +\n      'AgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFI1Fc/Ql2jx+oJPgBVYq\\n' +\n      'ccgP0pQ8MB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqGSIb3\\n' +\n      'DQEBCwUAA4IBAQB4VVVabVp70myuYuZ3vltQIWqSUMhkaTzehMgGcHjMf9iLoZ/I\\n' +\n      '93KiFUSGnek5cRePyS9wcpp0fcBT3FvkjpUdCjVtdttJgZFhBxgTd8y26ImdDDMR\\n' +\n      '4+BUuhI5msvjL08f+Vkkpu1GQcGmyFVPFOy/UY8iefu+QyUuiBUnUuEDd49Hw0Fn\\n' +\n      '/kIPII6Vj82a2mWV/Q8e+rgN8dIRksRjKI03DEoP8lhPlsOkhdwU6Uz9Vu6NOB2Q\\n' +\n      'Ls1kbcxAc7cFSyRVJEhh12Sz9d0q/CQSTFsVJKOjSNQBQfVnLz1GwO/IieUEAr4C\\n' +\n      'jkTntH0r1LX5b/GwN4R887LvjAEdTbg1his7\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIECDCCAvCgAwIBAgIDAIkHMA0GCSqGSIb3DQEBCwUAMIGPMQswCQYDVQQGEwJV\\n' +\n      'UzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEiMCAGA1UE\\n' +\n      'CgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJE\\n' +\n      'UzEgMB4GA1UEAwwXQW1hem9uIFJEUyBSb290IDIwMTkgQ0EwHhcNMTkwOTA2MTc0\\n' +\n      'MDIxWhcNMjQwODIyMTcwODUwWjCBlDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCldh\\n' +\n      'c2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUFtYXpvbiBXZWIg\\n' +\n      'U2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxJTAjBgNVBAMMHEFt\\n' +\n      'YXpvbiBSRFMgdXMtd2VzdC0xIDIwMTkgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IB\\n' +\n      'DwAwggEKAoIBAQDD2yzbbAl77OofTghDMEf624OvU0eS9O+lsdO0QlbfUfWa1Kd6\\n' +\n      '0WkgjkLZGfSRxEHMCnrv4UPBSK/Qwn6FTjkDLgemhqBtAnplN4VsoDL+BkRX4Wwq\\n' +\n      '/dSQJE2b+0hm9w9UMVGFDEq1TMotGGTD2B71eh9HEKzKhGzqiNeGsiX4VV+LJzdH\\n' +\n      'uM23eGisNqmd4iJV0zcAZ+Gbh2zK6fqTOCvXtm7Idccv8vZZnyk1FiWl3NR4WAgK\\n' +\n      'AkvWTIoFU3Mt7dIXKKClVmvssG8WHCkd3Xcb4FHy/G756UZcq67gMMTX/9fOFM/v\\n' +\n      'l5C0+CHl33Yig1vIDZd+fXV1KZD84dEJfEvHAgMBAAGjZjBkMA4GA1UdDwEB/wQE\\n' +\n      'AwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBR+ap20kO/6A7pPxo3+\\n' +\n      'T3CfqZpQWjAfBgNVHSMEGDAWgBRzX2DYvMsDmPQrFzQuNlqmYP+8HzANBgkqhkiG\\n' +\n      '9w0BAQsFAAOCAQEAHCJky2tPjPttlDM/RIqExupBkNrnSYnOK4kr9xJ3sl8UF2DA\\n' +\n      'PAnYsjXp3rfcjN/k/FVOhxwzi3cXJF/2Tjj39Bm/OEfYTOJDNYtBwB0VVH4ffa/6\\n' +\n      'tZl87jaIkrxJcreeeHqYMnIxeN0b/kliyA+a5L2Yb0VPjt9INq34QDc1v74FNZ17\\n' +\n      '4z8nr1nzg4xsOWu0Dbjo966lm4nOYIGBRGOKEkHZRZ4mEiMgr3YLkv8gSmeitx57\\n' +\n      'Z6dVemNtUic/LVo5Iqw4n3TBS0iF2C1Q1xT/s3h+0SXZlfOWttzSluDvoMv5PvCd\\n' +\n      'pFjNn+aXLAALoihL1MJSsxydtsLjOBro5eK0Vw==\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIEDDCCAvSgAwIBAgICOFAwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\\n' +\n      'MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\\n' +\n      'DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\\n' +\n      'MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTAxNzQ2\\n' +\n      'MjFaFw0yNDA4MjIxNzA4NTBaMIGZMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\\n' +\n      'aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\\n' +\n      'ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEqMCgGA1UEAwwhQW1h\\n' +\n      'em9uIFJEUyBhcC1ub3J0aGVhc3QtMiAyMDE5IENBMIIBIjANBgkqhkiG9w0BAQEF\\n' +\n      'AAOCAQ8AMIIBCgKCAQEAzU72e6XbaJbi4HjJoRNjKxzUEuChKQIt7k3CWzNnmjc5\\n' +\n      '8I1MjCpa2W1iw1BYVysXSNSsLOtUsfvBZxi/1uyMn5ZCaf9aeoA9UsSkFSZBjOCN\\n' +\n      'DpKPCmfV1zcEOvJz26+1m8WDg+8Oa60QV0ou2AU1tYcw98fOQjcAES0JXXB80P2s\\n' +\n      '3UfkNcnDz+l4k7j4SllhFPhH6BQ4lD2NiFAP4HwoG6FeJUn45EPjzrydxjq6v5Fc\\n' +\n      'cQ8rGuHADVXotDbEhaYhNjIrsPL+puhjWfhJjheEw8c4whRZNp6gJ/b6WEes/ZhZ\\n' +\n      'h32DwsDsZw0BfRDUMgUn8TdecNexHUw8vQWeC181hwIDAQABo2YwZDAOBgNVHQ8B\\n' +\n      'Af8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUwW9bWgkWkr0U\\n' +\n      'lrOsq2kvIdrECDgwHwYDVR0jBBgwFoAUc19g2LzLA5j0Kxc0LjZapmD/vB8wDQYJ\\n' +\n      'KoZIhvcNAQELBQADggEBAEugF0Gj7HVhX0ehPZoGRYRt3PBuI2YjfrrJRTZ9X5wc\\n' +\n      '9T8oHmw07mHmNy1qqWvooNJg09bDGfB0k5goC2emDiIiGfc/kvMLI7u+eQOoMKj6\\n' +\n      'mkfCncyRN3ty08Po45vTLBFZGUvtQmjM6yKewc4sXiASSBmQUpsMbiHRCL72M5qV\\n' +\n      'obcJOjGcIdDTmV1BHdWT+XcjynsGjUqOvQWWhhLPrn4jWe6Xuxll75qlrpn3IrIx\\n' +\n      'CRBv/5r7qbcQJPOgwQsyK4kv9Ly8g7YT1/vYBlR3cRsYQjccw5ceWUj2DrMVWhJ4\\n' +\n      'prf+E3Aa4vYmLLOUUvKnDQ1k3RGNu56V0tonsQbfsaM=\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIECjCCAvKgAwIBAgICEzUwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\\n' +\n      'MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\\n' +\n      'DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\\n' +\n      'MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTAyMDUy\\n' +\n      'MjVaFw0yNDA4MjIxNzA4NTBaMIGXMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\\n' +\n      'aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\\n' +\n      'ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEoMCYGA1UEAwwfQW1h\\n' +\n      'em9uIFJEUyBjYS1jZW50cmFsLTEgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQAD\\n' +\n      'ggEPADCCAQoCggEBAOxHqdcPSA2uBjsCP4DLSlqSoPuQ/X1kkJLusVRKiQE2zayB\\n' +\n      'viuCBt4VB9Qsh2rW3iYGM+usDjltGnI1iUWA5KHcvHszSMkWAOYWLiMNKTlg6LCp\\n' +\n      'XnE89tvj5dIH6U8WlDvXLdjB/h30gW9JEX7S8supsBSci2GxEzb5mRdKaDuuF/0O\\n' +\n      'qvz4YE04pua3iZ9QwmMFuTAOYzD1M72aOpj+7Ac+YLMM61qOtU+AU6MndnQkKoQi\\n' +\n      'qmUN2A9IFaqHFzRlSdXwKCKUA4otzmz+/N3vFwjb5F4DSsbsrMfjeHMo6o/nb6Nh\\n' +\n      'YDb0VJxxPee6TxSuN7CQJ2FxMlFUezcoXqwqXD0CAwEAAaNmMGQwDgYDVR0PAQH/\\n' +\n      'BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFDGGpon9WfIpsggE\\n' +\n      'CxHq8hZ7E2ESMB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqG\\n' +\n      'SIb3DQEBCwUAA4IBAQAvpeQYEGZvoTVLgV9rd2+StPYykMsmFjWQcyn3dBTZRXC2\\n' +\n      'lKq7QhQczMAOhEaaN29ZprjQzsA2X/UauKzLR2Uyqc2qOeO9/YOl0H3qauo8C/W9\\n' +\n      'r8xqPbOCDLEXlOQ19fidXyyEPHEq5WFp8j+fTh+s8WOx2M7IuC0ANEetIZURYhSp\\n' +\n      'xl9XOPRCJxOhj7JdelhpweX0BJDNHeUFi0ClnFOws8oKQ7sQEv66d5ddxqqZ3NVv\\n' +\n      'RbCvCtEutQMOUMIuaygDlMn1anSM8N7Wndx8G6+Uy67AnhjGx7jw/0YPPxopEj6x\\n' +\n      'JXP8j0sJbcT9K/9/fPVLNT25RvQ/93T2+IQL4Ca2\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIEBzCCAu+gAwIBAgICYpgwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\\n' +\n      'MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\\n' +\n      'DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\\n' +\n      'MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTExNzMx\\n' +\n      'NDhaFw0yNDA4MjIxNzA4NTBaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\\n' +\n      'aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\\n' +\n      'ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1h\\n' +\n      'em9uIFJEUyBldS13ZXN0LTEgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\\n' +\n      'ADCCAQoCggEBAMk3YdSZ64iAYp6MyyKtYJtNzv7zFSnnNf6vv0FB4VnfITTMmOyZ\\n' +\n      'LXqKAT2ahZ00hXi34ewqJElgU6eUZT/QlzdIu359TEZyLVPwURflL6SWgdG01Q5X\\n' +\n      'O++7fSGcBRyIeuQWs9FJNIIqK8daF6qw0Rl5TXfu7P9dBc3zkgDXZm2DHmxGDD69\\n' +\n      '7liQUiXzoE1q2Z9cA8+jirDioJxN9av8hQt12pskLQumhlArsMIhjhHRgF03HOh5\\n' +\n      'tvi+RCfihVOxELyIRTRpTNiIwAqfZxxTWFTgfn+gijTmd0/1DseAe82aYic8JbuS\\n' +\n      'EMbrDduAWsqrnJ4GPzxHKLXX0JasCUcWyMECAwEAAaNmMGQwDgYDVR0PAQH/BAQD\\n' +\n      'AgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFPLtsq1NrwJXO13C9eHt\\n' +\n      'sLY11AGwMB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqGSIb3\\n' +\n      'DQEBCwUAA4IBAQAnWBKj5xV1A1mYd0kIgDdkjCwQkiKF5bjIbGkT3YEFFbXoJlSP\\n' +\n      '0lZZ/hDaOHI8wbLT44SzOvPEEmWF9EE7SJzkvSdQrUAWR9FwDLaU427ALI3ngNHy\\n' +\n      'lGJ2hse1fvSRNbmg8Sc9GBv8oqNIBPVuw+AJzHTacZ1OkyLZrz1c1QvwvwN2a+Jd\\n' +\n      'vH0V0YIhv66llKcYDMUQJAQi4+8nbRxXWv6Gq3pvrFoorzsnkr42V3JpbhnYiK+9\\n' +\n      'nRKd4uWl62KRZjGkfMbmsqZpj2fdSWMY1UGyN1k+kDmCSWYdrTRDP0xjtIocwg+A\\n' +\n      'J116n4hV/5mbA0BaPiS2krtv17YAeHABZcvz\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIECjCCAvKgAwIBAgICV2YwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\\n' +\n      'MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\\n' +\n      'DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\\n' +\n      'MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTExOTM2\\n' +\n      'MjBaFw0yNDA4MjIxNzA4NTBaMIGXMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\\n' +\n      'aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\\n' +\n      'ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEoMCYGA1UEAwwfQW1h\\n' +\n      'em9uIFJEUyBldS1jZW50cmFsLTEgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQAD\\n' +\n      'ggEPADCCAQoCggEBAMEx54X2pHVv86APA0RWqxxRNmdkhAyp2R1cFWumKQRofoFv\\n' +\n      'n+SPXdkpIINpMuEIGJANozdiEz7SPsrAf8WHyD93j/ZxrdQftRcIGH41xasetKGl\\n' +\n      'I67uans8d+pgJgBKGb/Z+B5m+UsIuEVekpvgpwKtmmaLFC/NCGuSsJoFsRqoa6Gh\\n' +\n      'm34W6yJoY87UatddCqLY4IIXaBFsgK9Q/wYzYLbnWM6ZZvhJ52VMtdhcdzeTHNW0\\n' +\n      '5LGuXJOF7Ahb4JkEhoo6TS2c0NxB4l4MBfBPgti+O7WjR3FfZHpt18A6Zkq6A2u6\\n' +\n      'D/oTSL6c9/3sAaFTFgMyL3wHb2YlW0BPiljZIqECAwEAAaNmMGQwDgYDVR0PAQH/\\n' +\n      'BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFOcAToAc6skWffJa\\n' +\n      'TnreaswAfrbcMB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqG\\n' +\n      'SIb3DQEBCwUAA4IBAQA1d0Whc1QtspK496mFWfFEQNegLh0a9GWYlJm+Htcj5Nxt\\n' +\n      'DAIGXb+8xrtOZFHmYP7VLCT5Zd2C+XytqseK/+s07iAr0/EPF+O2qcyQWMN5KhgE\\n' +\n      'cXw2SwuP9FPV3i+YAm11PBVeenrmzuk9NrdHQ7TxU4v7VGhcsd2C++0EisrmquWH\\n' +\n      'mgIfmVDGxphwoES52cY6t3fbnXmTkvENvR+h3rj+fUiSz0aSo+XZUGHPgvuEKM/W\\n' +\n      'CBD9Smc9CBoBgvy7BgHRgRUmwtABZHFUIEjHI5rIr7ZvYn+6A0O6sogRfvVYtWFc\\n' +\n      'qpyrW1YX8mD0VlJ8fGKM3G+aCOsiiPKDV/Uafrm+\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIECDCCAvCgAwIBAgICGAcwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\\n' +\n      'MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\\n' +\n      'DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\\n' +\n      'MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTIxODE5\\n' +\n      'NDRaFw0yNDA4MjIxNzA4NTBaMIGVMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\\n' +\n      'aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\\n' +\n      'ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEmMCQGA1UEAwwdQW1h\\n' +\n      'em9uIFJEUyBldS1ub3J0aC0xIDIwMTkgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IB\\n' +\n      'DwAwggEKAoIBAQCiIYnhe4UNBbdBb/nQxl5giM0XoVHWNrYV5nB0YukA98+TPn9v\\n' +\n      'Aoj1RGYmtryjhrf01Kuv8SWO+Eom95L3zquoTFcE2gmxCfk7bp6qJJ3eHOJB+QUO\\n' +\n      'XsNRh76fwDzEF1yTeZWH49oeL2xO13EAx4PbZuZpZBttBM5zAxgZkqu4uWQczFEs\\n' +\n      'JXfla7z2fvWmGcTagX10O5C18XaFroV0ubvSyIi75ue9ykg/nlFAeB7O0Wxae88e\\n' +\n      'uhiBEFAuLYdqWnsg3459NfV8Yi1GnaitTym6VI3tHKIFiUvkSiy0DAlAGV2iiyJE\\n' +\n      'q+DsVEO4/hSINJEtII4TMtysOsYPpINqeEzRAgMBAAGjZjBkMA4GA1UdDwEB/wQE\\n' +\n      'AwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBRR0UpnbQyjnHChgmOc\\n' +\n      'hnlc0PogzTAfBgNVHSMEGDAWgBRzX2DYvMsDmPQrFzQuNlqmYP+8HzANBgkqhkiG\\n' +\n      '9w0BAQsFAAOCAQEAKJD4xVzSf4zSGTBJrmamo86jl1NHQxXUApAZuBZEc8tqC6TI\\n' +\n      'T5CeoSr9CMuVC8grYyBjXblC4OsM5NMvmsrXl/u5C9dEwtBFjo8mm53rOOIm1fxl\\n' +\n      'I1oYB/9mtO9ANWjkykuLzWeBlqDT/i7ckaKwalhLODsRDO73vRhYNjsIUGloNsKe\\n' +\n      'pxw3dzHwAZx4upSdEVG4RGCZ1D0LJ4Gw40OfD69hfkDfRVVxKGrbEzqxXRvovmDc\\n' +\n      'tKLdYZO/6REoca36v4BlgIs1CbUXJGLSXUwtg7YXGLSVBJ/U0+22iGJmBSNcoyUN\\n' +\n      'cjPFD9JQEhDDIYYKSGzIYpvslvGc4T5ISXFiuQ==\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIEBzCCAu+gAwIBAgICZIEwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\\n' +\n      'MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\\n' +\n      'DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\\n' +\n      'MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTIyMTMy\\n' +\n      'MzJaFw0yNDA4MjIxNzA4NTBaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\\n' +\n      'aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\\n' +\n      'ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1h\\n' +\n      'em9uIFJEUyBldS13ZXN0LTIgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\\n' +\n      'ADCCAQoCggEBALGiwqjiF7xIjT0Sx7zB3764K2T2a1DHnAxEOr+/EIftWKxWzT3u\\n' +\n      'PFwS2eEZcnKqSdRQ+vRzonLBeNLO4z8aLjQnNbkizZMBuXGm4BqRm1Kgq3nlLDQn\\n' +\n      '7YqdijOq54SpShvR/8zsO4sgMDMmHIYAJJOJqBdaus2smRt0NobIKc0liy7759KB\\n' +\n      '6kmQ47Gg+kfIwxrQA5zlvPLeQImxSoPi9LdbRoKvu7Iot7SOa+jGhVBh3VdqndJX\\n' +\n      '7tm/saj4NE375csmMETFLAOXjat7zViMRwVorX4V6AzEg1vkzxXpA9N7qywWIT5Y\\n' +\n      'fYaq5M8i6vvLg0CzrH9fHORtnkdjdu1y+0MCAwEAAaNmMGQwDgYDVR0PAQH/BAQD\\n' +\n      'AgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFFOhOx1yt3Z7mvGB9jBv\\n' +\n      '2ymdZwiOMB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqGSIb3\\n' +\n      'DQEBCwUAA4IBAQBehqY36UGDvPVU9+vtaYGr38dBbp+LzkjZzHwKT1XJSSUc2wqM\\n' +\n      'hnCIQKilonrTIvP1vmkQi8qHPvDRtBZKqvz/AErW/ZwQdZzqYNFd+BmOXaeZWV0Q\\n' +\n      'oHtDzXmcwtP8aUQpxN0e1xkWb1E80qoy+0uuRqb/50b/R4Q5qqSfJhkn6z8nwB10\\n' +\n      '7RjLtJPrK8igxdpr3tGUzfAOyiPrIDncY7UJaL84GFp7WWAkH0WG3H8Y8DRcRXOU\\n' +\n      'mqDxDLUP3rNuow3jnGxiUY+gGX5OqaZg4f4P6QzOSmeQYs6nLpH0PiN00+oS1BbD\\n' +\n      'bpWdZEttILPI+vAYkU4QuBKKDjJL6HbSd+cn\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIECDCCAvCgAwIBAgIDAIVCMA0GCSqGSIb3DQEBCwUAMIGPMQswCQYDVQQGEwJV\\n' +\n      'UzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEiMCAGA1UE\\n' +\n      'CgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJE\\n' +\n      'UzEgMB4GA1UEAwwXQW1hem9uIFJEUyBSb290IDIwMTkgQ0EwHhcNMTkwOTEzMTcw\\n' +\n      'NjQxWhcNMjQwODIyMTcwODUwWjCBlDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCldh\\n' +\n      'c2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUFtYXpvbiBXZWIg\\n' +\n      'U2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxJTAjBgNVBAMMHEFt\\n' +\n      'YXpvbiBSRFMgdXMtZWFzdC0yIDIwMTkgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IB\\n' +\n      'DwAwggEKAoIBAQDE+T2xYjUbxOp+pv+gRA3FO24+1zCWgXTDF1DHrh1lsPg5k7ht\\n' +\n      '2KPYzNc+Vg4E+jgPiW0BQnA6jStX5EqVh8BU60zELlxMNvpg4KumniMCZ3krtMUC\\n' +\n      'au1NF9rM7HBh+O+DYMBLK5eSIVt6lZosOb7bCi3V6wMLA8YqWSWqabkxwN4w0vXI\\n' +\n      '8lu5uXXFRemHnlNf+yA/4YtN4uaAyd0ami9+klwdkZfkrDOaiy59haOeBGL8EB/c\\n' +\n      'dbJJlguHH5CpCscs3RKtOOjEonXnKXldxarFdkMzi+aIIjQ8GyUOSAXHtQHb3gZ4\\n' +\n      'nS6Ey0CMlwkB8vUObZU9fnjKJcL5QCQqOfwvAgMBAAGjZjBkMA4GA1UdDwEB/wQE\\n' +\n      'AwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBQUPuRHohPxx4VjykmH\\n' +\n      '6usGrLL1ETAfBgNVHSMEGDAWgBRzX2DYvMsDmPQrFzQuNlqmYP+8HzANBgkqhkiG\\n' +\n      '9w0BAQsFAAOCAQEAUdR9Vb3y33Yj6X6KGtuthZ08SwjImVQPtknzpajNE5jOJAh8\\n' +\n      'quvQnU9nlnMO85fVDU1Dz3lLHGJ/YG1pt1Cqq2QQ200JcWCvBRgdvH6MjHoDQpqZ\\n' +\n      'HvQ3vLgOGqCLNQKFuet9BdpsHzsctKvCVaeBqbGpeCtt3Hh/26tgx0rorPLw90A2\\n' +\n      'V8QSkZJjlcKkLa58N5CMM8Xz8KLWg3MZeT4DmlUXVCukqK2RGuP2L+aME8dOxqNv\\n' +\n      'OnOz1zrL5mR2iJoDpk8+VE/eBDmJX40IJk6jBjWoxAO/RXq+vBozuF5YHN1ujE92\\n' +\n      'tO8HItgTp37XT8bJBAiAnt5mxw+NLSqtxk2QdQ==\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIEDDCCAvSgAwIBAgICY4kwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\\n' +\n      'MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\\n' +\n      'DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\\n' +\n      'MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTMyMDEx\\n' +\n      'NDJaFw0yNDA4MjIxNzA4NTBaMIGZMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\\n' +\n      'aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\\n' +\n      'ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEqMCgGA1UEAwwhQW1h\\n' +\n      'em9uIFJEUyBhcC1zb3V0aGVhc3QtMSAyMDE5IENBMIIBIjANBgkqhkiG9w0BAQEF\\n' +\n      'AAOCAQ8AMIIBCgKCAQEAr5u9OuLL/OF/fBNUX2kINJLzFl4DnmrhnLuSeSnBPgbb\\n' +\n      'qddjf5EFFJBfv7IYiIWEFPDbDG5hoBwgMup5bZDbas+ZTJTotnnxVJTQ6wlhTmns\\n' +\n      'eHECcg2pqGIKGrxZfbQhlj08/4nNAPvyYCTS0bEcmQ1emuDPyvJBYDDLDU6AbCB5\\n' +\n      '6Z7YKFQPTiCBblvvNzchjLWF9IpkqiTsPHiEt21sAdABxj9ityStV3ja/W9BfgxH\\n' +\n      'wzABSTAQT6FbDwmQMo7dcFOPRX+hewQSic2Rn1XYjmNYzgEHisdUsH7eeXREAcTw\\n' +\n      '61TRvaLH8AiOWBnTEJXPAe6wYfrcSd1pD0MXpoB62wIDAQABo2YwZDAOBgNVHQ8B\\n' +\n      'Af8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUytwMiomQOgX5\\n' +\n      'Ichd+2lDWRUhkikwHwYDVR0jBBgwFoAUc19g2LzLA5j0Kxc0LjZapmD/vB8wDQYJ\\n' +\n      'KoZIhvcNAQELBQADggEBACf6lRDpfCD7BFRqiWM45hqIzffIaysmVfr+Jr+fBTjP\\n' +\n      'uYe/ba1omSrNGG23bOcT9LJ8hkQJ9d+FxUwYyICQNWOy6ejicm4z0C3VhphbTPqj\\n' +\n      'yjpt9nG56IAcV8BcRJh4o/2IfLNzC/dVuYJV8wj7XzwlvjysenwdrJCoLadkTr1h\\n' +\n      'eIdG6Le07sB9IxrGJL9e04afk37h7c8ESGSE4E+oS4JQEi3ATq8ne1B9DQ9SasXi\\n' +\n      'IRmhNAaISDzOPdyLXi9N9V9Lwe/DHcja7hgLGYx3UqfjhLhOKwp8HtoZORixAmOI\\n' +\n      'HfILgNmwyugAbuZoCazSKKBhQ0wgO0WZ66ZKTMG8Oho=\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIEBzCCAu+gAwIBAgICUYkwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\\n' +\n      'MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\\n' +\n      'DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\\n' +\n      'MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTYxODIx\\n' +\n      'MTVaFw0yNDA4MjIxNzA4NTBaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\\n' +\n      'aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\\n' +\n      'ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1h\\n' +\n      'em9uIFJEUyB1cy13ZXN0LTIgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\\n' +\n      'ADCCAQoCggEBANCEZBZyu6yJQFZBJmSUZfSZd3Ui2gitczMKC4FLr0QzkbxY+cLa\\n' +\n      'uVONIOrPt4Rwi+3h/UdnUg917xao3S53XDf1TDMFEYp4U8EFPXqCn/GXBIWlU86P\\n' +\n      'PvBN+gzw3nS+aco7WXb+woTouvFVkk8FGU7J532llW8o/9ydQyDIMtdIkKTuMfho\\n' +\n      'OiNHSaNc+QXQ32TgvM9A/6q7ksUoNXGCP8hDOkSZ/YOLiI5TcdLh/aWj00ziL5bj\\n' +\n      'pvytiMZkilnc9dLY9QhRNr0vGqL0xjmWdoEXz9/OwjmCihHqJq+20MJPsvFm7D6a\\n' +\n      '2NKybR9U+ddrjb8/iyLOjURUZnj5O+2+OPcCAwEAAaNmMGQwDgYDVR0PAQH/BAQD\\n' +\n      'AgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFEBxMBdv81xuzqcK5TVu\\n' +\n      'pHj+Aor8MB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqGSIb3\\n' +\n      'DQEBCwUAA4IBAQBZkfiVqGoJjBI37aTlLOSjLcjI75L5wBrwO39q+B4cwcmpj58P\\n' +\n      '3sivv+jhYfAGEbQnGRzjuFoyPzWnZ1DesRExX+wrmHsLLQbF2kVjLZhEJMHF9eB7\\n' +\n      'GZlTPdTzHErcnuXkwA/OqyXMpj9aghcQFuhCNguEfnROY9sAoK2PTfnTz9NJHL+Q\\n' +\n      'UpDLEJEUfc0GZMVWYhahc0x38ZnSY2SKacIPECQrTI0KpqZv/P+ijCEcMD9xmYEb\\n' +\n      'jL4en+XKS1uJpw5fIU5Sj0MxhdGstH6S84iAE5J3GM3XHklGSFwwqPYvuTXvANH6\\n' +\n      'uboynxRgSae59jIlAK6Jrr6GWMwQRbgcaAlW\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIEDDCCAvSgAwIBAgICEkYwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\\n' +\n      'MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\\n' +\n      'DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\\n' +\n      'MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTYxOTUz\\n' +\n      'NDdaFw0yNDA4MjIxNzA4NTBaMIGZMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\\n' +\n      'aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\\n' +\n      'ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEqMCgGA1UEAwwhQW1h\\n' +\n      'em9uIFJEUyBhcC1zb3V0aGVhc3QtMiAyMDE5IENBMIIBIjANBgkqhkiG9w0BAQEF\\n' +\n      'AAOCAQ8AMIIBCgKCAQEAufodI2Flker8q7PXZG0P0vmFSlhQDw907A6eJuF/WeMo\\n' +\n      'GHnll3b4S6nC3oRS3nGeRMHbyU2KKXDwXNb3Mheu+ox+n5eb/BJ17eoj9HbQR1cd\\n' +\n      'gEkIciiAltf8gpMMQH4anP7TD+HNFlZnP7ii3geEJB2GGXSxgSWvUzH4etL67Zmn\\n' +\n      'TpGDWQMB0T8lK2ziLCMF4XAC/8xDELN/buHCNuhDpxpPebhct0T+f6Arzsiswt2j\\n' +\n      '7OeNeLLZwIZvVwAKF7zUFjC6m7/VmTQC8nidVY559D6l0UhhU0Co/txgq3HVsMOH\\n' +\n      'PbxmQUwJEKAzQXoIi+4uZzHFZrvov/nDTNJUhC6DqwIDAQABo2YwZDAOBgNVHQ8B\\n' +\n      'Af8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUwaZpaCme+EiV\\n' +\n      'M5gcjeHZSTgOn4owHwYDVR0jBBgwFoAUc19g2LzLA5j0Kxc0LjZapmD/vB8wDQYJ\\n' +\n      'KoZIhvcNAQELBQADggEBAAR6a2meCZuXO2TF9bGqKGtZmaah4pH2ETcEVUjkvXVz\\n' +\n      'sl+ZKbYjrun+VkcMGGKLUjS812e7eDF726ptoku9/PZZIxlJB0isC/0OyixI8N4M\\n' +\n      'NsEyvp52XN9QundTjkl362bomPnHAApeU0mRbMDRR2JdT70u6yAzGLGsUwMkoNnw\\n' +\n      '1VR4XKhXHYGWo7KMvFrZ1KcjWhubxLHxZWXRulPVtGmyWg/MvE6KF+2XMLhojhUL\\n' +\n      '+9jB3Fpn53s6KMx5tVq1x8PukHmowcZuAF8k+W4gk8Y68wIwynrdZrKRyRv6CVtR\\n' +\n      'FZ8DeJgoNZT3y/GT254VqMxxfuy2Ccb/RInd16tEvVk=\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIEDDCCAvSgAwIBAgICOYIwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\\n' +\n      'MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\\n' +\n      'DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\\n' +\n      'MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTcyMDA1\\n' +\n      'MjlaFw0yNDA4MjIxNzA4NTBaMIGZMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\\n' +\n      'aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\\n' +\n      'ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEqMCgGA1UEAwwhQW1h\\n' +\n      'em9uIFJEUyBhcC1ub3J0aGVhc3QtMyAyMDE5IENBMIIBIjANBgkqhkiG9w0BAQEF\\n' +\n      'AAOCAQ8AMIIBCgKCAQEA4dMak8W+XW8y/2F6nRiytFiA4XLwePadqWebGtlIgyCS\\n' +\n      'kbug8Jv5w7nlMkuxOxoUeD4WhI6A9EkAn3r0REM/2f0aYnd2KPxeqS2MrtdxxHw1\\n' +\n      'xoOxk2x0piNSlOz6yog1idsKR5Wurf94fvM9FdTrMYPPrDabbGqiBMsZZmoHLvA3\\n' +\n      'Z+57HEV2tU0Ei3vWeGIqnNjIekS+E06KhASxrkNU5vi611UsnYZlSi0VtJsH4UGV\\n' +\n      'LhnHl53aZL0YFO5mn/fzuNG/51qgk/6EFMMhaWInXX49Dia9FnnuWXwVwi6uX1Wn\\n' +\n      '7kjoHi5VtmC8ZlGEHroxX2DxEr6bhJTEpcLMnoQMqwIDAQABo2YwZDAOBgNVHQ8B\\n' +\n      'Af8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUsUI5Cb3SWB8+\\n' +\n      'gv1YLN/ABPMdxSAwHwYDVR0jBBgwFoAUc19g2LzLA5j0Kxc0LjZapmD/vB8wDQYJ\\n' +\n      'KoZIhvcNAQELBQADggEBAJAF3E9PM1uzVL8YNdzb6fwJrxxqI2shvaMVmC1mXS+w\\n' +\n      'G0zh4v2hBZOf91l1EO0rwFD7+fxoI6hzQfMxIczh875T6vUXePKVOCOKI5wCrDad\\n' +\n      'zQbVqbFbdhsBjF4aUilOdtw2qjjs9JwPuB0VXN4/jY7m21oKEOcnpe36+7OiSPjN\\n' +\n      'xngYewCXKrSRqoj3mw+0w/+exYj3Wsush7uFssX18av78G+ehKPIVDXptOCP/N7W\\n' +\n      '8iKVNeQ2QGTnu2fzWsGUSvMGyM7yqT+h1ILaT//yQS8er511aHMLc142bD4D9VSy\\n' +\n      'DgactwPDTShK/PXqhvNey9v/sKXm4XatZvwcc8KYlW4=\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIEDDCCAvSgAwIBAgICcEUwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\\n' +\n      'MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\\n' +\n      'DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\\n' +\n      'MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTgxNjU2\\n' +\n      'MjBaFw0yNDA4MjIxNzA4NTBaMIGZMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\\n' +\n      'aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\\n' +\n      'ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEqMCgGA1UEAwwhQW1h\\n' +\n      'em9uIFJEUyBhcC1ub3J0aGVhc3QtMSAyMDE5IENBMIIBIjANBgkqhkiG9w0BAQEF\\n' +\n      'AAOCAQ8AMIIBCgKCAQEAndtkldmHtk4TVQAyqhAvtEHSMb6pLhyKrIFved1WO3S7\\n' +\n      '+I+bWwv9b2W/ljJxLq9kdT43bhvzonNtI4a1LAohS6bqyirmk8sFfsWT3akb+4Sx\\n' +\n      '1sjc8Ovc9eqIWJCrUiSvv7+cS7ZTA9AgM1PxvHcsqrcUXiK3Jd/Dax9jdZE1e15s\\n' +\n      'BEhb2OEPE+tClFZ+soj8h8Pl2Clo5OAppEzYI4LmFKtp1X/BOf62k4jviXuCSst3\\n' +\n      'UnRJzE/CXtjmN6oZySVWSe0rQYuyqRl6//9nK40cfGKyxVnimB8XrrcxUN743Vud\\n' +\n      'QQVU0Esm8OVTX013mXWQXJHP2c0aKkog8LOga0vobQIDAQABo2YwZDAOBgNVHQ8B\\n' +\n      'Af8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQULmoOS1mFSjj+\\n' +\n      'snUPx4DgS3SkLFYwHwYDVR0jBBgwFoAUc19g2LzLA5j0Kxc0LjZapmD/vB8wDQYJ\\n' +\n      'KoZIhvcNAQELBQADggEBAAkVL2P1M2/G9GM3DANVAqYOwmX0Xk58YBHQu6iiQg4j\\n' +\n      'b4Ky/qsZIsgT7YBsZA4AOcPKQFgGTWhe9pvhmXqoN3RYltN8Vn7TbUm/ZVDoMsrM\\n' +\n      'gwv0+TKxW1/u7s8cXYfHPiTzVSJuOogHx99kBW6b2f99GbP7O1Sv3sLq4j6lVvBX\\n' +\n      'Fiacf5LAWC925nvlTzLlBgIc3O9xDtFeAGtZcEtxZJ4fnGXiqEnN4539+nqzIyYq\\n' +\n      'nvlgCzyvcfRAxwltrJHuuRu6Maw5AGcd2Y0saMhqOVq9KYKFKuD/927BTrbd2JVf\\n' +\n      '2sGWyuPZPCk3gq+5pCjbD0c6DkhcMGI6WwxvM5V/zSM=\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIEBzCCAu+gAwIBAgICJDQwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\\n' +\n      'MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\\n' +\n      'DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\\n' +\n      'MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTgxNzAz\\n' +\n      'MTVaFw0yNDA4MjIxNzA4NTBaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\\n' +\n      'aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\\n' +\n      'ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1h\\n' +\n      'em9uIFJEUyBldS13ZXN0LTMgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\\n' +\n      'ADCCAQoCggEBAL9bL7KE0n02DLVtlZ2PL+g/BuHpMYFq2JnE2RgompGurDIZdjmh\\n' +\n      '1pxfL3nT+QIVMubuAOy8InRfkRxfpxyjKYdfLJTPJG+jDVL+wDcPpACFVqoV7Prg\\n' +\n      'pVYEV0lc5aoYw4bSeYFhdzgim6F8iyjoPnObjll9mo4XsHzSoqJLCd0QC+VG9Fw2\\n' +\n      'q+GDRZrLRmVM2oNGDRbGpGIFg77aRxRapFZa8SnUgs2AqzuzKiprVH5i0S0M6dWr\\n' +\n      'i+kk5epmTtkiDHceX+dP/0R1NcnkCPoQ9TglyXyPdUdTPPRfKCq12dftqll+u4mV\\n' +\n      'ARdN6WFjovxax8EAP2OAUTi1afY+1JFMj+sCAwEAAaNmMGQwDgYDVR0PAQH/BAQD\\n' +\n      'AgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFLfhrbrO5exkCVgxW0x3\\n' +\n      'Y2mAi8lNMB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqGSIb3\\n' +\n      'DQEBCwUAA4IBAQAigQ5VBNGyw+OZFXwxeJEAUYaXVoP/qrhTOJ6mCE2DXUVEoJeV\\n' +\n      'SxScy/TlFA9tJXqmit8JH8VQ/xDL4ubBfeMFAIAo4WzNWDVoeVMqphVEcDWBHsI1\\n' +\n      'AETWzfsapRS9yQekOMmxg63d/nV8xewIl8aNVTHdHYXMqhhik47VrmaVEok1UQb3\\n' +\n      'O971RadLXIEbVd9tjY5bMEHm89JsZDnDEw1hQXBb67Elu64OOxoKaHBgUH8AZn/2\\n' +\n      'zFsL1ynNUjOhCSAA15pgd1vjwc0YsBbAEBPcHBWYBEyME6NLNarjOzBl4FMtATSF\\n' +\n      'wWCKRGkvqN8oxYhwR2jf2rR5Mu4DWkK5Q8Ep\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIEBzCCAu+gAwIBAgICJVUwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\\n' +\n      'MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\\n' +\n      'DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\\n' +\n      'MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTkxODE2\\n' +\n      'NTNaFw0yNDA4MjIxNzA4NTBaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\\n' +\n      'aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\\n' +\n      'ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1h\\n' +\n      'em9uIFJEUyB1cy1lYXN0LTEgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\\n' +\n      'ADCCAQoCggEBAM3i/k2u6cqbMdcISGRvh+m+L0yaSIoOXjtpNEoIftAipTUYoMhL\\n' +\n      'InXGlQBVA4shkekxp1N7HXe1Y/iMaPEyb3n+16pf3vdjKl7kaSkIhjdUz3oVUEYt\\n' +\n      'i8Z/XeJJ9H2aEGuiZh3kHixQcZczn8cg3dA9aeeyLSEnTkl/npzLf//669Ammyhs\\n' +\n      'XcAo58yvT0D4E0D/EEHf2N7HRX7j/TlyWvw/39SW0usiCrHPKDLxByLojxLdHzso\\n' +\n      'QIp/S04m+eWn6rmD+uUiRteN1hI5ncQiA3wo4G37mHnUEKo6TtTUh+sd/ku6a8HK\\n' +\n      'glMBcgqudDI90s1OpuIAWmuWpY//8xEG2YECAwEAAaNmMGQwDgYDVR0PAQH/BAQD\\n' +\n      'AgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFPqhoWZcrVY9mU7tuemR\\n' +\n      'RBnQIj1jMB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqGSIb3\\n' +\n      'DQEBCwUAA4IBAQB6zOLZ+YINEs72heHIWlPZ8c6WY8MDU+Be5w1M+BK2kpcVhCUK\\n' +\n      'PJO4nMXpgamEX8DIiaO7emsunwJzMSvavSPRnxXXTKIc0i/g1EbiDjnYX9d85DkC\\n' +\n      'E1LaAUCmCZBVi9fIe0H2r9whIh4uLWZA41oMnJx/MOmo3XyMfQoWcqaSFlMqfZM4\\n' +\n      '0rNoB/tdHLNuV4eIdaw2mlHxdWDtF4oH+HFm+2cVBUVC1jXKrFv/euRVtsTT+A6i\\n' +\n      'h2XBHKxQ1Y4HgAn0jACP2QSPEmuoQEIa57bEKEcZsBR8SDY6ZdTd2HLRIApcCOSF\\n' +\n      'MRM8CKLeF658I0XgF8D5EsYoKPsA+74Z+jDH\\n' +\n      '-----END CERTIFICATE-----\\n',\n    '-----BEGIN CERTIFICATE-----\\n' +\n      'MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF\\n' +\n      'ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6\\n' +\n      'b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL\\n' +\n      'MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv\\n' +\n      'b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj\\n' +\n      'ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM\\n' +\n      '9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw\\n' +\n      'IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6\\n' +\n      'VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L\\n' +\n      '93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm\\n' +\n      'jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC\\n' +\n      'AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA\\n' +\n      'A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI\\n' +\n      'U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs\\n' +\n      'N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv\\n' +\n      'o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU\\n' +\n      '5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy\\n' +\n      'rqXRfboQnoZsG4q5WTP468SQvvG5\\n' +\n      '-----END CERTIFICATE-----\\n'\n  ]\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/constants/ssl_profiles.js?")},"./node_modules/mysql2/lib/constants/types.js":
/*!****************************************************!*\
  !*** ./node_modules/mysql2/lib/constants/types.js ***!
  \****************************************************/(__unused_webpack_module,exports)=>{"use strict";eval("\n\n// Manually extracted from mysql-5.5.23/include/mysql_com.h\n// some more info here: http://dev.mysql.com/doc/refman/5.5/en/c-api-prepared-statement-type-codes.html\nexports.DECIMAL = 0x00; // aka DECIMAL (http://dev.mysql.com/doc/refman/5.0/en/precision-math-decimal-changes.html)\nexports.TINY = 0x01; // aka TINYINT, 1 byte\nexports.SHORT = 0x02; // aka SMALLINT, 2 bytes\nexports.LONG = 0x03; // aka INT, 4 bytes\nexports.FLOAT = 0x04; // aka FLOAT, 4-8 bytes\nexports.DOUBLE = 0x05; // aka DOUBLE, 8 bytes\nexports.NULL = 0x06; // NULL (used for prepared statements, I think)\nexports.TIMESTAMP = 0x07; // aka TIMESTAMP\nexports.LONGLONG = 0x08; // aka BIGINT, 8 bytes\nexports.INT24 = 0x09; // aka MEDIUMINT, 3 bytes\nexports.DATE = 0x0a; // aka DATE\nexports.TIME = 0x0b; // aka TIME\nexports.DATETIME = 0x0c; // aka DATETIME\nexports.YEAR = 0x0d; // aka YEAR, 1 byte (don't ask)\nexports.NEWDATE = 0x0e; // aka ?\nexports.VARCHAR = 0x0f; // aka VARCHAR (?)\nexports.BIT = 0x10; // aka BIT, 1-8 byte\nexports.JSON = 0xf5;\nexports.NEWDECIMAL = 0xf6; // aka DECIMAL\nexports.ENUM = 0xf7; // aka ENUM\nexports.SET = 0xf8; // aka SET\nexports.TINY_BLOB = 0xf9; // aka TINYBLOB, TINYTEXT\nexports.MEDIUM_BLOB = 0xfa; // aka MEDIUMBLOB, MEDIUMTEXT\nexports.LONG_BLOB = 0xfb; // aka LONGBLOG, LONGTEXT\nexports.BLOB = 0xfc; // aka BLOB, TEXT\nexports.VAR_STRING = 0xfd; // aka VARCHAR, VARBINARY\nexports.STRING = 0xfe; // aka CHAR, BINARY\nexports.GEOMETRY = 0xff; // aka GEOMETRY\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/constants/types.js?")},"./node_modules/mysql2/lib/helpers.js":
/*!********************************************!*\
  !*** ./node_modules/mysql2/lib/helpers.js ***!
  \********************************************/(__unused_webpack_module,exports)=>{"use strict";eval("\n\n/*\n\n  this seems to be not only shorter, but faster than\n  string.replace(/\\\\/g, '\\\\\\\\').\n            replace(/\\u0008/g, '\\\\b').\n            replace(/\\t/g, '\\\\t').\n            replace(/\\n/g, '\\\\n').\n            replace(/\\f/g, '\\\\f').\n            replace(/\\r/g, '\\\\r').\n            replace(/'/g, '\\\\\\'').\n            replace(/\"/g, '\\\\\"');\n  or string.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\")\n  see http://jsperf.com/string-escape-regexp-vs-json-stringify\n  */\nfunction srcEscape(str) {\n  return JSON.stringify({\n    [str]: 1\n  }).slice(1, -3);\n}\n\nexports.srcEscape = srcEscape;\n\nlet highlightFn;\nlet cardinalRecommended = false;\ntry {\n  highlightFn = Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'cardinal'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }());\n} catch (err) {\n  highlightFn = text => {\n    if (!cardinalRecommended) {\n      // eslint-disable-next-line no-console\n      console.log('For nicer debug output consider install cardinal@^2.0.0');\n      cardinalRecommended = true;\n    }\n    return text;\n  };\n}\n\n/**\n * Prints debug message with code frame, will try to use `cardinal` if available.\n */\nfunction printDebugWithCode(msg, code) {\n  // eslint-disable-next-line no-console\n  console.log(`\\n\\n${msg}:\\n`);\n  // eslint-disable-next-line no-console\n  console.log(`${highlightFn(code)}\\n`);\n}\n\nexports.printDebugWithCode = printDebugWithCode;\n\n/**\n * checks whether the `type` is in the `list`\n */\nfunction typeMatch(type, list, Types) {\n  if (Array.isArray(list)) {\n    return list.some(t => type === Types[t]);\n  }\n\n  return !!list;\n}\n\nexports.typeMatch = typeMatch;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/helpers.js?")},"./node_modules/mysql2/lib/packet_parser.js":
/*!**************************************************!*\
  !*** ./node_modules/mysql2/lib/packet_parser.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Packet = __webpack_require__(/*! ./packets/packet.js */ \"./node_modules/mysql2/lib/packets/packet.js\");\n\nconst MAX_PACKET_LENGTH = 16777215;\n\nfunction readPacketLength(b, off) {\n  const b0 = b[off];\n  const b1 = b[off + 1];\n  const b2 = b[off + 2];\n  if (b1 + b2 === 0) {\n    return b0;\n  }\n  return b0 + (b1 << 8) + (b2 << 16);\n}\n\nclass PacketParser {\n  constructor(onPacket, packetHeaderLength) {\n    // 4 for normal packets, 7 for comprssed protocol packets\n    if (typeof packetHeaderLength === 'undefined') {\n      packetHeaderLength = 4;\n    }\n    // array of last payload chunks\n    // only used when current payload is not complete\n    this.buffer = [];\n    // total length of chunks on buffer\n    this.bufferLength = 0;\n    this.packetHeaderLength = packetHeaderLength;\n    // incomplete header state: number of header bytes received\n    this.headerLen = 0;\n    // expected payload length\n    this.length = 0;\n    this.largePacketParts = [];\n    this.firstPacketSequenceId = 0;\n    this.onPacket = onPacket;\n    this.execute = PacketParser.prototype.executeStart;\n    this._flushLargePacket =\n      packetHeaderLength === 7\n        ? this._flushLargePacket7\n        : this._flushLargePacket4;\n  }\n\n  _flushLargePacket4() {\n    const numPackets = this.largePacketParts.length;\n    this.largePacketParts.unshift(Buffer.from([0, 0, 0, 0])); // insert header\n    const body = Buffer.concat(this.largePacketParts);\n    const packet = new Packet(this.firstPacketSequenceId, body, 0, body.length);\n    this.largePacketParts.length = 0;\n    packet.numPackets = numPackets;\n    this.onPacket(packet);\n  }\n\n  _flushLargePacket7() {\n    const numPackets = this.largePacketParts.length;\n    this.largePacketParts.unshift(Buffer.from([0, 0, 0, 0, 0, 0, 0])); // insert header\n    const body = Buffer.concat(this.largePacketParts);\n    this.largePacketParts.length = 0;\n    const packet = new Packet(this.firstPacketSequenceId, body, 0, body.length);\n    packet.numPackets = numPackets;\n    this.onPacket(packet);\n  }\n\n  executeStart(chunk) {\n    let start = 0;\n    const end = chunk.length;\n    while (end - start >= 3) {\n      this.length = readPacketLength(chunk, start);\n      if (end - start >= this.length + this.packetHeaderLength) {\n        // at least one full packet\n        const sequenceId = chunk[start + 3];\n        if (\n          this.length < MAX_PACKET_LENGTH &&\n          this.largePacketParts.length === 0\n        ) {\n          this.onPacket(\n            new Packet(\n              sequenceId,\n              chunk,\n              start,\n              start + this.packetHeaderLength + this.length\n            )\n          );\n        } else {\n          // first large packet - remember it's id\n          if (this.largePacketParts.length === 0) {\n            this.firstPacketSequenceId = sequenceId;\n          }\n          this.largePacketParts.push(\n            chunk.slice(\n              start + this.packetHeaderLength,\n              start + this.packetHeaderLength + this.length\n            )\n          );\n          if (this.length < MAX_PACKET_LENGTH) {\n            this._flushLargePacket();\n          }\n        }\n        start += this.packetHeaderLength + this.length;\n      } else {\n        // payload is incomplete\n        this.buffer = [chunk.slice(start + 3, end)];\n        this.bufferLength = end - start - 3;\n        this.execute = PacketParser.prototype.executePayload;\n        return;\n      }\n    }\n    if (end - start > 0) {\n      // there is start of length header, but it's not full 3 bytes\n      this.headerLen = end - start; // 1 or 2 bytes\n      this.length = chunk[start];\n      if (this.headerLen === 2) {\n        this.length = chunk[start] + (chunk[start + 1] << 8);\n        this.execute = PacketParser.prototype.executeHeader3;\n      } else {\n        this.execute = PacketParser.prototype.executeHeader2;\n      }\n    }\n  }\n\n  executePayload(chunk) {\n    let start = 0;\n    const end = chunk.length;\n    const remainingPayload =\n      this.length - this.bufferLength + this.packetHeaderLength - 3;\n    if (end - start >= remainingPayload) {\n      // last chunk for payload\n      const payload = Buffer.allocUnsafe(this.length + this.packetHeaderLength);\n      let offset = 3;\n      for (let i = 0; i < this.buffer.length; ++i) {\n        this.buffer[i].copy(payload, offset);\n        offset += this.buffer[i].length;\n      }\n      chunk.copy(payload, offset, start, start + remainingPayload);\n      const sequenceId = payload[3];\n      if (\n        this.length < MAX_PACKET_LENGTH &&\n        this.largePacketParts.length === 0\n      ) {\n        this.onPacket(\n          new Packet(\n            sequenceId,\n            payload,\n            0,\n            this.length + this.packetHeaderLength\n          )\n        );\n      } else {\n        // first large packet - remember it's id\n        if (this.largePacketParts.length === 0) {\n          this.firstPacketSequenceId = sequenceId;\n        }\n        this.largePacketParts.push(\n          payload.slice(\n            this.packetHeaderLength,\n            this.packetHeaderLength + this.length\n          )\n        );\n        if (this.length < MAX_PACKET_LENGTH) {\n          this._flushLargePacket();\n        }\n      }\n      this.buffer = [];\n      this.bufferLength = 0;\n      this.execute = PacketParser.prototype.executeStart;\n      start += remainingPayload;\n      if (end - start > 0) {\n        return this.execute(chunk.slice(start, end));\n      }\n    } else {\n      this.buffer.push(chunk);\n      this.bufferLength += chunk.length;\n    }\n    return null;\n  }\n\n  executeHeader2(chunk) {\n    this.length += chunk[0] << 8;\n    if (chunk.length > 1) {\n      this.length += chunk[1] << 16;\n      this.execute = PacketParser.prototype.executePayload;\n      return this.executePayload(chunk.slice(2));\n    } \n    this.execute = PacketParser.prototype.executeHeader3;\n    \n    return null;\n  }\n\n  executeHeader3(chunk) {\n    this.length += chunk[0] << 16;\n    this.execute = PacketParser.prototype.executePayload;\n    return this.executePayload(chunk.slice(1));\n  }\n}\n\nmodule.exports = PacketParser;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/packet_parser.js?")},"./node_modules/mysql2/lib/packets/auth_switch_request.js":
/*!****************************************************************!*\
  !*** ./node_modules/mysql2/lib/packets/auth_switch_request.js ***!
  \****************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n// http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::AuthSwitchRequest\n\nconst Packet = __webpack_require__(/*! ../packets/packet */ \"./node_modules/mysql2/lib/packets/packet.js\");\n\nclass AuthSwitchRequest {\n  constructor(opts) {\n    this.pluginName = opts.pluginName;\n    this.pluginData = opts.pluginData;\n  }\n\n  toPacket() {\n    const length = 6 + this.pluginName.length + this.pluginData.length;\n    const buffer = Buffer.allocUnsafe(length);\n    const packet = new Packet(0, buffer, 0, length);\n    packet.offset = 4;\n    packet.writeInt8(0xfe);\n    // TODO: use server encoding\n    packet.writeNullTerminatedString(this.pluginName, 'cesu8');\n    packet.writeBuffer(this.pluginData);\n    return packet;\n  }\n\n  static fromPacket(packet) {\n    packet.readInt8(); // marker\n    // assert marker == 0xfe?\n    // TODO: use server encoding\n    const name = packet.readNullTerminatedString('cesu8');\n    const data = packet.readBuffer();\n    return new AuthSwitchRequest({\n      pluginName: name,\n      pluginData: data\n    });\n  }\n}\n\nmodule.exports = AuthSwitchRequest;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/packets/auth_switch_request.js?")},"./node_modules/mysql2/lib/packets/auth_switch_request_more_data.js":
/*!**************************************************************************!*\
  !*** ./node_modules/mysql2/lib/packets/auth_switch_request_more_data.js ***!
  \**************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\n// http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::AuthSwitchRequest\n\nconst Packet = __webpack_require__(/*! ../packets/packet */ "./node_modules/mysql2/lib/packets/packet.js");\n\nclass AuthSwitchRequestMoreData {\n  constructor(data) {\n    this.data = data;\n  }\n\n  toPacket() {\n    const length = 5 + this.data.length;\n    const buffer = Buffer.allocUnsafe(length);\n    const packet = new Packet(0, buffer, 0, length);\n    packet.offset = 4;\n    packet.writeInt8(0x01);\n    packet.writeBuffer(this.data);\n    return packet;\n  }\n\n  static fromPacket(packet) {\n    packet.readInt8(); // marker\n    const data = packet.readBuffer();\n    return new AuthSwitchRequestMoreData(data);\n  }\n\n  static verifyMarker(packet) {\n    return packet.peekByte() === 0x01;\n  }\n}\n\nmodule.exports = AuthSwitchRequestMoreData;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/packets/auth_switch_request_more_data.js?')},"./node_modules/mysql2/lib/packets/auth_switch_response.js":
/*!*****************************************************************!*\
  !*** ./node_modules/mysql2/lib/packets/auth_switch_response.js ***!
  \*****************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\n// http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::AuthSwitchRequest\n\nconst Packet = __webpack_require__(/*! ../packets/packet */ "./node_modules/mysql2/lib/packets/packet.js");\n\nclass AuthSwitchResponse {\n  constructor(data) {\n    if (!Buffer.isBuffer(data)) {\n      data = Buffer.from(data);\n    }\n    this.data = data;\n  }\n\n  toPacket() {\n    const length = 4 + this.data.length;\n    const buffer = Buffer.allocUnsafe(length);\n    const packet = new Packet(0, buffer, 0, length);\n    packet.offset = 4;\n    packet.writeBuffer(this.data);\n    return packet;\n  }\n\n  static fromPacket(packet) {\n    const data = packet.readBuffer();\n    return new AuthSwitchResponse(data);\n  }\n}\n\nmodule.exports = AuthSwitchResponse;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/packets/auth_switch_response.js?')},"./node_modules/mysql2/lib/packets/binary_row.js":
/*!*******************************************************!*\
  !*** ./node_modules/mysql2/lib/packets/binary_row.js ***!
  \*******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Types = __webpack_require__(/*! ../constants/types */ "./node_modules/mysql2/lib/constants/types.js");\nconst Packet = __webpack_require__(/*! ../packets/packet */ "./node_modules/mysql2/lib/packets/packet.js");\n\nconst binaryReader = new Array(256);\n\nclass BinaryRow {\n  constructor(columns) {\n    this.columns = columns || [];\n  }\n\n  toPacket() {\n    throw new Error(\'Not implemented\');\n  }\n\n  // TODO: complete list of types...\n  static fromPacket(fields, packet) {\n    const columns = new Array(fields.length);\n    packet.readInt8(); // TODO check it\'s 0\n    const nullBitmapLength = Math.floor((fields.length + 7 + 2) / 8);\n    // TODO: read and interpret null bitmap\n    packet.skip(nullBitmapLength);\n    for (let i = 0; i < columns.length; ++i) {\n      columns[i] = binaryReader[fields[i].columnType].apply(packet);\n    }\n    return new BinaryRow(columns);\n  }\n}\n\n// TODO: replace with constants.MYSQL_TYPE_*\nbinaryReader[Types.DECIMAL] = Packet.prototype.readLengthCodedString;\nbinaryReader[1] = Packet.prototype.readInt8; // tiny\nbinaryReader[2] = Packet.prototype.readInt16; // short\nbinaryReader[3] = Packet.prototype.readInt32; // long\nbinaryReader[4] = Packet.prototype.readFloat; // float\nbinaryReader[5] = Packet.prototype.readDouble; // double\nbinaryReader[6] = Packet.prototype.assertInvalid; // null, should be skipped vie null bitmap\nbinaryReader[7] = Packet.prototype.readTimestamp; // timestamp, http://dev.mysql.com/doc/internals/en/prepared-statements.html#packet-ProtocolBinary::MYSQL_TYPE_TIMESTAMP\nbinaryReader[8] = Packet.prototype.readInt64; // long long\nbinaryReader[9] = Packet.prototype.readInt32; // int24\nbinaryReader[10] = Packet.prototype.readTimestamp; // date\nbinaryReader[11] = Packet.prototype.readTime; // time, http://dev.mysql.com/doc/internals/en/prepared-statements.html#packet-ProtocolBinary::MYSQL_TYPE_TIME\nbinaryReader[12] = Packet.prototype.readDateTime; // datetime, http://dev.mysql.com/doc/internals/en/prepared-statements.html#packet-ProtocolBinary::MYSQL_TYPE_DATETIME\nbinaryReader[13] = Packet.prototype.readInt16; // year\nbinaryReader[Types.VAR_STRING] = Packet.prototype.readLengthCodedString; // var string\n\nmodule.exports = BinaryRow;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/packets/binary_row.js?')},"./node_modules/mysql2/lib/packets/binlog_dump.js":
/*!********************************************************!*\
  !*** ./node_modules/mysql2/lib/packets/binlog_dump.js ***!
  \********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n// http://dev.mysql.com/doc/internals/en/com-binlog-dump.html#packet-COM_BINLOG_DUMP\n\nconst Packet = __webpack_require__(/*! ../packets/packet */ \"./node_modules/mysql2/lib/packets/packet.js\");\nconst CommandCodes = __webpack_require__(/*! ../constants/commands */ \"./node_modules/mysql2/lib/constants/commands.js\");\n\n// TODO: add flag to constants\n// 0x01 - BINLOG_DUMP_NON_BLOCK\n// send EOF instead of blocking\nclass BinlogDump {\n  constructor(opts) {\n    this.binlogPos = opts.binlogPos || 0;\n    this.serverId = opts.serverId || 0;\n    this.flags = opts.flags || 0;\n    this.filename = opts.filename || '';\n  }\n\n  toPacket() {\n    const length = 15 + Buffer.byteLength(this.filename, 'utf8'); // TODO: should be ascii?\n    const buffer = Buffer.allocUnsafe(length);\n    const packet = new Packet(0, buffer, 0, length);\n    packet.offset = 4;\n    packet.writeInt8(CommandCodes.BINLOG_DUMP);\n    packet.writeInt32(this.binlogPos);\n    packet.writeInt16(this.flags);\n    packet.writeInt32(this.serverId);\n    packet.writeString(this.filename);\n    return packet;\n  }\n}\n\nmodule.exports = BinlogDump;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/packets/binlog_dump.js?")},"./node_modules/mysql2/lib/packets/binlog_query_statusvars.js":
/*!********************************************************************!*\
  !*** ./node_modules/mysql2/lib/packets/binlog_query_statusvars.js ***!
  \********************************************************************/module=>{"use strict";eval("\n\n// http://dev.mysql.com/doc/internals/en/query-event.html\n\nconst keys = {\n  FLAGS2: 0,\n  SQL_MODE: 1,\n  CATALOG: 2,\n  AUTO_INCREMENT: 3,\n  CHARSET: 4,\n  TIME_ZONE: 5,\n  CATALOG_NZ: 6,\n  LC_TIME_NAMES: 7,\n  CHARSET_DATABASE: 8,\n  TABLE_MAP_FOR_UPDATE: 9,\n  MASTER_DATA_WRITTEN: 10,\n  INVOKERS: 11,\n  UPDATED_DB_NAMES: 12,\n  MICROSECONDS: 3\n};\n\nmodule.exports = function parseStatusVars(buffer) {\n  const result = {};\n  let offset = 0;\n  let key, length, prevOffset;\n  while (offset < buffer.length) {\n    key = buffer[offset++];\n    switch (key) {\n      case keys.FLAGS2:\n        result.flags = buffer.readUInt32LE(offset);\n        offset += 4;\n        break;\n      case keys.SQL_MODE:\n        // value is 8 bytes, but all dcumented flags are in first 4 bytes\n        result.sqlMode = buffer.readUInt32LE(offset);\n        offset += 8;\n        break;\n      case keys.CATALOG:\n        length = buffer[offset++];\n        result.catalog = buffer.toString('utf8', offset, offset + length);\n        offset += length + 1; // null byte after string\n        break;\n      case keys.CHARSET:\n        result.clientCharset = buffer.readUInt16LE(offset);\n        result.connectionCollation = buffer.readUInt16LE(offset + 2);\n        result.serverCharset = buffer.readUInt16LE(offset + 4);\n        offset += 6;\n        break;\n      case keys.TIME_ZONE:\n        length = buffer[offset++];\n        result.timeZone = buffer.toString('utf8', offset, offset + length);\n        offset += length; // no null byte\n        break;\n      case keys.CATALOG_NZ:\n        length = buffer[offset++];\n        result.catalogNz = buffer.toString('utf8', offset, offset + length);\n        offset += length; // no null byte\n        break;\n      case keys.LC_TIME_NAMES:\n        result.lcTimeNames = buffer.readUInt16LE(offset);\n        offset += 2;\n        break;\n      case keys.CHARSET_DATABASE:\n        result.schemaCharset = buffer.readUInt16LE(offset);\n        offset += 2;\n        break;\n      case keys.TABLE_MAP_FOR_UPDATE:\n        result.mapForUpdate1 = buffer.readUInt32LE(offset);\n        result.mapForUpdate2 = buffer.readUInt32LE(offset + 4);\n        offset += 8;\n        break;\n      case keys.MASTER_DATA_WRITTEN:\n        result.masterDataWritten = buffer.readUInt32LE(offset);\n        offset += 4;\n        break;\n      case keys.INVOKERS:\n        length = buffer[offset++];\n        result.invokerUsername = buffer.toString(\n          'utf8',\n          offset,\n          offset + length\n        );\n        offset += length;\n        length = buffer[offset++];\n        result.invokerHostname = buffer.toString(\n          'utf8',\n          offset,\n          offset + length\n        );\n        offset += length;\n        break;\n      case keys.UPDATED_DB_NAMES:\n        length = buffer[offset++];\n        // length - number of null-terminated strings\n        result.updatedDBs = []; // we'll store them as array here\n        for (; length; --length) {\n          prevOffset = offset;\n          // fast forward to null terminating byte\n          while (buffer[offset++] && offset < buffer.length) {\n            // empty body, everything inside while condition\n          }\n          result.updatedDBs.push(\n            buffer.toString('utf8', prevOffset, offset - 1)\n          );\n        }\n        break;\n      case keys.MICROSECONDS:\n        result.microseconds =\n          // REVIEW: INVALID UNKNOWN VARIABLE!\n          buffer.readInt16LE(offset) + (buffer[offset + 2] << 16);\n        offset += 3;\n    }\n  }\n  return result;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/packets/binlog_query_statusvars.js?")},"./node_modules/mysql2/lib/packets/change_user.js":
/*!********************************************************!*\
  !*** ./node_modules/mysql2/lib/packets/change_user.js ***!
  \********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst CommandCode = __webpack_require__(/*! ../constants/commands.js */ \"./node_modules/mysql2/lib/constants/commands.js\");\nconst ClientConstants = __webpack_require__(/*! ../constants/client.js */ \"./node_modules/mysql2/lib/constants/client.js\");\nconst Packet = __webpack_require__(/*! ../packets/packet.js */ \"./node_modules/mysql2/lib/packets/packet.js\");\nconst auth41 = __webpack_require__(/*! ../auth_41.js */ \"./node_modules/mysql2/lib/auth_41.js\");\nconst CharsetToEncoding = __webpack_require__(/*! ../constants/charset_encodings.js */ \"./node_modules/mysql2/lib/constants/charset_encodings.js\");\n\n// https://dev.mysql.com/doc/internals/en/com-change-user.html#packet-COM_CHANGE_USER\nclass ChangeUser {\n  constructor(opts) {\n    this.flags = opts.flags;\n    this.user = opts.user || '';\n    this.database = opts.database || '';\n    this.password = opts.password || '';\n    this.passwordSha1 = opts.passwordSha1;\n    this.authPluginData1 = opts.authPluginData1;\n    this.authPluginData2 = opts.authPluginData2;\n    this.connectAttributes = opts.connectAttrinutes || {};\n    let authToken;\n    if (this.passwordSha1) {\n      authToken = auth41.calculateTokenFromPasswordSha(\n        this.passwordSha1,\n        this.authPluginData1,\n        this.authPluginData2\n      );\n    } else {\n      authToken = auth41.calculateToken(\n        this.password,\n        this.authPluginData1,\n        this.authPluginData2\n      );\n    }\n    this.authToken = authToken;\n    this.charsetNumber = opts.charsetNumber;\n  }\n\n  // TODO\n  // ChangeUser.fromPacket = function(packet)\n  // };\n  serializeToBuffer(buffer) {\n    const isSet = flag => this.flags & ClientConstants[flag];\n    const packet = new Packet(0, buffer, 0, buffer.length);\n    packet.offset = 4;\n    const encoding = CharsetToEncoding[this.charsetNumber];\n    packet.writeInt8(CommandCode.CHANGE_USER);\n    packet.writeNullTerminatedString(this.user, encoding);\n    if (isSet('SECURE_CONNECTION')) {\n      packet.writeInt8(this.authToken.length);\n      packet.writeBuffer(this.authToken);\n    } else {\n      packet.writeBuffer(this.authToken);\n      packet.writeInt8(0);\n    }\n    packet.writeNullTerminatedString(this.database, encoding);\n    packet.writeInt16(this.charsetNumber);\n    if (isSet('PLUGIN_AUTH')) {\n      // TODO: read this from parameters\n      packet.writeNullTerminatedString('mysql_native_password', 'latin1');\n    }\n    if (isSet('CONNECT_ATTRS')) {\n      const connectAttributes = this.connectAttributes;\n      const attrNames = Object.keys(connectAttributes);\n      let keysLength = 0;\n      for (let k = 0; k < attrNames.length; ++k) {\n        keysLength += Packet.lengthCodedStringLength(attrNames[k], encoding);\n        keysLength += Packet.lengthCodedStringLength(\n          connectAttributes[attrNames[k]],\n          encoding\n        );\n      }\n      packet.writeLengthCodedNumber(keysLength);\n      for (let k = 0; k < attrNames.length; ++k) {\n        packet.writeLengthCodedString(attrNames[k], encoding);\n        packet.writeLengthCodedString(\n          connectAttributes[attrNames[k]],\n          encoding\n        );\n      }\n    }\n    return packet;\n  }\n\n  toPacket() {\n    if (typeof this.user !== 'string') {\n      throw new Error('\"user\" connection config property must be a string');\n    }\n    if (typeof this.database !== 'string') {\n      throw new Error('\"database\" connection config property must be a string');\n    }\n    // dry run: calculate resulting packet length\n    const p = this.serializeToBuffer(Packet.MockBuffer());\n    return this.serializeToBuffer(Buffer.allocUnsafe(p.offset));\n  }\n}\n\nmodule.exports = ChangeUser;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/packets/change_user.js?")},"./node_modules/mysql2/lib/packets/close_statement.js":
/*!************************************************************!*\
  !*** ./node_modules/mysql2/lib/packets/close_statement.js ***!
  \************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Packet = __webpack_require__(/*! ../packets/packet */ "./node_modules/mysql2/lib/packets/packet.js");\nconst CommandCodes = __webpack_require__(/*! ../constants/commands */ "./node_modules/mysql2/lib/constants/commands.js");\n\nclass CloseStatement {\n  constructor(id) {\n    this.id = id;\n  }\n\n  // note: no response sent back\n  toPacket() {\n    const packet = new Packet(0, Buffer.allocUnsafe(9), 0, 9);\n    packet.offset = 4;\n    packet.writeInt8(CommandCodes.STMT_CLOSE);\n    packet.writeInt32(this.id);\n    return packet;\n  }\n}\n\nmodule.exports = CloseStatement;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/packets/close_statement.js?')},"./node_modules/mysql2/lib/packets/column_definition.js":
/*!**************************************************************!*\
  !*** ./node_modules/mysql2/lib/packets/column_definition.js ***!
  \**************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Packet = __webpack_require__(/*! ../packets/packet */ \"./node_modules/mysql2/lib/packets/packet.js\");\nconst StringParser = __webpack_require__(/*! ../parsers/string */ \"./node_modules/mysql2/lib/parsers/string.js\");\nconst CharsetToEncoding = __webpack_require__(/*! ../constants/charset_encodings.js */ \"./node_modules/mysql2/lib/constants/charset_encodings.js\");\n\nconst fields = ['catalog', 'schema', 'table', 'orgTable', 'name', 'orgName'];\n\n// creating JS string is relatively expensive (compared to\n// reading few bytes from buffer) because all string properties\n// except for name are unlikely to be used we postpone\n// string conversion until property access\n//\n// TODO: watch for integration benchmarks (one with real network buffer)\n// there could be bad side effect as keeping reference to a buffer makes it\n// sit in the memory longer (usually until final .query() callback)\n// Latest v8 perform much better in regard to bufferer -> string conversion,\n// at some point of time this optimisation might become unnecessary\n// see https://github.com/sidorares/node-mysql2/pull/137\n//\nclass ColumnDefinition {\n  constructor(packet, clientEncoding) {\n    this._buf = packet.buffer;\n    this._clientEncoding = clientEncoding;\n    this._catalogLength = packet.readLengthCodedNumber();\n    this._catalogStart = packet.offset;\n    packet.offset += this._catalogLength;\n    this._schemaLength = packet.readLengthCodedNumber();\n    this._schemaStart = packet.offset;\n    packet.offset += this._schemaLength;\n    this._tableLength = packet.readLengthCodedNumber();\n    this._tableStart = packet.offset;\n    packet.offset += this._tableLength;\n    this._orgTableLength = packet.readLengthCodedNumber();\n    this._orgTableStart = packet.offset;\n    packet.offset += this._orgTableLength;\n    // name is always used, don't make it lazy\n    const _nameLength = packet.readLengthCodedNumber();\n    const _nameStart = packet.offset;\n    packet.offset += _nameLength;\n    this._orgNameLength = packet.readLengthCodedNumber();\n    this._orgNameStart = packet.offset;\n    packet.offset += this._orgNameLength;\n    packet.skip(1); //  length of the following fields (always 0x0c)\n    this.characterSet = packet.readInt16();\n    this.encoding = CharsetToEncoding[this.characterSet];\n    this.name = StringParser.decode(\n      this._buf,\n      this.encoding === 'binary' ? this._clientEncoding : this.encoding,\n      _nameStart, \n      _nameStart + _nameLength\n    );\n    this.columnLength = packet.readInt32();\n    this.columnType = packet.readInt8();\n    this.flags = packet.readInt16();\n    this.decimals = packet.readInt8();\n  }\n\n  inspect() {\n    return {\n      catalog: this.catalog,\n      schema: this.schema,\n      name: this.name,\n      orgName: this.orgName,\n      table: this.table,\n      orgTable: this.orgTable,\n      characterSet: this.characterSet,\n      columnLength: this.columnLength,\n      columnType: this.columnType,\n      flags: this.flags,\n      decimals: this.decimals\n    };\n  }\n\n  static toPacket(column, sequenceId) {\n    let length = 17; // = 4 padding + 1 + 12 for the rest\n    fields.forEach(field => {\n      length += Packet.lengthCodedStringLength(\n        column[field],\n        CharsetToEncoding[column.characterSet]\n      );\n    });\n    const buffer = Buffer.allocUnsafe(length);\n\n    const packet = new Packet(sequenceId, buffer, 0, length);\n    function writeField(name) {\n      packet.writeLengthCodedString(\n        column[name],\n        CharsetToEncoding[column.characterSet]\n      );\n    }\n    packet.offset = 4;\n    fields.forEach(writeField);\n    packet.writeInt8(0x0c);\n    packet.writeInt16(column.characterSet);\n    packet.writeInt32(column.columnLength);\n    packet.writeInt8(column.columnType);\n    packet.writeInt16(column.flags);\n    packet.writeInt8(column.decimals);\n    packet.writeInt16(0); // filler\n    return packet;\n  }\n\n  // node-mysql compatibility: alias \"db\" to \"schema\"\n  get db() {\n    return this.schema;\n  }\n}\n\nconst addString = function(name) {\n  Object.defineProperty(ColumnDefinition.prototype, name, {\n    get: function() {\n      const start = this[`_${name}Start`];\n      const end = start + this[`_${name}Length`];\n      const val = StringParser.decode(\n        this._buf,\n        this.encoding === 'binary' ? this._clientEncoding : this.encoding,\n        start, \n        end\n      );\n      \n      Object.defineProperty(this, name, {\n        value: val,\n        writable: false,\n        configurable: false,\n        enumerable: false\n      });\n\n      return val;\n    }\n  });\n};\n\naddString('catalog');\naddString('schema');\naddString('table');\naddString('orgTable');\naddString('orgName');\n\nmodule.exports = ColumnDefinition;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/packets/column_definition.js?")},"./node_modules/mysql2/lib/packets/execute.js":
/*!****************************************************!*\
  !*** ./node_modules/mysql2/lib/packets/execute.js ***!
  \****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst CursorType = __webpack_require__(/*! ../constants/cursor */ \"./node_modules/mysql2/lib/constants/cursor.js\");\nconst CommandCodes = __webpack_require__(/*! ../constants/commands */ \"./node_modules/mysql2/lib/constants/commands.js\");\nconst Types = __webpack_require__(/*! ../constants/types */ \"./node_modules/mysql2/lib/constants/types.js\");\nconst Packet = __webpack_require__(/*! ../packets/packet */ \"./node_modules/mysql2/lib/packets/packet.js\");\nconst CharsetToEncoding = __webpack_require__(/*! ../constants/charset_encodings.js */ \"./node_modules/mysql2/lib/constants/charset_encodings.js\");\n\nfunction isJSON(value) {\n  return (\n    Array.isArray(value) ||\n    value.constructor === Object ||\n    (typeof value.toJSON === 'function' && !Buffer.isBuffer(value))\n  );\n}\n\n/**\n * Converts a value to an object describing type, String/Buffer representation and length\n * @param {*} value\n */\nfunction toParameter(value, encoding, timezone) {\n  let type = Types.VAR_STRING;\n  let length;\n  let writer = function(value) {\n    // eslint-disable-next-line no-invalid-this\n    return Packet.prototype.writeLengthCodedString.call(this, value, encoding);\n  };\n  if (value !== null) {\n    switch (typeof value) {\n      case 'undefined':\n        throw new TypeError('Bind parameters must not contain undefined');\n\n      case 'number':\n        type = Types.DOUBLE;\n        length = 8;\n        writer = Packet.prototype.writeDouble;\n        break;\n\n      case 'boolean':\n        value = value | 0;\n        type = Types.TINY;\n        length = 1;\n        writer = Packet.prototype.writeInt8;\n        break;\n\n      case 'object':\n        if (Object.prototype.toString.call(value) === '[object Date]') {\n          type = Types.DATETIME;\n          length = 12;\n          writer = function(value) {\n            // eslint-disable-next-line no-invalid-this\n            return Packet.prototype.writeDate.call(this, value, timezone);\n          };\n        } else if (isJSON(value)) {\n          value = JSON.stringify(value);\n          type = Types.JSON;\n        } else if (Buffer.isBuffer(value)) {\n          length = Packet.lengthCodedNumberLength(value.length) + value.length;\n          writer = Packet.prototype.writeLengthCodedBuffer;\n        }\n        break;\n\n      default:\n        value = value.toString();\n    }\n  } else {\n    value = '';\n    type = Types.NULL;\n  }\n  if (!length) {\n    length = Packet.lengthCodedStringLength(value, encoding);\n  }\n  return { value, type, length, writer };\n}\n\nclass Execute {\n  constructor(id, parameters, charsetNumber, timezone) {\n    this.id = id;\n    this.parameters = parameters;\n    this.encoding = CharsetToEncoding[charsetNumber];\n    this.timezone = timezone;\n  }\n\n  toPacket() {\n    // TODO: don't try to calculate packet length in advance, allocate some big buffer in advance (header + 256 bytes?)\n    // and copy + reallocate if not enough\n    // 0 + 4 - length, seqId\n    // 4 + 1 - COM_EXECUTE\n    // 5 + 4 - stmtId\n    // 9 + 1 - flags\n    // 10 + 4 - iteration-count (always 1)\n    let length = 14;\n    let parameters;\n    if (this.parameters && this.parameters.length > 0) {\n      length += Math.floor((this.parameters.length + 7) / 8);\n      length += 1; // new-params-bound-flag\n      length += 2 * this.parameters.length; // type byte for each parameter if new-params-bound-flag is set\n      parameters = this.parameters.map(value =>\n        toParameter(value, this.encoding, this.timezone)\n      );\n      length += parameters.reduce(\n        (accumulator, parameter) => accumulator + parameter.length,\n        0\n      );\n    }\n    const buffer = Buffer.allocUnsafe(length);\n    const packet = new Packet(0, buffer, 0, length);\n    packet.offset = 4;\n    packet.writeInt8(CommandCodes.STMT_EXECUTE);\n    packet.writeInt32(this.id);\n    packet.writeInt8(CursorType.NO_CURSOR); // flags\n    packet.writeInt32(1); // iteration-count, always 1\n    if (parameters) {\n      let bitmap = 0;\n      let bitValue = 1;\n      parameters.forEach(parameter => {\n        if (parameter.type === Types.NULL) {\n          bitmap += bitValue;\n        }\n        bitValue *= 2;\n        if (bitValue === 256) {\n          packet.writeInt8(bitmap);\n          bitmap = 0;\n          bitValue = 1;\n        }\n      });\n      if (bitValue !== 1) {\n        packet.writeInt8(bitmap);\n      }\n      // TODO: explain meaning of the flag\n      // afaik, if set n*2 bytes with type of parameter are sent before parameters\n      // if not, previous execution types are used (TODO prooflink)\n      packet.writeInt8(1); // new-params-bound-flag\n      // Write parameter types\n      parameters.forEach(parameter => {\n        packet.writeInt8(parameter.type); // field type\n        packet.writeInt8(0); // parameter flag\n      });\n      // Write parameter values\n      parameters.forEach(parameter => {\n        if (parameter.type !== Types.NULL) {\n          parameter.writer.call(packet, parameter.value);\n        }\n      });\n    }\n    return packet;\n  }\n}\n\nmodule.exports = Execute;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/packets/execute.js?")},"./node_modules/mysql2/lib/packets/handshake.js":
/*!******************************************************!*\
  !*** ./node_modules/mysql2/lib/packets/handshake.js ***!
  \******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Packet = __webpack_require__(/*! ../packets/packet */ \"./node_modules/mysql2/lib/packets/packet.js\");\nconst ClientConstants = __webpack_require__(/*! ../constants/client.js */ \"./node_modules/mysql2/lib/constants/client.js\");\n\n// https://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::Handshake\n\nclass Handshake {\n  constructor(args) {\n    this.protocolVersion = args.protocolVersion;\n    this.serverVersion = args.serverVersion;\n    this.capabilityFlags = args.capabilityFlags;\n    this.connectionId = args.connectionId;\n    this.authPluginData1 = args.authPluginData1;\n    this.authPluginData2 = args.authPluginData2;\n    this.characterSet = args.characterSet;\n    this.statusFlags = args.statusFlags;\n    this.autPluginName = args.autPluginName;\n  }\n\n  setScrambleData(cb) {\n    (__webpack_require__(/*! crypto */ \"crypto\").randomBytes)(20, (err, data) => {\n      if (err) {\n        cb(err);\n        return;\n      }\n      this.authPluginData1 = data.slice(0, 8);\n      this.authPluginData2 = data.slice(8, 20);\n      cb();\n    });\n  }\n\n  toPacket(sequenceId) {\n    const length = 68 + Buffer.byteLength(this.serverVersion, 'utf8');\n    const buffer = Buffer.alloc(length + 4, 0); // zero fill, 10 bytes filler later needs to contain zeros\n    const packet = new Packet(sequenceId, buffer, 0, length + 4);\n    packet.offset = 4;\n    packet.writeInt8(this.protocolVersion);\n    packet.writeString(this.serverVersion, 'cesu8');\n    packet.writeInt8(0);\n    packet.writeInt32(this.connectionId);\n    packet.writeBuffer(this.authPluginData1);\n    packet.writeInt8(0);\n    const capabilityFlagsBuffer = Buffer.allocUnsafe(4);\n    capabilityFlagsBuffer.writeUInt32LE(this.capabilityFlags, 0);\n    packet.writeBuffer(capabilityFlagsBuffer.slice(0, 2));\n    packet.writeInt8(this.characterSet);\n    packet.writeInt16(this.statusFlags);\n    packet.writeBuffer(capabilityFlagsBuffer.slice(2, 4));\n    packet.writeInt8(21); // authPluginDataLength\n    packet.skip(10);\n    packet.writeBuffer(this.authPluginData2);\n    packet.writeInt8(0);\n    packet.writeString('mysql_native_password', 'latin1');\n    packet.writeInt8(0);\n    return packet;\n  }\n\n  static fromPacket(packet) {\n    const args = {};\n    args.protocolVersion = packet.readInt8();\n    args.serverVersion = packet.readNullTerminatedString('cesu8');\n    args.connectionId = packet.readInt32();\n    args.authPluginData1 = packet.readBuffer(8);\n    packet.skip(1);\n    const capabilityFlagsBuffer = Buffer.allocUnsafe(4);\n    capabilityFlagsBuffer[0] = packet.readInt8();\n    capabilityFlagsBuffer[1] = packet.readInt8();\n    if (packet.haveMoreData()) {\n      args.characterSet = packet.readInt8();\n      args.statusFlags = packet.readInt16();\n      // upper 2 bytes\n      capabilityFlagsBuffer[2] = packet.readInt8();\n      capabilityFlagsBuffer[3] = packet.readInt8();\n      args.capabilityFlags = capabilityFlagsBuffer.readUInt32LE(0);\n      if (args.capabilityFlags & ClientConstants.PLUGIN_AUTH) {\n        args.authPluginDataLength = packet.readInt8();\n      } else {\n        args.authPluginDataLength = 0;\n        packet.skip(1);\n      }\n      packet.skip(10);\n    } else {\n      args.capabilityFlags = capabilityFlagsBuffer.readUInt16LE(0);\n    }\n\n    const isSecureConnection =\n      args.capabilityFlags & ClientConstants.SECURE_CONNECTION;\n    if (isSecureConnection) {\n      const authPluginDataLength = args.authPluginDataLength;\n      if (authPluginDataLength === 0) {\n        // for Secure Password Authentication\n        args.authPluginDataLength = 20;\n        args.authPluginData2 = packet.readBuffer(12);\n        packet.skip(1);\n      } else {\n        // length > 0\n        // for Custom Auth Plugin (PLUGIN_AUTH)\n        const len = Math.max(13, authPluginDataLength - 8);\n        args.authPluginData2 = packet.readBuffer(len);\n      }\n    }\n\n    if (args.capabilityFlags & ClientConstants.PLUGIN_AUTH) {\n      args.autPluginName = packet.readNullTerminatedString('ascii');\n    }\n\n    return new Handshake(args);\n  }\n}\n\nmodule.exports = Handshake;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/packets/handshake.js?")},"./node_modules/mysql2/lib/packets/handshake_response.js":
/*!***************************************************************!*\
  !*** ./node_modules/mysql2/lib/packets/handshake_response.js ***!
  \***************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst ClientConstants = __webpack_require__(/*! ../constants/client.js */ \"./node_modules/mysql2/lib/constants/client.js\");\nconst CharsetToEncoding = __webpack_require__(/*! ../constants/charset_encodings.js */ \"./node_modules/mysql2/lib/constants/charset_encodings.js\");\nconst Packet = __webpack_require__(/*! ../packets/packet.js */ \"./node_modules/mysql2/lib/packets/packet.js\");\n\nconst auth41 = __webpack_require__(/*! ../auth_41.js */ \"./node_modules/mysql2/lib/auth_41.js\");\n\nclass HandshakeResponse {\n  constructor(handshake) {\n    this.user = handshake.user || '';\n    this.database = handshake.database || '';\n    this.password = handshake.password || '';\n    this.passwordSha1 = handshake.passwordSha1;\n    this.authPluginData1 = handshake.authPluginData1;\n    this.authPluginData2 = handshake.authPluginData2;\n    this.compress = handshake.compress;\n    this.clientFlags = handshake.flags;\n    // TODO: pre-4.1 auth support\n    let authToken;\n    if (this.passwordSha1) {\n      authToken = auth41.calculateTokenFromPasswordSha(\n        this.passwordSha1,\n        this.authPluginData1,\n        this.authPluginData2\n      );\n    } else {\n      authToken = auth41.calculateToken(\n        this.password,\n        this.authPluginData1,\n        this.authPluginData2\n      );\n    }\n    this.authToken = authToken;\n    this.charsetNumber = handshake.charsetNumber;\n    this.encoding = CharsetToEncoding[handshake.charsetNumber];\n    this.connectAttributes = handshake.connectAttributes;\n  }\n\n  serializeResponse(buffer) {\n    const isSet = flag => this.clientFlags & ClientConstants[flag];\n    const packet = new Packet(0, buffer, 0, buffer.length);\n    packet.offset = 4;\n    packet.writeInt32(this.clientFlags);\n    packet.writeInt32(0); // max packet size. todo: move to config\n    packet.writeInt8(this.charsetNumber);\n    packet.skip(23);\n    const encoding = this.encoding;\n    packet.writeNullTerminatedString(this.user, encoding);\n    let k;\n    if (isSet('PLUGIN_AUTH_LENENC_CLIENT_DATA')) {\n      packet.writeLengthCodedNumber(this.authToken.length);\n      packet.writeBuffer(this.authToken);\n    } else if (isSet('SECURE_CONNECTION')) {\n      packet.writeInt8(this.authToken.length);\n      packet.writeBuffer(this.authToken);\n    } else {\n      packet.writeBuffer(this.authToken);\n      packet.writeInt8(0);\n    }\n    if (isSet('CONNECT_WITH_DB')) {\n      packet.writeNullTerminatedString(this.database, encoding);\n    }\n    if (isSet('PLUGIN_AUTH')) {\n      // TODO: pass from config\n      packet.writeNullTerminatedString('mysql_native_password', 'latin1');\n    }\n    if (isSet('CONNECT_ATTRS')) {\n      const connectAttributes = this.connectAttributes || {};\n      const attrNames = Object.keys(connectAttributes);\n      let keysLength = 0;\n      for (k = 0; k < attrNames.length; ++k) {\n        keysLength += Packet.lengthCodedStringLength(attrNames[k], encoding);\n        keysLength += Packet.lengthCodedStringLength(\n          connectAttributes[attrNames[k]],\n          encoding\n        );\n      }\n      packet.writeLengthCodedNumber(keysLength);\n      for (k = 0; k < attrNames.length; ++k) {\n        packet.writeLengthCodedString(attrNames[k], encoding);\n        packet.writeLengthCodedString(\n          connectAttributes[attrNames[k]],\n          encoding\n        );\n      }\n    }\n    return packet;\n  }\n\n  toPacket() {\n    if (typeof this.user !== 'string') {\n      throw new Error('\"user\" connection config property must be a string');\n    }\n    if (typeof this.database !== 'string') {\n      throw new Error('\"database\" connection config property must be a string');\n    }\n    // dry run: calculate resulting packet length\n    const p = this.serializeResponse(Packet.MockBuffer());\n    return this.serializeResponse(Buffer.alloc(p.offset));\n  }\n  static fromPacket(packet) {\n    const args = {};\n    args.clientFlags = packet.readInt32();\n    function isSet(flag) {\n      return args.clientFlags & ClientConstants[flag];\n    }\n    args.maxPacketSize = packet.readInt32();\n    args.charsetNumber = packet.readInt8();\n    const encoding = CharsetToEncoding[args.charsetNumber];\n    args.encoding = encoding;\n    packet.skip(23);\n    args.user = packet.readNullTerminatedString(encoding);\n    let authTokenLength;\n    if (isSet('PLUGIN_AUTH_LENENC_CLIENT_DATA')) {\n      authTokenLength = packet.readLengthCodedNumber(encoding);\n      args.authToken = packet.readBuffer(authTokenLength);\n    } else if (isSet('SECURE_CONNECTION')) {\n      authTokenLength = packet.readInt8();\n      args.authToken = packet.readBuffer(authTokenLength);\n    } else {\n      args.authToken = packet.readNullTerminatedString(encoding);\n    }\n    if (isSet('CONNECT_WITH_DB')) {\n      args.database = packet.readNullTerminatedString(encoding);\n    }\n    if (isSet('PLUGIN_AUTH')) {\n      args.authPluginName = packet.readNullTerminatedString(encoding);\n    }\n    if (isSet('CONNECT_ATTRS')) {\n      const keysLength = packet.readLengthCodedNumber(encoding);\n      const keysEnd = packet.offset + keysLength;\n      const attrs = {};\n      while (packet.offset < keysEnd) {\n        attrs[\n          packet.readLengthCodedString(encoding)\n        ] = packet.readLengthCodedString(encoding);\n      }\n      args.connectAttributes = attrs;\n    }\n    return args;\n  }\n}\n\nmodule.exports = HandshakeResponse;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/packets/handshake_response.js?")},"./node_modules/mysql2/lib/packets/index.js":
/*!**************************************************!*\
  !*** ./node_modules/mysql2/lib/packets/index.js ***!
  \**************************************************/(module,exports,__webpack_require__)=>{"use strict";eval('// This file was modified by Oracle on June 1, 2021.\n// A utility method was introduced to generate an Error instance from a\n// binary server packet.\n// Modifications copyright (c) 2021, Oracle and/or its affiliates.\n\n\n\nconst process = __webpack_require__(/*! process */ "process");\n\nconst AuthSwitchRequest = __webpack_require__(/*! ./auth_switch_request */ "./node_modules/mysql2/lib/packets/auth_switch_request.js");\nconst AuthSwitchRequestMoreData = __webpack_require__(/*! ./auth_switch_request_more_data */ "./node_modules/mysql2/lib/packets/auth_switch_request_more_data.js");\nconst AuthSwitchResponse = __webpack_require__(/*! ./auth_switch_response */ "./node_modules/mysql2/lib/packets/auth_switch_response.js");\nconst BinaryRow = __webpack_require__(/*! ./binary_row */ "./node_modules/mysql2/lib/packets/binary_row.js");\nconst BinlogDump = __webpack_require__(/*! ./binlog_dump */ "./node_modules/mysql2/lib/packets/binlog_dump.js");\nconst ChangeUser = __webpack_require__(/*! ./change_user */ "./node_modules/mysql2/lib/packets/change_user.js");\nconst CloseStatement = __webpack_require__(/*! ./close_statement */ "./node_modules/mysql2/lib/packets/close_statement.js");\nconst ColumnDefinition = __webpack_require__(/*! ./column_definition */ "./node_modules/mysql2/lib/packets/column_definition.js");\nconst Execute = __webpack_require__(/*! ./execute */ "./node_modules/mysql2/lib/packets/execute.js");\nconst Handshake = __webpack_require__(/*! ./handshake */ "./node_modules/mysql2/lib/packets/handshake.js");\nconst HandshakeResponse = __webpack_require__(/*! ./handshake_response */ "./node_modules/mysql2/lib/packets/handshake_response.js");\nconst PrepareStatement = __webpack_require__(/*! ./prepare_statement */ "./node_modules/mysql2/lib/packets/prepare_statement.js");\nconst PreparedStatementHeader = __webpack_require__(/*! ./prepared_statement_header */ "./node_modules/mysql2/lib/packets/prepared_statement_header.js");\nconst Query = __webpack_require__(/*! ./query */ "./node_modules/mysql2/lib/packets/query.js");\nconst RegisterSlave = __webpack_require__(/*! ./register_slave */ "./node_modules/mysql2/lib/packets/register_slave.js");\nconst ResultSetHeader = __webpack_require__(/*! ./resultset_header */ "./node_modules/mysql2/lib/packets/resultset_header.js");\nconst SSLRequest = __webpack_require__(/*! ./ssl_request */ "./node_modules/mysql2/lib/packets/ssl_request.js");\nconst TextRow = __webpack_require__(/*! ./text_row */ "./node_modules/mysql2/lib/packets/text_row.js");\n\nconst ctorMap = {\n  AuthSwitchRequest,\n  AuthSwitchRequestMoreData,\n  AuthSwitchResponse,\n  BinaryRow,\n  BinlogDump,\n  ChangeUser,\n  CloseStatement,\n  ColumnDefinition,\n  Execute,\n  Handshake,\n  HandshakeResponse,\n  PrepareStatement,\n  PreparedStatementHeader,\n  Query,\n  RegisterSlave,\n  ResultSetHeader,\n  SSLRequest,\n  TextRow\n};\nObject.entries(ctorMap).forEach(([name, ctor]) => {\n  module.exports[name] = ctor;\n  // monkey-patch it to include name if debug is on\n  if (process.env.NODE_DEBUG) {\n    if (ctor.prototype.toPacket) {\n      const old = ctor.prototype.toPacket;\n      ctor.prototype.toPacket = function() {\n        const p = old.call(this);\n        p._name = name;\n        return p;\n      };\n    }\n  }\n});\n\n// simple packets:\nconst Packet = __webpack_require__(/*! ./packet */ "./node_modules/mysql2/lib/packets/packet.js");\nexports.Packet = Packet;\n\nclass OK {\n  static toPacket(args, encoding) {\n    args = args || {};\n    const affectedRows = args.affectedRows || 0;\n    const insertId = args.insertId || 0;\n    const serverStatus = args.serverStatus || 0;\n    const warningCount = args.warningCount || 0;\n    const message = args.message || \'\';\n\n    let length = 9 + Packet.lengthCodedNumberLength(affectedRows);\n    length += Packet.lengthCodedNumberLength(insertId);\n\n    const buffer = Buffer.allocUnsafe(length);\n    const packet = new Packet(0, buffer, 0, length);\n    packet.offset = 4;\n    packet.writeInt8(0);\n    packet.writeLengthCodedNumber(affectedRows);\n    packet.writeLengthCodedNumber(insertId);\n    packet.writeInt16(serverStatus);\n    packet.writeInt16(warningCount);\n    packet.writeString(message, encoding);\n    packet._name = \'OK\';\n    return packet;\n  }\n}\n\nexports.OK = OK;\n\n// warnings, statusFlags\nclass EOF {\n  static toPacket(warnings, statusFlags) {\n    if (typeof warnings === \'undefined\') {\n      warnings = 0;\n    }\n    if (typeof statusFlags === \'undefined\') {\n      statusFlags = 0;\n    }\n    const packet = new Packet(0, Buffer.allocUnsafe(9), 0, 9);\n    packet.offset = 4;\n    packet.writeInt8(0xfe);\n    packet.writeInt16(warnings);\n    packet.writeInt16(statusFlags);\n    packet._name = \'EOF\';\n    return packet;\n  }\n}\n\nexports.EOF = EOF;\n\nclass Error {\n  static toPacket(args, encoding) {\n    const length = 13 + Buffer.byteLength(args.message, \'utf8\');\n    const packet = new Packet(0, Buffer.allocUnsafe(length), 0, length);\n    packet.offset = 4;\n    packet.writeInt8(0xff);\n    packet.writeInt16(args.code);\n    // TODO: sql state parameter\n    packet.writeString(\'#_____\', encoding);\n    packet.writeString(args.message, encoding);\n    packet._name = \'Error\';\n    return packet;\n  }\n\n  static fromPacket(packet) {\n    packet.readInt8(); // marker\n    const code = packet.readInt16();\n    packet.readString(1, \'ascii\'); // sql state marker\n    // The SQL state of the ERR_Packet which is always 5 bytes long.\n    // https://dev.mysql.com/doc/dev/mysql-server/8.0.11/page_protocol_basic_dt_strings.html#sect_protocol_basic_dt_string_fix\n    packet.readString(5, \'ascii\'); // sql state (ignore for now)\n    const message = packet.readNullTerminatedString(\'utf8\');\n    const error = new Error();\n    error.message = message;\n    error.code = code;\n    return error;\n  }\n}\n\nexports.Error = Error;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/packets/index.js?')},"./node_modules/mysql2/lib/packets/packet.js":
/*!***************************************************!*\
  !*** ./node_modules/mysql2/lib/packets/packet.js ***!
  \***************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("// This file was modified by Oracle on June 1, 2021.\n// A comment describing some changes in the strict default SQL mode regarding\n// non-standard dates was introduced.\n// Modifications copyright (c) 2021, Oracle and/or its affiliates.\n\n\n\nconst ErrorCodeToName = __webpack_require__(/*! ../constants/errors.js */ \"./node_modules/mysql2/lib/constants/errors.js\");\nconst NativeBuffer = (__webpack_require__(/*! buffer */ \"buffer\").Buffer);\nconst Long = __webpack_require__(/*! long */ \"./node_modules/long/src/long.js\");\nconst StringParser = __webpack_require__(/*! ../parsers/string.js */ \"./node_modules/mysql2/lib/parsers/string.js\");\n\nconst INVALID_DATE = new Date(NaN);\n\n// this is nearly duplicate of previous function so generated code is not slower\n// due to \"if (dateStrings)\" branching\nconst pad = '000000000000';\nfunction leftPad(num, value) {\n  const s = value.toString();\n  // if we don't need to pad\n  if (s.length >= num) {\n    return s;\n  }\n  return (pad + s).slice(-num);\n}\n\n// The whole reason parse* function below exist\n// is because String creation is relatively expensive (at least with V8), and if we have\n// a buffer with \"12345\" content ideally we would like to bypass intermediate\n// \"12345\" string creation and directly build 12345 number out of\n// <Buffer 31 32 33 34 35> data.\n// In my benchmarks the difference is ~25M 8-digit numbers per second vs\n// 4.5 M using Number(packet.readLengthCodedString())\n// not used when size is close to max precision as series of *10 accumulate error\n// and approximate result mihgt be diffreent from (approximate as well) Number(bigNumStringValue))\n// In the futire node version if speed difference is smaller parse* functions might be removed\n// don't consider them as Packet public API\n\nconst minus = '-'.charCodeAt(0);\nconst plus = '+'.charCodeAt(0);\n\n// TODO: handle E notation\nconst dot = '.'.charCodeAt(0);\nconst exponent = 'e'.charCodeAt(0);\nconst exponentCapital = 'E'.charCodeAt(0);\n\nclass Packet {\n  constructor(id, buffer, start, end) {\n    // hot path, enable checks when testing only\n    // if (!Buffer.isBuffer(buffer) || typeof start == 'undefined' || typeof end == 'undefined')\n    //  throw new Error('invalid packet');\n    this.sequenceId = id;\n    this.numPackets = 1;\n    this.buffer = buffer;\n    this.start = start;\n    this.offset = start + 4;\n    this.end = end;\n  }\n\n  // ==============================\n  // readers\n  // ==============================\n  reset() {\n    this.offset = this.start + 4;\n  }\n\n  length() {\n    return this.end - this.start;\n  }\n\n  slice() {\n    return this.buffer.slice(this.start, this.end);\n  }\n\n  dump() {\n    // eslint-disable-next-line no-console\n    console.log(\n      [this.buffer.asciiSlice(this.start, this.end)],\n      this.buffer.slice(this.start, this.end),\n      this.length(),\n      this.sequenceId\n    );\n  }\n\n  haveMoreData() {\n    return this.end > this.offset;\n  }\n\n  skip(num) {\n    this.offset += num;\n  }\n\n  readInt8() {\n    return this.buffer[this.offset++];\n  }\n\n  readInt16() {\n    this.offset += 2;\n    return this.buffer.readUInt16LE(this.offset - 2);\n  }\n\n  readInt24() {\n    return this.readInt16() + (this.readInt8() << 16);\n  }\n\n  readInt32() {\n    this.offset += 4;\n    return this.buffer.readUInt32LE(this.offset - 4);\n  }\n\n  readSInt8() {\n    return this.buffer.readInt8(this.offset++);\n  }\n\n  readSInt16() {\n    this.offset += 2;\n    return this.buffer.readInt16LE(this.offset - 2);\n  }\n\n  readSInt32() {\n    this.offset += 4;\n    return this.buffer.readInt32LE(this.offset - 4);\n  }\n\n  readInt64JSNumber() {\n    const word0 = this.readInt32();\n    const word1 = this.readInt32();\n    const l = new Long(word0, word1, true);\n    return l.toNumber();\n  }\n\n  readSInt64JSNumber() {\n    const word0 = this.readInt32();\n    const word1 = this.readInt32();\n    if (!(word1 & 0x80000000)) {\n      return word0 + 0x100000000 * word1;\n    }\n    const l = new Long(word0, word1, false);\n    return l.toNumber();\n  }\n\n  readInt64String() {\n    const word0 = this.readInt32();\n    const word1 = this.readInt32();\n    const res = new Long(word0, word1, true);\n    return res.toString();\n  }\n\n  readSInt64String() {\n    const word0 = this.readInt32();\n    const word1 = this.readInt32();\n    const res = new Long(word0, word1, false);\n    return res.toString();\n  }\n\n  readInt64() {\n    const word0 = this.readInt32();\n    const word1 = this.readInt32();\n    let res = new Long(word0, word1, true);\n    const resNumber = res.toNumber();\n    const resString = res.toString();\n    res = resNumber.toString() === resString ? resNumber : resString;\n    return res;\n  }\n\n  readSInt64() {\n    const word0 = this.readInt32();\n    const word1 = this.readInt32();\n    let res = new Long(word0, word1, false);\n    const resNumber = res.toNumber();\n    const resString = res.toString();\n    res = resNumber.toString() === resString ? resNumber : resString;\n    return res;\n  }\n\n  isEOF() {\n    return this.buffer[this.offset] === 0xfe && this.length() < 13;\n  }\n\n  eofStatusFlags() {\n    return this.buffer.readInt16LE(this.offset + 3);\n  }\n\n  eofWarningCount() {\n    return this.buffer.readInt16LE(this.offset + 1);\n  }\n\n  readLengthCodedNumber(bigNumberStrings, signed) {\n    const byte1 = this.buffer[this.offset++];\n    if (byte1 < 251) {\n      return byte1;\n    }\n    return this.readLengthCodedNumberExt(byte1, bigNumberStrings, signed);\n  }\n\n  readLengthCodedNumberSigned(bigNumberStrings) {\n    return this.readLengthCodedNumber(bigNumberStrings, true);\n  }\n\n  readLengthCodedNumberExt(tag, bigNumberStrings, signed) {\n    let word0, word1;\n    let res;\n    if (tag === 0xfb) {\n      return null;\n    }\n    if (tag === 0xfc) {\n      return this.readInt8() + (this.readInt8() << 8);\n    }\n    if (tag === 0xfd) {\n      return this.readInt8() + (this.readInt8() << 8) + (this.readInt8() << 16);\n    }\n    if (tag === 0xfe) {\n      // TODO: check version\n      // Up to MySQL 3.22, 0xfe was followed by a 4-byte integer.\n      word0 = this.readInt32();\n      word1 = this.readInt32();\n      if (word1 === 0) {\n        return word0; // don't convert to float if possible\n      }\n      if (word1 < 2097152) {\n        // max exact float point int, 2^52 / 2^32\n        return word1 * 0x100000000 + word0;\n      }\n      res = new Long(word0, word1, !signed); // Long need unsigned\n      const resNumber = res.toNumber();\n      const resString = res.toString();\n      res = resNumber.toString() === resString ? resNumber : resString;\n      return bigNumberStrings ? resString : res;\n    }\n    // eslint-disable-next-line no-console\n    console.trace();\n    throw new Error(`Should not reach here: ${tag}`);\n  }\n\n  readFloat() {\n    const res = this.buffer.readFloatLE(this.offset);\n    this.offset += 4;\n    return res;\n  }\n\n  readDouble() {\n    const res = this.buffer.readDoubleLE(this.offset);\n    this.offset += 8;\n    return res;\n  }\n\n  readBuffer(len) {\n    if (typeof len === 'undefined') {\n      len = this.end - this.offset;\n    }\n    this.offset += len;\n    return this.buffer.slice(this.offset - len, this.offset);\n  }\n\n  // DATE, DATETIME and TIMESTAMP\n  readDateTime(timezone) {\n    if (!timezone || timezone === 'Z' || timezone === 'local') {\n      const length = this.readInt8();\n      if (length === 0xfb) {\n        return null;\n      }\n      let y = 0;\n      let m = 0;\n      let d = 0;\n      let H = 0;\n      let M = 0;\n      let S = 0;\n      let ms = 0;\n      if (length > 3) {\n        y = this.readInt16();\n        m = this.readInt8();\n        d = this.readInt8();\n      }\n      if (length > 6) {\n        H = this.readInt8();\n        M = this.readInt8();\n        S = this.readInt8();\n      }\n      if (length > 10) {\n        ms = this.readInt32() / 1000;\n      }\n      // NO_ZERO_DATE mode and NO_ZERO_IN_DATE mode are part of the strict\n      // default SQL mode used by MySQL 8.0. This means that non-standard\n      // dates like '0000-00-00' become NULL. For older versions and other\n      // possible MySQL flavours we still need to account for the\n      // non-standard behaviour.\n      if (y + m + d + H + M + S + ms === 0) {\n        return INVALID_DATE;\n      }\n      if (timezone === 'Z') {\n        return new Date(Date.UTC(y, m - 1, d, H, M, S, ms));\n      }\n      return new Date(y, m - 1, d, H, M, S, ms);\n    }\n    let str = this.readDateTimeString(6, 'T');\n    if (str.length === 10) {\n      str += 'T00:00:00';\n    }\n    return new Date(str + timezone);\n  }\n\n  readDateTimeString(decimals, timeSep) {\n    const length = this.readInt8();\n    let y = 0;\n    let m = 0;\n    let d = 0;\n    let H = 0;\n    let M = 0;\n    let S = 0;\n    let ms = 0;\n    let str;\n    if (length > 3) {\n      y = this.readInt16();\n      m = this.readInt8();\n      d = this.readInt8();\n      str = [leftPad(4, y), leftPad(2, m), leftPad(2, d)].join('-');\n    }\n    if (length > 6) {\n      H = this.readInt8();\n      M = this.readInt8();\n      S = this.readInt8();\n      str += `${timeSep || ' '}${[\n        leftPad(2, H),\n        leftPad(2, M),\n        leftPad(2, S)\n      ].join(':')}`;\n    }\n    if (length > 10) {\n      ms = this.readInt32();\n      str += '.';\n      if (decimals) {\n        ms = leftPad(6, ms);\n        if (ms.length > decimals) {\n          ms = ms.substring(0, decimals); // rounding is done at the MySQL side, only 0 are here\n        }\n      }\n      str += ms;\n    }\n    return str;\n  }\n\n  // TIME - value as a string, Can be negative\n  readTimeString(convertTtoMs) {\n    const length = this.readInt8();\n    if (length === 0) {\n      return '00:00:00';\n    }\n    const sign = this.readInt8() ? -1 : 1; // 'isNegative' flag byte\n    let d = 0;\n    let H = 0;\n    let M = 0;\n    let S = 0;\n    let ms = 0;\n    if (length > 6) {\n      d = this.readInt32();\n      H = this.readInt8();\n      M = this.readInt8();\n      S = this.readInt8();\n    }\n    if (length > 10) {\n      ms = this.readInt32();\n    }\n    if (convertTtoMs) {\n      H += d * 24;\n      M += H * 60;\n      S += M * 60;\n      ms += S * 1000;\n      ms *= sign;\n      return ms;\n    }\n    // Format follows mySQL TIME format ([-][h]hh:mm:ss[.u[u[u[u[u[u]]]]]])\n    // For positive times below 24 hours, this makes it equal to ISO 8601 times\n    return (\n      (sign === -1 ? '-' : '') +\n      [leftPad(2, d * 24 + H), leftPad(2, M), leftPad(2, S)].join(':') +\n      (ms ? `.${ms}`.replace(/0+$/, '') : '')\n    );\n  }\n\n  readLengthCodedString(encoding) {\n    const len = this.readLengthCodedNumber();\n    // TODO: check manually first byte here to avoid polymorphic return type?\n    if (len === null) {\n      return null;\n    }\n    this.offset += len;\n    // TODO: Use characterSetCode to get proper encoding\n    // https://github.com/sidorares/node-mysql2/pull/374\n    return StringParser.decode(\n      this.buffer,\n      encoding,\n      this.offset - len,\n      this.offset\n    );\n  }\n\n  readLengthCodedBuffer() {\n    const len = this.readLengthCodedNumber();\n    if (len === null) {\n      return null;\n    }\n    return this.readBuffer(len);\n  }\n\n  readNullTerminatedString(encoding) {\n    const start = this.offset;\n    let end = this.offset;\n    while (this.buffer[end]) {\n      end = end + 1; // TODO: handle OOB check\n    }\n    this.offset = end + 1;\n    return StringParser.decode(this.buffer, encoding, start, end);\n  }\n\n  // TODO reuse?\n  readString(len, encoding) {\n    if (typeof len === 'string' && typeof encoding === 'undefined') {\n      encoding = len;\n      len = undefined;\n    }\n    if (typeof len === 'undefined') {\n      len = this.end - this.offset;\n    }\n    this.offset += len;\n    return StringParser.decode(\n      this.buffer,\n      encoding,\n      this.offset - len, \n      this.offset\n    );\n  }\n\n  parseInt(len, supportBigNumbers) {\n    if (len === null) {\n      return null;\n    }\n    if (len >= 14 && !supportBigNumbers) {\n      const s = this.buffer.toString('ascii', this.offset, this.offset + len);\n      this.offset += len;\n      return Number(s);\n    }\n    let result = 0;\n    const start = this.offset;\n    const end = this.offset + len;\n    let sign = 1;\n    if (len === 0) {\n      return 0; // TODO: assert? exception?\n    }\n    if (this.buffer[this.offset] === minus) {\n      this.offset++;\n      sign = -1;\n    }\n    // max precise int is 9007199254740992\n    let str;\n    const numDigits = end - this.offset;\n    if (supportBigNumbers) {\n      if (numDigits >= 15) {\n        str = this.readString(end - this.offset, 'binary');\n        result = parseInt(str, 10);\n        if (result.toString() === str) {\n          return sign * result;\n        }\n        return sign === -1 ? `-${str}` : str;\n      }\n      if (numDigits > 16) {\n        str = this.readString(end - this.offset);\n        return sign === -1 ? `-${str}` : str;\n      }\n    }\n    if (this.buffer[this.offset] === plus) {\n      this.offset++; // just ignore\n    }\n    while (this.offset < end) {\n      result *= 10;\n      result += this.buffer[this.offset] - 48;\n      this.offset++;\n    }\n    const num = result * sign;\n    if (!supportBigNumbers) {\n      return num;\n    }\n    str = this.buffer.toString('ascii', start, end);\n    if (num.toString() === str) {\n      return num;\n    }\n    return str;\n  }\n\n  // note that if value of inputNumberAsString is bigger than MAX_SAFE_INTEGER\n  // ( or smaller than MIN_SAFE_INTEGER ) the parseIntNoBigCheck result might be\n  // different from what you would get from Number(inputNumberAsString)\n  // String(parseIntNoBigCheck) <> String(Number(inputNumberAsString)) <> inputNumberAsString\n  parseIntNoBigCheck(len) {\n    if (len === null) {\n      return null;\n    }\n    let result = 0;\n    const end = this.offset + len;\n    let sign = 1;\n    if (len === 0) {\n      return 0; // TODO: assert? exception?\n    }\n    if (this.buffer[this.offset] === minus) {\n      this.offset++;\n      sign = -1;\n    }\n    if (this.buffer[this.offset] === plus) {\n      this.offset++; // just ignore\n    }\n    while (this.offset < end) {\n      result *= 10;\n      result += this.buffer[this.offset] - 48;\n      this.offset++;\n    }\n    return result * sign;\n  }\n\n  // copy-paste from https://github.com/mysqljs/mysql/blob/master/lib/protocol/Parser.js\n  parseGeometryValue() {\n    const buffer = this.readLengthCodedBuffer();\n    let offset = 4;\n    if (buffer === null || !buffer.length) {\n      return null;\n    }\n    function parseGeometry() {\n      let x, y, i, j, numPoints, line;\n      let result = null;\n      const byteOrder = buffer.readUInt8(offset);\n      offset += 1;\n      const wkbType = byteOrder\n        ? buffer.readUInt32LE(offset)\n        : buffer.readUInt32BE(offset);\n      offset += 4;\n      switch (wkbType) {\n        case 1: // WKBPoint\n          x = byteOrder\n            ? buffer.readDoubleLE(offset)\n            : buffer.readDoubleBE(offset);\n          offset += 8;\n          y = byteOrder\n            ? buffer.readDoubleLE(offset)\n            : buffer.readDoubleBE(offset);\n          offset += 8;\n          result = { x: x, y: y };\n          break;\n        case 2: // WKBLineString\n          numPoints = byteOrder\n            ? buffer.readUInt32LE(offset)\n            : buffer.readUInt32BE(offset);\n          offset += 4;\n          result = [];\n          for (i = numPoints; i > 0; i--) {\n            x = byteOrder\n              ? buffer.readDoubleLE(offset)\n              : buffer.readDoubleBE(offset);\n            offset += 8;\n            y = byteOrder\n              ? buffer.readDoubleLE(offset)\n              : buffer.readDoubleBE(offset);\n            offset += 8;\n            result.push({ x: x, y: y });\n          }\n          break;\n        case 3: // WKBPolygon\n          // eslint-disable-next-line no-case-declarations\n          const numRings = byteOrder\n            ? buffer.readUInt32LE(offset)\n            : buffer.readUInt32BE(offset);\n          offset += 4;\n          result = [];\n          for (i = numRings; i > 0; i--) {\n            numPoints = byteOrder\n              ? buffer.readUInt32LE(offset)\n              : buffer.readUInt32BE(offset);\n            offset += 4;\n            line = [];\n            for (j = numPoints; j > 0; j--) {\n              x = byteOrder\n                ? buffer.readDoubleLE(offset)\n                : buffer.readDoubleBE(offset);\n              offset += 8;\n              y = byteOrder\n                ? buffer.readDoubleLE(offset)\n                : buffer.readDoubleBE(offset);\n              offset += 8;\n              line.push({ x: x, y: y });\n            }\n            result.push(line);\n          }\n          break;\n        case 4: // WKBMultiPoint\n        case 5: // WKBMultiLineString\n        case 6: // WKBMultiPolygon\n        case 7: // WKBGeometryCollection\n          // eslint-disable-next-line no-case-declarations\n          const num = byteOrder\n            ? buffer.readUInt32LE(offset)\n            : buffer.readUInt32BE(offset);\n          offset += 4;\n          result = [];\n          for (i = num; i > 0; i--) {\n            result.push(parseGeometry());\n          }\n          break;\n      }\n      return result;\n    }\n    return parseGeometry();\n  }\n\n  parseDate(timezone) {\n    const strLen = this.readLengthCodedNumber();\n    if (strLen === null) {\n      return null;\n    }\n    if (strLen !== 10) {\n      // we expect only YYYY-MM-DD here.\n      // if for some reason it's not the case return invalid date\n      return new Date(NaN);\n    }\n    const y = this.parseInt(4);\n    this.offset++; // -\n    const m = this.parseInt(2);\n    this.offset++; // -\n    const d = this.parseInt(2);\n    if (!timezone || timezone === 'local') {\n      return new Date(y, m - 1, d);\n    }\n    if (timezone === 'Z') {\n      return new Date(Date.UTC(y, m - 1, d));\n    }\n    return new Date(\n      `${leftPad(4, y)}-${leftPad(2, m)}-${leftPad(2, d)}T00:00:00${timezone}`\n    );\n  }\n\n  parseDateTime(timezone) {\n    const str = this.readLengthCodedString('binary');\n    if (str === null) {\n      return null;\n    }\n    if (!timezone || timezone === 'local') {\n      return new Date(str);\n    }\n    return new Date(`${str}${timezone}`);\n  }\n\n  parseFloat(len) {\n    if (len === null) {\n      return null;\n    }\n    let result = 0;\n    const end = this.offset + len;\n    let factor = 1;\n    let pastDot = false;\n    let charCode = 0;\n    if (len === 0) {\n      return 0; // TODO: assert? exception?\n    }\n    if (this.buffer[this.offset] === minus) {\n      this.offset++;\n      factor = -1;\n    }\n    if (this.buffer[this.offset] === plus) {\n      this.offset++; // just ignore\n    }\n    while (this.offset < end) {\n      charCode = this.buffer[this.offset];\n      if (charCode === dot) {\n        pastDot = true;\n        this.offset++;\n      } else if (charCode === exponent || charCode === exponentCapital) {\n        this.offset++;\n        const exponentValue = this.parseInt(end - this.offset);\n        return (result / factor) * Math.pow(10, exponentValue);\n      } else {\n        result *= 10;\n        result += this.buffer[this.offset] - 48;\n        this.offset++;\n        if (pastDot) {\n          factor = factor * 10;\n        }\n      }\n    }\n    return result / factor;\n  }\n\n  parseLengthCodedIntNoBigCheck() {\n    return this.parseIntNoBigCheck(this.readLengthCodedNumber());\n  }\n\n  parseLengthCodedInt(supportBigNumbers) {\n    return this.parseInt(this.readLengthCodedNumber(), supportBigNumbers);\n  }\n\n  parseLengthCodedIntString() {\n    return this.readLengthCodedString('binary');\n  }\n\n  parseLengthCodedFloat() {\n    return this.parseFloat(this.readLengthCodedNumber());\n  }\n\n  peekByte() {\n    return this.buffer[this.offset];\n  }\n\n  // OxFE is often used as \"Alt\" flag - not ok, not error.\n  // For example, it's first byte of AuthSwitchRequest\n  isAlt() {\n    return this.peekByte() === 0xfe;\n  }\n\n  isError() {\n    return this.peekByte() === 0xff;\n  }\n\n  asError(encoding) {\n    this.reset();\n    this.readInt8(); // fieldCount\n    const errorCode = this.readInt16();\n    let sqlState = '';\n    if (this.buffer[this.offset] === 0x23) {\n      this.skip(1);\n      sqlState = this.readBuffer(5).toString();\n    }\n    const message = this.readString(undefined, encoding);\n    const err = new Error(message);\n    err.code = ErrorCodeToName[errorCode];\n    err.errno = errorCode;\n    err.sqlState = sqlState;\n    err.sqlMessage = message;\n    return err;\n  }\n\n  writeInt32(n) {\n    this.buffer.writeUInt32LE(n, this.offset);\n    this.offset += 4;\n  }\n\n  writeInt24(n) {\n    this.writeInt8(n & 0xff);\n    this.writeInt16(n >> 8);\n  }\n\n  writeInt16(n) {\n    this.buffer.writeUInt16LE(n, this.offset);\n    this.offset += 2;\n  }\n\n  writeInt8(n) {\n    this.buffer.writeUInt8(n, this.offset);\n    this.offset++;\n  }\n\n  writeDouble(n) {\n    this.buffer.writeDoubleLE(n, this.offset);\n    this.offset += 8;\n  }\n\n  writeBuffer(b) {\n    b.copy(this.buffer, this.offset);\n    this.offset += b.length;\n  }\n\n  writeNull() {\n    this.buffer[this.offset] = 0xfb;\n    this.offset++;\n  }\n\n  // TODO: refactor following three?\n  writeNullTerminatedString(s, encoding) {\n    const buf = StringParser.encode(s, encoding);\n    this.buffer.length && buf.copy(this.buffer, this.offset);\n    this.offset += buf.length;\n    this.writeInt8(0);\n  }\n\n  writeString(s, encoding) {\n    if (s === null) {\n      this.writeInt8(0xfb);\n      return;\n    }\n    if (s.length === 0) {\n      return;\n    }\n    // const bytes = Buffer.byteLength(s, 'utf8');\n    // this.buffer.write(s, this.offset, bytes, 'utf8');\n    // this.offset += bytes;\n    const buf = StringParser.encode(s, encoding);\n    this.buffer.length && buf.copy(this.buffer, this.offset);\n    this.offset += buf.length;\n  }\n\n  writeLengthCodedString(s, encoding) {\n    const buf = StringParser.encode(s, encoding);\n    this.writeLengthCodedNumber(buf.length);\n    this.buffer.length && buf.copy(this.buffer, this.offset);\n    this.offset += buf.length;\n  }\n\n  writeLengthCodedBuffer(b) {\n    this.writeLengthCodedNumber(b.length);\n    b.copy(this.buffer, this.offset);\n    this.offset += b.length;\n  }\n\n  writeLengthCodedNumber(n) {\n    if (n < 0xfb) {\n      return this.writeInt8(n);\n    }\n    if (n < 0xffff) {\n      this.writeInt8(0xfc);\n      return this.writeInt16(n);\n    }\n    if (n < 0xffffff) {\n      this.writeInt8(0xfd);\n      return this.writeInt24(n);\n    }\n    if (n === null) {\n      return this.writeInt8(0xfb);\n    }\n    // TODO: check that n is out of int precision\n    this.writeInt8(0xfe);\n    this.buffer.writeUInt32LE(n, this.offset);\n    this.offset += 4;\n    this.buffer.writeUInt32LE(n >> 32, this.offset);\n    this.offset += 4;\n    return this.offset;\n  }\n\n  writeDate(d, timezone) {\n    this.buffer.writeUInt8(11, this.offset);\n    if (!timezone || timezone === 'local') {\n      this.buffer.writeUInt16LE(d.getFullYear(), this.offset + 1);\n      this.buffer.writeUInt8(d.getMonth() + 1, this.offset + 3);\n      this.buffer.writeUInt8(d.getDate(), this.offset + 4);\n      this.buffer.writeUInt8(d.getHours(), this.offset + 5);\n      this.buffer.writeUInt8(d.getMinutes(), this.offset + 6);\n      this.buffer.writeUInt8(d.getSeconds(), this.offset + 7);\n      this.buffer.writeUInt32LE(d.getMilliseconds() * 1000, this.offset + 8);\n    } else {\n      if (timezone !== 'Z') {\n        const offset =\n          (timezone[0] === '-' ? -1 : 1) *\n          (parseInt(timezone.substring(1, 3), 10) * 60 +\n            parseInt(timezone.substring(4), 10));\n        if (offset !== 0) {\n          d = new Date(d.getTime() + 60000 * offset);\n        }\n      }\n      this.buffer.writeUInt16LE(d.getUTCFullYear(), this.offset + 1);\n      this.buffer.writeUInt8(d.getUTCMonth() + 1, this.offset + 3);\n      this.buffer.writeUInt8(d.getUTCDate(), this.offset + 4);\n      this.buffer.writeUInt8(d.getUTCHours(), this.offset + 5);\n      this.buffer.writeUInt8(d.getUTCMinutes(), this.offset + 6);\n      this.buffer.writeUInt8(d.getUTCSeconds(), this.offset + 7);\n      this.buffer.writeUInt32LE(d.getUTCMilliseconds() * 1000, this.offset + 8);\n    }\n    this.offset += 12;\n  }\n\n  writeHeader(sequenceId) {\n    const offset = this.offset;\n    this.offset = 0;\n    this.writeInt24(this.buffer.length - 4);\n    this.writeInt8(sequenceId);\n    this.offset = offset;\n  }\n\n  clone() {\n    return new Packet(this.sequenceId, this.buffer, this.start, this.end);\n  }\n\n  type() {\n    if (this.isEOF()) {\n      return 'EOF';\n    }\n    if (this.isError()) {\n      return 'Error';\n    }\n    if (this.buffer[this.offset] === 0) {\n      return 'maybeOK'; // could be other packet types as well\n    }\n    return '';\n  }\n\n  static lengthCodedNumberLength(n) {\n    if (n < 0xfb) {\n      return 1;\n    }\n    if (n < 0xffff) {\n      return 3;\n    }\n    if (n < 0xffffff) {\n      return 5;\n    }\n    return 9;\n  }\n\n  static lengthCodedStringLength(str, encoding) {\n    const buf = StringParser.encode(str, encoding);\n    const slen = buf.length;\n    return Packet.lengthCodedNumberLength(slen) + slen;\n  }\n\n  static MockBuffer() {\n    const noop = function () {};\n    const res = Buffer.alloc(0);\n    for (const op in NativeBuffer.prototype) {\n      if (typeof res[op] === 'function') {\n        res[op] = noop;\n      }\n    }\n    return res;\n  }\n}\n\nmodule.exports = Packet;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/packets/packet.js?")},"./node_modules/mysql2/lib/packets/prepare_statement.js":
/*!**************************************************************!*\
  !*** ./node_modules/mysql2/lib/packets/prepare_statement.js ***!
  \**************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Packet = __webpack_require__(/*! ../packets/packet */ "./node_modules/mysql2/lib/packets/packet.js");\nconst CommandCodes = __webpack_require__(/*! ../constants/commands */ "./node_modules/mysql2/lib/constants/commands.js");\nconst StringParser = __webpack_require__(/*! ../parsers/string.js */ "./node_modules/mysql2/lib/parsers/string.js");\nconst CharsetToEncoding = __webpack_require__(/*! ../constants/charset_encodings.js */ "./node_modules/mysql2/lib/constants/charset_encodings.js");\n\nclass PrepareStatement {\n  constructor(sql, charsetNumber) {\n    this.query = sql;\n    this.charsetNumber = charsetNumber;\n    this.encoding = CharsetToEncoding[charsetNumber];\n  }\n\n  toPacket() {\n    const buf = StringParser.encode(this.query, this.encoding);\n    const length = 5 + buf.length;\n    const buffer = Buffer.allocUnsafe(length);\n    const packet = new Packet(0, buffer, 0, length);\n    packet.offset = 4;\n    packet.writeInt8(CommandCodes.STMT_PREPARE);\n    packet.writeBuffer(buf);\n    return packet;\n  }\n}\n\nmodule.exports = PrepareStatement;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/packets/prepare_statement.js?')},"./node_modules/mysql2/lib/packets/prepared_statement_header.js":
/*!**********************************************************************!*\
  !*** ./node_modules/mysql2/lib/packets/prepared_statement_header.js ***!
  \**********************************************************************/module=>{"use strict";eval("\n\nclass PreparedStatementHeader {\n  constructor(packet) {\n    packet.skip(1); // should be 0\n    this.id = packet.readInt32();\n    this.fieldCount = packet.readInt16();\n    this.parameterCount = packet.readInt16();\n    packet.skip(1); // should be 0\n    this.warningCount = packet.readInt16();\n  }\n}\n\n// TODO: toPacket\n\nmodule.exports = PreparedStatementHeader;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/packets/prepared_statement_header.js?")},"./node_modules/mysql2/lib/packets/query.js":
/*!**************************************************!*\
  !*** ./node_modules/mysql2/lib/packets/query.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Packet = __webpack_require__(/*! ../packets/packet.js */ "./node_modules/mysql2/lib/packets/packet.js");\nconst CommandCode = __webpack_require__(/*! ../constants/commands.js */ "./node_modules/mysql2/lib/constants/commands.js");\nconst StringParser = __webpack_require__(/*! ../parsers/string.js */ "./node_modules/mysql2/lib/parsers/string.js");\nconst CharsetToEncoding = __webpack_require__(/*! ../constants/charset_encodings.js */ "./node_modules/mysql2/lib/constants/charset_encodings.js");\n\nclass Query {\n  constructor(sql, charsetNumber) {\n    this.query = sql;\n    this.charsetNumber = charsetNumber;\n    this.encoding = CharsetToEncoding[charsetNumber];\n  }\n\n  toPacket() {\n    const buf = StringParser.encode(this.query, this.encoding);\n    const length = 5 + buf.length;\n    const buffer = Buffer.allocUnsafe(length);\n    const packet = new Packet(0, buffer, 0, length);\n    packet.offset = 4;\n    packet.writeInt8(CommandCode.QUERY);\n    packet.writeBuffer(buf);\n    return packet;\n  }\n}\n\nmodule.exports = Query;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/packets/query.js?')},"./node_modules/mysql2/lib/packets/register_slave.js":
/*!***********************************************************!*\
  !*** ./node_modules/mysql2/lib/packets/register_slave.js ***!
  \***********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n// http://dev.mysql.com/doc/internals/en/com-register-slave.html\n// note that documentation is incorrect, for example command code is actually 0x15 but documented as 0x14\n\nconst Packet = __webpack_require__(/*! ../packets/packet */ \"./node_modules/mysql2/lib/packets/packet.js\");\nconst CommandCodes = __webpack_require__(/*! ../constants/commands */ \"./node_modules/mysql2/lib/constants/commands.js\");\n\nclass RegisterSlave {\n  constructor(opts) {\n    this.serverId = opts.serverId || 0;\n    this.slaveHostname = opts.slaveHostname || '';\n    this.slaveUser = opts.slaveUser || '';\n    this.slavePassword = opts.slavePassword || '';\n    this.slavePort = opts.slavePort || 0;\n    this.replicationRank = opts.replicationRank || 0;\n    this.masterId = opts.masterId || 0;\n  }\n\n  toPacket() {\n    const length =\n      15 + // TODO: should be ascii?\n      Buffer.byteLength(this.slaveHostname, 'utf8') +\n      Buffer.byteLength(this.slaveUser, 'utf8') +\n      Buffer.byteLength(this.slavePassword, 'utf8') +\n      3 +\n      4;\n    const buffer = Buffer.allocUnsafe(length);\n    const packet = new Packet(0, buffer, 0, length);\n    packet.offset = 4;\n    packet.writeInt8(CommandCodes.REGISTER_SLAVE);\n    packet.writeInt32(this.serverId);\n    packet.writeInt8(Buffer.byteLength(this.slaveHostname, 'utf8'));\n    packet.writeString(this.slaveHostname);\n    packet.writeInt8(Buffer.byteLength(this.slaveUser, 'utf8'));\n    packet.writeString(this.slaveUser);\n    packet.writeInt8(Buffer.byteLength(this.slavePassword, 'utf8'));\n    packet.writeString(this.slavePassword);\n    packet.writeInt16(this.slavePort);\n    packet.writeInt32(this.replicationRank);\n    packet.writeInt32(this.masterId);\n    return packet;\n  }\n}\n\nmodule.exports = RegisterSlave;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/packets/register_slave.js?")},"./node_modules/mysql2/lib/packets/resultset_header.js":
/*!*************************************************************!*\
  !*** ./node_modules/mysql2/lib/packets/resultset_header.js ***!
  \*************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n// TODO: rename to OK packet\n// https://dev.mysql.com/doc/internals/en/packet-OK_Packet.html\n\nconst Packet = __webpack_require__(/*! ./packet.js */ \"./node_modules/mysql2/lib/packets/packet.js\");\nconst ClientConstants = __webpack_require__(/*! ../constants/client.js */ \"./node_modules/mysql2/lib/constants/client.js\");\nconst ServerSatusFlags = __webpack_require__(/*! ../constants/server_status.js */ \"./node_modules/mysql2/lib/constants/server_status.js\");\n\nconst EncodingToCharset = __webpack_require__(/*! ../constants/encoding_charset.js */ \"./node_modules/mysql2/lib/constants/encoding_charset.js\");\nconst sessionInfoTypes = __webpack_require__(/*! ../constants/session_track.js */ \"./node_modules/mysql2/lib/constants/session_track.js\");\n\nclass ResultSetHeader {\n  constructor(packet, connection) {\n    const bigNumberStrings = connection.config.bigNumberStrings;\n    const encoding = connection.serverEncoding;\n    const flags = connection._handshakePacket.capabilityFlags;\n    const isSet = function(flag) {\n      return flags & ClientConstants[flag];\n    };\n    if (packet.buffer[packet.offset] !== 0) {\n      this.fieldCount = packet.readLengthCodedNumber();\n      if (this.fieldCount === null) {\n        this.infileName = packet.readString(undefined, encoding);\n      }\n      return;\n    }\n    this.fieldCount = packet.readInt8(); // skip OK byte\n    this.affectedRows = packet.readLengthCodedNumber(bigNumberStrings);\n    this.insertId = packet.readLengthCodedNumberSigned(bigNumberStrings);\n    this.info = '';\n    if (isSet('PROTOCOL_41')) {\n      this.serverStatus = packet.readInt16();\n      this.warningStatus = packet.readInt16();\n    } else if (isSet('TRANSACTIONS')) {\n      this.serverStatus = packet.readInt16();\n    }\n    let stateChanges = null;\n    if (isSet('SESSION_TRACK') && packet.offset < packet.end) {\n      this.info = packet.readLengthCodedString(encoding);\n\n      if (this.serverStatus && ServerSatusFlags.SERVER_SESSION_STATE_CHANGED) {\n        // session change info record - see\n        // https://dev.mysql.com/doc/internals/en/packet-OK_Packet.html#cs-sect-packet-ok-sessioninfo\n        let len =\n          packet.offset < packet.end ? packet.readLengthCodedNumber() : 0;\n        const end = packet.offset + len;\n        let type, key, stateEnd;\n        if (len > 0) {\n          stateChanges = {\n            systemVariables: {},\n            schema: null,\n            trackStateChange: null\n          };\n        }\n        while (packet.offset < end) {\n          type = packet.readInt8();\n          len = packet.readLengthCodedNumber();\n          stateEnd = packet.offset + len;\n          if (type === sessionInfoTypes.SYSTEM_VARIABLES) {\n            key = packet.readLengthCodedString(encoding);\n            const val = packet.readLengthCodedString(encoding);\n            stateChanges.systemVariables[key] = val;\n            if (key === 'character_set_client') {\n              const charsetNumber = EncodingToCharset[val];\n              connection.config.charsetNumber = charsetNumber;\n            }\n          } else if (type === sessionInfoTypes.SCHEMA) {\n            key = packet.readLengthCodedString(encoding);\n            stateChanges.schema = key;\n          } else if (type === sessionInfoTypes.STATE_CHANGE) {\n            stateChanges.trackStateChange = packet.readLengthCodedString(\n              encoding\n            );\n          } else {\n            // unsupported session track type. For now just ignore\n          }\n          packet.offset = stateEnd;\n        }\n      }\n    } else {\n      this.info = packet.readString(undefined, encoding);\n    }\n    if (stateChanges) {\n      this.stateChanges = stateChanges;\n    }\n    const m = this.info.match(/\\schanged:\\s*(\\d+)/i);\n    if (m !== null) {\n      this.changedRows = parseInt(m[1], 10);\n    }\n  }\n\n  // TODO: should be consistent instance member, but it's just easier here to have just function\n  static toPacket(fieldCount, insertId) {\n    let length = 4 + Packet.lengthCodedNumberLength(fieldCount);\n    if (typeof insertId !== 'undefined') {\n      length += Packet.lengthCodedNumberLength(insertId);\n    }\n    const buffer = Buffer.allocUnsafe(length);\n    const packet = new Packet(0, buffer, 0, length);\n    packet.offset = 4;\n    packet.writeLengthCodedNumber(fieldCount);\n    if (typeof insertId !== 'undefined') {\n      packet.writeLengthCodedNumber(insertId);\n    }\n    return packet;\n  }\n}\n\nmodule.exports = ResultSetHeader;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/packets/resultset_header.js?")},"./node_modules/mysql2/lib/packets/ssl_request.js":
/*!********************************************************!*\
  !*** ./node_modules/mysql2/lib/packets/ssl_request.js ***!
  \********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst ClientConstants = __webpack_require__(/*! ../constants/client */ "./node_modules/mysql2/lib/constants/client.js");\nconst Packet = __webpack_require__(/*! ../packets/packet */ "./node_modules/mysql2/lib/packets/packet.js");\n\nclass SSLRequest {\n  constructor(flags, charset) {\n    this.clientFlags = flags | ClientConstants.SSL;\n    this.charset = charset;\n  }\n\n  toPacket() {\n    const length = 36;\n    const buffer = Buffer.allocUnsafe(length);\n    const packet = new Packet(0, buffer, 0, length);\n    buffer.fill(0);\n    packet.offset = 4;\n    packet.writeInt32(this.clientFlags);\n    packet.writeInt32(0); // max packet size. todo: move to config\n    packet.writeInt8(this.charset);\n    return packet;\n  }\n}\n\nmodule.exports = SSLRequest;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/packets/ssl_request.js?')},"./node_modules/mysql2/lib/packets/text_row.js":
/*!*****************************************************!*\
  !*** ./node_modules/mysql2/lib/packets/text_row.js ***!
  \*****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Packet = __webpack_require__(/*! ../packets/packet */ \"./node_modules/mysql2/lib/packets/packet.js\");\n\nclass TextRow {\n  constructor(columns) {\n    this.columns = columns || [];\n  }\n\n  static fromPacket(packet) {\n    // packet.reset(); // set offset to starting point?\n    const columns = [];\n    while (packet.haveMoreData()) {\n      columns.push(packet.readLengthCodedString());\n    }\n    return new TextRow(columns);\n  }\n\n  static toPacket(columns, encoding) {\n    const sequenceId = 0; // TODO remove, this is calculated now in connecton\n    let length = 0;\n    columns.forEach(val => {\n      if (val === null || typeof val === 'undefined') {\n        ++length;\n        return;\n      }\n      length += Packet.lengthCodedStringLength(val.toString(10), encoding);\n    });\n    const buffer = Buffer.allocUnsafe(length + 4);\n    const packet = new Packet(sequenceId, buffer, 0, length + 4);\n    packet.offset = 4;\n    columns.forEach(val => {\n      if (val === null) {\n        packet.writeNull();\n        return;\n      }\n      if (typeof val === 'undefined') {\n        packet.writeInt8(0);\n        return;\n      }\n      packet.writeLengthCodedString(val.toString(10), encoding);\n    });\n    return packet;\n  }\n}\n\nmodule.exports = TextRow;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/packets/text_row.js?")},"./node_modules/mysql2/lib/parsers/binary_parser.js":
/*!**********************************************************!*\
  !*** ./node_modules/mysql2/lib/parsers/binary_parser.js ***!
  \**********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst FieldFlags = __webpack_require__(/*! ../constants/field_flags.js */ \"./node_modules/mysql2/lib/constants/field_flags.js\");\nconst Charsets = __webpack_require__(/*! ../constants/charsets.js */ \"./node_modules/mysql2/lib/constants/charsets.js\");\nconst Types = __webpack_require__(/*! ../constants/types.js */ \"./node_modules/mysql2/lib/constants/types.js\");\nconst helpers = __webpack_require__(/*! ../helpers */ \"./node_modules/mysql2/lib/helpers.js\");\nconst genFunc = __webpack_require__(/*! generate-function */ \"./node_modules/generate-function/index.js\");\nconst parserCache = __webpack_require__(/*! ./parser_cache.js */ \"./node_modules/mysql2/lib/parsers/parser_cache.js\");\nconst typeNames = [];\nfor (const t in Types) {\n  typeNames[Types[t]] = t;\n}\n\nfunction readCodeFor(field, config, options, fieldNum) {\n  const supportBigNumbers =\n    options.supportBigNumbers || config.supportBigNumbers;\n  const bigNumberStrings = options.bigNumberStrings || config.bigNumberStrings;\n  const timezone = options.timezone || config.timezone;\n  const dateStrings = options.dateStrings || config.dateStrings;\n  const unsigned = field.flags & FieldFlags.UNSIGNED;\n  switch (field.columnType) {\n    case Types.TINY:\n      return unsigned ? 'packet.readInt8();' : 'packet.readSInt8();';\n    case Types.SHORT:\n      return unsigned ? 'packet.readInt16();' : 'packet.readSInt16();';\n    case Types.LONG:\n    case Types.INT24: // in binary protocol int24 is encoded in 4 bytes int32\n      return unsigned ? 'packet.readInt32();' : 'packet.readSInt32();';\n    case Types.YEAR:\n      return 'packet.readInt16()';\n    case Types.FLOAT:\n      return 'packet.readFloat();';\n    case Types.DOUBLE:\n      return 'packet.readDouble();';\n    case Types.NULL:\n      return 'null;';\n    case Types.DATE:\n    case Types.DATETIME:\n    case Types.TIMESTAMP:\n    case Types.NEWDATE:\n      if (helpers.typeMatch(field.columnType, dateStrings, Types)) {\n        return `packet.readDateTimeString(${field.decimals});`;\n      }\n      return `packet.readDateTime('${timezone}');`;\n    case Types.TIME:\n      return 'packet.readTimeString()';\n    case Types.DECIMAL:\n    case Types.NEWDECIMAL:\n      if (config.decimalNumbers) {\n        return 'packet.parseLengthCodedFloat();';\n      }\n      return 'packet.readLengthCodedString(\"ascii\");';\n    case Types.GEOMETRY:\n      return 'packet.parseGeometryValue();';\n    case Types.JSON:\n      // Since for JSON columns mysql always returns charset 63 (BINARY),\n      // we have to handle it according to JSON specs and use \"utf8\",\n      // see https://github.com/sidorares/node-mysql2/issues/409\n      return 'JSON.parse(packet.readLengthCodedString(\"utf8\"));';\n    case Types.LONGLONG:\n      if (!supportBigNumbers) {\n        return unsigned\n          ? 'packet.readInt64JSNumber();'\n          : 'packet.readSInt64JSNumber();';\n      }\n      if (bigNumberStrings) {\n        return unsigned\n          ? 'packet.readInt64String();'\n          : 'packet.readSInt64String();';\n      }\n      return unsigned ? 'packet.readInt64();' : 'packet.readSInt64();';\n\n    default:\n      if (field.characterSet === Charsets.BINARY) {\n        return 'packet.readLengthCodedBuffer();';\n      }\n      return `packet.readLengthCodedString(fields[${fieldNum}].encoding)`;\n  }\n}\n\nfunction compile(fields, options, config) {\n  const parserFn = genFunc();\n  let i = 0;\n  const nullBitmapLength = Math.floor((fields.length + 7 + 2) / 8);\n\n  /* eslint-disable no-trailing-spaces */\n  /* eslint-disable no-spaced-func */\n  /* eslint-disable no-unexpected-multiline */\n\n  parserFn('(function(){');\n  parserFn('return class BinaryRow {');\n  parserFn('constructor() {');\n  parserFn('}');\n\n  parserFn('next(packet, fields, options) {');\n  if (options.rowsAsArray) {\n    parserFn(`const result = new Array(${fields.length});`);\n  } else {\n    parserFn(\"const result = {};\");\n  }\n\n  const resultTables = {};\n  let resultTablesArray = [];\n\n  if (options.nestTables === true) {\n    for (i = 0; i < fields.length; i++) {\n      resultTables[fields[i].table] = 1;\n    }\n    resultTablesArray = Object.keys(resultTables);\n    for (i = 0; i < resultTablesArray.length; i++) {\n      parserFn(`result[${helpers.srcEscape(resultTablesArray[i])}] = {};`);\n    }\n  }\n\n  parserFn('packet.readInt8();'); // status byte\n  for (i = 0; i < nullBitmapLength; ++i) {\n    parserFn(`const nullBitmaskByte${i} = packet.readInt8();`);\n  }\n\n  let lvalue = '';\n  let currentFieldNullBit = 4;\n  let nullByteIndex = 0;\n  let fieldName = '';\n  let tableName = '';\n\n  for (i = 0; i < fields.length; i++) {\n    fieldName = helpers.srcEscape(fields[i].name);\n    parserFn(`// ${fieldName}: ${typeNames[fields[i].columnType]}`);\n\n    if (typeof options.nestTables === 'string') {\n      tableName = helpers.srcEscape(fields[i].table);\n      lvalue = `result[${helpers.srcEscape(\n        fields[i].table + options.nestTables + fields[i].name\n      )}]`;\n    } else if (options.nestTables === true) {\n      tableName = helpers.srcEscape(fields[i].table);\n      lvalue = `result[${tableName}][${fieldName}]`;\n    } else if (options.rowsAsArray) {\n      lvalue = `result[${i.toString(10)}]`;\n    } else {\n      lvalue = `result[${helpers.srcEscape(fields[i].name)}]`;\n    }\n\n    // TODO: this used to be an optimisation ( if column marked as NOT_NULL don't include code to check null\n    // bitmap at all, but it seems that we can't rely on this flag, see #178\n    // TODO: benchmark performance difference\n    //\n    // if (fields[i].flags & FieldFlags.NOT_NULL) { // don't need to check null bitmap if field can't be null.\n    //  result.push(lvalue + ' = ' + readCodeFor(fields[i], config));\n    // } else if (fields[i].columnType == Types.NULL) {\n    //  result.push(lvalue + ' = null;');\n    // } else {\n    parserFn(`if (nullBitmaskByte${nullByteIndex} & ${currentFieldNullBit})`);\n    parserFn(`${lvalue} = null;`);\n    parserFn('else');\n    parserFn(`${lvalue} = ${readCodeFor(fields[i], config, options, i)}`);\n    // }\n    currentFieldNullBit *= 2;\n    if (currentFieldNullBit === 0x100) {\n      currentFieldNullBit = 1;\n      nullByteIndex++;\n    }\n  }\n\n  parserFn('return result;');\n  parserFn('}');\n  parserFn('};')('})()');\n\n  /* eslint-enable no-trailing-spaces */\n  /* eslint-enable no-spaced-func */\n  /* eslint-enable no-unexpected-multiline */\n\n  if (config.debug) {\n    helpers.printDebugWithCode(\n      'Compiled binary protocol row parser',\n      parserFn.toString()\n    );\n  }\n  return parserFn.toFunction();\n}\n\nfunction getBinaryParser(fields, options, config) {\n  return parserCache.getParser('binary', fields, options, config, compile);\n}\n\nmodule.exports = getBinaryParser;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/parsers/binary_parser.js?")},"./node_modules/mysql2/lib/parsers/parser_cache.js":
/*!*********************************************************!*\
  !*** ./node_modules/mysql2/lib/parsers/parser_cache.js ***!
  \*********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst LRU = __webpack_require__(/*! lru-cache */ "./node_modules/lru-cache/index.js");\n\nconst parserCache = new LRU({\n  max: 15000\n});\n\nfunction keyFromFields(type, fields, options, config) {\n  let res =\n    `${type}` +\n    `/${typeof options.nestTables}` +\n    `/${options.nestTables}` +\n    `/${options.rowsAsArray}` +\n    `/${options.supportBigNumbers || config.supportBigNumbers}` +\n    `/${options.bigNumberStrings || config.bigNumberStrings}` +\n    `/${typeof options.typeCast}` +\n    `/${options.timezone || config.timezone}` +\n    `/${options.decimalNumbers}` +\n    `/${options.dateStrings}`;\n  for (let i = 0; i < fields.length; ++i) {\n    const field = fields[i];\n    res += `/${field.name}:${field.columnType}:${field.length}:${field.schema}:${field.table}:${field.flags}:${field.characterSet}`;\n  }\n  return res;\n}\n\nfunction getParser(type, fields, options, config, compiler) {\n  const key = keyFromFields(type, fields, options, config);\n  let parser = parserCache.get(key);\n\n  if (parser) {\n    return parser;\n  }\n\n  parser = compiler(fields, options, config);\n  parserCache.set(key, parser);\n  return parser;\n}\n\nfunction setMaxCache(max) {\n  parserCache.max = max;\n}\n\nfunction clearCache() {\n  parserCache.reset();\n}\n\nmodule.exports = {\n  getParser: getParser,\n  setMaxCache: setMaxCache,\n  clearCache: clearCache\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/parsers/parser_cache.js?')},"./node_modules/mysql2/lib/parsers/string.js":
/*!***************************************************!*\
  !*** ./node_modules/mysql2/lib/parsers/string.js ***!
  \***************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n\nconst Iconv = __webpack_require__(/*! iconv-lite */ "./node_modules/iconv-lite/lib/index.js");\n\nexports.decode = function(buffer, encoding, start, end, options) {\n  if (Buffer.isEncoding(encoding)) {\n    return buffer.toString(encoding, start, end);\n  }\n\n  const decoder = Iconv.getDecoder(encoding, options || {});\n\n  const res = decoder.write(buffer.slice(start, end));\n  const trail = decoder.end();\n\n  return trail ? res + trail : res;\n};\n\nexports.encode = function(string, encoding, options) {\n  if (Buffer.isEncoding(encoding)) {\n    return Buffer.from(string, encoding);\n  }\n\n  const encoder = Iconv.getEncoder(encoding, options || {});\n\n  const res = encoder.write(string);\n  const trail = encoder.end();\n\n  return trail && trail.length > 0 ? Buffer.concat([res, trail]) : res;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/parsers/string.js?')},"./node_modules/mysql2/lib/parsers/text_parser.js":
/*!********************************************************!*\
  !*** ./node_modules/mysql2/lib/parsers/text_parser.js ***!
  \********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Types = __webpack_require__(/*! ../constants/types.js */ \"./node_modules/mysql2/lib/constants/types.js\");\nconst Charsets = __webpack_require__(/*! ../constants/charsets.js */ \"./node_modules/mysql2/lib/constants/charsets.js\");\nconst helpers = __webpack_require__(/*! ../helpers */ \"./node_modules/mysql2/lib/helpers.js\");\nconst genFunc = __webpack_require__(/*! generate-function */ \"./node_modules/generate-function/index.js\");\nconst parserCache = __webpack_require__(/*! ./parser_cache.js */ \"./node_modules/mysql2/lib/parsers/parser_cache.js\");\n\nconst typeNames = [];\nfor (const t in Types) {\n  typeNames[Types[t]] = t;\n}\n\nfunction readCodeFor(type, charset, encodingExpr, config, options) {\n  const supportBigNumbers =\n    options.supportBigNumbers || config.supportBigNumbers;\n  const bigNumberStrings = options.bigNumberStrings || config.bigNumberStrings;\n  const timezone = options.timezone || config.timezone;\n  const dateStrings = options.dateStrings || config.dateStrings;\n\n  switch (type) {\n    case Types.TINY:\n    case Types.SHORT:\n    case Types.LONG:\n    case Types.INT24:\n    case Types.YEAR:\n      return 'packet.parseLengthCodedIntNoBigCheck()';\n    case Types.LONGLONG:\n      if (supportBigNumbers && bigNumberStrings) {\n        return 'packet.parseLengthCodedIntString()';\n      }\n      return `packet.parseLengthCodedInt(${supportBigNumbers})`;\n    case Types.FLOAT:\n    case Types.DOUBLE:\n      return 'packet.parseLengthCodedFloat()';\n    case Types.NULL:\n      return 'packet.readLengthCodedNumber()';\n    case Types.DECIMAL:\n    case Types.NEWDECIMAL:\n      if (config.decimalNumbers) {\n        return 'packet.parseLengthCodedFloat()';\n      }\n      return 'packet.readLengthCodedString(\"ascii\")';\n    case Types.DATE:\n      if (helpers.typeMatch(type, dateStrings, Types)) {\n        return 'packet.readLengthCodedString(\"ascii\")';\n      }\n      return `packet.parseDate('${timezone}')`;\n    case Types.DATETIME:\n    case Types.TIMESTAMP:\n      if (helpers.typeMatch(type, dateStrings, Types)) {\n        return 'packet.readLengthCodedString(\"ascii\")';\n      }\n      return `packet.parseDateTime('${timezone}')`;\n    case Types.TIME:\n      return 'packet.readLengthCodedString(\"ascii\")';\n    case Types.GEOMETRY:\n      return 'packet.parseGeometryValue()';\n    case Types.JSON:\n      // Since for JSON columns mysql always returns charset 63 (BINARY),\n      // we have to handle it according to JSON specs and use \"utf8\",\n      // see https://github.com/sidorares/node-mysql2/issues/409\n      return 'JSON.parse(packet.readLengthCodedString(\"utf8\"))';\n    default:\n      if (charset === Charsets.BINARY) {\n        return 'packet.readLengthCodedBuffer()';\n      }\n      return `packet.readLengthCodedString(${encodingExpr})`;\n  }\n}\n\nfunction compile(fields, options, config) {\n  // use global typeCast if current query doesn't specify one\n  if (\n    typeof config.typeCast === 'function' &&\n    typeof options.typeCast !== 'function'\n  ) {\n    options.typeCast = config.typeCast;\n  }\n\n  function wrap(field, _this) {\n    return {\n      type: typeNames[field.columnType],\n      length: field.columnLength,\n      db: field.schema,\n      table: field.table,\n      name: field.name,\n      string: function() {\n        return _this.packet.readLengthCodedString(field.encoding);\n      },\n      buffer: function() {\n        return _this.packet.readLengthCodedBuffer();\n      },\n      geometry: function() {\n        return _this.packet.parseGeometryValue();\n      }\n    };\n  }\n\n  const parserFn = genFunc();\n\n  /* eslint-disable no-trailing-spaces */\n  /* eslint-disable no-spaced-func */\n  /* eslint-disable no-unexpected-multiline */\n  parserFn('(function () {')(\n    'return class TextRow {'\n  );\n\n  // constructor method\n  parserFn('constructor(fields) {');\n  // node-mysql typeCast compatibility wrapper\n  // see https://github.com/mysqljs/mysql/blob/96fdd0566b654436624e2375c7b6604b1f50f825/lib/protocol/packets/Field.js\n  if (typeof options.typeCast === 'function') {\n    parserFn('const _this = this;');\n    parserFn('for(let i=0; i<fields.length; ++i) {');\n    parserFn('this[`wrap${i}`] = wrap(fields[i], _this);');\n    parserFn('}');\n  }\n  parserFn('}');\n\n  // next method\n  parserFn('next(packet, fields, options) {');\n  parserFn(\"this.packet = packet;\");\n  if (options.rowsAsArray) {\n    parserFn(`const result = new Array(${fields.length});`);\n  } else {\n    parserFn(\"const result = {};\");\n  }\n\n  const resultTables = {};\n  let resultTablesArray = [];\n\n  if (options.nestTables === true) {\n    for (let i=0; i < fields.length; i++) {\n      resultTables[fields[i].table] = 1;\n    }\n    resultTablesArray = Object.keys(resultTables);\n    for (let i=0; i < resultTablesArray.length; i++) {\n      parserFn(`result[${helpers.srcEscape(resultTablesArray[i])}] = {};`);\n    }\n  }\n\n  let lvalue = '';\n  let fieldName = '';\n  for (let i = 0; i < fields.length; i++) {\n    fieldName = helpers.srcEscape(fields[i].name);\n    parserFn(`// ${fieldName}: ${typeNames[fields[i].columnType]}`);\n    if (typeof options.nestTables === 'string') {\n      lvalue = `result[${helpers.srcEscape(\n        fields[i].table + options.nestTables + fields[i].name\n      )}]`;\n    } else if (options.nestTables === true) {\n      lvalue = `result[${helpers.srcEscape(fields[i].table)}][${fieldName}]`;\n    } else if (options.rowsAsArray) {\n      lvalue = `result[${i.toString(10)}]`;\n    } else {\n      lvalue = `result[${fieldName}]`;\n    }\n    if (options.typeCast === false) {\n      parserFn(`${lvalue} = packet.readLengthCodedBuffer();`);\n    } else {\n      const encodingExpr = `fields[${i}].encoding`;\n      const readCode = readCodeFor(\n        fields[i].columnType,\n        fields[i].characterSet,\n        encodingExpr,\n        config,\n        options\n      );\n      if (typeof options.typeCast === 'function') {\n        parserFn(`${lvalue} = options.typeCast(this.wrap${i}, function() { return ${readCode} });`);\n      }  else {\n        parserFn(`${lvalue} = ${readCode};`);\n      }\n    }  \n  }\n\n  parserFn('return result;');\n  parserFn('}');\n  parserFn('};')('})()');\n\n  /* eslint-enable no-trailing-spaces */\n  /* eslint-enable no-spaced-func */\n  /* eslint-enable no-unexpected-multiline */\n\n  if (config.debug) {\n    helpers.printDebugWithCode(\n      'Compiled text protocol row parser',\n      parserFn.toString()\n    );\n  }\n  if (typeof options.typeCast === 'function') {\n    return parserFn.toFunction({wrap});\n  } \n  return parserFn.toFunction();\n}\n\nfunction getTextParser(fields, options, config) {\n  return parserCache.getParser('text', fields, options, config, compile);\n}\n\nmodule.exports = getTextParser;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/parsers/text_parser.js?")},"./node_modules/mysql2/lib/pool.js":
/*!*****************************************!*\
  !*** ./node_modules/mysql2/lib/pool.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst process = __webpack_require__(/*! process */ \"process\");\nconst mysql = __webpack_require__(/*! ../index.js */ \"./node_modules/mysql2/index.js\");\n\nconst EventEmitter = (__webpack_require__(/*! events */ \"events\").EventEmitter);\nconst PoolConnection = __webpack_require__(/*! ./pool_connection.js */ \"./node_modules/mysql2/lib/pool_connection.js\");\nconst Queue = __webpack_require__(/*! denque */ \"./node_modules/denque/index.js\");\nconst Connection = __webpack_require__(/*! ./connection.js */ \"./node_modules/mysql2/lib/connection.js\");\n\nfunction spliceConnection(queue, connection) {\n  const len = queue.length;\n  for (let i = 0; i < len; i++) {\n    if (queue.get(i) === connection) {\n      queue.removeOne(i);\n      break;\n    }\n  }\n}\n\nclass Pool extends EventEmitter {\n  constructor(options) {\n    super();\n    this.config = options.config;\n    this.config.connectionConfig.pool = this;\n    this._allConnections = new Queue();\n    this._freeConnections = new Queue();\n    this._connectionQueue = new Queue();\n    this._closed = false;\n  }\n\n  promise(promiseImpl) {\n    const PromisePool = (__webpack_require__(/*! ../promise */ \"./node_modules/mysql2/promise.js\").PromisePool);\n    return new PromisePool(this, promiseImpl);\n  }\n\n  getConnection(cb) {\n    if (this._closed) {\n      return process.nextTick(() => cb(new Error('Pool is closed.')));\n    }\n    let connection;\n    if (this._freeConnections.length > 0) {\n      connection = this._freeConnections.shift();\n      this.emit('acquire', connection);\n      return process.nextTick(() => cb(null, connection));\n    }\n    if (\n      this.config.connectionLimit === 0 ||\n      this._allConnections.length < this.config.connectionLimit\n    ) {\n      connection = new PoolConnection(this, {\n        config: this.config.connectionConfig\n      });\n      this._allConnections.push(connection);\n      return connection.connect(err => {\n        if (this._closed) {\n          return cb(new Error('Pool is closed.'));\n        }\n        if (err) {\n          return cb(err);\n        }\n        this.emit('connection', connection);\n        this.emit('acquire', connection);\n        return cb(null, connection);\n      });\n    }\n    if (!this.config.waitForConnections) {\n      return process.nextTick(() => cb(new Error('No connections available.')));\n    }\n    if (\n      this.config.queueLimit &&\n      this._connectionQueue.length >= this.config.queueLimit\n    ) {\n      return cb(new Error('Queue limit reached.'));\n    }\n    this.emit('enqueue');\n    return this._connectionQueue.push(cb);\n  }\n\n  releaseConnection(connection) {\n    let cb;\n    if (!connection._pool) {\n      // The connection has been removed from the pool and is no longer good.\n      if (this._connectionQueue.length) {\n        cb = this._connectionQueue.shift();\n        process.nextTick(this.getConnection.bind(this, cb));\n      }\n    } else if (this._connectionQueue.length) {\n      cb = this._connectionQueue.shift();\n      process.nextTick(cb.bind(null, null, connection));\n    } else {\n      this._freeConnections.push(connection);\n      this.emit('release', connection);\n    }\n  }\n\n  end(cb) {\n    this._closed = true;\n    if (typeof cb !== 'function') {\n      cb = function(err) {\n        if (err) {\n          throw err;\n        }\n      };\n    }\n    let calledBack = false;\n    let closedConnections = 0;\n    let connection;\n    const endCB = function(err) {\n      if (calledBack) {\n        return;\n      }\n      if (err || ++closedConnections >= this._allConnections.length) {\n        calledBack = true;\n        cb(err);\n        return;\n      }\n    }.bind(this);\n    if (this._allConnections.length === 0) {\n      endCB();\n      return;\n    }\n    for (let i = 0; i < this._allConnections.length; i++) {\n      connection = this._allConnections.get(i);\n      connection._realEnd(endCB);\n    }\n  }\n\n  query(sql, values, cb) {\n    const cmdQuery = Connection.createQuery(\n      sql,\n      values,\n      cb,\n      this.config.connectionConfig\n    );\n    if (typeof cmdQuery.namedPlaceholders === 'undefined') {\n      cmdQuery.namedPlaceholders = this.config.connectionConfig.namedPlaceholders;\n    }\n    this.getConnection((err, conn) => {\n      if (err) {\n        if (typeof cmdQuery.onResult === 'function') {\n          cmdQuery.onResult(err);\n        } else {\n          cmdQuery.emit('error', err);\n        }\n        return;\n      }\n      try {\n        conn.query(cmdQuery).once('end', () => {\n          conn.release();\n        });\n      } catch (e) {\n        conn.release();\n        throw e;\n      }\n    });\n    return cmdQuery;\n  }\n\n  execute(sql, values, cb) {\n    // TODO construct execute command first here and pass it to connection.execute\n    // so that polymorphic arguments logic is there in one place\n    if (typeof values === 'function') {\n      cb = values;\n      values = [];\n    }\n    this.getConnection((err, conn) => {\n      if (err) {\n        return cb(err);\n      }\n      try {\n        conn.execute(sql, values, cb).once('end', () => {\n          conn.release();\n        });\n      } catch (e) {\n        conn.release();\n        throw e;\n      }\n    });\n  }\n\n  _removeConnection(connection) {\n    // Remove connection from all connections\n    spliceConnection(this._allConnections, connection);\n    // Remove connection from free connections\n    spliceConnection(this._freeConnections, connection);\n    this.releaseConnection(connection);\n  }\n\n  format(sql, values) {\n    return mysql.format(\n      sql,\n      values,\n      this.config.connectionConfig.stringifyObjects,\n      this.config.connectionConfig.timezone\n    );\n  }\n\n  escape(value) {\n    return mysql.escape(\n      value,\n      this.config.connectionConfig.stringifyObjects,\n      this.config.connectionConfig.timezone\n    );\n  }\n\n  escapeId(value) {\n    return mysql.escapeId(value, false);\n  }\n}\n\nmodule.exports = Pool;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/pool.js?")},"./node_modules/mysql2/lib/pool_cluster.js":
/*!*************************************************!*\
  !*** ./node_modules/mysql2/lib/pool_cluster.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst process = __webpack_require__(/*! process */ \"process\");\n\nconst Pool = __webpack_require__(/*! ./pool.js */ \"./node_modules/mysql2/lib/pool.js\");\nconst PoolConfig = __webpack_require__(/*! ./pool_config.js */ \"./node_modules/mysql2/lib/pool_config.js\");\nconst Connection = __webpack_require__(/*! ./connection.js */ \"./node_modules/mysql2/lib/connection.js\");\nconst EventEmitter = (__webpack_require__(/*! events */ \"events\").EventEmitter);\n\n/**\n * Selector\n */\nconst makeSelector = {\n  RR() {\n    let index = 0;\n    return clusterIds => clusterIds[index++ % clusterIds.length];\n  },\n  RANDOM() {\n    return clusterIds =>\n      clusterIds[Math.floor(Math.random() * clusterIds.length)];\n  },\n  ORDER() {\n    return clusterIds => clusterIds[0];\n  }\n};\n\nclass PoolNamespace {\n  constructor(cluster, pattern, selector) {\n    this._cluster = cluster;\n    this._pattern = pattern;\n    this._selector = makeSelector[selector]();\n  }\n\n  getConnection(cb) {\n    const clusterNode = this._getClusterNode();\n    if (clusterNode === null) {\n      return cb(new Error('Pool does Not exists.'));\n    }\n    return this._cluster._getConnection(clusterNode, (err, connection) => {\n      if (err) {\n        return cb(err);\n      }\n      if (connection === 'retry') {\n        return this.getConnection(cb);\n      }\n      return cb(null, connection);\n    });\n  }\n\n  /**\n   * pool cluster query\n   * @param {*} sql\n   * @param {*} values\n   * @param {*} cb\n   * @returns query\n   */\n  query(sql, values, cb) {\n    const query = Connection.createQuery(sql, values, cb, {});\n    this.getConnection((err, conn) => {\n      if (err) {\n        if (typeof query.onResult === 'function') {\n          query.onResult(err);\n        } else {\n          query.emit('error', err);\n        }\n        return;\n      }\n      try {\n        conn.query(query).once('end', () => {\n          conn.release();\n        });\n      } catch (e) {\n        conn.release();\n        throw e;\n      }\n    });\n    return query;\n  }\n\n  /**\n   * pool cluster execute\n   * @param {*} sql \n   * @param {*} values \n   * @param {*} cb \n   */\n  execute(sql, values, cb) {\n    if (typeof values === 'function') {\n      cb = values;\n      values = [];\n    }\n    this.getConnection((err, conn) => {\n      if (err) {\n        return cb(err);\n      }\n      try {\n        conn.execute(sql, values, cb).once('end', () => {\n          conn.release();\n        });\n      } catch (e) {\n        conn.release();\n        throw e;\n      }\n    });\n  }\n\n  _getClusterNode() {\n    const foundNodeIds = this._cluster._findNodeIds(this._pattern);\n    if (foundNodeIds.length === 0) {\n      return null;\n    }\n    const nodeId =\n      foundNodeIds.length === 1\n        ? foundNodeIds[0]\n        : this._selector(foundNodeIds);\n    return this._cluster._getNode(nodeId);\n  }\n}\n\nclass PoolCluster extends EventEmitter {\n  constructor(config) {\n    super();\n    config = config || {};\n    this._canRetry =\n      typeof config.canRetry === 'undefined' ? true : config.canRetry;\n    this._removeNodeErrorCount = config.removeNodeErrorCount || 5;\n    this._defaultSelector = config.defaultSelector || 'RR';\n    this._closed = false;\n    this._lastId = 0;\n    this._nodes = {};\n    this._serviceableNodeIds = [];\n    this._namespaces = {};\n    this._findCaches = {};\n  }\n\n  of(pattern, selector) {\n    pattern = pattern || '*';\n    selector = selector || this._defaultSelector;\n    selector = selector.toUpperCase();\n    if (!makeSelector[selector] === 'undefined') {\n      selector = this._defaultSelector;\n    }\n    const key = pattern + selector;\n    if (typeof this._namespaces[key] === 'undefined') {\n      this._namespaces[key] = new PoolNamespace(this, pattern, selector);\n    }\n    return this._namespaces[key];\n  }\n\n  add(id, config) {\n    if (typeof id === 'object') {\n      config = id;\n      id = `CLUSTER::${++this._lastId}`;\n    }\n    if (typeof this._nodes[id] === 'undefined') {\n      this._nodes[id] = {\n        id: id,\n        errorCount: 0,\n        pool: new Pool({ config: new PoolConfig(config) })\n      };\n      this._serviceableNodeIds.push(id);\n      this._clearFindCaches();\n    }\n  }\n\n  getConnection(pattern, selector, cb) {\n    let namespace;\n    if (typeof pattern === 'function') {\n      cb = pattern;\n      namespace = this.of();\n    } else {\n      if (typeof selector === 'function') {\n        cb = selector;\n        selector = this._defaultSelector;\n      }\n      namespace = this.of(pattern, selector);\n    }\n    namespace.getConnection(cb);\n  }\n\n  end(callback) {\n    const cb =\n      callback !== undefined\n        ? callback\n        : err => {\n          if (err) {\n            throw err;\n          }\n        };\n    if (this._closed) {\n      process.nextTick(cb);\n      return;\n    }\n    this._closed = true;\n\n    let calledBack = false;\n    let waitingClose = 0;\n    const onEnd = err => {\n      if (!calledBack && (err || --waitingClose <= 0)) {\n        calledBack = true;\n        return cb(err);\n      }\n    };\n\n    for (const id in this._nodes) {\n      waitingClose++;\n      this._nodes[id].pool.end(onEnd);\n    }\n    if (waitingClose === 0) {\n      process.nextTick(onEnd);\n    }\n  }\n\n  _findNodeIds(pattern) {\n    if (typeof this._findCaches[pattern] !== 'undefined') {\n      return this._findCaches[pattern];\n    }\n    let foundNodeIds;\n    if (pattern === '*') {\n      // all\n      foundNodeIds = this._serviceableNodeIds;\n    } else if (this._serviceableNodeIds.indexOf(pattern) !== -1) {\n      // one\n      foundNodeIds = [pattern];\n    } else {\n      // wild matching\n      const keyword = pattern.substring(pattern.length - 1, 0);\n      foundNodeIds = this._serviceableNodeIds.filter(id =>\n        id.startsWith(keyword)\n      );\n    }\n    this._findCaches[pattern] = foundNodeIds;\n    return foundNodeIds;\n  }\n\n  _getNode(id) {\n    return this._nodes[id] || null;\n  }\n\n  _increaseErrorCount(node) {\n    if (++node.errorCount >= this._removeNodeErrorCount) {\n      const index = this._serviceableNodeIds.indexOf(node.id);\n      if (index !== -1) {\n        this._serviceableNodeIds.splice(index, 1);\n        delete this._nodes[node.id];\n        this._clearFindCaches();\n        node.pool.end();\n        this.emit('remove', node.id);\n      }\n    }\n  }\n\n  _decreaseErrorCount(node) {\n    if (node.errorCount > 0) {\n      --node.errorCount;\n    }\n  }\n\n  _getConnection(node, cb) {\n    node.pool.getConnection((err, connection) => {\n      if (err) {\n        this._increaseErrorCount(node);\n        if (this._canRetry) {\n          // REVIEW: this seems wrong?\n          this.emit('warn', err);\n          // eslint-disable-next-line no-console\n          console.warn(`[Error] PoolCluster : ${err}`);\n          return cb(null, 'retry');\n        }\n        return cb(err);\n      }\n      this._decreaseErrorCount(node);\n\n      connection._clusterId = node.id;\n      return cb(null, connection);\n    });\n  }\n\n  _clearFindCaches() {\n    this._findCaches = {};\n  }\n}\n\nmodule.exports = PoolCluster;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/pool_cluster.js?")},"./node_modules/mysql2/lib/pool_config.js":
/*!************************************************!*\
  !*** ./node_modules/mysql2/lib/pool_config.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst ConnectionConfig = __webpack_require__(/*! ./connection_config.js */ \"./node_modules/mysql2/lib/connection_config.js\");\n\nclass PoolConfig {\n  constructor(options) {\n    if (typeof options === 'string') {\n      options = ConnectionConfig.parseUrl(options);\n    }\n    this.connectionConfig = new ConnectionConfig(options);\n    this.waitForConnections =\n      options.waitForConnections === undefined\n        ? true\n        : Boolean(options.waitForConnections);\n    this.connectionLimit = isNaN(options.connectionLimit)\n      ? 10\n      : Number(options.connectionLimit);\n    this.queueLimit = isNaN(options.queueLimit)\n      ? 0\n      : Number(options.queueLimit);\n  }\n}\n\nmodule.exports = PoolConfig;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/pool_config.js?")},"./node_modules/mysql2/lib/pool_connection.js":
/*!****************************************************!*\
  !*** ./node_modules/mysql2/lib/pool_connection.js ***!
  \****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Connection = (__webpack_require__(/*! ../index.js */ \"./node_modules/mysql2/index.js\").Connection);\n\nclass PoolConnection extends Connection {\n  constructor(pool, options) {\n    super(options);\n    this._pool = pool;\n    // When a fatal error occurs the connection's protocol ends, which will cause\n    // the connection to end as well, thus we only need to watch for the end event\n    // and we will be notified of disconnects.\n    // REVIEW: Moved to `once`\n    this.once('end', () => {\n      this._removeFromPool();\n    });\n    this.once('error', () => {\n      this._removeFromPool();\n    });\n  }\n\n  release() {\n    if (!this._pool || this._pool._closed) {\n      return;\n    }\n    this._pool.releaseConnection(this);\n  }\n\n  promise(promiseImpl) {\n    const PromisePoolConnection = (__webpack_require__(/*! ../promise */ \"./node_modules/mysql2/promise.js\").PromisePoolConnection);\n    return new PromisePoolConnection(this, promiseImpl);\n  }\n\n  end() {\n    const err = new Error(\n      'Calling conn.end() to release a pooled connection is ' +\n        'deprecated. In next version calling conn.end() will be ' +\n        'restored to default conn.end() behavior. Use ' +\n        'conn.release() instead.'\n    );\n    this.emit('warn', err);\n    // eslint-disable-next-line no-console\n    console.warn(err.message);\n    this.release();\n  }\n\n  destroy() {\n    this._removeFromPool();\n    super.destroy();\n  }\n\n  _removeFromPool() {\n    if (!this._pool || this._pool._closed) {\n      return;\n    }\n    const pool = this._pool;\n    this._pool = null;\n    pool._removeConnection(this);\n  }\n}\n\nPoolConnection.statementKey = Connection.statementKey;\nmodule.exports = PoolConnection;\n\n// TODO: Remove this when we are removing PoolConnection#end\nPoolConnection.prototype._realEnd = Connection.prototype.end;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/pool_connection.js?")},"./node_modules/mysql2/lib/server.js":
/*!*******************************************!*\
  !*** ./node_modules/mysql2/lib/server.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst net = __webpack_require__(/*! net */ "net");\nconst EventEmitter = (__webpack_require__(/*! events */ "events").EventEmitter);\n\nconst Connection = __webpack_require__(/*! ./connection */ "./node_modules/mysql2/lib/connection.js");\nconst ConnectionConfig = __webpack_require__(/*! ./connection_config */ "./node_modules/mysql2/lib/connection_config.js");\n\n// TODO: inherit Server from net.Server\nclass Server extends EventEmitter {\n  constructor() {\n    super();\n    this.connections = [];\n    this._server = net.createServer(this._handleConnection.bind(this));\n  }\n\n  _handleConnection(socket) {\n    const connectionConfig = new ConnectionConfig({\n      stream: socket,\n      isServer: true\n    });\n    const connection = new Connection({ config: connectionConfig });\n    this.emit(\'connection\', connection);\n  }\n\n  listen(port) {\n    this._port = port;\n    this._server.listen.apply(this._server, arguments);\n    return this;\n  }\n\n  close(cb) {\n    this._server.close(cb);\n  }\n}\n\nmodule.exports = Server;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/lib/server.js?')},"./node_modules/mysql2/promise.js":
/*!****************************************!*\
  !*** ./node_modules/mysql2/promise.js ***!
  \****************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nconst core = __webpack_require__(/*! ./index.js */ \"./node_modules/mysql2/index.js\");\nconst EventEmitter = (__webpack_require__(/*! events */ \"events\").EventEmitter);\n\nfunction makeDoneCb(resolve, reject, localErr) {\n  return function (err, rows, fields) {\n    if (err) {\n      localErr.message = err.message;\n      localErr.code = err.code;\n      localErr.errno = err.errno;\n      localErr.sql = err.sql;\n      localErr.sqlState = err.sqlState;\n      localErr.sqlMessage = err.sqlMessage;\n      reject(localErr);\n    } else {\n      resolve([rows, fields]);\n    }\n  };\n}\n\nfunction inheritEvents(source, target, events) {\n  const listeners = {};\n  target\n    .on('newListener', eventName => {\n      if (events.indexOf(eventName) >= 0 && !target.listenerCount(eventName)) {\n        source.on(\n          eventName,\n          (listeners[eventName] = function () {\n            const args = [].slice.call(arguments);\n            args.unshift(eventName);\n\n            target.emit.apply(target, args);\n          })\n        );\n      }\n    })\n    .on('removeListener', eventName => {\n      if (events.indexOf(eventName) >= 0 && !target.listenerCount(eventName)) {\n        source.removeListener(eventName, listeners[eventName]);\n        delete listeners[eventName];\n      }\n    });\n}\n\nclass PromisePreparedStatementInfo {\n  constructor(statement, promiseImpl) {\n    this.statement = statement;\n    this.Promise = promiseImpl;\n  }\n\n  execute(parameters) {\n    const s = this.statement;\n    const localErr = new Error();\n    return new this.Promise((resolve, reject) => {\n      const done = makeDoneCb(resolve, reject, localErr);\n      if (parameters) {\n        s.execute(parameters, done);\n      } else {\n        s.execute(done);\n      }\n    });\n  }\n\n  close() {\n    return new this.Promise(resolve => {\n      this.statement.close();\n      resolve();\n    });\n  }\n}\n\nclass PromiseConnection extends EventEmitter {\n  constructor(connection, promiseImpl) {\n    super();\n    this.connection = connection;\n    this.Promise = promiseImpl || Promise;\n    inheritEvents(connection, this, [\n      'error',\n      'drain',\n      'connect',\n      'end',\n      'enqueue'\n    ]);\n  }\n\n  release() {\n    this.connection.release();\n  }\n\n  query(query, params) {\n    const c = this.connection;\n    const localErr = new Error();\n    if (typeof params === 'function') {\n      throw new Error(\n        'Callback function is not available with promise clients.'\n      );\n    }\n    return new this.Promise((resolve, reject) => {\n      const done = makeDoneCb(resolve, reject, localErr);\n      if (params !== undefined) {\n        c.query(query, params, done);\n      } else {\n        c.query(query, done);\n      }\n    });\n  }\n\n  execute(query, params) {\n    const c = this.connection;\n    const localErr = new Error();\n    if (typeof params === 'function') {\n      throw new Error(\n        'Callback function is not available with promise clients.'\n      );\n    }\n    return new this.Promise((resolve, reject) => {\n      const done = makeDoneCb(resolve, reject, localErr);\n      if (params !== undefined) {\n        c.execute(query, params, done);\n      } else {\n        c.execute(query, done);\n      }\n    });\n  }\n\n  end() {\n    return new this.Promise(resolve => {\n      this.connection.end(resolve);\n    });\n  }\n\n  beginTransaction() {\n    const c = this.connection;\n    const localErr = new Error();\n    return new this.Promise((resolve, reject) => {\n      const done = makeDoneCb(resolve, reject, localErr);\n      c.beginTransaction(done);\n    });\n  }\n\n  commit() {\n    const c = this.connection;\n    const localErr = new Error();\n    return new this.Promise((resolve, reject) => {\n      const done = makeDoneCb(resolve, reject, localErr);\n      c.commit(done);\n    });\n  }\n\n  rollback() {\n    const c = this.connection;\n    const localErr = new Error();\n    return new this.Promise((resolve, reject) => {\n      const done = makeDoneCb(resolve, reject, localErr);\n      c.rollback(done);\n    });\n  }\n\n  ping() {\n    const c = this.connection;\n    const localErr = new Error();\n    return new this.Promise((resolve, reject) => {\n      const done = makeDoneCb(resolve, reject, localErr);\n      c.ping(done);\n    });\n  }\n\n  connect() {\n    const c = this.connection;\n    const localErr = new Error();\n    return new this.Promise((resolve, reject) => {\n      c.connect((err, param) => {\n        if (err) {\n          localErr.message = err.message;\n          localErr.code = err.code;\n          localErr.errno = err.errno;\n          localErr.sqlState = err.sqlState;\n          localErr.sqlMessage = err.sqlMessage;\n          reject(localErr);\n        } else {\n          resolve(param);\n        }\n      });\n    });\n  }\n\n  prepare(options) {\n    const c = this.connection;\n    const promiseImpl = this.Promise;\n    const localErr = new Error();\n    return new this.Promise((resolve, reject) => {\n      c.prepare(options, (err, statement) => {\n        if (err) {\n          localErr.message = err.message;\n          localErr.code = err.code;\n          localErr.errno = err.errno;\n          localErr.sqlState = err.sqlState;\n          localErr.sqlMessage = err.sqlMessage;\n          reject(localErr);\n        } else {\n          const wrappedStatement = new PromisePreparedStatementInfo(\n            statement,\n            promiseImpl\n          );\n          resolve(wrappedStatement);\n        }\n      });\n    });\n  }\n\n  changeUser(options) {\n    const c = this.connection;\n    const localErr = new Error();\n    return new this.Promise((resolve, reject) => {\n      c.changeUser(options, err => {\n        if (err) {\n          localErr.message = err.message;\n          localErr.code = err.code;\n          localErr.errno = err.errno;\n          localErr.sqlState = err.sqlState;\n          localErr.sqlMessage = err.sqlMessage;\n          reject(localErr);\n        } else {\n          resolve();\n        }\n      });\n    });\n  }\n\n  get config() {\n    return this.connection.config;\n  }\n\n  get threadId() {\n    return this.connection.threadId;\n  }\n}\n\nfunction createConnection(opts) {\n  const coreConnection = core.createConnection(opts);\n  const createConnectionErr = new Error();\n  const thePromise = opts.Promise || Promise;\n  if (!thePromise) {\n    throw new Error(\n      'no Promise implementation available.' +\n      'Use promise-enabled node version or pass userland Promise' +\n      \" implementation as parameter, for example: { Promise: require('bluebird') }\"\n    );\n  }\n  return new thePromise((resolve, reject) => {\n    coreConnection.once('connect', () => {\n      resolve(new PromiseConnection(coreConnection, thePromise));\n    });\n    coreConnection.once('error', err => {\n      createConnectionErr.message = err.message;\n      createConnectionErr.code = err.code;\n      createConnectionErr.errno = err.errno;\n      createConnectionErr.sqlState = err.sqlState;\n      reject(createConnectionErr);\n    });\n  });\n}\n\n// note: the callback of \"changeUser\" is not called on success\n// hence there is no possibility to call \"resolve\"\n\n// patching PromiseConnection\n// create facade functions for prototype functions on \"Connection\" that are not yet\n// implemented with PromiseConnection\n\n// proxy synchronous functions only\n(function (functionsToWrap) {\n  for (let i = 0; functionsToWrap && i < functionsToWrap.length; i++) {\n    const func = functionsToWrap[i];\n\n    if (\n      typeof core.Connection.prototype[func] === 'function' &&\n      PromiseConnection.prototype[func] === undefined\n    ) {\n      PromiseConnection.prototype[func] = (function factory(funcName) {\n        return function () {\n          return core.Connection.prototype[funcName].apply(\n            this.connection,\n            arguments\n          );\n        };\n      })(func);\n    }\n  }\n})([\n  // synchronous functions\n  'close',\n  'createBinlogStream',\n  'destroy',\n  'escape',\n  'escapeId',\n  'format',\n  'pause',\n  'pipe',\n  'resume',\n  'unprepare'\n]);\n\nclass PromisePoolConnection extends PromiseConnection {\n  constructor(connection, promiseImpl) {\n    super(connection, promiseImpl);\n  }\n\n  destroy() {\n    return core.PoolConnection.prototype.destroy.apply(\n      this.connection,\n      arguments\n    );\n  }\n}\n\nclass PromisePool extends EventEmitter {\n  constructor(pool, thePromise) {\n    super();\n    this.pool = pool;\n    this.Promise = thePromise || Promise;\n    inheritEvents(pool, this, ['acquire', 'connection', 'enqueue', 'release']);\n  }\n\n  getConnection() {\n    const corePool = this.pool;\n    return new this.Promise((resolve, reject) => {\n      corePool.getConnection((err, coreConnection) => {\n        if (err) {\n          reject(err);\n        } else {\n          resolve(new PromisePoolConnection(coreConnection, this.Promise));\n        }\n      });\n    });\n  }\n\n  query(sql, args) {\n    const corePool = this.pool;\n    const localErr = new Error();\n    if (typeof args === 'function') {\n      throw new Error(\n        'Callback function is not available with promise clients.'\n      );\n    }\n    return new this.Promise((resolve, reject) => {\n      const done = makeDoneCb(resolve, reject, localErr);\n      if (args !== undefined) {\n        corePool.query(sql, args, done);\n      } else {\n        corePool.query(sql, done);\n      }\n    });\n  }\n\n  execute(sql, args) {\n    const corePool = this.pool;\n    const localErr = new Error();\n    if (typeof args === 'function') {\n      throw new Error(\n        'Callback function is not available with promise clients.'\n      );\n    }\n    return new this.Promise((resolve, reject) => {\n      const done = makeDoneCb(resolve, reject, localErr);\n      if (args) {\n        corePool.execute(sql, args, done);\n      } else {\n        corePool.execute(sql, done);\n      }\n    });\n  }\n\n  end() {\n    const corePool = this.pool;\n    const localErr = new Error();\n    return new this.Promise((resolve, reject) => {\n      corePool.end(err => {\n        if (err) {\n          localErr.message = err.message;\n          localErr.code = err.code;\n          localErr.errno = err.errno;\n          localErr.sqlState = err.sqlState;\n          localErr.sqlMessage = err.sqlMessage;\n          reject(localErr);\n        } else {\n          resolve();\n        }\n      });\n    });\n  }\n}\n\nfunction createPool(opts) {\n  const corePool = core.createPool(opts);\n  const thePromise = opts.Promise || Promise;\n  if (!thePromise) {\n    throw new Error(\n      'no Promise implementation available.' +\n      'Use promise-enabled node version or pass userland Promise' +\n      \" implementation as parameter, for example: { Promise: require('bluebird') }\"\n    );\n  }\n\n  return new PromisePool(corePool, thePromise);\n}\n\n(function (functionsToWrap) {\n  for (let i = 0; functionsToWrap && i < functionsToWrap.length; i++) {\n    const func = functionsToWrap[i];\n\n    if (\n      typeof core.Pool.prototype[func] === 'function' &&\n      PromisePool.prototype[func] === undefined\n    ) {\n      PromisePool.prototype[func] = (function factory(funcName) {\n        return function () {\n          return core.Pool.prototype[funcName].apply(this.pool, arguments);\n        };\n      })(func);\n    }\n  }\n})([\n  // synchronous functions\n  'escape',\n  'escapeId',\n  'format'\n]);\n\nclass PromisePoolCluster extends EventEmitter {\n  constructor(poolCluster, thePromise) {\n    super();\n    this.poolCluster = poolCluster;\n    this.Promise = thePromise || Promise;\n    inheritEvents(poolCluster, this, ['acquire', 'connection', 'enqueue', 'release']);\n  }\n\n  getConnection() {\n    const corePoolCluster = this.poolCluster;\n    return new this.Promise((resolve, reject) => {\n      corePoolCluster.getConnection((err, coreConnection) => {\n        if (err) {\n          reject(err);\n        } else {\n          resolve(new PromisePoolConnection(coreConnection, this.Promise));\n        }\n      });\n    });\n  }\n\n  query(sql, args) {\n    const corePoolCluster = this.poolCluster;\n    const localErr = new Error();\n    if (typeof args === 'function') {\n      throw new Error(\n        'Callback function is not available with promise clients.'\n      );\n    }\n    return new this.Promise((resolve, reject) => {\n      const done = makeDoneCb(resolve, reject, localErr);\n      corePoolCluster.query(sql, args, done);\n    });\n  }\n\n  execute(sql, args) {\n    const corePoolCluster = this.poolCluster;\n    const localErr = new Error();\n    if (typeof args === 'function') {\n      throw new Error(\n        'Callback function is not available with promise clients.'\n      );\n    }\n    return new this.Promise((resolve, reject) => {\n      const done = makeDoneCb(resolve, reject, localErr);\n      corePoolCluster.execute(sql, args, done);\n    });\n  }\n\n  of(pattern, selector) {\n    return new PromisePoolCluster(\n      this.poolCluster.of(pattern, selector),\n      this.Promise\n    );\n  }\n\n  end() {\n    const corePoolCluster = this.poolCluster;\n    const localErr = new Error();\n    return new this.Promise((resolve, reject) => {\n      corePoolCluster.end(err => {\n        if (err) {\n          localErr.message = err.message;\n          localErr.code = err.code;\n          localErr.errno = err.errno;\n          localErr.sqlState = err.sqlState;\n          localErr.sqlMessage = err.sqlMessage;\n          reject(localErr);\n        } else {\n          resolve();\n        }\n      });\n    });\n  }\n}\n\n/**\n * proxy poolCluster synchronous functions\n */\n(function (functionsToWrap) {\n  for (let i = 0; functionsToWrap && i < functionsToWrap.length; i++) {\n    const func = functionsToWrap[i];\n\n    if (\n      typeof core.PoolCluster.prototype[func] === 'function' &&\n      PromisePoolCluster.prototype[func] === undefined\n    ) {\n      PromisePoolCluster.prototype[func] = (function factory(funcName) {\n        return function () {\n          return core.PoolCluster.prototype[funcName].apply(this.poolCluster, arguments);\n        };\n      })(func);\n    }\n  }\n})([\n  'add'\n]);\n\nfunction createPoolCluster(opts) {\n  const corePoolCluster = core.createPoolCluster(opts);\n  const thePromise = (opts && opts.Promise) || Promise;\n  if (!thePromise) {\n    throw new Error(\n      'no Promise implementation available.' +\n      'Use promise-enabled node version or pass userland Promise' +\n      \" implementation as parameter, for example: { Promise: require('bluebird') }\"\n    );\n  }\n  return new PromisePoolCluster(corePoolCluster, thePromise);\n}\n\nexports.createConnection = createConnection;\nexports.createPool = createPool;\nexports.createPoolCluster = createPoolCluster;\nexports.escape = core.escape;\nexports.escapeId = core.escapeId;\nexports.format = core.format;\nexports.raw = core.raw;\nexports.PromisePool = PromisePool;\nexports.PromiseConnection = PromiseConnection;\nexports.PromisePoolConnection = PromisePoolConnection;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/mysql2/promise.js?")},"./node_modules/named-placeholders/index.js":
/*!**************************************************!*\
  !*** ./node_modules/named-placeholders/index.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\r\n\r\n// based on code from Brian White @mscdex mariasql library - https://github.com/mscdex/node-mariasql/blob/master/lib/Client.js#L272-L332\r\n// License: https://github.com/mscdex/node-mariasql/blob/master/LICENSE\r\n\r\nconst RE_PARAM = /(?:\\?)|(?::(\\d+|(?:[a-zA-Z][a-zA-Z0-9_]*)))/g,\r\nDQUOTE = 34,\r\nSQUOTE = 39,\r\nBSLASH = 92;\r\n\r\nfunction parse(query) {\r\n  let ppos = RE_PARAM.exec(query);\r\n  let curpos = 0;\r\n  let start = 0;\r\n  let end;\r\n  const parts = [];\r\n  let inQuote = false;\r\n  let escape = false;\r\n  let qchr;\r\n  const tokens = [];\r\n  let qcnt = 0;\r\n  let lastTokenEndPos = 0;\r\n  let i;\r\n\r\n  if (ppos) {\r\n    do {\r\n      for (i=curpos,end=ppos.index; i<end; ++i) {\r\n        let chr = query.charCodeAt(i);\r\n        if (chr === BSLASH)\r\n        escape = !escape;\r\n        else {\r\n          if (escape) {\r\n            escape = false;\r\n            continue;\r\n          }\r\n          if (inQuote && chr === qchr) {\r\n            if (query.charCodeAt(i + 1) === qchr) {\r\n              // quote escaped via \"\" or ''\r\n              ++i;\r\n              continue;\r\n            }\r\n            inQuote = false;\r\n          } else if (chr === DQUOTE || chr === SQUOTE) {\r\n            inQuote = true;\r\n            qchr = chr;\r\n          }\r\n        }\r\n      }\r\n      if (!inQuote) {\r\n        parts.push(query.substring(start, end));\r\n        tokens.push(ppos[0].length === 1 ? qcnt++ : ppos[1]);\r\n        start = end + ppos[0].length;\r\n        lastTokenEndPos = start;\r\n      }\r\n      curpos = end + ppos[0].length;\r\n    } while (ppos = RE_PARAM.exec(query));\r\n\r\n    if (tokens.length) {\r\n      if (curpos < query.length) {\r\n        parts.push(query.substring(lastTokenEndPos));\r\n      }\r\n      return [parts, tokens];\r\n    }\r\n  }\r\n  return [query];\r\n};\r\n\r\nconst EMPTY_LRU_FN = (key, value) => {};\r\n\r\nfunction createCompiler(config) {\r\n  if (!config)\r\n  config = {};\r\n  if (!config.placeholder) {\r\n    config.placeholder = '?';\r\n  }\r\n  let ncache = 100;\r\n  let cache;\r\n  if (typeof config.cache === 'number') {\r\n    ncache = config.cache;\r\n  }\r\n  if (typeof config.cache === 'object') {\r\n    cache = config.cache;\r\n  }\r\n  if (config.cache !== false && !cache) {\r\n    cache = __webpack_require__(/*! lru-cache */ \"./node_modules/named-placeholders/node_modules/lru-cache/index.js\")({ max: ncache, dispose: EMPTY_LRU_FN });\r\n  }\r\n\r\n  function toArrayParams(tree, params) {\r\n    const arr = [];\r\n    if (tree.length == 1) {\r\n      return [tree[0], []];\r\n    }\r\n\r\n    if (typeof params == 'undefined')\r\n      throw new Error('Named query contains placeholders, but parameters object is undefined');\r\n\r\n    const tokens = tree[1];\r\n    for (let i=0; i < tokens.length; ++i) {\r\n      arr.push(params[tokens[i]]);\r\n    }\r\n    return [tree[0], arr];\r\n  }\r\n\r\n  function noTailingSemicolon(s) {\r\n    if (s.slice(-1) == ':') {\r\n      return s.slice(0, -1);\r\n    }\r\n    return s;\r\n  }\r\n\r\n  function join(tree) {\r\n    if (tree.length == 1) {\r\n      return tree;\r\n    }\r\n\r\n    let unnamed = noTailingSemicolon(tree[0][0]);\r\n    for (let i=1; i < tree[0].length; ++i) {\r\n      if (tree[0][i-1].slice(-1) == ':') {\r\n        unnamed += config.placeholder;\r\n      }\r\n      unnamed += config.placeholder;\r\n      unnamed += noTailingSemicolon(tree[0][i]);\r\n    }\r\n\r\n    const last = tree[0][tree[0].length -1];\r\n    if (tree[0].length == tree[1].length) {\r\n      if (last.slice(-1) == ':') {\r\n        unnamed += config.placeholder;\r\n      }\r\n      unnamed += config.placeholder;\r\n    }\r\n    return [unnamed, tree[1]];\r\n  }\r\n\r\n  function compile(query, paramsObj) {\r\n    let tree;\r\n    if (cache && (tree = cache.get(query))) {\r\n      return toArrayParams(tree, paramsObj)\r\n    }\r\n    tree = join(parse(query));\r\n    if(cache) {\r\n      cache.set(query, tree);\r\n    }\r\n    return toArrayParams(tree, paramsObj);\r\n  }\r\n\r\n  compile.parse = parse;\r\n  return compile;\r\n}\r\n\r\n// named :one :two to postgres-style numbered $1 $2 $3\r\nfunction toNumbered(q, params) {\r\n  const tree = parse(q);\r\n  const paramsArr = [];\r\n  if (tree.length == 1) {\r\n    return [tree[0], paramsArr];\r\n  }\r\n\r\n  const pIndexes = {};\r\n  let pLastIndex = 0;\r\n  let qs = '';\r\n  let varIndex;\r\n  const varNames = [];\r\n  for (let i=0; i < tree[0].length; ++i) {\r\n    varIndex = pIndexes[tree[1][i]];\r\n    if (!varIndex) {\r\n      varIndex = ++pLastIndex;\r\n      pIndexes[tree[1][i]] = varIndex;\r\n    }\r\n    if (tree[1][i]) {\r\n      varNames[varIndex - 1] = tree[1][i];\r\n      qs += tree[0][i] + '$' + varIndex;\r\n    } else {\r\n      qs += tree[0][i];\r\n    }\r\n  }\r\n  return [qs, varNames.map(n => params[n])];\r\n}\r\n\r\nmodule.exports = createCompiler;\r\nmodule.exports.toNumbered = toNumbered;\r\n\n\n//# sourceURL=webpack://txadmin/./node_modules/named-placeholders/index.js?")},"./node_modules/named-placeholders/node_modules/lru-cache/index.js":
/*!*************************************************************************!*\
  !*** ./node_modules/named-placeholders/node_modules/lru-cache/index.js ***!
  \*************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nmodule.exports = LRUCache\n\n// This will be a proper iterable 'Map' in engines that support it,\n// or a fakey-fake PseudoMap in older versions.\nvar Map = __webpack_require__(/*! pseudomap */ \"./node_modules/pseudomap/map.js\")\nvar util = __webpack_require__(/*! util */ \"util\")\n\n// A linked list to keep track of recently-used-ness\nvar Yallist = __webpack_require__(/*! yallist */ \"./node_modules/named-placeholders/node_modules/yallist/yallist.js\")\n\n// use symbols if possible, otherwise just _props\nvar hasSymbol = typeof Symbol === 'function' && ({\"APP_ENV\":\"webpack\"})._nodeLRUCacheForceNoSymbol !== '1'\nvar makeSymbol\nif (hasSymbol) {\n  makeSymbol = function (key) {\n    return Symbol(key)\n  }\n} else {\n  makeSymbol = function (key) {\n    return '_' + key\n  }\n}\n\nvar MAX = makeSymbol('max')\nvar LENGTH = makeSymbol('length')\nvar LENGTH_CALCULATOR = makeSymbol('lengthCalculator')\nvar ALLOW_STALE = makeSymbol('allowStale')\nvar MAX_AGE = makeSymbol('maxAge')\nvar DISPOSE = makeSymbol('dispose')\nvar NO_DISPOSE_ON_SET = makeSymbol('noDisposeOnSet')\nvar LRU_LIST = makeSymbol('lruList')\nvar CACHE = makeSymbol('cache')\n\nfunction naiveLength () { return 1 }\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest.  the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node.  This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nfunction LRUCache (options) {\n  if (!(this instanceof LRUCache)) {\n    return new LRUCache(options)\n  }\n\n  if (typeof options === 'number') {\n    options = { max: options }\n  }\n\n  if (!options) {\n    options = {}\n  }\n\n  var max = this[MAX] = options.max\n  // Kind of weird to have a default max of Infinity, but oh well.\n  if (!max ||\n      !(typeof max === 'number') ||\n      max <= 0) {\n    this[MAX] = Infinity\n  }\n\n  var lc = options.length || naiveLength\n  if (typeof lc !== 'function') {\n    lc = naiveLength\n  }\n  this[LENGTH_CALCULATOR] = lc\n\n  this[ALLOW_STALE] = options.stale || false\n  this[MAX_AGE] = options.maxAge || 0\n  this[DISPOSE] = options.dispose\n  this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n  this.reset()\n}\n\n// resize the cache when the max changes.\nObject.defineProperty(LRUCache.prototype, 'max', {\n  set: function (mL) {\n    if (!mL || !(typeof mL === 'number') || mL <= 0) {\n      mL = Infinity\n    }\n    this[MAX] = mL\n    trim(this)\n  },\n  get: function () {\n    return this[MAX]\n  },\n  enumerable: true\n})\n\nObject.defineProperty(LRUCache.prototype, 'allowStale', {\n  set: function (allowStale) {\n    this[ALLOW_STALE] = !!allowStale\n  },\n  get: function () {\n    return this[ALLOW_STALE]\n  },\n  enumerable: true\n})\n\nObject.defineProperty(LRUCache.prototype, 'maxAge', {\n  set: function (mA) {\n    if (!mA || !(typeof mA === 'number') || mA < 0) {\n      mA = 0\n    }\n    this[MAX_AGE] = mA\n    trim(this)\n  },\n  get: function () {\n    return this[MAX_AGE]\n  },\n  enumerable: true\n})\n\n// resize the cache when the lengthCalculator changes.\nObject.defineProperty(LRUCache.prototype, 'lengthCalculator', {\n  set: function (lC) {\n    if (typeof lC !== 'function') {\n      lC = naiveLength\n    }\n    if (lC !== this[LENGTH_CALCULATOR]) {\n      this[LENGTH_CALCULATOR] = lC\n      this[LENGTH] = 0\n      this[LRU_LIST].forEach(function (hit) {\n        hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n        this[LENGTH] += hit.length\n      }, this)\n    }\n    trim(this)\n  },\n  get: function () { return this[LENGTH_CALCULATOR] },\n  enumerable: true\n})\n\nObject.defineProperty(LRUCache.prototype, 'length', {\n  get: function () { return this[LENGTH] },\n  enumerable: true\n})\n\nObject.defineProperty(LRUCache.prototype, 'itemCount', {\n  get: function () { return this[LRU_LIST].length },\n  enumerable: true\n})\n\nLRUCache.prototype.rforEach = function (fn, thisp) {\n  thisp = thisp || this\n  for (var walker = this[LRU_LIST].tail; walker !== null;) {\n    var prev = walker.prev\n    forEachStep(this, fn, walker, thisp)\n    walker = prev\n  }\n}\n\nfunction forEachStep (self, fn, node, thisp) {\n  var hit = node.value\n  if (isStale(self, hit)) {\n    del(self, node)\n    if (!self[ALLOW_STALE]) {\n      hit = undefined\n    }\n  }\n  if (hit) {\n    fn.call(thisp, hit.value, hit.key, self)\n  }\n}\n\nLRUCache.prototype.forEach = function (fn, thisp) {\n  thisp = thisp || this\n  for (var walker = this[LRU_LIST].head; walker !== null;) {\n    var next = walker.next\n    forEachStep(this, fn, walker, thisp)\n    walker = next\n  }\n}\n\nLRUCache.prototype.keys = function () {\n  return this[LRU_LIST].toArray().map(function (k) {\n    return k.key\n  }, this)\n}\n\nLRUCache.prototype.values = function () {\n  return this[LRU_LIST].toArray().map(function (k) {\n    return k.value\n  }, this)\n}\n\nLRUCache.prototype.reset = function () {\n  if (this[DISPOSE] &&\n      this[LRU_LIST] &&\n      this[LRU_LIST].length) {\n    this[LRU_LIST].forEach(function (hit) {\n      this[DISPOSE](hit.key, hit.value)\n    }, this)\n  }\n\n  this[CACHE] = new Map() // hash of items by key\n  this[LRU_LIST] = new Yallist() // list of items in order of use recency\n  this[LENGTH] = 0 // length of items in the list\n}\n\nLRUCache.prototype.dump = function () {\n  return this[LRU_LIST].map(function (hit) {\n    if (!isStale(this, hit)) {\n      return {\n        k: hit.key,\n        v: hit.value,\n        e: hit.now + (hit.maxAge || 0)\n      }\n    }\n  }, this).toArray().filter(function (h) {\n    return h\n  })\n}\n\nLRUCache.prototype.dumpLru = function () {\n  return this[LRU_LIST]\n}\n\n/* istanbul ignore next */\nLRUCache.prototype.inspect = function (n, opts) {\n  var str = 'LRUCache {'\n  var extras = false\n\n  var as = this[ALLOW_STALE]\n  if (as) {\n    str += '\\n  allowStale: true'\n    extras = true\n  }\n\n  var max = this[MAX]\n  if (max && max !== Infinity) {\n    if (extras) {\n      str += ','\n    }\n    str += '\\n  max: ' + util.inspect(max, opts)\n    extras = true\n  }\n\n  var maxAge = this[MAX_AGE]\n  if (maxAge) {\n    if (extras) {\n      str += ','\n    }\n    str += '\\n  maxAge: ' + util.inspect(maxAge, opts)\n    extras = true\n  }\n\n  var lc = this[LENGTH_CALCULATOR]\n  if (lc && lc !== naiveLength) {\n    if (extras) {\n      str += ','\n    }\n    str += '\\n  length: ' + util.inspect(this[LENGTH], opts)\n    extras = true\n  }\n\n  var didFirst = false\n  this[LRU_LIST].forEach(function (item) {\n    if (didFirst) {\n      str += ',\\n  '\n    } else {\n      if (extras) {\n        str += ',\\n'\n      }\n      didFirst = true\n      str += '\\n  '\n    }\n    var key = util.inspect(item.key).split('\\n').join('\\n  ')\n    var val = { value: item.value }\n    if (item.maxAge !== maxAge) {\n      val.maxAge = item.maxAge\n    }\n    if (lc !== naiveLength) {\n      val.length = item.length\n    }\n    if (isStale(this, item)) {\n      val.stale = true\n    }\n\n    val = util.inspect(val, opts).split('\\n').join('\\n  ')\n    str += key + ' => ' + val\n  })\n\n  if (didFirst || extras) {\n    str += '\\n'\n  }\n  str += '}'\n\n  return str\n}\n\nLRUCache.prototype.set = function (key, value, maxAge) {\n  maxAge = maxAge || this[MAX_AGE]\n\n  var now = maxAge ? Date.now() : 0\n  var len = this[LENGTH_CALCULATOR](value, key)\n\n  if (this[CACHE].has(key)) {\n    if (len > this[MAX]) {\n      del(this, this[CACHE].get(key))\n      return false\n    }\n\n    var node = this[CACHE].get(key)\n    var item = node.value\n\n    // dispose of the old one before overwriting\n    // split out into 2 ifs for better coverage tracking\n    if (this[DISPOSE]) {\n      if (!this[NO_DISPOSE_ON_SET]) {\n        this[DISPOSE](key, item.value)\n      }\n    }\n\n    item.now = now\n    item.maxAge = maxAge\n    item.value = value\n    this[LENGTH] += len - item.length\n    item.length = len\n    this.get(key)\n    trim(this)\n    return true\n  }\n\n  var hit = new Entry(key, value, len, now, maxAge)\n\n  // oversized objects fall out of cache automatically.\n  if (hit.length > this[MAX]) {\n    if (this[DISPOSE]) {\n      this[DISPOSE](key, value)\n    }\n    return false\n  }\n\n  this[LENGTH] += hit.length\n  this[LRU_LIST].unshift(hit)\n  this[CACHE].set(key, this[LRU_LIST].head)\n  trim(this)\n  return true\n}\n\nLRUCache.prototype.has = function (key) {\n  if (!this[CACHE].has(key)) return false\n  var hit = this[CACHE].get(key).value\n  if (isStale(this, hit)) {\n    return false\n  }\n  return true\n}\n\nLRUCache.prototype.get = function (key) {\n  return get(this, key, true)\n}\n\nLRUCache.prototype.peek = function (key) {\n  return get(this, key, false)\n}\n\nLRUCache.prototype.pop = function () {\n  var node = this[LRU_LIST].tail\n  if (!node) return null\n  del(this, node)\n  return node.value\n}\n\nLRUCache.prototype.del = function (key) {\n  del(this, this[CACHE].get(key))\n}\n\nLRUCache.prototype.load = function (arr) {\n  // reset the cache\n  this.reset()\n\n  var now = Date.now()\n  // A previous serialized cache has the most recent items first\n  for (var l = arr.length - 1; l >= 0; l--) {\n    var hit = arr[l]\n    var expiresAt = hit.e || 0\n    if (expiresAt === 0) {\n      // the item was created without expiration in a non aged cache\n      this.set(hit.k, hit.v)\n    } else {\n      var maxAge = expiresAt - now\n      // dont add already expired items\n      if (maxAge > 0) {\n        this.set(hit.k, hit.v, maxAge)\n      }\n    }\n  }\n}\n\nLRUCache.prototype.prune = function () {\n  var self = this\n  this[CACHE].forEach(function (value, key) {\n    get(self, key, false)\n  })\n}\n\nfunction get (self, key, doUse) {\n  var node = self[CACHE].get(key)\n  if (node) {\n    var hit = node.value\n    if (isStale(self, hit)) {\n      del(self, node)\n      if (!self[ALLOW_STALE]) hit = undefined\n    } else {\n      if (doUse) {\n        self[LRU_LIST].unshiftNode(node)\n      }\n    }\n    if (hit) hit = hit.value\n  }\n  return hit\n}\n\nfunction isStale (self, hit) {\n  if (!hit || (!hit.maxAge && !self[MAX_AGE])) {\n    return false\n  }\n  var stale = false\n  var diff = Date.now() - hit.now\n  if (hit.maxAge) {\n    stale = diff > hit.maxAge\n  } else {\n    stale = self[MAX_AGE] && (diff > self[MAX_AGE])\n  }\n  return stale\n}\n\nfunction trim (self) {\n  if (self[LENGTH] > self[MAX]) {\n    for (var walker = self[LRU_LIST].tail;\n      self[LENGTH] > self[MAX] && walker !== null;) {\n      // We know that we're about to delete this one, and also\n      // what the next least recently used key will be, so just\n      // go ahead and set it now.\n      var prev = walker.prev\n      del(self, walker)\n      walker = prev\n    }\n  }\n}\n\nfunction del (self, node) {\n  if (node) {\n    var hit = node.value\n    if (self[DISPOSE]) {\n      self[DISPOSE](hit.key, hit.value)\n    }\n    self[LENGTH] -= hit.length\n    self[CACHE].delete(hit.key)\n    self[LRU_LIST].removeNode(node)\n  }\n}\n\n// classy, since V8 prefers predictable objects.\nfunction Entry (key, value, length, now, maxAge) {\n  this.key = key\n  this.value = value\n  this.length = length\n  this.now = now\n  this.maxAge = maxAge || 0\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/named-placeholders/node_modules/lru-cache/index.js?")},"./node_modules/named-placeholders/node_modules/yallist/yallist.js":
/*!*************************************************************************!*\
  !*** ./node_modules/named-placeholders/node_modules/yallist/yallist.js ***!
  \*************************************************************************/module=>{eval("module.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n  var self = this\n  if (!(self instanceof Yallist)) {\n    self = new Yallist()\n  }\n\n  self.tail = null\n  self.head = null\n  self.length = 0\n\n  if (list && typeof list.forEach === 'function') {\n    list.forEach(function (item) {\n      self.push(item)\n    })\n  } else if (arguments.length > 0) {\n    for (var i = 0, l = arguments.length; i < l; i++) {\n      self.push(arguments[i])\n    }\n  }\n\n  return self\n}\n\nYallist.prototype.removeNode = function (node) {\n  if (node.list !== this) {\n    throw new Error('removing node which does not belong to this list')\n  }\n\n  var next = node.next\n  var prev = node.prev\n\n  if (next) {\n    next.prev = prev\n  }\n\n  if (prev) {\n    prev.next = next\n  }\n\n  if (node === this.head) {\n    this.head = next\n  }\n  if (node === this.tail) {\n    this.tail = prev\n  }\n\n  node.list.length--\n  node.next = null\n  node.prev = null\n  node.list = null\n}\n\nYallist.prototype.unshiftNode = function (node) {\n  if (node === this.head) {\n    return\n  }\n\n  if (node.list) {\n    node.list.removeNode(node)\n  }\n\n  var head = this.head\n  node.list = this\n  node.next = head\n  if (head) {\n    head.prev = node\n  }\n\n  this.head = node\n  if (!this.tail) {\n    this.tail = node\n  }\n  this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n  if (node === this.tail) {\n    return\n  }\n\n  if (node.list) {\n    node.list.removeNode(node)\n  }\n\n  var tail = this.tail\n  node.list = this\n  node.prev = tail\n  if (tail) {\n    tail.next = node\n  }\n\n  this.tail = node\n  if (!this.head) {\n    this.head = node\n  }\n  this.length++\n}\n\nYallist.prototype.push = function () {\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    push(this, arguments[i])\n  }\n  return this.length\n}\n\nYallist.prototype.unshift = function () {\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    unshift(this, arguments[i])\n  }\n  return this.length\n}\n\nYallist.prototype.pop = function () {\n  if (!this.tail) {\n    return undefined\n  }\n\n  var res = this.tail.value\n  this.tail = this.tail.prev\n  if (this.tail) {\n    this.tail.next = null\n  } else {\n    this.head = null\n  }\n  this.length--\n  return res\n}\n\nYallist.prototype.shift = function () {\n  if (!this.head) {\n    return undefined\n  }\n\n  var res = this.head.value\n  this.head = this.head.next\n  if (this.head) {\n    this.head.prev = null\n  } else {\n    this.tail = null\n  }\n  this.length--\n  return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n  thisp = thisp || this\n  for (var walker = this.head, i = 0; walker !== null; i++) {\n    fn.call(thisp, walker.value, i, this)\n    walker = walker.next\n  }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n  thisp = thisp || this\n  for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n    fn.call(thisp, walker.value, i, this)\n    walker = walker.prev\n  }\n}\n\nYallist.prototype.get = function (n) {\n  for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n    // abort out of the list early if we hit a cycle\n    walker = walker.next\n  }\n  if (i === n && walker !== null) {\n    return walker.value\n  }\n}\n\nYallist.prototype.getReverse = function (n) {\n  for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n    // abort out of the list early if we hit a cycle\n    walker = walker.prev\n  }\n  if (i === n && walker !== null) {\n    return walker.value\n  }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n  thisp = thisp || this\n  var res = new Yallist()\n  for (var walker = this.head; walker !== null;) {\n    res.push(fn.call(thisp, walker.value, this))\n    walker = walker.next\n  }\n  return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n  thisp = thisp || this\n  var res = new Yallist()\n  for (var walker = this.tail; walker !== null;) {\n    res.push(fn.call(thisp, walker.value, this))\n    walker = walker.prev\n  }\n  return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n  var acc\n  var walker = this.head\n  if (arguments.length > 1) {\n    acc = initial\n  } else if (this.head) {\n    walker = this.head.next\n    acc = this.head.value\n  } else {\n    throw new TypeError('Reduce of empty list with no initial value')\n  }\n\n  for (var i = 0; walker !== null; i++) {\n    acc = fn(acc, walker.value, i)\n    walker = walker.next\n  }\n\n  return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n  var acc\n  var walker = this.tail\n  if (arguments.length > 1) {\n    acc = initial\n  } else if (this.tail) {\n    walker = this.tail.prev\n    acc = this.tail.value\n  } else {\n    throw new TypeError('Reduce of empty list with no initial value')\n  }\n\n  for (var i = this.length - 1; walker !== null; i--) {\n    acc = fn(acc, walker.value, i)\n    walker = walker.prev\n  }\n\n  return acc\n}\n\nYallist.prototype.toArray = function () {\n  var arr = new Array(this.length)\n  for (var i = 0, walker = this.head; walker !== null; i++) {\n    arr[i] = walker.value\n    walker = walker.next\n  }\n  return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n  var arr = new Array(this.length)\n  for (var i = 0, walker = this.tail; walker !== null; i++) {\n    arr[i] = walker.value\n    walker = walker.prev\n  }\n  return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n  to = to || this.length\n  if (to < 0) {\n    to += this.length\n  }\n  from = from || 0\n  if (from < 0) {\n    from += this.length\n  }\n  var ret = new Yallist()\n  if (to < from || to < 0) {\n    return ret\n  }\n  if (from < 0) {\n    from = 0\n  }\n  if (to > this.length) {\n    to = this.length\n  }\n  for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n    walker = walker.next\n  }\n  for (; walker !== null && i < to; i++, walker = walker.next) {\n    ret.push(walker.value)\n  }\n  return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n  to = to || this.length\n  if (to < 0) {\n    to += this.length\n  }\n  from = from || 0\n  if (from < 0) {\n    from += this.length\n  }\n  var ret = new Yallist()\n  if (to < from || to < 0) {\n    return ret\n  }\n  if (from < 0) {\n    from = 0\n  }\n  if (to > this.length) {\n    to = this.length\n  }\n  for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n    walker = walker.prev\n  }\n  for (; walker !== null && i > from; i--, walker = walker.prev) {\n    ret.push(walker.value)\n  }\n  return ret\n}\n\nYallist.prototype.reverse = function () {\n  var head = this.head\n  var tail = this.tail\n  for (var walker = head; walker !== null; walker = walker.prev) {\n    var p = walker.prev\n    walker.prev = walker.next\n    walker.next = p\n  }\n  this.head = tail\n  this.tail = head\n  return this\n}\n\nfunction push (self, item) {\n  self.tail = new Node(item, self.tail, null, self)\n  if (!self.head) {\n    self.head = self.tail\n  }\n  self.length++\n}\n\nfunction unshift (self, item) {\n  self.head = new Node(item, null, self.head, self)\n  if (!self.tail) {\n    self.tail = self.head\n  }\n  self.length++\n}\n\nfunction Node (value, prev, next, list) {\n  if (!(this instanceof Node)) {\n    return new Node(value, prev, next, list)\n  }\n\n  this.list = list\n  this.value = value\n\n  if (prev) {\n    prev.next = this\n    this.prev = prev\n  } else {\n    this.prev = null\n  }\n\n  if (next) {\n    next.prev = this\n    this.next = next\n  } else {\n    this.next = null\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/named-placeholders/node_modules/yallist/yallist.js?")},"./node_modules/nanoid-dictionary/nolookalikes.js":
/*!********************************************************!*\
  !*** ./node_modules/nanoid-dictionary/nolookalikes.js ***!
  \********************************************************/module=>{eval("module.exports = '346789ABCDEFGHJKLMNPQRTUVWXYabcdefghijkmnpqrtwxyz';\n\n\n//# sourceURL=webpack://txadmin/./node_modules/nanoid-dictionary/nolookalikes.js?")},"./node_modules/negotiator/index.js":
/*!******************************************!*\
  !*** ./node_modules/negotiator/index.js ***!
  \******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('/*!\n * negotiator\n * Copyright(c) 2012 Federico Romero\n * Copyright(c) 2012-2014 Isaac Z. Schlueter\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\nvar preferredCharsets = __webpack_require__(/*! ./lib/charset */ "./node_modules/negotiator/lib/charset.js")\nvar preferredEncodings = __webpack_require__(/*! ./lib/encoding */ "./node_modules/negotiator/lib/encoding.js")\nvar preferredLanguages = __webpack_require__(/*! ./lib/language */ "./node_modules/negotiator/lib/language.js")\nvar preferredMediaTypes = __webpack_require__(/*! ./lib/mediaType */ "./node_modules/negotiator/lib/mediaType.js")\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = Negotiator;\nmodule.exports.Negotiator = Negotiator;\n\n/**\n * Create a Negotiator instance from a request.\n * @param {object} request\n * @public\n */\n\nfunction Negotiator(request) {\n  if (!(this instanceof Negotiator)) {\n    return new Negotiator(request);\n  }\n\n  this.request = request;\n}\n\nNegotiator.prototype.charset = function charset(available) {\n  var set = this.charsets(available);\n  return set && set[0];\n};\n\nNegotiator.prototype.charsets = function charsets(available) {\n  return preferredCharsets(this.request.headers[\'accept-charset\'], available);\n};\n\nNegotiator.prototype.encoding = function encoding(available) {\n  var set = this.encodings(available);\n  return set && set[0];\n};\n\nNegotiator.prototype.encodings = function encodings(available) {\n  return preferredEncodings(this.request.headers[\'accept-encoding\'], available);\n};\n\nNegotiator.prototype.language = function language(available) {\n  var set = this.languages(available);\n  return set && set[0];\n};\n\nNegotiator.prototype.languages = function languages(available) {\n  return preferredLanguages(this.request.headers[\'accept-language\'], available);\n};\n\nNegotiator.prototype.mediaType = function mediaType(available) {\n  var set = this.mediaTypes(available);\n  return set && set[0];\n};\n\nNegotiator.prototype.mediaTypes = function mediaTypes(available) {\n  return preferredMediaTypes(this.request.headers.accept, available);\n};\n\n// Backwards compatibility\nNegotiator.prototype.preferredCharset = Negotiator.prototype.charset;\nNegotiator.prototype.preferredCharsets = Negotiator.prototype.charsets;\nNegotiator.prototype.preferredEncoding = Negotiator.prototype.encoding;\nNegotiator.prototype.preferredEncodings = Negotiator.prototype.encodings;\nNegotiator.prototype.preferredLanguage = Negotiator.prototype.language;\nNegotiator.prototype.preferredLanguages = Negotiator.prototype.languages;\nNegotiator.prototype.preferredMediaType = Negotiator.prototype.mediaType;\nNegotiator.prototype.preferredMediaTypes = Negotiator.prototype.mediaTypes;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/negotiator/index.js?')},"./node_modules/negotiator/lib/charset.js":
/*!************************************************!*\
  !*** ./node_modules/negotiator/lib/charset.js ***!
  \************************************************/module=>{"use strict";eval("/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredCharsets;\nmodule.exports.preferredCharsets = preferredCharsets;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleCharsetRegExp = /^\\s*([^\\s;]+)\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept-Charset header.\n * @private\n */\n\nfunction parseAcceptCharset(accept) {\n  var accepts = accept.split(',');\n\n  for (var i = 0, j = 0; i < accepts.length; i++) {\n    var charset = parseCharset(accepts[i].trim(), i);\n\n    if (charset) {\n      accepts[j++] = charset;\n    }\n  }\n\n  // trim accepts\n  accepts.length = j;\n\n  return accepts;\n}\n\n/**\n * Parse a charset from the Accept-Charset header.\n * @private\n */\n\nfunction parseCharset(str, i) {\n  var match = simpleCharsetRegExp.exec(str);\n  if (!match) return null;\n\n  var charset = match[1];\n  var q = 1;\n  if (match[2]) {\n    var params = match[2].split(';')\n    for (var j = 0; j < params.length; j++) {\n      var p = params[j].trim().split('=');\n      if (p[0] === 'q') {\n        q = parseFloat(p[1]);\n        break;\n      }\n    }\n  }\n\n  return {\n    charset: charset,\n    q: q,\n    i: i\n  };\n}\n\n/**\n * Get the priority of a charset.\n * @private\n */\n\nfunction getCharsetPriority(charset, accepted, index) {\n  var priority = {o: -1, q: 0, s: 0};\n\n  for (var i = 0; i < accepted.length; i++) {\n    var spec = specify(charset, accepted[i], index);\n\n    if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n      priority = spec;\n    }\n  }\n\n  return priority;\n}\n\n/**\n * Get the specificity of the charset.\n * @private\n */\n\nfunction specify(charset, spec, index) {\n  var s = 0;\n  if(spec.charset.toLowerCase() === charset.toLowerCase()){\n    s |= 1;\n  } else if (spec.charset !== '*' ) {\n    return null\n  }\n\n  return {\n    i: index,\n    o: spec.i,\n    q: spec.q,\n    s: s\n  }\n}\n\n/**\n * Get the preferred charsets from an Accept-Charset header.\n * @public\n */\n\nfunction preferredCharsets(accept, provided) {\n  // RFC 2616 sec 14.2: no header = *\n  var accepts = parseAcceptCharset(accept === undefined ? '*' : accept || '');\n\n  if (!provided) {\n    // sorted list of all charsets\n    return accepts\n      .filter(isQuality)\n      .sort(compareSpecs)\n      .map(getFullCharset);\n  }\n\n  var priorities = provided.map(function getPriority(type, index) {\n    return getCharsetPriority(type, accepts, index);\n  });\n\n  // sorted list of accepted charsets\n  return priorities.filter(isQuality).sort(compareSpecs).map(function getCharset(priority) {\n    return provided[priorities.indexOf(priority)];\n  });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n  return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full charset string.\n * @private\n */\n\nfunction getFullCharset(spec) {\n  return spec.charset;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n  return spec.q > 0;\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/negotiator/lib/charset.js?")},"./node_modules/negotiator/lib/encoding.js":
/*!*************************************************!*\
  !*** ./node_modules/negotiator/lib/encoding.js ***!
  \*************************************************/module=>{"use strict";eval("/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredEncodings;\nmodule.exports.preferredEncodings = preferredEncodings;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleEncodingRegExp = /^\\s*([^\\s;]+)\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept-Encoding header.\n * @private\n */\n\nfunction parseAcceptEncoding(accept) {\n  var accepts = accept.split(',');\n  var hasIdentity = false;\n  var minQuality = 1;\n\n  for (var i = 0, j = 0; i < accepts.length; i++) {\n    var encoding = parseEncoding(accepts[i].trim(), i);\n\n    if (encoding) {\n      accepts[j++] = encoding;\n      hasIdentity = hasIdentity || specify('identity', encoding);\n      minQuality = Math.min(minQuality, encoding.q || 1);\n    }\n  }\n\n  if (!hasIdentity) {\n    /*\n     * If identity doesn't explicitly appear in the accept-encoding header,\n     * it's added to the list of acceptable encoding with the lowest q\n     */\n    accepts[j++] = {\n      encoding: 'identity',\n      q: minQuality,\n      i: i\n    };\n  }\n\n  // trim accepts\n  accepts.length = j;\n\n  return accepts;\n}\n\n/**\n * Parse an encoding from the Accept-Encoding header.\n * @private\n */\n\nfunction parseEncoding(str, i) {\n  var match = simpleEncodingRegExp.exec(str);\n  if (!match) return null;\n\n  var encoding = match[1];\n  var q = 1;\n  if (match[2]) {\n    var params = match[2].split(';');\n    for (var j = 0; j < params.length; j++) {\n      var p = params[j].trim().split('=');\n      if (p[0] === 'q') {\n        q = parseFloat(p[1]);\n        break;\n      }\n    }\n  }\n\n  return {\n    encoding: encoding,\n    q: q,\n    i: i\n  };\n}\n\n/**\n * Get the priority of an encoding.\n * @private\n */\n\nfunction getEncodingPriority(encoding, accepted, index) {\n  var priority = {o: -1, q: 0, s: 0};\n\n  for (var i = 0; i < accepted.length; i++) {\n    var spec = specify(encoding, accepted[i], index);\n\n    if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n      priority = spec;\n    }\n  }\n\n  return priority;\n}\n\n/**\n * Get the specificity of the encoding.\n * @private\n */\n\nfunction specify(encoding, spec, index) {\n  var s = 0;\n  if(spec.encoding.toLowerCase() === encoding.toLowerCase()){\n    s |= 1;\n  } else if (spec.encoding !== '*' ) {\n    return null\n  }\n\n  return {\n    i: index,\n    o: spec.i,\n    q: spec.q,\n    s: s\n  }\n};\n\n/**\n * Get the preferred encodings from an Accept-Encoding header.\n * @public\n */\n\nfunction preferredEncodings(accept, provided) {\n  var accepts = parseAcceptEncoding(accept || '');\n\n  if (!provided) {\n    // sorted list of all encodings\n    return accepts\n      .filter(isQuality)\n      .sort(compareSpecs)\n      .map(getFullEncoding);\n  }\n\n  var priorities = provided.map(function getPriority(type, index) {\n    return getEncodingPriority(type, accepts, index);\n  });\n\n  // sorted list of accepted encodings\n  return priorities.filter(isQuality).sort(compareSpecs).map(function getEncoding(priority) {\n    return provided[priorities.indexOf(priority)];\n  });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n  return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full encoding string.\n * @private\n */\n\nfunction getFullEncoding(spec) {\n  return spec.encoding;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n  return spec.q > 0;\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/negotiator/lib/encoding.js?")},"./node_modules/negotiator/lib/language.js":
/*!*************************************************!*\
  !*** ./node_modules/negotiator/lib/language.js ***!
  \*************************************************/module=>{"use strict";eval("/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredLanguages;\nmodule.exports.preferredLanguages = preferredLanguages;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleLanguageRegExp = /^\\s*([^\\s\\-;]+)(?:-([^\\s;]+))?\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept-Language header.\n * @private\n */\n\nfunction parseAcceptLanguage(accept) {\n  var accepts = accept.split(',');\n\n  for (var i = 0, j = 0; i < accepts.length; i++) {\n    var language = parseLanguage(accepts[i].trim(), i);\n\n    if (language) {\n      accepts[j++] = language;\n    }\n  }\n\n  // trim accepts\n  accepts.length = j;\n\n  return accepts;\n}\n\n/**\n * Parse a language from the Accept-Language header.\n * @private\n */\n\nfunction parseLanguage(str, i) {\n  var match = simpleLanguageRegExp.exec(str);\n  if (!match) return null;\n\n  var prefix = match[1]\n  var suffix = match[2]\n  var full = prefix\n\n  if (suffix) full += \"-\" + suffix;\n\n  var q = 1;\n  if (match[3]) {\n    var params = match[3].split(';')\n    for (var j = 0; j < params.length; j++) {\n      var p = params[j].split('=');\n      if (p[0] === 'q') q = parseFloat(p[1]);\n    }\n  }\n\n  return {\n    prefix: prefix,\n    suffix: suffix,\n    q: q,\n    i: i,\n    full: full\n  };\n}\n\n/**\n * Get the priority of a language.\n * @private\n */\n\nfunction getLanguagePriority(language, accepted, index) {\n  var priority = {o: -1, q: 0, s: 0};\n\n  for (var i = 0; i < accepted.length; i++) {\n    var spec = specify(language, accepted[i], index);\n\n    if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n      priority = spec;\n    }\n  }\n\n  return priority;\n}\n\n/**\n * Get the specificity of the language.\n * @private\n */\n\nfunction specify(language, spec, index) {\n  var p = parseLanguage(language)\n  if (!p) return null;\n  var s = 0;\n  if(spec.full.toLowerCase() === p.full.toLowerCase()){\n    s |= 4;\n  } else if (spec.prefix.toLowerCase() === p.full.toLowerCase()) {\n    s |= 2;\n  } else if (spec.full.toLowerCase() === p.prefix.toLowerCase()) {\n    s |= 1;\n  } else if (spec.full !== '*' ) {\n    return null\n  }\n\n  return {\n    i: index,\n    o: spec.i,\n    q: spec.q,\n    s: s\n  }\n};\n\n/**\n * Get the preferred languages from an Accept-Language header.\n * @public\n */\n\nfunction preferredLanguages(accept, provided) {\n  // RFC 2616 sec 14.4: no header = *\n  var accepts = parseAcceptLanguage(accept === undefined ? '*' : accept || '');\n\n  if (!provided) {\n    // sorted list of all languages\n    return accepts\n      .filter(isQuality)\n      .sort(compareSpecs)\n      .map(getFullLanguage);\n  }\n\n  var priorities = provided.map(function getPriority(type, index) {\n    return getLanguagePriority(type, accepts, index);\n  });\n\n  // sorted list of accepted languages\n  return priorities.filter(isQuality).sort(compareSpecs).map(function getLanguage(priority) {\n    return provided[priorities.indexOf(priority)];\n  });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n  return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full language string.\n * @private\n */\n\nfunction getFullLanguage(spec) {\n  return spec.full;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n  return spec.q > 0;\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/negotiator/lib/language.js?")},"./node_modules/negotiator/lib/mediaType.js":
/*!**************************************************!*\
  !*** ./node_modules/negotiator/lib/mediaType.js ***!
  \**************************************************/module=>{"use strict";eval("/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredMediaTypes;\nmodule.exports.preferredMediaTypes = preferredMediaTypes;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleMediaTypeRegExp = /^\\s*([^\\s\\/;]+)\\/([^;\\s]+)\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept header.\n * @private\n */\n\nfunction parseAccept(accept) {\n  var accepts = splitMediaTypes(accept);\n\n  for (var i = 0, j = 0; i < accepts.length; i++) {\n    var mediaType = parseMediaType(accepts[i].trim(), i);\n\n    if (mediaType) {\n      accepts[j++] = mediaType;\n    }\n  }\n\n  // trim accepts\n  accepts.length = j;\n\n  return accepts;\n}\n\n/**\n * Parse a media type from the Accept header.\n * @private\n */\n\nfunction parseMediaType(str, i) {\n  var match = simpleMediaTypeRegExp.exec(str);\n  if (!match) return null;\n\n  var params = Object.create(null);\n  var q = 1;\n  var subtype = match[2];\n  var type = match[1];\n\n  if (match[3]) {\n    var kvps = splitParameters(match[3]).map(splitKeyValuePair);\n\n    for (var j = 0; j < kvps.length; j++) {\n      var pair = kvps[j];\n      var key = pair[0].toLowerCase();\n      var val = pair[1];\n\n      // get the value, unwrapping quotes\n      var value = val && val[0] === '\"' && val[val.length - 1] === '\"'\n        ? val.substr(1, val.length - 2)\n        : val;\n\n      if (key === 'q') {\n        q = parseFloat(value);\n        break;\n      }\n\n      // store parameter\n      params[key] = value;\n    }\n  }\n\n  return {\n    type: type,\n    subtype: subtype,\n    params: params,\n    q: q,\n    i: i\n  };\n}\n\n/**\n * Get the priority of a media type.\n * @private\n */\n\nfunction getMediaTypePriority(type, accepted, index) {\n  var priority = {o: -1, q: 0, s: 0};\n\n  for (var i = 0; i < accepted.length; i++) {\n    var spec = specify(type, accepted[i], index);\n\n    if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n      priority = spec;\n    }\n  }\n\n  return priority;\n}\n\n/**\n * Get the specificity of the media type.\n * @private\n */\n\nfunction specify(type, spec, index) {\n  var p = parseMediaType(type);\n  var s = 0;\n\n  if (!p) {\n    return null;\n  }\n\n  if(spec.type.toLowerCase() == p.type.toLowerCase()) {\n    s |= 4\n  } else if(spec.type != '*') {\n    return null;\n  }\n\n  if(spec.subtype.toLowerCase() == p.subtype.toLowerCase()) {\n    s |= 2\n  } else if(spec.subtype != '*') {\n    return null;\n  }\n\n  var keys = Object.keys(spec.params);\n  if (keys.length > 0) {\n    if (keys.every(function (k) {\n      return spec.params[k] == '*' || (spec.params[k] || '').toLowerCase() == (p.params[k] || '').toLowerCase();\n    })) {\n      s |= 1\n    } else {\n      return null\n    }\n  }\n\n  return {\n    i: index,\n    o: spec.i,\n    q: spec.q,\n    s: s,\n  }\n}\n\n/**\n * Get the preferred media types from an Accept header.\n * @public\n */\n\nfunction preferredMediaTypes(accept, provided) {\n  // RFC 2616 sec 14.2: no header = */*\n  var accepts = parseAccept(accept === undefined ? '*/*' : accept || '');\n\n  if (!provided) {\n    // sorted list of all types\n    return accepts\n      .filter(isQuality)\n      .sort(compareSpecs)\n      .map(getFullType);\n  }\n\n  var priorities = provided.map(function getPriority(type, index) {\n    return getMediaTypePriority(type, accepts, index);\n  });\n\n  // sorted list of accepted types\n  return priorities.filter(isQuality).sort(compareSpecs).map(function getType(priority) {\n    return provided[priorities.indexOf(priority)];\n  });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n  return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full type string.\n * @private\n */\n\nfunction getFullType(spec) {\n  return spec.type + '/' + spec.subtype;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n  return spec.q > 0;\n}\n\n/**\n * Count the number of quotes in a string.\n * @private\n */\n\nfunction quoteCount(string) {\n  var count = 0;\n  var index = 0;\n\n  while ((index = string.indexOf('\"', index)) !== -1) {\n    count++;\n    index++;\n  }\n\n  return count;\n}\n\n/**\n * Split a key value pair.\n * @private\n */\n\nfunction splitKeyValuePair(str) {\n  var index = str.indexOf('=');\n  var key;\n  var val;\n\n  if (index === -1) {\n    key = str;\n  } else {\n    key = str.substr(0, index);\n    val = str.substr(index + 1);\n  }\n\n  return [key, val];\n}\n\n/**\n * Split an Accept header into media types.\n * @private\n */\n\nfunction splitMediaTypes(accept) {\n  var accepts = accept.split(',');\n\n  for (var i = 1, j = 0; i < accepts.length; i++) {\n    if (quoteCount(accepts[j]) % 2 == 0) {\n      accepts[++j] = accepts[i];\n    } else {\n      accepts[j] += ',' + accepts[i];\n    }\n  }\n\n  // trim accepts\n  accepts.length = j + 1;\n\n  return accepts;\n}\n\n/**\n * Split a string of parameters.\n * @private\n */\n\nfunction splitParameters(str) {\n  var parameters = str.split(';');\n\n  for (var i = 1, j = 0; i < parameters.length; i++) {\n    if (quoteCount(parameters[j]) % 2 == 0) {\n      parameters[++j] = parameters[i];\n    } else {\n      parameters[j] += ';' + parameters[i];\n    }\n  }\n\n  // trim parameters\n  parameters.length = j + 1;\n\n  for (var i = 0; i < parameters.length; i++) {\n    parameters[i] = parameters[i].trim();\n  }\n\n  return parameters;\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/negotiator/lib/mediaType.js?")},"./node_modules/node-fetch/lib/index.js":
/*!**********************************************!*\
  !*** ./node_modules/node-fetch/lib/index.js ***!
  \**********************************************/(module,exports,__webpack_require__)=>{"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar Stream = _interopDefault(__webpack_require__(/*! stream */ \"stream\"));\nvar http = _interopDefault(__webpack_require__(/*! http */ \"http\"));\nvar Url = _interopDefault(__webpack_require__(/*! url */ \"url\"));\nvar whatwgUrl = _interopDefault(__webpack_require__(/*! whatwg-url */ \"./node_modules/whatwg-url/lib/public-api.js\"));\nvar https = _interopDefault(__webpack_require__(/*! https */ \"https\"));\nvar zlib = _interopDefault(__webpack_require__(/*! zlib */ \"zlib\"));\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param   String      message      Error message for human\n * @param   String      type         Error type for machine\n * @param   String      systemError  For Node.js system error\n * @return  FetchError\n */\nfunction FetchError(message, type, systemError) {\n  Error.call(this, message);\n\n  this.message = message;\n  this.type = type;\n\n  // when err.type is `system`, err.code contains system error code\n  if (systemError) {\n    this.code = this.errno = systemError.code;\n  }\n\n  // hide custom error implementation details from end-users\n  Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = (__webpack_require__(/*! encoding */ \"./node_modules/encoding/lib/encoding.js\").convert);\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param   Stream  body  Readable stream\n * @param   Object  opts  Response options\n * @return  Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t    _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n  * Decode response as ArrayBuffer\n  *\n  * @return  Promise\n  */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n  * Return raw response as Blob\n  *\n  * @return Promise\n  */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n  * Decode response as json\n  *\n  * @return  Promise\n  */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n  * Decode response as text\n  *\n  * @return  Promise\n  */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n  * Decode response as buffer (non-spec api)\n  *\n  * @return  Promise\n  */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n  * Decode response as text, while automatically detecting the encoding and\n  * trying to decode to UTF-8 (non-spec api)\n  *\n  * @return  Promise\n  */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return  Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param   Buffer  buffer    Incoming buffer\n * @param   String  encoding  Target encoding\n * @return  String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = /<meta.+?charset=(['\"])(.+?)\\1/i.exec(str);\n\t}\n\n\t// html4\n\tif (!res && str) {\n\t\tres = /<meta[\\s]+?http-equiv=(['\"])content-type\\1[\\s]+?content=(['\"])(.+?)\\2/i.exec(str);\n\t\tif (!res) {\n\t\t\tres = /<meta[\\s]+?content=(['\"])(.+?)\\1[\\s]+?http-equiv=(['\"])content-type\\3/i.exec(str);\n\t\t\tif (res) {\n\t\t\t\tres.pop(); // drop last quote\n\t\t\t}\n\t\t}\n\n\t\tif (res) {\n\t\t\tres = /charset=(.*)/i.exec(res.pop());\n\t\t}\n\t}\n\n\t// xml\n\tif (!res && str) {\n\t\tres = /<\\?xml.+?encoding=(['\"])(.+?)\\1/i.exec(str);\n\t}\n\n\t// found charset\n\tif (res) {\n\t\tcharset = res.pop();\n\n\t\t// prevent decode issues when sites use incorrect encoding\n\t\t// ref: https://hsivonen.fi/encoding-menu/\n\t\tif (charset === 'gb2312' || charset === 'gbk') {\n\t\t\tcharset = 'gb18030';\n\t\t}\n\t}\n\n\t// turn raw buffers into a single utf-8 buffer\n\treturn convert(buffer, 'UTF-8', charset).toString();\n}\n\n/**\n * Detect a URLSearchParams object\n * ref: https://github.com/bitinn/node-fetch/issues/296#issuecomment-307598143\n *\n * @param   Object  obj     Object to detect by type or brand\n * @return  String\n */\nfunction isURLSearchParams(obj) {\n\t// Duck-typing as a necessary condition.\n\tif (typeof obj !== 'object' || typeof obj.append !== 'function' || typeof obj.delete !== 'function' || typeof obj.get !== 'function' || typeof obj.getAll !== 'function' || typeof obj.has !== 'function' || typeof obj.set !== 'function') {\n\t\treturn false;\n\t}\n\n\t// Brand-checking and more duck-typing as optional condition.\n\treturn obj.constructor.name === 'URLSearchParams' || Object.prototype.toString.call(obj) === '[object URLSearchParams]' || typeof obj.sort === 'function';\n}\n\n/**\n * Check if `obj` is a W3C `Blob` object (which `File` inherits from)\n * @param  {*} obj\n * @return {boolean}\n */\nfunction isBlob(obj) {\n\treturn typeof obj === 'object' && typeof obj.arrayBuffer === 'function' && typeof obj.type === 'string' && typeof obj.stream === 'function' && typeof obj.constructor === 'function' && typeof obj.constructor.name === 'string' && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]);\n}\n\n/**\n * Clone body given Res/Req instance\n *\n * @param   Mixed  instance  Response or Request instance\n * @return  Mixed\n */\nfunction clone(instance) {\n\tlet p1, p2;\n\tlet body = instance.body;\n\n\t// don't allow cloning a used body\n\tif (instance.bodyUsed) {\n\t\tthrow new Error('cannot clone body after it is used');\n\t}\n\n\t// check that body is a stream and not form-data object\n\t// note: we can't clone the form-data object without having it as a dependency\n\tif (body instanceof Stream && typeof body.getBoundary !== 'function') {\n\t\t// tee instance body\n\t\tp1 = new PassThrough();\n\t\tp2 = new PassThrough();\n\t\tbody.pipe(p1);\n\t\tbody.pipe(p2);\n\t\t// set instance body to teed body and return the other teed body\n\t\tinstance[INTERNALS].body = p1;\n\t\tbody = p2;\n\t}\n\n\treturn body;\n}\n\n/**\n * Performs the operation \"extract a `Content-Type` value from |object|\" as\n * specified in the specification:\n * https://fetch.spec.whatwg.org/#concept-bodyinit-extract\n *\n * This function assumes that instance.body is present.\n *\n * @param   Mixed  instance  Any options.body input\n */\nfunction extractContentType(body) {\n\tif (body === null) {\n\t\t// body is null\n\t\treturn null;\n\t} else if (typeof body === 'string') {\n\t\t// body is string\n\t\treturn 'text/plain;charset=UTF-8';\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\treturn 'application/x-www-form-urlencoded;charset=UTF-8';\n\t} else if (isBlob(body)) {\n\t\t// body is blob\n\t\treturn body.type || null;\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\treturn null;\n\t} else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\treturn null;\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\treturn null;\n\t} else if (typeof body.getBoundary === 'function') {\n\t\t// detect form data input from form-data module\n\t\treturn `multipart/form-data;boundary=${body.getBoundary()}`;\n\t} else if (body instanceof Stream) {\n\t\t// body is stream\n\t\t// can't really do much about this\n\t\treturn null;\n\t} else {\n\t\t// Body constructor defaults other things to string\n\t\treturn 'text/plain;charset=UTF-8';\n\t}\n}\n\n/**\n * The Fetch Standard treats this as if \"total bytes\" is a property on the body.\n * For us, we have to explicitly get it with a function.\n *\n * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes\n *\n * @param   Body    instance   Instance of Body\n * @return  Number?            Number of bytes, or null if not possible\n */\nfunction getTotalBytes(instance) {\n\tconst body = instance.body;\n\n\n\tif (body === null) {\n\t\t// body is null\n\t\treturn 0;\n\t} else if (isBlob(body)) {\n\t\treturn body.size;\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\treturn body.length;\n\t} else if (body && typeof body.getLengthSync === 'function') {\n\t\t// detect form data input from form-data module\n\t\tif (body._lengthRetrievers && body._lengthRetrievers.length == 0 || // 1.x\n\t\tbody.hasKnownLength && body.hasKnownLength()) {\n\t\t\t// 2.x\n\t\t\treturn body.getLengthSync();\n\t\t}\n\t\treturn null;\n\t} else {\n\t\t// body is stream\n\t\treturn null;\n\t}\n}\n\n/**\n * Write a Body to a Node.js WritableStream (e.g. http.Request) object.\n *\n * @param   Body    instance   Instance of Body\n * @return  Void\n */\nfunction writeToStream(dest, instance) {\n\tconst body = instance.body;\n\n\n\tif (body === null) {\n\t\t// body is null\n\t\tdest.end();\n\t} else if (isBlob(body)) {\n\t\tbody.stream().pipe(dest);\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\tdest.write(body);\n\t\tdest.end();\n\t} else {\n\t\t// body is stream\n\t\tbody.pipe(dest);\n\t}\n}\n\n// expose Promise\nBody.Promise = global.Promise;\n\n/**\n * headers.js\n *\n * Headers class offers convenient helpers\n */\n\nconst invalidTokenRegex = /[^\\^_`a-zA-Z\\-0-9!#$%&'*+.|~]/;\nconst invalidHeaderCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/;\n\nfunction validateName(name) {\n\tname = `${name}`;\n\tif (invalidTokenRegex.test(name) || name === '') {\n\t\tthrow new TypeError(`${name} is not a legal HTTP header name`);\n\t}\n}\n\nfunction validateValue(value) {\n\tvalue = `${value}`;\n\tif (invalidHeaderCharRegex.test(value)) {\n\t\tthrow new TypeError(`${value} is not a legal HTTP header value`);\n\t}\n}\n\n/**\n * Find the key in the map object given a header name.\n *\n * Returns undefined if not found.\n *\n * @param   String  name  Header name\n * @return  String|Undefined\n */\nfunction find(map, name) {\n\tname = name.toLowerCase();\n\tfor (const key in map) {\n\t\tif (key.toLowerCase() === name) {\n\t\t\treturn key;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nconst MAP = Symbol('map');\nclass Headers {\n\t/**\n  * Headers class\n  *\n  * @param   Object  headers  Response headers\n  * @return  Void\n  */\n\tconstructor() {\n\t\tlet init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence<sequence<ByteString>>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record<ByteString, ByteString>\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n  * Return combined header value given name\n  *\n  * @param   String  name  Header name\n  * @return  Mixed\n  */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n  * Iterate over all headers\n  *\n  * @param   Function  callback  Executed for each item with parameters (value, name, thisArg)\n  * @param   Boolean   thisArg   `this` context for callback function\n  * @return  Void\n  */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t      value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n  * Overwrite header values given name\n  *\n  * @param   String  name   Header name\n  * @param   String  value  Header value\n  * @return  Void\n  */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n  * Append a value onto existing header\n  *\n  * @param   String  name   Header name\n  * @param   String  value  Header value\n  * @return  Void\n  */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n  * Check for header name existence\n  *\n  * @param   String   name  Header name\n  * @return  Boolean\n  */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n  * Delete all header values given name\n  *\n  * @param   String  name  Header name\n  * @return  Void\n  */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n  * Return raw headers (non-spec api)\n  *\n  * @return  Object\n  */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n  * Get an iterator on keys.\n  *\n  * @return  Iterator\n  */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n  * Get an iterator on values.\n  *\n  * @return  Iterator\n  */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n  * Get an iterator on entries.\n  *\n  * This is the default iterator of the Headers object.\n  *\n  * @return  Iterator\n  */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t      kind = _INTERNAL.kind,\n\t\t      index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param   Headers  headers\n * @return  Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param   Object  obj  Object of headers\n * @return  Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param   Stream  body  Readable stream\n * @param   Object  opts  Response options\n * @return  Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n  * Convenience property representing if the request ended normally\n  */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n  * Clone this response\n  *\n  * @return  Response\n  */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param  {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param   Mixed   input\n * @return  Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param   Mixed   input  Url or Request instance\n * @param   Object  init   Custom options\n * @return  Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n  * Clone this request\n  *\n  * @return  Request\n  */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param   Request  A Request instance\n * @return  Object   The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\tif (!headers.has('Connection') && !agent) {\n\t\theaders.set('Connection', 'close');\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param   String      message      Error message for human\n * @return  AbortError\n */\nfunction AbortError(message) {\n  Error.call(this, message);\n\n  this.type = 'aborted';\n  this.message = message;\n\n  // hide custom error implementation details from end-users\n  Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * Fetch function\n *\n * @param   Mixed    url   Absolute url or Request instance\n * @param   Object   opts  Fetch options\n * @return  Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\trequest.body.destroy(error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\t\t\tfinalize();\n\t\t});\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\n/**\n * Redirect code matching\n *\n * @param   Number   code  Status code\n * @return  Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nmodule.exports = exports = fetch;\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports[\"default\"] = exports;\nexports.Headers = Headers;\nexports.Request = Request;\nexports.Response = Response;\nexports.FetchError = FetchError;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/node-fetch/lib/index.js?")},"./node_modules/node-gyp-build/index.js":
/*!**********************************************!*\
  !*** ./node_modules/node-gyp-build/index.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var fs = __webpack_require__(/*! fs */ \"fs\")\nvar path = __webpack_require__(/*! path */ \"path\")\nvar os = __webpack_require__(/*! os */ \"os\")\n\n// Workaround to fix webpack's build warnings: 'the request of a dependency is an expression'\nvar runtimeRequire =  true ? require : 0 // eslint-disable-line\n\nvar vars = (process.config && process.config.variables) || {}\nvar prebuildsOnly = !!({\"APP_ENV\":\"webpack\"}).PREBUILDS_ONLY\nvar abi = process.versions.modules // TODO: support old node where this is undef\nvar runtime = isElectron() ? 'electron' : 'node'\nvar arch = os.arch()\nvar platform = os.platform()\nvar libc = ({\"APP_ENV\":\"webpack\"}).LIBC || (isAlpine(platform) ? 'musl' : 'glibc')\nvar armv = ({\"APP_ENV\":\"webpack\"}).ARM_VERSION || (arch === 'arm64' ? '8' : vars.arm_version) || ''\nvar uv = (process.versions.uv || '').split('.')[0]\n\nmodule.exports = load\n\nfunction load (dir) {\n  return runtimeRequire(load.path(dir))\n}\n\nload.path = function (dir) {\n  dir = path.resolve(dir || '.')\n\n  try {\n    var name = runtimeRequire(path.join(dir, 'package.json')).name.toUpperCase().replace(/-/g, '_')\n    if (({\"APP_ENV\":\"webpack\"})[name + '_PREBUILD']) dir = ({\"APP_ENV\":\"webpack\"})[name + '_PREBUILD']\n  } catch (err) {}\n\n  if (!prebuildsOnly) {\n    var release = getFirst(path.join(dir, 'build/Release'), matchBuild)\n    if (release) return release\n\n    var debug = getFirst(path.join(dir, 'build/Debug'), matchBuild)\n    if (debug) return debug\n  }\n\n  var prebuild = resolve(dir)\n  if (prebuild) return prebuild\n\n  var nearby = resolve(path.dirname(process.execPath))\n  if (nearby) return nearby\n\n  var target = [\n    'platform=' + platform,\n    'arch=' + arch,\n    'runtime=' + runtime,\n    'abi=' + abi,\n    'uv=' + uv,\n    armv ? 'armv=' + armv : '',\n    'libc=' + libc,\n    'node=' + process.versions.node,\n    process.versions.electron ? 'electron=' + process.versions.electron : '',\n     true ? 'webpack=true' : 0 // eslint-disable-line\n  ].filter(Boolean).join(' ')\n\n  throw new Error('No native build was found for ' + target + '\\n    loaded from: ' + dir + '\\n')\n\n  function resolve (dir) {\n    // Find matching \"prebuilds/<platform>-<arch>\" directory\n    var tuples = readdirSync(path.join(dir, 'prebuilds')).map(parseTuple)\n    var tuple = tuples.filter(matchTuple(platform, arch)).sort(compareTuples)[0]\n    if (!tuple) return\n\n    // Find most specific flavor first\n    var prebuilds = path.join(dir, 'prebuilds', tuple.name)\n    var parsed = readdirSync(prebuilds).map(parseTags)\n    var candidates = parsed.filter(matchTags(runtime, abi))\n    var winner = candidates.sort(compareTags(runtime))[0]\n    if (winner) return path.join(prebuilds, winner.file)\n  }\n}\n\nfunction readdirSync (dir) {\n  try {\n    return fs.readdirSync(dir)\n  } catch (err) {\n    return []\n  }\n}\n\nfunction getFirst (dir, filter) {\n  var files = readdirSync(dir).filter(filter)\n  return files[0] && path.join(dir, files[0])\n}\n\nfunction matchBuild (name) {\n  return /\\.node$/.test(name)\n}\n\nfunction parseTuple (name) {\n  // Example: darwin-x64+arm64\n  var arr = name.split('-')\n  if (arr.length !== 2) return\n\n  var platform = arr[0]\n  var architectures = arr[1].split('+')\n\n  if (!platform) return\n  if (!architectures.length) return\n  if (!architectures.every(Boolean)) return\n\n  return { name, platform, architectures }\n}\n\nfunction matchTuple (platform, arch) {\n  return function (tuple) {\n    if (tuple == null) return false\n    if (tuple.platform !== platform) return false\n    return tuple.architectures.includes(arch)\n  }\n}\n\nfunction compareTuples (a, b) {\n  // Prefer single-arch prebuilds over multi-arch\n  return a.architectures.length - b.architectures.length\n}\n\nfunction parseTags (file) {\n  var arr = file.split('.')\n  var extension = arr.pop()\n  var tags = { file: file, specificity: 0 }\n\n  if (extension !== 'node') return\n\n  for (var i = 0; i < arr.length; i++) {\n    var tag = arr[i]\n\n    if (tag === 'node' || tag === 'electron' || tag === 'node-webkit') {\n      tags.runtime = tag\n    } else if (tag === 'napi') {\n      tags.napi = true\n    } else if (tag.slice(0, 3) === 'abi') {\n      tags.abi = tag.slice(3)\n    } else if (tag.slice(0, 2) === 'uv') {\n      tags.uv = tag.slice(2)\n    } else if (tag.slice(0, 4) === 'armv') {\n      tags.armv = tag.slice(4)\n    } else if (tag === 'glibc' || tag === 'musl') {\n      tags.libc = tag\n    } else {\n      continue\n    }\n\n    tags.specificity++\n  }\n\n  return tags\n}\n\nfunction matchTags (runtime, abi) {\n  return function (tags) {\n    if (tags == null) return false\n    if (tags.runtime !== runtime && !runtimeAgnostic(tags)) return false\n    if (tags.abi !== abi && !tags.napi) return false\n    if (tags.uv && tags.uv !== uv) return false\n    if (tags.armv && tags.armv !== armv) return false\n    if (tags.libc && tags.libc !== libc) return false\n\n    return true\n  }\n}\n\nfunction runtimeAgnostic (tags) {\n  return tags.runtime === 'node' && tags.napi\n}\n\nfunction compareTags (runtime) {\n  // Precedence: non-agnostic runtime, abi over napi, then by specificity.\n  return function (a, b) {\n    if (a.runtime !== b.runtime) {\n      return a.runtime === runtime ? -1 : 1\n    } else if (a.abi !== b.abi) {\n      return a.abi ? -1 : 1\n    } else if (a.specificity !== b.specificity) {\n      return a.specificity > b.specificity ? -1 : 1\n    } else {\n      return 0\n    }\n  }\n}\n\nfunction isElectron () {\n  if (process.versions && process.versions.electron) return true\n  if (({\"APP_ENV\":\"webpack\"}).ELECTRON_RUN_AS_NODE) return true\n  return typeof window !== 'undefined' && window.process && window.process.type === 'renderer'\n}\n\nfunction isAlpine (platform) {\n  return platform === 'linux' && fs.existsSync('/etc/alpine-release')\n}\n\n// Exposed for unit tests\n// TODO: move to lib\nload.parseTags = parseTags\nload.matchTags = matchTags\nload.compareTags = compareTags\nload.parseTuple = parseTuple\nload.matchTuple = matchTuple\nload.compareTuples = compareTuples\n\n\n//# sourceURL=webpack://txadmin/./node_modules/node-gyp-build/index.js?")},"./node_modules/node-polyglot/index.js":
/*!*********************************************!*\
  !*** ./node_modules/node-polyglot/index.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("//     (c) 2012-2018 Airbnb, Inc.\n//\n//     polyglot.js may be freely distributed under the terms of the BSD\n//     license. For all licensing information, details, and documentation:\n//     http://airbnb.github.com/polyglot.js\n//\n//\n// Polyglot.js is an I18n helper library written in JavaScript, made to\n// work both in the browser and in Node. It provides a simple solution for\n// interpolation and pluralization, based off of Airbnb's\n// experience adding I18n functionality to its Backbone.js and Node apps.\n//\n// Polylglot is agnostic to your translation backend. It doesn't perform any\n// translation; it simply gives you a way to manage translated phrases from\n// your client- or server-side JavaScript application.\n//\n\n\n\nvar forEach = __webpack_require__(/*! array.prototype.foreach */ \"./node_modules/array.prototype.foreach/index.js\");\nvar entries = __webpack_require__(/*! object.entries */ \"./node_modules/object.entries/index.js\");\nvar warning = __webpack_require__(/*! warning */ \"./node_modules/warning/warning.js\");\nvar has = __webpack_require__(/*! has */ \"./node_modules/has/src/index.js\");\nvar trim = __webpack_require__(/*! string.prototype.trim */ \"./node_modules/string.prototype.trim/index.js\");\n\nvar warn = function warn(message) {\n  warning(false, message);\n};\n\nvar replace = String.prototype.replace;\nvar split = String.prototype.split;\n\n// #### Pluralization methods\n// The string that separates the different phrase possibilities.\nvar delimiter = '||||';\n\nvar russianPluralGroups = function (n) {\n  var lastTwo = n % 100;\n  var end = lastTwo % 10;\n  if (lastTwo !== 11 && end === 1) {\n    return 0;\n  }\n  if (2 <= end && end <= 4 && !(lastTwo >= 12 && lastTwo <= 14)) {\n    return 1;\n  }\n  return 2;\n};\n\nvar defaultPluralRules = {\n  // Mapping from pluralization group plural logic.\n  pluralTypes: {\n    arabic: function (n) {\n      // http://www.arabeyes.org/Plural_Forms\n      if (n < 3) { return n; }\n      var lastTwo = n % 100;\n      if (lastTwo >= 3 && lastTwo <= 10) return 3;\n      return lastTwo >= 11 ? 4 : 5;\n    },\n    bosnian_serbian: russianPluralGroups,\n    chinese: function () { return 0; },\n    croatian: russianPluralGroups,\n    french: function (n) { return n >= 2 ? 1 : 0; },\n    german: function (n) { return n !== 1 ? 1 : 0; },\n    russian: russianPluralGroups,\n    lithuanian: function (n) {\n      if (n % 10 === 1 && n % 100 !== 11) { return 0; }\n      return n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19) ? 1 : 2;\n    },\n    czech: function (n) {\n      if (n === 1) { return 0; }\n      return (n >= 2 && n <= 4) ? 1 : 2;\n    },\n    polish: function (n) {\n      if (n === 1) { return 0; }\n      var end = n % 10;\n      return 2 <= end && end <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2;\n    },\n    icelandic: function (n) { return (n % 10 !== 1 || n % 100 === 11) ? 1 : 0; },\n    slovenian: function (n) {\n      var lastTwo = n % 100;\n      if (lastTwo === 1) {\n        return 0;\n      }\n      if (lastTwo === 2) {\n        return 1;\n      }\n      if (lastTwo === 3 || lastTwo === 4) {\n        return 2;\n      }\n      return 3;\n    }\n  },\n\n  // Mapping from pluralization group to individual language codes/locales.\n  // Will look up based on exact match, if not found and it's a locale will parse the locale\n  // for language code, and if that does not exist will default to 'en'\n  pluralTypeToLanguages: {\n    arabic: ['ar'],\n    bosnian_serbian: ['bs-Latn-BA', 'bs-Cyrl-BA', 'srl-RS', 'sr-RS'],\n    chinese: ['id', 'id-ID', 'ja', 'ko', 'ko-KR', 'lo', 'ms', 'th', 'th-TH', 'zh'],\n    croatian: ['hr', 'hr-HR'],\n    german: ['fa', 'da', 'de', 'en', 'es', 'fi', 'el', 'he', 'hi-IN', 'hu', 'hu-HU', 'it', 'nl', 'no', 'pt', 'sv', 'tr'],\n    french: ['fr', 'tl', 'pt-br'],\n    russian: ['ru', 'ru-RU'],\n    lithuanian: ['lt'],\n    czech: ['cs', 'cs-CZ', 'sk'],\n    polish: ['pl'],\n    icelandic: ['is'],\n    slovenian: ['sl-SL']\n  }\n};\n\nfunction langToTypeMap(mapping) {\n  var ret = {};\n  forEach(entries(mapping), function (entry) {\n    var type = entry[0];\n    var langs = entry[1];\n    forEach(langs, function (lang) {\n      ret[lang] = type;\n    });\n  });\n  return ret;\n}\n\nfunction pluralTypeName(pluralRules, locale) {\n  var langToPluralType = langToTypeMap(pluralRules.pluralTypeToLanguages);\n  return langToPluralType[locale]\n    || langToPluralType[split.call(locale, /-/, 1)[0]]\n    || langToPluralType.en;\n}\n\nfunction pluralTypeIndex(pluralRules, pluralType, count) {\n  return pluralRules.pluralTypes[pluralType](count);\n}\n\nfunction createMemoizedPluralTypeNameSelector() {\n  var localePluralTypeStorage = {};\n\n  return function (pluralRules, locale) {\n    var pluralType = localePluralTypeStorage[locale];\n\n    if (pluralType && !pluralRules.pluralTypes[pluralType]) {\n      pluralType = null;\n      localePluralTypeStorage[locale] = pluralType;\n    }\n\n    if (!pluralType) {\n      pluralType = pluralTypeName(pluralRules, locale);\n\n      if (pluralType) {\n        localePluralTypeStorage[locale] = pluralType;\n      }\n    }\n\n    return pluralType;\n  };\n}\n\nfunction escape(token) {\n  return token.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction constructTokenRegex(opts) {\n  var prefix = (opts && opts.prefix) || '%{';\n  var suffix = (opts && opts.suffix) || '}';\n\n  if (prefix === delimiter || suffix === delimiter) {\n    throw new RangeError('\"' + delimiter + '\" token is reserved for pluralization');\n  }\n\n  return new RegExp(escape(prefix) + '(.*?)' + escape(suffix), 'g');\n}\n\nvar memoizedPluralTypeName = createMemoizedPluralTypeNameSelector();\n\nvar defaultTokenRegex = /%\\{(.*?)\\}/g;\n\n// ### transformPhrase(phrase, substitutions, locale)\n//\n// Takes a phrase string and transforms it by choosing the correct\n// plural form and interpolating it.\n//\n//     transformPhrase('Hello, %{name}!', {name: 'Spike'});\n//     // \"Hello, Spike!\"\n//\n// The correct plural form is selected if substitutions.smart_count\n// is set. You can pass in a number instead of an Object as `substitutions`\n// as a shortcut for `smart_count`.\n//\n//     transformPhrase('%{smart_count} new messages |||| 1 new message', {smart_count: 1}, 'en');\n//     // \"1 new message\"\n//\n//     transformPhrase('%{smart_count} new messages |||| 1 new message', {smart_count: 2}, 'en');\n//     // \"2 new messages\"\n//\n//     transformPhrase('%{smart_count} new messages |||| 1 new message', 5, 'en');\n//     // \"5 new messages\"\n//\n// You should pass in a third argument, the locale, to specify the correct plural type.\n// It defaults to `'en'` with 2 plural forms.\nfunction transformPhrase(phrase, substitutions, locale, tokenRegex, pluralRules) {\n  if (typeof phrase !== 'string') {\n    throw new TypeError('Polyglot.transformPhrase expects argument #1 to be string');\n  }\n\n  if (substitutions == null) {\n    return phrase;\n  }\n\n  var result = phrase;\n  var interpolationRegex = tokenRegex || defaultTokenRegex;\n\n  // allow number as a pluralization shortcut\n  var options = typeof substitutions === 'number' ? { smart_count: substitutions } : substitutions;\n\n  // Select plural form: based on a phrase text that contains `n`\n  // plural forms separated by `delimiter`, a `locale`, and a `substitutions.smart_count`,\n  // choose the correct plural form. This is only done if `count` is set.\n  if (options.smart_count != null && phrase) {\n    var pluralRulesOrDefault = pluralRules || defaultPluralRules;\n    var texts = split.call(phrase, delimiter);\n    var bestLocale = locale || 'en';\n    var pluralType = memoizedPluralTypeName(pluralRulesOrDefault, bestLocale);\n    var pluralTypeWithCount = pluralTypeIndex(\n      pluralRulesOrDefault,\n      pluralType,\n      options.smart_count\n    );\n\n    result = trim(texts[pluralTypeWithCount] || texts[0]);\n  }\n\n  // Interpolate: Creates a `RegExp` object for each interpolation placeholder.\n  result = replace.call(result, interpolationRegex, function (expression, argument) {\n    if (!has(options, argument) || options[argument] == null) { return expression; }\n    return options[argument];\n  });\n\n  return result;\n}\n\n// ### Polyglot class constructor\nfunction Polyglot(options) {\n  var opts = options || {};\n  this.phrases = {};\n  this.extend(opts.phrases || {});\n  this.currentLocale = opts.locale || 'en';\n  var allowMissing = opts.allowMissing ? transformPhrase : null;\n  this.onMissingKey = typeof opts.onMissingKey === 'function' ? opts.onMissingKey : allowMissing;\n  this.warn = opts.warn || warn;\n  this.tokenRegex = constructTokenRegex(opts.interpolation);\n  this.pluralRules = opts.pluralRules || defaultPluralRules;\n}\n\n// ### polyglot.locale([locale])\n//\n// Get or set locale. Internally, Polyglot only uses locale for pluralization.\nPolyglot.prototype.locale = function (newLocale) {\n  if (newLocale) this.currentLocale = newLocale;\n  return this.currentLocale;\n};\n\n// ### polyglot.extend(phrases)\n//\n// Use `extend` to tell Polyglot how to translate a given key.\n//\n//     polyglot.extend({\n//       \"hello\": \"Hello\",\n//       \"hello_name\": \"Hello, %{name}\"\n//     });\n//\n// The key can be any string.  Feel free to call `extend` multiple times;\n// it will override any phrases with the same key, but leave existing phrases\n// untouched.\n//\n// It is also possible to pass nested phrase objects, which get flattened\n// into an object with the nested keys concatenated using dot notation.\n//\n//     polyglot.extend({\n//       \"nav\": {\n//         \"hello\": \"Hello\",\n//         \"hello_name\": \"Hello, %{name}\",\n//         \"sidebar\": {\n//           \"welcome\": \"Welcome\"\n//         }\n//       }\n//     });\n//\n//     console.log(polyglot.phrases);\n//     // {\n//     //   'nav.hello': 'Hello',\n//     //   'nav.hello_name': 'Hello, %{name}',\n//     //   'nav.sidebar.welcome': 'Welcome'\n//     // }\n//\n// `extend` accepts an optional second argument, `prefix`, which can be used\n// to prefix every key in the phrases object with some string, using dot\n// notation.\n//\n//     polyglot.extend({\n//       \"hello\": \"Hello\",\n//       \"hello_name\": \"Hello, %{name}\"\n//     }, \"nav\");\n//\n//     console.log(polyglot.phrases);\n//     // {\n//     //   'nav.hello': 'Hello',\n//     //   'nav.hello_name': 'Hello, %{name}'\n//     // }\n//\n// This feature is used internally to support nested phrase objects.\nPolyglot.prototype.extend = function (morePhrases, prefix) {\n  forEach(entries(morePhrases || {}), function (entry) {\n    var key = entry[0];\n    var phrase = entry[1];\n    var prefixedKey = prefix ? prefix + '.' + key : key;\n    if (typeof phrase === 'object') {\n      this.extend(phrase, prefixedKey);\n    } else {\n      this.phrases[prefixedKey] = phrase;\n    }\n  }, this);\n};\n\n// ### polyglot.unset(phrases)\n// Use `unset` to selectively remove keys from a polyglot instance.\n//\n//     polyglot.unset(\"some_key\");\n//     polyglot.unset({\n//       \"hello\": \"Hello\",\n//       \"hello_name\": \"Hello, %{name}\"\n//     });\n//\n// The unset method can take either a string (for the key), or an object hash with\n// the keys that you would like to unset.\nPolyglot.prototype.unset = function (morePhrases, prefix) {\n  if (typeof morePhrases === 'string') {\n    delete this.phrases[morePhrases];\n  } else {\n    forEach(entries(morePhrases || {}), function (entry) {\n      var key = entry[0];\n      var phrase = entry[1];\n      var prefixedKey = prefix ? prefix + '.' + key : key;\n      if (typeof phrase === 'object') {\n        this.unset(phrase, prefixedKey);\n      } else {\n        delete this.phrases[prefixedKey];\n      }\n    }, this);\n  }\n};\n\n// ### polyglot.clear()\n//\n// Clears all phrases. Useful for special cases, such as freeing\n// up memory if you have lots of phrases but no longer need to\n// perform any translation. Also used internally by `replace`.\nPolyglot.prototype.clear = function () {\n  this.phrases = {};\n};\n\n// ### polyglot.replace(phrases)\n//\n// Completely replace the existing phrases with a new set of phrases.\n// Normally, just use `extend` to add more phrases, but under certain\n// circumstances, you may want to make sure no old phrases are lying around.\nPolyglot.prototype.replace = function (newPhrases) {\n  this.clear();\n  this.extend(newPhrases);\n};\n\n// ### polyglot.t(key, options)\n//\n// The most-used method. Provide a key, and `t` will return the\n// phrase.\n//\n//     polyglot.t(\"hello\");\n//     => \"Hello\"\n//\n// The phrase value is provided first by a call to `polyglot.extend()` or\n// `polyglot.replace()`.\n//\n// Pass in an object as the second argument to perform interpolation.\n//\n//     polyglot.t(\"hello_name\", {name: \"Spike\"});\n//     => \"Hello, Spike\"\n//\n// If you like, you can provide a default value in case the phrase is missing.\n// Use the special option key \"_\" to specify a default.\n//\n//     polyglot.t(\"i_like_to_write_in_language\", {\n//       _: \"I like to write in %{language}.\",\n//       language: \"JavaScript\"\n//     });\n//     => \"I like to write in JavaScript.\"\n//\nPolyglot.prototype.t = function (key, options) {\n  var phrase, result;\n  var opts = options == null ? {} : options;\n  if (typeof this.phrases[key] === 'string') {\n    phrase = this.phrases[key];\n  } else if (typeof opts._ === 'string') {\n    phrase = opts._;\n  } else if (this.onMissingKey) {\n    var onMissingKey = this.onMissingKey;\n    result = onMissingKey(key, opts, this.currentLocale, this.tokenRegex, this.pluralRules);\n  } else {\n    this.warn('Missing translation for key: \"' + key + '\"');\n    result = key;\n  }\n  if (typeof phrase === 'string') {\n    result = transformPhrase(phrase, opts, this.currentLocale, this.tokenRegex, this.pluralRules);\n  }\n  return result;\n};\n\n// ### polyglot.has(key)\n//\n// Check if polyglot has a translation for given key\nPolyglot.prototype.has = function (key) {\n  return has(this.phrases, key);\n};\n\n// export transformPhrase\nPolyglot.transformPhrase = function transform(phrase, substitutions, locale) {\n  return transformPhrase(phrase, substitutions, locale);\n};\n\nmodule.exports = Polyglot;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/node-polyglot/index.js?")},"./node_modules/node-stream-zip/node_stream_zip.js":
/*!*********************************************************!*\
  !*** ./node_modules/node-stream-zip/node_stream_zip.js ***!
  \*********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("/**\n * @license node-stream-zip | (c) 2020 Antelle | https://github.com/antelle/node-stream-zip/blob/master/LICENSE\n * Portions copyright https://github.com/cthackers/adm-zip | https://raw.githubusercontent.com/cthackers/adm-zip/master/LICENSE\n */\n\nlet fs = __webpack_require__(/*! fs */ \"fs\");\nconst util = __webpack_require__(/*! util */ \"util\");\nconst path = __webpack_require__(/*! path */ \"path\");\nconst events = __webpack_require__(/*! events */ \"events\");\nconst zlib = __webpack_require__(/*! zlib */ \"zlib\");\nconst stream = __webpack_require__(/*! stream */ \"stream\");\n\nconst consts = {\n    /* The local file header */\n    LOCHDR: 30, // LOC header size\n    LOCSIG: 0x04034b50, // \"PK\\003\\004\"\n    LOCVER: 4, // version needed to extract\n    LOCFLG: 6, // general purpose bit flag\n    LOCHOW: 8, // compression method\n    LOCTIM: 10, // modification time (2 bytes time, 2 bytes date)\n    LOCCRC: 14, // uncompressed file crc-32 value\n    LOCSIZ: 18, // compressed size\n    LOCLEN: 22, // uncompressed size\n    LOCNAM: 26, // filename length\n    LOCEXT: 28, // extra field length\n\n    /* The Data descriptor */\n    EXTSIG: 0x08074b50, // \"PK\\007\\008\"\n    EXTHDR: 16, // EXT header size\n    EXTCRC: 4, // uncompressed file crc-32 value\n    EXTSIZ: 8, // compressed size\n    EXTLEN: 12, // uncompressed size\n\n    /* The central directory file header */\n    CENHDR: 46, // CEN header size\n    CENSIG: 0x02014b50, // \"PK\\001\\002\"\n    CENVEM: 4, // version made by\n    CENVER: 6, // version needed to extract\n    CENFLG: 8, // encrypt, decrypt flags\n    CENHOW: 10, // compression method\n    CENTIM: 12, // modification time (2 bytes time, 2 bytes date)\n    CENCRC: 16, // uncompressed file crc-32 value\n    CENSIZ: 20, // compressed size\n    CENLEN: 24, // uncompressed size\n    CENNAM: 28, // filename length\n    CENEXT: 30, // extra field length\n    CENCOM: 32, // file comment length\n    CENDSK: 34, // volume number start\n    CENATT: 36, // internal file attributes\n    CENATX: 38, // external file attributes (host system dependent)\n    CENOFF: 42, // LOC header offset\n\n    /* The entries in the end of central directory */\n    ENDHDR: 22, // END header size\n    ENDSIG: 0x06054b50, // \"PK\\005\\006\"\n    ENDSIGFIRST: 0x50,\n    ENDSUB: 8, // number of entries on this disk\n    ENDTOT: 10, // total number of entries\n    ENDSIZ: 12, // central directory size in bytes\n    ENDOFF: 16, // offset of first CEN header\n    ENDCOM: 20, // zip file comment length\n    MAXFILECOMMENT: 0xffff,\n\n    /* The entries in the end of ZIP64 central directory locator */\n    ENDL64HDR: 20, // ZIP64 end of central directory locator header size\n    ENDL64SIG: 0x07064b50, // ZIP64 end of central directory locator signature\n    ENDL64SIGFIRST: 0x50,\n    ENDL64OFS: 8, // ZIP64 end of central directory offset\n\n    /* The entries in the end of ZIP64 central directory */\n    END64HDR: 56, // ZIP64 end of central directory header size\n    END64SIG: 0x06064b50, // ZIP64 end of central directory signature\n    END64SIGFIRST: 0x50,\n    END64SUB: 24, // number of entries on this disk\n    END64TOT: 32, // total number of entries\n    END64SIZ: 40,\n    END64OFF: 48,\n\n    /* Compression methods */\n    STORED: 0, // no compression\n    SHRUNK: 1, // shrunk\n    REDUCED1: 2, // reduced with compression factor 1\n    REDUCED2: 3, // reduced with compression factor 2\n    REDUCED3: 4, // reduced with compression factor 3\n    REDUCED4: 5, // reduced with compression factor 4\n    IMPLODED: 6, // imploded\n    // 7 reserved\n    DEFLATED: 8, // deflated\n    ENHANCED_DEFLATED: 9, // deflate64\n    PKWARE: 10, // PKWare DCL imploded\n    // 11 reserved\n    BZIP2: 12, //  compressed using BZIP2\n    // 13 reserved\n    LZMA: 14, // LZMA\n    // 15-17 reserved\n    IBM_TERSE: 18, // compressed using IBM TERSE\n    IBM_LZ77: 19, //IBM LZ77 z\n\n    /* General purpose bit flag */\n    FLG_ENC: 0, // encrypted file\n    FLG_COMP1: 1, // compression option\n    FLG_COMP2: 2, // compression option\n    FLG_DESC: 4, // data descriptor\n    FLG_ENH: 8, // enhanced deflation\n    FLG_STR: 16, // strong encryption\n    FLG_LNG: 1024, // language encoding\n    FLG_MSK: 4096, // mask header values\n    FLG_ENTRY_ENC: 1,\n\n    /* 4.5 Extensible data fields */\n    EF_ID: 0,\n    EF_SIZE: 2,\n\n    /* Header IDs */\n    ID_ZIP64: 0x0001,\n    ID_AVINFO: 0x0007,\n    ID_PFS: 0x0008,\n    ID_OS2: 0x0009,\n    ID_NTFS: 0x000a,\n    ID_OPENVMS: 0x000c,\n    ID_UNIX: 0x000d,\n    ID_FORK: 0x000e,\n    ID_PATCH: 0x000f,\n    ID_X509_PKCS7: 0x0014,\n    ID_X509_CERTID_F: 0x0015,\n    ID_X509_CERTID_C: 0x0016,\n    ID_STRONGENC: 0x0017,\n    ID_RECORD_MGT: 0x0018,\n    ID_X509_PKCS7_RL: 0x0019,\n    ID_IBM1: 0x0065,\n    ID_IBM2: 0x0066,\n    ID_POSZIP: 0x4690,\n\n    EF_ZIP64_OR_32: 0xffffffff,\n    EF_ZIP64_OR_16: 0xffff,\n};\n\nconst StreamZip = function (config) {\n    let fd, fileSize, chunkSize, op, centralDirectory, closed;\n    const ready = false,\n        that = this,\n        entries = config.storeEntries !== false ? {} : null,\n        fileName = config.file,\n        textDecoder = config.nameEncoding ? new TextDecoder(config.nameEncoding) : null;\n\n    open();\n\n    function open() {\n        if (config.fd) {\n            fd = config.fd;\n            readFile();\n        } else {\n            fs.open(fileName, 'r', (err, f) => {\n                if (err) {\n                    return that.emit('error', err);\n                }\n                fd = f;\n                readFile();\n            });\n        }\n    }\n\n    function readFile() {\n        fs.fstat(fd, (err, stat) => {\n            if (err) {\n                return that.emit('error', err);\n            }\n            fileSize = stat.size;\n            chunkSize = config.chunkSize || Math.round(fileSize / 1000);\n            chunkSize = Math.max(\n                Math.min(chunkSize, Math.min(128 * 1024, fileSize)),\n                Math.min(1024, fileSize)\n            );\n            readCentralDirectory();\n        });\n    }\n\n    function readUntilFoundCallback(err, bytesRead) {\n        if (err || !bytesRead) {\n            return that.emit('error', err || new Error('Archive read error'));\n        }\n        let pos = op.lastPos;\n        let bufferPosition = pos - op.win.position;\n        const buffer = op.win.buffer;\n        const minPos = op.minPos;\n        while (--pos >= minPos && --bufferPosition >= 0) {\n            if (buffer.length - bufferPosition >= 4 && buffer[bufferPosition] === op.firstByte) {\n                // quick check first signature byte\n                if (buffer.readUInt32LE(bufferPosition) === op.sig) {\n                    op.lastBufferPosition = bufferPosition;\n                    op.lastBytesRead = bytesRead;\n                    op.complete();\n                    return;\n                }\n            }\n        }\n        if (pos === minPos) {\n            return that.emit('error', new Error('Bad archive'));\n        }\n        op.lastPos = pos + 1;\n        op.chunkSize *= 2;\n        if (pos <= minPos) {\n            return that.emit('error', new Error('Bad archive'));\n        }\n        const expandLength = Math.min(op.chunkSize, pos - minPos);\n        op.win.expandLeft(expandLength, readUntilFoundCallback);\n    }\n\n    function readCentralDirectory() {\n        const totalReadLength = Math.min(consts.ENDHDR + consts.MAXFILECOMMENT, fileSize);\n        op = {\n            win: new FileWindowBuffer(fd),\n            totalReadLength,\n            minPos: fileSize - totalReadLength,\n            lastPos: fileSize,\n            chunkSize: Math.min(1024, chunkSize),\n            firstByte: consts.ENDSIGFIRST,\n            sig: consts.ENDSIG,\n            complete: readCentralDirectoryComplete,\n        };\n        op.win.read(fileSize - op.chunkSize, op.chunkSize, readUntilFoundCallback);\n    }\n\n    function readCentralDirectoryComplete() {\n        const buffer = op.win.buffer;\n        const pos = op.lastBufferPosition;\n        try {\n            centralDirectory = new CentralDirectoryHeader();\n            centralDirectory.read(buffer.slice(pos, pos + consts.ENDHDR));\n            centralDirectory.headerOffset = op.win.position + pos;\n            if (centralDirectory.commentLength) {\n                that.comment = buffer\n                    .slice(\n                        pos + consts.ENDHDR,\n                        pos + consts.ENDHDR + centralDirectory.commentLength\n                    )\n                    .toString();\n            } else {\n                that.comment = null;\n            }\n            that.entriesCount = centralDirectory.volumeEntries;\n            that.centralDirectory = centralDirectory;\n            if (\n                (centralDirectory.volumeEntries === consts.EF_ZIP64_OR_16 &&\n                    centralDirectory.totalEntries === consts.EF_ZIP64_OR_16) ||\n                centralDirectory.size === consts.EF_ZIP64_OR_32 ||\n                centralDirectory.offset === consts.EF_ZIP64_OR_32\n            ) {\n                readZip64CentralDirectoryLocator();\n            } else {\n                op = {};\n                readEntries();\n            }\n        } catch (err) {\n            that.emit('error', err);\n        }\n    }\n\n    function readZip64CentralDirectoryLocator() {\n        const length = consts.ENDL64HDR;\n        if (op.lastBufferPosition > length) {\n            op.lastBufferPosition -= length;\n            readZip64CentralDirectoryLocatorComplete();\n        } else {\n            op = {\n                win: op.win,\n                totalReadLength: length,\n                minPos: op.win.position - length,\n                lastPos: op.win.position,\n                chunkSize: op.chunkSize,\n                firstByte: consts.ENDL64SIGFIRST,\n                sig: consts.ENDL64SIG,\n                complete: readZip64CentralDirectoryLocatorComplete,\n            };\n            op.win.read(op.lastPos - op.chunkSize, op.chunkSize, readUntilFoundCallback);\n        }\n    }\n\n    function readZip64CentralDirectoryLocatorComplete() {\n        const buffer = op.win.buffer;\n        const locHeader = new CentralDirectoryLoc64Header();\n        locHeader.read(\n            buffer.slice(op.lastBufferPosition, op.lastBufferPosition + consts.ENDL64HDR)\n        );\n        const readLength = fileSize - locHeader.headerOffset;\n        op = {\n            win: op.win,\n            totalReadLength: readLength,\n            minPos: locHeader.headerOffset,\n            lastPos: op.lastPos,\n            chunkSize: op.chunkSize,\n            firstByte: consts.END64SIGFIRST,\n            sig: consts.END64SIG,\n            complete: readZip64CentralDirectoryComplete,\n        };\n        op.win.read(fileSize - op.chunkSize, op.chunkSize, readUntilFoundCallback);\n    }\n\n    function readZip64CentralDirectoryComplete() {\n        const buffer = op.win.buffer;\n        const zip64cd = new CentralDirectoryZip64Header();\n        zip64cd.read(buffer.slice(op.lastBufferPosition, op.lastBufferPosition + consts.END64HDR));\n        that.centralDirectory.volumeEntries = zip64cd.volumeEntries;\n        that.centralDirectory.totalEntries = zip64cd.totalEntries;\n        that.centralDirectory.size = zip64cd.size;\n        that.centralDirectory.offset = zip64cd.offset;\n        that.entriesCount = zip64cd.volumeEntries;\n        op = {};\n        readEntries();\n    }\n\n    function readEntries() {\n        op = {\n            win: new FileWindowBuffer(fd),\n            pos: centralDirectory.offset,\n            chunkSize,\n            entriesLeft: centralDirectory.volumeEntries,\n        };\n        op.win.read(op.pos, Math.min(chunkSize, fileSize - op.pos), readEntriesCallback);\n    }\n\n    function readEntriesCallback(err, bytesRead) {\n        if (err || !bytesRead) {\n            return that.emit('error', err || new Error('Entries read error'));\n        }\n        let bufferPos = op.pos - op.win.position;\n        let entry = op.entry;\n        const buffer = op.win.buffer;\n        const bufferLength = buffer.length;\n        try {\n            while (op.entriesLeft > 0) {\n                if (!entry) {\n                    entry = new ZipEntry();\n                    entry.readHeader(buffer, bufferPos);\n                    entry.headerOffset = op.win.position + bufferPos;\n                    op.entry = entry;\n                    op.pos += consts.CENHDR;\n                    bufferPos += consts.CENHDR;\n                }\n                const entryHeaderSize = entry.fnameLen + entry.extraLen + entry.comLen;\n                const advanceBytes = entryHeaderSize + (op.entriesLeft > 1 ? consts.CENHDR : 0);\n                if (bufferLength - bufferPos < advanceBytes) {\n                    op.win.moveRight(chunkSize, readEntriesCallback, bufferPos);\n                    op.move = true;\n                    return;\n                }\n                entry.read(buffer, bufferPos, textDecoder);\n                if (!config.skipEntryNameValidation) {\n                    entry.validateName();\n                }\n                if (entries) {\n                    entries[entry.name] = entry;\n                }\n                that.emit('entry', entry);\n                op.entry = entry = null;\n                op.entriesLeft--;\n                op.pos += entryHeaderSize;\n                bufferPos += entryHeaderSize;\n            }\n            that.emit('ready');\n        } catch (err) {\n            that.emit('error', err);\n        }\n    }\n\n    function checkEntriesExist() {\n        if (!entries) {\n            throw new Error('storeEntries disabled');\n        }\n    }\n\n    Object.defineProperty(this, 'ready', {\n        get() {\n            return ready;\n        },\n    });\n\n    this.entry = function (name) {\n        checkEntriesExist();\n        return entries[name];\n    };\n\n    this.entries = function () {\n        checkEntriesExist();\n        return entries;\n    };\n\n    this.stream = function (entry, callback) {\n        return this.openEntry(\n            entry,\n            (err, entry) => {\n                if (err) {\n                    return callback(err);\n                }\n                const offset = dataOffset(entry);\n                let entryStream = new EntryDataReaderStream(fd, offset, entry.compressedSize);\n                if (entry.method === consts.STORED) {\n                    // nothing to do\n                } else if (entry.method === consts.DEFLATED) {\n                    entryStream = entryStream.pipe(zlib.createInflateRaw());\n                } else {\n                    return callback(new Error('Unknown compression method: ' + entry.method));\n                }\n                if (canVerifyCrc(entry)) {\n                    entryStream = entryStream.pipe(\n                        new EntryVerifyStream(entryStream, entry.crc, entry.size)\n                    );\n                }\n                callback(null, entryStream);\n            },\n            false\n        );\n    };\n\n    this.entryDataSync = function (entry) {\n        let err = null;\n        this.openEntry(\n            entry,\n            (e, en) => {\n                err = e;\n                entry = en;\n            },\n            true\n        );\n        if (err) {\n            throw err;\n        }\n        let data = Buffer.alloc(entry.compressedSize);\n        new FsRead(fd, data, 0, entry.compressedSize, dataOffset(entry), (e) => {\n            err = e;\n        }).read(true);\n        if (err) {\n            throw err;\n        }\n        if (entry.method === consts.STORED) {\n            // nothing to do\n        } else if (entry.method === consts.DEFLATED || entry.method === consts.ENHANCED_DEFLATED) {\n            data = zlib.inflateRawSync(data);\n        } else {\n            throw new Error('Unknown compression method: ' + entry.method);\n        }\n        if (data.length !== entry.size) {\n            throw new Error('Invalid size');\n        }\n        if (canVerifyCrc(entry)) {\n            const verify = new CrcVerify(entry.crc, entry.size);\n            verify.data(data);\n        }\n        return data;\n    };\n\n    this.openEntry = function (entry, callback, sync) {\n        if (typeof entry === 'string') {\n            checkEntriesExist();\n            entry = entries[entry];\n            if (!entry) {\n                return callback(new Error('Entry not found'));\n            }\n        }\n        if (!entry.isFile) {\n            return callback(new Error('Entry is not file'));\n        }\n        if (!fd) {\n            return callback(new Error('Archive closed'));\n        }\n        const buffer = Buffer.alloc(consts.LOCHDR);\n        new FsRead(fd, buffer, 0, buffer.length, entry.offset, (err) => {\n            if (err) {\n                return callback(err);\n            }\n            let readEx;\n            try {\n                entry.readDataHeader(buffer);\n                if (entry.encrypted) {\n                    readEx = new Error('Entry encrypted');\n                }\n            } catch (ex) {\n                readEx = ex;\n            }\n            callback(readEx, entry);\n        }).read(sync);\n    };\n\n    function dataOffset(entry) {\n        return entry.offset + consts.LOCHDR + entry.fnameLen + entry.extraLen;\n    }\n\n    function canVerifyCrc(entry) {\n        // if bit 3 (0x08) of the general-purpose flags field is set, then the CRC-32 and file sizes are not known when the header is written\n        return (entry.flags & 0x8) !== 0x8;\n    }\n\n    function extract(entry, outPath, callback) {\n        that.stream(entry, (err, stm) => {\n            if (err) {\n                callback(err);\n            } else {\n                let fsStm, errThrown;\n                stm.on('error', (err) => {\n                    errThrown = err;\n                    if (fsStm) {\n                        stm.unpipe(fsStm);\n                        fsStm.close(() => {\n                            callback(err);\n                        });\n                    }\n                });\n                fs.open(outPath, 'w', (err, fdFile) => {\n                    if (err) {\n                        return callback(err);\n                    }\n                    if (errThrown) {\n                        fs.close(fd, () => {\n                            callback(errThrown);\n                        });\n                        return;\n                    }\n                    fsStm = fs.createWriteStream(outPath, { fd: fdFile });\n                    fsStm.on('finish', () => {\n                        that.emit('extract', entry, outPath);\n                        if (!errThrown) {\n                            callback();\n                        }\n                    });\n                    stm.pipe(fsStm);\n                });\n            }\n        });\n    }\n\n    function createDirectories(baseDir, dirs, callback) {\n        if (!dirs.length) {\n            return callback();\n        }\n        let dir = dirs.shift();\n        dir = path.join(baseDir, path.join(...dir));\n        fs.mkdir(dir, { recursive: true }, (err) => {\n            if (err && err.code !== 'EEXIST') {\n                return callback(err);\n            }\n            createDirectories(baseDir, dirs, callback);\n        });\n    }\n\n    function extractFiles(baseDir, baseRelPath, files, callback, extractedCount) {\n        if (!files.length) {\n            return callback(null, extractedCount);\n        }\n        const file = files.shift();\n        const targetPath = path.join(baseDir, file.name.replace(baseRelPath, ''));\n        extract(file, targetPath, (err) => {\n            if (err) {\n                return callback(err, extractedCount);\n            }\n            extractFiles(baseDir, baseRelPath, files, callback, extractedCount + 1);\n        });\n    }\n\n    this.extract = function (entry, outPath, callback) {\n        let entryName = entry || '';\n        if (typeof entry === 'string') {\n            entry = this.entry(entry);\n            if (entry) {\n                entryName = entry.name;\n            } else {\n                if (entryName.length && entryName[entryName.length - 1] !== '/') {\n                    entryName += '/';\n                }\n            }\n        }\n        if (!entry || entry.isDirectory) {\n            const files = [],\n                dirs = [],\n                allDirs = {};\n            for (const e in entries) {\n                if (\n                    Object.prototype.hasOwnProperty.call(entries, e) &&\n                    e.lastIndexOf(entryName, 0) === 0\n                ) {\n                    let relPath = e.replace(entryName, '');\n                    const childEntry = entries[e];\n                    if (childEntry.isFile) {\n                        files.push(childEntry);\n                        relPath = path.dirname(relPath);\n                    }\n                    if (relPath && !allDirs[relPath] && relPath !== '.') {\n                        allDirs[relPath] = true;\n                        let parts = relPath.split('/').filter((f) => {\n                            return f;\n                        });\n                        if (parts.length) {\n                            dirs.push(parts);\n                        }\n                        while (parts.length > 1) {\n                            parts = parts.slice(0, parts.length - 1);\n                            const partsPath = parts.join('/');\n                            if (allDirs[partsPath] || partsPath === '.') {\n                                break;\n                            }\n                            allDirs[partsPath] = true;\n                            dirs.push(parts);\n                        }\n                    }\n                }\n            }\n            dirs.sort((x, y) => {\n                return x.length - y.length;\n            });\n            if (dirs.length) {\n                createDirectories(outPath, dirs, (err) => {\n                    if (err) {\n                        callback(err);\n                    } else {\n                        extractFiles(outPath, entryName, files, callback, 0);\n                    }\n                });\n            } else {\n                extractFiles(outPath, entryName, files, callback, 0);\n            }\n        } else {\n            fs.stat(outPath, (err, stat) => {\n                if (stat && stat.isDirectory()) {\n                    extract(entry, path.join(outPath, path.basename(entry.name)), callback);\n                } else {\n                    extract(entry, outPath, callback);\n                }\n            });\n        }\n    };\n\n    this.close = function (callback) {\n        if (closed || !fd) {\n            closed = true;\n            if (callback) {\n                callback();\n            }\n        } else {\n            closed = true;\n            fs.close(fd, (err) => {\n                fd = null;\n                if (callback) {\n                    callback(err);\n                }\n            });\n        }\n    };\n\n    const originalEmit = events.EventEmitter.prototype.emit;\n    this.emit = function (...args) {\n        if (!closed) {\n            return originalEmit.call(this, ...args);\n        }\n    };\n};\n\nStreamZip.setFs = function (customFs) {\n    fs = customFs;\n};\n\nStreamZip.debugLog = (...args) => {\n    if (StreamZip.debug) {\n        // eslint-disable-next-line no-console\n        console.log(...args);\n    }\n};\n\nutil.inherits(StreamZip, events.EventEmitter);\n\nconst propZip = Symbol('zip');\n\nStreamZip.async = class StreamZipAsync extends events.EventEmitter {\n    constructor(config) {\n        super();\n\n        const zip = new StreamZip(config);\n\n        zip.on('entry', (entry) => this.emit('entry', entry));\n        zip.on('extract', (entry, outPath) => this.emit('extract', entry, outPath));\n\n        this[propZip] = new Promise((resolve, reject) => {\n            zip.on('ready', () => {\n                zip.removeListener('error', reject);\n                resolve(zip);\n            });\n            zip.on('error', reject);\n        });\n    }\n\n    get entriesCount() {\n        return this[propZip].then((zip) => zip.entriesCount);\n    }\n\n    get comment() {\n        return this[propZip].then((zip) => zip.comment);\n    }\n\n    async entry(name) {\n        const zip = await this[propZip];\n        return zip.entry(name);\n    }\n\n    async entries() {\n        const zip = await this[propZip];\n        return zip.entries();\n    }\n\n    async stream(entry) {\n        const zip = await this[propZip];\n        return new Promise((resolve, reject) => {\n            zip.stream(entry, (err, stm) => {\n                if (err) {\n                    reject(err);\n                } else {\n                    resolve(stm);\n                }\n            });\n        });\n    }\n\n    async entryData(entry) {\n        const stm = await this.stream(entry);\n        return new Promise((resolve, reject) => {\n            const data = [];\n            stm.on('data', (chunk) => data.push(chunk));\n            stm.on('end', () => {\n                resolve(Buffer.concat(data));\n            });\n            stm.on('error', (err) => {\n                stm.removeAllListeners('end');\n                reject(err);\n            });\n        });\n    }\n\n    async extract(entry, outPath) {\n        const zip = await this[propZip];\n        return new Promise((resolve, reject) => {\n            zip.extract(entry, outPath, (err, res) => {\n                if (err) {\n                    reject(err);\n                } else {\n                    resolve(res);\n                }\n            });\n        });\n    }\n\n    async close() {\n        const zip = await this[propZip];\n        return new Promise((resolve, reject) => {\n            zip.close((err) => {\n                if (err) {\n                    reject(err);\n                } else {\n                    resolve();\n                }\n            });\n        });\n    }\n};\n\nclass CentralDirectoryHeader {\n    read(data) {\n        if (data.length !== consts.ENDHDR || data.readUInt32LE(0) !== consts.ENDSIG) {\n            throw new Error('Invalid central directory');\n        }\n        // number of entries on this volume\n        this.volumeEntries = data.readUInt16LE(consts.ENDSUB);\n        // total number of entries\n        this.totalEntries = data.readUInt16LE(consts.ENDTOT);\n        // central directory size in bytes\n        this.size = data.readUInt32LE(consts.ENDSIZ);\n        // offset of first CEN header\n        this.offset = data.readUInt32LE(consts.ENDOFF);\n        // zip file comment length\n        this.commentLength = data.readUInt16LE(consts.ENDCOM);\n    }\n}\n\nclass CentralDirectoryLoc64Header {\n    read(data) {\n        if (data.length !== consts.ENDL64HDR || data.readUInt32LE(0) !== consts.ENDL64SIG) {\n            throw new Error('Invalid zip64 central directory locator');\n        }\n        // ZIP64 EOCD header offset\n        this.headerOffset = readUInt64LE(data, consts.ENDSUB);\n    }\n}\n\nclass CentralDirectoryZip64Header {\n    read(data) {\n        if (data.length !== consts.END64HDR || data.readUInt32LE(0) !== consts.END64SIG) {\n            throw new Error('Invalid central directory');\n        }\n        // number of entries on this volume\n        this.volumeEntries = readUInt64LE(data, consts.END64SUB);\n        // total number of entries\n        this.totalEntries = readUInt64LE(data, consts.END64TOT);\n        // central directory size in bytes\n        this.size = readUInt64LE(data, consts.END64SIZ);\n        // offset of first CEN header\n        this.offset = readUInt64LE(data, consts.END64OFF);\n    }\n}\n\nclass ZipEntry {\n    readHeader(data, offset) {\n        // data should be 46 bytes and start with \"PK 01 02\"\n        if (data.length < offset + consts.CENHDR || data.readUInt32LE(offset) !== consts.CENSIG) {\n            throw new Error('Invalid entry header');\n        }\n        // version made by\n        this.verMade = data.readUInt16LE(offset + consts.CENVEM);\n        // version needed to extract\n        this.version = data.readUInt16LE(offset + consts.CENVER);\n        // encrypt, decrypt flags\n        this.flags = data.readUInt16LE(offset + consts.CENFLG);\n        // compression method\n        this.method = data.readUInt16LE(offset + consts.CENHOW);\n        // modification time (2 bytes time, 2 bytes date)\n        const timebytes = data.readUInt16LE(offset + consts.CENTIM);\n        const datebytes = data.readUInt16LE(offset + consts.CENTIM + 2);\n        this.time = parseZipTime(timebytes, datebytes);\n\n        // uncompressed file crc-32 value\n        this.crc = data.readUInt32LE(offset + consts.CENCRC);\n        // compressed size\n        this.compressedSize = data.readUInt32LE(offset + consts.CENSIZ);\n        // uncompressed size\n        this.size = data.readUInt32LE(offset + consts.CENLEN);\n        // filename length\n        this.fnameLen = data.readUInt16LE(offset + consts.CENNAM);\n        // extra field length\n        this.extraLen = data.readUInt16LE(offset + consts.CENEXT);\n        // file comment length\n        this.comLen = data.readUInt16LE(offset + consts.CENCOM);\n        // volume number start\n        this.diskStart = data.readUInt16LE(offset + consts.CENDSK);\n        // internal file attributes\n        this.inattr = data.readUInt16LE(offset + consts.CENATT);\n        // external file attributes\n        this.attr = data.readUInt32LE(offset + consts.CENATX);\n        // LOC header offset\n        this.offset = data.readUInt32LE(offset + consts.CENOFF);\n    }\n\n    readDataHeader(data) {\n        // 30 bytes and should start with \"PK\\003\\004\"\n        if (data.readUInt32LE(0) !== consts.LOCSIG) {\n            throw new Error('Invalid local header');\n        }\n        // version needed to extract\n        this.version = data.readUInt16LE(consts.LOCVER);\n        // general purpose bit flag\n        this.flags = data.readUInt16LE(consts.LOCFLG);\n        // compression method\n        this.method = data.readUInt16LE(consts.LOCHOW);\n        // modification time (2 bytes time ; 2 bytes date)\n        const timebytes = data.readUInt16LE(consts.LOCTIM);\n        const datebytes = data.readUInt16LE(consts.LOCTIM + 2);\n        this.time = parseZipTime(timebytes, datebytes);\n\n        // uncompressed file crc-32 value\n        this.crc = data.readUInt32LE(consts.LOCCRC) || this.crc;\n        // compressed size\n        const compressedSize = data.readUInt32LE(consts.LOCSIZ);\n        if (compressedSize && compressedSize !== consts.EF_ZIP64_OR_32) {\n            this.compressedSize = compressedSize;\n        }\n        // uncompressed size\n        const size = data.readUInt32LE(consts.LOCLEN);\n        if (size && size !== consts.EF_ZIP64_OR_32) {\n            this.size = size;\n        }\n        // filename length\n        this.fnameLen = data.readUInt16LE(consts.LOCNAM);\n        // extra field length\n        this.extraLen = data.readUInt16LE(consts.LOCEXT);\n    }\n\n    read(data, offset, textDecoder) {\n        const nameData = data.slice(offset, (offset += this.fnameLen));\n        this.name = textDecoder\n            ? textDecoder.decode(new Uint8Array(nameData))\n            : nameData.toString('utf8');\n        const lastChar = data[offset - 1];\n        this.isDirectory = lastChar === 47 || lastChar === 92;\n\n        if (this.extraLen) {\n            this.readExtra(data, offset);\n            offset += this.extraLen;\n        }\n        this.comment = this.comLen ? data.slice(offset, offset + this.comLen).toString() : null;\n    }\n\n    validateName() {\n        if (/\\\\|^\\w+:|^\\/|(^|\\/)\\.\\.(\\/|$)/.test(this.name)) {\n            throw new Error('Malicious entry: ' + this.name);\n        }\n    }\n\n    readExtra(data, offset) {\n        let signature, size;\n        const maxPos = offset + this.extraLen;\n        while (offset < maxPos) {\n            signature = data.readUInt16LE(offset);\n            offset += 2;\n            size = data.readUInt16LE(offset);\n            offset += 2;\n            if (consts.ID_ZIP64 === signature) {\n                this.parseZip64Extra(data, offset, size);\n            }\n            offset += size;\n        }\n    }\n\n    parseZip64Extra(data, offset, length) {\n        if (length >= 8 && this.size === consts.EF_ZIP64_OR_32) {\n            this.size = readUInt64LE(data, offset);\n            offset += 8;\n            length -= 8;\n        }\n        if (length >= 8 && this.compressedSize === consts.EF_ZIP64_OR_32) {\n            this.compressedSize = readUInt64LE(data, offset);\n            offset += 8;\n            length -= 8;\n        }\n        if (length >= 8 && this.offset === consts.EF_ZIP64_OR_32) {\n            this.offset = readUInt64LE(data, offset);\n            offset += 8;\n            length -= 8;\n        }\n        if (length >= 4 && this.diskStart === consts.EF_ZIP64_OR_16) {\n            this.diskStart = data.readUInt32LE(offset);\n            // offset += 4; length -= 4;\n        }\n    }\n\n    get encrypted() {\n        return (this.flags & consts.FLG_ENTRY_ENC) === consts.FLG_ENTRY_ENC;\n    }\n\n    get isFile() {\n        return !this.isDirectory;\n    }\n}\n\nclass FsRead {\n    constructor(fd, buffer, offset, length, position, callback) {\n        this.fd = fd;\n        this.buffer = buffer;\n        this.offset = offset;\n        this.length = length;\n        this.position = position;\n        this.callback = callback;\n        this.bytesRead = 0;\n        this.waiting = false;\n    }\n\n    read(sync) {\n        StreamZip.debugLog('read', this.position, this.bytesRead, this.length, this.offset);\n        this.waiting = true;\n        let err;\n        if (sync) {\n            let bytesRead = 0;\n            try {\n                bytesRead = fs.readSync(\n                    this.fd,\n                    this.buffer,\n                    this.offset + this.bytesRead,\n                    this.length - this.bytesRead,\n                    this.position + this.bytesRead\n                );\n            } catch (e) {\n                err = e;\n            }\n            this.readCallback(sync, err, err ? bytesRead : null);\n        } else {\n            fs.read(\n                this.fd,\n                this.buffer,\n                this.offset + this.bytesRead,\n                this.length - this.bytesRead,\n                this.position + this.bytesRead,\n                this.readCallback.bind(this, sync)\n            );\n        }\n    }\n\n    readCallback(sync, err, bytesRead) {\n        if (typeof bytesRead === 'number') {\n            this.bytesRead += bytesRead;\n        }\n        if (err || !bytesRead || this.bytesRead === this.length) {\n            this.waiting = false;\n            return this.callback(err, this.bytesRead);\n        } else {\n            this.read(sync);\n        }\n    }\n}\n\nclass FileWindowBuffer {\n    constructor(fd) {\n        this.position = 0;\n        this.buffer = Buffer.alloc(0);\n        this.fd = fd;\n        this.fsOp = null;\n    }\n\n    checkOp() {\n        if (this.fsOp && this.fsOp.waiting) {\n            throw new Error('Operation in progress');\n        }\n    }\n\n    read(pos, length, callback) {\n        this.checkOp();\n        if (this.buffer.length < length) {\n            this.buffer = Buffer.alloc(length);\n        }\n        this.position = pos;\n        this.fsOp = new FsRead(this.fd, this.buffer, 0, length, this.position, callback).read();\n    }\n\n    expandLeft(length, callback) {\n        this.checkOp();\n        this.buffer = Buffer.concat([Buffer.alloc(length), this.buffer]);\n        this.position -= length;\n        if (this.position < 0) {\n            this.position = 0;\n        }\n        this.fsOp = new FsRead(this.fd, this.buffer, 0, length, this.position, callback).read();\n    }\n\n    expandRight(length, callback) {\n        this.checkOp();\n        const offset = this.buffer.length;\n        this.buffer = Buffer.concat([this.buffer, Buffer.alloc(length)]);\n        this.fsOp = new FsRead(\n            this.fd,\n            this.buffer,\n            offset,\n            length,\n            this.position + offset,\n            callback\n        ).read();\n    }\n\n    moveRight(length, callback, shift) {\n        this.checkOp();\n        if (shift) {\n            this.buffer.copy(this.buffer, 0, shift);\n        } else {\n            shift = 0;\n        }\n        this.position += shift;\n        this.fsOp = new FsRead(\n            this.fd,\n            this.buffer,\n            this.buffer.length - shift,\n            shift,\n            this.position + this.buffer.length - shift,\n            callback\n        ).read();\n    }\n}\n\nclass EntryDataReaderStream extends stream.Readable {\n    constructor(fd, offset, length) {\n        super();\n        this.fd = fd;\n        this.offset = offset;\n        this.length = length;\n        this.pos = 0;\n        this.readCallback = this.readCallback.bind(this);\n    }\n\n    _read(n) {\n        const buffer = Buffer.alloc(Math.min(n, this.length - this.pos));\n        if (buffer.length) {\n            fs.read(this.fd, buffer, 0, buffer.length, this.offset + this.pos, this.readCallback);\n        } else {\n            this.push(null);\n        }\n    }\n\n    readCallback(err, bytesRead, buffer) {\n        this.pos += bytesRead;\n        if (err) {\n            this.emit('error', err);\n            this.push(null);\n        } else if (!bytesRead) {\n            this.push(null);\n        } else {\n            if (bytesRead !== buffer.length) {\n                buffer = buffer.slice(0, bytesRead);\n            }\n            this.push(buffer);\n        }\n    }\n}\n\nclass EntryVerifyStream extends stream.Transform {\n    constructor(baseStm, crc, size) {\n        super();\n        this.verify = new CrcVerify(crc, size);\n        baseStm.on('error', (e) => {\n            this.emit('error', e);\n        });\n    }\n\n    _transform(data, encoding, callback) {\n        let err;\n        try {\n            this.verify.data(data);\n        } catch (e) {\n            err = e;\n        }\n        callback(err, data);\n    }\n}\n\nclass CrcVerify {\n    constructor(crc, size) {\n        this.crc = crc;\n        this.size = size;\n        this.state = {\n            crc: ~0,\n            size: 0,\n        };\n    }\n\n    data(data) {\n        const crcTable = CrcVerify.getCrcTable();\n        let crc = this.state.crc;\n        let off = 0;\n        let len = data.length;\n        while (--len >= 0) {\n            crc = crcTable[(crc ^ data[off++]) & 0xff] ^ (crc >>> 8);\n        }\n        this.state.crc = crc;\n        this.state.size += data.length;\n        if (this.state.size >= this.size) {\n            const buf = Buffer.alloc(4);\n            buf.writeInt32LE(~this.state.crc & 0xffffffff, 0);\n            crc = buf.readUInt32LE(0);\n            if (crc !== this.crc) {\n                throw new Error('Invalid CRC');\n            }\n            if (this.state.size !== this.size) {\n                throw new Error('Invalid size');\n            }\n        }\n    }\n\n    static getCrcTable() {\n        let crcTable = CrcVerify.crcTable;\n        if (!crcTable) {\n            CrcVerify.crcTable = crcTable = [];\n            const b = Buffer.alloc(4);\n            for (let n = 0; n < 256; n++) {\n                let c = n;\n                for (let k = 8; --k >= 0; ) {\n                    if ((c & 1) !== 0) {\n                        c = 0xedb88320 ^ (c >>> 1);\n                    } else {\n                        c = c >>> 1;\n                    }\n                }\n                if (c < 0) {\n                    b.writeInt32LE(c, 0);\n                    c = b.readUInt32LE(0);\n                }\n                crcTable[n] = c;\n            }\n        }\n        return crcTable;\n    }\n}\n\nfunction parseZipTime(timebytes, datebytes) {\n    const timebits = toBits(timebytes, 16);\n    const datebits = toBits(datebytes, 16);\n\n    const mt = {\n        h: parseInt(timebits.slice(0, 5).join(''), 2),\n        m: parseInt(timebits.slice(5, 11).join(''), 2),\n        s: parseInt(timebits.slice(11, 16).join(''), 2) * 2,\n        Y: parseInt(datebits.slice(0, 7).join(''), 2) + 1980,\n        M: parseInt(datebits.slice(7, 11).join(''), 2),\n        D: parseInt(datebits.slice(11, 16).join(''), 2),\n    };\n    const dt_str = [mt.Y, mt.M, mt.D].join('-') + ' ' + [mt.h, mt.m, mt.s].join(':') + ' GMT+0';\n    return new Date(dt_str).getTime();\n}\n\nfunction toBits(dec, size) {\n    let b = (dec >>> 0).toString(2);\n    while (b.length < size) {\n        b = '0' + b;\n    }\n    return b.split('');\n}\n\nfunction readUInt64LE(buffer, offset) {\n    return buffer.readUInt32LE(offset + 4) * 0x0000000100000000 + buffer.readUInt32LE(offset);\n}\n\nmodule.exports = StreamZip;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/node-stream-zip/node_stream_zip.js?")},"./node_modules/normalize-url/index.js":
/*!*********************************************!*\
  !*** ./node_modules/normalize-url/index.js ***!
  \*********************************************/module=>{"use strict";eval("\n\n// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\nconst DATA_URL_DEFAULT_MIME_TYPE = 'text/plain';\nconst DATA_URL_DEFAULT_CHARSET = 'us-ascii';\n\nconst testParameter = (name, filters) => {\n\treturn filters.some(filter => filter instanceof RegExp ? filter.test(name) : filter === name);\n};\n\nconst normalizeDataURL = (urlString, {stripHash}) => {\n\tconst match = /^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(urlString);\n\n\tif (!match) {\n\t\tthrow new Error(`Invalid URL: ${urlString}`);\n\t}\n\n\tlet {type, data, hash} = match.groups;\n\tconst mediaType = type.split(';');\n\thash = stripHash ? '' : hash;\n\n\tlet isBase64 = false;\n\tif (mediaType[mediaType.length - 1] === 'base64') {\n\t\tmediaType.pop();\n\t\tisBase64 = true;\n\t}\n\n\t// Lowercase MIME type\n\tconst mimeType = (mediaType.shift() || '').toLowerCase();\n\tconst attributes = mediaType\n\t\t.map(attribute => {\n\t\t\tlet [key, value = ''] = attribute.split('=').map(string => string.trim());\n\n\t\t\t// Lowercase `charset`\n\t\t\tif (key === 'charset') {\n\t\t\t\tvalue = value.toLowerCase();\n\n\t\t\t\tif (value === DATA_URL_DEFAULT_CHARSET) {\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn `${key}${value ? `=${value}` : ''}`;\n\t\t})\n\t\t.filter(Boolean);\n\n\tconst normalizedMediaType = [\n\t\t...attributes\n\t];\n\n\tif (isBase64) {\n\t\tnormalizedMediaType.push('base64');\n\t}\n\n\tif (normalizedMediaType.length !== 0 || (mimeType && mimeType !== DATA_URL_DEFAULT_MIME_TYPE)) {\n\t\tnormalizedMediaType.unshift(mimeType);\n\t}\n\n\treturn `data:${normalizedMediaType.join(';')},${isBase64 ? data.trim() : data}${hash ? `#${hash}` : ''}`;\n};\n\nconst normalizeUrl = (urlString, options) => {\n\toptions = {\n\t\tdefaultProtocol: 'http:',\n\t\tnormalizeProtocol: true,\n\t\tforceHttp: false,\n\t\tforceHttps: false,\n\t\tstripAuthentication: true,\n\t\tstripHash: false,\n\t\tstripTextFragment: true,\n\t\tstripWWW: true,\n\t\tremoveQueryParameters: [/^utm_\\w+/i],\n\t\tremoveTrailingSlash: true,\n\t\tremoveSingleSlash: true,\n\t\tremoveDirectoryIndex: false,\n\t\tsortQueryParameters: true,\n\t\t...options\n\t};\n\n\turlString = urlString.trim();\n\n\t// Data URL\n\tif (/^data:/i.test(urlString)) {\n\t\treturn normalizeDataURL(urlString, options);\n\t}\n\n\tif (/^view-source:/i.test(urlString)) {\n\t\tthrow new Error('`view-source:` is not supported as it is a non-standard protocol');\n\t}\n\n\tconst hasRelativeProtocol = urlString.startsWith('//');\n\tconst isRelativeUrl = !hasRelativeProtocol && /^\\.*\\//.test(urlString);\n\n\t// Prepend protocol\n\tif (!isRelativeUrl) {\n\t\turlString = urlString.replace(/^(?!(?:\\w+:)?\\/\\/)|^\\/\\//, options.defaultProtocol);\n\t}\n\n\tconst urlObj = new URL(urlString);\n\n\tif (options.forceHttp && options.forceHttps) {\n\t\tthrow new Error('The `forceHttp` and `forceHttps` options cannot be used together');\n\t}\n\n\tif (options.forceHttp && urlObj.protocol === 'https:') {\n\t\turlObj.protocol = 'http:';\n\t}\n\n\tif (options.forceHttps && urlObj.protocol === 'http:') {\n\t\turlObj.protocol = 'https:';\n\t}\n\n\t// Remove auth\n\tif (options.stripAuthentication) {\n\t\turlObj.username = '';\n\t\turlObj.password = '';\n\t}\n\n\t// Remove hash\n\tif (options.stripHash) {\n\t\turlObj.hash = '';\n\t} else if (options.stripTextFragment) {\n\t\turlObj.hash = urlObj.hash.replace(/#?:~:text.*?$/i, '');\n\t}\n\n\t// Remove duplicate slashes if not preceded by a protocol\n\tif (urlObj.pathname) {\n\t\turlObj.pathname = urlObj.pathname.replace(/(?<!\\b(?:[a-z][a-z\\d+\\-.]{1,50}:))\\/{2,}/g, '/');\n\t}\n\n\t// Decode URI octets\n\tif (urlObj.pathname) {\n\t\ttry {\n\t\t\turlObj.pathname = decodeURI(urlObj.pathname);\n\t\t} catch (_) {}\n\t}\n\n\t// Remove directory index\n\tif (options.removeDirectoryIndex === true) {\n\t\toptions.removeDirectoryIndex = [/^index\\.[a-z]+$/];\n\t}\n\n\tif (Array.isArray(options.removeDirectoryIndex) && options.removeDirectoryIndex.length > 0) {\n\t\tlet pathComponents = urlObj.pathname.split('/');\n\t\tconst lastComponent = pathComponents[pathComponents.length - 1];\n\n\t\tif (testParameter(lastComponent, options.removeDirectoryIndex)) {\n\t\t\tpathComponents = pathComponents.slice(0, pathComponents.length - 1);\n\t\t\turlObj.pathname = pathComponents.slice(1).join('/') + '/';\n\t\t}\n\t}\n\n\tif (urlObj.hostname) {\n\t\t// Remove trailing dot\n\t\turlObj.hostname = urlObj.hostname.replace(/\\.$/, '');\n\n\t\t// Remove `www.`\n\t\tif (options.stripWWW && /^www\\.(?!www\\.)(?:[a-z\\-\\d]{1,63})\\.(?:[a-z.\\-\\d]{2,63})$/.test(urlObj.hostname)) {\n\t\t\t// Each label should be max 63 at length (min: 1).\n\t\t\t// Source: https://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_host_names\n\t\t\t// Each TLD should be up to 63 characters long (min: 2).\n\t\t\t// It is technically possible to have a single character TLD, but none currently exist.\n\t\t\turlObj.hostname = urlObj.hostname.replace(/^www\\./, '');\n\t\t}\n\t}\n\n\t// Remove query unwanted parameters\n\tif (Array.isArray(options.removeQueryParameters)) {\n\t\tfor (const key of [...urlObj.searchParams.keys()]) {\n\t\t\tif (testParameter(key, options.removeQueryParameters)) {\n\t\t\t\turlObj.searchParams.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (options.removeQueryParameters === true) {\n\t\turlObj.search = '';\n\t}\n\n\t// Sort query parameters\n\tif (options.sortQueryParameters) {\n\t\turlObj.searchParams.sort();\n\t}\n\n\tif (options.removeTrailingSlash) {\n\t\turlObj.pathname = urlObj.pathname.replace(/\\/$/, '');\n\t}\n\n\tconst oldUrlString = urlString;\n\n\t// Take advantage of many of the Node `url` normalizations\n\turlString = urlObj.toString();\n\n\tif (!options.removeSingleSlash && urlObj.pathname === '/' && !oldUrlString.endsWith('/') && urlObj.hash === '') {\n\t\turlString = urlString.replace(/\\/$/, '');\n\t}\n\n\t// Remove ending `/` unless removeSingleSlash is false\n\tif ((options.removeTrailingSlash || urlObj.pathname === '/') && urlObj.hash === '' && options.removeSingleSlash) {\n\t\turlString = urlString.replace(/\\/$/, '');\n\t}\n\n\t// Restore relative protocol, if applicable\n\tif (hasRelativeProtocol && !options.normalizeProtocol) {\n\t\turlString = urlString.replace(/^http:\\/\\//, '//');\n\t}\n\n\t// Remove http/https\n\tif (options.stripProtocol) {\n\t\turlString = urlString.replace(/^(?:https?:)?\\/\\//, '');\n\t}\n\n\treturn urlString;\n};\n\nmodule.exports = normalizeUrl;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/normalize-url/index.js?")},"./node_modules/npm-run-path/index.js":
/*!********************************************!*\
  !*** ./node_modules/npm-run-path/index.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\nconst path = __webpack_require__(/*! path */ "path");\nconst pathKey = __webpack_require__(/*! path-key */ "./node_modules/path-key/index.js");\n\nconst npmRunPath = options => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\tpath: ({"APP_ENV":"webpack"})[pathKey()],\n\t\texecPath: process.execPath,\n\t\t...options\n\t};\n\n\tlet previous;\n\tlet cwdPath = path.resolve(options.cwd);\n\tconst result = [];\n\n\twhile (previous !== cwdPath) {\n\t\tresult.push(path.join(cwdPath, \'node_modules/.bin\'));\n\t\tprevious = cwdPath;\n\t\tcwdPath = path.resolve(cwdPath, \'..\');\n\t}\n\n\t// Ensure the running `node` binary is used\n\tconst execPathDir = path.resolve(options.cwd, options.execPath, \'..\');\n\tresult.push(execPathDir);\n\n\treturn result.concat(options.path).join(path.delimiter);\n};\n\nmodule.exports = npmRunPath;\n// TODO: Remove this for the next major release\nmodule.exports["default"] = npmRunPath;\n\nmodule.exports.env = options => {\n\toptions = {\n\t\tenv: ({"APP_ENV":"webpack"}),\n\t\t...options\n\t};\n\n\tconst env = {...options.env};\n\tconst path = pathKey({env});\n\n\toptions.path = env[path];\n\tenv[path] = module.exports(options);\n\n\treturn env;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/npm-run-path/index.js?')},"./node_modules/object-assign/index.js":
/*!*********************************************!*\
  !*** ./node_modules/object-assign/index.js ***!
  \*********************************************/module=>{"use strict";eval("/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/object-assign/index.js?")},"./node_modules/object-hash/index.js":
/*!*******************************************!*\
  !*** ./node_modules/object-hash/index.js ***!
  \*******************************************/(module,exports,__webpack_require__)=>{"use strict";eval("\n\nvar crypto = __webpack_require__(/*! crypto */ \"crypto\");\n\n/**\n * Exported function\n *\n * Options:\n *\n *  - `algorithm` hash algo to be used by this instance: *'sha1', 'md5'\n *  - `excludeValues` {true|*false} hash object keys, values ignored\n *  - `encoding` hash encoding, supports 'buffer', '*hex', 'binary', 'base64'\n *  - `ignoreUnknown` {true|*false} ignore unknown object types\n *  - `replacer` optional function that replaces values before hashing\n *  - `respectFunctionProperties` {*true|false} consider function properties when hashing\n *  - `respectFunctionNames` {*true|false} consider 'name' property of functions for hashing\n *  - `respectType` {*true|false} Respect special properties (prototype, constructor)\n *    when hashing to distinguish between types\n *  - `unorderedArrays` {true|*false} Sort all arrays before hashing\n *  - `unorderedSets` {*true|false} Sort `Set` and `Map` instances before hashing\n *  * = default\n *\n * @param {object} object value to hash\n * @param {object} options hashing options\n * @return {string} hash value\n * @api public\n */\nexports = module.exports = objectHash;\n\nfunction objectHash(object, options){\n  options = applyDefaults(object, options);\n\n  return hash(object, options);\n}\n\n/**\n * Exported sugar methods\n *\n * @param {object} object value to hash\n * @return {string} hash value\n * @api public\n */\nexports.sha1 = function(object){\n  return objectHash(object);\n};\nexports.keys = function(object){\n  return objectHash(object, {excludeValues: true, algorithm: 'sha1', encoding: 'hex'});\n};\nexports.MD5 = function(object){\n  return objectHash(object, {algorithm: 'md5', encoding: 'hex'});\n};\nexports.keysMD5 = function(object){\n  return objectHash(object, {algorithm: 'md5', encoding: 'hex', excludeValues: true});\n};\n\n// Internals\nvar hashes = crypto.getHashes ? crypto.getHashes().slice() : ['sha1', 'md5'];\nhashes.push('passthrough');\nvar encodings = ['buffer', 'hex', 'binary', 'base64'];\n\nfunction applyDefaults(object, sourceOptions){\n  sourceOptions = sourceOptions || {};\n\n  // create a copy rather than mutating\n  var options = {};\n  options.algorithm = sourceOptions.algorithm || 'sha1';\n  options.encoding = sourceOptions.encoding || 'hex';\n  options.excludeValues = sourceOptions.excludeValues ? true : false;\n  options.algorithm = options.algorithm.toLowerCase();\n  options.encoding = options.encoding.toLowerCase();\n  options.ignoreUnknown = sourceOptions.ignoreUnknown !== true ? false : true; // default to false\n  options.respectType = sourceOptions.respectType === false ? false : true; // default to true\n  options.respectFunctionNames = sourceOptions.respectFunctionNames === false ? false : true;\n  options.respectFunctionProperties = sourceOptions.respectFunctionProperties === false ? false : true;\n  options.unorderedArrays = sourceOptions.unorderedArrays !== true ? false : true; // default to false\n  options.unorderedSets = sourceOptions.unorderedSets === false ? false : true; // default to false\n  options.unorderedObjects = sourceOptions.unorderedObjects === false ? false : true; // default to true\n  options.replacer = sourceOptions.replacer || undefined;\n  options.excludeKeys = sourceOptions.excludeKeys || undefined;\n\n  if(typeof object === 'undefined') {\n    throw new Error('Object argument required.');\n  }\n\n  // if there is a case-insensitive match in the hashes list, accept it\n  // (i.e. SHA256 for sha256)\n  for (var i = 0; i < hashes.length; ++i) {\n    if (hashes[i].toLowerCase() === options.algorithm.toLowerCase()) {\n      options.algorithm = hashes[i];\n    }\n  }\n\n  if(hashes.indexOf(options.algorithm) === -1){\n    throw new Error('Algorithm \"' + options.algorithm + '\"  not supported. ' +\n      'supported values: ' + hashes.join(', '));\n  }\n\n  if(encodings.indexOf(options.encoding) === -1 &&\n     options.algorithm !== 'passthrough'){\n    throw new Error('Encoding \"' + options.encoding + '\"  not supported. ' +\n      'supported values: ' + encodings.join(', '));\n  }\n\n  return options;\n}\n\n/** Check if the given function is a native function */\nfunction isNativeFunction(f) {\n  if ((typeof f) !== 'function') {\n    return false;\n  }\n  var exp = /^function\\s+\\w*\\s*\\(\\s*\\)\\s*{\\s+\\[native code\\]\\s+}$/i;\n  return exp.exec(Function.prototype.toString.call(f)) != null;\n}\n\nfunction hash(object, options) {\n  var hashingStream;\n\n  if (options.algorithm !== 'passthrough') {\n    hashingStream = crypto.createHash(options.algorithm);\n  } else {\n    hashingStream = new PassThrough();\n  }\n\n  if (typeof hashingStream.write === 'undefined') {\n    hashingStream.write = hashingStream.update;\n    hashingStream.end   = hashingStream.update;\n  }\n\n  var hasher = typeHasher(options, hashingStream);\n  hasher.dispatch(object);\n  if (!hashingStream.update) {\n    hashingStream.end('');\n  }\n\n  if (hashingStream.digest) {\n    return hashingStream.digest(options.encoding === 'buffer' ? undefined : options.encoding);\n  }\n\n  var buf = hashingStream.read();\n  if (options.encoding === 'buffer') {\n    return buf;\n  }\n\n  return buf.toString(options.encoding);\n}\n\n/**\n * Expose streaming API\n *\n * @param {object} object  Value to serialize\n * @param {object} options  Options, as for hash()\n * @param {object} stream  A stream to write the serializiation to\n * @api public\n */\nexports.writeToStream = function(object, options, stream) {\n  if (typeof stream === 'undefined') {\n    stream = options;\n    options = {};\n  }\n\n  options = applyDefaults(object, options);\n\n  return typeHasher(options, stream).dispatch(object);\n};\n\nfunction typeHasher(options, writeTo, context){\n  context = context || [];\n  var write = function(str) {\n    if (writeTo.update) {\n      return writeTo.update(str, 'utf8');\n    } else {\n      return writeTo.write(str, 'utf8');\n    }\n  };\n\n  return {\n    dispatch: function(value){\n      if (options.replacer) {\n        value = options.replacer(value);\n      }\n\n      var type = typeof value;\n      if (value === null) {\n        type = 'null';\n      }\n\n      //console.log(\"[DEBUG] Dispatch: \", value, \"->\", type, \" -> \", \"_\" + type);\n\n      return this['_' + type](value);\n    },\n    _object: function(object) {\n      var pattern = (/\\[object (.*)\\]/i);\n      var objString = Object.prototype.toString.call(object);\n      var objType = pattern.exec(objString);\n      if (!objType) { // object type did not match [object ...]\n        objType = 'unknown:[' + objString + ']';\n      } else {\n        objType = objType[1]; // take only the class name\n      }\n\n      objType = objType.toLowerCase();\n\n      var objectNumber = null;\n\n      if ((objectNumber = context.indexOf(object)) >= 0) {\n        return this.dispatch('[CIRCULAR:' + objectNumber + ']');\n      } else {\n        context.push(object);\n      }\n\n      if (typeof Buffer !== 'undefined' && Buffer.isBuffer && Buffer.isBuffer(object)) {\n        write('buffer:');\n        return write(object);\n      }\n\n      if(objType !== 'object' && objType !== 'function' && objType !== 'asyncfunction') {\n        if(this['_' + objType]) {\n          this['_' + objType](object);\n        } else if (options.ignoreUnknown) {\n          return write('[' + objType + ']');\n        } else {\n          throw new Error('Unknown object type \"' + objType + '\"');\n        }\n      }else{\n        var keys = Object.keys(object);\n        if (options.unorderedObjects) {\n          keys = keys.sort();\n        }\n        // Make sure to incorporate special properties, so\n        // Types with different prototypes will produce\n        // a different hash and objects derived from\n        // different functions (`new Foo`, `new Bar`) will\n        // produce different hashes.\n        // We never do this for native functions since some\n        // seem to break because of that.\n        if (options.respectType !== false && !isNativeFunction(object)) {\n          keys.splice(0, 0, 'prototype', '__proto__', 'constructor');\n        }\n\n        if (options.excludeKeys) {\n          keys = keys.filter(function(key) { return !options.excludeKeys(key); });\n        }\n\n        write('object:' + keys.length + ':');\n        var self = this;\n        return keys.forEach(function(key){\n          self.dispatch(key);\n          write(':');\n          if(!options.excludeValues) {\n            self.dispatch(object[key]);\n          }\n          write(',');\n        });\n      }\n    },\n    _array: function(arr, unordered){\n      unordered = typeof unordered !== 'undefined' ? unordered :\n        options.unorderedArrays !== false; // default to options.unorderedArrays\n\n      var self = this;\n      write('array:' + arr.length + ':');\n      if (!unordered || arr.length <= 1) {\n        return arr.forEach(function(entry) {\n          return self.dispatch(entry);\n        });\n      }\n\n      // the unordered case is a little more complicated:\n      // since there is no canonical ordering on objects,\n      // i.e. {a:1} < {a:2} and {a:1} > {a:2} are both false,\n      // we first serialize each entry using a PassThrough stream\n      // before sorting.\n      // also: we can’t use the same context array for all entries\n      // since the order of hashing should *not* matter. instead,\n      // we keep track of the additions to a copy of the context array\n      // and add all of them to the global context array when we’re done\n      var contextAdditions = [];\n      var entries = arr.map(function(entry) {\n        var strm = new PassThrough();\n        var localContext = context.slice(); // make copy\n        var hasher = typeHasher(options, strm, localContext);\n        hasher.dispatch(entry);\n        // take only what was added to localContext and append it to contextAdditions\n        contextAdditions = contextAdditions.concat(localContext.slice(context.length));\n        return strm.read().toString();\n      });\n      context = context.concat(contextAdditions);\n      entries.sort();\n      return this._array(entries, false);\n    },\n    _date: function(date){\n      return write('date:' + date.toJSON());\n    },\n    _symbol: function(sym){\n      return write('symbol:' + sym.toString());\n    },\n    _error: function(err){\n      return write('error:' + err.toString());\n    },\n    _boolean: function(bool){\n      return write('bool:' + bool.toString());\n    },\n    _string: function(string){\n      write('string:' + string.length + ':');\n      write(string.toString());\n    },\n    _function: function(fn){\n      write('fn:');\n      if (isNativeFunction(fn)) {\n        this.dispatch('[native]');\n      } else {\n        this.dispatch(fn.toString());\n      }\n\n      if (options.respectFunctionNames !== false) {\n        // Make sure we can still distinguish native functions\n        // by their name, otherwise String and Function will\n        // have the same hash\n        this.dispatch(\"function-name:\" + String(fn.name));\n      }\n\n      if (options.respectFunctionProperties) {\n        this._object(fn);\n      }\n    },\n    _number: function(number){\n      return write('number:' + number.toString());\n    },\n    _xml: function(xml){\n      return write('xml:' + xml.toString());\n    },\n    _null: function() {\n      return write('Null');\n    },\n    _undefined: function() {\n      return write('Undefined');\n    },\n    _regexp: function(regex){\n      return write('regex:' + regex.toString());\n    },\n    _uint8array: function(arr){\n      write('uint8array:');\n      return this.dispatch(Array.prototype.slice.call(arr));\n    },\n    _uint8clampedarray: function(arr){\n      write('uint8clampedarray:');\n      return this.dispatch(Array.prototype.slice.call(arr));\n    },\n    _int8array: function(arr){\n      write('uint8array:');\n      return this.dispatch(Array.prototype.slice.call(arr));\n    },\n    _uint16array: function(arr){\n      write('uint16array:');\n      return this.dispatch(Array.prototype.slice.call(arr));\n    },\n    _int16array: function(arr){\n      write('uint16array:');\n      return this.dispatch(Array.prototype.slice.call(arr));\n    },\n    _uint32array: function(arr){\n      write('uint32array:');\n      return this.dispatch(Array.prototype.slice.call(arr));\n    },\n    _int32array: function(arr){\n      write('uint32array:');\n      return this.dispatch(Array.prototype.slice.call(arr));\n    },\n    _float32array: function(arr){\n      write('float32array:');\n      return this.dispatch(Array.prototype.slice.call(arr));\n    },\n    _float64array: function(arr){\n      write('float64array:');\n      return this.dispatch(Array.prototype.slice.call(arr));\n    },\n    _arraybuffer: function(arr){\n      write('arraybuffer:');\n      return this.dispatch(new Uint8Array(arr));\n    },\n    _url: function(url) {\n      return write('url:' + url.toString(), 'utf8');\n    },\n    _map: function(map) {\n      write('map:');\n      var arr = Array.from(map);\n      return this._array(arr, options.unorderedSets !== false);\n    },\n    _set: function(set) {\n      write('set:');\n      var arr = Array.from(set);\n      return this._array(arr, options.unorderedSets !== false);\n    },\n    _file: function(file) {\n      write('file:');\n      return this.dispatch([file.name, file.size, file.type, file.lastModfied]);\n    },\n    _blob: function() {\n      if (options.ignoreUnknown) {\n        return write('[blob]');\n      }\n\n      throw Error('Hashing Blob objects is currently not supported\\n' +\n        '(see https://github.com/puleos/object-hash/issues/26)\\n' +\n        'Use \"options.replacer\" or \"options.ignoreUnknown\"\\n');\n    },\n    _domwindow: function() { return write('domwindow'); },\n    _bigint: function(number){\n      return write('bigint:' + number.toString());\n    },\n    /* Node.js standard native objects */\n    _process: function() { return write('process'); },\n    _timer: function() { return write('timer'); },\n    _pipe: function() { return write('pipe'); },\n    _tcp: function() { return write('tcp'); },\n    _udp: function() { return write('udp'); },\n    _tty: function() { return write('tty'); },\n    _statwatcher: function() { return write('statwatcher'); },\n    _securecontext: function() { return write('securecontext'); },\n    _connection: function() { return write('connection'); },\n    _zlib: function() { return write('zlib'); },\n    _context: function() { return write('context'); },\n    _nodescript: function() { return write('nodescript'); },\n    _httpparser: function() { return write('httpparser'); },\n    _dataview: function() { return write('dataview'); },\n    _signal: function() { return write('signal'); },\n    _fsevent: function() { return write('fsevent'); },\n    _tlswrap: function() { return write('tlswrap'); },\n  };\n}\n\n// Mini-implementation of stream.PassThrough\n// We are far from having need for the full implementation, and we can\n// make assumptions like \"many writes, then only one final read\"\n// and we can ignore encoding specifics\nfunction PassThrough() {\n  return {\n    buf: '',\n\n    write: function(b) {\n      this.buf += b;\n    },\n\n    end: function(b) {\n      this.buf += b;\n    },\n\n    read: function() {\n      return this.buf;\n    }\n  };\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/object-hash/index.js?")},"./node_modules/object-inspect/index.js":
/*!**********************************************!*\
  !*** ./node_modules/object-inspect/index.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar match = String.prototype.match;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n    [].__proto__ === Array.prototype // eslint-disable-line no-proto\n        ? function (O) {\n            return O.__proto__; // eslint-disable-line no-proto\n        }\n        : null\n);\n\nvar inspectCustom = (__webpack_require__(/*! ./util.inspect */ \"./node_modules/object-inspect/util.inspect.js\").custom);\nvar inspectSymbol = inspectCustom && isSymbol(inspectCustom) ? inspectCustom : null;\nvar toStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag !== 'undefined' ? Symbol.toStringTag : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n    var opts = options || {};\n\n    if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n        throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n    }\n    if (\n        has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n            ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n            : opts.maxStringLength !== null\n        )\n    ) {\n        throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n    }\n    var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n    if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n        throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n    }\n\n    if (\n        has(opts, 'indent')\n        && opts.indent !== null\n        && opts.indent !== '\\t'\n        && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n    ) {\n        throw new TypeError('options \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n    }\n\n    if (typeof obj === 'undefined') {\n        return 'undefined';\n    }\n    if (obj === null) {\n        return 'null';\n    }\n    if (typeof obj === 'boolean') {\n        return obj ? 'true' : 'false';\n    }\n\n    if (typeof obj === 'string') {\n        return inspectString(obj, opts);\n    }\n    if (typeof obj === 'number') {\n        if (obj === 0) {\n            return Infinity / obj > 0 ? '0' : '-0';\n        }\n        return String(obj);\n    }\n    if (typeof obj === 'bigint') {\n        return String(obj) + 'n';\n    }\n\n    var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n    if (typeof depth === 'undefined') { depth = 0; }\n    if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n        return isArray(obj) ? '[Array]' : '[Object]';\n    }\n\n    var indent = getIndent(opts, depth);\n\n    if (typeof seen === 'undefined') {\n        seen = [];\n    } else if (indexOf(seen, obj) >= 0) {\n        return '[Circular]';\n    }\n\n    function inspect(value, from, noIndent) {\n        if (from) {\n            seen = seen.slice();\n            seen.push(from);\n        }\n        if (noIndent) {\n            var newOpts = {\n                depth: opts.depth\n            };\n            if (has(opts, 'quoteStyle')) {\n                newOpts.quoteStyle = opts.quoteStyle;\n            }\n            return inspect_(value, newOpts, depth + 1, seen);\n        }\n        return inspect_(value, opts, depth + 1, seen);\n    }\n\n    if (typeof obj === 'function') {\n        var name = nameOf(obj);\n        var keys = arrObjKeys(obj, inspect);\n        return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + keys.join(', ') + ' }' : '');\n    }\n    if (isSymbol(obj)) {\n        var symString = hasShammedSymbols ? String(obj).replace(/^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n        return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n    }\n    if (isElement(obj)) {\n        var s = '<' + String(obj.nodeName).toLowerCase();\n        var attrs = obj.attributes || [];\n        for (var i = 0; i < attrs.length; i++) {\n            s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n        }\n        s += '>';\n        if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n        s += '</' + String(obj.nodeName).toLowerCase() + '>';\n        return s;\n    }\n    if (isArray(obj)) {\n        if (obj.length === 0) { return '[]'; }\n        var xs = arrObjKeys(obj, inspect);\n        if (indent && !singleLineValues(xs)) {\n            return '[' + indentedJoin(xs, indent) + ']';\n        }\n        return '[ ' + xs.join(', ') + ' ]';\n    }\n    if (isError(obj)) {\n        var parts = arrObjKeys(obj, inspect);\n        if (parts.length === 0) { return '[' + String(obj) + ']'; }\n        return '{ [' + String(obj) + '] ' + parts.join(', ') + ' }';\n    }\n    if (typeof obj === 'object' && customInspect) {\n        if (inspectSymbol && typeof obj[inspectSymbol] === 'function') {\n            return obj[inspectSymbol]();\n        } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n            return obj.inspect();\n        }\n    }\n    if (isMap(obj)) {\n        var mapParts = [];\n        mapForEach.call(obj, function (value, key) {\n            mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n        });\n        return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n    }\n    if (isSet(obj)) {\n        var setParts = [];\n        setForEach.call(obj, function (value) {\n            setParts.push(inspect(value, obj));\n        });\n        return collectionOf('Set', setSize.call(obj), setParts, indent);\n    }\n    if (isWeakMap(obj)) {\n        return weakCollectionOf('WeakMap');\n    }\n    if (isWeakSet(obj)) {\n        return weakCollectionOf('WeakSet');\n    }\n    if (isWeakRef(obj)) {\n        return weakCollectionOf('WeakRef');\n    }\n    if (isNumber(obj)) {\n        return markBoxed(inspect(Number(obj)));\n    }\n    if (isBigInt(obj)) {\n        return markBoxed(inspect(bigIntValueOf.call(obj)));\n    }\n    if (isBoolean(obj)) {\n        return markBoxed(booleanValueOf.call(obj));\n    }\n    if (isString(obj)) {\n        return markBoxed(inspect(String(obj)));\n    }\n    if (!isDate(obj) && !isRegExp(obj)) {\n        var ys = arrObjKeys(obj, inspect);\n        var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n        var protoTag = obj instanceof Object ? '' : 'null prototype';\n        var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? toStr(obj).slice(8, -1) : protoTag ? 'Object' : '';\n        var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n        var tag = constructorTag + (stringTag || protoTag ? '[' + [].concat(stringTag || [], protoTag || []).join(': ') + '] ' : '');\n        if (ys.length === 0) { return tag + '{}'; }\n        if (indent) {\n            return tag + '{' + indentedJoin(ys, indent) + '}';\n        }\n        return tag + '{ ' + ys.join(', ') + ' }';\n    }\n    return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n    var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n    return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n    return String(s).replace(/\"/g, '&quot;');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n    if (hasShammedSymbols) {\n        return obj && typeof obj === 'object' && obj instanceof Symbol;\n    }\n    if (typeof obj === 'symbol') {\n        return true;\n    }\n    if (!obj || typeof obj !== 'object' || !symToString) {\n        return false;\n    }\n    try {\n        symToString.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isBigInt(obj) {\n    if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n        return false;\n    }\n    try {\n        bigIntValueOf.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n    return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n    return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n    if (f.name) { return f.name; }\n    var m = match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n    if (m) { return m[1]; }\n    return null;\n}\n\nfunction indexOf(xs, x) {\n    if (xs.indexOf) { return xs.indexOf(x); }\n    for (var i = 0, l = xs.length; i < l; i++) {\n        if (xs[i] === x) { return i; }\n    }\n    return -1;\n}\n\nfunction isMap(x) {\n    if (!mapSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        mapSize.call(x);\n        try {\n            setSize.call(x);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof Map; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakMap(x) {\n    if (!weakMapHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakMapHas.call(x, weakMapHas);\n        try {\n            weakSetHas.call(x, weakSetHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakRef(x) {\n    if (!weakRefDeref || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakRefDeref.call(x);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isSet(x) {\n    if (!setSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        setSize.call(x);\n        try {\n            mapSize.call(x);\n        } catch (m) {\n            return true;\n        }\n        return x instanceof Set; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakSet(x) {\n    if (!weakSetHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakSetHas.call(x, weakSetHas);\n        try {\n            weakMapHas.call(x, weakMapHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isElement(x) {\n    if (!x || typeof x !== 'object') { return false; }\n    if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n        return true;\n    }\n    return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n    if (str.length > opts.maxStringLength) {\n        var remaining = str.length - opts.maxStringLength;\n        var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n        return inspectString(str.slice(0, opts.maxStringLength), opts) + trailer;\n    }\n    // eslint-disable-next-line no-control-regex\n    var s = str.replace(/(['\\\\])/g, '\\\\$1').replace(/[\\x00-\\x1f]/g, lowbyte);\n    return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n    var n = c.charCodeAt(0);\n    var x = {\n        8: 'b',\n        9: 't',\n        10: 'n',\n        12: 'f',\n        13: 'r'\n    }[n];\n    if (x) { return '\\\\' + x; }\n    return '\\\\x' + (n < 0x10 ? '0' : '') + n.toString(16).toUpperCase();\n}\n\nfunction markBoxed(str) {\n    return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n    return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n    var joinedEntries = indent ? indentedJoin(entries, indent) : entries.join(', ');\n    return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n    for (var i = 0; i < xs.length; i++) {\n        if (indexOf(xs[i], '\\n') >= 0) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction getIndent(opts, depth) {\n    var baseIndent;\n    if (opts.indent === '\\t') {\n        baseIndent = '\\t';\n    } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n        baseIndent = Array(opts.indent + 1).join(' ');\n    } else {\n        return null;\n    }\n    return {\n        base: baseIndent,\n        prev: Array(depth + 1).join(baseIndent)\n    };\n}\n\nfunction indentedJoin(xs, indent) {\n    if (xs.length === 0) { return ''; }\n    var lineJoiner = '\\n' + indent.prev + indent.base;\n    return lineJoiner + xs.join(',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n    var isArr = isArray(obj);\n    var xs = [];\n    if (isArr) {\n        xs.length = obj.length;\n        for (var i = 0; i < obj.length; i++) {\n            xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n        }\n    }\n    var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n    var symMap;\n    if (hasShammedSymbols) {\n        symMap = {};\n        for (var k = 0; k < syms.length; k++) {\n            symMap['$' + syms[k]] = syms[k];\n        }\n    }\n\n    for (var key in obj) { // eslint-disable-line no-restricted-syntax\n        if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n            // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n            continue; // eslint-disable-line no-restricted-syntax, no-continue\n        } else if ((/[^\\w$]/).test(key)) {\n            xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n        } else {\n            xs.push(key + ': ' + inspect(obj[key], obj));\n        }\n    }\n    if (typeof gOPS === 'function') {\n        for (var j = 0; j < syms.length; j++) {\n            if (isEnumerable.call(obj, syms[j])) {\n                xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n            }\n        }\n    }\n    return xs;\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/object-inspect/index.js?")},"./node_modules/object-inspect/util.inspect.js":
/*!*****************************************************!*\
  !*** ./node_modules/object-inspect/util.inspect.js ***!
  \*****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('module.exports = __webpack_require__(/*! util */ "util").inspect;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/object-inspect/util.inspect.js?')},"./node_modules/object-keys/implementation.js":
/*!****************************************************!*\
  !*** ./node_modules/object-keys/implementation.js ***!
  \****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = __webpack_require__(/*! ./isArguments */ \"./node_modules/object-keys/isArguments.js\"); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/object-keys/implementation.js?")},"./node_modules/object-keys/index.js":
/*!*******************************************!*\
  !*** ./node_modules/object-keys/index.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nvar slice = Array.prototype.slice;\nvar isArgs = __webpack_require__(/*! ./isArguments */ "./node_modules/object-keys/isArguments.js");\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : __webpack_require__(/*! ./implementation */ "./node_modules/object-keys/implementation.js");\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/object-keys/index.js?')},"./node_modules/object-keys/isArguments.js":
/*!*************************************************!*\
  !*** ./node_modules/object-keys/isArguments.js ***!
  \*************************************************/module=>{"use strict";eval("\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/object-keys/isArguments.js?")},"./node_modules/object.entries/implementation.js":
/*!*******************************************************!*\
  !*** ./node_modules/object.entries/implementation.js ***!
  \*******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar RequireObjectCoercible = __webpack_require__(/*! es-abstract/2021/RequireObjectCoercible */ \"./node_modules/es-abstract/2021/RequireObjectCoercible.js\");\nvar callBound = __webpack_require__(/*! call-bind/callBound */ \"./node_modules/call-bind/callBound.js\");\nvar $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');\nvar $push = callBound('Array.prototype.push');\n\nmodule.exports = function entries(O) {\n\tvar obj = RequireObjectCoercible(O);\n\tvar entrys = [];\n\tfor (var key in obj) {\n\t\tif ($isEnumerable(obj, key)) { // checks own-ness as well\n\t\t\t$push(entrys, [key, obj[key]]);\n\t\t}\n\t}\n\treturn entrys;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/object.entries/implementation.js?")},"./node_modules/object.entries/index.js":
/*!**********************************************!*\
  !*** ./node_modules/object.entries/index.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nvar define = __webpack_require__(/*! define-properties */ "./node_modules/define-properties/index.js");\nvar callBind = __webpack_require__(/*! call-bind */ "./node_modules/call-bind/index.js");\n\nvar implementation = __webpack_require__(/*! ./implementation */ "./node_modules/object.entries/implementation.js");\nvar getPolyfill = __webpack_require__(/*! ./polyfill */ "./node_modules/object.entries/polyfill.js");\nvar shim = __webpack_require__(/*! ./shim */ "./node_modules/object.entries/shim.js");\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/object.entries/index.js?')},"./node_modules/object.entries/polyfill.js":
/*!*************************************************!*\
  !*** ./node_modules/object.entries/polyfill.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar implementation = __webpack_require__(/*! ./implementation */ \"./node_modules/object.entries/implementation.js\");\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.entries === 'function' ? Object.entries : implementation;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/object.entries/polyfill.js?")},"./node_modules/object.entries/shim.js":
/*!*********************************************!*\
  !*** ./node_modules/object.entries/shim.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nvar getPolyfill = __webpack_require__(/*! ./polyfill */ "./node_modules/object.entries/polyfill.js");\nvar define = __webpack_require__(/*! define-properties */ "./node_modules/define-properties/index.js");\n\nmodule.exports = function shimEntries() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { entries: polyfill }, {\n\t\tentries: function testEntries() {\n\t\t\treturn Object.entries !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/object.entries/shim.js?')},"./node_modules/oidc-token-hash/lib/index.js":
/*!***************************************************!*\
  !*** ./node_modules/oidc-token-hash/lib/index.js ***!
  \***************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { strict: assert } = __webpack_require__(/*! assert */ \"assert\");\nconst { createHash } = __webpack_require__(/*! crypto */ \"crypto\");\nconst { format } = __webpack_require__(/*! util */ \"util\");\n\nconst shake256 = __webpack_require__(/*! ./shake256 */ \"./node_modules/oidc-token-hash/lib/shake256.js\");\n\nlet encode;\nif (Buffer.isEncoding('base64url')) {\n  encode = (input) => input.toString('base64url');\n} else {\n  const fromBase64 = (base64) => base64.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n  encode = (input) => fromBase64(input.toString('base64'));\n}\n\n/** SPECIFICATION\n * Its (_hash) value is the base64url encoding of the left-most half of the hash of the octets of\n * the ASCII representation of the token value, where the hash algorithm used is the hash algorithm\n * used in the alg Header Parameter of the ID Token's JOSE Header. For instance, if the alg is\n * RS256, hash the token value with SHA-256, then take the left-most 128 bits and base64url encode\n * them. The _hash value is a case sensitive string.\n */\n\n/**\n * @name getHash\n * @api private\n *\n * returns the sha length based off the JOSE alg heade value, defaults to sha256\n *\n * @param token {String} token value to generate the hash from\n * @param alg {String} ID Token JOSE header alg value (i.e. RS256, HS384, ES512, PS256)\n * @param [crv] {String} For EdDSA the curve decides what hash algorithm is used. Required for EdDSA\n */\nfunction getHash(alg, crv) {\n  switch (alg) {\n    case 'HS256':\n    case 'RS256':\n    case 'PS256':\n    case 'ES256':\n    case 'ES256K':\n      return createHash('sha256');\n\n    case 'HS384':\n    case 'RS384':\n    case 'PS384':\n    case 'ES384':\n      return createHash('sha384');\n\n    case 'HS512':\n    case 'RS512':\n    case 'PS512':\n    case 'ES512':\n      return createHash('sha512');\n\n    case 'EdDSA':\n      switch (crv) {\n        case 'Ed25519':\n          return createHash('sha512');\n        case 'Ed448':\n          if (!shake256) {\n            throw new TypeError('Ed448 *_hash calculation is not supported in your Node.js runtime version');\n          }\n\n          return createHash('shake256', { outputLength: 114 });\n        default:\n          throw new TypeError('unrecognized or invalid EdDSA curve provided');\n      }\n\n    default:\n      throw new TypeError('unrecognized or invalid JWS algorithm provided');\n  }\n}\n\nfunction generate(token, alg, crv) {\n  const digest = getHash(alg, crv).update(token).digest();\n  return encode(digest.slice(0, digest.length / 2));\n}\n\nfunction validate(names, actual, source, alg, crv) {\n  if (typeof names.claim !== 'string' || !names.claim) {\n    throw new TypeError('names.claim must be a non-empty string');\n  }\n\n  if (typeof names.source !== 'string' || !names.source) {\n    throw new TypeError('names.source must be a non-empty string');\n  }\n\n  assert(typeof actual === 'string' && actual, `${names.claim} must be a non-empty string`);\n  assert(typeof source === 'string' && source, `${names.source} must be a non-empty string`);\n\n  let expected;\n  let msg;\n  try {\n    expected = generate(source, alg, crv);\n  } catch (err) {\n    msg = format('%s could not be validated (%s)', names.claim, err.message);\n  }\n\n  msg = msg || format('%s mismatch, expected %s, got: %s', names.claim, expected, actual);\n\n  assert.equal(expected, actual, msg);\n}\n\nmodule.exports = {\n  validate,\n  generate,\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/oidc-token-hash/lib/index.js?")},"./node_modules/oidc-token-hash/lib/shake256.js":
/*!******************************************************!*\
  !*** ./node_modules/oidc-token-hash/lib/shake256.js ***!
  \******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const crypto = __webpack_require__(/*! crypto */ \"crypto\");\n\nconst [major, minor] = process.version.substr(1).split('.').map((x) => parseInt(x, 10));\nconst xofOutputLength = major > 12 || (major === 12 && minor >= 8);\nconst shake256 = xofOutputLength && crypto.getHashes().includes('shake256');\n\nmodule.exports = shake256;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/oidc-token-hash/lib/shake256.js?")},"./node_modules/on-finished/index.js":
/*!*******************************************!*\
  !*** ./node_modules/on-finished/index.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("/*!\n * on-finished\n * Copyright(c) 2013 Jonathan Ong\n * Copyright(c) 2014 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = onFinished\nmodule.exports.isFinished = isFinished\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar first = __webpack_require__(/*! ee-first */ \"./node_modules/ee-first/index.js\")\n\n/**\n * Variables.\n * @private\n */\n\n/* istanbul ignore next */\nvar defer = typeof setImmediate === 'function'\n  ? setImmediate\n  : function(fn){ process.nextTick(fn.bind.apply(fn, arguments)) }\n\n/**\n * Invoke callback when the response has finished, useful for\n * cleaning up resources afterwards.\n *\n * @param {object} msg\n * @param {function} listener\n * @return {object}\n * @public\n */\n\nfunction onFinished(msg, listener) {\n  if (isFinished(msg) !== false) {\n    defer(listener, null, msg)\n    return msg\n  }\n\n  // attach the listener to the message\n  attachListener(msg, listener)\n\n  return msg\n}\n\n/**\n * Determine if message is already finished.\n *\n * @param {object} msg\n * @return {boolean}\n * @public\n */\n\nfunction isFinished(msg) {\n  var socket = msg.socket\n\n  if (typeof msg.finished === 'boolean') {\n    // OutgoingMessage\n    return Boolean(msg.finished || (socket && !socket.writable))\n  }\n\n  if (typeof msg.complete === 'boolean') {\n    // IncomingMessage\n    return Boolean(msg.upgrade || !socket || !socket.readable || (msg.complete && !msg.readable))\n  }\n\n  // don't know\n  return undefined\n}\n\n/**\n * Attach a finished listener to the message.\n *\n * @param {object} msg\n * @param {function} callback\n * @private\n */\n\nfunction attachFinishedListener(msg, callback) {\n  var eeMsg\n  var eeSocket\n  var finished = false\n\n  function onFinish(error) {\n    eeMsg.cancel()\n    eeSocket.cancel()\n\n    finished = true\n    callback(error)\n  }\n\n  // finished on first message event\n  eeMsg = eeSocket = first([[msg, 'end', 'finish']], onFinish)\n\n  function onSocket(socket) {\n    // remove listener\n    msg.removeListener('socket', onSocket)\n\n    if (finished) return\n    if (eeMsg !== eeSocket) return\n\n    // finished on first socket event\n    eeSocket = first([[socket, 'error', 'close']], onFinish)\n  }\n\n  if (msg.socket) {\n    // socket already assigned\n    onSocket(msg.socket)\n    return\n  }\n\n  // wait for socket to be assigned\n  msg.on('socket', onSocket)\n\n  if (msg.socket === undefined) {\n    // node.js 0.8 patch\n    patchAssignSocket(msg, onSocket)\n  }\n}\n\n/**\n * Attach the listener to the message.\n *\n * @param {object} msg\n * @return {function}\n * @private\n */\n\nfunction attachListener(msg, listener) {\n  var attached = msg.__onFinished\n\n  // create a private single listener with queue\n  if (!attached || !attached.queue) {\n    attached = msg.__onFinished = createListener(msg)\n    attachFinishedListener(msg, attached)\n  }\n\n  attached.queue.push(listener)\n}\n\n/**\n * Create listener on message.\n *\n * @param {object} msg\n * @return {function}\n * @private\n */\n\nfunction createListener(msg) {\n  function listener(err) {\n    if (msg.__onFinished === listener) msg.__onFinished = null\n    if (!listener.queue) return\n\n    var queue = listener.queue\n    listener.queue = null\n\n    for (var i = 0; i < queue.length; i++) {\n      queue[i](err, msg)\n    }\n  }\n\n  listener.queue = []\n\n  return listener\n}\n\n/**\n * Patch ServerResponse.prototype.assignSocket for node.js 0.8.\n *\n * @param {ServerResponse} res\n * @param {function} callback\n * @private\n */\n\nfunction patchAssignSocket(res, callback) {\n  var assignSocket = res.assignSocket\n\n  if (typeof assignSocket !== 'function') return\n\n  // res.on('socket', callback) is broken in 0.8\n  res.assignSocket = function _assignSocket(socket) {\n    assignSocket.call(this, socket)\n    callback(socket)\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/on-finished/index.js?")},"./node_modules/once/once.js":
/*!***********************************!*\
  !*** ./node_modules/once/once.js ***!
  \***********************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var wrappy = __webpack_require__(/*! wrappy */ \"./node_modules/wrappy/wrappy.js\")\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n  Object.defineProperty(Function.prototype, 'once', {\n    value: function () {\n      return once(this)\n    },\n    configurable: true\n  })\n\n  Object.defineProperty(Function.prototype, 'onceStrict', {\n    value: function () {\n      return onceStrict(this)\n    },\n    configurable: true\n  })\n})\n\nfunction once (fn) {\n  var f = function () {\n    if (f.called) return f.value\n    f.called = true\n    return f.value = fn.apply(this, arguments)\n  }\n  f.called = false\n  return f\n}\n\nfunction onceStrict (fn) {\n  var f = function () {\n    if (f.called)\n      throw new Error(f.onceError)\n    f.called = true\n    return f.value = fn.apply(this, arguments)\n  }\n  var name = fn.name || 'Function wrapped with `once`'\n  f.onceError = name + \" shouldn't be called more than once\"\n  f.called = false\n  return f\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/once/once.js?")},"./node_modules/onetime/index.js":
/*!***************************************!*\
  !*** ./node_modules/onetime/index.js ***!
  \***************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nconst mimicFn = __webpack_require__(/*! mimic-fn */ \"./node_modules/mimic-fn/index.js\");\n\nconst calledFunctions = new WeakMap();\n\nconst onetime = (function_, options = {}) => {\n\tif (typeof function_ !== 'function') {\n\t\tthrow new TypeError('Expected a function');\n\t}\n\n\tlet returnValue;\n\tlet callCount = 0;\n\tconst functionName = function_.displayName || function_.name || '<anonymous>';\n\n\tconst onetime = function (...arguments_) {\n\t\tcalledFunctions.set(onetime, ++callCount);\n\n\t\tif (callCount === 1) {\n\t\t\treturnValue = function_.apply(this, arguments_);\n\t\t\tfunction_ = null;\n\t\t} else if (options.throw === true) {\n\t\t\tthrow new Error(`Function \\`${functionName}\\` can only be called once`);\n\t\t}\n\n\t\treturn returnValue;\n\t};\n\n\tmimicFn(onetime, function_);\n\tcalledFunctions.set(onetime, callCount);\n\n\treturn onetime;\n};\n\nmodule.exports = onetime;\n// TODO: Remove this for the next major release\nmodule.exports[\"default\"] = onetime;\n\nmodule.exports.callCount = function_ => {\n\tif (!calledFunctions.has(function_)) {\n\t\tthrow new Error(`The given function \\`${function_.name}\\` is not wrapped by the \\`onetime\\` package`);\n\t}\n\n\treturn calledFunctions.get(function_);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/onetime/index.js?")},"./node_modules/only/index.js":
/*!************************************!*\
  !*** ./node_modules/only/index.js ***!
  \************************************/module=>{eval("\nmodule.exports = function(obj, keys){\n  obj = obj || {};\n  if ('string' == typeof keys) keys = keys.split(/ +/);\n  return keys.reduce(function(ret, key){\n    if (null == obj[key]) return ret;\n    ret[key] = obj[key];\n    return ret;\n  }, {});\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/only/index.js?")},"./node_modules/open/index.js":
/*!************************************!*\
  !*** ./node_modules/open/index.js ***!
  \************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("var __dirname = \"node_modules\\\\open\";\n\nconst {promisify} = __webpack_require__(/*! util */ \"util\");\nconst path = __webpack_require__(/*! path */ \"path\");\nconst childProcess = __webpack_require__(/*! child_process */ \"child_process\");\nconst fs = __webpack_require__(/*! fs */ \"fs\");\nconst url = __webpack_require__(/*! url */ \"url\");\nconst isWsl = __webpack_require__(/*! is-wsl */ \"./node_modules/is-wsl/index.js\");\nconst isDocker = __webpack_require__(/*! is-docker */ \"./node_modules/is-docker/index.js\");\n\nconst pAccess = promisify(fs.access);\nconst pExecFile = promisify(childProcess.execFile);\n\n// Path to included `xdg-open`.\nconst localXdgOpenPath = path.join(__dirname, 'xdg-open');\n\n// Convert a path from WSL format to Windows format:\n// `/mnt/c/Program Files/Example/MyApp.exe` → `C:\\Program Files\\Example\\MyApp.exe`\nconst wslToWindowsPath = async path => {\n\tconst {stdout} = await pExecFile('wslpath', ['-w', path]);\n\treturn stdout.trim();\n};\n\nmodule.exports = async (target, options) => {\n\tif (typeof target !== 'string') {\n\t\tthrow new TypeError('Expected a `target`');\n\t}\n\n\toptions = {\n\t\twait: false,\n\t\tbackground: false,\n\t\turl: false,\n\t\tallowNonzeroExitCode: false,\n\t\t...options\n\t};\n\n\tlet command;\n\tlet appArguments = [];\n\tconst cliArguments = [];\n\tconst childProcessOptions = {};\n\n\tif (Array.isArray(options.app)) {\n\t\tappArguments = options.app.slice(1);\n\t\toptions.app = options.app[0];\n\t}\n\n\t// Encodes the target as if it were an URL. Especially useful to get\n\t// double-quotes through the “double-quotes on Windows caveat”, but it\n\t// can be used on any platform.\n\tif (options.url) {\n\t\ttarget = new url.URL(target).href;\n\n\t\tif (isWsl) {\n\t\t\ttarget = target.replace(/&/g, '^&');\n\t\t}\n\t}\n\n\tif (process.platform === 'darwin') {\n\t\tcommand = 'open';\n\n\t\tif (options.wait) {\n\t\t\tcliArguments.push('--wait-apps');\n\t\t}\n\n\t\tif (options.background) {\n\t\t\tcliArguments.push('--background');\n\t\t}\n\n\t\tif (options.app) {\n\t\t\tcliArguments.push('-a', options.app);\n\t\t}\n\t} else if (process.platform === 'win32' || (isWsl && !isDocker())) {\n\t\tcommand = 'cmd' + (isWsl ? '.exe' : '');\n\t\tcliArguments.push('/s', '/c', 'start', '\"\"', '/b');\n\n\t\tif (!isWsl) {\n\t\t\t// Always quoting target allows for URLs/paths to have spaces and unmarked characters, as `cmd.exe` will\n\t\t\t// interpret them as plain text to be forwarded as one unique argument. Enabling `windowsVerbatimArguments`\n\t\t\t// disables Node.js's default quotes and escapes handling (https://git.io/fjdem).\n\t\t\t// References:\n\t\t\t// - Issues #17, #44, #55, #77, #101, #115\n\t\t\t// - Pull requests: #74, #98\n\t\t\t//\n\t\t\t// As a result, all double-quotes are stripped from the `target` and do not get to your desired destination.\n\t\t\ttarget = `\"${target}\"`;\n\t\t\tchildProcessOptions.windowsVerbatimArguments = true;\n\n\t\t\tif (options.app) {\n\t\t\t\toptions.app = `\"${options.app}\"`;\n\t\t\t}\n\t\t}\n\n\t\tif (options.wait) {\n\t\t\tcliArguments.push('/wait');\n\t\t}\n\n\t\tif (options.app) {\n\t\t\tif (isWsl && options.app.startsWith('/mnt/')) {\n\t\t\t\tconst windowsPath = await wslToWindowsPath(options.app);\n\t\t\t\toptions.app = windowsPath;\n\t\t\t}\n\n\t\t\tcliArguments.push(options.app);\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tcliArguments.push(...appArguments);\n\t\t}\n\t} else {\n\t\tif (options.app) {\n\t\t\tcommand = options.app;\n\t\t} else {\n\t\t\t// When bundled by Webpack, there's no actual package file path and no local `xdg-open`.\n\t\t\tconst isBundled =  false || __dirname === '/';\n\n\t\t\t// Check if local `xdg-open` exists and is executable.\n\t\t\tlet exeLocalXdgOpen = false;\n\t\t\ttry {\n\t\t\t\tawait pAccess(localXdgOpenPath, fs.constants.X_OK);\n\t\t\t\texeLocalXdgOpen = true;\n\t\t\t} catch (_) {}\n\n\t\t\tconst useSystemXdgOpen = process.versions.electron ||\n\t\t\t\tprocess.platform === 'android' || isBundled || !exeLocalXdgOpen;\n\t\t\tcommand = useSystemXdgOpen ? 'xdg-open' : localXdgOpenPath;\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tcliArguments.push(...appArguments);\n\t\t}\n\n\t\tif (!options.wait) {\n\t\t\t// `xdg-open` will block the process unless stdio is ignored\n\t\t\t// and it's detached from the parent even if it's unref'd.\n\t\t\tchildProcessOptions.stdio = 'ignore';\n\t\t\tchildProcessOptions.detached = true;\n\t\t}\n\t}\n\n\tcliArguments.push(target);\n\n\tif (process.platform === 'darwin' && appArguments.length > 0) {\n\t\tcliArguments.push('--args', ...appArguments);\n\t}\n\n\tconst subprocess = childProcess.spawn(command, cliArguments, childProcessOptions);\n\n\tif (options.wait) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tsubprocess.once('error', reject);\n\n\t\t\tsubprocess.once('close', exitCode => {\n\t\t\t\tif (options.allowNonzeroExitCode && exitCode > 0) {\n\t\t\t\t\treject(new Error(`Exited with code ${exitCode}`));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve(subprocess);\n\t\t\t});\n\t\t});\n\t}\n\n\tsubprocess.unref();\n\n\treturn subprocess;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/open/index.js?")},"./node_modules/openid-client/lib/client.js":
/*!**************************************************!*\
  !*** ./node_modules/openid-client/lib/client.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { inspect } = __webpack_require__(/*! util */ \"util\");\nconst stdhttp = __webpack_require__(/*! http */ \"http\");\nconst crypto = __webpack_require__(/*! crypto */ \"crypto\");\nconst { strict: assert } = __webpack_require__(/*! assert */ \"assert\");\nconst querystring = __webpack_require__(/*! querystring */ \"querystring\");\nconst url = __webpack_require__(/*! url */ \"url\");\n\nconst jose = __webpack_require__(/*! jose */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/index.js\");\nconst tokenHash = __webpack_require__(/*! oidc-token-hash */ \"./node_modules/oidc-token-hash/lib/index.js\");\n\nconst isKeyObject = __webpack_require__(/*! ./helpers/is_key_object */ \"./node_modules/openid-client/lib/helpers/is_key_object.js\");\nconst decodeJWT = __webpack_require__(/*! ./helpers/decode_jwt */ \"./node_modules/openid-client/lib/helpers/decode_jwt.js\");\nconst base64url = __webpack_require__(/*! ./helpers/base64url */ \"./node_modules/openid-client/lib/helpers/base64url.js\");\nconst defaults = __webpack_require__(/*! ./helpers/defaults */ \"./node_modules/openid-client/lib/helpers/defaults.js\");\nconst parseWwwAuthenticate = __webpack_require__(/*! ./helpers/www_authenticate_parser */ \"./node_modules/openid-client/lib/helpers/www_authenticate_parser.js\");\nconst { assertSigningAlgValuesSupport, assertIssuerConfiguration } = __webpack_require__(/*! ./helpers/assert */ \"./node_modules/openid-client/lib/helpers/assert.js\");\nconst pick = __webpack_require__(/*! ./helpers/pick */ \"./node_modules/openid-client/lib/helpers/pick.js\");\nconst isPlainObject = __webpack_require__(/*! ./helpers/is_plain_object */ \"./node_modules/openid-client/lib/helpers/is_plain_object.js\");\nconst processResponse = __webpack_require__(/*! ./helpers/process_response */ \"./node_modules/openid-client/lib/helpers/process_response.js\");\nconst TokenSet = __webpack_require__(/*! ./token_set */ \"./node_modules/openid-client/lib/token_set.js\");\nconst { OPError, RPError } = __webpack_require__(/*! ./errors */ \"./node_modules/openid-client/lib/errors.js\");\nconst now = __webpack_require__(/*! ./helpers/unix_timestamp */ \"./node_modules/openid-client/lib/helpers/unix_timestamp.js\");\nconst { random } = __webpack_require__(/*! ./helpers/generators */ \"./node_modules/openid-client/lib/helpers/generators.js\");\nconst request = __webpack_require__(/*! ./helpers/request */ \"./node_modules/openid-client/lib/helpers/request.js\");\nconst { CLOCK_TOLERANCE } = __webpack_require__(/*! ./helpers/consts */ \"./node_modules/openid-client/lib/helpers/consts.js\");\nconst { keystores } = __webpack_require__(/*! ./helpers/weak_cache */ \"./node_modules/openid-client/lib/helpers/weak_cache.js\");\nconst KeyStore = __webpack_require__(/*! ./helpers/keystore */ \"./node_modules/openid-client/lib/helpers/keystore.js\");\nconst clone = __webpack_require__(/*! ./helpers/deep_clone */ \"./node_modules/openid-client/lib/helpers/deep_clone.js\");\nconst { authenticatedPost, resolveResponseType, resolveRedirectUri } = __webpack_require__(/*! ./helpers/client */ \"./node_modules/openid-client/lib/helpers/client.js\");\nconst { queryKeyStore } = __webpack_require__(/*! ./helpers/issuer */ \"./node_modules/openid-client/lib/helpers/issuer.js\");\nconst DeviceFlowHandle = __webpack_require__(/*! ./device_flow_handle */ \"./node_modules/openid-client/lib/device_flow_handle.js\");\n\nconst [major, minor] = process.version\n  .slice(1)\n  .split('.')\n  .map((str) => parseInt(str, 10));\n\nconst rsaPssParams = major >= 17 || (major === 16 && minor >= 9);\nconst retryAttempt = Symbol();\nconst skipNonceCheck = Symbol();\nconst skipMaxAgeCheck = Symbol();\n\nfunction pickCb(input) {\n  return pick(\n    input,\n    'access_token', // OAuth 2.0\n    'code', // OAuth 2.0\n    'error_description', // OAuth 2.0\n    'error_uri', // OAuth 2.0\n    'error', // OAuth 2.0\n    'expires_in', // OAuth 2.0\n    'id_token', // OIDC Core 1.0\n    'iss', // draft-ietf-oauth-iss-auth-resp\n    'response', // FAPI JARM\n    'session_state', // OIDC Session Management\n    'state', // OAuth 2.0\n    'token_type', // OAuth 2.0\n  );\n}\n\nfunction authorizationHeaderValue(token, tokenType = 'Bearer') {\n  return `${tokenType} ${token}`;\n}\n\nfunction verifyPresence(payload, jwt, prop) {\n  if (payload[prop] === undefined) {\n    throw new RPError({\n      message: `missing required JWT property ${prop}`,\n      jwt,\n    });\n  }\n}\n\nfunction authorizationParams(params) {\n  const authParams = {\n    client_id: this.client_id,\n    scope: 'openid',\n    response_type: resolveResponseType.call(this),\n    redirect_uri: resolveRedirectUri.call(this),\n    ...params,\n  };\n\n  Object.entries(authParams).forEach(([key, value]) => {\n    if (value === null || value === undefined) {\n      delete authParams[key];\n    } else if (key === 'claims' && typeof value === 'object') {\n      authParams[key] = JSON.stringify(value);\n    } else if (key === 'resource' && Array.isArray(value)) {\n      authParams[key] = value;\n    } else if (typeof value !== 'string') {\n      authParams[key] = String(value);\n    }\n  });\n\n  return authParams;\n}\n\nfunction getKeystore(jwks) {\n  if (\n    !isPlainObject(jwks) ||\n    !Array.isArray(jwks.keys) ||\n    jwks.keys.some((k) => !isPlainObject(k) || !('kty' in k))\n  ) {\n    throw new TypeError('jwks must be a JSON Web Key Set formatted object');\n  }\n\n  return KeyStore.fromJWKS(jwks, { onlyPrivate: true });\n}\n\n// if an OP doesnt support client_secret_basic but supports client_secret_post, use it instead\n// this is in place to take care of most common pitfalls when first using discovered Issuers without\n// the support for default values defined by Discovery 1.0\nfunction checkBasicSupport(client, properties) {\n  try {\n    const supported = client.issuer.token_endpoint_auth_methods_supported;\n    if (!supported.includes(properties.token_endpoint_auth_method)) {\n      if (supported.includes('client_secret_post')) {\n        properties.token_endpoint_auth_method = 'client_secret_post';\n      }\n    }\n  } catch (err) {}\n}\n\nfunction handleCommonMistakes(client, metadata, properties) {\n  if (!metadata.token_endpoint_auth_method) {\n    // if no explicit value was provided\n    checkBasicSupport(client, properties);\n  }\n\n  // :fp: c'mon people... RTFM\n  if (metadata.redirect_uri) {\n    if (metadata.redirect_uris) {\n      throw new TypeError('provide a redirect_uri or redirect_uris, not both');\n    }\n    properties.redirect_uris = [metadata.redirect_uri];\n    delete properties.redirect_uri;\n  }\n\n  if (metadata.response_type) {\n    if (metadata.response_types) {\n      throw new TypeError('provide a response_type or response_types, not both');\n    }\n    properties.response_types = [metadata.response_type];\n    delete properties.response_type;\n  }\n}\n\nfunction getDefaultsForEndpoint(endpoint, issuer, properties) {\n  if (!issuer[`${endpoint}_endpoint`]) return;\n\n  const tokenEndpointAuthMethod = properties.token_endpoint_auth_method;\n  const tokenEndpointAuthSigningAlg = properties.token_endpoint_auth_signing_alg;\n\n  const eam = `${endpoint}_endpoint_auth_method`;\n  const easa = `${endpoint}_endpoint_auth_signing_alg`;\n\n  if (properties[eam] === undefined && properties[easa] === undefined) {\n    if (tokenEndpointAuthMethod !== undefined) {\n      properties[eam] = tokenEndpointAuthMethod;\n    }\n    if (tokenEndpointAuthSigningAlg !== undefined) {\n      properties[easa] = tokenEndpointAuthSigningAlg;\n    }\n  }\n}\n\nclass BaseClient {\n  #metadata;\n  #issuer;\n  #aadIssValidation;\n  #additionalAuthorizedParties;\n  constructor(issuer, aadIssValidation, metadata = {}, jwks, options) {\n    this.#metadata = new Map();\n    this.#issuer = issuer;\n    this.#aadIssValidation = aadIssValidation;\n\n    if (typeof metadata.client_id !== 'string' || !metadata.client_id) {\n      throw new TypeError('client_id is required');\n    }\n\n    const properties = {\n      grant_types: ['authorization_code'],\n      id_token_signed_response_alg: 'RS256',\n      authorization_signed_response_alg: 'RS256',\n      response_types: ['code'],\n      token_endpoint_auth_method: 'client_secret_basic',\n      ...(this.fapi()\n        ? {\n            grant_types: ['authorization_code', 'implicit'],\n            id_token_signed_response_alg: 'PS256',\n            authorization_signed_response_alg: 'PS256',\n            response_types: ['code id_token'],\n            tls_client_certificate_bound_access_tokens: true,\n            token_endpoint_auth_method: undefined,\n          }\n        : undefined),\n      ...metadata,\n    };\n\n    if (this.fapi()) {\n      switch (properties.token_endpoint_auth_method) {\n        case 'self_signed_tls_client_auth':\n        case 'tls_client_auth':\n          break;\n        case 'private_key_jwt':\n          if (!jwks) {\n            throw new TypeError('jwks is required');\n          }\n          break;\n        case undefined:\n          throw new TypeError('token_endpoint_auth_method is required');\n        default:\n          throw new TypeError('invalid or unsupported token_endpoint_auth_method');\n      }\n    }\n\n    handleCommonMistakes(this, metadata, properties);\n\n    assertSigningAlgValuesSupport('token', this.issuer, properties);\n    ['introspection', 'revocation'].forEach((endpoint) => {\n      getDefaultsForEndpoint(endpoint, this.issuer, properties);\n      assertSigningAlgValuesSupport(endpoint, this.issuer, properties);\n    });\n\n    Object.entries(properties).forEach(([key, value]) => {\n      this.#metadata.set(key, value);\n      if (!this[key]) {\n        Object.defineProperty(this, key, {\n          get() {\n            return this.#metadata.get(key);\n          },\n          enumerable: true,\n        });\n      }\n    });\n\n    if (jwks !== undefined) {\n      const keystore = getKeystore.call(this, jwks);\n      keystores.set(this, keystore);\n    }\n\n    if (options != null && options.additionalAuthorizedParties) {\n      this.#additionalAuthorizedParties = clone(options.additionalAuthorizedParties);\n    }\n\n    this[CLOCK_TOLERANCE] = 0;\n  }\n\n  authorizationUrl(params = {}) {\n    if (!isPlainObject(params)) {\n      throw new TypeError('params must be a plain object');\n    }\n    assertIssuerConfiguration(this.issuer, 'authorization_endpoint');\n    const target = url.parse(this.issuer.authorization_endpoint, true);\n    target.search = null;\n    target.query = {\n      ...target.query,\n      ...authorizationParams.call(this, params),\n    };\n    return url.format(target);\n  }\n\n  authorizationPost(params = {}) {\n    if (!isPlainObject(params)) {\n      throw new TypeError('params must be a plain object');\n    }\n    const inputs = authorizationParams.call(this, params);\n    const formInputs = Object.keys(inputs)\n      .map((name) => `<input type=\"hidden\" name=\"${name}\" value=\"${inputs[name]}\"/>`)\n      .join('\\n');\n\n    return `<!DOCTYPE html>\n<head>\n<title>Requesting Authorization</title>\n</head>\n<body onload=\"javascript:document.forms[0].submit()\">\n<form method=\"post\" action=\"${this.issuer.authorization_endpoint}\">\n  ${formInputs}\n</form>\n</body>\n</html>`;\n  }\n\n  endSessionUrl(params = {}) {\n    assertIssuerConfiguration(this.issuer, 'end_session_endpoint');\n\n    const { 0: postLogout, length } = this.post_logout_redirect_uris || [];\n\n    const { post_logout_redirect_uri = length === 1 ? postLogout : undefined } = params;\n\n    let hint = params.id_token_hint;\n    if (hint instanceof TokenSet) {\n      if (!hint.id_token) {\n        throw new TypeError('id_token not present in TokenSet');\n      }\n      hint = hint.id_token;\n    }\n\n    const target = url.parse(this.issuer.end_session_endpoint, true);\n    target.search = null;\n    target.query = {\n      ...params,\n      ...target.query,\n      ...{\n        post_logout_redirect_uri,\n        id_token_hint: hint,\n      },\n    };\n\n    Object.entries(target.query).forEach(([key, value]) => {\n      if (value === null || value === undefined) {\n        delete target.query[key];\n      }\n    });\n\n    return url.format(target);\n  }\n\n  callbackParams(input) {\n    const isIncomingMessage =\n      input instanceof stdhttp.IncomingMessage || (input && input.method && input.url);\n    const isString = typeof input === 'string';\n\n    if (!isString && !isIncomingMessage) {\n      throw new TypeError(\n        '#callbackParams only accepts string urls, http.IncomingMessage or a lookalike',\n      );\n    }\n    if (isIncomingMessage) {\n      switch (input.method) {\n        case 'GET':\n          return pickCb(url.parse(input.url, true).query);\n        case 'POST':\n          if (input.body === undefined) {\n            throw new TypeError(\n              'incoming message body missing, include a body parser prior to this method call',\n            );\n          }\n          switch (typeof input.body) {\n            case 'object':\n            case 'string':\n              if (Buffer.isBuffer(input.body)) {\n                return pickCb(querystring.parse(input.body.toString('utf-8')));\n              }\n              if (typeof input.body === 'string') {\n                return pickCb(querystring.parse(input.body));\n              }\n\n              return pickCb(input.body);\n            default:\n              throw new TypeError('invalid IncomingMessage body object');\n          }\n        default:\n          throw new TypeError('invalid IncomingMessage method');\n      }\n    } else {\n      return pickCb(url.parse(input, true).query);\n    }\n  }\n\n  async callback(\n    redirectUri,\n    parameters,\n    checks = {},\n    { exchangeBody, clientAssertionPayload, DPoP } = {},\n  ) {\n    let params = pickCb(parameters);\n\n    if (checks.jarm && !('response' in parameters)) {\n      throw new RPError({\n        message: 'expected a JARM response',\n        checks,\n        params,\n      });\n    } else if ('response' in parameters) {\n      const decrypted = await this.decryptJARM(params.response);\n      params = await this.validateJARM(decrypted);\n    }\n\n    if (this.default_max_age && !checks.max_age) {\n      checks.max_age = this.default_max_age;\n    }\n\n    if (params.state && !checks.state) {\n      throw new TypeError('checks.state argument is missing');\n    }\n\n    if (!params.state && checks.state) {\n      throw new RPError({\n        message: 'state missing from the response',\n        checks,\n        params,\n      });\n    }\n\n    if (checks.state !== params.state) {\n      throw new RPError({\n        printf: ['state mismatch, expected %s, got: %s', checks.state, params.state],\n        checks,\n        params,\n      });\n    }\n\n    if ('iss' in params) {\n      assertIssuerConfiguration(this.issuer, 'issuer');\n      if (params.iss !== this.issuer.issuer) {\n        throw new RPError({\n          printf: ['iss mismatch, expected %s, got: %s', this.issuer.issuer, params.iss],\n          params,\n        });\n      }\n    } else if (\n      this.issuer.authorization_response_iss_parameter_supported &&\n      !('id_token' in params) &&\n      !('response' in parameters)\n    ) {\n      throw new RPError({\n        message: 'iss missing from the response',\n        params,\n      });\n    }\n\n    if (params.error) {\n      throw new OPError(params);\n    }\n\n    const RESPONSE_TYPE_REQUIRED_PARAMS = {\n      code: ['code'],\n      id_token: ['id_token'],\n      token: ['access_token', 'token_type'],\n    };\n\n    if (checks.response_type) {\n      for (const type of checks.response_type.split(' ')) {\n        if (type === 'none') {\n          if (params.code || params.id_token || params.access_token) {\n            throw new RPError({\n              message: 'unexpected params encountered for \"none\" response',\n              checks,\n              params,\n            });\n          }\n        } else {\n          for (const param of RESPONSE_TYPE_REQUIRED_PARAMS[type]) {\n            if (!params[param]) {\n              throw new RPError({\n                message: `${param} missing from response`,\n                checks,\n                params,\n              });\n            }\n          }\n        }\n      }\n    }\n\n    if (params.id_token) {\n      const tokenset = new TokenSet(params);\n      await this.decryptIdToken(tokenset);\n      await this.validateIdToken(\n        tokenset,\n        checks.nonce,\n        'authorization',\n        checks.max_age,\n        checks.state,\n      );\n\n      if (!params.code) {\n        return tokenset;\n      }\n    }\n\n    if (params.code) {\n      const tokenset = await this.grant(\n        {\n          ...exchangeBody,\n          grant_type: 'authorization_code',\n          code: params.code,\n          redirect_uri: redirectUri,\n          code_verifier: checks.code_verifier,\n        },\n        { clientAssertionPayload, DPoP },\n      );\n\n      await this.decryptIdToken(tokenset);\n      await this.validateIdToken(tokenset, checks.nonce, 'token', checks.max_age);\n\n      if (params.session_state) {\n        tokenset.session_state = params.session_state;\n      }\n\n      return tokenset;\n    }\n\n    return new TokenSet(params);\n  }\n\n  async oauthCallback(\n    redirectUri,\n    parameters,\n    checks = {},\n    { exchangeBody, clientAssertionPayload, DPoP } = {},\n  ) {\n    let params = pickCb(parameters);\n\n    if (checks.jarm && !('response' in parameters)) {\n      throw new RPError({\n        message: 'expected a JARM response',\n        checks,\n        params,\n      });\n    } else if ('response' in parameters) {\n      const decrypted = await this.decryptJARM(params.response);\n      params = await this.validateJARM(decrypted);\n    }\n\n    if (params.state && !checks.state) {\n      throw new TypeError('checks.state argument is missing');\n    }\n\n    if (!params.state && checks.state) {\n      throw new RPError({\n        message: 'state missing from the response',\n        checks,\n        params,\n      });\n    }\n\n    if (checks.state !== params.state) {\n      throw new RPError({\n        printf: ['state mismatch, expected %s, got: %s', checks.state, params.state],\n        checks,\n        params,\n      });\n    }\n\n    if ('iss' in params) {\n      assertIssuerConfiguration(this.issuer, 'issuer');\n      if (params.iss !== this.issuer.issuer) {\n        throw new RPError({\n          printf: ['iss mismatch, expected %s, got: %s', this.issuer.issuer, params.iss],\n          params,\n        });\n      }\n    } else if (\n      this.issuer.authorization_response_iss_parameter_supported &&\n      !('id_token' in params) &&\n      !('response' in parameters)\n    ) {\n      throw new RPError({\n        message: 'iss missing from the response',\n        params,\n      });\n    }\n\n    if (params.error) {\n      throw new OPError(params);\n    }\n\n    if ('id_token' in params) {\n      throw new RPError({\n        message:\n          'id_token detected in the response, you must use client.callback() instead of client.oauthCallback()',\n        params,\n      });\n    }\n\n    const RESPONSE_TYPE_REQUIRED_PARAMS = {\n      code: ['code'],\n      token: ['access_token', 'token_type'],\n    };\n\n    if (checks.response_type) {\n      for (const type of checks.response_type.split(' ')) {\n        if (type === 'none') {\n          if (params.code || params.id_token || params.access_token) {\n            throw new RPError({\n              message: 'unexpected params encountered for \"none\" response',\n              checks,\n              params,\n            });\n          }\n        }\n\n        if (RESPONSE_TYPE_REQUIRED_PARAMS[type]) {\n          for (const param of RESPONSE_TYPE_REQUIRED_PARAMS[type]) {\n            if (!params[param]) {\n              throw new RPError({\n                message: `${param} missing from response`,\n                checks,\n                params,\n              });\n            }\n          }\n        }\n      }\n    }\n\n    if (params.code) {\n      const tokenset = await this.grant(\n        {\n          ...exchangeBody,\n          grant_type: 'authorization_code',\n          code: params.code,\n          redirect_uri: redirectUri,\n          code_verifier: checks.code_verifier,\n        },\n        { clientAssertionPayload, DPoP },\n      );\n\n      if ('id_token' in tokenset) {\n        throw new RPError({\n          message:\n            'id_token detected in the response, you must use client.callback() instead of client.oauthCallback()',\n          params,\n        });\n      }\n\n      return tokenset;\n    }\n\n    return new TokenSet(params);\n  }\n\n  async decryptIdToken(token) {\n    if (!this.id_token_encrypted_response_alg) {\n      return token;\n    }\n\n    let idToken = token;\n\n    if (idToken instanceof TokenSet) {\n      if (!idToken.id_token) {\n        throw new TypeError('id_token not present in TokenSet');\n      }\n      idToken = idToken.id_token;\n    }\n\n    const expectedAlg = this.id_token_encrypted_response_alg;\n    const expectedEnc = this.id_token_encrypted_response_enc;\n\n    const result = await this.decryptJWE(idToken, expectedAlg, expectedEnc);\n\n    if (token instanceof TokenSet) {\n      token.id_token = result;\n      return token;\n    }\n\n    return result;\n  }\n\n  async validateJWTUserinfo(body) {\n    const expectedAlg = this.userinfo_signed_response_alg;\n\n    return this.validateJWT(body, expectedAlg, []);\n  }\n\n  async decryptJARM(response) {\n    if (!this.authorization_encrypted_response_alg) {\n      return response;\n    }\n\n    const expectedAlg = this.authorization_encrypted_response_alg;\n    const expectedEnc = this.authorization_encrypted_response_enc;\n\n    return this.decryptJWE(response, expectedAlg, expectedEnc);\n  }\n\n  async decryptJWTUserinfo(body) {\n    if (!this.userinfo_encrypted_response_alg) {\n      return body;\n    }\n\n    const expectedAlg = this.userinfo_encrypted_response_alg;\n    const expectedEnc = this.userinfo_encrypted_response_enc;\n\n    return this.decryptJWE(body, expectedAlg, expectedEnc);\n  }\n\n  async decryptJWE(jwe, expectedAlg, expectedEnc = 'A128CBC-HS256') {\n    const header = JSON.parse(base64url.decode(jwe.split('.')[0]));\n\n    if (header.alg !== expectedAlg) {\n      throw new RPError({\n        printf: ['unexpected JWE alg received, expected %s, got: %s', expectedAlg, header.alg],\n        jwt: jwe,\n      });\n    }\n\n    if (header.enc !== expectedEnc) {\n      throw new RPError({\n        printf: ['unexpected JWE enc received, expected %s, got: %s', expectedEnc, header.enc],\n        jwt: jwe,\n      });\n    }\n\n    const getPlaintext = (result) => new TextDecoder().decode(result.plaintext);\n    let plaintext;\n    if (expectedAlg.match(/^(?:RSA|ECDH)/)) {\n      const keystore = await keystores.get(this);\n\n      for (const { keyObject: key } of keystore.all({\n        ...jose.decodeProtectedHeader(jwe),\n        use: 'enc',\n      })) {\n        plaintext = await jose.compactDecrypt(jwe, key).then(getPlaintext, () => {});\n        if (plaintext) break;\n      }\n    } else {\n      plaintext = await jose\n        .compactDecrypt(jwe, this.secretForAlg(expectedAlg === 'dir' ? expectedEnc : expectedAlg))\n        .then(getPlaintext, () => {});\n    }\n\n    if (!plaintext) {\n      throw new RPError({\n        message: 'failed to decrypt JWE',\n        jwt: jwe,\n      });\n    }\n    return plaintext;\n  }\n\n  async validateIdToken(tokenSet, nonce, returnedBy, maxAge, state) {\n    let idToken = tokenSet;\n\n    const expectedAlg = this.id_token_signed_response_alg;\n\n    const isTokenSet = idToken instanceof TokenSet;\n\n    if (isTokenSet) {\n      if (!idToken.id_token) {\n        throw new TypeError('id_token not present in TokenSet');\n      }\n      idToken = idToken.id_token;\n    }\n\n    idToken = String(idToken);\n\n    const timestamp = now();\n    const { protected: header, payload, key } = await this.validateJWT(idToken, expectedAlg);\n\n    if (typeof maxAge === 'number' || (maxAge !== skipMaxAgeCheck && this.require_auth_time)) {\n      if (!payload.auth_time) {\n        throw new RPError({\n          message: 'missing required JWT property auth_time',\n          jwt: idToken,\n        });\n      }\n      if (typeof payload.auth_time !== 'number') {\n        throw new RPError({\n          message: 'JWT auth_time claim must be a JSON numeric value',\n          jwt: idToken,\n        });\n      }\n    }\n\n    if (\n      typeof maxAge === 'number' &&\n      payload.auth_time + maxAge < timestamp - this[CLOCK_TOLERANCE]\n    ) {\n      throw new RPError({\n        printf: [\n          'too much time has elapsed since the last End-User authentication, max_age %i, auth_time: %i, now %i',\n          maxAge,\n          payload.auth_time,\n          timestamp - this[CLOCK_TOLERANCE],\n        ],\n        now: timestamp,\n        tolerance: this[CLOCK_TOLERANCE],\n        auth_time: payload.auth_time,\n        jwt: idToken,\n      });\n    }\n\n    if (\n      nonce !== skipNonceCheck &&\n      (payload.nonce || nonce !== undefined) &&\n      payload.nonce !== nonce\n    ) {\n      throw new RPError({\n        printf: ['nonce mismatch, expected %s, got: %s', nonce, payload.nonce],\n        jwt: idToken,\n      });\n    }\n\n    if (returnedBy === 'authorization') {\n      if (!payload.at_hash && tokenSet.access_token) {\n        throw new RPError({\n          message: 'missing required property at_hash',\n          jwt: idToken,\n        });\n      }\n\n      if (!payload.c_hash && tokenSet.code) {\n        throw new RPError({\n          message: 'missing required property c_hash',\n          jwt: idToken,\n        });\n      }\n\n      if (this.fapi()) {\n        if (!payload.s_hash && (tokenSet.state || state)) {\n          throw new RPError({\n            message: 'missing required property s_hash',\n            jwt: idToken,\n          });\n        }\n      }\n\n      if (payload.s_hash) {\n        if (!state) {\n          throw new TypeError('cannot verify s_hash, \"checks.state\" property not provided');\n        }\n\n        try {\n          tokenHash.validate(\n            { claim: 's_hash', source: 'state' },\n            payload.s_hash,\n            state,\n            header.alg,\n            key.jwk && key.jwk.crv,\n          );\n        } catch (err) {\n          throw new RPError({ message: err.message, jwt: idToken });\n        }\n      }\n    }\n\n    if (this.fapi() && payload.iat < timestamp - 3600) {\n      throw new RPError({\n        printf: ['JWT issued too far in the past, now %i, iat %i', timestamp, payload.iat],\n        now: timestamp,\n        tolerance: this[CLOCK_TOLERANCE],\n        iat: payload.iat,\n        jwt: idToken,\n      });\n    }\n\n    if (tokenSet.access_token && payload.at_hash !== undefined) {\n      try {\n        tokenHash.validate(\n          { claim: 'at_hash', source: 'access_token' },\n          payload.at_hash,\n          tokenSet.access_token,\n          header.alg,\n          key.jwk && key.jwk.crv,\n        );\n      } catch (err) {\n        throw new RPError({ message: err.message, jwt: idToken });\n      }\n    }\n\n    if (tokenSet.code && payload.c_hash !== undefined) {\n      try {\n        tokenHash.validate(\n          { claim: 'c_hash', source: 'code' },\n          payload.c_hash,\n          tokenSet.code,\n          header.alg,\n          key.jwk && key.jwk.crv,\n        );\n      } catch (err) {\n        throw new RPError({ message: err.message, jwt: idToken });\n      }\n    }\n\n    return tokenSet;\n  }\n\n  async validateJWT(jwt, expectedAlg, required = ['iss', 'sub', 'aud', 'exp', 'iat']) {\n    const isSelfIssued = this.issuer.issuer === 'https://self-issued.me';\n    const timestamp = now();\n    let header;\n    let payload;\n    try {\n      ({ header, payload } = decodeJWT(jwt, { complete: true }));\n    } catch (err) {\n      throw new RPError({\n        printf: ['failed to decode JWT (%s: %s)', err.name, err.message],\n        jwt,\n      });\n    }\n\n    if (header.alg !== expectedAlg) {\n      throw new RPError({\n        printf: ['unexpected JWT alg received, expected %s, got: %s', expectedAlg, header.alg],\n        jwt,\n      });\n    }\n\n    if (isSelfIssued) {\n      required = [...required, 'sub_jwk'];\n    }\n\n    required.forEach(verifyPresence.bind(undefined, payload, jwt));\n\n    if (payload.iss !== undefined) {\n      let expectedIss = this.issuer.issuer;\n\n      if (this.#aadIssValidation) {\n        expectedIss = this.issuer.issuer.replace('{tenantid}', payload.tid);\n      }\n\n      if (payload.iss !== expectedIss) {\n        throw new RPError({\n          printf: ['unexpected iss value, expected %s, got: %s', expectedIss, payload.iss],\n          jwt,\n        });\n      }\n    }\n\n    if (payload.iat !== undefined) {\n      if (typeof payload.iat !== 'number') {\n        throw new RPError({\n          message: 'JWT iat claim must be a JSON numeric value',\n          jwt,\n        });\n      }\n    }\n\n    if (payload.nbf !== undefined) {\n      if (typeof payload.nbf !== 'number') {\n        throw new RPError({\n          message: 'JWT nbf claim must be a JSON numeric value',\n          jwt,\n        });\n      }\n      if (payload.nbf > timestamp + this[CLOCK_TOLERANCE]) {\n        throw new RPError({\n          printf: [\n            'JWT not active yet, now %i, nbf %i',\n            timestamp + this[CLOCK_TOLERANCE],\n            payload.nbf,\n          ],\n          now: timestamp,\n          tolerance: this[CLOCK_TOLERANCE],\n          nbf: payload.nbf,\n          jwt,\n        });\n      }\n    }\n\n    if (payload.exp !== undefined) {\n      if (typeof payload.exp !== 'number') {\n        throw new RPError({\n          message: 'JWT exp claim must be a JSON numeric value',\n          jwt,\n        });\n      }\n      if (timestamp - this[CLOCK_TOLERANCE] >= payload.exp) {\n        throw new RPError({\n          printf: ['JWT expired, now %i, exp %i', timestamp - this[CLOCK_TOLERANCE], payload.exp],\n          now: timestamp,\n          tolerance: this[CLOCK_TOLERANCE],\n          exp: payload.exp,\n          jwt,\n        });\n      }\n    }\n\n    if (payload.aud !== undefined) {\n      if (Array.isArray(payload.aud)) {\n        if (payload.aud.length > 1 && !payload.azp) {\n          throw new RPError({\n            message: 'missing required JWT property azp',\n            jwt,\n          });\n        }\n\n        if (!payload.aud.includes(this.client_id)) {\n          throw new RPError({\n            printf: [\n              'aud is missing the client_id, expected %s to be included in %j',\n              this.client_id,\n              payload.aud,\n            ],\n            jwt,\n          });\n        }\n      } else if (payload.aud !== this.client_id) {\n        throw new RPError({\n          printf: ['aud mismatch, expected %s, got: %s', this.client_id, payload.aud],\n          jwt,\n        });\n      }\n    }\n\n    if (payload.azp !== undefined) {\n      let additionalAuthorizedParties = this.#additionalAuthorizedParties;\n\n      if (typeof additionalAuthorizedParties === 'string') {\n        additionalAuthorizedParties = [this.client_id, additionalAuthorizedParties];\n      } else if (Array.isArray(additionalAuthorizedParties)) {\n        additionalAuthorizedParties = [this.client_id, ...additionalAuthorizedParties];\n      } else {\n        additionalAuthorizedParties = [this.client_id];\n      }\n\n      if (!additionalAuthorizedParties.includes(payload.azp)) {\n        throw new RPError({\n          printf: ['azp mismatch, got: %s', payload.azp],\n          jwt,\n        });\n      }\n    }\n\n    let keys;\n\n    if (isSelfIssued) {\n      try {\n        assert(isPlainObject(payload.sub_jwk));\n        const key = await jose.importJWK(payload.sub_jwk, header.alg);\n        assert.equal(key.type, 'public');\n        keys = [{ keyObject: key }];\n      } catch (err) {\n        throw new RPError({\n          message: 'failed to use sub_jwk claim as an asymmetric JSON Web Key',\n          jwt,\n        });\n      }\n      if ((await jose.calculateJwkThumbprint(payload.sub_jwk)) !== payload.sub) {\n        throw new RPError({\n          message: 'failed to match the subject with sub_jwk',\n          jwt,\n        });\n      }\n    } else if (header.alg.startsWith('HS')) {\n      keys = [this.secretForAlg(header.alg)];\n    } else if (header.alg !== 'none') {\n      keys = await queryKeyStore.call(this.issuer, { ...header, use: 'sig' });\n    }\n\n    if (!keys && header.alg === 'none') {\n      return { protected: header, payload };\n    }\n\n    for (const key of keys) {\n      const verified = await jose\n        .compactVerify(jwt, key instanceof Uint8Array ? key : key.keyObject)\n        .catch(() => {});\n      if (verified) {\n        return {\n          payload,\n          protected: verified.protectedHeader,\n          key,\n        };\n      }\n    }\n\n    throw new RPError({\n      message: 'failed to validate JWT signature',\n      jwt,\n    });\n  }\n\n  async refresh(refreshToken, { exchangeBody, clientAssertionPayload, DPoP } = {}) {\n    let token = refreshToken;\n\n    if (token instanceof TokenSet) {\n      if (!token.refresh_token) {\n        throw new TypeError('refresh_token not present in TokenSet');\n      }\n      token = token.refresh_token;\n    }\n\n    const tokenset = await this.grant(\n      {\n        ...exchangeBody,\n        grant_type: 'refresh_token',\n        refresh_token: String(token),\n      },\n      { clientAssertionPayload, DPoP },\n    );\n\n    if (tokenset.id_token) {\n      await this.decryptIdToken(tokenset);\n      await this.validateIdToken(tokenset, skipNonceCheck, 'token', skipMaxAgeCheck);\n\n      if (refreshToken instanceof TokenSet && refreshToken.id_token) {\n        const expectedSub = refreshToken.claims().sub;\n        const actualSub = tokenset.claims().sub;\n        if (actualSub !== expectedSub) {\n          throw new RPError({\n            printf: ['sub mismatch, expected %s, got: %s', expectedSub, actualSub],\n            jwt: tokenset.id_token,\n          });\n        }\n      }\n    }\n\n    return tokenset;\n  }\n\n  async requestResource(\n    resourceUrl,\n    accessToken,\n    {\n      method,\n      headers,\n      body,\n      DPoP,\n      tokenType = DPoP\n        ? 'DPoP'\n        : accessToken instanceof TokenSet\n        ? accessToken.token_type\n        : 'Bearer',\n    } = {},\n    retry,\n  ) {\n    if (accessToken instanceof TokenSet) {\n      if (!accessToken.access_token) {\n        throw new TypeError('access_token not present in TokenSet');\n      }\n      accessToken = accessToken.access_token;\n    }\n\n    if (!accessToken) {\n      throw new TypeError('no access token provided');\n    } else if (typeof accessToken !== 'string') {\n      throw new TypeError('invalid access token provided');\n    }\n\n    const requestOpts = {\n      headers: {\n        Authorization: authorizationHeaderValue(accessToken, tokenType),\n        ...headers,\n      },\n      body,\n    };\n\n    const mTLS = !!this.tls_client_certificate_bound_access_tokens;\n\n    const response = await request.call(\n      this,\n      {\n        ...requestOpts,\n        responseType: 'buffer',\n        method,\n        url: resourceUrl,\n      },\n      { accessToken, mTLS, DPoP },\n    );\n\n    const wwwAuthenticate = response.headers['www-authenticate'];\n    if (\n      retry !== retryAttempt &&\n      wwwAuthenticate &&\n      wwwAuthenticate.toLowerCase().startsWith('dpop ') &&\n      parseWwwAuthenticate(wwwAuthenticate).error === 'use_dpop_nonce'\n    ) {\n      return this.requestResource(resourceUrl, accessToken, {\n        method,\n        headers,\n        body,\n        DPoP,\n        tokenType,\n      });\n    }\n\n    return response;\n  }\n\n  async userinfo(accessToken, { method = 'GET', via = 'header', tokenType, params, DPoP } = {}) {\n    assertIssuerConfiguration(this.issuer, 'userinfo_endpoint');\n    const options = {\n      tokenType,\n      method: String(method).toUpperCase(),\n      DPoP,\n    };\n\n    if (options.method !== 'GET' && options.method !== 'POST') {\n      throw new TypeError('#userinfo() method can only be POST or a GET');\n    }\n\n    if (via === 'body' && options.method !== 'POST') {\n      throw new TypeError('can only send body on POST');\n    }\n\n    const jwt = !!(this.userinfo_signed_response_alg || this.userinfo_encrypted_response_alg);\n\n    if (jwt) {\n      options.headers = { Accept: 'application/jwt' };\n    } else {\n      options.headers = { Accept: 'application/json' };\n    }\n    const mTLS = !!this.tls_client_certificate_bound_access_tokens;\n\n    let targetUrl;\n    if (mTLS && this.issuer.mtls_endpoint_aliases) {\n      targetUrl = this.issuer.mtls_endpoint_aliases.userinfo_endpoint;\n    }\n\n    targetUrl = new url.URL(targetUrl || this.issuer.userinfo_endpoint);\n\n    if (via === 'body') {\n      options.headers.Authorization = undefined;\n      options.headers['Content-Type'] = 'application/x-www-form-urlencoded';\n      options.body = new url.URLSearchParams();\n      options.body.append(\n        'access_token',\n        accessToken instanceof TokenSet ? accessToken.access_token : accessToken,\n      );\n    }\n\n    // handle additional parameters, GET via querystring, POST via urlencoded body\n    if (params) {\n      if (options.method === 'GET') {\n        Object.entries(params).forEach(([key, value]) => {\n          targetUrl.searchParams.append(key, value);\n        });\n      } else if (options.body) {\n        // POST && via body\n        Object.entries(params).forEach(([key, value]) => {\n          options.body.append(key, value);\n        });\n      } else {\n        // POST && via header\n        options.body = new url.URLSearchParams();\n        options.headers['Content-Type'] = 'application/x-www-form-urlencoded';\n        Object.entries(params).forEach(([key, value]) => {\n          options.body.append(key, value);\n        });\n      }\n    }\n\n    if (options.body) {\n      options.body = options.body.toString();\n    }\n\n    const response = await this.requestResource(targetUrl, accessToken, options);\n\n    let parsed = processResponse(response, { bearer: true });\n\n    if (jwt) {\n      if (!/^application\\/jwt/.test(response.headers['content-type'])) {\n        throw new RPError({\n          message: 'expected application/jwt response from the userinfo_endpoint',\n          response,\n        });\n      }\n\n      const body = response.body.toString();\n      const userinfo = await this.decryptJWTUserinfo(body);\n      if (!this.userinfo_signed_response_alg) {\n        try {\n          parsed = JSON.parse(userinfo);\n          assert(isPlainObject(parsed));\n        } catch (err) {\n          throw new RPError({\n            message: 'failed to parse userinfo JWE payload as JSON',\n            jwt: userinfo,\n          });\n        }\n      } else {\n        ({ payload: parsed } = await this.validateJWTUserinfo(userinfo));\n      }\n    } else {\n      try {\n        parsed = JSON.parse(response.body);\n      } catch (err) {\n        Object.defineProperty(err, 'response', { value: response });\n        throw err;\n      }\n    }\n\n    if (accessToken instanceof TokenSet && accessToken.id_token) {\n      const expectedSub = accessToken.claims().sub;\n      if (parsed.sub !== expectedSub) {\n        throw new RPError({\n          printf: ['userinfo sub mismatch, expected %s, got: %s', expectedSub, parsed.sub],\n          body: parsed,\n          jwt: accessToken.id_token,\n        });\n      }\n    }\n\n    return parsed;\n  }\n\n  encryptionSecret(len) {\n    const hash = len <= 256 ? 'sha256' : len <= 384 ? 'sha384' : len <= 512 ? 'sha512' : false;\n    if (!hash) {\n      throw new Error('unsupported symmetric encryption key derivation');\n    }\n\n    return crypto\n      .createHash(hash)\n      .update(this.client_secret)\n      .digest()\n      .slice(0, len / 8);\n  }\n\n  secretForAlg(alg) {\n    if (!this.client_secret) {\n      throw new TypeError('client_secret is required');\n    }\n\n    if (/^A(\\d{3})(?:GCM)?KW$/.test(alg)) {\n      return this.encryptionSecret(parseInt(RegExp.$1, 10));\n    }\n\n    if (/^A(\\d{3})(?:GCM|CBC-HS(\\d{3}))$/.test(alg)) {\n      return this.encryptionSecret(parseInt(RegExp.$2 || RegExp.$1, 10));\n    }\n\n    return new TextEncoder().encode(this.client_secret);\n  }\n\n  async grant(body, { clientAssertionPayload, DPoP } = {}, retry) {\n    assertIssuerConfiguration(this.issuer, 'token_endpoint');\n    const response = await authenticatedPost.call(\n      this,\n      'token',\n      {\n        form: body,\n        responseType: 'json',\n      },\n      { clientAssertionPayload, DPoP },\n    );\n    let responseBody;\n    try {\n      responseBody = processResponse(response);\n    } catch (err) {\n      if (retry !== retryAttempt && err instanceof OPError && err.error === 'use_dpop_nonce') {\n        return this.grant(body, { clientAssertionPayload, DPoP }, retryAttempt);\n      }\n      throw err;\n    }\n\n    return new TokenSet(responseBody);\n  }\n\n  async deviceAuthorization(params = {}, { exchangeBody, clientAssertionPayload, DPoP } = {}) {\n    assertIssuerConfiguration(this.issuer, 'device_authorization_endpoint');\n    assertIssuerConfiguration(this.issuer, 'token_endpoint');\n\n    const body = authorizationParams.call(this, {\n      client_id: this.client_id,\n      redirect_uri: null,\n      response_type: null,\n      ...params,\n    });\n\n    const response = await authenticatedPost.call(\n      this,\n      'device_authorization',\n      {\n        responseType: 'json',\n        form: body,\n      },\n      { clientAssertionPayload, endpointAuthMethod: 'token' },\n    );\n    const responseBody = processResponse(response);\n\n    return new DeviceFlowHandle({\n      client: this,\n      exchangeBody,\n      clientAssertionPayload,\n      response: responseBody,\n      maxAge: params.max_age,\n      DPoP,\n    });\n  }\n\n  async revoke(token, hint, { revokeBody, clientAssertionPayload } = {}) {\n    assertIssuerConfiguration(this.issuer, 'revocation_endpoint');\n    if (hint !== undefined && typeof hint !== 'string') {\n      throw new TypeError('hint must be a string');\n    }\n\n    const form = { ...revokeBody, token };\n\n    if (hint) {\n      form.token_type_hint = hint;\n    }\n\n    const response = await authenticatedPost.call(\n      this,\n      'revocation',\n      {\n        form,\n      },\n      { clientAssertionPayload },\n    );\n    processResponse(response, { body: false });\n  }\n\n  async introspect(token, hint, { introspectBody, clientAssertionPayload } = {}) {\n    assertIssuerConfiguration(this.issuer, 'introspection_endpoint');\n    if (hint !== undefined && typeof hint !== 'string') {\n      throw new TypeError('hint must be a string');\n    }\n\n    const form = { ...introspectBody, token };\n    if (hint) {\n      form.token_type_hint = hint;\n    }\n\n    const response = await authenticatedPost.call(\n      this,\n      'introspection',\n      { form, responseType: 'json' },\n      { clientAssertionPayload },\n    );\n\n    const responseBody = processResponse(response);\n\n    return responseBody;\n  }\n\n  static async register(metadata, options = {}) {\n    const { initialAccessToken, jwks, ...clientOptions } = options;\n\n    assertIssuerConfiguration(this.issuer, 'registration_endpoint');\n\n    if (jwks !== undefined && !(metadata.jwks || metadata.jwks_uri)) {\n      const keystore = await getKeystore.call(this, jwks);\n      metadata.jwks = keystore.toJWKS();\n    }\n\n    const response = await request.call(this, {\n      headers: {\n        Accept: 'application/json',\n        ...(initialAccessToken\n          ? {\n              Authorization: authorizationHeaderValue(initialAccessToken),\n            }\n          : undefined),\n      },\n      responseType: 'json',\n      json: metadata,\n      url: this.issuer.registration_endpoint,\n      method: 'POST',\n    });\n    const responseBody = processResponse(response, { statusCode: 201, bearer: true });\n\n    return new this(responseBody, jwks, clientOptions);\n  }\n\n  get metadata() {\n    return clone(Object.fromEntries(this.#metadata.entries()));\n  }\n\n  static async fromUri(registrationClientUri, registrationAccessToken, jwks, clientOptions) {\n    const response = await request.call(this, {\n      method: 'GET',\n      url: registrationClientUri,\n      responseType: 'json',\n      headers: {\n        Authorization: authorizationHeaderValue(registrationAccessToken),\n        Accept: 'application/json',\n      },\n    });\n    const responseBody = processResponse(response, { bearer: true });\n\n    return new this(responseBody, jwks, clientOptions);\n  }\n\n  async requestObject(\n    requestObject = {},\n    {\n      sign: signingAlgorithm = this.request_object_signing_alg || 'none',\n      encrypt: {\n        alg: eKeyManagement = this.request_object_encryption_alg,\n        enc: eContentEncryption = this.request_object_encryption_enc || 'A128CBC-HS256',\n      } = {},\n    } = {},\n  ) {\n    if (!isPlainObject(requestObject)) {\n      throw new TypeError('requestObject must be a plain object');\n    }\n\n    let signed;\n    let key;\n    const unix = now();\n    const header = { alg: signingAlgorithm, typ: 'oauth-authz-req+jwt' };\n    const payload = JSON.stringify(\n      defaults({}, requestObject, {\n        iss: this.client_id,\n        aud: this.issuer.issuer,\n        client_id: this.client_id,\n        jti: random(),\n        iat: unix,\n        exp: unix + 300,\n        ...(this.fapi() ? { nbf: unix } : undefined),\n      }),\n    );\n    if (signingAlgorithm === 'none') {\n      signed = [base64url.encode(JSON.stringify(header)), base64url.encode(payload), ''].join('.');\n    } else {\n      const symmetric = signingAlgorithm.startsWith('HS');\n      if (symmetric) {\n        key = this.secretForAlg(signingAlgorithm);\n      } else {\n        const keystore = await keystores.get(this);\n\n        if (!keystore) {\n          throw new TypeError(\n            `no keystore present for client, cannot sign using alg ${signingAlgorithm}`,\n          );\n        }\n        key = keystore.get({ alg: signingAlgorithm, use: 'sig' });\n        if (!key) {\n          throw new TypeError(`no key to sign with found for alg ${signingAlgorithm}`);\n        }\n      }\n\n      signed = await new jose.CompactSign(new TextEncoder().encode(payload))\n        .setProtectedHeader({\n          ...header,\n          kid: symmetric ? undefined : key.jwk.kid,\n        })\n        .sign(symmetric ? key : key.keyObject);\n    }\n\n    if (!eKeyManagement) {\n      return signed;\n    }\n\n    const fields = { alg: eKeyManagement, enc: eContentEncryption, cty: 'oauth-authz-req+jwt' };\n\n    if (fields.alg.match(/^(RSA|ECDH)/)) {\n      [key] = await queryKeyStore.call(\n        this.issuer,\n        { alg: fields.alg, use: 'enc' },\n        { allowMulti: true },\n      );\n    } else {\n      key = this.secretForAlg(fields.alg === 'dir' ? fields.enc : fields.alg);\n    }\n\n    return new jose.CompactEncrypt(new TextEncoder().encode(signed))\n      .setProtectedHeader({\n        ...fields,\n        kid: key instanceof Uint8Array ? undefined : key.jwk.kid,\n      })\n      .encrypt(key instanceof Uint8Array ? key : key.keyObject);\n  }\n\n  async pushedAuthorizationRequest(params = {}, { clientAssertionPayload } = {}) {\n    assertIssuerConfiguration(this.issuer, 'pushed_authorization_request_endpoint');\n\n    const body = {\n      ...('request' in params ? params : authorizationParams.call(this, params)),\n      client_id: this.client_id,\n    };\n\n    const response = await authenticatedPost.call(\n      this,\n      'pushed_authorization_request',\n      {\n        responseType: 'json',\n        form: body,\n      },\n      { clientAssertionPayload, endpointAuthMethod: 'token' },\n    );\n    const responseBody = processResponse(response, { statusCode: 201 });\n\n    if (!('expires_in' in responseBody)) {\n      throw new RPError({\n        message: 'expected expires_in in Pushed Authorization Successful Response',\n        response,\n      });\n    }\n    if (typeof responseBody.expires_in !== 'number') {\n      throw new RPError({\n        message: 'invalid expires_in value in Pushed Authorization Successful Response',\n        response,\n      });\n    }\n    if (!('request_uri' in responseBody)) {\n      throw new RPError({\n        message: 'expected request_uri in Pushed Authorization Successful Response',\n        response,\n      });\n    }\n    if (typeof responseBody.request_uri !== 'string') {\n      throw new RPError({\n        message: 'invalid request_uri value in Pushed Authorization Successful Response',\n        response,\n      });\n    }\n\n    return responseBody;\n  }\n\n  get issuer() {\n    return this.#issuer;\n  }\n\n  /* istanbul ignore next */\n  [inspect.custom]() {\n    return `${this.constructor.name} ${inspect(this.metadata, {\n      depth: Infinity,\n      colors: process.stdout.isTTY,\n      compact: false,\n      sorted: true,\n    })}`;\n  }\n\n  fapi() {\n    return this.constructor.name === 'FAPI1Client';\n  }\n}\n\n/**\n * @name validateJARM\n * @api private\n */\nasync function validateJARM(response) {\n  const expectedAlg = this.authorization_signed_response_alg;\n  const { payload } = await this.validateJWT(response, expectedAlg, ['iss', 'exp', 'aud']);\n  return pickCb(payload);\n}\n\nObject.defineProperty(BaseClient.prototype, 'validateJARM', {\n  enumerable: true,\n  configurable: true,\n  value(...args) {\n    process.emitWarning(\n      \"The JARM API implements an OIDF implementer's draft. Breaking draft implementations are included as minor versions of the openid-client library, therefore, the ~ semver operator should be used and close attention be payed to library changelog as well as the drafts themselves.\",\n      'DraftWarning',\n    );\n    Object.defineProperty(BaseClient.prototype, 'validateJARM', {\n      enumerable: true,\n      configurable: true,\n      value: validateJARM,\n    });\n    return this.validateJARM(...args);\n  },\n});\n\nconst RSPS = /^(?:RS|PS)(?:256|384|512)$/;\nfunction determineRsaAlgorithm(privateKey, privateKeyInput, valuesSupported) {\n  if (\n    typeof privateKeyInput === 'object' &&\n    typeof privateKeyInput.key === 'object' &&\n    privateKeyInput.key.alg\n  ) {\n    return privateKeyInput.key.alg;\n  }\n\n  if (Array.isArray(valuesSupported)) {\n    let candidates = valuesSupported.filter(RegExp.prototype.test.bind(RSPS));\n    if (privateKey.asymmetricKeyType === 'rsa-pss') {\n      candidates = candidates.filter((value) => value.startsWith('PS'));\n    }\n    return ['PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS384'].find((preferred) =>\n      candidates.includes(preferred),\n    );\n  }\n\n  return 'PS256';\n}\n\nconst p256 = Buffer.from([42, 134, 72, 206, 61, 3, 1, 7]);\nconst p384 = Buffer.from([43, 129, 4, 0, 34]);\nconst p521 = Buffer.from([43, 129, 4, 0, 35]);\nconst secp256k1 = Buffer.from([43, 129, 4, 0, 10]);\n\nfunction determineEcAlgorithm(privateKey, privateKeyInput) {\n  // If input was a JWK\n  switch (\n    typeof privateKeyInput === 'object' &&\n    typeof privateKeyInput.key === 'object' &&\n    privateKeyInput.key.crv\n  ) {\n    case 'P-256':\n      return 'ES256';\n    case 'secp256k1':\n      return 'ES256K';\n    case 'P-384':\n      return 'ES384';\n    case 'P-512':\n      return 'ES512';\n    default:\n      break;\n  }\n\n  const buf = privateKey.export({ format: 'der', type: 'pkcs8' });\n  const i = buf[1] < 128 ? 17 : 18;\n  const len = buf[i];\n  const curveOid = buf.slice(i + 1, i + 1 + len);\n  if (curveOid.equals(p256)) {\n    return 'ES256';\n  }\n\n  if (curveOid.equals(p384)) {\n    return 'ES384';\n  }\n  if (curveOid.equals(p521)) {\n    return 'ES512';\n  }\n\n  if (curveOid.equals(secp256k1)) {\n    return 'ES256K';\n  }\n\n  throw new TypeError('unsupported DPoP private key curve');\n}\n\nconst jwkCache = new WeakMap();\nasync function getJwk(privateKey, privateKeyInput) {\n  if (\n    typeof privateKeyInput === 'object' &&\n    typeof privateKeyInput.key === 'object' &&\n    privateKeyInput.key.crv\n  ) {\n    return pick(privateKeyInput.key, 'kty', 'crv', 'x', 'y', 'e', 'n');\n  }\n\n  if (jwkCache.has(privateKeyInput)) {\n    return jwkCache.get(privateKeyInput);\n  }\n\n  const jwk = pick(await jose.exportJWK(privateKey), 'kty', 'crv', 'x', 'y', 'e', 'n');\n\n  if (isKeyObject(privateKeyInput)) {\n    jwkCache.set(privateKeyInput, jwk);\n  }\n\n  return jwk;\n}\n\n/**\n * @name dpopProof\n * @api private\n */\nasync function dpopProof(payload, privateKeyInput, accessToken) {\n  if (!isPlainObject(payload)) {\n    throw new TypeError('payload must be a plain object');\n  }\n\n  let privateKey;\n  if (isKeyObject(privateKeyInput)) {\n    privateKey = privateKeyInput;\n  } else {\n    privateKey = crypto.createPrivateKey(privateKeyInput);\n  }\n\n  if (privateKey.type !== 'private') {\n    throw new TypeError('\"DPoP\" option must be a private key');\n  }\n  let alg;\n  switch (privateKey.asymmetricKeyType) {\n    case 'ed25519':\n    case 'ed448':\n      alg = 'EdDSA';\n      break;\n    case 'ec':\n      alg = determineEcAlgorithm(privateKey, privateKeyInput);\n      break;\n    case 'rsa':\n    case rsaPssParams && 'rsa-pss':\n      alg = determineRsaAlgorithm(\n        privateKey,\n        privateKeyInput,\n        this.issuer.dpop_signing_alg_values_supported,\n      );\n      break;\n    default:\n      throw new TypeError('unsupported DPoP private key asymmetric key type');\n  }\n\n  if (!alg) {\n    throw new TypeError('could not determine DPoP JWS Algorithm');\n  }\n\n  return new jose.SignJWT({\n    ath: accessToken\n      ? base64url.encode(crypto.createHash('sha256').update(accessToken).digest())\n      : undefined,\n    ...payload,\n  })\n    .setProtectedHeader({\n      alg,\n      typ: 'dpop+jwt',\n      jwk: await getJwk(privateKey, privateKeyInput),\n    })\n    .setIssuedAt()\n    .setJti(random())\n    .sign(privateKey);\n}\n\nObject.defineProperty(BaseClient.prototype, 'dpopProof', {\n  enumerable: true,\n  configurable: true,\n  value(...args) {\n    process.emitWarning(\n      'The DPoP APIs implements an IETF draft (https://www.ietf.org/archive/id/draft-ietf-oauth-dpop-04.html). Breaking draft implementations are included as minor versions of the openid-client library, therefore, the ~ semver operator should be used and close attention be payed to library changelog as well as the drafts themselves.',\n      'DraftWarning',\n    );\n    Object.defineProperty(BaseClient.prototype, 'dpopProof', {\n      enumerable: true,\n      configurable: true,\n      value: dpopProof,\n    });\n    return this.dpopProof(...args);\n  },\n});\n\nmodule.exports = (issuer, aadIssValidation = false) =>\n  class Client extends BaseClient {\n    constructor(...args) {\n      super(issuer, aadIssValidation, ...args);\n    }\n\n    static get issuer() {\n      return issuer;\n    }\n  };\nmodule.exports.BaseClient = BaseClient;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/lib/client.js?")},"./node_modules/openid-client/lib/device_flow_handle.js":
/*!**************************************************************!*\
  !*** ./node_modules/openid-client/lib/device_flow_handle.js ***!
  \**************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { inspect } = __webpack_require__(/*! util */ \"util\");\n\nconst { RPError, OPError } = __webpack_require__(/*! ./errors */ \"./node_modules/openid-client/lib/errors.js\");\nconst now = __webpack_require__(/*! ./helpers/unix_timestamp */ \"./node_modules/openid-client/lib/helpers/unix_timestamp.js\");\n\nclass DeviceFlowHandle {\n  #aborted;\n  #client;\n  #clientAssertionPayload;\n  #DPoP;\n  #exchangeBody;\n  #expires_at;\n  #interval;\n  #maxAge;\n  #response;\n  constructor({ client, exchangeBody, clientAssertionPayload, response, maxAge, DPoP }) {\n    ['verification_uri', 'user_code', 'device_code'].forEach((prop) => {\n      if (typeof response[prop] !== 'string' || !response[prop]) {\n        throw new RPError(\n          `expected ${prop} string to be returned by Device Authorization Response, got %j`,\n          response[prop],\n        );\n      }\n    });\n\n    if (!Number.isSafeInteger(response.expires_in)) {\n      throw new RPError(\n        'expected expires_in number to be returned by Device Authorization Response, got %j',\n        response.expires_in,\n      );\n    }\n\n    this.#expires_at = now() + response.expires_in;\n    this.#client = client;\n    this.#DPoP = DPoP;\n    this.#maxAge = maxAge;\n    this.#exchangeBody = exchangeBody;\n    this.#clientAssertionPayload = clientAssertionPayload;\n    this.#response = response;\n    this.#interval = response.interval * 1000 || 5000;\n  }\n\n  abort() {\n    this.#aborted = true;\n  }\n\n  async poll({ signal } = {}) {\n    if ((signal && signal.aborted) || this.#aborted) {\n      throw new RPError('polling aborted');\n    }\n\n    if (this.expired()) {\n      throw new RPError(\n        'the device code %j has expired and the device authorization session has concluded',\n        this.device_code,\n      );\n    }\n\n    await new Promise((resolve) => setTimeout(resolve, this.#interval));\n\n    let tokenset;\n    try {\n      tokenset = await this.#client.grant(\n        {\n          ...this.#exchangeBody,\n          grant_type: 'urn:ietf:params:oauth:grant-type:device_code',\n          device_code: this.device_code,\n        },\n        { clientAssertionPayload: this.#clientAssertionPayload, DPoP: this.#DPoP },\n      );\n    } catch (err) {\n      switch (err instanceof OPError && err.error) {\n        case 'slow_down':\n          this.#interval += 5000;\n        case 'authorization_pending':\n          return this.poll({ signal });\n        default:\n          throw err;\n      }\n    }\n\n    if ('id_token' in tokenset) {\n      await this.#client.decryptIdToken(tokenset);\n      await this.#client.validateIdToken(tokenset, undefined, 'token', this.#maxAge);\n    }\n\n    return tokenset;\n  }\n\n  get device_code() {\n    return this.#response.device_code;\n  }\n\n  get user_code() {\n    return this.#response.user_code;\n  }\n\n  get verification_uri() {\n    return this.#response.verification_uri;\n  }\n\n  get verification_uri_complete() {\n    return this.#response.verification_uri_complete;\n  }\n\n  get expires_in() {\n    return Math.max.apply(null, [this.#expires_at - now(), 0]);\n  }\n\n  expired() {\n    return this.expires_in === 0;\n  }\n\n  /* istanbul ignore next */\n  [inspect.custom]() {\n    return `${this.constructor.name} ${inspect(this.#response, {\n      depth: Infinity,\n      colors: process.stdout.isTTY,\n      compact: false,\n      sorted: true,\n    })}`;\n  }\n}\n\nmodule.exports = DeviceFlowHandle;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/lib/device_flow_handle.js?")},"./node_modules/openid-client/lib/errors.js":
/*!**************************************************!*\
  !*** ./node_modules/openid-client/lib/errors.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { format } = __webpack_require__(/*! util */ \"util\");\n\nclass OPError extends Error {\n  constructor({ error_description, error, error_uri, session_state, state, scope }, response) {\n    super(!error_description ? error : `${error} (${error_description})`);\n\n    Object.assign(\n      this,\n      { error },\n      error_description && { error_description },\n      error_uri && { error_uri },\n      state && { state },\n      scope && { scope },\n      session_state && { session_state },\n    );\n\n    if (response) {\n      Object.defineProperty(this, 'response', {\n        value: response,\n      });\n    }\n\n    this.name = this.constructor.name;\n    Error.captureStackTrace(this, this.constructor);\n  }\n}\n\nclass RPError extends Error {\n  constructor(...args) {\n    if (typeof args[0] === 'string') {\n      super(format(...args));\n    } else {\n      const { message, printf, response, ...rest } = args[0];\n      if (printf) {\n        super(format(...printf));\n      } else {\n        super(message);\n      }\n      Object.assign(this, rest);\n      if (response) {\n        Object.defineProperty(this, 'response', {\n          value: response,\n        });\n      }\n    }\n\n    this.name = this.constructor.name;\n    Error.captureStackTrace(this, this.constructor);\n  }\n}\n\nmodule.exports = {\n  OPError,\n  RPError,\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/lib/errors.js?")},"./node_modules/openid-client/lib/helpers/assert.js":
/*!**********************************************************!*\
  !*** ./node_modules/openid-client/lib/helpers/assert.js ***!
  \**********************************************************/module=>{eval("function assertSigningAlgValuesSupport(endpoint, issuer, properties) {\n  if (!issuer[`${endpoint}_endpoint`]) return;\n\n  const eam = `${endpoint}_endpoint_auth_method`;\n  const easa = `${endpoint}_endpoint_auth_signing_alg`;\n  const easavs = `${endpoint}_endpoint_auth_signing_alg_values_supported`;\n\n  if (properties[eam] && properties[eam].endsWith('_jwt') && !properties[easa] && !issuer[easavs]) {\n    throw new TypeError(\n      `${easavs} must be configured on the issuer if ${easa} is not defined on a client`,\n    );\n  }\n}\n\nfunction assertIssuerConfiguration(issuer, endpoint) {\n  if (!issuer[endpoint]) {\n    throw new TypeError(`${endpoint} must be configured on the issuer`);\n  }\n}\n\nmodule.exports = {\n  assertSigningAlgValuesSupport,\n  assertIssuerConfiguration,\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/lib/helpers/assert.js?")},"./node_modules/openid-client/lib/helpers/base64url.js":
/*!*************************************************************!*\
  !*** ./node_modules/openid-client/lib/helpers/base64url.js ***!
  \*************************************************************/module=>{eval("let encode;\nif (Buffer.isEncoding('base64url')) {\n  encode = (input, encoding = 'utf8') => Buffer.from(input, encoding).toString('base64url');\n} else {\n  const fromBase64 = (base64) => base64.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n  encode = (input, encoding = 'utf8') =>\n    fromBase64(Buffer.from(input, encoding).toString('base64'));\n}\n\nconst decode = (input) => Buffer.from(input, 'base64');\n\nmodule.exports.decode = decode;\nmodule.exports.encode = encode;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/lib/helpers/base64url.js?")},"./node_modules/openid-client/lib/helpers/client.js":
/*!**********************************************************!*\
  !*** ./node_modules/openid-client/lib/helpers/client.js ***!
  \**********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const jose = __webpack_require__(/*! jose */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/index.js\");\n\nconst { RPError } = __webpack_require__(/*! ../errors */ \"./node_modules/openid-client/lib/errors.js\");\n\nconst { assertIssuerConfiguration } = __webpack_require__(/*! ./assert */ \"./node_modules/openid-client/lib/helpers/assert.js\");\nconst { random } = __webpack_require__(/*! ./generators */ \"./node_modules/openid-client/lib/helpers/generators.js\");\nconst now = __webpack_require__(/*! ./unix_timestamp */ \"./node_modules/openid-client/lib/helpers/unix_timestamp.js\");\nconst request = __webpack_require__(/*! ./request */ \"./node_modules/openid-client/lib/helpers/request.js\");\nconst { keystores } = __webpack_require__(/*! ./weak_cache */ \"./node_modules/openid-client/lib/helpers/weak_cache.js\");\nconst merge = __webpack_require__(/*! ./merge */ \"./node_modules/openid-client/lib/helpers/merge.js\");\n\nconst formUrlEncode = (value) => encodeURIComponent(value).replace(/%20/g, '+');\n\nasync function clientAssertion(endpoint, payload) {\n  let alg = this[`${endpoint}_endpoint_auth_signing_alg`];\n  if (!alg) {\n    assertIssuerConfiguration(\n      this.issuer,\n      `${endpoint}_endpoint_auth_signing_alg_values_supported`,\n    );\n  }\n\n  if (this[`${endpoint}_endpoint_auth_method`] === 'client_secret_jwt') {\n    if (!alg) {\n      const supported = this.issuer[`${endpoint}_endpoint_auth_signing_alg_values_supported`];\n      alg =\n        Array.isArray(supported) && supported.find((signAlg) => /^HS(?:256|384|512)/.test(signAlg));\n    }\n\n    if (!alg) {\n      throw new RPError(\n        `failed to determine a JWS Algorithm to use for ${\n          this[`${endpoint}_endpoint_auth_method`]\n        } Client Assertion`,\n      );\n    }\n\n    return new jose.CompactSign(Buffer.from(JSON.stringify(payload)))\n      .setProtectedHeader({ alg })\n      .sign(this.secretForAlg(alg));\n  }\n\n  const keystore = await keystores.get(this);\n\n  if (!keystore) {\n    throw new TypeError('no client jwks provided for signing a client assertion with');\n  }\n\n  if (!alg) {\n    const supported = this.issuer[`${endpoint}_endpoint_auth_signing_alg_values_supported`];\n    alg =\n      Array.isArray(supported) &&\n      supported.find((signAlg) => keystore.get({ alg: signAlg, use: 'sig' }));\n  }\n\n  if (!alg) {\n    throw new RPError(\n      `failed to determine a JWS Algorithm to use for ${\n        this[`${endpoint}_endpoint_auth_method`]\n      } Client Assertion`,\n    );\n  }\n\n  const key = keystore.get({ alg, use: 'sig' });\n  if (!key) {\n    throw new RPError(\n      `no key found in client jwks to sign a client assertion with using alg ${alg}`,\n    );\n  }\n\n  return new jose.CompactSign(Buffer.from(JSON.stringify(payload)))\n    .setProtectedHeader({ alg, kid: key.jwk && key.jwk.kid })\n    .sign(key.keyObject);\n}\n\nasync function authFor(endpoint, { clientAssertionPayload } = {}) {\n  const authMethod = this[`${endpoint}_endpoint_auth_method`];\n  switch (authMethod) {\n    case 'self_signed_tls_client_auth':\n    case 'tls_client_auth':\n    case 'none':\n      return { form: { client_id: this.client_id } };\n    case 'client_secret_post':\n      if (!this.client_secret) {\n        throw new TypeError(\n          'client_secret_post client authentication method requires a client_secret',\n        );\n      }\n      return { form: { client_id: this.client_id, client_secret: this.client_secret } };\n    case 'private_key_jwt':\n    case 'client_secret_jwt': {\n      const timestamp = now();\n      const audience = [\n        ...new Set([this.issuer.issuer, this.issuer.token_endpoint].filter(Boolean)),\n      ];\n\n      const assertion = await clientAssertion.call(this, endpoint, {\n        iat: timestamp,\n        exp: timestamp + 60,\n        jti: random(),\n        iss: this.client_id,\n        sub: this.client_id,\n        aud: audience,\n        ...clientAssertionPayload,\n      });\n\n      return {\n        form: {\n          client_id: this.client_id,\n          client_assertion: assertion,\n          client_assertion_type: 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer',\n        },\n      };\n    }\n    case 'client_secret_basic': {\n      // This is correct behaviour, see https://tools.ietf.org/html/rfc6749#section-2.3.1 and the\n      // related appendix. (also https://github.com/panva/node-openid-client/pull/91)\n      // > The client identifier is encoded using the\n      // > \"application/x-www-form-urlencoded\" encoding algorithm per\n      // > Appendix B, and the encoded value is used as the username; the client\n      // > password is encoded using the same algorithm and used as the\n      // > password.\n      if (!this.client_secret) {\n        throw new TypeError(\n          'client_secret_basic client authentication method requires a client_secret',\n        );\n      }\n      const encoded = `${formUrlEncode(this.client_id)}:${formUrlEncode(this.client_secret)}`;\n      const value = Buffer.from(encoded).toString('base64');\n      return { headers: { Authorization: `Basic ${value}` } };\n    }\n    default: {\n      throw new TypeError(`missing, or unsupported, ${endpoint}_endpoint_auth_method`);\n    }\n  }\n}\n\nfunction resolveResponseType() {\n  const { length, 0: value } = this.response_types;\n\n  if (length === 1) {\n    return value;\n  }\n\n  return undefined;\n}\n\nfunction resolveRedirectUri() {\n  const { length, 0: value } = this.redirect_uris || [];\n\n  if (length === 1) {\n    return value;\n  }\n\n  return undefined;\n}\n\nasync function authenticatedPost(\n  endpoint,\n  opts,\n  { clientAssertionPayload, endpointAuthMethod = endpoint, DPoP } = {},\n) {\n  const auth = await authFor.call(this, endpointAuthMethod, { clientAssertionPayload });\n  const requestOpts = merge(opts, auth);\n\n  const mTLS =\n    this[`${endpointAuthMethod}_endpoint_auth_method`].includes('tls_client_auth') ||\n    (endpoint === 'token' && this.tls_client_certificate_bound_access_tokens);\n\n  let targetUrl;\n  if (mTLS && this.issuer.mtls_endpoint_aliases) {\n    targetUrl = this.issuer.mtls_endpoint_aliases[`${endpoint}_endpoint`];\n  }\n\n  targetUrl = targetUrl || this.issuer[`${endpoint}_endpoint`];\n\n  if ('form' in requestOpts) {\n    for (const [key, value] of Object.entries(requestOpts.form)) {\n      if (typeof value === 'undefined') {\n        delete requestOpts.form[key];\n      }\n    }\n  }\n\n  return request.call(\n    this,\n    {\n      ...requestOpts,\n      method: 'POST',\n      url: targetUrl,\n      headers: {\n        ...(endpoint !== 'revocation'\n          ? {\n              Accept: 'application/json',\n            }\n          : undefined),\n        ...requestOpts.headers,\n      },\n    },\n    { mTLS, DPoP },\n  );\n}\n\nmodule.exports = {\n  resolveResponseType,\n  resolveRedirectUri,\n  authFor,\n  authenticatedPost,\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/lib/helpers/client.js?")},"./node_modules/openid-client/lib/helpers/consts.js":
/*!**********************************************************!*\
  !*** ./node_modules/openid-client/lib/helpers/consts.js ***!
  \**********************************************************/module=>{eval("const HTTP_OPTIONS = Symbol();\nconst CLOCK_TOLERANCE = Symbol();\n\nmodule.exports = {\n  CLOCK_TOLERANCE,\n  HTTP_OPTIONS,\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/lib/helpers/consts.js?")},"./node_modules/openid-client/lib/helpers/decode_jwt.js":
/*!**************************************************************!*\
  !*** ./node_modules/openid-client/lib/helpers/decode_jwt.js ***!
  \**************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const base64url = __webpack_require__(/*! ./base64url */ \"./node_modules/openid-client/lib/helpers/base64url.js\");\n\nmodule.exports = (token) => {\n  if (typeof token !== 'string' || !token) {\n    throw new TypeError('JWT must be a string');\n  }\n\n  const { 0: header, 1: payload, 2: signature, length } = token.split('.');\n\n  if (length === 5) {\n    throw new TypeError('encrypted JWTs cannot be decoded');\n  }\n\n  if (length !== 3) {\n    throw new Error('JWTs must have three components');\n  }\n\n  try {\n    return {\n      header: JSON.parse(base64url.decode(header)),\n      payload: JSON.parse(base64url.decode(payload)),\n      signature,\n    };\n  } catch (err) {\n    throw new Error('JWT is malformed');\n  }\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/lib/helpers/decode_jwt.js?")},"./node_modules/openid-client/lib/helpers/deep_clone.js":
/*!**************************************************************!*\
  !*** ./node_modules/openid-client/lib/helpers/deep_clone.js ***!
  \**************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const { serialize, deserialize } = __webpack_require__(/*! v8 */ "v8");\n\nmodule.exports = globalThis.structuredClone || ((obj) => deserialize(serialize(obj)));\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/lib/helpers/deep_clone.js?')},"./node_modules/openid-client/lib/helpers/defaults.js":
/*!************************************************************!*\
  !*** ./node_modules/openid-client/lib/helpers/defaults.js ***!
  \************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const isPlainObject = __webpack_require__(/*! ./is_plain_object */ \"./node_modules/openid-client/lib/helpers/is_plain_object.js\");\n\nfunction defaults(deep, target, ...sources) {\n  for (const source of sources) {\n    if (!isPlainObject(source)) {\n      continue;\n    }\n    for (const [key, value] of Object.entries(source)) {\n      /* istanbul ignore if */\n      if (key === '__proto__' || key === 'constructor') {\n        continue;\n      }\n      if (typeof target[key] === 'undefined' && typeof value !== 'undefined') {\n        target[key] = value;\n      }\n\n      if (deep && isPlainObject(target[key]) && isPlainObject(value)) {\n        defaults(true, target[key], value);\n      }\n    }\n  }\n\n  return target;\n}\n\nmodule.exports = defaults.bind(undefined, false);\nmodule.exports.deep = defaults.bind(undefined, true);\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/lib/helpers/defaults.js?")},"./node_modules/openid-client/lib/helpers/generators.js":
/*!**************************************************************!*\
  !*** ./node_modules/openid-client/lib/helpers/generators.js ***!
  \**************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const { createHash, randomBytes } = __webpack_require__(/*! crypto */ "crypto");\n\nconst base64url = __webpack_require__(/*! ./base64url */ "./node_modules/openid-client/lib/helpers/base64url.js");\n\nconst random = (bytes = 32) => base64url.encode(randomBytes(bytes));\n\nmodule.exports = {\n  random,\n  state: random,\n  nonce: random,\n  codeVerifier: random,\n  codeChallenge: (codeVerifier) =>\n    base64url.encode(createHash(\'sha256\').update(codeVerifier).digest()),\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/lib/helpers/generators.js?')},"./node_modules/openid-client/lib/helpers/is_key_object.js":
/*!*****************************************************************!*\
  !*** ./node_modules/openid-client/lib/helpers/is_key_object.js ***!
  \*****************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const util = __webpack_require__(/*! util */ "util");\nconst crypto = __webpack_require__(/*! crypto */ "crypto");\n\nmodule.exports = util.types.isKeyObject || ((obj) => obj && obj instanceof crypto.KeyObject);\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/lib/helpers/is_key_object.js?')},"./node_modules/openid-client/lib/helpers/is_plain_object.js":
/*!*******************************************************************!*\
  !*** ./node_modules/openid-client/lib/helpers/is_plain_object.js ***!
  \*******************************************************************/module=>{eval("module.exports = (a) => !!a && a.constructor === Object;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/lib/helpers/is_plain_object.js?")},"./node_modules/openid-client/lib/helpers/issuer.js":
/*!**********************************************************!*\
  !*** ./node_modules/openid-client/lib/helpers/issuer.js ***!
  \**********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const objectHash = __webpack_require__(/*! object-hash */ "./node_modules/object-hash/index.js");\nconst LRU = __webpack_require__(/*! lru-cache */ "./node_modules/lru-cache/index.js");\n\nconst { RPError } = __webpack_require__(/*! ../errors */ "./node_modules/openid-client/lib/errors.js");\n\nconst { assertIssuerConfiguration } = __webpack_require__(/*! ./assert */ "./node_modules/openid-client/lib/helpers/assert.js");\nconst KeyStore = __webpack_require__(/*! ./keystore */ "./node_modules/openid-client/lib/helpers/keystore.js");\nconst { keystores } = __webpack_require__(/*! ./weak_cache */ "./node_modules/openid-client/lib/helpers/weak_cache.js");\nconst processResponse = __webpack_require__(/*! ./process_response */ "./node_modules/openid-client/lib/helpers/process_response.js");\nconst request = __webpack_require__(/*! ./request */ "./node_modules/openid-client/lib/helpers/request.js");\n\nconst inFlight = new WeakMap();\nconst caches = new WeakMap();\nconst lrus = (ctx) => {\n  if (!caches.has(ctx)) {\n    caches.set(ctx, new LRU({ max: 100 }));\n  }\n  return caches.get(ctx);\n};\n\nasync function getKeyStore(reload = false) {\n  assertIssuerConfiguration(this, \'jwks_uri\');\n\n  const keystore = keystores.get(this);\n  const cache = lrus(this);\n\n  if (reload || !keystore) {\n    if (inFlight.has(this)) {\n      return inFlight.get(this);\n    }\n    cache.reset();\n    inFlight.set(\n      this,\n      (async () => {\n        const response = await request\n          .call(this, {\n            method: \'GET\',\n            responseType: \'json\',\n            url: this.jwks_uri,\n            headers: {\n              Accept: \'application/json, application/jwk-set+json\',\n            },\n          })\n          .finally(() => {\n            inFlight.delete(this);\n          });\n        const jwks = processResponse(response);\n\n        const joseKeyStore = KeyStore.fromJWKS(jwks, { onlyPublic: true });\n        cache.set(\'throttle\', true, 60 * 1000);\n        keystores.set(this, joseKeyStore);\n\n        return joseKeyStore;\n      })(),\n    );\n\n    return inFlight.get(this);\n  }\n\n  return keystore;\n}\n\nasync function queryKeyStore({ kid, kty, alg, use }, { allowMulti = false } = {}) {\n  const cache = lrus(this);\n\n  const def = {\n    kid,\n    kty,\n    alg,\n    use,\n  };\n\n  const defHash = objectHash(def, {\n    algorithm: \'sha256\',\n    ignoreUnknown: true,\n    unorderedArrays: true,\n    unorderedSets: true,\n  });\n\n  // refresh keystore on every unknown key but also only upto once every minute\n  const freshJwksUri = cache.get(defHash) || cache.get(\'throttle\');\n\n  const keystore = await getKeyStore.call(this, !freshJwksUri);\n  const keys = keystore.all(def);\n\n  delete def.use;\n  if (keys.length === 0) {\n    throw new RPError({\n      printf: ["no valid key found in issuer\'s jwks_uri for key parameters %j", def],\n      jwks: keystore,\n    });\n  }\n\n  if (!allowMulti && keys.length > 1 && !kid) {\n    throw new RPError({\n      printf: [\n        "multiple matching keys found in issuer\'s jwks_uri for key parameters %j, kid must be provided in this case",\n        def,\n      ],\n      jwks: keystore,\n    });\n  }\n\n  cache.set(defHash, true);\n\n  return keys;\n}\n\nmodule.exports.queryKeyStore = queryKeyStore;\nmodule.exports.keystore = getKeyStore;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/lib/helpers/issuer.js?')},"./node_modules/openid-client/lib/helpers/keystore.js":
/*!************************************************************!*\
  !*** ./node_modules/openid-client/lib/helpers/keystore.js ***!
  \************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const v8 = __webpack_require__(/*! v8 */ \"v8\");\n\nconst jose = __webpack_require__(/*! jose */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/index.js\");\n\nconst clone = globalThis.structuredClone || ((value) => v8.deserialize(v8.serialize(value)));\n\nconst isPlainObject = __webpack_require__(/*! ./is_plain_object */ \"./node_modules/openid-client/lib/helpers/is_plain_object.js\");\nconst isKeyObject = __webpack_require__(/*! ./is_key_object */ \"./node_modules/openid-client/lib/helpers/is_key_object.js\");\n\nconst internal = Symbol();\n\nfunction fauxAlg(kty) {\n  switch (kty) {\n    case 'RSA':\n      return 'RSA-OAEP';\n    case 'EC':\n      return 'ECDH-ES';\n    case 'OKP':\n      return 'ECDH-ES';\n    case 'oct':\n      return 'HS256';\n    default:\n      return undefined;\n  }\n}\n\nconst keyscore = (key, { alg, use }) => {\n  let score = 0;\n\n  if (alg && key.alg) {\n    score++;\n  }\n\n  if (use && key.use) {\n    score++;\n  }\n\n  return score;\n};\n\nfunction getKtyFromAlg(alg) {\n  switch (typeof alg === 'string' && alg.slice(0, 2)) {\n    case 'RS':\n    case 'PS':\n      return 'RSA';\n    case 'ES':\n      return 'EC';\n    case 'Ed':\n      return 'OKP';\n    default:\n      return undefined;\n  }\n}\n\nfunction getAlgorithms(use, alg, kty, crv) {\n  // Ed25519, Ed448, and secp256k1 always have \"alg\"\n  // OKP always has use\n  if (alg) {\n    return new Set([alg]);\n  }\n\n  switch (kty) {\n    case 'EC': {\n      let algs = [];\n\n      if (use === 'enc' || use === undefined) {\n        algs = algs.concat(['ECDH-ES', 'ECDH-ES+A128KW', 'ECDH-ES+A192KW', 'ECDH-ES+A256KW']);\n      }\n\n      if (use === 'sig' || use === undefined) {\n        algs = algs.concat([`ES${crv.slice(-3)}`.replace('21', '12')]);\n      }\n\n      return new Set(algs);\n    }\n    case 'OKP': {\n      return new Set(['ECDH-ES', 'ECDH-ES+A128KW', 'ECDH-ES+A192KW', 'ECDH-ES+A256KW']);\n    }\n    case 'RSA': {\n      let algs = [];\n\n      if (use === 'enc' || use === undefined) {\n        algs = algs.concat(['RSA-OAEP', 'RSA-OAEP-256', 'RSA-OAEP-384', 'RSA-OAEP-512', 'RSA1_5']);\n      }\n\n      if (use === 'sig' || use === undefined) {\n        algs = algs.concat(['PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512']);\n      }\n\n      return new Set(algs);\n    }\n    default:\n      throw new Error('unreachable');\n  }\n}\n\nmodule.exports = class KeyStore {\n  #keys;\n\n  constructor(i, keys) {\n    if (i !== internal) throw new Error('invalid constructor call');\n    this.#keys = keys;\n  }\n\n  toJWKS() {\n    return {\n      keys: this.map(({ jwk: { d, p, q, dp, dq, qi, ...jwk } }) => jwk),\n    };\n  }\n\n  all({ alg, kid, use } = {}) {\n    if (!use || !alg) {\n      throw new Error();\n    }\n\n    const kty = getKtyFromAlg(alg);\n\n    const search = { alg, use };\n    return this.filter((key) => {\n      let candidate = true;\n\n      if (candidate && kty !== undefined && key.jwk.kty !== kty) {\n        candidate = false;\n      }\n\n      if (candidate && kid !== undefined && key.jwk.kid !== kid) {\n        candidate = false;\n      }\n\n      if (candidate && use !== undefined && key.jwk.use !== undefined && key.jwk.use !== use) {\n        candidate = false;\n      }\n\n      if (candidate && key.jwk.alg && key.jwk.alg !== alg) {\n        candidate = false;\n      } else if (!key.algorithms.has(alg)) {\n        candidate = false;\n      }\n\n      return candidate;\n    }).sort((first, second) => keyscore(second, search) - keyscore(first, search));\n  }\n\n  get(...args) {\n    return this.all(...args)[0];\n  }\n\n  static async fromJWKS(jwks, { onlyPublic = false, onlyPrivate = false } = {}) {\n    if (\n      !isPlainObject(jwks) ||\n      !Array.isArray(jwks.keys) ||\n      jwks.keys.some((k) => !isPlainObject(k) || !('kty' in k))\n    ) {\n      throw new TypeError('jwks must be a JSON Web Key Set formatted object');\n    }\n\n    const keys = [];\n\n    for (let jwk of jwks.keys) {\n      jwk = clone(jwk);\n      const { kty, kid, crv } = jwk;\n\n      let { alg, use } = jwk;\n\n      if (typeof kty !== 'string' || !kty) {\n        continue;\n      }\n\n      if (use !== undefined && use !== 'sig' && use !== 'enc') {\n        continue;\n      }\n\n      if (typeof alg !== 'string' && alg !== undefined) {\n        continue;\n      }\n\n      if (typeof kid !== 'string' && kid !== undefined) {\n        continue;\n      }\n\n      if (kty === 'EC' && use === 'sig') {\n        switch (crv) {\n          case 'P-256':\n            alg = 'ES256';\n            break;\n          case 'P-384':\n            alg = 'ES384';\n            break;\n          case 'P-521':\n            alg = 'ES512';\n            break;\n          default:\n            break;\n        }\n      }\n\n      if (crv === 'secp256k1') {\n        use = 'sig';\n        alg = 'ES256K';\n      }\n\n      if (kty === 'OKP') {\n        switch (crv) {\n          case 'Ed25519':\n          case 'Ed448':\n            use = 'sig';\n            alg = 'EdDSA';\n            break;\n          case 'X25519':\n          case 'X448':\n            use = 'enc';\n            break;\n          default:\n            break;\n        }\n      }\n\n      if (alg && !use) {\n        switch (true) {\n          case alg.startsWith('ECDH'):\n            use = 'enc';\n            break;\n          case alg.startsWith('RSA'):\n            use = 'enc';\n            break;\n          default:\n            break;\n        }\n      }\n\n      const keyObject = await jose.importJWK(jwk, alg || fauxAlg(jwk.kty)).catch(() => {});\n\n      if (!keyObject) continue;\n\n      if (keyObject instanceof Uint8Array || keyObject.type === 'secret') {\n        if (onlyPrivate) {\n          throw new Error('jwks must only contain private keys');\n        }\n        continue;\n      }\n\n      if (!isKeyObject(keyObject)) {\n        throw new Error('what?!');\n      }\n\n      if (onlyPrivate && keyObject.type !== 'private') {\n        throw new Error('jwks must only contain private keys');\n      }\n\n      if (onlyPublic && keyObject.type !== 'public') {\n        continue;\n      }\n\n      if (kty === 'RSA' && keyObject.asymmetricKeySize < 2048) {\n        continue;\n      }\n\n      keys.push({\n        jwk: { ...jwk, alg, use },\n        keyObject,\n        get algorithms() {\n          Object.defineProperty(this, 'algorithms', {\n            value: getAlgorithms(this.jwk.use, this.jwk.alg, this.jwk.kty, this.jwk.crv),\n            enumerable: true,\n            configurable: false,\n          });\n          return this.algorithms;\n        },\n      });\n    }\n\n    return new this(internal, keys);\n  }\n\n  filter(...args) {\n    return this.#keys.filter(...args);\n  }\n\n  find(...args) {\n    return this.#keys.find(...args);\n  }\n\n  every(...args) {\n    return this.#keys.every(...args);\n  }\n\n  some(...args) {\n    return this.#keys.some(...args);\n  }\n\n  map(...args) {\n    return this.#keys.map(...args);\n  }\n\n  forEach(...args) {\n    return this.#keys.forEach(...args);\n  }\n\n  reduce(...args) {\n    return this.#keys.reduce(...args);\n  }\n\n  sort(...args) {\n    return this.#keys.sort(...args);\n  }\n\n  *[Symbol.iterator]() {\n    for (const key of this.#keys) {\n      yield key;\n    }\n  }\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/lib/helpers/keystore.js?")},"./node_modules/openid-client/lib/helpers/merge.js":
/*!*********************************************************!*\
  !*** ./node_modules/openid-client/lib/helpers/merge.js ***!
  \*********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const isPlainObject = __webpack_require__(/*! ./is_plain_object */ \"./node_modules/openid-client/lib/helpers/is_plain_object.js\");\n\nfunction merge(target, ...sources) {\n  for (const source of sources) {\n    if (!isPlainObject(source)) {\n      continue;\n    }\n    for (const [key, value] of Object.entries(source)) {\n      /* istanbul ignore if */\n      if (key === '__proto__' || key === 'constructor') {\n        continue;\n      }\n      if (isPlainObject(target[key]) && isPlainObject(value)) {\n        target[key] = merge(target[key], value);\n      } else if (typeof value !== 'undefined') {\n        target[key] = value;\n      }\n    }\n  }\n\n  return target;\n}\n\nmodule.exports = merge;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/lib/helpers/merge.js?")},"./node_modules/openid-client/lib/helpers/pick.js":
/*!********************************************************!*\
  !*** ./node_modules/openid-client/lib/helpers/pick.js ***!
  \********************************************************/module=>{eval("module.exports = function pick(object, ...paths) {\n  const obj = {};\n  for (const path of paths) {\n    if (object[path] !== undefined) {\n      obj[path] = object[path];\n    }\n  }\n  return obj;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/lib/helpers/pick.js?")},"./node_modules/openid-client/lib/helpers/process_response.js":
/*!********************************************************************!*\
  !*** ./node_modules/openid-client/lib/helpers/process_response.js ***!
  \********************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { STATUS_CODES } = __webpack_require__(/*! http */ \"http\");\nconst { format } = __webpack_require__(/*! util */ \"util\");\n\nconst { OPError } = __webpack_require__(/*! ../errors */ \"./node_modules/openid-client/lib/errors.js\");\nconst parseWwwAuthenticate = __webpack_require__(/*! ./www_authenticate_parser */ \"./node_modules/openid-client/lib/helpers/www_authenticate_parser.js\");\n\nconst throwAuthenticateErrors = (response) => {\n  const params = parseWwwAuthenticate(response.headers['www-authenticate']);\n\n  if (params.error) {\n    throw new OPError(params, response);\n  }\n};\n\nconst isStandardBodyError = (response) => {\n  let result = false;\n  try {\n    let jsonbody;\n    if (typeof response.body !== 'object' || Buffer.isBuffer(response.body)) {\n      jsonbody = JSON.parse(response.body);\n    } else {\n      jsonbody = response.body;\n    }\n    result = typeof jsonbody.error === 'string' && jsonbody.error.length;\n    if (result) Object.defineProperty(response, 'body', { value: jsonbody, configurable: true });\n  } catch (err) {}\n\n  return result;\n};\n\nfunction processResponse(response, { statusCode = 200, body = true, bearer = false } = {}) {\n  if (response.statusCode !== statusCode) {\n    if (bearer) {\n      throwAuthenticateErrors(response);\n    }\n\n    if (isStandardBodyError(response)) {\n      throw new OPError(response.body, response);\n    }\n\n    throw new OPError(\n      {\n        error: format(\n          'expected %i %s, got: %i %s',\n          statusCode,\n          STATUS_CODES[statusCode],\n          response.statusCode,\n          STATUS_CODES[response.statusCode],\n        ),\n      },\n      response,\n    );\n  }\n\n  if (body && !response.body) {\n    throw new OPError(\n      {\n        error: format(\n          'expected %i %s with body but no body was returned',\n          statusCode,\n          STATUS_CODES[statusCode],\n        ),\n      },\n      response,\n    );\n  }\n\n  return response.body;\n}\n\nmodule.exports = processResponse;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/lib/helpers/process_response.js?")},"./node_modules/openid-client/lib/helpers/request.js":
/*!***********************************************************!*\
  !*** ./node_modules/openid-client/lib/helpers/request.js ***!
  \***********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const assert = __webpack_require__(/*! assert */ \"assert\");\nconst querystring = __webpack_require__(/*! querystring */ \"querystring\");\nconst http = __webpack_require__(/*! http */ \"http\");\nconst https = __webpack_require__(/*! https */ \"https\");\nconst { once } = __webpack_require__(/*! events */ \"events\");\nconst { URL } = __webpack_require__(/*! url */ \"url\");\n\nconst LRU = __webpack_require__(/*! lru-cache */ \"./node_modules/lru-cache/index.js\");\n\nconst pkg = __webpack_require__(/*! ../../package.json */ \"./node_modules/openid-client/package.json\");\nconst { RPError } = __webpack_require__(/*! ../errors */ \"./node_modules/openid-client/lib/errors.js\");\n\nconst pick = __webpack_require__(/*! ./pick */ \"./node_modules/openid-client/lib/helpers/pick.js\");\nconst { deep: defaultsDeep } = __webpack_require__(/*! ./defaults */ \"./node_modules/openid-client/lib/helpers/defaults.js\");\nconst { HTTP_OPTIONS } = __webpack_require__(/*! ./consts */ \"./node_modules/openid-client/lib/helpers/consts.js\");\n\nlet DEFAULT_HTTP_OPTIONS;\nconst NQCHAR = /^[\\x21\\x23-\\x5B\\x5D-\\x7E]+$/;\n\nconst allowed = [\n  'agent',\n  'ca',\n  'cert',\n  'crl',\n  'headers',\n  'key',\n  'lookup',\n  'passphrase',\n  'pfx',\n  'timeout',\n];\n\nconst setDefaults = (props, options) => {\n  DEFAULT_HTTP_OPTIONS = defaultsDeep(\n    {},\n    props.length ? pick(options, ...props) : options,\n    DEFAULT_HTTP_OPTIONS,\n  );\n};\n\nsetDefaults([], {\n  headers: { 'User-Agent': `${pkg.name}/${pkg.version} (${pkg.homepage})` },\n  timeout: 3500,\n});\n\nfunction send(req, body, contentType) {\n  if (contentType) {\n    req.removeHeader('content-type');\n    req.setHeader('content-type', contentType);\n  }\n  if (body) {\n    req.removeHeader('content-length');\n    req.setHeader('content-length', Buffer.byteLength(body));\n    req.write(body);\n  }\n  req.end();\n}\n\nconst nonces = new LRU({ max: 100 });\n\nmodule.exports = async function request(options, { accessToken, mTLS = false, DPoP } = {}) {\n  let url;\n  try {\n    url = new URL(options.url);\n    delete options.url;\n    assert(/^(https?:)$/.test(url.protocol));\n  } catch (err) {\n    throw new TypeError('only valid absolute URLs can be requested');\n  }\n  const optsFn = this[HTTP_OPTIONS];\n  let opts = options;\n\n  const nonceKey = `${url.origin}${url.pathname}`;\n  if (DPoP && 'dpopProof' in this) {\n    opts.headers = opts.headers || {};\n    opts.headers.DPoP = await this.dpopProof(\n      {\n        htu: `${url.origin}${url.pathname}`,\n        htm: options.method,\n        nonce: nonces.get(nonceKey),\n      },\n      DPoP,\n      accessToken,\n    );\n  }\n\n  let userOptions;\n  if (optsFn) {\n    userOptions = pick(\n      optsFn.call(this, url, defaultsDeep({}, opts, DEFAULT_HTTP_OPTIONS)),\n      ...allowed,\n    );\n  }\n  opts = defaultsDeep({}, userOptions, opts, DEFAULT_HTTP_OPTIONS);\n\n  if (mTLS && !opts.pfx && !(opts.key && opts.cert)) {\n    throw new TypeError('mutual-TLS certificate and key not set');\n  }\n\n  if (opts.searchParams) {\n    for (const [key, value] of Object.entries(opts.searchParams)) {\n      url.searchParams.delete(key);\n      url.searchParams.set(key, value);\n    }\n  }\n\n  let responseType;\n  let form;\n  let json;\n  let body;\n  ({ form, responseType, json, body, ...opts } = opts);\n\n  for (const [key, value] of Object.entries(opts.headers || {})) {\n    if (value === undefined) {\n      delete opts.headers[key];\n    }\n  }\n\n  let response;\n  const req = (url.protocol === 'https:' ? https.request : http.request)(url.href, opts);\n  return (async () => {\n    if (json) {\n      send(req, JSON.stringify(json), 'application/json');\n    } else if (form) {\n      send(req, querystring.stringify(form), 'application/x-www-form-urlencoded');\n    } else if (body) {\n      send(req, body);\n    } else {\n      send(req);\n    }\n\n    [response] = await Promise.race([once(req, 'response'), once(req, 'timeout')]);\n\n    // timeout reached\n    if (!response) {\n      req.destroy();\n      throw new RPError(`outgoing request timed out after ${opts.timeout}ms`);\n    }\n\n    const parts = [];\n\n    for await (const part of response) {\n      parts.push(part);\n    }\n\n    if (parts.length) {\n      switch (responseType) {\n        case 'json': {\n          Object.defineProperty(response, 'body', {\n            get() {\n              let value = Buffer.concat(parts);\n              try {\n                value = JSON.parse(value);\n              } catch (err) {\n                Object.defineProperty(err, 'response', { value: response });\n                throw err;\n              } finally {\n                Object.defineProperty(response, 'body', { value, configurable: true });\n              }\n              return value;\n            },\n            configurable: true,\n          });\n          break;\n        }\n        case undefined:\n        case 'buffer': {\n          Object.defineProperty(response, 'body', {\n            get() {\n              const value = Buffer.concat(parts);\n              Object.defineProperty(response, 'body', { value, configurable: true });\n              return value;\n            },\n            configurable: true,\n          });\n          break;\n        }\n        default:\n          throw new TypeError('unsupported responseType request option');\n      }\n    }\n\n    return response;\n  })()\n    .catch((err) => {\n      if (response) Object.defineProperty(err, 'response', { value: response });\n      throw err;\n    })\n    .finally(() => {\n      const dpopNonce = response && response.headers['dpop-nonce'];\n      if (dpopNonce && NQCHAR.test(dpopNonce)) {\n        nonces.set(nonceKey, dpopNonce);\n      }\n    });\n};\n\nmodule.exports.setDefaults = setDefaults.bind(undefined, allowed);\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/lib/helpers/request.js?")},"./node_modules/openid-client/lib/helpers/unix_timestamp.js":
/*!******************************************************************!*\
  !*** ./node_modules/openid-client/lib/helpers/unix_timestamp.js ***!
  \******************************************************************/module=>{eval("module.exports = () => Math.floor(Date.now() / 1000);\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/lib/helpers/unix_timestamp.js?")},"./node_modules/openid-client/lib/helpers/weak_cache.js":
/*!**************************************************************!*\
  !*** ./node_modules/openid-client/lib/helpers/weak_cache.js ***!
  \**************************************************************/module=>{eval("module.exports.keystores = new WeakMap();\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/lib/helpers/weak_cache.js?")},"./node_modules/openid-client/lib/helpers/webfinger_normalize.js":
/*!***********************************************************************!*\
  !*** ./node_modules/openid-client/lib/helpers/webfinger_normalize.js ***!
  \***********************************************************************/module=>{eval("// Credit: https://github.com/rohe/pyoidc/blob/master/src/oic/utils/webfinger.py\n\n// -- Normalization --\n// A string of any other type is interpreted as a URI either the form of scheme\n// \"://\" authority path-abempty [ \"?\" query ] [ \"#\" fragment ] or authority\n// path-abempty [ \"?\" query ] [ \"#\" fragment ] per RFC 3986 [RFC3986] and is\n// normalized according to the following rules:\n//\n// If the user input Identifier does not have an RFC 3986 [RFC3986] scheme\n// portion, the string is interpreted as [userinfo \"@\"] host [\":\" port]\n// path-abempty [ \"?\" query ] [ \"#\" fragment ] per RFC 3986 [RFC3986].\n// If the userinfo component is present and all of the path component, query\n// component, and port component are empty, the acct scheme is assumed. In this\n// case, the normalized URI is formed by prefixing acct: to the string as the\n// scheme. Per the 'acct' URI Scheme [I‑D.ietf‑appsawg‑acct‑uri], if there is an\n// at-sign character ('@') in the userinfo component, it needs to be\n// percent-encoded as described in RFC 3986 [RFC3986].\n// For all other inputs without a scheme portion, the https scheme is assumed,\n// and the normalized URI is formed by prefixing https:// to the string as the\n// scheme.\n// If the resulting URI contains a fragment portion, it MUST be stripped off\n// together with the fragment delimiter character \"#\".\n// The WebFinger [I‑D.ietf‑appsawg‑webfinger] Resource in this case is the\n// resulting URI, and the WebFinger Host is the authority component.\n//\n// Note: Since the definition of authority in RFC 3986 [RFC3986] is\n// [ userinfo \"@\" ] host [ \":\" port ], it is legal to have a user input\n// identifier like userinfo@host:port, e.g., alice@example.com:8080.\n\nconst PORT = /^\\d+$/;\n\nfunction hasScheme(input) {\n  if (input.includes('://')) return true;\n\n  const authority = input.replace(/(\\/|\\?)/g, '#').split('#')[0];\n  if (authority.includes(':')) {\n    const index = authority.indexOf(':');\n    const hostOrPort = authority.slice(index + 1);\n    if (!PORT.test(hostOrPort)) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction acctSchemeAssumed(input) {\n  if (!input.includes('@')) return false;\n  const parts = input.split('@');\n  const host = parts[parts.length - 1];\n  return !(host.includes(':') || host.includes('/') || host.includes('?'));\n}\n\nfunction normalize(input) {\n  if (typeof input !== 'string') {\n    throw new TypeError('input must be a string');\n  }\n\n  let output;\n  if (hasScheme(input)) {\n    output = input;\n  } else if (acctSchemeAssumed(input)) {\n    output = `acct:${input}`;\n  } else {\n    output = `https://${input}`;\n  }\n\n  return output.split('#')[0];\n}\n\nmodule.exports = normalize;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/lib/helpers/webfinger_normalize.js?")},"./node_modules/openid-client/lib/helpers/www_authenticate_parser.js":
/*!***************************************************************************!*\
  !*** ./node_modules/openid-client/lib/helpers/www_authenticate_parser.js ***!
  \***************************************************************************/module=>{eval('const REGEXP = /(\\w+)=("[^"]*")/g;\n\nmodule.exports = (wwwAuthenticate) => {\n  const params = {};\n  try {\n    while (REGEXP.exec(wwwAuthenticate) !== null) {\n      if (RegExp.$1 && RegExp.$2) {\n        params[RegExp.$1] = RegExp.$2.slice(1, -1);\n      }\n    }\n  } catch (err) {}\n\n  return params;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/lib/helpers/www_authenticate_parser.js?')},"./node_modules/openid-client/lib/index.js":
/*!*************************************************!*\
  !*** ./node_modules/openid-client/lib/index.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const Issuer = __webpack_require__(/*! ./issuer */ "./node_modules/openid-client/lib/issuer.js");\nconst { OPError, RPError } = __webpack_require__(/*! ./errors */ "./node_modules/openid-client/lib/errors.js");\nconst Strategy = __webpack_require__(/*! ./passport_strategy */ "./node_modules/openid-client/lib/passport_strategy.js");\nconst TokenSet = __webpack_require__(/*! ./token_set */ "./node_modules/openid-client/lib/token_set.js");\nconst { CLOCK_TOLERANCE, HTTP_OPTIONS } = __webpack_require__(/*! ./helpers/consts */ "./node_modules/openid-client/lib/helpers/consts.js");\nconst generators = __webpack_require__(/*! ./helpers/generators */ "./node_modules/openid-client/lib/helpers/generators.js");\nconst { setDefaults } = __webpack_require__(/*! ./helpers/request */ "./node_modules/openid-client/lib/helpers/request.js");\n\nmodule.exports = {\n  Issuer,\n  Strategy,\n  TokenSet,\n  errors: {\n    OPError,\n    RPError,\n  },\n  custom: {\n    setHttpOptionsDefaults: setDefaults,\n    http_options: HTTP_OPTIONS,\n    clock_tolerance: CLOCK_TOLERANCE,\n  },\n  generators,\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/lib/index.js?')},"./node_modules/openid-client/lib/issuer.js":
/*!**************************************************!*\
  !*** ./node_modules/openid-client/lib/issuer.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const { inspect } = __webpack_require__(/*! util */ \"util\");\nconst url = __webpack_require__(/*! url */ \"url\");\n\nconst { RPError } = __webpack_require__(/*! ./errors */ \"./node_modules/openid-client/lib/errors.js\");\nconst getClient = __webpack_require__(/*! ./client */ \"./node_modules/openid-client/lib/client.js\");\nconst registry = __webpack_require__(/*! ./issuer_registry */ \"./node_modules/openid-client/lib/issuer_registry.js\");\nconst processResponse = __webpack_require__(/*! ./helpers/process_response */ \"./node_modules/openid-client/lib/helpers/process_response.js\");\nconst webfingerNormalize = __webpack_require__(/*! ./helpers/webfinger_normalize */ \"./node_modules/openid-client/lib/helpers/webfinger_normalize.js\");\nconst request = __webpack_require__(/*! ./helpers/request */ \"./node_modules/openid-client/lib/helpers/request.js\");\nconst clone = __webpack_require__(/*! ./helpers/deep_clone */ \"./node_modules/openid-client/lib/helpers/deep_clone.js\");\nconst { keystore } = __webpack_require__(/*! ./helpers/issuer */ \"./node_modules/openid-client/lib/helpers/issuer.js\");\n\nconst AAD_MULTITENANT_DISCOVERY = [\n  'https://login.microsoftonline.com/common/.well-known/openid-configuration',\n  'https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration',\n  'https://login.microsoftonline.com/organizations/v2.0/.well-known/openid-configuration',\n  'https://login.microsoftonline.com/consumers/v2.0/.well-known/openid-configuration',\n];\nconst AAD_MULTITENANT = Symbol();\nconst ISSUER_DEFAULTS = {\n  claim_types_supported: ['normal'],\n  claims_parameter_supported: false,\n  grant_types_supported: ['authorization_code', 'implicit'],\n  request_parameter_supported: false,\n  request_uri_parameter_supported: true,\n  require_request_uri_registration: false,\n  response_modes_supported: ['query', 'fragment'],\n  token_endpoint_auth_methods_supported: ['client_secret_basic'],\n};\n\nclass Issuer {\n  #metadata;\n  constructor(meta = {}) {\n    const aadIssValidation = meta[AAD_MULTITENANT];\n    delete meta[AAD_MULTITENANT];\n    ['introspection', 'revocation'].forEach((endpoint) => {\n      // if intro/revocation endpoint auth specific meta is missing use the token ones if they\n      // are defined\n      if (\n        meta[`${endpoint}_endpoint`] &&\n        meta[`${endpoint}_endpoint_auth_methods_supported`] === undefined &&\n        meta[`${endpoint}_endpoint_auth_signing_alg_values_supported`] === undefined\n      ) {\n        if (meta.token_endpoint_auth_methods_supported) {\n          meta[`${endpoint}_endpoint_auth_methods_supported`] =\n            meta.token_endpoint_auth_methods_supported;\n        }\n        if (meta.token_endpoint_auth_signing_alg_values_supported) {\n          meta[`${endpoint}_endpoint_auth_signing_alg_values_supported`] =\n            meta.token_endpoint_auth_signing_alg_values_supported;\n        }\n      }\n    });\n\n    this.#metadata = new Map();\n\n    Object.entries(meta).forEach(([key, value]) => {\n      this.#metadata.set(key, value);\n      if (!this[key]) {\n        Object.defineProperty(this, key, {\n          get() {\n            return this.#metadata.get(key);\n          },\n          enumerable: true,\n        });\n      }\n    });\n\n    registry.set(this.issuer, this);\n\n    const Client = getClient(this, aadIssValidation);\n\n    Object.defineProperties(this, {\n      Client: { value: Client, enumerable: true },\n      FAPI1Client: { value: class FAPI1Client extends Client {}, enumerable: true },\n    });\n  }\n\n  get metadata() {\n    return clone(Object.fromEntries(this.#metadata.entries()));\n  }\n\n  static async webfinger(input) {\n    const resource = webfingerNormalize(input);\n    const { host } = url.parse(resource);\n    const webfingerUrl = `https://${host}/.well-known/webfinger`;\n\n    const response = await request.call(this, {\n      method: 'GET',\n      url: webfingerUrl,\n      responseType: 'json',\n      searchParams: { resource, rel: 'http://openid.net/specs/connect/1.0/issuer' },\n      headers: {\n        Accept: 'application/json',\n      },\n    });\n    const body = processResponse(response);\n\n    const location =\n      Array.isArray(body.links) &&\n      body.links.find(\n        (link) =>\n          typeof link === 'object' &&\n          link.rel === 'http://openid.net/specs/connect/1.0/issuer' &&\n          link.href,\n      );\n\n    if (!location) {\n      throw new RPError({\n        message: 'no issuer found in webfinger response',\n        body,\n      });\n    }\n\n    if (typeof location.href !== 'string' || !location.href.startsWith('https://')) {\n      throw new RPError({\n        printf: ['invalid issuer location %s', location.href],\n        body,\n      });\n    }\n\n    const expectedIssuer = location.href;\n    if (registry.has(expectedIssuer)) {\n      return registry.get(expectedIssuer);\n    }\n\n    const issuer = await this.discover(expectedIssuer);\n\n    if (issuer.issuer !== expectedIssuer) {\n      registry.del(issuer.issuer);\n      throw new RPError(\n        'discovered issuer mismatch, expected %s, got: %s',\n        expectedIssuer,\n        issuer.issuer,\n      );\n    }\n    return issuer;\n  }\n\n  static async discover(uri) {\n    const parsed = url.parse(uri);\n\n    if (parsed.pathname.includes('/.well-known/')) {\n      const response = await request.call(this, {\n        method: 'GET',\n        responseType: 'json',\n        url: uri,\n        headers: {\n          Accept: 'application/json',\n        },\n      });\n      const body = processResponse(response);\n      return new Issuer({\n        ...ISSUER_DEFAULTS,\n        ...body,\n        [AAD_MULTITENANT]: !!AAD_MULTITENANT_DISCOVERY.find((discoveryURL) =>\n          uri.startsWith(discoveryURL),\n        ),\n      });\n    }\n\n    let pathname;\n    if (parsed.pathname.endsWith('/')) {\n      pathname = `${parsed.pathname}.well-known/openid-configuration`;\n    } else {\n      pathname = `${parsed.pathname}/.well-known/openid-configuration`;\n    }\n\n    const wellKnownUri = url.format({ ...parsed, pathname });\n\n    const response = await request.call(this, {\n      method: 'GET',\n      responseType: 'json',\n      url: wellKnownUri,\n      headers: {\n        Accept: 'application/json',\n      },\n    });\n    const body = processResponse(response);\n    return new Issuer({\n      ...ISSUER_DEFAULTS,\n      ...body,\n      [AAD_MULTITENANT]: !!AAD_MULTITENANT_DISCOVERY.find((discoveryURL) =>\n        wellKnownUri.startsWith(discoveryURL),\n      ),\n    });\n  }\n\n  async reloadJwksUri() {\n    await keystore.call(this, true);\n  }\n\n  /* istanbul ignore next */\n  [inspect.custom]() {\n    return `${this.constructor.name} ${inspect(this.metadata, {\n      depth: Infinity,\n      colors: process.stdout.isTTY,\n      compact: false,\n      sorted: true,\n    })}`;\n  }\n}\n\nmodule.exports = Issuer;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/lib/issuer.js?")},"./node_modules/openid-client/lib/issuer_registry.js":
/*!***********************************************************!*\
  !*** ./node_modules/openid-client/lib/issuer_registry.js ***!
  \***********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const LRU = __webpack_require__(/*! lru-cache */ "./node_modules/lru-cache/index.js");\n\nmodule.exports = new LRU({ max: 100 });\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/lib/issuer_registry.js?')},"./node_modules/openid-client/lib/passport_strategy.js":
/*!*************************************************************!*\
  !*** ./node_modules/openid-client/lib/passport_strategy.js ***!
  \*************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const url = __webpack_require__(/*! url */ \"url\");\nconst { format } = __webpack_require__(/*! util */ \"util\");\n\nconst cloneDeep = __webpack_require__(/*! ./helpers/deep_clone */ \"./node_modules/openid-client/lib/helpers/deep_clone.js\");\nconst { RPError, OPError } = __webpack_require__(/*! ./errors */ \"./node_modules/openid-client/lib/errors.js\");\nconst { BaseClient } = __webpack_require__(/*! ./client */ \"./node_modules/openid-client/lib/client.js\");\nconst { random, codeChallenge } = __webpack_require__(/*! ./helpers/generators */ \"./node_modules/openid-client/lib/helpers/generators.js\");\nconst pick = __webpack_require__(/*! ./helpers/pick */ \"./node_modules/openid-client/lib/helpers/pick.js\");\nconst { resolveResponseType, resolveRedirectUri } = __webpack_require__(/*! ./helpers/client */ \"./node_modules/openid-client/lib/helpers/client.js\");\n\nfunction verified(err, user, info = {}) {\n  if (err) {\n    this.error(err);\n  } else if (!user) {\n    this.fail(info);\n  } else {\n    this.success(user, info);\n  }\n}\n\nfunction OpenIDConnectStrategy(\n  { client, params = {}, passReqToCallback = false, sessionKey, usePKCE = true, extras = {} } = {},\n  verify,\n) {\n  if (!(client instanceof BaseClient)) {\n    throw new TypeError('client must be an instance of openid-client Client');\n  }\n\n  if (typeof verify !== 'function') {\n    throw new TypeError('verify callback must be a function');\n  }\n\n  if (!client.issuer || !client.issuer.issuer) {\n    throw new TypeError('client must have an issuer with an identifier');\n  }\n\n  this._client = client;\n  this._issuer = client.issuer;\n  this._verify = verify;\n  this._passReqToCallback = passReqToCallback;\n  this._usePKCE = usePKCE;\n  this._key = sessionKey || `oidc:${url.parse(this._issuer.issuer).hostname}`;\n  this._params = cloneDeep(params);\n  this._extras = cloneDeep(extras);\n\n  if (!this._params.response_type) this._params.response_type = resolveResponseType.call(client);\n  if (!this._params.redirect_uri) this._params.redirect_uri = resolveRedirectUri.call(client);\n  if (!this._params.scope) this._params.scope = 'openid';\n\n  if (this._usePKCE === true) {\n    const supportedMethods = Array.isArray(this._issuer.code_challenge_methods_supported)\n      ? this._issuer.code_challenge_methods_supported\n      : false;\n\n    if (supportedMethods && supportedMethods.includes('S256')) {\n      this._usePKCE = 'S256';\n    } else if (supportedMethods && supportedMethods.includes('plain')) {\n      this._usePKCE = 'plain';\n    } else if (supportedMethods) {\n      throw new TypeError(\n        'neither code_challenge_method supported by the client is supported by the issuer',\n      );\n    } else {\n      this._usePKCE = 'S256';\n    }\n  } else if (typeof this._usePKCE === 'string' && !['plain', 'S256'].includes(this._usePKCE)) {\n    throw new TypeError(`${this._usePKCE} is not valid/implemented PKCE code_challenge_method`);\n  }\n\n  this.name = url.parse(client.issuer.issuer).hostname;\n}\n\nOpenIDConnectStrategy.prototype.authenticate = function authenticate(req, options) {\n  (async () => {\n    const client = this._client;\n    if (!req.session) {\n      throw new TypeError('authentication requires session support');\n    }\n    const reqParams = client.callbackParams(req);\n    const sessionKey = this._key;\n\n    /* start authentication request */\n    if (Object.keys(reqParams).length === 0) {\n      // provide options object with extra authentication parameters\n      const params = {\n        state: random(),\n        ...this._params,\n        ...options,\n      };\n\n      if (!params.nonce && params.response_type.includes('id_token')) {\n        params.nonce = random();\n      }\n\n      req.session[sessionKey] = pick(params, 'nonce', 'state', 'max_age', 'response_type');\n\n      if (this._usePKCE && params.response_type.includes('code')) {\n        const verifier = random();\n        req.session[sessionKey].code_verifier = verifier;\n\n        switch (this._usePKCE) {\n          case 'S256':\n            params.code_challenge = codeChallenge(verifier);\n            params.code_challenge_method = 'S256';\n            break;\n          case 'plain':\n            params.code_challenge = verifier;\n            break;\n        }\n      }\n\n      this.redirect(client.authorizationUrl(params));\n      return;\n    }\n    /* end authentication request */\n\n    /* start authentication response */\n\n    const session = req.session[sessionKey];\n    if (Object.keys(session || {}).length === 0) {\n      throw new Error(\n        format(\n          'did not find expected authorization request details in session, req.session[\"%s\"] is %j',\n          sessionKey,\n          session,\n        ),\n      );\n    }\n\n    const {\n      state,\n      nonce,\n      max_age: maxAge,\n      code_verifier: codeVerifier,\n      response_type: responseType,\n    } = session;\n\n    try {\n      delete req.session[sessionKey];\n    } catch (err) {}\n\n    const opts = {\n      redirect_uri: this._params.redirect_uri,\n      ...options,\n    };\n\n    const checks = {\n      state,\n      nonce,\n      max_age: maxAge,\n      code_verifier: codeVerifier,\n      response_type: responseType,\n    };\n\n    const tokenset = await client.callback(opts.redirect_uri, reqParams, checks, this._extras);\n\n    const passReq = this._passReqToCallback;\n    const loadUserinfo = this._verify.length > (passReq ? 3 : 2) && client.issuer.userinfo_endpoint;\n\n    const args = [tokenset, verified.bind(this)];\n\n    if (loadUserinfo) {\n      if (!tokenset.access_token) {\n        throw new RPError({\n          message:\n            'expected access_token to be returned when asking for userinfo in verify callback',\n          tokenset,\n        });\n      }\n      const userinfo = await client.userinfo(tokenset);\n      args.splice(1, 0, userinfo);\n    }\n\n    if (passReq) {\n      args.unshift(req);\n    }\n\n    this._verify(...args);\n    /* end authentication response */\n  })().catch((error) => {\n    if (\n      (error instanceof OPError &&\n        error.error !== 'server_error' &&\n        !error.error.startsWith('invalid')) ||\n      error instanceof RPError\n    ) {\n      this.fail(error);\n    } else {\n      this.error(error);\n    }\n  });\n};\n\nmodule.exports = OpenIDConnectStrategy;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/lib/passport_strategy.js?")},"./node_modules/openid-client/lib/token_set.js":
/*!*****************************************************!*\
  !*** ./node_modules/openid-client/lib/token_set.js ***!
  \*****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const base64url = __webpack_require__(/*! ./helpers/base64url */ \"./node_modules/openid-client/lib/helpers/base64url.js\");\nconst now = __webpack_require__(/*! ./helpers/unix_timestamp */ \"./node_modules/openid-client/lib/helpers/unix_timestamp.js\");\n\nclass TokenSet {\n  constructor(values) {\n    Object.assign(this, values);\n  }\n\n  set expires_in(value) {\n    this.expires_at = now() + Number(value);\n  }\n\n  get expires_in() {\n    return Math.max.apply(null, [this.expires_at - now(), 0]);\n  }\n\n  expired() {\n    return this.expires_in === 0;\n  }\n\n  claims() {\n    if (!this.id_token) {\n      throw new TypeError('id_token not present in TokenSet');\n    }\n\n    return JSON.parse(base64url.decode(this.id_token.split('.')[1]));\n  }\n}\n\nmodule.exports = TokenSet;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/lib/token_set.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/index.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/index.js ***!
  \*****************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.base64url = exports.generateSecret = exports.generateKeyPair = exports.errors = exports.decodeJwt = exports.decodeProtectedHeader = exports.importJWK = exports.importX509 = exports.importPKCS8 = exports.importSPKI = exports.exportJWK = exports.exportSPKI = exports.exportPKCS8 = exports.UnsecuredJWT = exports.createRemoteJWKSet = exports.createLocalJWKSet = exports.EmbeddedJWK = exports.calculateJwkThumbprint = exports.EncryptJWT = exports.SignJWT = exports.GeneralSign = exports.FlattenedSign = exports.CompactSign = exports.FlattenedEncrypt = exports.CompactEncrypt = exports.jwtDecrypt = exports.jwtVerify = exports.generalVerify = exports.flattenedVerify = exports.compactVerify = exports.GeneralEncrypt = exports.generalDecrypt = exports.flattenedDecrypt = exports.compactDecrypt = void 0;\nvar decrypt_js_1 = __webpack_require__(/*! ./jwe/compact/decrypt.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/compact/decrypt.js");\nObject.defineProperty(exports, "compactDecrypt", ({ enumerable: true, get: function () { return decrypt_js_1.compactDecrypt; } }));\nvar decrypt_js_2 = __webpack_require__(/*! ./jwe/flattened/decrypt.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/flattened/decrypt.js");\nObject.defineProperty(exports, "flattenedDecrypt", ({ enumerable: true, get: function () { return decrypt_js_2.flattenedDecrypt; } }));\nvar decrypt_js_3 = __webpack_require__(/*! ./jwe/general/decrypt.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/general/decrypt.js");\nObject.defineProperty(exports, "generalDecrypt", ({ enumerable: true, get: function () { return decrypt_js_3.generalDecrypt; } }));\nvar encrypt_js_1 = __webpack_require__(/*! ./jwe/general/encrypt.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/general/encrypt.js");\nObject.defineProperty(exports, "GeneralEncrypt", ({ enumerable: true, get: function () { return encrypt_js_1.GeneralEncrypt; } }));\nvar verify_js_1 = __webpack_require__(/*! ./jws/compact/verify.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/compact/verify.js");\nObject.defineProperty(exports, "compactVerify", ({ enumerable: true, get: function () { return verify_js_1.compactVerify; } }));\nvar verify_js_2 = __webpack_require__(/*! ./jws/flattened/verify.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/flattened/verify.js");\nObject.defineProperty(exports, "flattenedVerify", ({ enumerable: true, get: function () { return verify_js_2.flattenedVerify; } }));\nvar verify_js_3 = __webpack_require__(/*! ./jws/general/verify.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/general/verify.js");\nObject.defineProperty(exports, "generalVerify", ({ enumerable: true, get: function () { return verify_js_3.generalVerify; } }));\nvar verify_js_4 = __webpack_require__(/*! ./jwt/verify.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwt/verify.js");\nObject.defineProperty(exports, "jwtVerify", ({ enumerable: true, get: function () { return verify_js_4.jwtVerify; } }));\nvar decrypt_js_4 = __webpack_require__(/*! ./jwt/decrypt.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwt/decrypt.js");\nObject.defineProperty(exports, "jwtDecrypt", ({ enumerable: true, get: function () { return decrypt_js_4.jwtDecrypt; } }));\nvar encrypt_js_2 = __webpack_require__(/*! ./jwe/compact/encrypt.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/compact/encrypt.js");\nObject.defineProperty(exports, "CompactEncrypt", ({ enumerable: true, get: function () { return encrypt_js_2.CompactEncrypt; } }));\nvar encrypt_js_3 = __webpack_require__(/*! ./jwe/flattened/encrypt.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/flattened/encrypt.js");\nObject.defineProperty(exports, "FlattenedEncrypt", ({ enumerable: true, get: function () { return encrypt_js_3.FlattenedEncrypt; } }));\nvar sign_js_1 = __webpack_require__(/*! ./jws/compact/sign.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/compact/sign.js");\nObject.defineProperty(exports, "CompactSign", ({ enumerable: true, get: function () { return sign_js_1.CompactSign; } }));\nvar sign_js_2 = __webpack_require__(/*! ./jws/flattened/sign.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/flattened/sign.js");\nObject.defineProperty(exports, "FlattenedSign", ({ enumerable: true, get: function () { return sign_js_2.FlattenedSign; } }));\nvar sign_js_3 = __webpack_require__(/*! ./jws/general/sign.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/general/sign.js");\nObject.defineProperty(exports, "GeneralSign", ({ enumerable: true, get: function () { return sign_js_3.GeneralSign; } }));\nvar sign_js_4 = __webpack_require__(/*! ./jwt/sign.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwt/sign.js");\nObject.defineProperty(exports, "SignJWT", ({ enumerable: true, get: function () { return sign_js_4.SignJWT; } }));\nvar encrypt_js_4 = __webpack_require__(/*! ./jwt/encrypt.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwt/encrypt.js");\nObject.defineProperty(exports, "EncryptJWT", ({ enumerable: true, get: function () { return encrypt_js_4.EncryptJWT; } }));\nvar thumbprint_js_1 = __webpack_require__(/*! ./jwk/thumbprint.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwk/thumbprint.js");\nObject.defineProperty(exports, "calculateJwkThumbprint", ({ enumerable: true, get: function () { return thumbprint_js_1.calculateJwkThumbprint; } }));\nvar embedded_js_1 = __webpack_require__(/*! ./jwk/embedded.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwk/embedded.js");\nObject.defineProperty(exports, "EmbeddedJWK", ({ enumerable: true, get: function () { return embedded_js_1.EmbeddedJWK; } }));\nvar local_js_1 = __webpack_require__(/*! ./jwks/local.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwks/local.js");\nObject.defineProperty(exports, "createLocalJWKSet", ({ enumerable: true, get: function () { return local_js_1.createLocalJWKSet; } }));\nvar remote_js_1 = __webpack_require__(/*! ./jwks/remote.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwks/remote.js");\nObject.defineProperty(exports, "createRemoteJWKSet", ({ enumerable: true, get: function () { return remote_js_1.createRemoteJWKSet; } }));\nvar unsecured_js_1 = __webpack_require__(/*! ./jwt/unsecured.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwt/unsecured.js");\nObject.defineProperty(exports, "UnsecuredJWT", ({ enumerable: true, get: function () { return unsecured_js_1.UnsecuredJWT; } }));\nvar export_js_1 = __webpack_require__(/*! ./key/export.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/key/export.js");\nObject.defineProperty(exports, "exportPKCS8", ({ enumerable: true, get: function () { return export_js_1.exportPKCS8; } }));\nObject.defineProperty(exports, "exportSPKI", ({ enumerable: true, get: function () { return export_js_1.exportSPKI; } }));\nObject.defineProperty(exports, "exportJWK", ({ enumerable: true, get: function () { return export_js_1.exportJWK; } }));\nvar import_js_1 = __webpack_require__(/*! ./key/import.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/key/import.js");\nObject.defineProperty(exports, "importSPKI", ({ enumerable: true, get: function () { return import_js_1.importSPKI; } }));\nObject.defineProperty(exports, "importPKCS8", ({ enumerable: true, get: function () { return import_js_1.importPKCS8; } }));\nObject.defineProperty(exports, "importX509", ({ enumerable: true, get: function () { return import_js_1.importX509; } }));\nObject.defineProperty(exports, "importJWK", ({ enumerable: true, get: function () { return import_js_1.importJWK; } }));\nvar decode_protected_header_js_1 = __webpack_require__(/*! ./util/decode_protected_header.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/decode_protected_header.js");\nObject.defineProperty(exports, "decodeProtectedHeader", ({ enumerable: true, get: function () { return decode_protected_header_js_1.decodeProtectedHeader; } }));\nvar decode_jwt_js_1 = __webpack_require__(/*! ./util/decode_jwt.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/decode_jwt.js");\nObject.defineProperty(exports, "decodeJwt", ({ enumerable: true, get: function () { return decode_jwt_js_1.decodeJwt; } }));\nexports.errors = __webpack_require__(/*! ./util/errors.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js");\nvar generate_key_pair_js_1 = __webpack_require__(/*! ./key/generate_key_pair.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/key/generate_key_pair.js");\nObject.defineProperty(exports, "generateKeyPair", ({ enumerable: true, get: function () { return generate_key_pair_js_1.generateKeyPair; } }));\nvar generate_secret_js_1 = __webpack_require__(/*! ./key/generate_secret.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/key/generate_secret.js");\nObject.defineProperty(exports, "generateSecret", ({ enumerable: true, get: function () { return generate_secret_js_1.generateSecret; } }));\nexports.base64url = __webpack_require__(/*! ./util/base64url.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/base64url.js");\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/index.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/compact/decrypt.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/compact/decrypt.js ***!
  \*******************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.compactDecrypt = void 0;\nconst decrypt_js_1 = __webpack_require__(/*! ../flattened/decrypt.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/flattened/decrypt.js\");\nconst errors_js_1 = __webpack_require__(/*! ../../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nconst buffer_utils_js_1 = __webpack_require__(/*! ../../lib/buffer_utils.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/buffer_utils.js\");\nasync function compactDecrypt(jwe, key, options) {\n    if (jwe instanceof Uint8Array) {\n        jwe = buffer_utils_js_1.decoder.decode(jwe);\n    }\n    if (typeof jwe !== 'string') {\n        throw new errors_js_1.JWEInvalid('Compact JWE must be a string or Uint8Array');\n    }\n    const { 0: protectedHeader, 1: encryptedKey, 2: iv, 3: ciphertext, 4: tag, length, } = jwe.split('.');\n    if (length !== 5) {\n        throw new errors_js_1.JWEInvalid('Invalid Compact JWE');\n    }\n    const decrypted = await (0, decrypt_js_1.flattenedDecrypt)({\n        ciphertext: (ciphertext || undefined),\n        iv: (iv || undefined),\n        protected: protectedHeader || undefined,\n        tag: (tag || undefined),\n        encrypted_key: encryptedKey || undefined,\n    }, key, options);\n    const result = { plaintext: decrypted.plaintext, protectedHeader: decrypted.protectedHeader };\n    if (typeof key === 'function') {\n        return { ...result, key: decrypted.key };\n    }\n    return result;\n}\nexports.compactDecrypt = compactDecrypt;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/compact/decrypt.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/compact/encrypt.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/compact/encrypt.js ***!
  \*******************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.CompactEncrypt = void 0;\nconst encrypt_js_1 = __webpack_require__(/*! ../flattened/encrypt.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/flattened/encrypt.js");\nclass CompactEncrypt {\n    constructor(plaintext) {\n        this._flattened = new encrypt_js_1.FlattenedEncrypt(plaintext);\n    }\n    setContentEncryptionKey(cek) {\n        this._flattened.setContentEncryptionKey(cek);\n        return this;\n    }\n    setInitializationVector(iv) {\n        this._flattened.setInitializationVector(iv);\n        return this;\n    }\n    setProtectedHeader(protectedHeader) {\n        this._flattened.setProtectedHeader(protectedHeader);\n        return this;\n    }\n    setKeyManagementParameters(parameters) {\n        this._flattened.setKeyManagementParameters(parameters);\n        return this;\n    }\n    async encrypt(key, options) {\n        const jwe = await this._flattened.encrypt(key, options);\n        return [jwe.protected, jwe.encrypted_key, jwe.iv, jwe.ciphertext, jwe.tag].join(\'.\');\n    }\n}\nexports.CompactEncrypt = CompactEncrypt;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/compact/encrypt.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/flattened/decrypt.js":
/*!*********************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/flattened/decrypt.js ***!
  \*********************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.flattenedDecrypt = void 0;\nconst base64url_js_1 = __webpack_require__(/*! ../../runtime/base64url.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/base64url.js\");\nconst decrypt_js_1 = __webpack_require__(/*! ../../runtime/decrypt.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/decrypt.js\");\nconst zlib_js_1 = __webpack_require__(/*! ../../runtime/zlib.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/zlib.js\");\nconst errors_js_1 = __webpack_require__(/*! ../../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nconst is_disjoint_js_1 = __webpack_require__(/*! ../../lib/is_disjoint.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/is_disjoint.js\");\nconst is_object_js_1 = __webpack_require__(/*! ../../lib/is_object.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/is_object.js\");\nconst decrypt_key_management_js_1 = __webpack_require__(/*! ../../lib/decrypt_key_management.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/decrypt_key_management.js\");\nconst buffer_utils_js_1 = __webpack_require__(/*! ../../lib/buffer_utils.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/buffer_utils.js\");\nconst cek_js_1 = __webpack_require__(/*! ../../lib/cek.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/cek.js\");\nconst validate_crit_js_1 = __webpack_require__(/*! ../../lib/validate_crit.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/validate_crit.js\");\nconst validate_algorithms_js_1 = __webpack_require__(/*! ../../lib/validate_algorithms.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/validate_algorithms.js\");\nasync function flattenedDecrypt(jwe, key, options) {\n    var _a;\n    if (!(0, is_object_js_1.default)(jwe)) {\n        throw new errors_js_1.JWEInvalid('Flattened JWE must be an object');\n    }\n    if (jwe.protected === undefined && jwe.header === undefined && jwe.unprotected === undefined) {\n        throw new errors_js_1.JWEInvalid('JOSE Header missing');\n    }\n    if (typeof jwe.iv !== 'string') {\n        throw new errors_js_1.JWEInvalid('JWE Initialization Vector missing or incorrect type');\n    }\n    if (typeof jwe.ciphertext !== 'string') {\n        throw new errors_js_1.JWEInvalid('JWE Ciphertext missing or incorrect type');\n    }\n    if (typeof jwe.tag !== 'string') {\n        throw new errors_js_1.JWEInvalid('JWE Authentication Tag missing or incorrect type');\n    }\n    if (jwe.protected !== undefined && typeof jwe.protected !== 'string') {\n        throw new errors_js_1.JWEInvalid('JWE Protected Header incorrect type');\n    }\n    if (jwe.encrypted_key !== undefined && typeof jwe.encrypted_key !== 'string') {\n        throw new errors_js_1.JWEInvalid('JWE Encrypted Key incorrect type');\n    }\n    if (jwe.aad !== undefined && typeof jwe.aad !== 'string') {\n        throw new errors_js_1.JWEInvalid('JWE AAD incorrect type');\n    }\n    if (jwe.header !== undefined && !(0, is_object_js_1.default)(jwe.header)) {\n        throw new errors_js_1.JWEInvalid('JWE Shared Unprotected Header incorrect type');\n    }\n    if (jwe.unprotected !== undefined && !(0, is_object_js_1.default)(jwe.unprotected)) {\n        throw new errors_js_1.JWEInvalid('JWE Per-Recipient Unprotected Header incorrect type');\n    }\n    let parsedProt;\n    if (jwe.protected) {\n        const protectedHeader = (0, base64url_js_1.decode)(jwe.protected);\n        try {\n            parsedProt = JSON.parse(buffer_utils_js_1.decoder.decode(protectedHeader));\n        }\n        catch {\n            throw new errors_js_1.JWEInvalid('JWE Protected Header is invalid');\n        }\n    }\n    if (!(0, is_disjoint_js_1.default)(parsedProt, jwe.header, jwe.unprotected)) {\n        throw new errors_js_1.JWEInvalid('JWE Protected, JWE Unprotected Header, and JWE Per-Recipient Unprotected Header Parameter names must be disjoint');\n    }\n    const joseHeader = {\n        ...parsedProt,\n        ...jwe.header,\n        ...jwe.unprotected,\n    };\n    (0, validate_crit_js_1.default)(errors_js_1.JWEInvalid, new Map(), options === null || options === void 0 ? void 0 : options.crit, parsedProt, joseHeader);\n    if (joseHeader.zip !== undefined) {\n        if (!parsedProt || !parsedProt.zip) {\n            throw new errors_js_1.JWEInvalid('JWE \"zip\" (Compression Algorithm) Header MUST be integrity protected');\n        }\n        if (joseHeader.zip !== 'DEF') {\n            throw new errors_js_1.JOSENotSupported('Unsupported JWE \"zip\" (Compression Algorithm) Header Parameter value');\n        }\n    }\n    const { alg, enc } = joseHeader;\n    if (typeof alg !== 'string' || !alg) {\n        throw new errors_js_1.JWEInvalid('missing JWE Algorithm (alg) in JWE Header');\n    }\n    if (typeof enc !== 'string' || !enc) {\n        throw new errors_js_1.JWEInvalid('missing JWE Encryption Algorithm (enc) in JWE Header');\n    }\n    const keyManagementAlgorithms = options && (0, validate_algorithms_js_1.default)('keyManagementAlgorithms', options.keyManagementAlgorithms);\n    const contentEncryptionAlgorithms = options &&\n        (0, validate_algorithms_js_1.default)('contentEncryptionAlgorithms', options.contentEncryptionAlgorithms);\n    if (keyManagementAlgorithms && !keyManagementAlgorithms.has(alg)) {\n        throw new errors_js_1.JOSEAlgNotAllowed('\"alg\" (Algorithm) Header Parameter not allowed');\n    }\n    if (contentEncryptionAlgorithms && !contentEncryptionAlgorithms.has(enc)) {\n        throw new errors_js_1.JOSEAlgNotAllowed('\"enc\" (Encryption Algorithm) Header Parameter not allowed');\n    }\n    let encryptedKey;\n    if (jwe.encrypted_key !== undefined) {\n        encryptedKey = (0, base64url_js_1.decode)(jwe.encrypted_key);\n    }\n    let resolvedKey = false;\n    if (typeof key === 'function') {\n        key = await key(parsedProt, jwe);\n        resolvedKey = true;\n    }\n    let cek;\n    try {\n        cek = await (0, decrypt_key_management_js_1.default)(alg, key, encryptedKey, joseHeader);\n    }\n    catch (err) {\n        if (err instanceof TypeError) {\n            throw err;\n        }\n        cek = (0, cek_js_1.default)(enc);\n    }\n    const iv = (0, base64url_js_1.decode)(jwe.iv);\n    const tag = (0, base64url_js_1.decode)(jwe.tag);\n    const protectedHeader = buffer_utils_js_1.encoder.encode((_a = jwe.protected) !== null && _a !== void 0 ? _a : '');\n    let additionalData;\n    if (jwe.aad !== undefined) {\n        additionalData = (0, buffer_utils_js_1.concat)(protectedHeader, buffer_utils_js_1.encoder.encode('.'), buffer_utils_js_1.encoder.encode(jwe.aad));\n    }\n    else {\n        additionalData = protectedHeader;\n    }\n    let plaintext = await (0, decrypt_js_1.default)(enc, cek, (0, base64url_js_1.decode)(jwe.ciphertext), iv, tag, additionalData);\n    if (joseHeader.zip === 'DEF') {\n        plaintext = await ((options === null || options === void 0 ? void 0 : options.inflateRaw) || zlib_js_1.inflate)(plaintext);\n    }\n    const result = { plaintext };\n    if (jwe.protected !== undefined) {\n        result.protectedHeader = parsedProt;\n    }\n    if (jwe.aad !== undefined) {\n        result.additionalAuthenticatedData = (0, base64url_js_1.decode)(jwe.aad);\n    }\n    if (jwe.unprotected !== undefined) {\n        result.sharedUnprotectedHeader = jwe.unprotected;\n    }\n    if (jwe.header !== undefined) {\n        result.unprotectedHeader = jwe.header;\n    }\n    if (resolvedKey) {\n        return { ...result, key };\n    }\n    return result;\n}\nexports.flattenedDecrypt = flattenedDecrypt;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/flattened/decrypt.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/flattened/encrypt.js":
/*!*********************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/flattened/encrypt.js ***!
  \*********************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FlattenedEncrypt = exports.unprotected = void 0;\nconst base64url_js_1 = __webpack_require__(/*! ../../runtime/base64url.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/base64url.js\");\nconst encrypt_js_1 = __webpack_require__(/*! ../../runtime/encrypt.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/encrypt.js\");\nconst zlib_js_1 = __webpack_require__(/*! ../../runtime/zlib.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/zlib.js\");\nconst iv_js_1 = __webpack_require__(/*! ../../lib/iv.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/iv.js\");\nconst encrypt_key_management_js_1 = __webpack_require__(/*! ../../lib/encrypt_key_management.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/encrypt_key_management.js\");\nconst errors_js_1 = __webpack_require__(/*! ../../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nconst is_disjoint_js_1 = __webpack_require__(/*! ../../lib/is_disjoint.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/is_disjoint.js\");\nconst buffer_utils_js_1 = __webpack_require__(/*! ../../lib/buffer_utils.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/buffer_utils.js\");\nconst validate_crit_js_1 = __webpack_require__(/*! ../../lib/validate_crit.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/validate_crit.js\");\nexports.unprotected = Symbol();\nclass FlattenedEncrypt {\n    constructor(plaintext) {\n        if (!(plaintext instanceof Uint8Array)) {\n            throw new TypeError('plaintext must be an instance of Uint8Array');\n        }\n        this._plaintext = plaintext;\n    }\n    setKeyManagementParameters(parameters) {\n        if (this._keyManagementParameters) {\n            throw new TypeError('setKeyManagementParameters can only be called once');\n        }\n        this._keyManagementParameters = parameters;\n        return this;\n    }\n    setProtectedHeader(protectedHeader) {\n        if (this._protectedHeader) {\n            throw new TypeError('setProtectedHeader can only be called once');\n        }\n        this._protectedHeader = protectedHeader;\n        return this;\n    }\n    setSharedUnprotectedHeader(sharedUnprotectedHeader) {\n        if (this._sharedUnprotectedHeader) {\n            throw new TypeError('setSharedUnprotectedHeader can only be called once');\n        }\n        this._sharedUnprotectedHeader = sharedUnprotectedHeader;\n        return this;\n    }\n    setUnprotectedHeader(unprotectedHeader) {\n        if (this._unprotectedHeader) {\n            throw new TypeError('setUnprotectedHeader can only be called once');\n        }\n        this._unprotectedHeader = unprotectedHeader;\n        return this;\n    }\n    setAdditionalAuthenticatedData(aad) {\n        this._aad = aad;\n        return this;\n    }\n    setContentEncryptionKey(cek) {\n        if (this._cek) {\n            throw new TypeError('setContentEncryptionKey can only be called once');\n        }\n        this._cek = cek;\n        return this;\n    }\n    setInitializationVector(iv) {\n        if (this._iv) {\n            throw new TypeError('setInitializationVector can only be called once');\n        }\n        this._iv = iv;\n        return this;\n    }\n    async encrypt(key, options) {\n        if (!this._protectedHeader && !this._unprotectedHeader && !this._sharedUnprotectedHeader) {\n            throw new errors_js_1.JWEInvalid('either setProtectedHeader, setUnprotectedHeader, or sharedUnprotectedHeader must be called before #encrypt()');\n        }\n        if (!(0, is_disjoint_js_1.default)(this._protectedHeader, this._unprotectedHeader, this._sharedUnprotectedHeader)) {\n            throw new errors_js_1.JWEInvalid('JWE Protected, JWE Shared Unprotected and JWE Per-Recipient Header Parameter names must be disjoint');\n        }\n        const joseHeader = {\n            ...this._protectedHeader,\n            ...this._unprotectedHeader,\n            ...this._sharedUnprotectedHeader,\n        };\n        (0, validate_crit_js_1.default)(errors_js_1.JWEInvalid, new Map(), options === null || options === void 0 ? void 0 : options.crit, this._protectedHeader, joseHeader);\n        if (joseHeader.zip !== undefined) {\n            if (!this._protectedHeader || !this._protectedHeader.zip) {\n                throw new errors_js_1.JWEInvalid('JWE \"zip\" (Compression Algorithm) Header MUST be integrity protected');\n            }\n            if (joseHeader.zip !== 'DEF') {\n                throw new errors_js_1.JOSENotSupported('Unsupported JWE \"zip\" (Compression Algorithm) Header Parameter value');\n            }\n        }\n        const { alg, enc } = joseHeader;\n        if (typeof alg !== 'string' || !alg) {\n            throw new errors_js_1.JWEInvalid('JWE \"alg\" (Algorithm) Header Parameter missing or invalid');\n        }\n        if (typeof enc !== 'string' || !enc) {\n            throw new errors_js_1.JWEInvalid('JWE \"enc\" (Encryption Algorithm) Header Parameter missing or invalid');\n        }\n        let encryptedKey;\n        if (alg === 'dir') {\n            if (this._cek) {\n                throw new TypeError('setContentEncryptionKey cannot be called when using Direct Encryption');\n            }\n        }\n        else if (alg === 'ECDH-ES') {\n            if (this._cek) {\n                throw new TypeError('setContentEncryptionKey cannot be called when using Direct Key Agreement');\n            }\n        }\n        let cek;\n        {\n            let parameters;\n            ({ cek, encryptedKey, parameters } = await (0, encrypt_key_management_js_1.default)(alg, enc, key, this._cek, this._keyManagementParameters));\n            if (parameters) {\n                if (options && exports.unprotected in options) {\n                    if (!this._unprotectedHeader) {\n                        this.setUnprotectedHeader(parameters);\n                    }\n                    else {\n                        this._unprotectedHeader = { ...this._unprotectedHeader, ...parameters };\n                    }\n                }\n                else {\n                    if (!this._protectedHeader) {\n                        this.setProtectedHeader(parameters);\n                    }\n                    else {\n                        this._protectedHeader = { ...this._protectedHeader, ...parameters };\n                    }\n                }\n            }\n        }\n        this._iv || (this._iv = (0, iv_js_1.default)(enc));\n        let additionalData;\n        let protectedHeader;\n        let aadMember;\n        if (this._protectedHeader) {\n            protectedHeader = buffer_utils_js_1.encoder.encode((0, base64url_js_1.encode)(JSON.stringify(this._protectedHeader)));\n        }\n        else {\n            protectedHeader = buffer_utils_js_1.encoder.encode('');\n        }\n        if (this._aad) {\n            aadMember = (0, base64url_js_1.encode)(this._aad);\n            additionalData = (0, buffer_utils_js_1.concat)(protectedHeader, buffer_utils_js_1.encoder.encode('.'), buffer_utils_js_1.encoder.encode(aadMember));\n        }\n        else {\n            additionalData = protectedHeader;\n        }\n        let ciphertext;\n        let tag;\n        if (joseHeader.zip === 'DEF') {\n            const deflated = await ((options === null || options === void 0 ? void 0 : options.deflateRaw) || zlib_js_1.deflate)(this._plaintext);\n            ({ ciphertext, tag } = await (0, encrypt_js_1.default)(enc, deflated, cek, this._iv, additionalData));\n        }\n        else {\n            ;\n            ({ ciphertext, tag } = await (0, encrypt_js_1.default)(enc, this._plaintext, cek, this._iv, additionalData));\n        }\n        const jwe = {\n            ciphertext: (0, base64url_js_1.encode)(ciphertext),\n            iv: (0, base64url_js_1.encode)(this._iv),\n            tag: (0, base64url_js_1.encode)(tag),\n        };\n        if (encryptedKey) {\n            jwe.encrypted_key = (0, base64url_js_1.encode)(encryptedKey);\n        }\n        if (aadMember) {\n            jwe.aad = aadMember;\n        }\n        if (this._protectedHeader) {\n            jwe.protected = buffer_utils_js_1.decoder.decode(protectedHeader);\n        }\n        if (this._sharedUnprotectedHeader) {\n            jwe.unprotected = this._sharedUnprotectedHeader;\n        }\n        if (this._unprotectedHeader) {\n            jwe.header = this._unprotectedHeader;\n        }\n        return jwe;\n    }\n}\nexports.FlattenedEncrypt = FlattenedEncrypt;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/flattened/encrypt.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/general/decrypt.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/general/decrypt.js ***!
  \*******************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.generalDecrypt = void 0;\nconst decrypt_js_1 = __webpack_require__(/*! ../flattened/decrypt.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/flattened/decrypt.js");\nconst errors_js_1 = __webpack_require__(/*! ../../util/errors.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js");\nconst is_object_js_1 = __webpack_require__(/*! ../../lib/is_object.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/is_object.js");\nasync function generalDecrypt(jwe, key, options) {\n    if (!(0, is_object_js_1.default)(jwe)) {\n        throw new errors_js_1.JWEInvalid(\'General JWE must be an object\');\n    }\n    if (!Array.isArray(jwe.recipients) || !jwe.recipients.every(is_object_js_1.default)) {\n        throw new errors_js_1.JWEInvalid(\'JWE Recipients missing or incorrect type\');\n    }\n    if (!jwe.recipients.length) {\n        throw new errors_js_1.JWEInvalid(\'JWE Recipients has no members\');\n    }\n    for (const recipient of jwe.recipients) {\n        try {\n            return await (0, decrypt_js_1.flattenedDecrypt)({\n                aad: jwe.aad,\n                ciphertext: jwe.ciphertext,\n                encrypted_key: recipient.encrypted_key,\n                header: recipient.header,\n                iv: jwe.iv,\n                protected: jwe.protected,\n                tag: jwe.tag,\n                unprotected: jwe.unprotected,\n            }, key, options);\n        }\n        catch {\n        }\n    }\n    throw new errors_js_1.JWEDecryptionFailed();\n}\nexports.generalDecrypt = generalDecrypt;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/general/decrypt.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/general/encrypt.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/general/encrypt.js ***!
  \*******************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GeneralEncrypt = void 0;\nconst encrypt_js_1 = __webpack_require__(/*! ../flattened/encrypt.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/flattened/encrypt.js\");\nconst errors_js_1 = __webpack_require__(/*! ../../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nconst cek_js_1 = __webpack_require__(/*! ../../lib/cek.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/cek.js\");\nconst is_disjoint_js_1 = __webpack_require__(/*! ../../lib/is_disjoint.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/is_disjoint.js\");\nconst encrypt_key_management_js_1 = __webpack_require__(/*! ../../lib/encrypt_key_management.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/encrypt_key_management.js\");\nconst base64url_js_1 = __webpack_require__(/*! ../../runtime/base64url.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/base64url.js\");\nconst validate_crit_js_1 = __webpack_require__(/*! ../../lib/validate_crit.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/validate_crit.js\");\nclass IndividualRecipient {\n    constructor(enc, key, options) {\n        this.parent = enc;\n        this.key = key;\n        this.options = options;\n    }\n    setUnprotectedHeader(unprotectedHeader) {\n        if (this.unprotectedHeader) {\n            throw new TypeError('setUnprotectedHeader can only be called once');\n        }\n        this.unprotectedHeader = unprotectedHeader;\n        return this;\n    }\n    addRecipient(...args) {\n        return this.parent.addRecipient(...args);\n    }\n    encrypt(...args) {\n        return this.parent.encrypt(...args);\n    }\n    done() {\n        return this.parent;\n    }\n}\nclass GeneralEncrypt {\n    constructor(plaintext) {\n        this._recipients = [];\n        this._plaintext = plaintext;\n    }\n    addRecipient(key, options) {\n        const recipient = new IndividualRecipient(this, key, { crit: options === null || options === void 0 ? void 0 : options.crit });\n        this._recipients.push(recipient);\n        return recipient;\n    }\n    setProtectedHeader(protectedHeader) {\n        if (this._protectedHeader) {\n            throw new TypeError('setProtectedHeader can only be called once');\n        }\n        this._protectedHeader = protectedHeader;\n        return this;\n    }\n    setSharedUnprotectedHeader(sharedUnprotectedHeader) {\n        if (this._unprotectedHeader) {\n            throw new TypeError('setSharedUnprotectedHeader can only be called once');\n        }\n        this._unprotectedHeader = sharedUnprotectedHeader;\n        return this;\n    }\n    setAdditionalAuthenticatedData(aad) {\n        this._aad = aad;\n        return this;\n    }\n    async encrypt(options) {\n        var _a, _b, _c;\n        if (!this._recipients.length) {\n            throw new errors_js_1.JWEInvalid('at least one recipient must be added');\n        }\n        options = { deflateRaw: options === null || options === void 0 ? void 0 : options.deflateRaw };\n        if (this._recipients.length === 1) {\n            const [recipient] = this._recipients;\n            const flattened = await new encrypt_js_1.FlattenedEncrypt(this._plaintext)\n                .setAdditionalAuthenticatedData(this._aad)\n                .setProtectedHeader(this._protectedHeader)\n                .setSharedUnprotectedHeader(this._unprotectedHeader)\n                .setUnprotectedHeader(recipient.unprotectedHeader)\n                .encrypt(recipient.key, { ...recipient.options, ...options });\n            let jwe = {\n                ciphertext: flattened.ciphertext,\n                iv: flattened.iv,\n                recipients: [{}],\n                tag: flattened.tag,\n            };\n            if (flattened.aad)\n                jwe.aad = flattened.aad;\n            if (flattened.protected)\n                jwe.protected = flattened.protected;\n            if (flattened.unprotected)\n                jwe.unprotected = flattened.unprotected;\n            if (flattened.encrypted_key)\n                jwe.recipients[0].encrypted_key = flattened.encrypted_key;\n            if (flattened.header)\n                jwe.recipients[0].header = flattened.header;\n            return jwe;\n        }\n        let enc;\n        for (let i = 0; i < this._recipients.length; i++) {\n            const recipient = this._recipients[i];\n            if (!(0, is_disjoint_js_1.default)(this._protectedHeader, this._unprotectedHeader, recipient.unprotectedHeader)) {\n                throw new errors_js_1.JWEInvalid('JWE Protected, JWE Shared Unprotected and JWE Per-Recipient Header Parameter names must be disjoint');\n            }\n            const joseHeader = {\n                ...this._protectedHeader,\n                ...this._unprotectedHeader,\n                ...recipient.unprotectedHeader,\n            };\n            const { alg } = joseHeader;\n            if (typeof alg !== 'string' || !alg) {\n                throw new errors_js_1.JWEInvalid('JWE \"alg\" (Algorithm) Header Parameter missing or invalid');\n            }\n            if (alg === 'dir' || alg === 'ECDH-ES') {\n                throw new errors_js_1.JWEInvalid('\"dir\" and \"ECDH-ES\" alg may only be used with a single recipient');\n            }\n            if (typeof joseHeader.enc !== 'string' || !joseHeader.enc) {\n                throw new errors_js_1.JWEInvalid('JWE \"enc\" (Encryption Algorithm) Header Parameter missing or invalid');\n            }\n            if (!enc) {\n                enc = joseHeader.enc;\n            }\n            else if (enc !== joseHeader.enc) {\n                throw new errors_js_1.JWEInvalid('JWE \"enc\" (Encryption Algorithm) Header Parameter must be the same for all recipients');\n            }\n            (0, validate_crit_js_1.default)(errors_js_1.JWEInvalid, new Map(), recipient.options.crit, this._protectedHeader, joseHeader);\n            if (joseHeader.zip !== undefined) {\n                if (!this._protectedHeader || !this._protectedHeader.zip) {\n                    throw new errors_js_1.JWEInvalid('JWE \"zip\" (Compression Algorithm) Header MUST be integrity protected');\n                }\n            }\n        }\n        const cek = (0, cek_js_1.default)(enc);\n        let jwe = {\n            ciphertext: '',\n            iv: '',\n            recipients: [],\n            tag: '',\n        };\n        for (let i = 0; i < this._recipients.length; i++) {\n            const recipient = this._recipients[i];\n            const target = {};\n            jwe.recipients.push(target);\n            if (i === 0) {\n                const flattened = await new encrypt_js_1.FlattenedEncrypt(this._plaintext)\n                    .setAdditionalAuthenticatedData(this._aad)\n                    .setContentEncryptionKey(cek)\n                    .setProtectedHeader(this._protectedHeader)\n                    .setSharedUnprotectedHeader(this._unprotectedHeader)\n                    .setUnprotectedHeader(recipient.unprotectedHeader)\n                    .encrypt(recipient.key, {\n                    ...recipient.options,\n                    ...options,\n                    [encrypt_js_1.unprotected]: true,\n                });\n                jwe.ciphertext = flattened.ciphertext;\n                jwe.iv = flattened.iv;\n                jwe.tag = flattened.tag;\n                if (flattened.aad)\n                    jwe.aad = flattened.aad;\n                if (flattened.protected)\n                    jwe.protected = flattened.protected;\n                if (flattened.unprotected)\n                    jwe.unprotected = flattened.unprotected;\n                target.encrypted_key = flattened.encrypted_key;\n                if (flattened.header)\n                    target.header = flattened.header;\n                continue;\n            }\n            const { encryptedKey, parameters } = await (0, encrypt_key_management_js_1.default)(((_a = recipient.unprotectedHeader) === null || _a === void 0 ? void 0 : _a.alg) ||\n                ((_b = this._protectedHeader) === null || _b === void 0 ? void 0 : _b.alg) ||\n                ((_c = this._unprotectedHeader) === null || _c === void 0 ? void 0 : _c.alg), enc, recipient.key, cek);\n            target.encrypted_key = (0, base64url_js_1.encode)(encryptedKey);\n            if (recipient.unprotectedHeader || parameters)\n                target.header = { ...recipient.unprotectedHeader, ...parameters };\n        }\n        return jwe;\n    }\n}\nexports.GeneralEncrypt = GeneralEncrypt;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/general/encrypt.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwk/embedded.js":
/*!************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwk/embedded.js ***!
  \************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.EmbeddedJWK = void 0;\nconst import_js_1 = __webpack_require__(/*! ../key/import.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/key/import.js");\nconst is_object_js_1 = __webpack_require__(/*! ../lib/is_object.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/is_object.js");\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js");\nasync function EmbeddedJWK(protectedHeader, token) {\n    const joseHeader = {\n        ...protectedHeader,\n        ...token.header,\n    };\n    if (!(0, is_object_js_1.default)(joseHeader.jwk)) {\n        throw new errors_js_1.JWSInvalid(\'"jwk" (JSON Web Key) Header Parameter must be a JSON object\');\n    }\n    const key = await (0, import_js_1.importJWK)({ ...joseHeader.jwk, ext: true }, joseHeader.alg, true);\n    if (key instanceof Uint8Array || key.type !== \'public\') {\n        throw new errors_js_1.JWSInvalid(\'"jwk" (JSON Web Key) Header Parameter must be a public key\');\n    }\n    return key;\n}\nexports.EmbeddedJWK = EmbeddedJWK;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwk/embedded.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwk/thumbprint.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwk/thumbprint.js ***!
  \**************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.calculateJwkThumbprint = void 0;\nconst digest_js_1 = __webpack_require__(/*! ../runtime/digest.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/digest.js\");\nconst base64url_js_1 = __webpack_require__(/*! ../runtime/base64url.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/base64url.js\");\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nconst buffer_utils_js_1 = __webpack_require__(/*! ../lib/buffer_utils.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/buffer_utils.js\");\nconst is_object_js_1 = __webpack_require__(/*! ../lib/is_object.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/is_object.js\");\nconst check = (value, description) => {\n    if (typeof value !== 'string' || !value) {\n        throw new errors_js_1.JWKInvalid(`${description} missing or invalid`);\n    }\n};\nasync function calculateJwkThumbprint(jwk, digestAlgorithm = 'sha256') {\n    if (!(0, is_object_js_1.default)(jwk)) {\n        throw new TypeError('JWK must be an object');\n    }\n    let components;\n    switch (jwk.kty) {\n        case 'EC':\n            check(jwk.crv, '\"crv\" (Curve) Parameter');\n            check(jwk.x, '\"x\" (X Coordinate) Parameter');\n            check(jwk.y, '\"y\" (Y Coordinate) Parameter');\n            components = { crv: jwk.crv, kty: jwk.kty, x: jwk.x, y: jwk.y };\n            break;\n        case 'OKP':\n            check(jwk.crv, '\"crv\" (Subtype of Key Pair) Parameter');\n            check(jwk.x, '\"x\" (Public Key) Parameter');\n            components = { crv: jwk.crv, kty: jwk.kty, x: jwk.x };\n            break;\n        case 'RSA':\n            check(jwk.e, '\"e\" (Exponent) Parameter');\n            check(jwk.n, '\"n\" (Modulus) Parameter');\n            components = { e: jwk.e, kty: jwk.kty, n: jwk.n };\n            break;\n        case 'oct':\n            check(jwk.k, '\"k\" (Key Value) Parameter');\n            components = { k: jwk.k, kty: jwk.kty };\n            break;\n        default:\n            throw new errors_js_1.JOSENotSupported('\"kty\" (Key Type) Parameter missing or unsupported');\n    }\n    const data = buffer_utils_js_1.encoder.encode(JSON.stringify(components));\n    return (0, base64url_js_1.encode)(await (0, digest_js_1.default)(digestAlgorithm, data));\n}\nexports.calculateJwkThumbprint = calculateJwkThumbprint;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwk/thumbprint.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwks/local.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwks/local.js ***!
  \**********************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.createLocalJWKSet = exports.LocalJWKSet = exports.isJWKSLike = void 0;\nconst import_js_1 = __webpack_require__(/*! ../key/import.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/key/import.js\");\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nconst is_object_js_1 = __webpack_require__(/*! ../lib/is_object.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/is_object.js\");\nfunction getKtyFromAlg(alg) {\n    switch (typeof alg === 'string' && alg.slice(0, 2)) {\n        case 'RS':\n        case 'PS':\n            return 'RSA';\n        case 'ES':\n            return 'EC';\n        case 'Ed':\n            return 'OKP';\n        default:\n            throw new errors_js_1.JOSENotSupported('Unsupported \"alg\" value for a JSON Web Key Set');\n    }\n}\nfunction isJWKSLike(jwks) {\n    return (jwks &&\n        typeof jwks === 'object' &&\n        Array.isArray(jwks.keys) &&\n        jwks.keys.every(isJWKLike));\n}\nexports.isJWKSLike = isJWKSLike;\nfunction isJWKLike(key) {\n    return (0, is_object_js_1.default)(key);\n}\nfunction clone(obj) {\n    if (typeof structuredClone === 'function') {\n        return structuredClone(obj);\n    }\n    return JSON.parse(JSON.stringify(obj));\n}\nclass LocalJWKSet {\n    constructor(jwks) {\n        this._cached = new WeakMap();\n        if (!isJWKSLike(jwks)) {\n            throw new errors_js_1.JWKSInvalid('JSON Web Key Set malformed');\n        }\n        this._jwks = clone(jwks);\n    }\n    async getKey(protectedHeader, token) {\n        const { alg, kid } = { ...protectedHeader, ...token.header };\n        const candidates = this._jwks.keys.filter((jwk) => {\n            let candidate = jwk.kty === getKtyFromAlg(alg);\n            if (candidate && typeof kid === 'string') {\n                candidate = kid === jwk.kid;\n            }\n            if (candidate && typeof jwk.alg === 'string') {\n                candidate = alg === jwk.alg;\n            }\n            if (candidate && typeof jwk.use === 'string') {\n                candidate = jwk.use === 'sig';\n            }\n            if (candidate && Array.isArray(jwk.key_ops)) {\n                candidate = jwk.key_ops.includes('verify');\n            }\n            if (candidate && alg === 'EdDSA') {\n                candidate = jwk.crv === 'Ed25519' || jwk.crv === 'Ed448';\n            }\n            if (candidate) {\n                switch (alg) {\n                    case 'ES256':\n                        candidate = jwk.crv === 'P-256';\n                        break;\n                    case 'ES256K':\n                        candidate = jwk.crv === 'secp256k1';\n                        break;\n                    case 'ES384':\n                        candidate = jwk.crv === 'P-384';\n                        break;\n                    case 'ES512':\n                        candidate = jwk.crv === 'P-521';\n                        break;\n                }\n            }\n            return candidate;\n        });\n        const { 0: jwk, length } = candidates;\n        if (length === 0) {\n            throw new errors_js_1.JWKSNoMatchingKey();\n        }\n        else if (length !== 1) {\n            throw new errors_js_1.JWKSMultipleMatchingKeys();\n        }\n        const cached = this._cached.get(jwk) || this._cached.set(jwk, {}).get(jwk);\n        if (cached[alg] === undefined) {\n            const keyObject = await (0, import_js_1.importJWK)({ ...jwk, ext: true }, alg);\n            if (keyObject instanceof Uint8Array || keyObject.type !== 'public') {\n                throw new errors_js_1.JWKSInvalid('JSON Web Key Set members must be public keys');\n            }\n            cached[alg] = keyObject;\n        }\n        return cached[alg];\n    }\n}\nexports.LocalJWKSet = LocalJWKSet;\nfunction createLocalJWKSet(jwks) {\n    return LocalJWKSet.prototype.getKey.bind(new LocalJWKSet(jwks));\n}\nexports.createLocalJWKSet = createLocalJWKSet;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwks/local.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwks/remote.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwks/remote.js ***!
  \***********************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.createRemoteJWKSet = void 0;\nconst fetch_jwks_js_1 = __webpack_require__(/*! ../runtime/fetch_jwks.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/fetch_jwks.js");\nconst env_js_1 = __webpack_require__(/*! ../runtime/env.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/env.js");\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js");\nconst local_js_1 = __webpack_require__(/*! ./local.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwks/local.js");\nclass RemoteJWKSet extends local_js_1.LocalJWKSet {\n    constructor(url, options) {\n        super({ keys: [] });\n        this._jwks = undefined;\n        if (!(url instanceof URL)) {\n            throw new TypeError(\'url must be an instance of URL\');\n        }\n        this._url = new URL(url.href);\n        this._options = { agent: options === null || options === void 0 ? void 0 : options.agent };\n        this._timeoutDuration =\n            typeof (options === null || options === void 0 ? void 0 : options.timeoutDuration) === \'number\' ? options === null || options === void 0 ? void 0 : options.timeoutDuration : 5000;\n        this._cooldownDuration =\n            typeof (options === null || options === void 0 ? void 0 : options.cooldownDuration) === \'number\' ? options === null || options === void 0 ? void 0 : options.cooldownDuration : 30000;\n    }\n    coolingDown() {\n        if (!this._cooldownStarted) {\n            return false;\n        }\n        return Date.now() < this._cooldownStarted + this._cooldownDuration;\n    }\n    async getKey(protectedHeader, token) {\n        if (!this._jwks) {\n            await this.reload();\n        }\n        try {\n            return await super.getKey(protectedHeader, token);\n        }\n        catch (err) {\n            if (err instanceof errors_js_1.JWKSNoMatchingKey) {\n                if (this.coolingDown() === false) {\n                    await this.reload();\n                    return super.getKey(protectedHeader, token);\n                }\n            }\n            throw err;\n        }\n    }\n    async reload() {\n        if (this._pendingFetch && (0, env_js_1.isCloudflareWorkers)()) {\n            return new Promise((resolve) => {\n                const isDone = () => {\n                    if (this._pendingFetch === undefined) {\n                        resolve();\n                    }\n                    else {\n                        setTimeout(isDone, 5);\n                    }\n                };\n                isDone();\n            });\n        }\n        if (!this._pendingFetch) {\n            this._pendingFetch = (0, fetch_jwks_js_1.default)(this._url, this._timeoutDuration, this._options)\n                .then((json) => {\n                if (!(0, local_js_1.isJWKSLike)(json)) {\n                    throw new errors_js_1.JWKSInvalid(\'JSON Web Key Set malformed\');\n                }\n                this._jwks = { keys: json.keys };\n                this._cooldownStarted = Date.now();\n                this._pendingFetch = undefined;\n            })\n                .catch((err) => {\n                this._pendingFetch = undefined;\n                throw err;\n            });\n        }\n        await this._pendingFetch;\n    }\n}\nfunction createRemoteJWKSet(url, options) {\n    return RemoteJWKSet.prototype.getKey.bind(new RemoteJWKSet(url, options));\n}\nexports.createRemoteJWKSet = createRemoteJWKSet;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwks/remote.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/compact/sign.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/compact/sign.js ***!
  \****************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.CompactSign = void 0;\nconst sign_js_1 = __webpack_require__(/*! ../flattened/sign.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/flattened/sign.js");\nclass CompactSign {\n    constructor(payload) {\n        this._flattened = new sign_js_1.FlattenedSign(payload);\n    }\n    setProtectedHeader(protectedHeader) {\n        this._flattened.setProtectedHeader(protectedHeader);\n        return this;\n    }\n    async sign(key, options) {\n        const jws = await this._flattened.sign(key, options);\n        if (jws.payload === undefined) {\n            throw new TypeError(\'use the flattened module for creating JWS with b64: false\');\n        }\n        return `${jws.protected}.${jws.payload}.${jws.signature}`;\n    }\n}\nexports.CompactSign = CompactSign;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/compact/sign.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/compact/verify.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/compact/verify.js ***!
  \******************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.compactVerify = void 0;\nconst verify_js_1 = __webpack_require__(/*! ../flattened/verify.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/flattened/verify.js\");\nconst errors_js_1 = __webpack_require__(/*! ../../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nconst buffer_utils_js_1 = __webpack_require__(/*! ../../lib/buffer_utils.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/buffer_utils.js\");\nasync function compactVerify(jws, key, options) {\n    if (jws instanceof Uint8Array) {\n        jws = buffer_utils_js_1.decoder.decode(jws);\n    }\n    if (typeof jws !== 'string') {\n        throw new errors_js_1.JWSInvalid('Compact JWS must be a string or Uint8Array');\n    }\n    const { 0: protectedHeader, 1: payload, 2: signature, length } = jws.split('.');\n    if (length !== 3) {\n        throw new errors_js_1.JWSInvalid('Invalid Compact JWS');\n    }\n    const verified = await (0, verify_js_1.flattenedVerify)({ payload, protected: protectedHeader, signature }, key, options);\n    const result = { payload: verified.payload, protectedHeader: verified.protectedHeader };\n    if (typeof key === 'function') {\n        return { ...result, key: verified.key };\n    }\n    return result;\n}\nexports.compactVerify = compactVerify;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/compact/verify.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/flattened/sign.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/flattened/sign.js ***!
  \******************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FlattenedSign = void 0;\nconst base64url_js_1 = __webpack_require__(/*! ../../runtime/base64url.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/base64url.js\");\nconst sign_js_1 = __webpack_require__(/*! ../../runtime/sign.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/sign.js\");\nconst is_disjoint_js_1 = __webpack_require__(/*! ../../lib/is_disjoint.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/is_disjoint.js\");\nconst errors_js_1 = __webpack_require__(/*! ../../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nconst buffer_utils_js_1 = __webpack_require__(/*! ../../lib/buffer_utils.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/buffer_utils.js\");\nconst check_key_type_js_1 = __webpack_require__(/*! ../../lib/check_key_type.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/check_key_type.js\");\nconst validate_crit_js_1 = __webpack_require__(/*! ../../lib/validate_crit.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/validate_crit.js\");\nclass FlattenedSign {\n    constructor(payload) {\n        if (!(payload instanceof Uint8Array)) {\n            throw new TypeError('payload must be an instance of Uint8Array');\n        }\n        this._payload = payload;\n    }\n    setProtectedHeader(protectedHeader) {\n        if (this._protectedHeader) {\n            throw new TypeError('setProtectedHeader can only be called once');\n        }\n        this._protectedHeader = protectedHeader;\n        return this;\n    }\n    setUnprotectedHeader(unprotectedHeader) {\n        if (this._unprotectedHeader) {\n            throw new TypeError('setUnprotectedHeader can only be called once');\n        }\n        this._unprotectedHeader = unprotectedHeader;\n        return this;\n    }\n    async sign(key, options) {\n        if (!this._protectedHeader && !this._unprotectedHeader) {\n            throw new errors_js_1.JWSInvalid('either setProtectedHeader or setUnprotectedHeader must be called before #sign()');\n        }\n        if (!(0, is_disjoint_js_1.default)(this._protectedHeader, this._unprotectedHeader)) {\n            throw new errors_js_1.JWSInvalid('JWS Protected and JWS Unprotected Header Parameter names must be disjoint');\n        }\n        const joseHeader = {\n            ...this._protectedHeader,\n            ...this._unprotectedHeader,\n        };\n        const extensions = (0, validate_crit_js_1.default)(errors_js_1.JWSInvalid, new Map([['b64', true]]), options === null || options === void 0 ? void 0 : options.crit, this._protectedHeader, joseHeader);\n        let b64 = true;\n        if (extensions.has('b64')) {\n            b64 = this._protectedHeader.b64;\n            if (typeof b64 !== 'boolean') {\n                throw new errors_js_1.JWSInvalid('The \"b64\" (base64url-encode payload) Header Parameter must be a boolean');\n            }\n        }\n        const { alg } = joseHeader;\n        if (typeof alg !== 'string' || !alg) {\n            throw new errors_js_1.JWSInvalid('JWS \"alg\" (Algorithm) Header Parameter missing or invalid');\n        }\n        (0, check_key_type_js_1.default)(alg, key, 'sign');\n        let payload = this._payload;\n        if (b64) {\n            payload = buffer_utils_js_1.encoder.encode((0, base64url_js_1.encode)(payload));\n        }\n        let protectedHeader;\n        if (this._protectedHeader) {\n            protectedHeader = buffer_utils_js_1.encoder.encode((0, base64url_js_1.encode)(JSON.stringify(this._protectedHeader)));\n        }\n        else {\n            protectedHeader = buffer_utils_js_1.encoder.encode('');\n        }\n        const data = (0, buffer_utils_js_1.concat)(protectedHeader, buffer_utils_js_1.encoder.encode('.'), payload);\n        const signature = await (0, sign_js_1.default)(alg, key, data);\n        const jws = {\n            signature: (0, base64url_js_1.encode)(signature),\n            payload: '',\n        };\n        if (b64) {\n            jws.payload = buffer_utils_js_1.decoder.decode(payload);\n        }\n        if (this._unprotectedHeader) {\n            jws.header = this._unprotectedHeader;\n        }\n        if (this._protectedHeader) {\n            jws.protected = buffer_utils_js_1.decoder.decode(protectedHeader);\n        }\n        return jws;\n    }\n}\nexports.FlattenedSign = FlattenedSign;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/flattened/sign.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/flattened/verify.js":
/*!********************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/flattened/verify.js ***!
  \********************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.flattenedVerify = void 0;\nconst base64url_js_1 = __webpack_require__(/*! ../../runtime/base64url.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/base64url.js\");\nconst verify_js_1 = __webpack_require__(/*! ../../runtime/verify.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/verify.js\");\nconst errors_js_1 = __webpack_require__(/*! ../../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nconst buffer_utils_js_1 = __webpack_require__(/*! ../../lib/buffer_utils.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/buffer_utils.js\");\nconst is_disjoint_js_1 = __webpack_require__(/*! ../../lib/is_disjoint.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/is_disjoint.js\");\nconst is_object_js_1 = __webpack_require__(/*! ../../lib/is_object.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/is_object.js\");\nconst check_key_type_js_1 = __webpack_require__(/*! ../../lib/check_key_type.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/check_key_type.js\");\nconst validate_crit_js_1 = __webpack_require__(/*! ../../lib/validate_crit.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/validate_crit.js\");\nconst validate_algorithms_js_1 = __webpack_require__(/*! ../../lib/validate_algorithms.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/validate_algorithms.js\");\nasync function flattenedVerify(jws, key, options) {\n    var _a;\n    if (!(0, is_object_js_1.default)(jws)) {\n        throw new errors_js_1.JWSInvalid('Flattened JWS must be an object');\n    }\n    if (jws.protected === undefined && jws.header === undefined) {\n        throw new errors_js_1.JWSInvalid('Flattened JWS must have either of the \"protected\" or \"header\" members');\n    }\n    if (jws.protected !== undefined && typeof jws.protected !== 'string') {\n        throw new errors_js_1.JWSInvalid('JWS Protected Header incorrect type');\n    }\n    if (jws.payload === undefined) {\n        throw new errors_js_1.JWSInvalid('JWS Payload missing');\n    }\n    if (typeof jws.signature !== 'string') {\n        throw new errors_js_1.JWSInvalid('JWS Signature missing or incorrect type');\n    }\n    if (jws.header !== undefined && !(0, is_object_js_1.default)(jws.header)) {\n        throw new errors_js_1.JWSInvalid('JWS Unprotected Header incorrect type');\n    }\n    let parsedProt = {};\n    if (jws.protected) {\n        const protectedHeader = (0, base64url_js_1.decode)(jws.protected);\n        try {\n            parsedProt = JSON.parse(buffer_utils_js_1.decoder.decode(protectedHeader));\n        }\n        catch {\n            throw new errors_js_1.JWSInvalid('JWS Protected Header is invalid');\n        }\n    }\n    if (!(0, is_disjoint_js_1.default)(parsedProt, jws.header)) {\n        throw new errors_js_1.JWSInvalid('JWS Protected and JWS Unprotected Header Parameter names must be disjoint');\n    }\n    const joseHeader = {\n        ...parsedProt,\n        ...jws.header,\n    };\n    const extensions = (0, validate_crit_js_1.default)(errors_js_1.JWSInvalid, new Map([['b64', true]]), options === null || options === void 0 ? void 0 : options.crit, parsedProt, joseHeader);\n    let b64 = true;\n    if (extensions.has('b64')) {\n        b64 = parsedProt.b64;\n        if (typeof b64 !== 'boolean') {\n            throw new errors_js_1.JWSInvalid('The \"b64\" (base64url-encode payload) Header Parameter must be a boolean');\n        }\n    }\n    const { alg } = joseHeader;\n    if (typeof alg !== 'string' || !alg) {\n        throw new errors_js_1.JWSInvalid('JWS \"alg\" (Algorithm) Header Parameter missing or invalid');\n    }\n    const algorithms = options && (0, validate_algorithms_js_1.default)('algorithms', options.algorithms);\n    if (algorithms && !algorithms.has(alg)) {\n        throw new errors_js_1.JOSEAlgNotAllowed('\"alg\" (Algorithm) Header Parameter not allowed');\n    }\n    if (b64) {\n        if (typeof jws.payload !== 'string') {\n            throw new errors_js_1.JWSInvalid('JWS Payload must be a string');\n        }\n    }\n    else if (typeof jws.payload !== 'string' && !(jws.payload instanceof Uint8Array)) {\n        throw new errors_js_1.JWSInvalid('JWS Payload must be a string or an Uint8Array instance');\n    }\n    let resolvedKey = false;\n    if (typeof key === 'function') {\n        key = await key(parsedProt, jws);\n        resolvedKey = true;\n    }\n    (0, check_key_type_js_1.default)(alg, key, 'verify');\n    const data = (0, buffer_utils_js_1.concat)(buffer_utils_js_1.encoder.encode((_a = jws.protected) !== null && _a !== void 0 ? _a : ''), buffer_utils_js_1.encoder.encode('.'), typeof jws.payload === 'string' ? buffer_utils_js_1.encoder.encode(jws.payload) : jws.payload);\n    const signature = (0, base64url_js_1.decode)(jws.signature);\n    const verified = await (0, verify_js_1.default)(alg, key, signature, data);\n    if (!verified) {\n        throw new errors_js_1.JWSSignatureVerificationFailed();\n    }\n    let payload;\n    if (b64) {\n        payload = (0, base64url_js_1.decode)(jws.payload);\n    }\n    else if (typeof jws.payload === 'string') {\n        payload = buffer_utils_js_1.encoder.encode(jws.payload);\n    }\n    else {\n        payload = jws.payload;\n    }\n    const result = { payload };\n    if (jws.protected !== undefined) {\n        result.protectedHeader = parsedProt;\n    }\n    if (jws.header !== undefined) {\n        result.unprotectedHeader = jws.header;\n    }\n    if (resolvedKey) {\n        return { ...result, key };\n    }\n    return result;\n}\nexports.flattenedVerify = flattenedVerify;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/flattened/verify.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/general/sign.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/general/sign.js ***!
  \****************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GeneralSign = void 0;\nconst sign_js_1 = __webpack_require__(/*! ../flattened/sign.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/flattened/sign.js\");\nconst errors_js_1 = __webpack_require__(/*! ../../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nclass IndividualSignature {\n    constructor(sig, key, options) {\n        this.parent = sig;\n        this.key = key;\n        this.options = options;\n    }\n    setProtectedHeader(protectedHeader) {\n        if (this.protectedHeader) {\n            throw new TypeError('setProtectedHeader can only be called once');\n        }\n        this.protectedHeader = protectedHeader;\n        return this;\n    }\n    setUnprotectedHeader(unprotectedHeader) {\n        if (this.unprotectedHeader) {\n            throw new TypeError('setUnprotectedHeader can only be called once');\n        }\n        this.unprotectedHeader = unprotectedHeader;\n        return this;\n    }\n    addSignature(...args) {\n        return this.parent.addSignature(...args);\n    }\n    sign(...args) {\n        return this.parent.sign(...args);\n    }\n    done() {\n        return this.parent;\n    }\n}\nclass GeneralSign {\n    constructor(payload) {\n        this._signatures = [];\n        this._payload = payload;\n    }\n    addSignature(key, options) {\n        const signature = new IndividualSignature(this, key, options);\n        this._signatures.push(signature);\n        return signature;\n    }\n    async sign() {\n        if (!this._signatures.length) {\n            throw new errors_js_1.JWSInvalid('at least one signature must be added');\n        }\n        const jws = {\n            signatures: [],\n            payload: '',\n        };\n        for (let i = 0; i < this._signatures.length; i++) {\n            const signature = this._signatures[i];\n            const flattened = new sign_js_1.FlattenedSign(this._payload);\n            flattened.setProtectedHeader(signature.protectedHeader);\n            flattened.setUnprotectedHeader(signature.unprotectedHeader);\n            const { payload, ...rest } = await flattened.sign(signature.key, signature.options);\n            if (i === 0) {\n                jws.payload = payload;\n            }\n            else if (jws.payload !== payload) {\n                throw new errors_js_1.JWSInvalid('inconsistent use of JWS Unencoded Payload Option (RFC7797)');\n            }\n            jws.signatures.push(rest);\n        }\n        return jws;\n    }\n}\nexports.GeneralSign = GeneralSign;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/general/sign.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/general/verify.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/general/verify.js ***!
  \******************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.generalVerify = void 0;\nconst verify_js_1 = __webpack_require__(/*! ../flattened/verify.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/flattened/verify.js");\nconst errors_js_1 = __webpack_require__(/*! ../../util/errors.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js");\nconst is_object_js_1 = __webpack_require__(/*! ../../lib/is_object.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/is_object.js");\nasync function generalVerify(jws, key, options) {\n    if (!(0, is_object_js_1.default)(jws)) {\n        throw new errors_js_1.JWSInvalid(\'General JWS must be an object\');\n    }\n    if (!Array.isArray(jws.signatures) || !jws.signatures.every(is_object_js_1.default)) {\n        throw new errors_js_1.JWSInvalid(\'JWS Signatures missing or incorrect type\');\n    }\n    for (const signature of jws.signatures) {\n        try {\n            return await (0, verify_js_1.flattenedVerify)({\n                header: signature.header,\n                payload: jws.payload,\n                protected: signature.protected,\n                signature: signature.signature,\n            }, key, options);\n        }\n        catch {\n        }\n    }\n    throw new errors_js_1.JWSSignatureVerificationFailed();\n}\nexports.generalVerify = generalVerify;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/general/verify.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwt/decrypt.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwt/decrypt.js ***!
  \***********************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.jwtDecrypt = void 0;\nconst decrypt_js_1 = __webpack_require__(/*! ../jwe/compact/decrypt.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/compact/decrypt.js\");\nconst jwt_claims_set_js_1 = __webpack_require__(/*! ../lib/jwt_claims_set.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/jwt_claims_set.js\");\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nasync function jwtDecrypt(jwt, key, options) {\n    const decrypted = await (0, decrypt_js_1.compactDecrypt)(jwt, key, options);\n    const payload = (0, jwt_claims_set_js_1.default)(decrypted.protectedHeader, decrypted.plaintext, options);\n    const { protectedHeader } = decrypted;\n    if (protectedHeader.iss !== undefined && protectedHeader.iss !== payload.iss) {\n        throw new errors_js_1.JWTClaimValidationFailed('replicated \"iss\" claim header parameter mismatch', 'iss', 'mismatch');\n    }\n    if (protectedHeader.sub !== undefined && protectedHeader.sub !== payload.sub) {\n        throw new errors_js_1.JWTClaimValidationFailed('replicated \"sub\" claim header parameter mismatch', 'sub', 'mismatch');\n    }\n    if (protectedHeader.aud !== undefined &&\n        JSON.stringify(protectedHeader.aud) !== JSON.stringify(payload.aud)) {\n        throw new errors_js_1.JWTClaimValidationFailed('replicated \"aud\" claim header parameter mismatch', 'aud', 'mismatch');\n    }\n    const result = { payload, protectedHeader };\n    if (typeof key === 'function') {\n        return { ...result, key: decrypted.key };\n    }\n    return result;\n}\nexports.jwtDecrypt = jwtDecrypt;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwt/decrypt.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwt/encrypt.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwt/encrypt.js ***!
  \***********************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EncryptJWT = void 0;\nconst encrypt_js_1 = __webpack_require__(/*! ../jwe/compact/encrypt.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwe/compact/encrypt.js\");\nconst buffer_utils_js_1 = __webpack_require__(/*! ../lib/buffer_utils.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/buffer_utils.js\");\nconst produce_js_1 = __webpack_require__(/*! ./produce.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwt/produce.js\");\nclass EncryptJWT extends produce_js_1.ProduceJWT {\n    setProtectedHeader(protectedHeader) {\n        if (this._protectedHeader) {\n            throw new TypeError('setProtectedHeader can only be called once');\n        }\n        this._protectedHeader = protectedHeader;\n        return this;\n    }\n    setKeyManagementParameters(parameters) {\n        if (this._keyManagementParameters) {\n            throw new TypeError('setKeyManagementParameters can only be called once');\n        }\n        this._keyManagementParameters = parameters;\n        return this;\n    }\n    setContentEncryptionKey(cek) {\n        if (this._cek) {\n            throw new TypeError('setContentEncryptionKey can only be called once');\n        }\n        this._cek = cek;\n        return this;\n    }\n    setInitializationVector(iv) {\n        if (this._iv) {\n            throw new TypeError('setInitializationVector can only be called once');\n        }\n        this._iv = iv;\n        return this;\n    }\n    replicateIssuerAsHeader() {\n        this._replicateIssuerAsHeader = true;\n        return this;\n    }\n    replicateSubjectAsHeader() {\n        this._replicateSubjectAsHeader = true;\n        return this;\n    }\n    replicateAudienceAsHeader() {\n        this._replicateAudienceAsHeader = true;\n        return this;\n    }\n    async encrypt(key, options) {\n        const enc = new encrypt_js_1.CompactEncrypt(buffer_utils_js_1.encoder.encode(JSON.stringify(this._payload)));\n        if (this._replicateIssuerAsHeader) {\n            this._protectedHeader = { ...this._protectedHeader, iss: this._payload.iss };\n        }\n        if (this._replicateSubjectAsHeader) {\n            this._protectedHeader = { ...this._protectedHeader, sub: this._payload.sub };\n        }\n        if (this._replicateAudienceAsHeader) {\n            this._protectedHeader = { ...this._protectedHeader, aud: this._payload.aud };\n        }\n        enc.setProtectedHeader(this._protectedHeader);\n        if (this._iv) {\n            enc.setInitializationVector(this._iv);\n        }\n        if (this._cek) {\n            enc.setContentEncryptionKey(this._cek);\n        }\n        if (this._keyManagementParameters) {\n            enc.setKeyManagementParameters(this._keyManagementParameters);\n        }\n        return enc.encrypt(key, options);\n    }\n}\nexports.EncryptJWT = EncryptJWT;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwt/encrypt.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwt/produce.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwt/produce.js ***!
  \***********************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ProduceJWT = void 0;\nconst epoch_js_1 = __webpack_require__(/*! ../lib/epoch.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/epoch.js\");\nconst is_object_js_1 = __webpack_require__(/*! ../lib/is_object.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/is_object.js\");\nconst secs_js_1 = __webpack_require__(/*! ../lib/secs.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/secs.js\");\nclass ProduceJWT {\n    constructor(payload) {\n        if (!(0, is_object_js_1.default)(payload)) {\n            throw new TypeError('JWT Claims Set MUST be an object');\n        }\n        this._payload = payload;\n    }\n    setIssuer(issuer) {\n        this._payload = { ...this._payload, iss: issuer };\n        return this;\n    }\n    setSubject(subject) {\n        this._payload = { ...this._payload, sub: subject };\n        return this;\n    }\n    setAudience(audience) {\n        this._payload = { ...this._payload, aud: audience };\n        return this;\n    }\n    setJti(jwtId) {\n        this._payload = { ...this._payload, jti: jwtId };\n        return this;\n    }\n    setNotBefore(input) {\n        if (typeof input === 'number') {\n            this._payload = { ...this._payload, nbf: input };\n        }\n        else {\n            this._payload = { ...this._payload, nbf: (0, epoch_js_1.default)(new Date()) + (0, secs_js_1.default)(input) };\n        }\n        return this;\n    }\n    setExpirationTime(input) {\n        if (typeof input === 'number') {\n            this._payload = { ...this._payload, exp: input };\n        }\n        else {\n            this._payload = { ...this._payload, exp: (0, epoch_js_1.default)(new Date()) + (0, secs_js_1.default)(input) };\n        }\n        return this;\n    }\n    setIssuedAt(input) {\n        if (typeof input === 'undefined') {\n            this._payload = { ...this._payload, iat: (0, epoch_js_1.default)(new Date()) };\n        }\n        else {\n            this._payload = { ...this._payload, iat: input };\n        }\n        return this;\n    }\n}\nexports.ProduceJWT = ProduceJWT;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwt/produce.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwt/sign.js":
/*!********************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwt/sign.js ***!
  \********************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.SignJWT = void 0;\nconst sign_js_1 = __webpack_require__(/*! ../jws/compact/sign.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/compact/sign.js");\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js");\nconst buffer_utils_js_1 = __webpack_require__(/*! ../lib/buffer_utils.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/buffer_utils.js");\nconst produce_js_1 = __webpack_require__(/*! ./produce.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwt/produce.js");\nclass SignJWT extends produce_js_1.ProduceJWT {\n    setProtectedHeader(protectedHeader) {\n        this._protectedHeader = protectedHeader;\n        return this;\n    }\n    async sign(key, options) {\n        var _a;\n        const sig = new sign_js_1.CompactSign(buffer_utils_js_1.encoder.encode(JSON.stringify(this._payload)));\n        sig.setProtectedHeader(this._protectedHeader);\n        if (Array.isArray((_a = this._protectedHeader) === null || _a === void 0 ? void 0 : _a.crit) &&\n            this._protectedHeader.crit.includes(\'b64\') &&\n            this._protectedHeader.b64 === false) {\n            throw new errors_js_1.JWTInvalid(\'JWTs MUST NOT use unencoded payload\');\n        }\n        return sig.sign(key, options);\n    }\n}\nexports.SignJWT = SignJWT;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwt/sign.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwt/unsecured.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwt/unsecured.js ***!
  \*************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.UnsecuredJWT = void 0;\nconst base64url = __webpack_require__(/*! ../runtime/base64url.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/base64url.js\");\nconst buffer_utils_js_1 = __webpack_require__(/*! ../lib/buffer_utils.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/buffer_utils.js\");\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nconst jwt_claims_set_js_1 = __webpack_require__(/*! ../lib/jwt_claims_set.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/jwt_claims_set.js\");\nconst produce_js_1 = __webpack_require__(/*! ./produce.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwt/produce.js\");\nclass UnsecuredJWT extends produce_js_1.ProduceJWT {\n    encode() {\n        const header = base64url.encode(JSON.stringify({ alg: 'none' }));\n        const payload = base64url.encode(JSON.stringify(this._payload));\n        return `${header}.${payload}.`;\n    }\n    static decode(jwt, options) {\n        if (typeof jwt !== 'string') {\n            throw new errors_js_1.JWTInvalid('Unsecured JWT must be a string');\n        }\n        const { 0: encodedHeader, 1: encodedPayload, 2: signature, length } = jwt.split('.');\n        if (length !== 3 || signature !== '') {\n            throw new errors_js_1.JWTInvalid('Invalid Unsecured JWT');\n        }\n        let header;\n        try {\n            header = JSON.parse(buffer_utils_js_1.decoder.decode(base64url.decode(encodedHeader)));\n            if (header.alg !== 'none')\n                throw new Error();\n        }\n        catch {\n            throw new errors_js_1.JWTInvalid('Invalid Unsecured JWT');\n        }\n        const payload = (0, jwt_claims_set_js_1.default)(header, base64url.decode(encodedPayload), options);\n        return { payload, header };\n    }\n}\nexports.UnsecuredJWT = UnsecuredJWT;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwt/unsecured.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwt/verify.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwt/verify.js ***!
  \**********************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.jwtVerify = void 0;\nconst verify_js_1 = __webpack_require__(/*! ../jws/compact/verify.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/jws/compact/verify.js");\nconst jwt_claims_set_js_1 = __webpack_require__(/*! ../lib/jwt_claims_set.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/jwt_claims_set.js");\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js");\nasync function jwtVerify(jwt, key, options) {\n    var _a;\n    const verified = await (0, verify_js_1.compactVerify)(jwt, key, options);\n    if (((_a = verified.protectedHeader.crit) === null || _a === void 0 ? void 0 : _a.includes(\'b64\')) && verified.protectedHeader.b64 === false) {\n        throw new errors_js_1.JWTInvalid(\'JWTs MUST NOT use unencoded payload\');\n    }\n    const payload = (0, jwt_claims_set_js_1.default)(verified.protectedHeader, verified.payload, options);\n    const result = { payload, protectedHeader: verified.protectedHeader };\n    if (typeof key === \'function\') {\n        return { ...result, key: verified.key };\n    }\n    return result;\n}\nexports.jwtVerify = jwtVerify;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/jwt/verify.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/key/export.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/key/export.js ***!
  \**********************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.exportJWK = exports.exportPKCS8 = exports.exportSPKI = void 0;\nconst asn1_js_1 = __webpack_require__(/*! ../runtime/asn1.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/asn1.js");\nconst asn1_js_2 = __webpack_require__(/*! ../runtime/asn1.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/asn1.js");\nconst key_to_jwk_js_1 = __webpack_require__(/*! ../runtime/key_to_jwk.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/key_to_jwk.js");\nasync function exportSPKI(key) {\n    return (0, asn1_js_1.toSPKI)(key);\n}\nexports.exportSPKI = exportSPKI;\nasync function exportPKCS8(key) {\n    return (0, asn1_js_2.toPKCS8)(key);\n}\nexports.exportPKCS8 = exportPKCS8;\nasync function exportJWK(key) {\n    return (0, key_to_jwk_js_1.default)(key);\n}\nexports.exportJWK = exportJWK;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/key/export.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/key/generate_key_pair.js":
/*!*********************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/key/generate_key_pair.js ***!
  \*********************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.generateKeyPair = void 0;\nconst generate_js_1 = __webpack_require__(/*! ../runtime/generate.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/generate.js");\nasync function generateKeyPair(alg, options) {\n    return (0, generate_js_1.generateKeyPair)(alg, options);\n}\nexports.generateKeyPair = generateKeyPair;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/key/generate_key_pair.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/key/generate_secret.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/key/generate_secret.js ***!
  \*******************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.generateSecret = void 0;\nconst generate_js_1 = __webpack_require__(/*! ../runtime/generate.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/generate.js");\nasync function generateSecret(alg, options) {\n    return (0, generate_js_1.generateSecret)(alg, options);\n}\nexports.generateSecret = generateSecret;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/key/generate_secret.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/key/import.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/key/import.js ***!
  \**********************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.importJWK = exports.importPKCS8 = exports.importX509 = exports.importSPKI = void 0;\nconst base64url_js_1 = __webpack_require__(/*! ../runtime/base64url.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/base64url.js\");\nconst asn1_js_1 = __webpack_require__(/*! ../runtime/asn1.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/asn1.js\");\nconst asn1_js_2 = __webpack_require__(/*! ../runtime/asn1.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/asn1.js\");\nconst jwk_to_key_js_1 = __webpack_require__(/*! ../runtime/jwk_to_key.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/jwk_to_key.js\");\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nconst format_pem_js_1 = __webpack_require__(/*! ../lib/format_pem.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/format_pem.js\");\nconst is_object_js_1 = __webpack_require__(/*! ../lib/is_object.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/is_object.js\");\nfunction getElement(seq) {\n    let result = [];\n    let next = 0;\n    while (next < seq.length) {\n        let nextPart = parseElement(seq.subarray(next));\n        result.push(nextPart);\n        next += nextPart.byteLength;\n    }\n    return result;\n}\nfunction parseElement(bytes) {\n    let position = 0;\n    let tag = bytes[0] & 0x1f;\n    position++;\n    if (tag === 0x1f) {\n        tag = 0;\n        while (bytes[position] >= 0x80) {\n            tag = tag * 128 + bytes[position] - 0x80;\n            position++;\n        }\n        tag = tag * 128 + bytes[position] - 0x80;\n        position++;\n    }\n    let length = 0;\n    if (bytes[position] < 0x80) {\n        length = bytes[position];\n        position++;\n    }\n    else {\n        let numberOfDigits = bytes[position] & 0x7f;\n        position++;\n        length = 0;\n        for (let i = 0; i < numberOfDigits; i++) {\n            length = length * 256 + bytes[position];\n            position++;\n        }\n    }\n    if (length === 0x80) {\n        length = 0;\n        while (bytes[position + length] !== 0 || bytes[position + length + 1] !== 0) {\n            length++;\n        }\n        const byteLength = position + length + 2;\n        return {\n            byteLength,\n            contents: bytes.subarray(position, position + length),\n            raw: bytes.subarray(0, byteLength),\n        };\n    }\n    const byteLength = position + length;\n    return {\n        byteLength,\n        contents: bytes.subarray(position, byteLength),\n        raw: bytes.subarray(0, byteLength),\n    };\n}\nfunction spkiFromX509(buf) {\n    const tbsCertificate = getElement(getElement(parseElement(buf).contents)[0].contents);\n    return (0, base64url_js_1.encodeBase64)(tbsCertificate[tbsCertificate[0].raw[0] === 0xa0 ? 6 : 5].raw);\n}\nfunction getSPKI(x509) {\n    const pem = x509.replace(/(?:-----(?:BEGIN|END) CERTIFICATE-----|\\s)/g, '');\n    const raw = (0, base64url_js_1.decodeBase64)(pem);\n    return (0, format_pem_js_1.default)(spkiFromX509(raw), 'PUBLIC KEY');\n}\nasync function importSPKI(spki, alg, options) {\n    if (typeof spki !== 'string' || spki.indexOf('-----BEGIN PUBLIC KEY-----') !== 0) {\n        throw new TypeError('\"spki\" must be SPKI formatted string');\n    }\n    return (0, asn1_js_1.fromSPKI)(spki, alg, options);\n}\nexports.importSPKI = importSPKI;\nasync function importX509(x509, alg, options) {\n    if (typeof x509 !== 'string' || x509.indexOf('-----BEGIN CERTIFICATE-----') !== 0) {\n        throw new TypeError('\"x509\" must be X.509 formatted string');\n    }\n    const spki = getSPKI(x509);\n    return (0, asn1_js_1.fromSPKI)(spki, alg, options);\n}\nexports.importX509 = importX509;\nasync function importPKCS8(pkcs8, alg, options) {\n    if (typeof pkcs8 !== 'string' || pkcs8.indexOf('-----BEGIN PRIVATE KEY-----') !== 0) {\n        throw new TypeError('\"pkcs8\" must be PCKS8 formatted string');\n    }\n    return (0, asn1_js_2.fromPKCS8)(pkcs8, alg, options);\n}\nexports.importPKCS8 = importPKCS8;\nasync function importJWK(jwk, alg, octAsKeyObject) {\n    if (!(0, is_object_js_1.default)(jwk)) {\n        throw new TypeError('JWK must be an object');\n    }\n    alg || (alg = jwk.alg);\n    if (typeof alg !== 'string' || !alg) {\n        throw new TypeError('\"alg\" argument is required when \"jwk.alg\" is not present');\n    }\n    switch (jwk.kty) {\n        case 'oct':\n            if (typeof jwk.k !== 'string' || !jwk.k) {\n                throw new TypeError('missing \"k\" (Key Value) Parameter value');\n            }\n            octAsKeyObject !== null && octAsKeyObject !== void 0 ? octAsKeyObject : (octAsKeyObject = jwk.ext !== true);\n            if (octAsKeyObject) {\n                return (0, jwk_to_key_js_1.default)({ ...jwk, alg, ext: false });\n            }\n            return (0, base64url_js_1.decode)(jwk.k);\n        case 'RSA':\n            if (jwk.oth !== undefined) {\n                throw new errors_js_1.JOSENotSupported('RSA JWK \"oth\" (Other Primes Info) Parameter value is not supported');\n            }\n        case 'EC':\n        case 'OKP':\n            return (0, jwk_to_key_js_1.default)({ ...jwk, alg });\n        default:\n            throw new errors_js_1.JOSENotSupported('Unsupported \"kty\" (Key Type) Parameter value');\n    }\n}\nexports.importJWK = importJWK;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/key/import.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/aesgcmkw.js":
/*!************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/aesgcmkw.js ***!
  \************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.unwrap = exports.wrap = void 0;\nconst encrypt_js_1 = __webpack_require__(/*! ../runtime/encrypt.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/encrypt.js");\nconst decrypt_js_1 = __webpack_require__(/*! ../runtime/decrypt.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/decrypt.js");\nconst iv_js_1 = __webpack_require__(/*! ./iv.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/iv.js");\nconst base64url_js_1 = __webpack_require__(/*! ../runtime/base64url.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/base64url.js");\nasync function wrap(alg, key, cek, iv) {\n    const jweAlgorithm = alg.slice(0, 7);\n    iv || (iv = (0, iv_js_1.default)(jweAlgorithm));\n    const { ciphertext: encryptedKey, tag } = await (0, encrypt_js_1.default)(jweAlgorithm, cek, key, iv, new Uint8Array(0));\n    return { encryptedKey, iv: (0, base64url_js_1.encode)(iv), tag: (0, base64url_js_1.encode)(tag) };\n}\nexports.wrap = wrap;\nasync function unwrap(alg, key, encryptedKey, iv, tag) {\n    const jweAlgorithm = alg.slice(0, 7);\n    return (0, decrypt_js_1.default)(jweAlgorithm, key, encryptedKey, iv, tag, new Uint8Array(0));\n}\nexports.unwrap = unwrap;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/aesgcmkw.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/buffer_utils.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/buffer_utils.js ***!
  \****************************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.concatKdf = exports.lengthAndInput = exports.uint32be = exports.uint64be = exports.p2s = exports.concat = exports.decoder = exports.encoder = void 0;\nexports.encoder = new TextEncoder();\nexports.decoder = new TextDecoder();\nconst MAX_INT32 = 2 ** 32;\nfunction concat(...buffers) {\n    const size = buffers.reduce((acc, { length }) => acc + length, 0);\n    const buf = new Uint8Array(size);\n    let i = 0;\n    buffers.forEach((buffer) => {\n        buf.set(buffer, i);\n        i += buffer.length;\n    });\n    return buf;\n}\nexports.concat = concat;\nfunction p2s(alg, p2sInput) {\n    return concat(exports.encoder.encode(alg), new Uint8Array([0]), p2sInput);\n}\nexports.p2s = p2s;\nfunction writeUInt32BE(buf, value, offset) {\n    if (value < 0 || value >= MAX_INT32) {\n        throw new RangeError(`value must be >= 0 and <= ${MAX_INT32 - 1}. Received ${value}`);\n    }\n    buf.set([value >>> 24, value >>> 16, value >>> 8, value & 0xff], offset);\n}\nfunction uint64be(value) {\n    const high = Math.floor(value / MAX_INT32);\n    const low = value % MAX_INT32;\n    const buf = new Uint8Array(8);\n    writeUInt32BE(buf, high, 0);\n    writeUInt32BE(buf, low, 4);\n    return buf;\n}\nexports.uint64be = uint64be;\nfunction uint32be(value) {\n    const buf = new Uint8Array(4);\n    writeUInt32BE(buf, value);\n    return buf;\n}\nexports.uint32be = uint32be;\nfunction lengthAndInput(input) {\n    return concat(uint32be(input.length), input);\n}\nexports.lengthAndInput = lengthAndInput;\nasync function concatKdf(digest, secret, bits, value) {\n    const iterations = Math.ceil((bits >> 3) / 32);\n    let res;\n    for (let iter = 1; iter <= iterations; iter++) {\n        const buf = new Uint8Array(4 + secret.length + value.length);\n        buf.set(uint32be(iter));\n        buf.set(secret, 4);\n        buf.set(value, 4 + secret.length);\n        if (!res) {\n            res = await digest('sha256', buf);\n        }\n        else {\n            res = concat(res, await digest('sha256', buf));\n        }\n    }\n    res = res.slice(0, bits >> 3);\n    return res;\n}\nexports.concatKdf = concatKdf;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/buffer_utils.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/cek.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/cek.js ***!
  \*******************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.bitLength = void 0;\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nconst random_js_1 = __webpack_require__(/*! ../runtime/random.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/random.js\");\nfunction bitLength(alg) {\n    switch (alg) {\n        case 'A128GCM':\n            return 128;\n        case 'A192GCM':\n            return 192;\n        case 'A256GCM':\n        case 'A128CBC-HS256':\n            return 256;\n        case 'A192CBC-HS384':\n            return 384;\n        case 'A256CBC-HS512':\n            return 512;\n        default:\n            throw new errors_js_1.JOSENotSupported(`Unsupported JWE Algorithm: ${alg}`);\n    }\n}\nexports.bitLength = bitLength;\nexports[\"default\"] = (alg) => (0, random_js_1.default)(new Uint8Array(bitLength(alg) >> 3));\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/cek.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/check_iv_length.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/check_iv_length.js ***!
  \*******************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js");\nconst iv_js_1 = __webpack_require__(/*! ./iv.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/iv.js");\nconst checkIvLength = (enc, iv) => {\n    if (iv.length << 3 !== (0, iv_js_1.bitLength)(enc)) {\n        throw new errors_js_1.JWEInvalid(\'Invalid Initialization Vector length\');\n    }\n};\nexports["default"] = checkIvLength;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/check_iv_length.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/check_key_type.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/check_key_type.js ***!
  \******************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst invalid_key_input_js_1 = __webpack_require__(/*! ./invalid_key_input.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/invalid_key_input.js\");\nconst is_key_like_js_1 = __webpack_require__(/*! ../runtime/is_key_like.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/is_key_like.js\");\nconst symmetricTypeCheck = (key) => {\n    if (key instanceof Uint8Array)\n        return;\n    if (!(0, is_key_like_js_1.default)(key)) {\n        throw new TypeError((0, invalid_key_input_js_1.default)(key, ...is_key_like_js_1.types, 'Uint8Array'));\n    }\n    if (key.type !== 'secret') {\n        throw new TypeError(`${is_key_like_js_1.types.join(' or ')} instances for symmetric algorithms must be of type \"secret\"`);\n    }\n};\nconst asymmetricTypeCheck = (key, usage) => {\n    if (!(0, is_key_like_js_1.default)(key)) {\n        throw new TypeError((0, invalid_key_input_js_1.default)(key, ...is_key_like_js_1.types));\n    }\n    if (key.type === 'secret') {\n        throw new TypeError(`${is_key_like_js_1.types.join(' or ')} instances for asymmetric algorithms must not be of type \"secret\"`);\n    }\n    if (usage === 'sign' && key.type === 'public') {\n        throw new TypeError(`${is_key_like_js_1.types.join(' or ')} instances for asymmetric algorithm signing must be of type \"private\"`);\n    }\n    if (usage === 'decrypt' && key.type === 'public') {\n        throw new TypeError(`${is_key_like_js_1.types.join(' or ')} instances for asymmetric algorithm decryption must be of type \"private\"`);\n    }\n    if (key.algorithm && usage === 'verify' && key.type === 'private') {\n        throw new TypeError(`${is_key_like_js_1.types.join(' or ')} instances for asymmetric algorithm verifying must be of type \"public\"`);\n    }\n    if (key.algorithm && usage === 'encrypt' && key.type === 'private') {\n        throw new TypeError(`${is_key_like_js_1.types.join(' or ')} instances for asymmetric algorithm encryption must be of type \"public\"`);\n    }\n};\nconst checkKeyType = (alg, key, usage) => {\n    const symmetric = alg.startsWith('HS') ||\n        alg === 'dir' ||\n        alg.startsWith('PBES2') ||\n        /^A\\d{3}(?:GCM)?KW$/.test(alg);\n    if (symmetric) {\n        symmetricTypeCheck(key);\n    }\n    else {\n        asymmetricTypeCheck(key, usage);\n    }\n};\nexports[\"default\"] = checkKeyType;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/check_key_type.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/check_p2s.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/check_p2s.js ***!
  \*************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js");\nfunction checkP2s(p2s) {\n    if (!(p2s instanceof Uint8Array) || p2s.length < 8) {\n        throw new errors_js_1.JWEInvalid(\'PBES2 Salt Input must be 8 or more octets\');\n    }\n}\nexports["default"] = checkP2s;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/check_p2s.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/crypto_key.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/crypto_key.js ***!
  \**************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.checkEncCryptoKey = exports.checkSigCryptoKey = void 0;\nconst env_js_1 = __webpack_require__(/*! ../runtime/env.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/env.js\");\nfunction unusable(name, prop = 'algorithm.name') {\n    return new TypeError(`CryptoKey does not support this operation, its ${prop} must be ${name}`);\n}\nfunction isAlgorithm(algorithm, name) {\n    return algorithm.name === name;\n}\nfunction getHashLength(hash) {\n    return parseInt(hash.name.slice(4), 10);\n}\nfunction getNamedCurve(alg) {\n    switch (alg) {\n        case 'ES256':\n            return 'P-256';\n        case 'ES384':\n            return 'P-384';\n        case 'ES512':\n            return 'P-521';\n        default:\n            throw new Error('unreachable');\n    }\n}\nfunction checkUsage(key, usages) {\n    if (usages.length && !usages.some((expected) => key.usages.includes(expected))) {\n        let msg = 'CryptoKey does not support this operation, its usages must include ';\n        if (usages.length > 2) {\n            const last = usages.pop();\n            msg += `one of ${usages.join(', ')}, or ${last}.`;\n        }\n        else if (usages.length === 2) {\n            msg += `one of ${usages[0]} or ${usages[1]}.`;\n        }\n        else {\n            msg += `${usages[0]}.`;\n        }\n        throw new TypeError(msg);\n    }\n}\nfunction checkSigCryptoKey(key, alg, ...usages) {\n    switch (alg) {\n        case 'HS256':\n        case 'HS384':\n        case 'HS512': {\n            if (!isAlgorithm(key.algorithm, 'HMAC'))\n                throw unusable('HMAC');\n            const expected = parseInt(alg.slice(2), 10);\n            const actual = getHashLength(key.algorithm.hash);\n            if (actual !== expected)\n                throw unusable(`SHA-${expected}`, 'algorithm.hash');\n            break;\n        }\n        case 'RS256':\n        case 'RS384':\n        case 'RS512': {\n            if (!isAlgorithm(key.algorithm, 'RSASSA-PKCS1-v1_5'))\n                throw unusable('RSASSA-PKCS1-v1_5');\n            const expected = parseInt(alg.slice(2), 10);\n            const actual = getHashLength(key.algorithm.hash);\n            if (actual !== expected)\n                throw unusable(`SHA-${expected}`, 'algorithm.hash');\n            break;\n        }\n        case 'PS256':\n        case 'PS384':\n        case 'PS512': {\n            if (!isAlgorithm(key.algorithm, 'RSA-PSS'))\n                throw unusable('RSA-PSS');\n            const expected = parseInt(alg.slice(2), 10);\n            const actual = getHashLength(key.algorithm.hash);\n            if (actual !== expected)\n                throw unusable(`SHA-${expected}`, 'algorithm.hash');\n            break;\n        }\n        case (0, env_js_1.isNodeJs)() && 'EdDSA': {\n            if (key.algorithm.name !== 'NODE-ED25519' && key.algorithm.name !== 'NODE-ED448')\n                throw unusable('NODE-ED25519 or NODE-ED448');\n            break;\n        }\n        case (0, env_js_1.isCloudflareWorkers)() && 'EdDSA': {\n            if (!isAlgorithm(key.algorithm, 'NODE-ED25519'))\n                throw unusable('NODE-ED25519');\n            break;\n        }\n        case 'ES256':\n        case 'ES384':\n        case 'ES512': {\n            if (!isAlgorithm(key.algorithm, 'ECDSA'))\n                throw unusable('ECDSA');\n            const expected = getNamedCurve(alg);\n            const actual = key.algorithm.namedCurve;\n            if (actual !== expected)\n                throw unusable(expected, 'algorithm.namedCurve');\n            break;\n        }\n        default:\n            throw new TypeError('CryptoKey does not support this operation');\n    }\n    checkUsage(key, usages);\n}\nexports.checkSigCryptoKey = checkSigCryptoKey;\nfunction checkEncCryptoKey(key, alg, ...usages) {\n    switch (alg) {\n        case 'A128GCM':\n        case 'A192GCM':\n        case 'A256GCM': {\n            if (!isAlgorithm(key.algorithm, 'AES-GCM'))\n                throw unusable('AES-GCM');\n            const expected = parseInt(alg.slice(1, 4), 10);\n            const actual = key.algorithm.length;\n            if (actual !== expected)\n                throw unusable(expected, 'algorithm.length');\n            break;\n        }\n        case 'A128KW':\n        case 'A192KW':\n        case 'A256KW': {\n            if (!isAlgorithm(key.algorithm, 'AES-KW'))\n                throw unusable('AES-KW');\n            const expected = parseInt(alg.slice(1, 4), 10);\n            const actual = key.algorithm.length;\n            if (actual !== expected)\n                throw unusable(expected, 'algorithm.length');\n            break;\n        }\n        case 'ECDH-ES':\n            if (!isAlgorithm(key.algorithm, 'ECDH'))\n                throw unusable('ECDH');\n            break;\n        case 'PBES2-HS256+A128KW':\n        case 'PBES2-HS384+A192KW':\n        case 'PBES2-HS512+A256KW':\n            if (!isAlgorithm(key.algorithm, 'PBKDF2'))\n                throw unusable('PBKDF2');\n            break;\n        case 'RSA-OAEP':\n        case 'RSA-OAEP-256':\n        case 'RSA-OAEP-384':\n        case 'RSA-OAEP-512': {\n            if (!isAlgorithm(key.algorithm, 'RSA-OAEP'))\n                throw unusable('RSA-OAEP');\n            const expected = parseInt(alg.slice(9), 10) || 1;\n            const actual = getHashLength(key.algorithm.hash);\n            if (actual !== expected)\n                throw unusable(`SHA-${expected}`, 'algorithm.hash');\n            break;\n        }\n        default:\n            throw new TypeError('CryptoKey does not support this operation');\n    }\n    checkUsage(key, usages);\n}\nexports.checkEncCryptoKey = checkEncCryptoKey;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/crypto_key.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/decrypt_key_management.js":
/*!**************************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/decrypt_key_management.js ***!
  \**************************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst aeskw_js_1 = __webpack_require__(/*! ../runtime/aeskw.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/aeskw.js\");\nconst ECDH = __webpack_require__(/*! ../runtime/ecdhes.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/ecdhes.js\");\nconst pbes2kw_js_1 = __webpack_require__(/*! ../runtime/pbes2kw.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/pbes2kw.js\");\nconst rsaes_js_1 = __webpack_require__(/*! ../runtime/rsaes.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/rsaes.js\");\nconst base64url_js_1 = __webpack_require__(/*! ../runtime/base64url.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/base64url.js\");\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nconst cek_js_1 = __webpack_require__(/*! ../lib/cek.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/cek.js\");\nconst import_js_1 = __webpack_require__(/*! ../key/import.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/key/import.js\");\nconst check_key_type_js_1 = __webpack_require__(/*! ./check_key_type.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/check_key_type.js\");\nconst is_object_js_1 = __webpack_require__(/*! ./is_object.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/is_object.js\");\nconst aesgcmkw_js_1 = __webpack_require__(/*! ./aesgcmkw.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/aesgcmkw.js\");\nasync function decryptKeyManagement(alg, key, encryptedKey, joseHeader) {\n    (0, check_key_type_js_1.default)(alg, key, 'decrypt');\n    switch (alg) {\n        case 'dir': {\n            if (encryptedKey !== undefined)\n                throw new errors_js_1.JWEInvalid('Encountered unexpected JWE Encrypted Key');\n            return key;\n        }\n        case 'ECDH-ES':\n            if (encryptedKey !== undefined)\n                throw new errors_js_1.JWEInvalid('Encountered unexpected JWE Encrypted Key');\n        case 'ECDH-ES+A128KW':\n        case 'ECDH-ES+A192KW':\n        case 'ECDH-ES+A256KW': {\n            if (!(0, is_object_js_1.default)(joseHeader.epk))\n                throw new errors_js_1.JWEInvalid(`JOSE Header \"epk\" (Ephemeral Public Key) missing or invalid`);\n            if (!ECDH.ecdhAllowed(key))\n                throw new errors_js_1.JOSENotSupported('ECDH-ES with the provided key is not allowed or not supported by your javascript runtime');\n            const epk = await (0, import_js_1.importJWK)(joseHeader.epk, alg);\n            let partyUInfo;\n            let partyVInfo;\n            if (joseHeader.apu !== undefined) {\n                if (typeof joseHeader.apu !== 'string')\n                    throw new errors_js_1.JWEInvalid(`JOSE Header \"apu\" (Agreement PartyUInfo) invalid`);\n                partyUInfo = (0, base64url_js_1.decode)(joseHeader.apu);\n            }\n            if (joseHeader.apv !== undefined) {\n                if (typeof joseHeader.apv !== 'string')\n                    throw new errors_js_1.JWEInvalid(`JOSE Header \"apv\" (Agreement PartyVInfo) invalid`);\n                partyVInfo = (0, base64url_js_1.decode)(joseHeader.apv);\n            }\n            const sharedSecret = await ECDH.deriveKey(epk, key, alg === 'ECDH-ES' ? joseHeader.enc : alg, alg === 'ECDH-ES' ? (0, cek_js_1.bitLength)(joseHeader.enc) : parseInt(alg.slice(-5, -2), 10), partyUInfo, partyVInfo);\n            if (alg === 'ECDH-ES')\n                return sharedSecret;\n            if (encryptedKey === undefined)\n                throw new errors_js_1.JWEInvalid('JWE Encrypted Key missing');\n            return (0, aeskw_js_1.unwrap)(alg.slice(-6), sharedSecret, encryptedKey);\n        }\n        case 'RSA1_5':\n        case 'RSA-OAEP':\n        case 'RSA-OAEP-256':\n        case 'RSA-OAEP-384':\n        case 'RSA-OAEP-512': {\n            if (encryptedKey === undefined)\n                throw new errors_js_1.JWEInvalid('JWE Encrypted Key missing');\n            return (0, rsaes_js_1.decrypt)(alg, key, encryptedKey);\n        }\n        case 'PBES2-HS256+A128KW':\n        case 'PBES2-HS384+A192KW':\n        case 'PBES2-HS512+A256KW': {\n            if (encryptedKey === undefined)\n                throw new errors_js_1.JWEInvalid('JWE Encrypted Key missing');\n            if (typeof joseHeader.p2c !== 'number')\n                throw new errors_js_1.JWEInvalid(`JOSE Header \"p2c\" (PBES2 Count) missing or invalid`);\n            if (typeof joseHeader.p2s !== 'string')\n                throw new errors_js_1.JWEInvalid(`JOSE Header \"p2s\" (PBES2 Salt) missing or invalid`);\n            return (0, pbes2kw_js_1.decrypt)(alg, key, encryptedKey, joseHeader.p2c, (0, base64url_js_1.decode)(joseHeader.p2s));\n        }\n        case 'A128KW':\n        case 'A192KW':\n        case 'A256KW': {\n            if (encryptedKey === undefined)\n                throw new errors_js_1.JWEInvalid('JWE Encrypted Key missing');\n            return (0, aeskw_js_1.unwrap)(alg, key, encryptedKey);\n        }\n        case 'A128GCMKW':\n        case 'A192GCMKW':\n        case 'A256GCMKW': {\n            if (encryptedKey === undefined)\n                throw new errors_js_1.JWEInvalid('JWE Encrypted Key missing');\n            if (typeof joseHeader.iv !== 'string')\n                throw new errors_js_1.JWEInvalid(`JOSE Header \"iv\" (Initialization Vector) missing or invalid`);\n            if (typeof joseHeader.tag !== 'string')\n                throw new errors_js_1.JWEInvalid(`JOSE Header \"tag\" (Authentication Tag) missing or invalid`);\n            const iv = (0, base64url_js_1.decode)(joseHeader.iv);\n            const tag = (0, base64url_js_1.decode)(joseHeader.tag);\n            return (0, aesgcmkw_js_1.unwrap)(alg, key, encryptedKey, iv, tag);\n        }\n        default: {\n            throw new errors_js_1.JOSENotSupported('Invalid or unsupported \"alg\" (JWE Algorithm) header value');\n        }\n    }\n}\nexports[\"default\"] = decryptKeyManagement;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/decrypt_key_management.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/encrypt_key_management.js":
/*!**************************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/encrypt_key_management.js ***!
  \**************************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst aeskw_js_1 = __webpack_require__(/*! ../runtime/aeskw.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/aeskw.js\");\nconst ECDH = __webpack_require__(/*! ../runtime/ecdhes.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/ecdhes.js\");\nconst pbes2kw_js_1 = __webpack_require__(/*! ../runtime/pbes2kw.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/pbes2kw.js\");\nconst rsaes_js_1 = __webpack_require__(/*! ../runtime/rsaes.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/rsaes.js\");\nconst base64url_js_1 = __webpack_require__(/*! ../runtime/base64url.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/base64url.js\");\nconst cek_js_1 = __webpack_require__(/*! ../lib/cek.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/cek.js\");\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nconst export_js_1 = __webpack_require__(/*! ../key/export.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/key/export.js\");\nconst check_key_type_js_1 = __webpack_require__(/*! ./check_key_type.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/check_key_type.js\");\nconst aesgcmkw_js_1 = __webpack_require__(/*! ./aesgcmkw.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/aesgcmkw.js\");\nasync function encryptKeyManagement(alg, enc, key, providedCek, providedParameters = {}) {\n    let encryptedKey;\n    let parameters;\n    let cek;\n    (0, check_key_type_js_1.default)(alg, key, 'encrypt');\n    switch (alg) {\n        case 'dir': {\n            cek = key;\n            break;\n        }\n        case 'ECDH-ES':\n        case 'ECDH-ES+A128KW':\n        case 'ECDH-ES+A192KW':\n        case 'ECDH-ES+A256KW': {\n            if (!ECDH.ecdhAllowed(key)) {\n                throw new errors_js_1.JOSENotSupported('ECDH-ES with the provided key is not allowed or not supported by your javascript runtime');\n            }\n            const { apu, apv } = providedParameters;\n            let { epk: ephemeralKey } = providedParameters;\n            ephemeralKey || (ephemeralKey = (await ECDH.generateEpk(key)).privateKey);\n            const { x, y, crv, kty } = await (0, export_js_1.exportJWK)(ephemeralKey);\n            const sharedSecret = await ECDH.deriveKey(key, ephemeralKey, alg === 'ECDH-ES' ? enc : alg, alg === 'ECDH-ES' ? (0, cek_js_1.bitLength)(enc) : parseInt(alg.slice(-5, -2), 10), apu, apv);\n            parameters = { epk: { x, crv, kty } };\n            if (kty === 'EC')\n                parameters.epk.y = y;\n            if (apu)\n                parameters.apu = (0, base64url_js_1.encode)(apu);\n            if (apv)\n                parameters.apv = (0, base64url_js_1.encode)(apv);\n            if (alg === 'ECDH-ES') {\n                cek = sharedSecret;\n                break;\n            }\n            cek = providedCek || (0, cek_js_1.default)(enc);\n            const kwAlg = alg.slice(-6);\n            encryptedKey = await (0, aeskw_js_1.wrap)(kwAlg, sharedSecret, cek);\n            break;\n        }\n        case 'RSA1_5':\n        case 'RSA-OAEP':\n        case 'RSA-OAEP-256':\n        case 'RSA-OAEP-384':\n        case 'RSA-OAEP-512': {\n            cek = providedCek || (0, cek_js_1.default)(enc);\n            encryptedKey = await (0, rsaes_js_1.encrypt)(alg, key, cek);\n            break;\n        }\n        case 'PBES2-HS256+A128KW':\n        case 'PBES2-HS384+A192KW':\n        case 'PBES2-HS512+A256KW': {\n            cek = providedCek || (0, cek_js_1.default)(enc);\n            const { p2c, p2s } = providedParameters;\n            ({ encryptedKey, ...parameters } = await (0, pbes2kw_js_1.encrypt)(alg, key, cek, p2c, p2s));\n            break;\n        }\n        case 'A128KW':\n        case 'A192KW':\n        case 'A256KW': {\n            cek = providedCek || (0, cek_js_1.default)(enc);\n            encryptedKey = await (0, aeskw_js_1.wrap)(alg, key, cek);\n            break;\n        }\n        case 'A128GCMKW':\n        case 'A192GCMKW':\n        case 'A256GCMKW': {\n            cek = providedCek || (0, cek_js_1.default)(enc);\n            const { iv } = providedParameters;\n            ({ encryptedKey, ...parameters } = await (0, aesgcmkw_js_1.wrap)(alg, key, cek, iv));\n            break;\n        }\n        default: {\n            throw new errors_js_1.JOSENotSupported('Invalid or unsupported \"alg\" (JWE Algorithm) header value');\n        }\n    }\n    return { cek, encryptedKey, parameters };\n}\nexports[\"default\"] = encryptKeyManagement;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/encrypt_key_management.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/epoch.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/epoch.js ***!
  \*********************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports["default"] = (date) => Math.floor(date.getTime() / 1000);\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/epoch.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/format_pem.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/format_pem.js ***!
  \**************************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports["default"] = (b64, descriptor) => {\n    const newlined = (b64.match(/.{1,64}/g) || []).join(\'\\n\');\n    return `-----BEGIN ${descriptor}-----\\n${newlined}\\n-----END ${descriptor}-----`;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/format_pem.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/invalid_key_input.js":
/*!*********************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/invalid_key_input.js ***!
  \*********************************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports[\"default\"] = (actual, ...types) => {\n    let msg = 'Key must be ';\n    if (types.length > 2) {\n        const last = types.pop();\n        msg += `one of type ${types.join(', ')}, or ${last}.`;\n    }\n    else if (types.length === 2) {\n        msg += `one of type ${types[0]} or ${types[1]}.`;\n    }\n    else {\n        msg += `of type ${types[0]}.`;\n    }\n    if (actual == null) {\n        msg += ` Received ${actual}`;\n    }\n    else if (typeof actual === 'function' && actual.name) {\n        msg += ` Received function ${actual.name}`;\n    }\n    else if (typeof actual === 'object' && actual != null) {\n        if (actual.constructor && actual.constructor.name) {\n            msg += ` Received an instance of ${actual.constructor.name}`;\n        }\n    }\n    return msg;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/invalid_key_input.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/is_disjoint.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/is_disjoint.js ***!
  \***************************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst isDisjoint = (...headers) => {\n    const sources = headers.filter(Boolean);\n    if (sources.length === 0 || sources.length === 1) {\n        return true;\n    }\n    let acc;\n    for (const header of sources) {\n        const parameters = Object.keys(header);\n        if (!acc || acc.size === 0) {\n            acc = new Set(parameters);\n            continue;\n        }\n        for (const parameter of parameters) {\n            if (acc.has(parameter)) {\n                return false;\n            }\n            acc.add(parameter);\n        }\n    }\n    return true;\n};\nexports["default"] = isDisjoint;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/is_disjoint.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/is_object.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/is_object.js ***!
  \*************************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nfunction isObjectLike(value) {\n    return typeof value === 'object' && value !== null;\n}\nfunction isObject(input) {\n    if (!isObjectLike(input) || Object.prototype.toString.call(input) !== '[object Object]') {\n        return false;\n    }\n    if (Object.getPrototypeOf(input) === null) {\n        return true;\n    }\n    let proto = input;\n    while (Object.getPrototypeOf(proto) !== null) {\n        proto = Object.getPrototypeOf(proto);\n    }\n    return Object.getPrototypeOf(input) === proto;\n}\nexports[\"default\"] = isObject;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/is_object.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/iv.js":
/*!******************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/iv.js ***!
  \******************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.bitLength = void 0;\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nconst random_js_1 = __webpack_require__(/*! ../runtime/random.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/random.js\");\nfunction bitLength(alg) {\n    switch (alg) {\n        case 'A128GCM':\n        case 'A128GCMKW':\n        case 'A192GCM':\n        case 'A192GCMKW':\n        case 'A256GCM':\n        case 'A256GCMKW':\n            return 96;\n        case 'A128CBC-HS256':\n        case 'A192CBC-HS384':\n        case 'A256CBC-HS512':\n            return 128;\n        default:\n            throw new errors_js_1.JOSENotSupported(`Unsupported JWE Algorithm: ${alg}`);\n    }\n}\nexports.bitLength = bitLength;\nexports[\"default\"] = (alg) => (0, random_js_1.default)(new Uint8Array(bitLength(alg) >> 3));\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/iv.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/jwt_claims_set.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/jwt_claims_set.js ***!
  \******************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nconst buffer_utils_js_1 = __webpack_require__(/*! ./buffer_utils.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/buffer_utils.js\");\nconst epoch_js_1 = __webpack_require__(/*! ./epoch.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/epoch.js\");\nconst secs_js_1 = __webpack_require__(/*! ./secs.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/secs.js\");\nconst is_object_js_1 = __webpack_require__(/*! ./is_object.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/is_object.js\");\nconst normalizeTyp = (value) => value.toLowerCase().replace(/^application\\//, '');\nconst checkAudiencePresence = (audPayload, audOption) => {\n    if (typeof audPayload === 'string') {\n        return audOption.includes(audPayload);\n    }\n    if (Array.isArray(audPayload)) {\n        return audOption.some(Set.prototype.has.bind(new Set(audPayload)));\n    }\n    return false;\n};\nexports[\"default\"] = (protectedHeader, encodedPayload, options = {}) => {\n    const { typ } = options;\n    if (typ &&\n        (typeof protectedHeader.typ !== 'string' ||\n            normalizeTyp(protectedHeader.typ) !== normalizeTyp(typ))) {\n        throw new errors_js_1.JWTClaimValidationFailed('unexpected \"typ\" JWT header value', 'typ', 'check_failed');\n    }\n    let payload;\n    try {\n        payload = JSON.parse(buffer_utils_js_1.decoder.decode(encodedPayload));\n    }\n    catch {\n    }\n    if (!(0, is_object_js_1.default)(payload)) {\n        throw new errors_js_1.JWTInvalid('JWT Claims Set must be a top-level JSON object');\n    }\n    const { issuer } = options;\n    if (issuer && !(Array.isArray(issuer) ? issuer : [issuer]).includes(payload.iss)) {\n        throw new errors_js_1.JWTClaimValidationFailed('unexpected \"iss\" claim value', 'iss', 'check_failed');\n    }\n    const { subject } = options;\n    if (subject && payload.sub !== subject) {\n        throw new errors_js_1.JWTClaimValidationFailed('unexpected \"sub\" claim value', 'sub', 'check_failed');\n    }\n    const { audience } = options;\n    if (audience &&\n        !checkAudiencePresence(payload.aud, typeof audience === 'string' ? [audience] : audience)) {\n        throw new errors_js_1.JWTClaimValidationFailed('unexpected \"aud\" claim value', 'aud', 'check_failed');\n    }\n    let tolerance;\n    switch (typeof options.clockTolerance) {\n        case 'string':\n            tolerance = (0, secs_js_1.default)(options.clockTolerance);\n            break;\n        case 'number':\n            tolerance = options.clockTolerance;\n            break;\n        case 'undefined':\n            tolerance = 0;\n            break;\n        default:\n            throw new TypeError('Invalid clockTolerance option type');\n    }\n    const { currentDate } = options;\n    const now = (0, epoch_js_1.default)(currentDate || new Date());\n    if (payload.iat !== undefined || options.maxTokenAge) {\n        if (typeof payload.iat !== 'number') {\n            throw new errors_js_1.JWTClaimValidationFailed('\"iat\" claim must be a number', 'iat', 'invalid');\n        }\n        if (payload.exp === undefined && payload.iat > now + tolerance) {\n            throw new errors_js_1.JWTClaimValidationFailed('\"iat\" claim timestamp check failed (it should be in the past)', 'iat', 'check_failed');\n        }\n    }\n    if (payload.nbf !== undefined) {\n        if (typeof payload.nbf !== 'number') {\n            throw new errors_js_1.JWTClaimValidationFailed('\"nbf\" claim must be a number', 'nbf', 'invalid');\n        }\n        if (payload.nbf > now + tolerance) {\n            throw new errors_js_1.JWTClaimValidationFailed('\"nbf\" claim timestamp check failed', 'nbf', 'check_failed');\n        }\n    }\n    if (payload.exp !== undefined) {\n        if (typeof payload.exp !== 'number') {\n            throw new errors_js_1.JWTClaimValidationFailed('\"exp\" claim must be a number', 'exp', 'invalid');\n        }\n        if (payload.exp <= now - tolerance) {\n            throw new errors_js_1.JWTExpired('\"exp\" claim timestamp check failed', 'exp', 'check_failed');\n        }\n    }\n    if (options.maxTokenAge) {\n        const age = now - payload.iat;\n        const max = typeof options.maxTokenAge === 'number' ? options.maxTokenAge : (0, secs_js_1.default)(options.maxTokenAge);\n        if (age - tolerance > max) {\n            throw new errors_js_1.JWTExpired('\"iat\" claim timestamp check failed (too far in the past)', 'iat', 'check_failed');\n        }\n        if (age < 0 - tolerance) {\n            throw new errors_js_1.JWTClaimValidationFailed('\"iat\" claim timestamp check failed (it should be in the past)', 'iat', 'check_failed');\n        }\n    }\n    return payload;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/jwt_claims_set.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/secs.js":
/*!********************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/secs.js ***!
  \********************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst minute = 60;\nconst hour = minute * 60;\nconst day = hour * 24;\nconst week = day * 7;\nconst year = day * 365.25;\nconst REGEX = /^(\\d+|\\d+\\.\\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)$/i;\nexports[\"default\"] = (str) => {\n    const matched = REGEX.exec(str);\n    if (!matched) {\n        throw new TypeError('Invalid time period format');\n    }\n    const value = parseFloat(matched[1]);\n    const unit = matched[2].toLowerCase();\n    switch (unit) {\n        case 'sec':\n        case 'secs':\n        case 'second':\n        case 'seconds':\n        case 's':\n            return Math.round(value);\n        case 'minute':\n        case 'minutes':\n        case 'min':\n        case 'mins':\n        case 'm':\n            return Math.round(value * minute);\n        case 'hour':\n        case 'hours':\n        case 'hr':\n        case 'hrs':\n        case 'h':\n            return Math.round(value * hour);\n        case 'day':\n        case 'days':\n        case 'd':\n            return Math.round(value * day);\n        case 'week':\n        case 'weeks':\n        case 'w':\n            return Math.round(value * week);\n        default:\n            return Math.round(value * year);\n    }\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/secs.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/validate_algorithms.js":
/*!***********************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/validate_algorithms.js ***!
  \***********************************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst validateAlgorithms = (option, algorithms) => {\n    if (algorithms !== undefined &&\n        (!Array.isArray(algorithms) || algorithms.some((s) => typeof s !== \'string\'))) {\n        throw new TypeError(`"${option}" option must be an array of strings`);\n    }\n    if (!algorithms) {\n        return undefined;\n    }\n    return new Set(algorithms);\n};\nexports["default"] = validateAlgorithms;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/validate_algorithms.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/validate_crit.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/validate_crit.js ***!
  \*****************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js");\nfunction validateCrit(Err, recognizedDefault, recognizedOption, protectedHeader, joseHeader) {\n    if (joseHeader.crit !== undefined && protectedHeader.crit === undefined) {\n        throw new Err(\'"crit" (Critical) Header Parameter MUST be integrity protected\');\n    }\n    if (!protectedHeader || protectedHeader.crit === undefined) {\n        return new Set();\n    }\n    if (!Array.isArray(protectedHeader.crit) ||\n        protectedHeader.crit.length === 0 ||\n        protectedHeader.crit.some((input) => typeof input !== \'string\' || input.length === 0)) {\n        throw new Err(\'"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present\');\n    }\n    let recognized;\n    if (recognizedOption !== undefined) {\n        recognized = new Map([...Object.entries(recognizedOption), ...recognizedDefault.entries()]);\n    }\n    else {\n        recognized = recognizedDefault;\n    }\n    for (const parameter of protectedHeader.crit) {\n        if (!recognized.has(parameter)) {\n            throw new errors_js_1.JOSENotSupported(`Extension Header Parameter "${parameter}" is not recognized`);\n        }\n        if (joseHeader[parameter] === undefined) {\n            throw new Err(`Extension Header Parameter "${parameter}" is missing`);\n        }\n        else if (recognized.get(parameter) && protectedHeader[parameter] === undefined) {\n            throw new Err(`Extension Header Parameter "${parameter}" MUST be integrity protected`);\n        }\n    }\n    return new Set(protectedHeader.crit);\n}\nexports["default"] = validateCrit;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/validate_crit.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/aeskw.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/aeskw.js ***!
  \*************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.unwrap = exports.wrap = void 0;\nconst buffer_1 = __webpack_require__(/*! buffer */ "buffer");\nconst crypto_1 = __webpack_require__(/*! crypto */ "crypto");\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js");\nconst buffer_utils_js_1 = __webpack_require__(/*! ../lib/buffer_utils.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/buffer_utils.js");\nconst webcrypto_js_1 = __webpack_require__(/*! ./webcrypto.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/webcrypto.js");\nconst crypto_key_js_1 = __webpack_require__(/*! ../lib/crypto_key.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/crypto_key.js");\nconst is_key_object_js_1 = __webpack_require__(/*! ./is_key_object.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/is_key_object.js");\nconst invalid_key_input_js_1 = __webpack_require__(/*! ../lib/invalid_key_input.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/invalid_key_input.js");\nconst ciphers_js_1 = __webpack_require__(/*! ./ciphers.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/ciphers.js");\nconst is_key_like_js_1 = __webpack_require__(/*! ./is_key_like.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/is_key_like.js");\nfunction checkKeySize(key, alg) {\n    if (key.symmetricKeySize << 3 !== parseInt(alg.slice(1, 4), 10)) {\n        throw new TypeError(`Invalid key size for alg: ${alg}`);\n    }\n}\nfunction ensureKeyObject(key, alg, usage) {\n    if ((0, is_key_object_js_1.default)(key)) {\n        return key;\n    }\n    if (key instanceof Uint8Array) {\n        return (0, crypto_1.createSecretKey)(key);\n    }\n    if ((0, webcrypto_js_1.isCryptoKey)(key)) {\n        (0, crypto_key_js_1.checkEncCryptoKey)(key, alg, usage);\n        return crypto_1.KeyObject.from(key);\n    }\n    throw new TypeError((0, invalid_key_input_js_1.default)(key, ...is_key_like_js_1.types, \'Uint8Array\'));\n}\nconst wrap = (alg, key, cek) => {\n    const size = parseInt(alg.slice(1, 4), 10);\n    const algorithm = `aes${size}-wrap`;\n    if (!(0, ciphers_js_1.default)(algorithm)) {\n        throw new errors_js_1.JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n    }\n    const keyObject = ensureKeyObject(key, alg, \'wrapKey\');\n    checkKeySize(keyObject, alg);\n    const cipher = (0, crypto_1.createCipheriv)(algorithm, keyObject, buffer_1.Buffer.alloc(8, 0xa6));\n    return (0, buffer_utils_js_1.concat)(cipher.update(cek), cipher.final());\n};\nexports.wrap = wrap;\nconst unwrap = (alg, key, encryptedKey) => {\n    const size = parseInt(alg.slice(1, 4), 10);\n    const algorithm = `aes${size}-wrap`;\n    if (!(0, ciphers_js_1.default)(algorithm)) {\n        throw new errors_js_1.JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n    }\n    const keyObject = ensureKeyObject(key, alg, \'unwrapKey\');\n    checkKeySize(keyObject, alg);\n    const cipher = (0, crypto_1.createDecipheriv)(algorithm, keyObject, buffer_1.Buffer.alloc(8, 0xa6));\n    return (0, buffer_utils_js_1.concat)(cipher.update(encryptedKey), cipher.final());\n};\nexports.unwrap = unwrap;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/aeskw.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/asn1.js":
/*!************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/asn1.js ***!
  \************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.fromSPKI = exports.fromPKCS8 = exports.toPKCS8 = exports.toSPKI = void 0;\nconst crypto_1 = __webpack_require__(/*! crypto */ \"crypto\");\nconst buffer_1 = __webpack_require__(/*! buffer */ \"buffer\");\nconst webcrypto_js_1 = __webpack_require__(/*! ./webcrypto.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/webcrypto.js\");\nconst is_key_object_js_1 = __webpack_require__(/*! ./is_key_object.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/is_key_object.js\");\nconst invalid_key_input_js_1 = __webpack_require__(/*! ../lib/invalid_key_input.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/invalid_key_input.js\");\nconst is_key_like_js_1 = __webpack_require__(/*! ./is_key_like.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/is_key_like.js\");\nconst genericExport = (keyType, keyFormat, key) => {\n    let keyObject;\n    if ((0, webcrypto_js_1.isCryptoKey)(key)) {\n        if (!key.extractable) {\n            throw new TypeError('CryptoKey is not extractable');\n        }\n        keyObject = crypto_1.KeyObject.from(key);\n    }\n    else if ((0, is_key_object_js_1.default)(key)) {\n        keyObject = key;\n    }\n    else {\n        throw new TypeError((0, invalid_key_input_js_1.default)(key, ...is_key_like_js_1.types));\n    }\n    if (keyObject.type !== keyType) {\n        throw new TypeError(`key is not a ${keyType} key`);\n    }\n    return keyObject.export({ format: 'pem', type: keyFormat });\n};\nconst toSPKI = (key) => {\n    return genericExport('public', 'spki', key);\n};\nexports.toSPKI = toSPKI;\nconst toPKCS8 = (key) => {\n    return genericExport('private', 'pkcs8', key);\n};\nexports.toPKCS8 = toPKCS8;\nconst fromPKCS8 = (pem) => (0, crypto_1.createPrivateKey)({\n    key: buffer_1.Buffer.from(pem.replace(/(?:-----(?:BEGIN|END) PRIVATE KEY-----|\\s)/g, ''), 'base64'),\n    type: 'pkcs8',\n    format: 'der',\n});\nexports.fromPKCS8 = fromPKCS8;\nconst fromSPKI = (pem) => (0, crypto_1.createPublicKey)({\n    key: buffer_1.Buffer.from(pem.replace(/(?:-----(?:BEGIN|END) PUBLIC KEY-----|\\s)/g, ''), 'base64'),\n    type: 'spki',\n    format: 'der',\n});\nexports.fromSPKI = fromSPKI;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/asn1.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/asn1_sequence_decoder.js":
/*!*****************************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/asn1_sequence_decoder.js ***!
  \*****************************************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst tagInteger = 0x02;\nconst tagSequence = 0x30;\nclass Asn1SequenceDecoder {\n    constructor(buffer) {\n        if (buffer[0] !== tagSequence) {\n            throw new TypeError();\n        }\n        this.buffer = buffer;\n        this.offset = 1;\n        const len = this.decodeLength();\n        if (len !== buffer.length - this.offset) {\n            throw new TypeError();\n        }\n    }\n    decodeLength() {\n        let length = this.buffer[this.offset++];\n        if (length & 0x80) {\n            const nBytes = length & ~0x80;\n            length = 0;\n            for (let i = 0; i < nBytes; i++)\n                length = (length << 8) | this.buffer[this.offset + i];\n            this.offset += nBytes;\n        }\n        return length;\n    }\n    unsignedInteger() {\n        if (this.buffer[this.offset++] !== tagInteger) {\n            throw new TypeError();\n        }\n        let length = this.decodeLength();\n        if (this.buffer[this.offset] === 0) {\n            this.offset++;\n            length--;\n        }\n        const result = this.buffer.slice(this.offset, this.offset + length);\n        this.offset += length;\n        return result;\n    }\n    end() {\n        if (this.offset !== this.buffer.length) {\n            throw new TypeError();\n        }\n    }\n}\nexports["default"] = Asn1SequenceDecoder;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/asn1_sequence_decoder.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/asn1_sequence_encoder.js":
/*!*****************************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/asn1_sequence_encoder.js ***!
  \*****************************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst buffer_1 = __webpack_require__(/*! buffer */ \"buffer\");\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nconst tagInteger = 0x02;\nconst tagBitStr = 0x03;\nconst tagOctStr = 0x04;\nconst tagSequence = 0x30;\nconst bZero = buffer_1.Buffer.from([0x00]);\nconst bTagInteger = buffer_1.Buffer.from([tagInteger]);\nconst bTagBitStr = buffer_1.Buffer.from([tagBitStr]);\nconst bTagSequence = buffer_1.Buffer.from([tagSequence]);\nconst bTagOctStr = buffer_1.Buffer.from([tagOctStr]);\nconst encodeLength = (len) => {\n    if (len < 128)\n        return buffer_1.Buffer.from([len]);\n    const buffer = buffer_1.Buffer.alloc(5);\n    buffer.writeUInt32BE(len, 1);\n    let offset = 1;\n    while (buffer[offset] === 0)\n        offset++;\n    buffer[offset - 1] = 0x80 | (5 - offset);\n    return buffer.slice(offset - 1);\n};\nconst oids = new Map([\n    ['P-256', buffer_1.Buffer.from('06 08 2A 86 48 CE 3D 03 01 07'.replace(/ /g, ''), 'hex')],\n    ['secp256k1', buffer_1.Buffer.from('06 05 2B 81 04 00 0A'.replace(/ /g, ''), 'hex')],\n    ['P-384', buffer_1.Buffer.from('06 05 2B 81 04 00 22'.replace(/ /g, ''), 'hex')],\n    ['P-521', buffer_1.Buffer.from('06 05 2B 81 04 00 23'.replace(/ /g, ''), 'hex')],\n    ['ecPublicKey', buffer_1.Buffer.from('06 07 2A 86 48 CE 3D 02 01'.replace(/ /g, ''), 'hex')],\n    ['X25519', buffer_1.Buffer.from('06 03 2B 65 6E'.replace(/ /g, ''), 'hex')],\n    ['X448', buffer_1.Buffer.from('06 03 2B 65 6F'.replace(/ /g, ''), 'hex')],\n    ['Ed25519', buffer_1.Buffer.from('06 03 2B 65 70'.replace(/ /g, ''), 'hex')],\n    ['Ed448', buffer_1.Buffer.from('06 03 2B 65 71'.replace(/ /g, ''), 'hex')],\n]);\nclass DumbAsn1Encoder {\n    constructor() {\n        this.length = 0;\n        this.elements = [];\n    }\n    oidFor(oid) {\n        const bOid = oids.get(oid);\n        if (!bOid) {\n            throw new errors_js_1.JOSENotSupported('Invalid or unsupported OID');\n        }\n        this.elements.push(bOid);\n        this.length += bOid.length;\n    }\n    zero() {\n        this.elements.push(bTagInteger, buffer_1.Buffer.from([0x01]), bZero);\n        this.length += 3;\n    }\n    one() {\n        this.elements.push(bTagInteger, buffer_1.Buffer.from([0x01]), buffer_1.Buffer.from([0x01]));\n        this.length += 3;\n    }\n    unsignedInteger(integer) {\n        if (integer[0] & 0x80) {\n            const len = encodeLength(integer.length + 1);\n            this.elements.push(bTagInteger, len, bZero, integer);\n            this.length += 2 + len.length + integer.length;\n        }\n        else {\n            let i = 0;\n            while (integer[i] === 0 && (integer[i + 1] & 0x80) === 0)\n                i++;\n            const len = encodeLength(integer.length - i);\n            this.elements.push(bTagInteger, encodeLength(integer.length - i), integer.slice(i));\n            this.length += 1 + len.length + integer.length - i;\n        }\n    }\n    octStr(octStr) {\n        const len = encodeLength(octStr.length);\n        this.elements.push(bTagOctStr, encodeLength(octStr.length), octStr);\n        this.length += 1 + len.length + octStr.length;\n    }\n    bitStr(bitS) {\n        const len = encodeLength(bitS.length + 1);\n        this.elements.push(bTagBitStr, encodeLength(bitS.length + 1), bZero, bitS);\n        this.length += 1 + len.length + bitS.length + 1;\n    }\n    add(seq) {\n        this.elements.push(seq);\n        this.length += seq.length;\n    }\n    end(tag = bTagSequence) {\n        const len = encodeLength(this.length);\n        return buffer_1.Buffer.concat([tag, len, ...this.elements], 1 + len.length + this.length);\n    }\n}\nexports[\"default\"] = DumbAsn1Encoder;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/asn1_sequence_encoder.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/base64url.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/base64url.js ***!
  \*****************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.decode = exports.encode = exports.encodeBase64 = exports.decodeBase64 = void 0;\nconst buffer_1 = __webpack_require__(/*! buffer */ \"buffer\");\nconst buffer_utils_js_1 = __webpack_require__(/*! ../lib/buffer_utils.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/buffer_utils.js\");\nlet encode;\nexports.encode = encode;\nfunction normalize(input) {\n    let encoded = input;\n    if (encoded instanceof Uint8Array) {\n        encoded = buffer_utils_js_1.decoder.decode(encoded);\n    }\n    return encoded;\n}\nif (buffer_1.Buffer.isEncoding('base64url')) {\n    exports.encode = encode = (input) => buffer_1.Buffer.from(input).toString('base64url');\n}\nelse {\n    exports.encode = encode = (input) => buffer_1.Buffer.from(input).toString('base64').replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n}\nconst decodeBase64 = (input) => buffer_1.Buffer.from(input, 'base64');\nexports.decodeBase64 = decodeBase64;\nconst encodeBase64 = (input) => buffer_1.Buffer.from(input).toString('base64');\nexports.encodeBase64 = encodeBase64;\nconst decode = (input) => buffer_1.Buffer.from(normalize(input), 'base64');\nexports.decode = decode;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/base64url.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/cbc_tag.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/cbc_tag.js ***!
  \***************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst crypto_1 = __webpack_require__(/*! crypto */ "crypto");\nconst buffer_utils_js_1 = __webpack_require__(/*! ../lib/buffer_utils.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/buffer_utils.js");\nfunction cbcTag(aad, iv, ciphertext, macSize, macKey, keySize) {\n    const macData = (0, buffer_utils_js_1.concat)(aad, iv, ciphertext, (0, buffer_utils_js_1.uint64be)(aad.length << 3));\n    const hmac = (0, crypto_1.createHmac)(`sha${macSize}`, macKey);\n    hmac.update(macData);\n    return hmac.digest().slice(0, keySize >> 3);\n}\nexports["default"] = cbcTag;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/cbc_tag.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/check_cek_length.js":
/*!************************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/check_cek_length.js ***!
  \************************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nconst is_key_object_js_1 = __webpack_require__(/*! ./is_key_object.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/is_key_object.js\");\nconst checkCekLength = (enc, cek) => {\n    let expected;\n    switch (enc) {\n        case 'A128CBC-HS256':\n        case 'A192CBC-HS384':\n        case 'A256CBC-HS512':\n            expected = parseInt(enc.slice(-3), 10);\n            break;\n        case 'A128GCM':\n        case 'A192GCM':\n        case 'A256GCM':\n            expected = parseInt(enc.slice(1, 4), 10);\n            break;\n        default:\n            throw new errors_js_1.JOSENotSupported(`Content Encryption Algorithm ${enc} is not supported either by JOSE or your javascript runtime`);\n    }\n    if (cek instanceof Uint8Array) {\n        if (cek.length << 3 !== expected) {\n            throw new errors_js_1.JWEInvalid('Invalid Content Encryption Key length');\n        }\n        return;\n    }\n    if ((0, is_key_object_js_1.default)(cek) && cek.type === 'secret') {\n        if (cek.symmetricKeySize << 3 !== expected) {\n            throw new errors_js_1.JWEInvalid('Invalid Content Encryption Key length');\n        }\n        return;\n    }\n    throw new TypeError('Invalid Content Encryption Key type');\n};\nexports[\"default\"] = checkCekLength;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/check_cek_length.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/check_modulus_length.js":
/*!****************************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/check_modulus_length.js ***!
  \****************************************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.setModulusLength = exports.weakMap = void 0;\nexports.weakMap = new WeakMap();\nconst getLength = (buf, index) => {\n    let len = buf.readUInt8(1);\n    if ((len & 0x80) === 0) {\n        if (index === 0) {\n            return len;\n        }\n        return getLength(buf.subarray(2 + len), index - 1);\n    }\n    const num = len & 0x7f;\n    len = 0;\n    for (let i = 0; i < num; i++) {\n        len <<= 8;\n        const j = buf.readUInt8(2 + i);\n        len |= j;\n    }\n    if (index === 0) {\n        return len;\n    }\n    return getLength(buf.subarray(2 + len), index - 1);\n};\nconst getLengthOfSeqIndex = (sequence, index) => {\n    const len = sequence.readUInt8(1);\n    if ((len & 0x80) === 0) {\n        return getLength(sequence.subarray(2), index);\n    }\n    const num = len & 0x7f;\n    return getLength(sequence.subarray(2 + num), index);\n};\nconst getModulusLength = (key) => {\n    var _a, _b;\n    if (exports.weakMap.has(key)) {\n        return exports.weakMap.get(key);\n    }\n    const modulusLength = (_b = (_a = key.asymmetricKeyDetails) === null || _a === void 0 ? void 0 : _a.modulusLength) !== null && _b !== void 0 ? _b : (getLengthOfSeqIndex(key.export({ format: 'der', type: 'pkcs1' }), key.type === 'private' ? 1 : 0) -\n        1) <<\n        3;\n    exports.weakMap.set(key, modulusLength);\n    return modulusLength;\n};\nconst setModulusLength = (keyObject, modulusLength) => {\n    exports.weakMap.set(keyObject, modulusLength);\n};\nexports.setModulusLength = setModulusLength;\nexports[\"default\"] = (key, alg) => {\n    if (getModulusLength(key) < 2048) {\n        throw new TypeError(`${alg} requires key modulusLength to be 2048 bits or larger`);\n    }\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/check_modulus_length.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/ciphers.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/ciphers.js ***!
  \***************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst crypto_1 = __webpack_require__(/*! crypto */ "crypto");\nlet ciphers;\nexports["default"] = (algorithm) => {\n    ciphers || (ciphers = new Set((0, crypto_1.getCiphers)()));\n    return ciphers.has(algorithm);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/ciphers.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/decrypt.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/decrypt.js ***!
  \***************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst crypto_1 = __webpack_require__(/*! crypto */ "crypto");\nconst check_iv_length_js_1 = __webpack_require__(/*! ../lib/check_iv_length.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/check_iv_length.js");\nconst check_cek_length_js_1 = __webpack_require__(/*! ./check_cek_length.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/check_cek_length.js");\nconst buffer_utils_js_1 = __webpack_require__(/*! ../lib/buffer_utils.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/buffer_utils.js");\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js");\nconst timing_safe_equal_js_1 = __webpack_require__(/*! ./timing_safe_equal.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/timing_safe_equal.js");\nconst cbc_tag_js_1 = __webpack_require__(/*! ./cbc_tag.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/cbc_tag.js");\nconst webcrypto_js_1 = __webpack_require__(/*! ./webcrypto.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/webcrypto.js");\nconst crypto_key_js_1 = __webpack_require__(/*! ../lib/crypto_key.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/crypto_key.js");\nconst is_key_object_js_1 = __webpack_require__(/*! ./is_key_object.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/is_key_object.js");\nconst invalid_key_input_js_1 = __webpack_require__(/*! ../lib/invalid_key_input.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/invalid_key_input.js");\nconst ciphers_js_1 = __webpack_require__(/*! ./ciphers.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/ciphers.js");\nconst is_key_like_js_1 = __webpack_require__(/*! ./is_key_like.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/is_key_like.js");\nfunction cbcDecrypt(enc, cek, ciphertext, iv, tag, aad) {\n    const keySize = parseInt(enc.slice(1, 4), 10);\n    if ((0, is_key_object_js_1.default)(cek)) {\n        cek = cek.export();\n    }\n    const encKey = cek.subarray(keySize >> 3);\n    const macKey = cek.subarray(0, keySize >> 3);\n    const macSize = parseInt(enc.slice(-3), 10);\n    const algorithm = `aes-${keySize}-cbc`;\n    if (!(0, ciphers_js_1.default)(algorithm)) {\n        throw new errors_js_1.JOSENotSupported(`alg ${enc} is not supported by your javascript runtime`);\n    }\n    const expectedTag = (0, cbc_tag_js_1.default)(aad, iv, ciphertext, macSize, macKey, keySize);\n    let macCheckPassed;\n    try {\n        macCheckPassed = (0, timing_safe_equal_js_1.default)(tag, expectedTag);\n    }\n    catch {\n    }\n    if (!macCheckPassed) {\n        throw new errors_js_1.JWEDecryptionFailed();\n    }\n    let plaintext;\n    try {\n        const decipher = (0, crypto_1.createDecipheriv)(algorithm, encKey, iv);\n        plaintext = (0, buffer_utils_js_1.concat)(decipher.update(ciphertext), decipher.final());\n    }\n    catch {\n    }\n    if (!plaintext) {\n        throw new errors_js_1.JWEDecryptionFailed();\n    }\n    return plaintext;\n}\nfunction gcmDecrypt(enc, cek, ciphertext, iv, tag, aad) {\n    const keySize = parseInt(enc.slice(1, 4), 10);\n    const algorithm = `aes-${keySize}-gcm`;\n    if (!(0, ciphers_js_1.default)(algorithm)) {\n        throw new errors_js_1.JOSENotSupported(`alg ${enc} is not supported by your javascript runtime`);\n    }\n    try {\n        const decipher = (0, crypto_1.createDecipheriv)(algorithm, cek, iv, { authTagLength: 16 });\n        decipher.setAuthTag(tag);\n        if (aad.byteLength) {\n            decipher.setAAD(aad, { plaintextLength: ciphertext.length });\n        }\n        const plaintext = decipher.update(ciphertext);\n        decipher.final();\n        return plaintext;\n    }\n    catch {\n        throw new errors_js_1.JWEDecryptionFailed();\n    }\n}\nconst decrypt = (enc, cek, ciphertext, iv, tag, aad) => {\n    let key;\n    if ((0, webcrypto_js_1.isCryptoKey)(cek)) {\n        (0, crypto_key_js_1.checkEncCryptoKey)(cek, enc, \'decrypt\');\n        key = crypto_1.KeyObject.from(cek);\n    }\n    else if (cek instanceof Uint8Array || (0, is_key_object_js_1.default)(cek)) {\n        key = cek;\n    }\n    else {\n        throw new TypeError((0, invalid_key_input_js_1.default)(cek, ...is_key_like_js_1.types, \'Uint8Array\'));\n    }\n    (0, check_cek_length_js_1.default)(enc, key);\n    (0, check_iv_length_js_1.default)(enc, iv);\n    switch (enc) {\n        case \'A128CBC-HS256\':\n        case \'A192CBC-HS384\':\n        case \'A256CBC-HS512\':\n            return cbcDecrypt(enc, key, ciphertext, iv, tag, aad);\n        case \'A128GCM\':\n        case \'A192GCM\':\n        case \'A256GCM\':\n            return gcmDecrypt(enc, key, ciphertext, iv, tag, aad);\n        default:\n            throw new errors_js_1.JOSENotSupported(\'Unsupported JWE Content Encryption Algorithm\');\n    }\n};\nexports["default"] = decrypt;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/decrypt.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/digest.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/digest.js ***!
  \**************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst crypto_1 = __webpack_require__(/*! crypto */ "crypto");\nconst digest = (algorithm, data) => (0, crypto_1.createHash)(algorithm).update(data).digest();\nexports["default"] = digest;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/digest.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/dsa_digest.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/dsa_digest.js ***!
  \******************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nfunction dsaDigest(alg) {\n    switch (alg) {\n        case 'PS256':\n        case 'RS256':\n        case 'ES256':\n        case 'ES256K':\n            return 'sha256';\n        case 'PS384':\n        case 'RS384':\n        case 'ES384':\n            return 'sha384';\n        case 'PS512':\n        case 'RS512':\n        case 'ES512':\n            return 'sha512';\n        case 'EdDSA':\n            return undefined;\n        default:\n            throw new errors_js_1.JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n    }\n}\nexports[\"default\"] = dsaDigest;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/dsa_digest.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/ecdhes.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/ecdhes.js ***!
  \**************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ecdhAllowed = exports.generateEpk = exports.deriveKey = void 0;\nconst crypto_1 = __webpack_require__(/*! crypto */ \"crypto\");\nconst util_1 = __webpack_require__(/*! util */ \"util\");\nconst get_named_curve_js_1 = __webpack_require__(/*! ./get_named_curve.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/get_named_curve.js\");\nconst buffer_utils_js_1 = __webpack_require__(/*! ../lib/buffer_utils.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/buffer_utils.js\");\nconst digest_js_1 = __webpack_require__(/*! ./digest.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/digest.js\");\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nconst webcrypto_js_1 = __webpack_require__(/*! ./webcrypto.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/webcrypto.js\");\nconst crypto_key_js_1 = __webpack_require__(/*! ../lib/crypto_key.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/crypto_key.js\");\nconst is_key_object_js_1 = __webpack_require__(/*! ./is_key_object.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/is_key_object.js\");\nconst invalid_key_input_js_1 = __webpack_require__(/*! ../lib/invalid_key_input.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/invalid_key_input.js\");\nconst is_key_like_js_1 = __webpack_require__(/*! ./is_key_like.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/is_key_like.js\");\nconst generateKeyPair = (0, util_1.promisify)(crypto_1.generateKeyPair);\nasync function deriveKey(publicKee, privateKee, algorithm, keyLength, apu = new Uint8Array(0), apv = new Uint8Array(0)) {\n    let publicKey;\n    if ((0, webcrypto_js_1.isCryptoKey)(publicKee)) {\n        (0, crypto_key_js_1.checkEncCryptoKey)(publicKee, 'ECDH-ES');\n        publicKey = crypto_1.KeyObject.from(publicKee);\n    }\n    else if ((0, is_key_object_js_1.default)(publicKee)) {\n        publicKey = publicKee;\n    }\n    else {\n        throw new TypeError((0, invalid_key_input_js_1.default)(publicKee, ...is_key_like_js_1.types));\n    }\n    let privateKey;\n    if ((0, webcrypto_js_1.isCryptoKey)(privateKee)) {\n        (0, crypto_key_js_1.checkEncCryptoKey)(privateKee, 'ECDH-ES', 'deriveBits', 'deriveKey');\n        privateKey = crypto_1.KeyObject.from(privateKee);\n    }\n    else if ((0, is_key_object_js_1.default)(privateKee)) {\n        privateKey = privateKee;\n    }\n    else {\n        throw new TypeError((0, invalid_key_input_js_1.default)(privateKee, ...is_key_like_js_1.types));\n    }\n    const value = (0, buffer_utils_js_1.concat)((0, buffer_utils_js_1.lengthAndInput)(buffer_utils_js_1.encoder.encode(algorithm)), (0, buffer_utils_js_1.lengthAndInput)(apu), (0, buffer_utils_js_1.lengthAndInput)(apv), (0, buffer_utils_js_1.uint32be)(keyLength));\n    const sharedSecret = (0, crypto_1.diffieHellman)({ privateKey, publicKey });\n    return (0, buffer_utils_js_1.concatKdf)(digest_js_1.default, sharedSecret, keyLength, value);\n}\nexports.deriveKey = deriveKey;\nasync function generateEpk(kee) {\n    let key;\n    if ((0, webcrypto_js_1.isCryptoKey)(kee)) {\n        key = crypto_1.KeyObject.from(kee);\n    }\n    else if ((0, is_key_object_js_1.default)(kee)) {\n        key = kee;\n    }\n    else {\n        throw new TypeError((0, invalid_key_input_js_1.default)(kee, ...is_key_like_js_1.types));\n    }\n    switch (key.asymmetricKeyType) {\n        case 'x25519':\n            return generateKeyPair('x25519');\n        case 'x448': {\n            return generateKeyPair('x448');\n        }\n        case 'ec': {\n            const namedCurve = (0, get_named_curve_js_1.default)(key);\n            return generateKeyPair('ec', { namedCurve });\n        }\n        default:\n            throw new errors_js_1.JOSENotSupported('Invalid or unsupported EPK');\n    }\n}\nexports.generateEpk = generateEpk;\nconst ecdhAllowed = (key) => ['P-256', 'P-384', 'P-521', 'X25519', 'X448'].includes((0, get_named_curve_js_1.default)(key));\nexports.ecdhAllowed = ecdhAllowed;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/ecdhes.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/encrypt.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/encrypt.js ***!
  \***************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst crypto_1 = __webpack_require__(/*! crypto */ "crypto");\nconst check_iv_length_js_1 = __webpack_require__(/*! ../lib/check_iv_length.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/check_iv_length.js");\nconst check_cek_length_js_1 = __webpack_require__(/*! ./check_cek_length.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/check_cek_length.js");\nconst buffer_utils_js_1 = __webpack_require__(/*! ../lib/buffer_utils.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/buffer_utils.js");\nconst cbc_tag_js_1 = __webpack_require__(/*! ./cbc_tag.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/cbc_tag.js");\nconst webcrypto_js_1 = __webpack_require__(/*! ./webcrypto.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/webcrypto.js");\nconst crypto_key_js_1 = __webpack_require__(/*! ../lib/crypto_key.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/crypto_key.js");\nconst is_key_object_js_1 = __webpack_require__(/*! ./is_key_object.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/is_key_object.js");\nconst invalid_key_input_js_1 = __webpack_require__(/*! ../lib/invalid_key_input.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/invalid_key_input.js");\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js");\nconst ciphers_js_1 = __webpack_require__(/*! ./ciphers.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/ciphers.js");\nconst is_key_like_js_1 = __webpack_require__(/*! ./is_key_like.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/is_key_like.js");\nfunction cbcEncrypt(enc, plaintext, cek, iv, aad) {\n    const keySize = parseInt(enc.slice(1, 4), 10);\n    if ((0, is_key_object_js_1.default)(cek)) {\n        cek = cek.export();\n    }\n    const encKey = cek.subarray(keySize >> 3);\n    const macKey = cek.subarray(0, keySize >> 3);\n    const algorithm = `aes-${keySize}-cbc`;\n    if (!(0, ciphers_js_1.default)(algorithm)) {\n        throw new errors_js_1.JOSENotSupported(`alg ${enc} is not supported by your javascript runtime`);\n    }\n    const cipher = (0, crypto_1.createCipheriv)(algorithm, encKey, iv);\n    const ciphertext = (0, buffer_utils_js_1.concat)(cipher.update(plaintext), cipher.final());\n    const macSize = parseInt(enc.slice(-3), 10);\n    const tag = (0, cbc_tag_js_1.default)(aad, iv, ciphertext, macSize, macKey, keySize);\n    return { ciphertext, tag };\n}\nfunction gcmEncrypt(enc, plaintext, cek, iv, aad) {\n    const keySize = parseInt(enc.slice(1, 4), 10);\n    const algorithm = `aes-${keySize}-gcm`;\n    if (!(0, ciphers_js_1.default)(algorithm)) {\n        throw new errors_js_1.JOSENotSupported(`alg ${enc} is not supported by your javascript runtime`);\n    }\n    const cipher = (0, crypto_1.createCipheriv)(algorithm, cek, iv, { authTagLength: 16 });\n    if (aad.byteLength) {\n        cipher.setAAD(aad, { plaintextLength: plaintext.length });\n    }\n    const ciphertext = cipher.update(plaintext);\n    cipher.final();\n    const tag = cipher.getAuthTag();\n    return { ciphertext, tag };\n}\nconst encrypt = (enc, plaintext, cek, iv, aad) => {\n    let key;\n    if ((0, webcrypto_js_1.isCryptoKey)(cek)) {\n        (0, crypto_key_js_1.checkEncCryptoKey)(cek, enc, \'encrypt\');\n        key = crypto_1.KeyObject.from(cek);\n    }\n    else if (cek instanceof Uint8Array || (0, is_key_object_js_1.default)(cek)) {\n        key = cek;\n    }\n    else {\n        throw new TypeError((0, invalid_key_input_js_1.default)(cek, ...is_key_like_js_1.types, \'Uint8Array\'));\n    }\n    (0, check_cek_length_js_1.default)(enc, key);\n    (0, check_iv_length_js_1.default)(enc, iv);\n    switch (enc) {\n        case \'A128CBC-HS256\':\n        case \'A192CBC-HS384\':\n        case \'A256CBC-HS512\':\n            return cbcEncrypt(enc, plaintext, key, iv, aad);\n        case \'A128GCM\':\n        case \'A192GCM\':\n        case \'A256GCM\':\n            return gcmEncrypt(enc, plaintext, key, iv, aad);\n        default:\n            throw new errors_js_1.JOSENotSupported(\'Unsupported JWE Content Encryption Algorithm\');\n    }\n};\nexports["default"] = encrypt;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/encrypt.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/env.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/env.js ***!
  \***********************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.isNodeJs = exports.isCloudflareWorkers = void 0;\nfunction isCloudflareWorkers() {\n    return false;\n}\nexports.isCloudflareWorkers = isCloudflareWorkers;\nfunction isNodeJs() {\n    return true;\n}\nexports.isNodeJs = isNodeJs;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/env.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/fetch_jwks.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/fetch_jwks.js ***!
  \******************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst http = __webpack_require__(/*! http */ \"http\");\nconst https = __webpack_require__(/*! https */ \"https\");\nconst events_1 = __webpack_require__(/*! events */ \"events\");\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nconst buffer_utils_js_1 = __webpack_require__(/*! ../lib/buffer_utils.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/buffer_utils.js\");\nconst fetchJwks = async (url, timeout, options) => {\n    let get;\n    switch (url.protocol) {\n        case 'https:':\n            get = https.get;\n            break;\n        case 'http:':\n            get = http.get;\n            break;\n        default:\n            throw new TypeError('Unsupported URL protocol.');\n    }\n    const { agent } = options;\n    const req = get(url.href, {\n        agent,\n        timeout,\n    });\n    const [response] = (await Promise.race([(0, events_1.once)(req, 'response'), (0, events_1.once)(req, 'timeout')]));\n    if (!response) {\n        req.destroy();\n        throw new errors_js_1.JWKSTimeout();\n    }\n    if (response.statusCode !== 200) {\n        throw new errors_js_1.JOSEError('Expected 200 OK from the JSON Web Key Set HTTP response');\n    }\n    const parts = [];\n    for await (const part of response) {\n        parts.push(part);\n    }\n    try {\n        return JSON.parse(buffer_utils_js_1.decoder.decode((0, buffer_utils_js_1.concat)(...parts)));\n    }\n    catch {\n        throw new errors_js_1.JOSEError('Failed to parse the JSON Web Key Set HTTP response as JSON');\n    }\n};\nexports[\"default\"] = fetchJwks;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/fetch_jwks.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/generate.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/generate.js ***!
  \****************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.generateKeyPair = exports.generateSecret = void 0;\nconst crypto_1 = __webpack_require__(/*! crypto */ \"crypto\");\nconst util_1 = __webpack_require__(/*! util */ \"util\");\nconst random_js_1 = __webpack_require__(/*! ./random.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/random.js\");\nconst check_modulus_length_js_1 = __webpack_require__(/*! ./check_modulus_length.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/check_modulus_length.js\");\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nconst generate = (0, util_1.promisify)(crypto_1.generateKeyPair);\nasync function generateSecret(alg, options) {\n    let length;\n    switch (alg) {\n        case 'HS256':\n        case 'HS384':\n        case 'HS512':\n        case 'A128CBC-HS256':\n        case 'A192CBC-HS384':\n        case 'A256CBC-HS512':\n            length = parseInt(alg.slice(-3), 10);\n            break;\n        case 'A128KW':\n        case 'A192KW':\n        case 'A256KW':\n        case 'A128GCMKW':\n        case 'A192GCMKW':\n        case 'A256GCMKW':\n        case 'A128GCM':\n        case 'A192GCM':\n        case 'A256GCM':\n            length = parseInt(alg.slice(1, 4), 10);\n            break;\n        default:\n            throw new errors_js_1.JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n    }\n    return (0, crypto_1.createSecretKey)((0, random_js_1.default)(new Uint8Array(length >> 3)));\n}\nexports.generateSecret = generateSecret;\nasync function generateKeyPair(alg, options) {\n    var _a, _b;\n    switch (alg) {\n        case 'RS256':\n        case 'RS384':\n        case 'RS512':\n        case 'PS256':\n        case 'PS384':\n        case 'PS512':\n        case 'RSA-OAEP':\n        case 'RSA-OAEP-256':\n        case 'RSA-OAEP-384':\n        case 'RSA-OAEP-512':\n        case 'RSA1_5': {\n            const modulusLength = (_a = options === null || options === void 0 ? void 0 : options.modulusLength) !== null && _a !== void 0 ? _a : 2048;\n            if (typeof modulusLength !== 'number' || modulusLength < 2048) {\n                throw new errors_js_1.JOSENotSupported('Invalid or unsupported modulusLength option provided, 2048 bits or larger keys must be used');\n            }\n            const keypair = await generate('rsa', {\n                modulusLength,\n                publicExponent: 0x10001,\n            });\n            (0, check_modulus_length_js_1.setModulusLength)(keypair.privateKey, modulusLength);\n            (0, check_modulus_length_js_1.setModulusLength)(keypair.publicKey, modulusLength);\n            return keypair;\n        }\n        case 'ES256':\n            return generate('ec', { namedCurve: 'P-256' });\n        case 'ES256K':\n            return generate('ec', { namedCurve: 'secp256k1' });\n        case 'ES384':\n            return generate('ec', { namedCurve: 'P-384' });\n        case 'ES512':\n            return generate('ec', { namedCurve: 'P-521' });\n        case 'EdDSA': {\n            switch (options === null || options === void 0 ? void 0 : options.crv) {\n                case undefined:\n                case 'Ed25519':\n                    return generate('ed25519');\n                case 'Ed448':\n                    return generate('ed448');\n                default:\n                    throw new errors_js_1.JOSENotSupported('Invalid or unsupported crv option provided, supported values are Ed25519 and Ed448');\n            }\n        }\n        case 'ECDH-ES':\n        case 'ECDH-ES+A128KW':\n        case 'ECDH-ES+A192KW':\n        case 'ECDH-ES+A256KW':\n            switch (options === null || options === void 0 ? void 0 : options.crv) {\n                case undefined:\n                case 'P-256':\n                case 'P-384':\n                case 'P-521':\n                    return generate('ec', { namedCurve: (_b = options === null || options === void 0 ? void 0 : options.crv) !== null && _b !== void 0 ? _b : 'P-256' });\n                case 'X25519':\n                    return generate('x25519');\n                case 'X448':\n                    return generate('x448');\n                default:\n                    throw new errors_js_1.JOSENotSupported('Invalid or unsupported crv option provided, supported values are P-256, P-384, P-521, X25519, and X448');\n            }\n        default:\n            throw new errors_js_1.JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n    }\n}\nexports.generateKeyPair = generateKeyPair;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/generate.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/get_named_curve.js":
/*!***********************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/get_named_curve.js ***!
  \***********************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.setCurve = exports.weakMap = void 0;\nconst buffer_1 = __webpack_require__(/*! buffer */ \"buffer\");\nconst crypto_1 = __webpack_require__(/*! crypto */ \"crypto\");\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nconst webcrypto_js_1 = __webpack_require__(/*! ./webcrypto.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/webcrypto.js\");\nconst is_key_object_js_1 = __webpack_require__(/*! ./is_key_object.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/is_key_object.js\");\nconst invalid_key_input_js_1 = __webpack_require__(/*! ../lib/invalid_key_input.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/invalid_key_input.js\");\nconst is_key_like_js_1 = __webpack_require__(/*! ./is_key_like.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/is_key_like.js\");\nconst p256 = buffer_1.Buffer.from([42, 134, 72, 206, 61, 3, 1, 7]);\nconst p384 = buffer_1.Buffer.from([43, 129, 4, 0, 34]);\nconst p521 = buffer_1.Buffer.from([43, 129, 4, 0, 35]);\nconst secp256k1 = buffer_1.Buffer.from([43, 129, 4, 0, 10]);\nexports.weakMap = new WeakMap();\nconst namedCurveToJOSE = (namedCurve) => {\n    switch (namedCurve) {\n        case 'prime256v1':\n            return 'P-256';\n        case 'secp384r1':\n            return 'P-384';\n        case 'secp521r1':\n            return 'P-521';\n        case 'secp256k1':\n            return 'secp256k1';\n        default:\n            throw new errors_js_1.JOSENotSupported('Unsupported key curve for this operation');\n    }\n};\nconst getNamedCurve = (kee, raw) => {\n    var _a;\n    let key;\n    if ((0, webcrypto_js_1.isCryptoKey)(kee)) {\n        key = crypto_1.KeyObject.from(kee);\n    }\n    else if ((0, is_key_object_js_1.default)(kee)) {\n        key = kee;\n    }\n    else {\n        throw new TypeError((0, invalid_key_input_js_1.default)(kee, ...is_key_like_js_1.types));\n    }\n    if (key.type === 'secret') {\n        throw new TypeError('only \"private\" or \"public\" type keys can be used for this operation');\n    }\n    switch (key.asymmetricKeyType) {\n        case 'ed25519':\n        case 'ed448':\n            return `Ed${key.asymmetricKeyType.slice(2)}`;\n        case 'x25519':\n        case 'x448':\n            return `X${key.asymmetricKeyType.slice(1)}`;\n        case 'ec': {\n            if (exports.weakMap.has(key)) {\n                return exports.weakMap.get(key);\n            }\n            let namedCurve = (_a = key.asymmetricKeyDetails) === null || _a === void 0 ? void 0 : _a.namedCurve;\n            if (!namedCurve && key.type === 'private') {\n                namedCurve = getNamedCurve((0, crypto_1.createPublicKey)(key), true);\n            }\n            else if (!namedCurve) {\n                const buf = key.export({ format: 'der', type: 'spki' });\n                const i = buf[1] < 128 ? 14 : 15;\n                const len = buf[i];\n                const curveOid = buf.slice(i + 1, i + 1 + len);\n                if (curveOid.equals(p256)) {\n                    namedCurve = 'prime256v1';\n                }\n                else if (curveOid.equals(p384)) {\n                    namedCurve = 'secp384r1';\n                }\n                else if (curveOid.equals(p521)) {\n                    namedCurve = 'secp521r1';\n                }\n                else if (curveOid.equals(secp256k1)) {\n                    namedCurve = 'secp256k1';\n                }\n                else {\n                    throw new errors_js_1.JOSENotSupported('Unsupported key curve for this operation');\n                }\n            }\n            if (raw)\n                return namedCurve;\n            const curve = namedCurveToJOSE(namedCurve);\n            exports.weakMap.set(key, curve);\n            return curve;\n        }\n        default:\n            throw new TypeError('Invalid asymmetric key type for this operation');\n    }\n};\nfunction setCurve(keyObject, curve) {\n    exports.weakMap.set(keyObject, curve);\n}\nexports.setCurve = setCurve;\nexports[\"default\"] = getNamedCurve;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/get_named_curve.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/get_sign_verify_key.js":
/*!***************************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/get_sign_verify_key.js ***!
  \***************************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst crypto_1 = __webpack_require__(/*! crypto */ "crypto");\nconst webcrypto_js_1 = __webpack_require__(/*! ./webcrypto.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/webcrypto.js");\nconst crypto_key_js_1 = __webpack_require__(/*! ../lib/crypto_key.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/crypto_key.js");\nconst invalid_key_input_js_1 = __webpack_require__(/*! ../lib/invalid_key_input.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/invalid_key_input.js");\nconst is_key_like_js_1 = __webpack_require__(/*! ./is_key_like.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/is_key_like.js");\nfunction getSignVerifyKey(alg, key, usage) {\n    if (key instanceof Uint8Array) {\n        if (!alg.startsWith(\'HS\')) {\n            throw new TypeError((0, invalid_key_input_js_1.default)(key, ...is_key_like_js_1.types));\n        }\n        return (0, crypto_1.createSecretKey)(key);\n    }\n    if (key instanceof crypto_1.KeyObject) {\n        return key;\n    }\n    if ((0, webcrypto_js_1.isCryptoKey)(key)) {\n        (0, crypto_key_js_1.checkSigCryptoKey)(key, alg, usage);\n        return crypto_1.KeyObject.from(key);\n    }\n    throw new TypeError((0, invalid_key_input_js_1.default)(key, ...is_key_like_js_1.types, \'Uint8Array\'));\n}\nexports["default"] = getSignVerifyKey;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/get_sign_verify_key.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/hmac_digest.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/hmac_digest.js ***!
  \*******************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nfunction hmacDigest(alg) {\n    switch (alg) {\n        case 'HS256':\n            return 'sha256';\n        case 'HS384':\n            return 'sha384';\n        case 'HS512':\n            return 'sha512';\n        default:\n            throw new errors_js_1.JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n    }\n}\nexports[\"default\"] = hmacDigest;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/hmac_digest.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/is_key_like.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/is_key_like.js ***!
  \*******************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.types = void 0;\nconst webcrypto_js_1 = __webpack_require__(/*! ./webcrypto.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/webcrypto.js");\nconst is_key_object_js_1 = __webpack_require__(/*! ./is_key_object.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/is_key_object.js");\nexports["default"] = (key) => (0, is_key_object_js_1.default)(key) || (0, webcrypto_js_1.isCryptoKey)(key);\nconst types = [\'KeyObject\'];\nexports.types = types;\nif (parseInt(process.versions.node) >= 16) {\n    types.push(\'CryptoKey\');\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/is_key_like.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/is_key_object.js":
/*!*********************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/is_key_object.js ***!
  \*********************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst crypto_1 = __webpack_require__(/*! crypto */ "crypto");\nconst util = __webpack_require__(/*! util */ "util");\nexports["default"] = util.types.isKeyObject\n    ? (obj) => util.types.isKeyObject(obj)\n    : (obj) => obj != null && obj instanceof crypto_1.KeyObject;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/is_key_object.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/jwk_to_key.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/jwk_to_key.js ***!
  \******************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst buffer_1 = __webpack_require__(/*! buffer */ \"buffer\");\nconst crypto_1 = __webpack_require__(/*! crypto */ \"crypto\");\nconst base64url_js_1 = __webpack_require__(/*! ./base64url.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/base64url.js\");\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nconst get_named_curve_js_1 = __webpack_require__(/*! ./get_named_curve.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/get_named_curve.js\");\nconst check_modulus_length_js_1 = __webpack_require__(/*! ./check_modulus_length.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/check_modulus_length.js\");\nconst asn1_sequence_encoder_js_1 = __webpack_require__(/*! ./asn1_sequence_encoder.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/asn1_sequence_encoder.js\");\nconst [major, minor] = process.version\n    .slice(1)\n    .split('.')\n    .map((str) => parseInt(str, 10));\nconst jwkImportSupported = major >= 16 || (major === 15 && minor >= 12);\nconst parse = (jwk) => {\n    if (jwkImportSupported && jwk.kty !== 'oct') {\n        return jwk.d\n            ? (0, crypto_1.createPrivateKey)({ format: 'jwk', key: jwk })\n            : (0, crypto_1.createPublicKey)({ format: 'jwk', key: jwk });\n    }\n    switch (jwk.kty) {\n        case 'oct': {\n            return (0, crypto_1.createSecretKey)((0, base64url_js_1.decode)(jwk.k));\n        }\n        case 'RSA': {\n            const enc = new asn1_sequence_encoder_js_1.default();\n            const isPrivate = jwk.d !== undefined;\n            const modulus = buffer_1.Buffer.from(jwk.n, 'base64');\n            const exponent = buffer_1.Buffer.from(jwk.e, 'base64');\n            if (isPrivate) {\n                enc.zero();\n                enc.unsignedInteger(modulus);\n                enc.unsignedInteger(exponent);\n                enc.unsignedInteger(buffer_1.Buffer.from(jwk.d, 'base64'));\n                enc.unsignedInteger(buffer_1.Buffer.from(jwk.p, 'base64'));\n                enc.unsignedInteger(buffer_1.Buffer.from(jwk.q, 'base64'));\n                enc.unsignedInteger(buffer_1.Buffer.from(jwk.dp, 'base64'));\n                enc.unsignedInteger(buffer_1.Buffer.from(jwk.dq, 'base64'));\n                enc.unsignedInteger(buffer_1.Buffer.from(jwk.qi, 'base64'));\n            }\n            else {\n                enc.unsignedInteger(modulus);\n                enc.unsignedInteger(exponent);\n            }\n            const der = enc.end();\n            const createInput = {\n                key: der,\n                format: 'der',\n                type: 'pkcs1',\n            };\n            const keyObject = isPrivate ? (0, crypto_1.createPrivateKey)(createInput) : (0, crypto_1.createPublicKey)(createInput);\n            (0, check_modulus_length_js_1.setModulusLength)(keyObject, modulus.length << 3);\n            return keyObject;\n        }\n        case 'EC': {\n            const enc = new asn1_sequence_encoder_js_1.default();\n            const isPrivate = jwk.d !== undefined;\n            const pub = buffer_1.Buffer.concat([\n                buffer_1.Buffer.alloc(1, 4),\n                buffer_1.Buffer.from(jwk.x, 'base64'),\n                buffer_1.Buffer.from(jwk.y, 'base64'),\n            ]);\n            if (isPrivate) {\n                enc.zero();\n                const enc$1 = new asn1_sequence_encoder_js_1.default();\n                enc$1.oidFor('ecPublicKey');\n                enc$1.oidFor(jwk.crv);\n                enc.add(enc$1.end());\n                const enc$2 = new asn1_sequence_encoder_js_1.default();\n                enc$2.one();\n                enc$2.octStr(buffer_1.Buffer.from(jwk.d, 'base64'));\n                const enc$3 = new asn1_sequence_encoder_js_1.default();\n                enc$3.bitStr(pub);\n                const f2 = enc$3.end(buffer_1.Buffer.from([0xa1]));\n                enc$2.add(f2);\n                const f = enc$2.end();\n                const enc$4 = new asn1_sequence_encoder_js_1.default();\n                enc$4.add(f);\n                const f3 = enc$4.end(buffer_1.Buffer.from([0x04]));\n                enc.add(f3);\n                const der = enc.end();\n                const keyObject = (0, crypto_1.createPrivateKey)({ key: der, format: 'der', type: 'pkcs8' });\n                (0, get_named_curve_js_1.setCurve)(keyObject, jwk.crv);\n                return keyObject;\n            }\n            const enc$1 = new asn1_sequence_encoder_js_1.default();\n            enc$1.oidFor('ecPublicKey');\n            enc$1.oidFor(jwk.crv);\n            enc.add(enc$1.end());\n            enc.bitStr(pub);\n            const der = enc.end();\n            const keyObject = (0, crypto_1.createPublicKey)({ key: der, format: 'der', type: 'spki' });\n            (0, get_named_curve_js_1.setCurve)(keyObject, jwk.crv);\n            return keyObject;\n        }\n        case 'OKP': {\n            const enc = new asn1_sequence_encoder_js_1.default();\n            const isPrivate = jwk.d !== undefined;\n            if (isPrivate) {\n                enc.zero();\n                const enc$1 = new asn1_sequence_encoder_js_1.default();\n                enc$1.oidFor(jwk.crv);\n                enc.add(enc$1.end());\n                const enc$2 = new asn1_sequence_encoder_js_1.default();\n                enc$2.octStr(buffer_1.Buffer.from(jwk.d, 'base64'));\n                const f = enc$2.end(buffer_1.Buffer.from([0x04]));\n                enc.add(f);\n                const der = enc.end();\n                return (0, crypto_1.createPrivateKey)({ key: der, format: 'der', type: 'pkcs8' });\n            }\n            const enc$1 = new asn1_sequence_encoder_js_1.default();\n            enc$1.oidFor(jwk.crv);\n            enc.add(enc$1.end());\n            enc.bitStr(buffer_1.Buffer.from(jwk.x, 'base64'));\n            const der = enc.end();\n            return (0, crypto_1.createPublicKey)({ key: der, format: 'der', type: 'spki' });\n        }\n        default:\n            throw new errors_js_1.JOSENotSupported('Invalid or unsupported JWK \"kty\" (Key Type) Parameter value');\n    }\n};\nexports[\"default\"] = parse;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/jwk_to_key.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/key_to_jwk.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/key_to_jwk.js ***!
  \******************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst crypto_1 = __webpack_require__(/*! crypto */ \"crypto\");\nconst base64url_js_1 = __webpack_require__(/*! ./base64url.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/base64url.js\");\nconst asn1_sequence_decoder_js_1 = __webpack_require__(/*! ./asn1_sequence_decoder.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/asn1_sequence_decoder.js\");\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nconst get_named_curve_js_1 = __webpack_require__(/*! ./get_named_curve.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/get_named_curve.js\");\nconst webcrypto_js_1 = __webpack_require__(/*! ./webcrypto.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/webcrypto.js\");\nconst is_key_object_js_1 = __webpack_require__(/*! ./is_key_object.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/is_key_object.js\");\nconst invalid_key_input_js_1 = __webpack_require__(/*! ../lib/invalid_key_input.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/invalid_key_input.js\");\nconst is_key_like_js_1 = __webpack_require__(/*! ./is_key_like.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/is_key_like.js\");\nconst [major, minor] = process.version\n    .slice(1)\n    .split('.')\n    .map((str) => parseInt(str, 10));\nconst jwkExportSupported = major >= 16 || (major === 15 && minor >= 9);\nconst keyToJWK = (key) => {\n    let keyObject;\n    if ((0, webcrypto_js_1.isCryptoKey)(key)) {\n        if (!key.extractable) {\n            throw new TypeError('CryptoKey is not extractable');\n        }\n        keyObject = crypto_1.KeyObject.from(key);\n    }\n    else if ((0, is_key_object_js_1.default)(key)) {\n        keyObject = key;\n    }\n    else if (key instanceof Uint8Array) {\n        return {\n            kty: 'oct',\n            k: (0, base64url_js_1.encode)(key),\n        };\n    }\n    else {\n        throw new TypeError((0, invalid_key_input_js_1.default)(key, ...is_key_like_js_1.types, 'Uint8Array'));\n    }\n    if (jwkExportSupported) {\n        return keyObject.export({ format: 'jwk' });\n    }\n    switch (keyObject.type) {\n        case 'secret':\n            return {\n                kty: 'oct',\n                k: (0, base64url_js_1.encode)(keyObject.export()),\n            };\n        case 'private':\n        case 'public': {\n            switch (keyObject.asymmetricKeyType) {\n                case 'rsa': {\n                    const der = keyObject.export({ format: 'der', type: 'pkcs1' });\n                    const dec = new asn1_sequence_decoder_js_1.default(der);\n                    if (keyObject.type === 'private') {\n                        dec.unsignedInteger();\n                    }\n                    const n = (0, base64url_js_1.encode)(dec.unsignedInteger());\n                    const e = (0, base64url_js_1.encode)(dec.unsignedInteger());\n                    let jwk;\n                    if (keyObject.type === 'private') {\n                        jwk = {\n                            d: (0, base64url_js_1.encode)(dec.unsignedInteger()),\n                            p: (0, base64url_js_1.encode)(dec.unsignedInteger()),\n                            q: (0, base64url_js_1.encode)(dec.unsignedInteger()),\n                            dp: (0, base64url_js_1.encode)(dec.unsignedInteger()),\n                            dq: (0, base64url_js_1.encode)(dec.unsignedInteger()),\n                            qi: (0, base64url_js_1.encode)(dec.unsignedInteger()),\n                        };\n                    }\n                    dec.end();\n                    return { kty: 'RSA', n, e, ...jwk };\n                }\n                case 'ec': {\n                    const crv = (0, get_named_curve_js_1.default)(keyObject);\n                    let len;\n                    let offset;\n                    let correction;\n                    switch (crv) {\n                        case 'secp256k1':\n                            len = 64;\n                            offset = 31 + 2;\n                            correction = -1;\n                            break;\n                        case 'P-256':\n                            len = 64;\n                            offset = 34 + 2;\n                            correction = -1;\n                            break;\n                        case 'P-384':\n                            len = 96;\n                            offset = 33 + 2;\n                            correction = -3;\n                            break;\n                        case 'P-521':\n                            len = 132;\n                            offset = 33 + 2;\n                            correction = -3;\n                            break;\n                        default:\n                            throw new errors_js_1.JOSENotSupported('Unsupported curve');\n                    }\n                    if (keyObject.type === 'public') {\n                        const der = keyObject.export({ type: 'spki', format: 'der' });\n                        return {\n                            kty: 'EC',\n                            crv,\n                            x: (0, base64url_js_1.encode)(der.subarray(-len, -len / 2)),\n                            y: (0, base64url_js_1.encode)(der.subarray(-len / 2)),\n                        };\n                    }\n                    const der = keyObject.export({ type: 'pkcs8', format: 'der' });\n                    if (der.length < 100) {\n                        offset += correction;\n                    }\n                    return {\n                        ...keyToJWK((0, crypto_1.createPublicKey)(keyObject)),\n                        d: (0, base64url_js_1.encode)(der.subarray(offset, offset + len / 2)),\n                    };\n                }\n                case 'ed25519':\n                case 'x25519': {\n                    const crv = (0, get_named_curve_js_1.default)(keyObject);\n                    if (keyObject.type === 'public') {\n                        const der = keyObject.export({ type: 'spki', format: 'der' });\n                        return {\n                            kty: 'OKP',\n                            crv,\n                            x: (0, base64url_js_1.encode)(der.subarray(-32)),\n                        };\n                    }\n                    const der = keyObject.export({ type: 'pkcs8', format: 'der' });\n                    return {\n                        ...keyToJWK((0, crypto_1.createPublicKey)(keyObject)),\n                        d: (0, base64url_js_1.encode)(der.subarray(-32)),\n                    };\n                }\n                case 'ed448':\n                case 'x448': {\n                    const crv = (0, get_named_curve_js_1.default)(keyObject);\n                    if (keyObject.type === 'public') {\n                        const der = keyObject.export({ type: 'spki', format: 'der' });\n                        return {\n                            kty: 'OKP',\n                            crv,\n                            x: (0, base64url_js_1.encode)(der.subarray(crv === 'Ed448' ? -57 : -56)),\n                        };\n                    }\n                    const der = keyObject.export({ type: 'pkcs8', format: 'der' });\n                    return {\n                        ...keyToJWK((0, crypto_1.createPublicKey)(keyObject)),\n                        d: (0, base64url_js_1.encode)(der.subarray(crv === 'Ed448' ? -57 : -56)),\n                    };\n                }\n                default:\n                    throw new errors_js_1.JOSENotSupported('Unsupported key asymmetricKeyType');\n            }\n        }\n        default:\n            throw new errors_js_1.JOSENotSupported('Unsupported key type');\n    }\n};\nexports[\"default\"] = keyToJWK;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/key_to_jwk.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/node_key.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/node_key.js ***!
  \****************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst crypto_1 = __webpack_require__(/*! crypto */ \"crypto\");\nconst get_named_curve_js_1 = __webpack_require__(/*! ./get_named_curve.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/get_named_curve.js\");\nconst errors_js_1 = __webpack_require__(/*! ../util/errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nconst check_modulus_length_js_1 = __webpack_require__(/*! ./check_modulus_length.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/check_modulus_length.js\");\nconst [major, minor] = process.version\n    .slice(1)\n    .split('.')\n    .map((str) => parseInt(str, 10));\nconst electron = 'electron' in process.versions;\nconst rsaPssParams = !electron && (major >= 17 || (major === 16 && minor >= 9));\nconst PSS = {\n    padding: crypto_1.constants.RSA_PKCS1_PSS_PADDING,\n    saltLength: crypto_1.constants.RSA_PSS_SALTLEN_DIGEST,\n};\nconst ecCurveAlgMap = new Map([\n    ['ES256', 'P-256'],\n    ['ES256K', 'secp256k1'],\n    ['ES384', 'P-384'],\n    ['ES512', 'P-521'],\n]);\nfunction keyForCrypto(alg, key) {\n    switch (alg) {\n        case 'EdDSA':\n            if (!['ed25519', 'ed448'].includes(key.asymmetricKeyType)) {\n                throw new TypeError('Invalid key for this operation, its asymmetricKeyType must be ed25519 or ed448');\n            }\n            return key;\n        case 'RS256':\n        case 'RS384':\n        case 'RS512':\n            if (key.asymmetricKeyType !== 'rsa') {\n                throw new TypeError('Invalid key for this operation, its asymmetricKeyType must be rsa');\n            }\n            (0, check_modulus_length_js_1.default)(key, alg);\n            return key;\n        case rsaPssParams && 'PS256':\n        case rsaPssParams && 'PS384':\n        case rsaPssParams && 'PS512':\n            if (key.asymmetricKeyType === 'rsa-pss') {\n                const { hashAlgorithm, mgf1HashAlgorithm, saltLength } = key.asymmetricKeyDetails;\n                const length = parseInt(alg.slice(-3), 10);\n                if (hashAlgorithm !== undefined &&\n                    (hashAlgorithm !== `sha${length}` || mgf1HashAlgorithm !== hashAlgorithm)) {\n                    throw new TypeError(`Invalid key for this operation, its RSA-PSS parameters do not meet the requirements of \"alg\" ${alg}`);\n                }\n                if (saltLength !== undefined && saltLength > length >> 3) {\n                    throw new TypeError(`Invalid key for this operation, its RSA-PSS parameter saltLength does not meet the requirements of \"alg\" ${alg}`);\n                }\n            }\n            else if (key.asymmetricKeyType !== 'rsa') {\n                throw new TypeError('Invalid key for this operation, its asymmetricKeyType must be rsa or rsa-pss');\n            }\n            (0, check_modulus_length_js_1.default)(key, alg);\n            return { key, ...PSS };\n        case !rsaPssParams && 'PS256':\n        case !rsaPssParams && 'PS384':\n        case !rsaPssParams && 'PS512':\n            if (key.asymmetricKeyType !== 'rsa') {\n                throw new TypeError('Invalid key for this operation, its asymmetricKeyType must be rsa');\n            }\n            (0, check_modulus_length_js_1.default)(key, alg);\n            return { key, ...PSS };\n        case 'ES256':\n        case 'ES256K':\n        case 'ES384':\n        case 'ES512': {\n            if (key.asymmetricKeyType !== 'ec') {\n                throw new TypeError('Invalid key for this operation, its asymmetricKeyType must be ec');\n            }\n            const actual = (0, get_named_curve_js_1.default)(key);\n            const expected = ecCurveAlgMap.get(alg);\n            if (actual !== expected) {\n                throw new TypeError(`Invalid key curve for the algorithm, its curve must be ${expected}, got ${actual}`);\n            }\n            return { dsaEncoding: 'ieee-p1363', key };\n        }\n        default:\n            throw new errors_js_1.JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n    }\n}\nexports[\"default\"] = keyForCrypto;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/node_key.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/pbes2kw.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/pbes2kw.js ***!
  \***************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.decrypt = exports.encrypt = void 0;\nconst util_1 = __webpack_require__(/*! util */ "util");\nconst crypto_1 = __webpack_require__(/*! crypto */ "crypto");\nconst random_js_1 = __webpack_require__(/*! ./random.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/random.js");\nconst buffer_utils_js_1 = __webpack_require__(/*! ../lib/buffer_utils.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/buffer_utils.js");\nconst base64url_js_1 = __webpack_require__(/*! ./base64url.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/base64url.js");\nconst aeskw_js_1 = __webpack_require__(/*! ./aeskw.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/aeskw.js");\nconst check_p2s_js_1 = __webpack_require__(/*! ../lib/check_p2s.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/check_p2s.js");\nconst webcrypto_js_1 = __webpack_require__(/*! ./webcrypto.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/webcrypto.js");\nconst crypto_key_js_1 = __webpack_require__(/*! ../lib/crypto_key.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/crypto_key.js");\nconst is_key_object_js_1 = __webpack_require__(/*! ./is_key_object.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/is_key_object.js");\nconst invalid_key_input_js_1 = __webpack_require__(/*! ../lib/invalid_key_input.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/invalid_key_input.js");\nconst is_key_like_js_1 = __webpack_require__(/*! ./is_key_like.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/is_key_like.js");\nconst pbkdf2 = (0, util_1.promisify)(crypto_1.pbkdf2);\nfunction getPassword(key, alg) {\n    if ((0, is_key_object_js_1.default)(key)) {\n        return key.export();\n    }\n    if (key instanceof Uint8Array) {\n        return key;\n    }\n    if ((0, webcrypto_js_1.isCryptoKey)(key)) {\n        (0, crypto_key_js_1.checkEncCryptoKey)(key, alg, \'deriveBits\', \'deriveKey\');\n        return crypto_1.KeyObject.from(key).export();\n    }\n    throw new TypeError((0, invalid_key_input_js_1.default)(key, ...is_key_like_js_1.types, \'Uint8Array\'));\n}\nconst encrypt = async (alg, key, cek, p2c = Math.floor(Math.random() * 2049) + 2048, p2s = (0, random_js_1.default)(new Uint8Array(16))) => {\n    (0, check_p2s_js_1.default)(p2s);\n    const salt = (0, buffer_utils_js_1.p2s)(alg, p2s);\n    const keylen = parseInt(alg.slice(13, 16), 10) >> 3;\n    const password = getPassword(key, alg);\n    const derivedKey = await pbkdf2(password, salt, p2c, keylen, `sha${alg.slice(8, 11)}`);\n    const encryptedKey = await (0, aeskw_js_1.wrap)(alg.slice(-6), derivedKey, cek);\n    return { encryptedKey, p2c, p2s: (0, base64url_js_1.encode)(p2s) };\n};\nexports.encrypt = encrypt;\nconst decrypt = async (alg, key, encryptedKey, p2c, p2s) => {\n    (0, check_p2s_js_1.default)(p2s);\n    const salt = (0, buffer_utils_js_1.p2s)(alg, p2s);\n    const keylen = parseInt(alg.slice(13, 16), 10) >> 3;\n    const password = getPassword(key, alg);\n    const derivedKey = await pbkdf2(password, salt, p2c, keylen, `sha${alg.slice(8, 11)}`);\n    return (0, aeskw_js_1.unwrap)(alg.slice(-6), derivedKey, encryptedKey);\n};\nexports.decrypt = decrypt;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/pbes2kw.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/random.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/random.js ***!
  \**************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports["default"] = void 0;\nvar crypto_1 = __webpack_require__(/*! crypto */ "crypto");\nObject.defineProperty(exports, "default", ({ enumerable: true, get: function () { return crypto_1.randomFillSync; } }));\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/random.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/rsaes.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/rsaes.js ***!
  \*************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.decrypt = exports.encrypt = void 0;\nconst crypto_1 = __webpack_require__(/*! crypto */ \"crypto\");\nconst check_modulus_length_js_1 = __webpack_require__(/*! ./check_modulus_length.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/check_modulus_length.js\");\nconst webcrypto_js_1 = __webpack_require__(/*! ./webcrypto.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/webcrypto.js\");\nconst crypto_key_js_1 = __webpack_require__(/*! ../lib/crypto_key.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/crypto_key.js\");\nconst is_key_object_js_1 = __webpack_require__(/*! ./is_key_object.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/is_key_object.js\");\nconst invalid_key_input_js_1 = __webpack_require__(/*! ../lib/invalid_key_input.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/invalid_key_input.js\");\nconst is_key_like_js_1 = __webpack_require__(/*! ./is_key_like.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/is_key_like.js\");\nconst checkKey = (key, alg) => {\n    if (key.asymmetricKeyType !== 'rsa') {\n        throw new TypeError('Invalid key for this operation, its asymmetricKeyType must be rsa');\n    }\n    (0, check_modulus_length_js_1.default)(key, alg);\n};\nconst resolvePadding = (alg) => {\n    switch (alg) {\n        case 'RSA-OAEP':\n        case 'RSA-OAEP-256':\n        case 'RSA-OAEP-384':\n        case 'RSA-OAEP-512':\n            return crypto_1.constants.RSA_PKCS1_OAEP_PADDING;\n        case 'RSA1_5':\n            return crypto_1.constants.RSA_PKCS1_PADDING;\n        default:\n            return undefined;\n    }\n};\nconst resolveOaepHash = (alg) => {\n    switch (alg) {\n        case 'RSA-OAEP':\n            return 'sha1';\n        case 'RSA-OAEP-256':\n            return 'sha256';\n        case 'RSA-OAEP-384':\n            return 'sha384';\n        case 'RSA-OAEP-512':\n            return 'sha512';\n        default:\n            return undefined;\n    }\n};\nfunction ensureKeyObject(key, alg, ...usages) {\n    if ((0, is_key_object_js_1.default)(key)) {\n        return key;\n    }\n    if ((0, webcrypto_js_1.isCryptoKey)(key)) {\n        (0, crypto_key_js_1.checkEncCryptoKey)(key, alg, ...usages);\n        return crypto_1.KeyObject.from(key);\n    }\n    throw new TypeError((0, invalid_key_input_js_1.default)(key, ...is_key_like_js_1.types));\n}\nconst encrypt = (alg, key, cek) => {\n    const padding = resolvePadding(alg);\n    const oaepHash = resolveOaepHash(alg);\n    const keyObject = ensureKeyObject(key, alg, 'wrapKey', 'encrypt');\n    checkKey(keyObject, alg);\n    return (0, crypto_1.publicEncrypt)({ key: keyObject, oaepHash, padding }, cek);\n};\nexports.encrypt = encrypt;\nconst decrypt = (alg, key, encryptedKey) => {\n    const padding = resolvePadding(alg);\n    const oaepHash = resolveOaepHash(alg);\n    const keyObject = ensureKeyObject(key, alg, 'unwrapKey', 'decrypt');\n    checkKey(keyObject, alg);\n    return (0, crypto_1.privateDecrypt)({ key: keyObject, oaepHash, padding }, encryptedKey);\n};\nexports.decrypt = decrypt;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/rsaes.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/sign.js":
/*!************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/sign.js ***!
  \************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst crypto = __webpack_require__(/*! crypto */ "crypto");\nconst util_1 = __webpack_require__(/*! util */ "util");\nconst dsa_digest_js_1 = __webpack_require__(/*! ./dsa_digest.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/dsa_digest.js");\nconst hmac_digest_js_1 = __webpack_require__(/*! ./hmac_digest.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/hmac_digest.js");\nconst node_key_js_1 = __webpack_require__(/*! ./node_key.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/node_key.js");\nconst get_sign_verify_key_js_1 = __webpack_require__(/*! ./get_sign_verify_key.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/get_sign_verify_key.js");\nlet oneShotSign;\nif (crypto.sign.length > 3) {\n    oneShotSign = (0, util_1.promisify)(crypto.sign);\n}\nelse {\n    oneShotSign = crypto.sign;\n}\nconst sign = async (alg, key, data) => {\n    const keyObject = (0, get_sign_verify_key_js_1.default)(alg, key, \'sign\');\n    if (alg.startsWith(\'HS\')) {\n        const hmac = crypto.createHmac((0, hmac_digest_js_1.default)(alg), keyObject);\n        hmac.update(data);\n        return hmac.digest();\n    }\n    return oneShotSign((0, dsa_digest_js_1.default)(alg), data, (0, node_key_js_1.default)(alg, keyObject));\n};\nexports["default"] = sign;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/sign.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/timing_safe_equal.js":
/*!*************************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/timing_safe_equal.js ***!
  \*************************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst crypto_1 = __webpack_require__(/*! crypto */ "crypto");\nconst timingSafeEqual = crypto_1.timingSafeEqual;\nexports["default"] = timingSafeEqual;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/timing_safe_equal.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/verify.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/verify.js ***!
  \**************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst crypto = __webpack_require__(/*! crypto */ "crypto");\nconst util_1 = __webpack_require__(/*! util */ "util");\nconst dsa_digest_js_1 = __webpack_require__(/*! ./dsa_digest.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/dsa_digest.js");\nconst node_key_js_1 = __webpack_require__(/*! ./node_key.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/node_key.js");\nconst sign_js_1 = __webpack_require__(/*! ./sign.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/sign.js");\nconst get_sign_verify_key_js_1 = __webpack_require__(/*! ./get_sign_verify_key.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/get_sign_verify_key.js");\nconst [major, minor] = process.version\n    .slice(1)\n    .split(\'.\')\n    .map((str) => parseInt(str, 10));\nconst oneShotCallbackSupported = major >= 16 || (major === 15 && minor >= 13);\nlet oneShotVerify;\nif (crypto.verify.length > 4 && oneShotCallbackSupported) {\n    oneShotVerify = (0, util_1.promisify)(crypto.verify);\n}\nelse {\n    oneShotVerify = crypto.verify;\n}\nconst verify = async (alg, key, signature, data) => {\n    const keyObject = (0, get_sign_verify_key_js_1.default)(alg, key, \'verify\');\n    if (alg.startsWith(\'HS\')) {\n        const expected = await (0, sign_js_1.default)(alg, keyObject, data);\n        const actual = signature;\n        try {\n            return crypto.timingSafeEqual(actual, expected);\n        }\n        catch {\n            return false;\n        }\n    }\n    const algorithm = (0, dsa_digest_js_1.default)(alg);\n    const keyInput = (0, node_key_js_1.default)(alg, keyObject);\n    try {\n        return await oneShotVerify(algorithm, data, keyInput, signature);\n    }\n    catch {\n        return false;\n    }\n};\nexports["default"] = verify;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/verify.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/webcrypto.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/webcrypto.js ***!
  \*****************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.isCryptoKey = void 0;\nconst crypto = __webpack_require__(/*! crypto */ "crypto");\nconst util = __webpack_require__(/*! util */ "util");\nconst webcrypto = crypto.webcrypto;\nexports["default"] = webcrypto;\nexports.isCryptoKey = util.types.isCryptoKey\n    ? (obj) => util.types.isCryptoKey(obj)\n    :\n        (obj) => false;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/webcrypto.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/zlib.js":
/*!************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/zlib.js ***!
  \************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.deflate = exports.inflate = void 0;\nconst util_1 = __webpack_require__(/*! util */ "util");\nconst zlib_1 = __webpack_require__(/*! zlib */ "zlib");\nconst inflateRaw = (0, util_1.promisify)(zlib_1.inflateRaw);\nconst deflateRaw = (0, util_1.promisify)(zlib_1.deflateRaw);\nconst inflate = (input) => inflateRaw(input);\nexports.inflate = inflate;\nconst deflate = (input) => deflateRaw(input);\nexports.deflate = deflate;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/zlib.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/base64url.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/base64url.js ***!
  \**************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.decode = exports.encode = void 0;\nconst base64url = __webpack_require__(/*! ../runtime/base64url.js */ "./node_modules/openid-client/node_modules/jose/dist/node/cjs/runtime/base64url.js");\nexports.encode = base64url.encode;\nexports.decode = base64url.decode;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/base64url.js?')},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/decode_jwt.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/decode_jwt.js ***!
  \***************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.decodeJwt = void 0;\nconst base64url_js_1 = __webpack_require__(/*! ./base64url.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/base64url.js\");\nconst buffer_utils_js_1 = __webpack_require__(/*! ../lib/buffer_utils.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/buffer_utils.js\");\nconst is_object_js_1 = __webpack_require__(/*! ../lib/is_object.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/is_object.js\");\nconst errors_js_1 = __webpack_require__(/*! ./errors.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js\");\nfunction decodeJwt(jwt) {\n    if (typeof jwt !== 'string')\n        throw new errors_js_1.JWTInvalid('JWTs must use Compact JWS serialization, JWT must be a string');\n    const { 1: payload, length } = jwt.split('.');\n    if (length === 5)\n        throw new errors_js_1.JWTInvalid('Only JWTs using Compact JWS serialization can be decoded');\n    if (length !== 3)\n        throw new errors_js_1.JWTInvalid('Invalid JWT');\n    if (!payload)\n        throw new errors_js_1.JWTInvalid('JWTs must contain a payload');\n    let decoded;\n    try {\n        decoded = (0, base64url_js_1.decode)(payload);\n    }\n    catch {\n        throw new errors_js_1.JWTInvalid('Failed to parse the base64url encoded payload');\n    }\n    let result;\n    try {\n        result = JSON.parse(buffer_utils_js_1.decoder.decode(decoded));\n    }\n    catch {\n        throw new errors_js_1.JWTInvalid('Failed to parse the decoded payload as JSON');\n    }\n    if (!(0, is_object_js_1.default)(result))\n        throw new errors_js_1.JWTInvalid('Invalid JWT Claims Set');\n    return result;\n}\nexports.decodeJwt = decodeJwt;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/decode_jwt.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/decode_protected_header.js":
/*!****************************************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/decode_protected_header.js ***!
  \****************************************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.decodeProtectedHeader = void 0;\nconst base64url_js_1 = __webpack_require__(/*! ./base64url.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/base64url.js\");\nconst buffer_utils_js_1 = __webpack_require__(/*! ../lib/buffer_utils.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/buffer_utils.js\");\nconst is_object_js_1 = __webpack_require__(/*! ../lib/is_object.js */ \"./node_modules/openid-client/node_modules/jose/dist/node/cjs/lib/is_object.js\");\nfunction decodeProtectedHeader(token) {\n    let protectedB64u;\n    if (typeof token === 'string') {\n        const parts = token.split('.');\n        if (parts.length === 3 || parts.length === 5) {\n            ;\n            [protectedB64u] = parts;\n        }\n    }\n    else if (typeof token === 'object' && token) {\n        if ('protected' in token) {\n            protectedB64u = token.protected;\n        }\n        else {\n            throw new TypeError('Token does not contain a Protected Header');\n        }\n    }\n    try {\n        if (typeof protectedB64u !== 'string' || !protectedB64u) {\n            throw new Error();\n        }\n        const result = JSON.parse(buffer_utils_js_1.decoder.decode((0, base64url_js_1.decode)(protectedB64u)));\n        if (!(0, is_object_js_1.default)(result)) {\n            throw new Error();\n        }\n        return result;\n    }\n    catch {\n        throw new TypeError('Invalid Token or Protected Header formatting');\n    }\n}\nexports.decodeProtectedHeader = decodeProtectedHeader;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/decode_protected_header.js?")},"./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js ***!
  \***********************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.JWSSignatureVerificationFailed = exports.JWKSTimeout = exports.JWKSMultipleMatchingKeys = exports.JWKSNoMatchingKey = exports.JWKSInvalid = exports.JWKInvalid = exports.JWTInvalid = exports.JWSInvalid = exports.JWEInvalid = exports.JWEDecryptionFailed = exports.JOSENotSupported = exports.JOSEAlgNotAllowed = exports.JWTExpired = exports.JWTClaimValidationFailed = exports.JOSEError = void 0;\nclass JOSEError extends Error {\n    constructor(message) {\n        var _a;\n        super(message);\n        this.code = 'ERR_JOSE_GENERIC';\n        this.name = this.constructor.name;\n        (_a = Error.captureStackTrace) === null || _a === void 0 ? void 0 : _a.call(Error, this, this.constructor);\n    }\n    static get code() {\n        return 'ERR_JOSE_GENERIC';\n    }\n}\nexports.JOSEError = JOSEError;\nclass JWTClaimValidationFailed extends JOSEError {\n    constructor(message, claim = 'unspecified', reason = 'unspecified') {\n        super(message);\n        this.code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\n        this.claim = claim;\n        this.reason = reason;\n    }\n    static get code() {\n        return 'ERR_JWT_CLAIM_VALIDATION_FAILED';\n    }\n}\nexports.JWTClaimValidationFailed = JWTClaimValidationFailed;\nclass JWTExpired extends JOSEError {\n    constructor(message, claim = 'unspecified', reason = 'unspecified') {\n        super(message);\n        this.code = 'ERR_JWT_EXPIRED';\n        this.claim = claim;\n        this.reason = reason;\n    }\n    static get code() {\n        return 'ERR_JWT_EXPIRED';\n    }\n}\nexports.JWTExpired = JWTExpired;\nclass JOSEAlgNotAllowed extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JOSE_ALG_NOT_ALLOWED';\n    }\n    static get code() {\n        return 'ERR_JOSE_ALG_NOT_ALLOWED';\n    }\n}\nexports.JOSEAlgNotAllowed = JOSEAlgNotAllowed;\nclass JOSENotSupported extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JOSE_NOT_SUPPORTED';\n    }\n    static get code() {\n        return 'ERR_JOSE_NOT_SUPPORTED';\n    }\n}\nexports.JOSENotSupported = JOSENotSupported;\nclass JWEDecryptionFailed extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JWE_DECRYPTION_FAILED';\n        this.message = 'decryption operation failed';\n    }\n    static get code() {\n        return 'ERR_JWE_DECRYPTION_FAILED';\n    }\n}\nexports.JWEDecryptionFailed = JWEDecryptionFailed;\nclass JWEInvalid extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JWE_INVALID';\n    }\n    static get code() {\n        return 'ERR_JWE_INVALID';\n    }\n}\nexports.JWEInvalid = JWEInvalid;\nclass JWSInvalid extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JWS_INVALID';\n    }\n    static get code() {\n        return 'ERR_JWS_INVALID';\n    }\n}\nexports.JWSInvalid = JWSInvalid;\nclass JWTInvalid extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JWT_INVALID';\n    }\n    static get code() {\n        return 'ERR_JWT_INVALID';\n    }\n}\nexports.JWTInvalid = JWTInvalid;\nclass JWKInvalid extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JWK_INVALID';\n    }\n    static get code() {\n        return 'ERR_JWK_INVALID';\n    }\n}\nexports.JWKInvalid = JWKInvalid;\nclass JWKSInvalid extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JWKS_INVALID';\n    }\n    static get code() {\n        return 'ERR_JWKS_INVALID';\n    }\n}\nexports.JWKSInvalid = JWKSInvalid;\nclass JWKSNoMatchingKey extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JWKS_NO_MATCHING_KEY';\n        this.message = 'no applicable key found in the JSON Web Key Set';\n    }\n    static get code() {\n        return 'ERR_JWKS_NO_MATCHING_KEY';\n    }\n}\nexports.JWKSNoMatchingKey = JWKSNoMatchingKey;\nclass JWKSMultipleMatchingKeys extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\n        this.message = 'multiple matching keys found in the JSON Web Key Set';\n    }\n    static get code() {\n        return 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\n    }\n}\nexports.JWKSMultipleMatchingKeys = JWKSMultipleMatchingKeys;\nclass JWKSTimeout extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JWKS_TIMEOUT';\n        this.message = 'request timed out';\n    }\n    static get code() {\n        return 'ERR_JWKS_TIMEOUT';\n    }\n}\nexports.JWKSTimeout = JWKSTimeout;\nclass JWSSignatureVerificationFailed extends JOSEError {\n    constructor() {\n        super(...arguments);\n        this.code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n        this.message = 'signature verification failed';\n    }\n    static get code() {\n        return 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n    }\n}\nexports.JWSSignatureVerificationFailed = JWSSignatureVerificationFailed;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/node_modules/jose/dist/node/cjs/util/errors.js?")},"./node_modules/p-cancelable/index.js":
/*!********************************************!*\
  !*** ./node_modules/p-cancelable/index.js ***!
  \********************************************/module=>{"use strict";eval("\n\nclass CancelError extends Error {\n\tconstructor(reason) {\n\t\tsuper(reason || 'Promise was canceled');\n\t\tthis.name = 'CancelError';\n\t}\n\n\tget isCanceled() {\n\t\treturn true;\n\t}\n}\n\nclass PCancelable {\n\tstatic fn(userFn) {\n\t\treturn (...arguments_) => {\n\t\t\treturn new PCancelable((resolve, reject, onCancel) => {\n\t\t\t\targuments_.push(onCancel);\n\t\t\t\t// eslint-disable-next-line promise/prefer-await-to-then\n\t\t\t\tuserFn(...arguments_).then(resolve, reject);\n\t\t\t});\n\t\t};\n\t}\n\n\tconstructor(executor) {\n\t\tthis._cancelHandlers = [];\n\t\tthis._isPending = true;\n\t\tthis._isCanceled = false;\n\t\tthis._rejectOnCancel = true;\n\n\t\tthis._promise = new Promise((resolve, reject) => {\n\t\t\tthis._reject = reject;\n\n\t\t\tconst onResolve = value => {\n\t\t\t\tif (!this._isCanceled || !onCancel.shouldReject) {\n\t\t\t\t\tthis._isPending = false;\n\t\t\t\t\tresolve(value);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst onReject = error => {\n\t\t\t\tthis._isPending = false;\n\t\t\t\treject(error);\n\t\t\t};\n\n\t\t\tconst onCancel = handler => {\n\t\t\t\tif (!this._isPending) {\n\t\t\t\t\tthrow new Error('The `onCancel` handler was attached after the promise settled.');\n\t\t\t\t}\n\n\t\t\t\tthis._cancelHandlers.push(handler);\n\t\t\t};\n\n\t\t\tObject.defineProperties(onCancel, {\n\t\t\t\tshouldReject: {\n\t\t\t\t\tget: () => this._rejectOnCancel,\n\t\t\t\t\tset: boolean => {\n\t\t\t\t\t\tthis._rejectOnCancel = boolean;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn executor(onResolve, onReject, onCancel);\n\t\t});\n\t}\n\n\tthen(onFulfilled, onRejected) {\n\t\t// eslint-disable-next-line promise/prefer-await-to-then\n\t\treturn this._promise.then(onFulfilled, onRejected);\n\t}\n\n\tcatch(onRejected) {\n\t\treturn this._promise.catch(onRejected);\n\t}\n\n\tfinally(onFinally) {\n\t\treturn this._promise.finally(onFinally);\n\t}\n\n\tcancel(reason) {\n\t\tif (!this._isPending || this._isCanceled) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isCanceled = true;\n\n\t\tif (this._cancelHandlers.length > 0) {\n\t\t\ttry {\n\t\t\t\tfor (const handler of this._cancelHandlers) {\n\t\t\t\t\thandler();\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tthis._reject(error);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (this._rejectOnCancel) {\n\t\t\tthis._reject(new CancelError(reason));\n\t\t}\n\t}\n\n\tget isCanceled() {\n\t\treturn this._isCanceled;\n\t}\n}\n\nObject.setPrototypeOf(PCancelable.prototype, Promise.prototype);\n\nmodule.exports = PCancelable;\nmodule.exports.CancelError = CancelError;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/p-cancelable/index.js?")},"./node_modules/parseurl/index.js":
/*!****************************************!*\
  !*** ./node_modules/parseurl/index.js ***!
  \****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("/*!\n * parseurl\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2014-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar url = __webpack_require__(/*! url */ \"url\")\nvar parse = url.parse\nvar Url = url.Url\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = parseurl\nmodule.exports.original = originalurl\n\n/**\n * Parse the `req` url with memoization.\n *\n * @param {ServerRequest} req\n * @return {Object}\n * @public\n */\n\nfunction parseurl (req) {\n  var url = req.url\n\n  if (url === undefined) {\n    // URL is undefined\n    return undefined\n  }\n\n  var parsed = req._parsedUrl\n\n  if (fresh(url, parsed)) {\n    // Return cached URL parse\n    return parsed\n  }\n\n  // Parse the URL\n  parsed = fastparse(url)\n  parsed._raw = url\n\n  return (req._parsedUrl = parsed)\n};\n\n/**\n * Parse the `req` original url with fallback and memoization.\n *\n * @param {ServerRequest} req\n * @return {Object}\n * @public\n */\n\nfunction originalurl (req) {\n  var url = req.originalUrl\n\n  if (typeof url !== 'string') {\n    // Fallback\n    return parseurl(req)\n  }\n\n  var parsed = req._parsedOriginalUrl\n\n  if (fresh(url, parsed)) {\n    // Return cached URL parse\n    return parsed\n  }\n\n  // Parse the URL\n  parsed = fastparse(url)\n  parsed._raw = url\n\n  return (req._parsedOriginalUrl = parsed)\n};\n\n/**\n * Parse the `str` url with fast-path short-cut.\n *\n * @param {string} str\n * @return {Object}\n * @private\n */\n\nfunction fastparse (str) {\n  if (typeof str !== 'string' || str.charCodeAt(0) !== 0x2f /* / */) {\n    return parse(str)\n  }\n\n  var pathname = str\n  var query = null\n  var search = null\n\n  // This takes the regexp from https://github.com/joyent/node/pull/7878\n  // Which is /^(\\/[^?#\\s]*)(\\?[^#\\s]*)?$/\n  // And unrolls it into a for loop\n  for (var i = 1; i < str.length; i++) {\n    switch (str.charCodeAt(i)) {\n      case 0x3f: /* ?  */\n        if (search === null) {\n          pathname = str.substring(0, i)\n          query = str.substring(i + 1)\n          search = str.substring(i)\n        }\n        break\n      case 0x09: /* \\t */\n      case 0x0a: /* \\n */\n      case 0x0c: /* \\f */\n      case 0x0d: /* \\r */\n      case 0x20: /*    */\n      case 0x23: /* #  */\n      case 0xa0:\n      case 0xfeff:\n        return parse(str)\n    }\n  }\n\n  var url = Url !== undefined\n    ? new Url()\n    : {}\n\n  url.path = str\n  url.href = str\n  url.pathname = pathname\n\n  if (search !== null) {\n    url.query = query\n    url.search = search\n  }\n\n  return url\n}\n\n/**\n * Determine if parsed is still fresh for url.\n *\n * @param {string} url\n * @param {object} parsedUrl\n * @return {boolean}\n * @private\n */\n\nfunction fresh (url, parsedUrl) {\n  return typeof parsedUrl === 'object' &&\n    parsedUrl !== null &&\n    (Url === undefined || parsedUrl instanceof Url) &&\n    parsedUrl._raw === url\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/parseurl/index.js?")},"./node_modules/path-is-absolute/index.js":
/*!************************************************!*\
  !*** ./node_modules/path-is-absolute/index.js ***!
  \************************************************/module=>{"use strict";eval("\n\nfunction posix(path) {\n\treturn path.charAt(0) === '/';\n}\n\nfunction win32(path) {\n\t// https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56\n\tvar splitDeviceRe = /^([a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/]+[^\\\\\\/]+)?([\\\\\\/])?([\\s\\S]*?)$/;\n\tvar result = splitDeviceRe.exec(path);\n\tvar device = result[1] || '';\n\tvar isUnc = Boolean(device && device.charAt(1) !== ':');\n\n\t// UNC paths are always absolute\n\treturn Boolean(result[2] || isUnc);\n}\n\nmodule.exports = process.platform === 'win32' ? win32 : posix;\nmodule.exports.posix = posix;\nmodule.exports.win32 = win32;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/path-is-absolute/index.js?")},"./node_modules/path-key/index.js":
/*!****************************************!*\
  !*** ./node_modules/path-key/index.js ***!
  \****************************************/module=>{"use strict";eval("\n\nconst pathKey = (options = {}) => {\n\tconst environment = options.env || ({\"APP_ENV\":\"webpack\"});\n\tconst platform = options.platform || process.platform;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(environment).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n};\n\nmodule.exports = pathKey;\n// TODO: Remove this for the next major release\nmodule.exports[\"default\"] = pathKey;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/path-key/index.js?")},"./node_modules/path-to-regexp/dist/index.js":
/*!***************************************************!*\
  !*** ./node_modules/path-to-regexp/dist/index.js ***!
  \***************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.pathToRegexp = exports.tokensToRegexp = exports.regexpToFunction = exports.match = exports.tokensToFunction = exports.compile = exports.parse = void 0;\n/**\n * Tokenize input string.\n */\nfunction lexer(str) {\n    var tokens = [];\n    var i = 0;\n    while (i < str.length) {\n        var char = str[i];\n        if (char === "*" || char === "+" || char === "?") {\n            tokens.push({ type: "MODIFIER", index: i, value: str[i++] });\n            continue;\n        }\n        if (char === "\\\\") {\n            tokens.push({ type: "ESCAPED_CHAR", index: i++, value: str[i++] });\n            continue;\n        }\n        if (char === "{") {\n            tokens.push({ type: "OPEN", index: i, value: str[i++] });\n            continue;\n        }\n        if (char === "}") {\n            tokens.push({ type: "CLOSE", index: i, value: str[i++] });\n            continue;\n        }\n        if (char === ":") {\n            var name = "";\n            var j = i + 1;\n            while (j < str.length) {\n                var code = str.charCodeAt(j);\n                if (\n                // `0-9`\n                (code >= 48 && code <= 57) ||\n                    // `A-Z`\n                    (code >= 65 && code <= 90) ||\n                    // `a-z`\n                    (code >= 97 && code <= 122) ||\n                    // `_`\n                    code === 95) {\n                    name += str[j++];\n                    continue;\n                }\n                break;\n            }\n            if (!name)\n                throw new TypeError("Missing parameter name at " + i);\n            tokens.push({ type: "NAME", index: i, value: name });\n            i = j;\n            continue;\n        }\n        if (char === "(") {\n            var count = 1;\n            var pattern = "";\n            var j = i + 1;\n            if (str[j] === "?") {\n                throw new TypeError("Pattern cannot start with \\"?\\" at " + j);\n            }\n            while (j < str.length) {\n                if (str[j] === "\\\\") {\n                    pattern += str[j++] + str[j++];\n                    continue;\n                }\n                if (str[j] === ")") {\n                    count--;\n                    if (count === 0) {\n                        j++;\n                        break;\n                    }\n                }\n                else if (str[j] === "(") {\n                    count++;\n                    if (str[j + 1] !== "?") {\n                        throw new TypeError("Capturing groups are not allowed at " + j);\n                    }\n                }\n                pattern += str[j++];\n            }\n            if (count)\n                throw new TypeError("Unbalanced pattern at " + i);\n            if (!pattern)\n                throw new TypeError("Missing pattern at " + i);\n            tokens.push({ type: "PATTERN", index: i, value: pattern });\n            i = j;\n            continue;\n        }\n        tokens.push({ type: "CHAR", index: i, value: str[i++] });\n    }\n    tokens.push({ type: "END", index: i, value: "" });\n    return tokens;\n}\n/**\n * Parse a string for the raw tokens.\n */\nfunction parse(str, options) {\n    if (options === void 0) { options = {}; }\n    var tokens = lexer(str);\n    var _a = options.prefixes, prefixes = _a === void 0 ? "./" : _a;\n    var defaultPattern = "[^" + escapeString(options.delimiter || "/#?") + "]+?";\n    var result = [];\n    var key = 0;\n    var i = 0;\n    var path = "";\n    var tryConsume = function (type) {\n        if (i < tokens.length && tokens[i].type === type)\n            return tokens[i++].value;\n    };\n    var mustConsume = function (type) {\n        var value = tryConsume(type);\n        if (value !== undefined)\n            return value;\n        var _a = tokens[i], nextType = _a.type, index = _a.index;\n        throw new TypeError("Unexpected " + nextType + " at " + index + ", expected " + type);\n    };\n    var consumeText = function () {\n        var result = "";\n        var value;\n        // tslint:disable-next-line\n        while ((value = tryConsume("CHAR") || tryConsume("ESCAPED_CHAR"))) {\n            result += value;\n        }\n        return result;\n    };\n    while (i < tokens.length) {\n        var char = tryConsume("CHAR");\n        var name = tryConsume("NAME");\n        var pattern = tryConsume("PATTERN");\n        if (name || pattern) {\n            var prefix = char || "";\n            if (prefixes.indexOf(prefix) === -1) {\n                path += prefix;\n                prefix = "";\n            }\n            if (path) {\n                result.push(path);\n                path = "";\n            }\n            result.push({\n                name: name || key++,\n                prefix: prefix,\n                suffix: "",\n                pattern: pattern || defaultPattern,\n                modifier: tryConsume("MODIFIER") || ""\n            });\n            continue;\n        }\n        var value = char || tryConsume("ESCAPED_CHAR");\n        if (value) {\n            path += value;\n            continue;\n        }\n        if (path) {\n            result.push(path);\n            path = "";\n        }\n        var open = tryConsume("OPEN");\n        if (open) {\n            var prefix = consumeText();\n            var name_1 = tryConsume("NAME") || "";\n            var pattern_1 = tryConsume("PATTERN") || "";\n            var suffix = consumeText();\n            mustConsume("CLOSE");\n            result.push({\n                name: name_1 || (pattern_1 ? key++ : ""),\n                pattern: name_1 && !pattern_1 ? defaultPattern : pattern_1,\n                prefix: prefix,\n                suffix: suffix,\n                modifier: tryConsume("MODIFIER") || ""\n            });\n            continue;\n        }\n        mustConsume("END");\n    }\n    return result;\n}\nexports.parse = parse;\n/**\n * Compile a string to a template function for the path.\n */\nfunction compile(str, options) {\n    return tokensToFunction(parse(str, options), options);\n}\nexports.compile = compile;\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction(tokens, options) {\n    if (options === void 0) { options = {}; }\n    var reFlags = flags(options);\n    var _a = options.encode, encode = _a === void 0 ? function (x) { return x; } : _a, _b = options.validate, validate = _b === void 0 ? true : _b;\n    // Compile all the tokens into regexps.\n    var matches = tokens.map(function (token) {\n        if (typeof token === "object") {\n            return new RegExp("^(?:" + token.pattern + ")$", reFlags);\n        }\n    });\n    return function (data) {\n        var path = "";\n        for (var i = 0; i < tokens.length; i++) {\n            var token = tokens[i];\n            if (typeof token === "string") {\n                path += token;\n                continue;\n            }\n            var value = data ? data[token.name] : undefined;\n            var optional = token.modifier === "?" || token.modifier === "*";\n            var repeat = token.modifier === "*" || token.modifier === "+";\n            if (Array.isArray(value)) {\n                if (!repeat) {\n                    throw new TypeError("Expected \\"" + token.name + "\\" to not repeat, but got an array");\n                }\n                if (value.length === 0) {\n                    if (optional)\n                        continue;\n                    throw new TypeError("Expected \\"" + token.name + "\\" to not be empty");\n                }\n                for (var j = 0; j < value.length; j++) {\n                    var segment = encode(value[j], token);\n                    if (validate && !matches[i].test(segment)) {\n                        throw new TypeError("Expected all \\"" + token.name + "\\" to match \\"" + token.pattern + "\\", but got \\"" + segment + "\\"");\n                    }\n                    path += token.prefix + segment + token.suffix;\n                }\n                continue;\n            }\n            if (typeof value === "string" || typeof value === "number") {\n                var segment = encode(String(value), token);\n                if (validate && !matches[i].test(segment)) {\n                    throw new TypeError("Expected \\"" + token.name + "\\" to match \\"" + token.pattern + "\\", but got \\"" + segment + "\\"");\n                }\n                path += token.prefix + segment + token.suffix;\n                continue;\n            }\n            if (optional)\n                continue;\n            var typeOfMessage = repeat ? "an array" : "a string";\n            throw new TypeError("Expected \\"" + token.name + "\\" to be " + typeOfMessage);\n        }\n        return path;\n    };\n}\nexports.tokensToFunction = tokensToFunction;\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nfunction match(str, options) {\n    var keys = [];\n    var re = pathToRegexp(str, keys, options);\n    return regexpToFunction(re, keys, options);\n}\nexports.match = match;\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nfunction regexpToFunction(re, keys, options) {\n    if (options === void 0) { options = {}; }\n    var _a = options.decode, decode = _a === void 0 ? function (x) { return x; } : _a;\n    return function (pathname) {\n        var m = re.exec(pathname);\n        if (!m)\n            return false;\n        var path = m[0], index = m.index;\n        var params = Object.create(null);\n        var _loop_1 = function (i) {\n            // tslint:disable-next-line\n            if (m[i] === undefined)\n                return "continue";\n            var key = keys[i - 1];\n            if (key.modifier === "*" || key.modifier === "+") {\n                params[key.name] = m[i].split(key.prefix + key.suffix).map(function (value) {\n                    return decode(value, key);\n                });\n            }\n            else {\n                params[key.name] = decode(m[i], key);\n            }\n        };\n        for (var i = 1; i < m.length; i++) {\n            _loop_1(i);\n        }\n        return { path: path, index: index, params: params };\n    };\n}\nexports.regexpToFunction = regexpToFunction;\n/**\n * Escape a regular expression string.\n */\nfunction escapeString(str) {\n    return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, "\\\\$1");\n}\n/**\n * Get the flags for a regexp from the options.\n */\nfunction flags(options) {\n    return options && options.sensitive ? "" : "i";\n}\n/**\n * Pull out keys from a regexp.\n */\nfunction regexpToRegexp(path, keys) {\n    if (!keys)\n        return path;\n    var groupsRegex = /\\((?:\\?<(.*?)>)?(?!\\?)/g;\n    var index = 0;\n    var execResult = groupsRegex.exec(path.source);\n    while (execResult) {\n        keys.push({\n            // Use parenthesized substring match if available, index otherwise\n            name: execResult[1] || index++,\n            prefix: "",\n            suffix: "",\n            modifier: "",\n            pattern: ""\n        });\n        execResult = groupsRegex.exec(path.source);\n    }\n    return path;\n}\n/**\n * Transform an array into a regexp.\n */\nfunction arrayToRegexp(paths, keys, options) {\n    var parts = paths.map(function (path) { return pathToRegexp(path, keys, options).source; });\n    return new RegExp("(?:" + parts.join("|") + ")", flags(options));\n}\n/**\n * Create a path regexp from string input.\n */\nfunction stringToRegexp(path, keys, options) {\n    return tokensToRegexp(parse(path, options), keys, options);\n}\n/**\n * Expose a function for taking tokens and returning a RegExp.\n */\nfunction tokensToRegexp(tokens, keys, options) {\n    if (options === void 0) { options = {}; }\n    var _a = options.strict, strict = _a === void 0 ? false : _a, _b = options.start, start = _b === void 0 ? true : _b, _c = options.end, end = _c === void 0 ? true : _c, _d = options.encode, encode = _d === void 0 ? function (x) { return x; } : _d;\n    var endsWith = "[" + escapeString(options.endsWith || "") + "]|$";\n    var delimiter = "[" + escapeString(options.delimiter || "/#?") + "]";\n    var route = start ? "^" : "";\n    // Iterate over the tokens and create our regexp string.\n    for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n        var token = tokens_1[_i];\n        if (typeof token === "string") {\n            route += escapeString(encode(token));\n        }\n        else {\n            var prefix = escapeString(encode(token.prefix));\n            var suffix = escapeString(encode(token.suffix));\n            if (token.pattern) {\n                if (keys)\n                    keys.push(token);\n                if (prefix || suffix) {\n                    if (token.modifier === "+" || token.modifier === "*") {\n                        var mod = token.modifier === "*" ? "?" : "";\n                        route += "(?:" + prefix + "((?:" + token.pattern + ")(?:" + suffix + prefix + "(?:" + token.pattern + "))*)" + suffix + ")" + mod;\n                    }\n                    else {\n                        route += "(?:" + prefix + "(" + token.pattern + ")" + suffix + ")" + token.modifier;\n                    }\n                }\n                else {\n                    route += "(" + token.pattern + ")" + token.modifier;\n                }\n            }\n            else {\n                route += "(?:" + prefix + suffix + ")" + token.modifier;\n            }\n        }\n    }\n    if (end) {\n        if (!strict)\n            route += delimiter + "?";\n        route += !options.endsWith ? "$" : "(?=" + endsWith + ")";\n    }\n    else {\n        var endToken = tokens[tokens.length - 1];\n        var isEndDelimited = typeof endToken === "string"\n            ? delimiter.indexOf(endToken[endToken.length - 1]) > -1\n            : // tslint:disable-next-line\n                endToken === undefined;\n        if (!strict) {\n            route += "(?:" + delimiter + "(?=" + endsWith + "))?";\n        }\n        if (!isEndDelimited) {\n            route += "(?=" + delimiter + "|" + endsWith + ")";\n        }\n    }\n    return new RegExp(route, flags(options));\n}\nexports.tokensToRegexp = tokensToRegexp;\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: \'id\', delimiter: \'/\', optional: false, repeat: false }]`.\n */\nfunction pathToRegexp(path, keys, options) {\n    if (path instanceof RegExp)\n        return regexpToRegexp(path, keys);\n    if (Array.isArray(path))\n        return arrayToRegexp(path, keys, options);\n    return stringToRegexp(path, keys, options);\n}\nexports.pathToRegexp = pathToRegexp;\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://txadmin/./node_modules/path-to-regexp/dist/index.js?')},"./node_modules/pidusage-tree/index.js":
/*!*********************************************!*\
  !*** ./node_modules/pidusage-tree/index.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var pidtree = __webpack_require__(/*! pidtree */ "./node_modules/pidusage-tree/node_modules/pidtree/index.js")\nvar pidusage = __webpack_require__(/*! pidusage */ "./node_modules/pidusage/index.js")\n\nmodule.exports = function (pid, cb) {\n  return new Promise(function (resolve, reject) {\n    pidtree(pid, {root: true}, function (err, pids) {\n      if (err) {\n        cb && cb(err)\n        reject(err)\n        return\n      }\n\n      pidusage(pids, function (err, stats) {\n        if (err) {\n          cb && cb(err)\n          reject(err)\n          return\n        }\n\n        cb && cb(null, stats)\n        resolve(stats)\n      })\n    })\n  })\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/pidusage-tree/index.js?')},"./node_modules/pidusage-tree/node_modules/pidtree/index.js":
/*!******************************************************************!*\
  !*** ./node_modules/pidusage-tree/node_modules/pidtree/index.js ***!
  \******************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nfunction pify(fn, arg1, arg2) {\n  return new Promise(function(resolve, reject) {\n    fn(arg1, arg2, function(err, data) {\n      if (err) return reject(err);\n      resolve(data);\n    });\n  });\n}\n\n// The method startsWith is not defined on string objects in node 0.10\n// eslint-disable-next-line no-extend-native\nString.prototype.startsWith = function(suffix) {\n  return this.substring(0, suffix.length) === suffix;\n};\n\nvar pidtree = __webpack_require__(/*! ./lib/pidtree */ \"./node_modules/pidusage-tree/node_modules/pidtree/lib/pidtree.js\");\n\n/**\n * Get the list of children pids of the given pid.\n * @public\n * @param  {Number|String} pid A PID. If -1 will return all the pids.\n * @param  {Object} [options] Optional options object.\n * @param  {Boolean} [options.root=false] Include the provided PID in the list.\n * @param  {Boolean} [options.advanced=false] Returns a list of objects in the\n * format {pid: X, ppid: Y}.\n * @param  {Function} [callback=undefined] Called when the list is ready. If not\n * provided a promise is returned instead.\n * @returns  {Promise.<Object[]>} Only when the callback is not provided.\n */\nfunction list(pid, options, callback) {\n  if (typeof options === 'function') {\n    callback = options;\n    options = undefined;\n  }\n\n  if (typeof callback === 'function') {\n    pidtree(pid, options, callback);\n    return;\n  }\n\n  return pify(pidtree, pid, options);\n}\n\nmodule.exports = list;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/pidusage-tree/node_modules/pidtree/index.js?")},"./node_modules/pidusage-tree/node_modules/pidtree/lib/bin.js":
/*!********************************************************************!*\
  !*** ./node_modules/pidusage-tree/node_modules/pidtree/lib/bin.js ***!
  \********************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar spawn = (__webpack_require__(/*! child_process */ \"child_process\").spawn);\n\n/**\n * Spawn a binary and read its stdout.\n * @param  {String} cmd The name of the binary to spawn.\n * @param  {String[]} args The arguments for the binary.\n * @param  {Object} [options] Optional option for the spawn function.\n * @param  {Function} done(err, stdout)\n */\nfunction run(cmd, args, options, done) {\n  if (typeof options === 'function') {\n    done = options;\n    options = undefined;\n  }\n\n  var executed = false;\n  var ch = spawn(cmd, args, options);\n  var stdout = '';\n  var stderr = '';\n\n  ch.stdout.on('data', function(d) {\n    stdout += d.toString();\n  });\n\n  ch.stderr.on('data', function(d) {\n    stderr += d.toString();\n  });\n\n  ch.on('error', function(err) {\n    if (executed) return;\n    executed = true;\n    done(new Error(err));\n  });\n\n  ch.on('close', function(code) {\n    if (executed) return;\n    executed = true;\n\n    if (stderr) {\n      return done(new Error(stderr));\n    }\n\n    done(null, stdout, code);\n  });\n}\n\nmodule.exports = run;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/pidusage-tree/node_modules/pidtree/lib/bin.js?")},"./node_modules/pidusage-tree/node_modules/pidtree/lib/get.js":
/*!********************************************************************!*\
  !*** ./node_modules/pidusage-tree/node_modules/pidtree/lib/get.js ***!
  \********************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar os = __webpack_require__(/*! os */ \"os\");\n\nvar platformToMethod = {\n  darwin: 'ps',\n  sunos: 'ps',\n  freebsd: 'ps',\n  netbsd: 'ps',\n  win: 'wmic',\n  linux: 'ps',\n  aix: 'ps'\n};\n\nvar platform = os.platform();\nif (platform.startsWith('win')) {\n  platform = 'win';\n}\n\nvar file = platformToMethod[platform];\n\n/**\n * Gets the list of all the pids of the system.\n * @param  {Function} callback Called when the list is ready.\n */\nfunction get(callback) {\n  if (file === undefined) {\n    callback(\n      new Error(\n        os.platform() +\n          ' is not supported yet, please open an issue (https://github.com/simonepri/pidtree)'\n      )\n    );\n  }\n\n  var list = __webpack_require__(\"./node_modules/pidusage-tree/node_modules/pidtree/lib sync recursive ^\\\\.\\\\/.*$\")(\"./\" + file);\n  list(callback);\n}\n\nmodule.exports = get;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/pidusage-tree/node_modules/pidtree/lib/get.js?")},"./node_modules/pidusage-tree/node_modules/pidtree/lib/pidtree.js":
/*!************************************************************************!*\
  !*** ./node_modules/pidusage-tree/node_modules/pidtree/lib/pidtree.js ***!
  \************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar getAll = __webpack_require__(/*! ./get */ \"./node_modules/pidusage-tree/node_modules/pidtree/lib/get.js\");\n\n/**\n * Get the list of children and grandchildren pids of the given PID.\n * @param  {Number|String} PID A PID. If -1 will return all the pids.\n * @param  {Object} [options] Optional options object.\n * @param  {Boolean} [options.root=false] Include the provided PID in the list.\n * @param  {Boolean} [options.advanced=false] Returns a list of objects in the\n * format {pid: X, ppid: Y}.\n * @param  {Function} callback(err, list) Called when the list is ready.\n */\nfunction list(PID, options, callback) {\n  if (typeof options === 'function') {\n    callback = options;\n    options = {};\n  }\n\n  if (typeof options !== 'object') {\n    options = {};\n  }\n\n  PID = parseInt(PID, 10);\n  if (isNaN(PID) || PID < -1) {\n    callback(new TypeError('The pid provided is invalid'));\n    return;\n  }\n\n  getAll(function(err, list) {\n    if (err) {\n      callback(err);\n      return;\n    }\n\n    // If the user wants the whole list just return it\n    if (PID === -1) {\n      for (var i = 0; i < list.length; i++) {\n        list[i] = options.advanced\n          ? {ppid: list[i][0], pid: list[i][1]}\n          : (list[i] = list[i][1]);\n      }\n\n      callback(null, list);\n      return;\n    }\n\n    var root;\n    for (var l = 0; l < list.length; l++) {\n      if (list[l][1] === PID) {\n        root = options.advanced ? {ppid: list[l][0], pid: PID} : PID;\n        break;\n      }\n\n      if (list[l][0] === PID) {\n        root = options.advanced ? {pid: PID} : PID; // Special pids like 0 on *nix\n      }\n    }\n\n    if (!root) {\n      callback(new Error('No maching pid found'));\n      return;\n    }\n\n    // Build the adiacency Hash Map (pid -> [children of pid])\n    var tree = {};\n    while (list.length > 0) {\n      var element = list.pop();\n      if (tree[element[0]]) {\n        tree[element[0]].push(element[1]);\n      } else {\n        tree[element[0]] = [element[1]];\n      }\n    }\n\n    // Starting by the PID provided by the user, traverse the tree using the\n    // adiacency Hash Map until the whole subtree is visited.\n    // Each pid encountered while visiting is added to the pids array.\n    var idx = 0;\n    var pids = [root];\n    while (idx < pids.length) {\n      var curpid = options.advanced ? pids[idx++].pid : pids[idx++];\n      if (!tree[curpid]) continue;\n      var length = tree[curpid].length;\n      for (var j = 0; j < length; j++) {\n        pids.push(\n          options.advanced\n            ? {ppid: curpid, pid: tree[curpid][j]}\n            : tree[curpid][j]\n        );\n      }\n\n      delete tree[curpid];\n    }\n\n    if (!options.root) {\n      pids.shift(); // Remove root\n    }\n\n    callback(null, pids);\n  });\n}\n\nmodule.exports = list;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/pidusage-tree/node_modules/pidtree/lib/pidtree.js?")},"./node_modules/pidusage-tree/node_modules/pidtree/lib/ps.js":
/*!*******************************************************************!*\
  !*** ./node_modules/pidusage-tree/node_modules/pidtree/lib/ps.js ***!
  \*******************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar os = __webpack_require__(/*! os */ \"os\");\nvar bin = __webpack_require__(/*! ./bin */ \"./node_modules/pidusage-tree/node_modules/pidtree/lib/bin.js\");\n\n/**\n * Gets the list of all the pids of the system through the ps command.\n * @param  {Function} callback(err, list)\n */\nfunction ps(callback) {\n  var args = ['-A', '-o', 'ppid,pid'];\n\n  bin('ps', args, function(err, stdout, code) {\n    if (err) return callback(err);\n    if (code !== 0) {\n      return callback(new Error('pidtree ps command exited with code ' + code));\n    }\n\n    // Example of stdout\n    //\n    // PPID   PID\n    //    1   430\n    //  430   432\n    //    1   727\n    //    1  7166\n\n    try {\n      stdout = stdout.split(os.EOL);\n\n      var list = [];\n      for (var i = 1; i < stdout.length; i++) {\n        stdout[i] = stdout[i].trim();\n        if (!stdout[i]) continue;\n        stdout[i] = stdout[i].split(/\\s+/);\n        stdout[i][0] = parseInt(stdout[i][0], 10); // PPID\n        stdout[i][1] = parseInt(stdout[i][1], 10); // PID\n        list.push(stdout[i]);\n      }\n\n      callback(null, list);\n    } catch (error) {\n      callback(error);\n    }\n  });\n}\n\nmodule.exports = ps;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/pidusage-tree/node_modules/pidtree/lib/ps.js?")},"./node_modules/pidusage-tree/node_modules/pidtree/lib/wmic.js":
/*!*********************************************************************!*\
  !*** ./node_modules/pidusage-tree/node_modules/pidtree/lib/wmic.js ***!
  \*********************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar os = __webpack_require__(/*! os */ \"os\");\nvar bin = __webpack_require__(/*! ./bin */ \"./node_modules/pidusage-tree/node_modules/pidtree/lib/bin.js\");\n\n/**\n * Gets the list of all the pids of the system through the wmic command.\n * @param  {Function} callback(err, list)\n */\nfunction wmic(callback) {\n  var args = ['PROCESS', 'get', 'ParentProcessId,ProcessId'];\n  var options = {windowsHide: true, windowsVerbatimArguments: true};\n  bin('wmic', args, options, function(err, stdout, code) {\n    if (err) {\n      callback(err);\n      return;\n    }\n\n    if (code !== 0) {\n      callback(new Error('pidtree wmic command exited with code ' + code));\n      return;\n    }\n\n    // Example of stdout\n    //\n    // ParentProcessId  ProcessId\n    // 0                777\n\n    try {\n      stdout = stdout.split(os.EOL);\n\n      var list = [];\n      for (var i = 1; i < stdout.length; i++) {\n        stdout[i] = stdout[i].trim();\n        if (!stdout[i]) continue;\n        stdout[i] = stdout[i].split(/\\s+/);\n        stdout[i][0] = parseInt(stdout[i][0], 10); // PPID\n        stdout[i][1] = parseInt(stdout[i][1], 10); // PID\n        list.push(stdout[i]);\n      }\n\n      callback(null, list);\n    } catch (error) {\n      callback(error);\n    }\n  });\n}\n\nmodule.exports = wmic;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/pidusage-tree/node_modules/pidtree/lib/wmic.js?")},"./node_modules/pidusage-tree/node_modules/pidtree/lib sync recursive ^\\.\\/.*$":
/*!****************************************************************************!*\
  !*** ./node_modules/pidusage-tree/node_modules/pidtree/lib/ sync ^\.\/.*$ ***!
  \****************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var map = {\n\t"./bin": "./node_modules/pidusage-tree/node_modules/pidtree/lib/bin.js",\n\t"./bin.js": "./node_modules/pidusage-tree/node_modules/pidtree/lib/bin.js",\n\t"./get": "./node_modules/pidusage-tree/node_modules/pidtree/lib/get.js",\n\t"./get.js": "./node_modules/pidusage-tree/node_modules/pidtree/lib/get.js",\n\t"./pidtree": "./node_modules/pidusage-tree/node_modules/pidtree/lib/pidtree.js",\n\t"./pidtree.js": "./node_modules/pidusage-tree/node_modules/pidtree/lib/pidtree.js",\n\t"./ps": "./node_modules/pidusage-tree/node_modules/pidtree/lib/ps.js",\n\t"./ps.js": "./node_modules/pidusage-tree/node_modules/pidtree/lib/ps.js",\n\t"./wmic": "./node_modules/pidusage-tree/node_modules/pidtree/lib/wmic.js",\n\t"./wmic.js": "./node_modules/pidusage-tree/node_modules/pidtree/lib/wmic.js"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error("Cannot find module \'" + req + "\'");\n\t\te.code = \'MODULE_NOT_FOUND\';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = "./node_modules/pidusage-tree/node_modules/pidtree/lib sync recursive ^\\\\.\\\\/.*$";\n\n//# sourceURL=webpack://txadmin/./node_modules/pidusage-tree/node_modules/pidtree/lib/_sync_^\\.\\/.*$?')},"./node_modules/pidusage/index.js":
/*!****************************************!*\
  !*** ./node_modules/pidusage/index.js ***!
  \****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar stats = __webpack_require__(/*! ./lib/stats */ \"./node_modules/pidusage/lib/stats.js\")\n\n/**\n * Get pid informations.\n * @public\n * @param  {Number|Number[]|String|String[]} pids A pid or a list of pids.\n * @param  {Object} [options={}] Options object\n * @param  {Function} [callback=undefined] Called when the statistics are ready.\n * If not provided a promise is returned instead.\n * @returns  {Promise.<Object>} Only when the callback is not provided.\n */\nfunction pidusage (pids, options, callback) {\n  if (typeof options === 'function') {\n    callback = options\n    options = {}\n  }\n\n  if (options === undefined) {\n    options = {}\n  }\n\n  if (typeof callback === 'function') {\n    stats(pids, options, callback)\n    return\n  }\n\n  return new Promise(function (resolve, reject) {\n    stats(pids, options, function (err, data) {\n      if (err) return reject(err)\n      resolve(data)\n    })\n  })\n}\n\nmodule.exports = pidusage\nmodule.exports.clear = __webpack_require__(/*! ./lib/history */ \"./node_modules/pidusage/lib/history.js\").clear\n\n\n//# sourceURL=webpack://txadmin/./node_modules/pidusage/index.js?")},"./node_modules/pidusage/lib/bin.js":
/*!******************************************!*\
  !*** ./node_modules/pidusage/lib/bin.js ***!
  \******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar spawn = (__webpack_require__(/*! child_process */ \"child_process\").spawn)\n\n/**\n  * Spawn a binary and read its stdout.\n  * @param  {String} cmd\n  * @param  {String[]} args\n  * @param  {Function} done(err, stdout)\n  */\nfunction run (cmd, args, options, done) {\n  if (typeof options === 'function') {\n    done = options\n    options = undefined\n  }\n\n  var executed = false\n  var ch = spawn(cmd, args, options)\n  var stdout = ''\n  var stderr = ''\n\n  ch.stdout.on('data', function (d) {\n    stdout += d.toString()\n  })\n\n  ch.stderr.on('data', function (d) {\n    stderr += d.toString()\n  })\n\n  ch.on('error', function (err) {\n    if (executed) return\n    executed = true\n    done(new Error(err))\n  })\n\n  ch.on('close', function (code, signal) {\n    if (executed) return\n    executed = true\n\n    if (stderr) {\n      return done(new Error(stderr))\n    }\n\n    done(null, stdout, code)\n  })\n}\n\nmodule.exports = run\n\n\n//# sourceURL=webpack://txadmin/./node_modules/pidusage/lib/bin.js?")},"./node_modules/pidusage/lib/helpers/cpu.js":
/*!**************************************************!*\
  !*** ./node_modules/pidusage/lib/helpers/cpu.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var os = __webpack_require__(/*! os */ \"os\")\nvar fs = __webpack_require__(/*! fs */ \"fs\")\nvar exec = (__webpack_require__(/*! child_process */ \"child_process\").exec)\nvar parallel = __webpack_require__(/*! ./parallel */ \"./node_modules/pidusage/lib/helpers/parallel.js\")\n\n/**\n * Gathers Clock, PageSize and system uptime through /proc/uptime\n * This method is mocked in procfile tests\n */\nfunction updateCpu (cpu, next) {\n  if (cpu !== null) {\n    getRealUptime(function (err, uptime) {\n      if (err) return next(err)\n      cpu.uptime = uptime\n      next(null, cpu)\n    })\n    return\n  }\n\n  parallel([\n    getClockAndPageSize,\n    getRealUptime\n  ], function (err, data) {\n    if (err) return next(err)\n\n    cpu = {\n      clockTick: data[0].clockTick,\n      pageSize: data[0].pageSize,\n      uptime: data[1]\n    }\n\n    next(null, cpu)\n  })\n}\n\nmodule.exports = updateCpu\n\n/**\n * Fallback on os.uptime(), though /proc/uptime is more precise\n */\nfunction getRealUptime (next) {\n  fs.readFile('/proc/uptime', 'utf8', function (err, uptime) {\n    if (err || uptime === undefined) {\n      console.warn(\"[pidusage] We couldn't find uptime from /proc/uptime, using os.uptime() value\")\n      return next(null, os.uptime())\n    }\n\n    return next(null, parseFloat(uptime.split(' ')[0]))\n  })\n}\n\nfunction getClockAndPageSize (next) {\n  parallel([\n    function getClockTick (cb) {\n      getconf('CLK_TCK', { default: 100 }, cb)\n    },\n    function getPageSize (cb) {\n      getconf('PAGESIZE', { default: 4096 }, cb)\n    }\n  ], function (err, data) {\n    if (err) return next(err)\n\n    next(null, { clockTick: data[0], pageSize: data[1] })\n  })\n}\n\nfunction getconf (keyword, options, next) {\n  if (typeof options === 'function') {\n    next = options\n    options = { default: '' }\n  }\n\n  exec('getconf ' + keyword, function (error, stdout, stderr) {\n    if (error !== null) {\n      console.error('Error while getting ' + keyword, error)\n      return next(null, options.default)\n    }\n\n    stdout = parseInt(stdout)\n\n    if (!isNaN(stdout)) {\n      return next(null, stdout)\n    }\n\n    return next(null, options.default)\n  })\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/pidusage/lib/helpers/cpu.js?")},"./node_modules/pidusage/lib/helpers/parallel.js":
/*!*******************************************************!*\
  !*** ./node_modules/pidusage/lib/helpers/parallel.js ***!
  \*******************************************************/module=>{eval("// execute an array of asynchronous functions in parallel\n// @param {Array} fns - an array of functions\n// @param {Function} done - callback(err, results)\nfunction parallel (fns, options, done) {\n  if (typeof options === 'function') {\n    done = options\n    options = {}\n  }\n\n  var keys\n  if (!Array.isArray(fns)) { keys = Object.keys(fns) }\n  var length = keys ? keys.length : fns.length\n  var pending = length\n  var results = keys ? {} : []\n\n  function each (i, err, result) {\n    results[i] = result\n\n    if (--pending === 0 || (err && !options.graceful)) {\n      if (options.graceful && err && length > 1) {\n        err = null\n      }\n\n      done && done(err, results)\n      done = null\n    }\n  }\n\n  if (keys) {\n    keys.forEach(function (key) {\n      fns[key](function (err, res) {\n        each(key, err, res)\n      })\n    })\n  } else {\n    fns.forEach(function (fn, i) {\n      fn(function (err, res) {\n        each(i, err, res)\n      })\n    })\n  }\n}\n\nmodule.exports = parallel\n\n\n//# sourceURL=webpack://txadmin/./node_modules/pidusage/lib/helpers/parallel.js?")},"./node_modules/pidusage/lib/history.js":
/*!**********************************************!*\
  !*** ./node_modules/pidusage/lib/history.js ***!
  \**********************************************/module=>{"use strict";eval("\nvar DEFAULT_MAXAGE = 60000\n\nvar expiration = {}\nvar history = {}\nvar expireListeners = {}\n\nvar size = 0\nvar interval = null\n\nfunction get (pid, maxage) {\n  if (maxage <= 0) {\n    return\n  }\n\n  if (history[pid] !== undefined) {\n    expiration[pid] = Date.now() + (maxage || DEFAULT_MAXAGE)\n  }\n\n  return history[pid]\n}\n\nfunction set (pid, object, maxage, onExpire) {\n  if (object === undefined || maxage <= 0) return\n\n  expiration[pid] = Date.now() + (maxage || DEFAULT_MAXAGE)\n  if (history[pid] === undefined) {\n    size++\n    sheduleInvalidator(maxage)\n  }\n\n  history[pid] = object\n  if (onExpire) {\n    expireListeners[pid] = onExpire\n  }\n}\n\nfunction sheduleInvalidator (maxage) {\n  if (size > 0) {\n    if (interval === null) {\n      interval = setInterval(runInvalidator, (maxage || DEFAULT_MAXAGE) / 2)\n      if (typeof interval.unref === 'function') {\n        interval.unref()\n      }\n    }\n\n    return\n  }\n\n  if (interval !== null) {\n    clearInterval(interval)\n    interval = null\n  }\n}\n\nfunction runInvalidator () {\n  var now = Date.now()\n  var pids = Object.keys(expiration)\n  for (var i = 0; i < pids.length; i++) {\n    var pid = pids[i]\n    if (expiration[pid] < now) {\n      size--\n      if (expireListeners[pid]) {\n        expireListeners[pid](history[pid])\n      }\n\n      delete history[pid]\n      delete expiration[pid]\n      delete expireListeners[pid]\n    }\n  }\n  sheduleInvalidator()\n}\n\nfunction deleteLoop (obj) { for (const i in obj) { delete obj[i] } }\n\nfunction clear () {\n  if (interval !== null) {\n    clearInterval(interval)\n    interval = null\n  }\n\n  deleteLoop(history)\n  deleteLoop(expiration)\n  deleteLoop(expireListeners)\n}\n\nmodule.exports = {\n  get: get,\n  set: set,\n  clear: clear\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/pidusage/lib/history.js?")},"./node_modules/pidusage/lib/procfile.js":
/*!***********************************************!*\
  !*** ./node_modules/pidusage/lib/procfile.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var fs = __webpack_require__(/*! fs */ \"fs\")\nvar path = __webpack_require__(/*! path */ \"path\")\nvar updateCpu = __webpack_require__(/*! ./helpers/cpu */ \"./node_modules/pidusage/lib/helpers/cpu.js\")\nvar parallel = __webpack_require__(/*! ./helpers/parallel */ \"./node_modules/pidusage/lib/helpers/parallel.js\")\nvar history = __webpack_require__(/*! ./history */ \"./node_modules/pidusage/lib/history.js\")\nvar cpuInfo = null\nvar Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/pidusage/node_modules/safe-buffer/index.js\").Buffer)\nvar SIZE = 1024 // if the stat file is bigger then this I'll buy you a drink\n\nfunction noop () {}\n\nfunction open (path, history, cb) {\n  if (history.fd) { return cb(null, history.fd) }\n  fs.open(path, 'r', cb)\n}\n\nfunction close (history) {\n  if (history.fd) {\n    fs.close(history.fd, noop)\n  }\n}\n\nfunction readUntilEnd (fd, buf, cb) {\n  var firstRead = false\n  if (typeof buf === 'function') {\n    cb = buf\n    buf = Buffer.alloc(SIZE)\n    firstRead = true\n  }\n\n  fs.read(fd, buf, 0, SIZE, 0, function (err, bytesRead, buffer) {\n    if (err) {\n      cb(err)\n      return\n    }\n\n    var data = Buffer.concat([buf, buffer], firstRead ? bytesRead : buf.length + bytesRead)\n    if (bytesRead === SIZE) {\n      readUntilEnd(fd, data, cb)\n      return\n    }\n\n    cb(null, buf)\n  })\n}\n\nfunction readProcFile (pid, options, done) {\n  var hst = history.get(pid, options.maxage)\n  var again = false\n  if (hst === undefined) {\n    again = true\n    hst = {}\n  }\n\n  // Arguments to path.join must be strings\n  open(path.join('/proc', '' + pid, 'stat'), hst, function (err, fd) {\n    if (err) {\n      if (err.code === 'ENOENT') {\n        err.message = 'No matching pid found'\n      }\n      return done(err, null)\n    }\n\n    if (err) {\n      return done(err)\n    }\n\n    readUntilEnd(fd, function (err, buffer) {\n      if (err) {\n        return done(err)\n      }\n\n      var infos = buffer.toString('utf8')\n      var date = Date.now()\n\n      // https://github.com/arunoda/node-usage/commit/a6ca74ecb8dd452c3c00ed2bde93294d7bb75aa8\n      // preventing process space in name by removing values before last ) (pid (name) ...)\n      var index = infos.lastIndexOf(')')\n      infos = infos.substr(index + 2).split(' ')\n\n      // according to http://man7.org/linux/man-pages/man5/proc.5.html (index 0 based - 2)\n      // In kernels before Linux 2.6, start was expressed in jiffies. Since Linux 2.6, the value is expressed in clock ticks\n      var stat = {\n        ppid: parseInt(infos[1]),\n        utime: parseFloat(infos[11]) * 1000 / cpuInfo.clockTick,\n        stime: parseFloat(infos[12]) * 1000 / cpuInfo.clockTick,\n        cutime: parseFloat(infos[13]) * 1000 / cpuInfo.clockTick,\n        cstime: parseFloat(infos[14]) * 1000 / cpuInfo.clockTick,\n        start: parseFloat(infos[19]) * 1000 / cpuInfo.clockTick,\n        rss: parseFloat(infos[21]),\n        uptime: cpuInfo.uptime * 1000,\n        fd: fd\n      }\n\n      var memory = stat.rss * cpuInfo.pageSize\n\n      // https://stackoverflow.com/a/16736599/3921589\n      var childrens = options.childrens ? stat.cutime + stat.cstime : 0\n      // process usage since last call in seconds\n      var total = (stat.stime - (hst.stime || 0) + stat.utime - (hst.utime || 0) + childrens)\n      // time elapsed between calls in seconds\n      var seconds = Math.abs(hst.uptime !== undefined ? stat.uptime - hst.uptime : stat.start - stat.uptime)\n      var cpu = seconds > 0 ? (total / seconds) * 100 : 0\n\n      history.set(pid, stat, options.maxage, close)\n\n      if (again) {\n        return readProcFile(pid, options, done)\n      }\n\n      return done(null, {\n        cpu: cpu,\n        memory: memory,\n        ctime: stat.utime + stat.stime,\n        elapsed: stat.uptime - stat.start,\n        timestamp: date,\n        pid: pid,\n        ppid: stat.ppid\n      })\n    })\n  })\n}\n\nfunction procfile (pids, options, done) {\n  updateCpu(cpuInfo, function (err, result) {\n    if (err) return done(err)\n\n    cpuInfo = result\n    var fns = {}\n\n    pids.forEach(function (pid, i) {\n      fns[pid] = function (cb) {\n        readProcFile(pid, options, cb)\n      }\n    })\n\n    parallel(fns, { graceful: true }, done)\n  })\n}\n\nmodule.exports = procfile\n\n\n//# sourceURL=webpack://txadmin/./node_modules/pidusage/lib/procfile.js?")},"./node_modules/pidusage/lib/ps.js":
/*!*****************************************!*\
  !*** ./node_modules/pidusage/lib/ps.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar os = __webpack_require__(/*! os */ \"os\")\nvar bin = __webpack_require__(/*! ./bin */ \"./node_modules/pidusage/lib/bin.js\")\nvar history = __webpack_require__(/*! ./history */ \"./node_modules/pidusage/lib/history.js\")\n\nvar PLATFORM = os.platform()\n\nfunction parseTime (timestr, centisec) {\n  var time = 0\n  var tpart = timestr.split(/-|:|\\./)\n  var i = tpart.length - 1\n  if (i >= 0 && centisec && PLATFORM === 'darwin') {\n    time += parseInt(tpart[i--], 10) * 10\n  }\n  if (i >= 0) { // Seconds\n    time += parseInt(tpart[i--], 10) * 1000\n  }\n  if (i >= 0) { // Minutes\n    time += parseInt(tpart[i--], 10) * 60000\n  }\n  if (i >= 0) { // Hours\n    time += parseInt(tpart[i--], 10) * 3600000\n  }\n  if (i >= 0) { // Days\n    time += parseInt(tpart[i--], 10) * 86400000\n  }\n  return time\n}\n\n/**\n  * Get pid informations through ps command.\n  * @param  {Number[]} pids\n  * @param  {Object} options\n  * @param  {Function} done(err, stat)\n  */\nfunction ps (pids, options, done) {\n  var pArg = pids.join(',')\n  var args = ['-o', 'etime,pid,ppid,pcpu,rss,time', '-p', pArg]\n\n  if (PLATFORM === 'aix') {\n    args = ['-o', 'etime,pid,ppid,pcpu,rssize,time', '-p', pArg]\n  }\n\n  bin('ps', args, function (err, stdout, code) {\n    if (err) return done(err)\n    if (code === 1) {\n      const error = new Error('No matching pid found')\n      error.code = 'ENOENT'\n      return done(error)\n    }\n    if (code !== 0) {\n      return done(new Error('pidusage ps command exited with code ' + code))\n    }\n    var date = Date.now()\n\n    // Example of stdout on *nix.\n    // ELAPSED: format is [[dd-]hh:]mm:ss\n    // RSS: is counted as blocks of 1024 bytes\n    // TIME: format is [[dd-]hh:]mm:ss\n    // %CPU: goes from 0 to vcore * 100\n    //\n    // Refs: http://www.manpages.info/linux/ps.1.html\n    // NB: The columns are returned in the order given inside the -o option\n    //\n    //    ELAPSED   PID  PPID  %CPU     RSS        TIME\n    // 2-40:50:53   430     1   3.0    5145  1-02:03:04\n    //   40:50:53   432   430   0.0    2364  1-01:02:03\n    //   01:50:50   727     1  10.0  348932       14:27\n    //      00:20  7166     1   0.1    3756        0:00\n\n    // Example of stdout on Darwin\n    // ELAPSED: format is [[dd-]hh:]mm:ss\n    // RSS: is counted as blocks of 1024 bytes\n    // TIME: format is [[dd-]hh:]mm:ss.cc (cc are centiseconds)\n    // %CPU: goes from 0 to vcore * 100\n    //\n    // Refs: https://ss64.com/osx/ps.html\n    // NB: The columns are returned in the order given inside the -o option\n    //\n    //    ELAPSED   PID  PPID  %CPU     RSS           TIME\n    // 2-40:50:53   430     1   3.0    5145  1-02:03:04.07\n    //   40:50:53   432   430   0.0    2364  1-01:02:03.10\n    //   01:50:50   727     1  10.0  348932       14:27.26\n    //      00:20  7166     1   0.1    3756        0:00.02\n\n    stdout = stdout.split(os.EOL)\n\n    var statistics = {}\n    for (var i = 1; i < stdout.length; i++) {\n      var line = stdout[i].trim().split(/\\s+/)\n\n      if (!line || line.length !== 6) {\n        continue\n      }\n\n      var pid = parseInt(line[1], 10)\n      var hst = history.get(pid, options.maxage)\n      if (hst === undefined) hst = {}\n\n      var ppid = parseInt(line[2], 10)\n      var memory = parseInt(line[4], 10) * 1024\n      var etime = parseTime(line[0])\n      var ctime = parseTime(line[5], true)\n\n      var total = (ctime - (hst.ctime || 0))\n      // time elapsed between calls in seconds\n      var seconds = Math.abs(hst.elapsed !== undefined ? etime - hst.elapsed : etime)\n      var cpu = seconds > 0 ? (total / seconds) * 100 : 0\n\n      statistics[pid] = {\n        cpu: cpu,\n        memory: memory,\n        ppid: ppid,\n        pid: pid,\n        ctime: ctime,\n        elapsed: etime,\n        timestamp: date\n      }\n\n      history.set(pid, statistics[pid], options.maxage)\n    }\n\n    done(null, statistics)\n  })\n}\n\nmodule.exports = ps\n\n\n//# sourceURL=webpack://txadmin/./node_modules/pidusage/lib/ps.js?")},"./node_modules/pidusage/lib/stats.js":
/*!********************************************!*\
  !*** ./node_modules/pidusage/lib/stats.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar fs = __webpack_require__(/*! fs */ \"fs\")\nvar os = __webpack_require__(/*! os */ \"os\")\n\nvar platformToMethod = {\n  aix: 'ps',\n  android: 'procfile',\n  alpine: 'procfile',\n  darwin: 'ps',\n  freebsd: 'ps',\n  linux: 'procfile',\n  netbsd: 'procfile',\n  sunos: 'ps',\n  win: 'wmic'\n}\n\nvar ps = __webpack_require__(/*! ./ps */ \"./node_modules/pidusage/lib/ps.js\")\nvar platform = os.platform()\n\nif (fs.existsSync('/etc/alpine-release')) {\n  platform = 'alpine'\n}\n\nif (platform.match(/^win/)) {\n  platform = 'win'\n}\n\nvar stat\ntry {\n  stat = __webpack_require__(\"./node_modules/pidusage/lib sync recursive ^\\\\.\\\\/.*$\")(\"./\" + platformToMethod[platform])\n} catch (err) {}\n\n/**\n * @callback pidCallback\n * @param {Error} err A possible error.\n * @param {Object} statistics The object containing the statistics.\n */\n\n/**\n * Get pid informations.\n * @public\n * @param  {Number|Number[]|String|String[]} pids A pid or a list of pids.\n * @param  {Object} [options={}] Options object\n * @param  {pidCallback} callback Called when the statistics are ready.\n */\nfunction get (pids, options, callback) {\n  var fn = stat\n  if (platform !== 'win' && options.usePs === true) {\n    fn = ps\n  }\n\n  if (stat === undefined) {\n    return callback(new Error(os.platform() + ' is not supported yet, please open an issue (https://github.com/soyuka/pidusage)'))\n  }\n\n  var single = false\n  if (!Array.isArray(pids)) {\n    single = true\n    pids = [pids]\n  }\n\n  if (pids.length === 0) {\n    return callback(new TypeError('You must provide at least one pid'))\n  }\n\n  for (var i = 0; i < pids.length; i++) {\n    pids[i] = parseInt(pids[i], 10)\n    if (isNaN(pids[i]) || pids[i] < 0) {\n      return callback(new TypeError('One of the pids provided is invalid'))\n    }\n  }\n\n  fn(pids, options, function (err, stats) {\n    if (err) {\n      return callback(err)\n    }\n\n    if (single) {\n      callback(null, stats[pids[0]])\n    } else {\n      callback(null, stats)\n    }\n  })\n}\n\nmodule.exports = get\n\n\n//# sourceURL=webpack://txadmin/./node_modules/pidusage/lib/stats.js?")},"./node_modules/pidusage/lib/wmic.js":
/*!*******************************************!*\
  !*** ./node_modules/pidusage/lib/wmic.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar os = __webpack_require__(/*! os */ \"os\")\nvar bin = __webpack_require__(/*! ./bin */ \"./node_modules/pidusage/lib/bin.js\")\nvar history = __webpack_require__(/*! ./history */ \"./node_modules/pidusage/lib/history.js\")\n\nfunction parseDate (datestr) {\n  var year = datestr.substring(0, 4)\n  var month = datestr.substring(4, 6)\n  var day = datestr.substring(6, 8)\n  var hour = datestr.substring(8, 10)\n  var minutes = datestr.substring(10, 12)\n  var seconds = datestr.substring(12, 14)\n  var useconds = datestr.substring(15, 21)\n  var sign = datestr.substring(21, 22)\n  var tmz = parseInt(datestr.substring(22, 25), 10)\n  var tmzh = Math.floor(tmz / 60)\n  var tmzm = tmz % 60\n\n  return new Date(\n    year + '-' + month + '-' + day + 'T' + hour +\n    ':' + minutes + ':' + seconds +\n    '.' + useconds +\n    sign + (tmzh > 9 ? tmzh : '0' + tmzh) + '' + (tmzm > 9 ? tmzm : '0' + tmzm)\n  )\n}\n\n/**\n  * Get pid informations through wmic command.\n  * @param  {Number[]} pids\n  * @param  {Object} options\n  * @param  {Function} done(err, stat)\n  */\nfunction wmic (pids, options, done) {\n  var whereClause = 'ProcessId=' + pids[0]\n  for (var i = 1; i < pids.length; i++) {\n    whereClause += ' or ' + 'ProcessId=' + pids[i]\n  }\n\n  var args = [\n    'PROCESS',\n    'where',\n    '\"' + whereClause + '\"',\n    'get',\n    'CreationDate,KernelModeTime,ParentProcessId,ProcessId,UserModeTime,WorkingSetSize'\n  ]\n\n  bin('wmic', args, { windowsHide: true, windowsVerbatimArguments: true }, function (err, stdout, code) {\n    if (err) {\n      if (err.message.indexOf('No Instance(s) Available.') !== -1) {\n        const error = new Error('No matching pid found')\n        error.code = 'ENOENT'\n        return done(error)\n      }\n      return done(err)\n    }\n    if (code !== 0) {\n      return done(new Error('pidusage wmic command exited with code ' + code))\n    }\n    var date = Date.now()\n\n    // Note: On Windows the returned value includes fractions of a second.\n    // Use Math.floor() to get whole seconds.\n    var uptime = Math.floor(os.uptime())\n\n    // Example of stdout on Windows 10\n    // CreationDate: is in the format yyyymmddHHMMSS.mmmmmmsUUU\n    // KernelModeTime: is in units of 100 ns\n    // UserModeTime: is in units of 100 ns\n    // WorkingSetSize: is in bytes\n    //\n    // Refs: https://superuser.com/a/937401/470946\n    // Refs: https://msdn.microsoft.com/en-us/library/aa394372(v=vs.85).aspx\n    // NB: The columns are returned in lexicographical order\n    //\n    // CreationDate               KernelModeTime  ParentProcessId  ProcessId  UserModeTime  WorkingSetSize\n    // 20150329221650.080654+060  153750000       0                777        8556250000    110821376\n\n    stdout = stdout.split(os.EOL)\n\n    var again = false\n    var statistics = {}\n    for (var i = 1; i < stdout.length; i++) {\n      var line = stdout[i].trim().split(/\\s+/)\n\n      if (!line || line.length !== 6) {\n        continue\n      }\n\n      var creation = parseDate(line[0])\n      var ppid = parseInt(line[2], 10)\n      var pid = parseInt(line[3], 10)\n      var kerneltime = Math.round(parseInt(line[1], 10) / 10000)\n      var usertime = Math.round(parseInt(line[4], 10) / 10000)\n      var memory = parseInt(line[5], 10)\n\n      var hst = history.get(pid, options.maxage)\n      if (hst === undefined) {\n        again = true\n        hst = { ctime: kerneltime + usertime, uptime: uptime }\n      }\n\n      // process usage since last call\n      var total = (kerneltime + usertime - hst.ctime) / 1000\n      // time elapsed between calls in seconds\n      var seconds = uptime - hst.uptime\n      var cpu = seconds > 0 ? (total / seconds) * 100 : 0\n\n      history.set(pid, { ctime: usertime + kerneltime, uptime: uptime }, options.maxage)\n\n      statistics[pid] = {\n        cpu: cpu,\n        memory: memory,\n        ppid: ppid,\n        pid: pid,\n        ctime: usertime + kerneltime,\n        elapsed: date - creation.getTime(),\n        timestamp: date\n      }\n    }\n\n    if (again) {\n      return wmic(pids, options, function (err, stats) {\n        if (err) return done(err)\n        done(null, Object.assign(statistics, stats))\n      })\n    }\n    done(null, statistics)\n  })\n}\n\nmodule.exports = wmic\n\n\n//# sourceURL=webpack://txadmin/./node_modules/pidusage/lib/wmic.js?")},"./node_modules/pidusage/lib sync recursive ^\\.\\/.*$":
/*!**************************************************!*\
  !*** ./node_modules/pidusage/lib/ sync ^\.\/.*$ ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var map = {\n\t"./bin": "./node_modules/pidusage/lib/bin.js",\n\t"./bin.js": "./node_modules/pidusage/lib/bin.js",\n\t"./helpers/cpu": "./node_modules/pidusage/lib/helpers/cpu.js",\n\t"./helpers/cpu.js": "./node_modules/pidusage/lib/helpers/cpu.js",\n\t"./helpers/parallel": "./node_modules/pidusage/lib/helpers/parallel.js",\n\t"./helpers/parallel.js": "./node_modules/pidusage/lib/helpers/parallel.js",\n\t"./history": "./node_modules/pidusage/lib/history.js",\n\t"./history.js": "./node_modules/pidusage/lib/history.js",\n\t"./procfile": "./node_modules/pidusage/lib/procfile.js",\n\t"./procfile.js": "./node_modules/pidusage/lib/procfile.js",\n\t"./ps": "./node_modules/pidusage/lib/ps.js",\n\t"./ps.js": "./node_modules/pidusage/lib/ps.js",\n\t"./stats": "./node_modules/pidusage/lib/stats.js",\n\t"./stats.js": "./node_modules/pidusage/lib/stats.js",\n\t"./wmic": "./node_modules/pidusage/lib/wmic.js",\n\t"./wmic.js": "./node_modules/pidusage/lib/wmic.js"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error("Cannot find module \'" + req + "\'");\n\t\te.code = \'MODULE_NOT_FOUND\';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = "./node_modules/pidusage/lib sync recursive ^\\\\.\\\\/.*$";\n\n//# sourceURL=webpack://txadmin/./node_modules/pidusage/lib/_sync_^\\.\\/.*$?')},"./node_modules/pidusage/node_modules/safe-buffer/index.js":
/*!*****************************************************************!*\
  !*** ./node_modules/pidusage/node_modules/safe-buffer/index.js ***!
  \*****************************************************************/(module,exports,__webpack_require__)=>{eval("/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = __webpack_require__(/*! buffer */ \"buffer\")\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/pidusage/node_modules/safe-buffer/index.js?")},"./node_modules/pify/index.js":
/*!************************************!*\
  !*** ./node_modules/pify/index.js ***!
  \************************************/module=>{"use strict";eval("\n\nconst processFn = (fn, opts) => function () {\n\tconst P = opts.promiseModule;\n\tconst args = new Array(arguments.length);\n\n\tfor (let i = 0; i < arguments.length; i++) {\n\t\targs[i] = arguments[i];\n\t}\n\n\treturn new P((resolve, reject) => {\n\t\tif (opts.errorFirst) {\n\t\t\targs.push(function (err, result) {\n\t\t\t\tif (opts.multiArgs) {\n\t\t\t\t\tconst results = new Array(arguments.length - 1);\n\n\t\t\t\t\tfor (let i = 1; i < arguments.length; i++) {\n\t\t\t\t\t\tresults[i - 1] = arguments[i];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tresults.unshift(err);\n\t\t\t\t\t\treject(results);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolve(results);\n\t\t\t\t\t}\n\t\t\t\t} else if (err) {\n\t\t\t\t\treject(err);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(result);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\targs.push(function (result) {\n\t\t\t\tif (opts.multiArgs) {\n\t\t\t\t\tconst results = new Array(arguments.length - 1);\n\n\t\t\t\t\tfor (let i = 0; i < arguments.length; i++) {\n\t\t\t\t\t\tresults[i] = arguments[i];\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve(results);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(result);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tfn.apply(this, args);\n\t});\n};\n\nmodule.exports = (obj, opts) => {\n\topts = Object.assign({\n\t\texclude: [/.+(Sync|Stream)$/],\n\t\terrorFirst: true,\n\t\tpromiseModule: Promise\n\t}, opts);\n\n\tconst filter = key => {\n\t\tconst match = pattern => typeof pattern === 'string' ? key === pattern : pattern.test(key);\n\t\treturn opts.include ? opts.include.some(match) : !opts.exclude.some(match);\n\t};\n\n\tlet ret;\n\tif (typeof obj === 'function') {\n\t\tret = function () {\n\t\t\tif (opts.excludeMain) {\n\t\t\t\treturn obj.apply(this, arguments);\n\t\t\t}\n\n\t\t\treturn processFn(obj, opts).apply(this, arguments);\n\t\t};\n\t} else {\n\t\tret = Object.create(Object.getPrototypeOf(obj));\n\t}\n\n\tfor (const key in obj) { // eslint-disable-line guard-for-in\n\t\tconst x = obj[key];\n\t\tret[key] = typeof x === 'function' && filter(key) ? processFn(x, opts) : x;\n\t}\n\n\treturn ret;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/pify/index.js?")},"./node_modules/pseudomap/map.js":
/*!***************************************!*\
  !*** ./node_modules/pseudomap/map.js ***!
  \***************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('if (({"APP_ENV":"webpack"}).npm_package_name === \'pseudomap\' &&\n    ({"APP_ENV":"webpack"}).npm_lifecycle_script === \'test\')\n  ({"APP_ENV":"webpack"}).TEST_PSEUDOMAP = \'true\'\n\nif (typeof Map === \'function\' && !({"APP_ENV":"webpack"}).TEST_PSEUDOMAP) {\n  module.exports = Map\n} else {\n  module.exports = __webpack_require__(/*! ./pseudomap */ "./node_modules/pseudomap/pseudomap.js")\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/pseudomap/map.js?')},"./node_modules/pseudomap/pseudomap.js":
/*!*********************************************!*\
  !*** ./node_modules/pseudomap/pseudomap.js ***!
  \*********************************************/module=>{eval("var hasOwnProperty = Object.prototype.hasOwnProperty\n\nmodule.exports = PseudoMap\n\nfunction PseudoMap (set) {\n  if (!(this instanceof PseudoMap)) // whyyyyyyy\n    throw new TypeError(\"Constructor PseudoMap requires 'new'\")\n\n  this.clear()\n\n  if (set) {\n    if ((set instanceof PseudoMap) ||\n        (typeof Map === 'function' && set instanceof Map))\n      set.forEach(function (value, key) {\n        this.set(key, value)\n      }, this)\n    else if (Array.isArray(set))\n      set.forEach(function (kv) {\n        this.set(kv[0], kv[1])\n      }, this)\n    else\n      throw new TypeError('invalid argument')\n  }\n}\n\nPseudoMap.prototype.forEach = function (fn, thisp) {\n  thisp = thisp || this\n  Object.keys(this._data).forEach(function (k) {\n    if (k !== 'size')\n      fn.call(thisp, this._data[k].value, this._data[k].key)\n  }, this)\n}\n\nPseudoMap.prototype.has = function (k) {\n  return !!find(this._data, k)\n}\n\nPseudoMap.prototype.get = function (k) {\n  var res = find(this._data, k)\n  return res && res.value\n}\n\nPseudoMap.prototype.set = function (k, v) {\n  set(this._data, k, v)\n}\n\nPseudoMap.prototype.delete = function (k) {\n  var res = find(this._data, k)\n  if (res) {\n    delete this._data[res._index]\n    this._data.size--\n  }\n}\n\nPseudoMap.prototype.clear = function () {\n  var data = Object.create(null)\n  data.size = 0\n\n  Object.defineProperty(this, '_data', {\n    value: data,\n    enumerable: false,\n    configurable: true,\n    writable: false\n  })\n}\n\nObject.defineProperty(PseudoMap.prototype, 'size', {\n  get: function () {\n    return this._data.size\n  },\n  set: function (n) {},\n  enumerable: true,\n  configurable: true\n})\n\nPseudoMap.prototype.values =\nPseudoMap.prototype.keys =\nPseudoMap.prototype.entries = function () {\n  throw new Error('iterators are not implemented in this version')\n}\n\n// Either identical, or both NaN\nfunction same (a, b) {\n  return a === b || a !== a && b !== b\n}\n\nfunction Entry (k, v, i) {\n  this.key = k\n  this.value = v\n  this._index = i\n}\n\nfunction find (data, k) {\n  for (var i = 0, s = '_' + k, key = s;\n       hasOwnProperty.call(data, key);\n       key = s + i++) {\n    if (same(data[key].key, k))\n      return data[key]\n  }\n}\n\nfunction set (data, k, v) {\n  for (var i = 0, s = '_' + k, key = s;\n       hasOwnProperty.call(data, key);\n       key = s + i++) {\n    if (same(data[key].key, k)) {\n      data[key].value = v\n      return\n    }\n  }\n  data.size++\n  data[key] = new Entry(k, v, key)\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/pseudomap/pseudomap.js?")},"./node_modules/pump/index.js":
/*!************************************!*\
  !*** ./node_modules/pump/index.js ***!
  \************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var once = __webpack_require__(/*! once */ \"./node_modules/once/once.js\")\nvar eos = __webpack_require__(/*! end-of-stream */ \"./node_modules/end-of-stream/index.js\")\nvar fs = __webpack_require__(/*! fs */ \"fs\") // we only need fs to get the ReadStream and WriteStream prototypes\n\nvar noop = function () {}\nvar ancient = /^v?\\.0/.test(process.version)\n\nvar isFn = function (fn) {\n  return typeof fn === 'function'\n}\n\nvar isFS = function (stream) {\n  if (!ancient) return false // newer node version do not need to care about fs is a special way\n  if (!fs) return false // browser\n  return (stream instanceof (fs.ReadStream || noop) || stream instanceof (fs.WriteStream || noop)) && isFn(stream.close)\n}\n\nvar isRequest = function (stream) {\n  return stream.setHeader && isFn(stream.abort)\n}\n\nvar destroyer = function (stream, reading, writing, callback) {\n  callback = once(callback)\n\n  var closed = false\n  stream.on('close', function () {\n    closed = true\n  })\n\n  eos(stream, {readable: reading, writable: writing}, function (err) {\n    if (err) return callback(err)\n    closed = true\n    callback()\n  })\n\n  var destroyed = false\n  return function (err) {\n    if (closed) return\n    if (destroyed) return\n    destroyed = true\n\n    if (isFS(stream)) return stream.close(noop) // use close for fs streams to avoid fd leaks\n    if (isRequest(stream)) return stream.abort() // request.destroy just do .end - .abort is what we want\n\n    if (isFn(stream.destroy)) return stream.destroy()\n\n    callback(err || new Error('stream was destroyed'))\n  }\n}\n\nvar call = function (fn) {\n  fn()\n}\n\nvar pipe = function (from, to) {\n  return from.pipe(to)\n}\n\nvar pump = function () {\n  var streams = Array.prototype.slice.call(arguments)\n  var callback = isFn(streams[streams.length - 1] || noop) && streams.pop() || noop\n\n  if (Array.isArray(streams[0])) streams = streams[0]\n  if (streams.length < 2) throw new Error('pump requires two streams per minimum')\n\n  var error\n  var destroys = streams.map(function (stream, i) {\n    var reading = i < streams.length - 1\n    var writing = i > 0\n    return destroyer(stream, reading, writing, function (err) {\n      if (!error) error = err\n      if (err) destroys.forEach(call)\n      if (reading) return\n      destroys.forEach(call)\n      callback(error)\n    })\n  })\n\n  return streams.reduce(pipe)\n}\n\nmodule.exports = pump\n\n\n//# sourceURL=webpack://txadmin/./node_modules/pump/index.js?")},"./node_modules/qs/lib/formats.js":
/*!****************************************!*\
  !*** ./node_modules/qs/lib/formats.js ***!
  \****************************************/module=>{"use strict";eval("\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n    RFC1738: 'RFC1738',\n    RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n    'default': Format.RFC3986,\n    formatters: {\n        RFC1738: function (value) {\n            return replace.call(value, percentTwenties, '+');\n        },\n        RFC3986: function (value) {\n            return String(value);\n        }\n    },\n    RFC1738: Format.RFC1738,\n    RFC3986: Format.RFC3986\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/qs/lib/formats.js?")},"./node_modules/qs/lib/index.js":
/*!**************************************!*\
  !*** ./node_modules/qs/lib/index.js ***!
  \**************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nvar stringify = __webpack_require__(/*! ./stringify */ "./node_modules/qs/lib/stringify.js");\nvar parse = __webpack_require__(/*! ./parse */ "./node_modules/qs/lib/parse.js");\nvar formats = __webpack_require__(/*! ./formats */ "./node_modules/qs/lib/formats.js");\n\nmodule.exports = {\n    formats: formats,\n    parse: parse,\n    stringify: stringify\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/qs/lib/index.js?')},"./node_modules/qs/lib/parse.js":
/*!**************************************!*\
  !*** ./node_modules/qs/lib/parse.js ***!
  \**************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar utils = __webpack_require__(/*! ./utils */ \"./node_modules/qs/lib/utils.js\");\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n    allowDots: false,\n    allowPrototypes: false,\n    allowSparse: false,\n    arrayLimit: 20,\n    charset: 'utf-8',\n    charsetSentinel: false,\n    comma: false,\n    decoder: utils.decode,\n    delimiter: '&',\n    depth: 5,\n    ignoreQueryPrefix: false,\n    interpretNumericEntities: false,\n    parameterLimit: 1000,\n    parseArrays: true,\n    plainObjects: false,\n    strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n    return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n        return String.fromCharCode(parseInt(numberStr, 10));\n    });\n};\n\nvar parseArrayValue = function (val, options) {\n    if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n        return val.split(',');\n    }\n\n    return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('&#10003;')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n    var obj = {};\n    var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n    var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n    var parts = cleanStr.split(options.delimiter, limit);\n    var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n    var i;\n\n    var charset = options.charset;\n    if (options.charsetSentinel) {\n        for (i = 0; i < parts.length; ++i) {\n            if (parts[i].indexOf('utf8=') === 0) {\n                if (parts[i] === charsetSentinel) {\n                    charset = 'utf-8';\n                } else if (parts[i] === isoSentinel) {\n                    charset = 'iso-8859-1';\n                }\n                skipIndex = i;\n                i = parts.length; // The eslint settings do not allow break;\n            }\n        }\n    }\n\n    for (i = 0; i < parts.length; ++i) {\n        if (i === skipIndex) {\n            continue;\n        }\n        var part = parts[i];\n\n        var bracketEqualsPos = part.indexOf(']=');\n        var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n        var key, val;\n        if (pos === -1) {\n            key = options.decoder(part, defaults.decoder, charset, 'key');\n            val = options.strictNullHandling ? null : '';\n        } else {\n            key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n            val = utils.maybeMap(\n                parseArrayValue(part.slice(pos + 1), options),\n                function (encodedVal) {\n                    return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n                }\n            );\n        }\n\n        if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n            val = interpretNumericEntities(val);\n        }\n\n        if (part.indexOf('[]=') > -1) {\n            val = isArray(val) ? [val] : val;\n        }\n\n        if (has.call(obj, key)) {\n            obj[key] = utils.combine(obj[key], val);\n        } else {\n            obj[key] = val;\n        }\n    }\n\n    return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n    var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n    for (var i = chain.length - 1; i >= 0; --i) {\n        var obj;\n        var root = chain[i];\n\n        if (root === '[]' && options.parseArrays) {\n            obj = [].concat(leaf);\n        } else {\n            obj = options.plainObjects ? Object.create(null) : {};\n            var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n            var index = parseInt(cleanRoot, 10);\n            if (!options.parseArrays && cleanRoot === '') {\n                obj = { 0: leaf };\n            } else if (\n                !isNaN(index)\n                && root !== cleanRoot\n                && String(index) === cleanRoot\n                && index >= 0\n                && (options.parseArrays && index <= options.arrayLimit)\n            ) {\n                obj = [];\n                obj[index] = leaf;\n            } else {\n                obj[cleanRoot] = leaf;\n            }\n        }\n\n        leaf = obj;\n    }\n\n    return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n    if (!givenKey) {\n        return;\n    }\n\n    // Transform dot notation to bracket notation\n    var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n    // The regex chunks\n\n    var brackets = /(\\[[^[\\]]*])/;\n    var child = /(\\[[^[\\]]*])/g;\n\n    // Get the parent\n\n    var segment = options.depth > 0 && brackets.exec(key);\n    var parent = segment ? key.slice(0, segment.index) : key;\n\n    // Stash the parent if it exists\n\n    var keys = [];\n    if (parent) {\n        // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n        if (!options.plainObjects && has.call(Object.prototype, parent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys.push(parent);\n    }\n\n    // Loop through children appending to the array until we hit depth\n\n    var i = 0;\n    while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n        i += 1;\n        if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n        keys.push(segment[1]);\n    }\n\n    // If there's a remainder, just add whatever is left\n\n    if (segment) {\n        keys.push('[' + key.slice(segment.index) + ']');\n    }\n\n    return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n        throw new TypeError('Decoder has to be a function.');\n    }\n\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n    var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n    return {\n        allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n        allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n        allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n        arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n        decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n        delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n        // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n        depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n        ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n        interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n        parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n        parseArrays: opts.parseArrays !== false,\n        plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n    };\n};\n\nmodule.exports = function (str, opts) {\n    var options = normalizeParseOptions(opts);\n\n    if (str === '' || str === null || typeof str === 'undefined') {\n        return options.plainObjects ? Object.create(null) : {};\n    }\n\n    var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n    var obj = options.plainObjects ? Object.create(null) : {};\n\n    // Iterate over the keys and setup the new object\n\n    var keys = Object.keys(tempObj);\n    for (var i = 0; i < keys.length; ++i) {\n        var key = keys[i];\n        var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n        obj = utils.merge(obj, newObj, options);\n    }\n\n    if (options.allowSparse === true) {\n        return obj;\n    }\n\n    return utils.compact(obj);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/qs/lib/parse.js?")},"./node_modules/qs/lib/stringify.js":
/*!******************************************!*\
  !*** ./node_modules/qs/lib/stringify.js ***!
  \******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar getSideChannel = __webpack_require__(/*! side-channel */ \"./node_modules/side-channel/index.js\");\nvar utils = __webpack_require__(/*! ./utils */ \"./node_modules/qs/lib/utils.js\");\nvar formats = __webpack_require__(/*! ./formats */ \"./node_modules/qs/lib/formats.js\");\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n    brackets: function brackets(prefix) {\n        return prefix + '[]';\n    },\n    comma: 'comma',\n    indices: function indices(prefix, key) {\n        return prefix + '[' + key + ']';\n    },\n    repeat: function repeat(prefix) {\n        return prefix;\n    }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n    push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n    addQueryPrefix: false,\n    allowDots: false,\n    charset: 'utf-8',\n    charsetSentinel: false,\n    delimiter: '&',\n    encode: true,\n    encoder: utils.encode,\n    encodeValuesOnly: false,\n    format: defaultFormat,\n    formatter: formats.formatters[defaultFormat],\n    // deprecated\n    indices: false,\n    serializeDate: function serializeDate(date) {\n        return toISO.call(date);\n    },\n    skipNulls: false,\n    strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n    return typeof v === 'string'\n        || typeof v === 'number'\n        || typeof v === 'boolean'\n        || typeof v === 'symbol'\n        || typeof v === 'bigint';\n};\n\nvar stringify = function stringify(\n    object,\n    prefix,\n    generateArrayPrefix,\n    strictNullHandling,\n    skipNulls,\n    encoder,\n    filter,\n    sort,\n    allowDots,\n    serializeDate,\n    format,\n    formatter,\n    encodeValuesOnly,\n    charset,\n    sideChannel\n) {\n    var obj = object;\n\n    if (sideChannel.has(object)) {\n        throw new RangeError('Cyclic object value');\n    }\n\n    if (typeof filter === 'function') {\n        obj = filter(prefix, obj);\n    } else if (obj instanceof Date) {\n        obj = serializeDate(obj);\n    } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        obj = utils.maybeMap(obj, function (value) {\n            if (value instanceof Date) {\n                return serializeDate(value);\n            }\n            return value;\n        });\n    }\n\n    if (obj === null) {\n        if (strictNullHandling) {\n            return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n        }\n\n        obj = '';\n    }\n\n    if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n        if (encoder) {\n            var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n            return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n        }\n        return [formatter(prefix) + '=' + formatter(String(obj))];\n    }\n\n    var values = [];\n\n    if (typeof obj === 'undefined') {\n        return values;\n    }\n\n    var objKeys;\n    if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        // we need to join elements in\n        objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : undefined }];\n    } else if (isArray(filter)) {\n        objKeys = filter;\n    } else {\n        var keys = Object.keys(obj);\n        objKeys = sort ? keys.sort(sort) : keys;\n    }\n\n    for (var i = 0; i < objKeys.length; ++i) {\n        var key = objKeys[i];\n        var value = typeof key === 'object' && key.value !== undefined ? key.value : obj[key];\n\n        if (skipNulls && value === null) {\n            continue;\n        }\n\n        var keyPrefix = isArray(obj)\n            ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix\n            : prefix + (allowDots ? '.' + key : '[' + key + ']');\n\n        sideChannel.set(object, true);\n        var valueSideChannel = getSideChannel();\n        pushToArray(values, stringify(\n            value,\n            keyPrefix,\n            generateArrayPrefix,\n            strictNullHandling,\n            skipNulls,\n            encoder,\n            filter,\n            sort,\n            allowDots,\n            serializeDate,\n            format,\n            formatter,\n            encodeValuesOnly,\n            charset,\n            valueSideChannel\n        ));\n    }\n\n    return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (opts.encoder !== null && opts.encoder !== undefined && typeof opts.encoder !== 'function') {\n        throw new TypeError('Encoder has to be a function.');\n    }\n\n    var charset = opts.charset || defaults.charset;\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    var format = formats['default'];\n    if (typeof opts.format !== 'undefined') {\n        if (!has.call(formats.formatters, opts.format)) {\n            throw new TypeError('Unknown format option provided.');\n        }\n        format = opts.format;\n    }\n    var formatter = formats.formatters[format];\n\n    var filter = defaults.filter;\n    if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n        filter = opts.filter;\n    }\n\n    return {\n        addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n        allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n        encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n        encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n        encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n        filter: filter,\n        format: format,\n        formatter: formatter,\n        serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n        skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n        sort: typeof opts.sort === 'function' ? opts.sort : null,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n    };\n};\n\nmodule.exports = function (object, opts) {\n    var obj = object;\n    var options = normalizeStringifyOptions(opts);\n\n    var objKeys;\n    var filter;\n\n    if (typeof options.filter === 'function') {\n        filter = options.filter;\n        obj = filter('', obj);\n    } else if (isArray(options.filter)) {\n        filter = options.filter;\n        objKeys = filter;\n    }\n\n    var keys = [];\n\n    if (typeof obj !== 'object' || obj === null) {\n        return '';\n    }\n\n    var arrayFormat;\n    if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n        arrayFormat = opts.arrayFormat;\n    } else if (opts && 'indices' in opts) {\n        arrayFormat = opts.indices ? 'indices' : 'repeat';\n    } else {\n        arrayFormat = 'indices';\n    }\n\n    var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n    if (!objKeys) {\n        objKeys = Object.keys(obj);\n    }\n\n    if (options.sort) {\n        objKeys.sort(options.sort);\n    }\n\n    var sideChannel = getSideChannel();\n    for (var i = 0; i < objKeys.length; ++i) {\n        var key = objKeys[i];\n\n        if (options.skipNulls && obj[key] === null) {\n            continue;\n        }\n        pushToArray(keys, stringify(\n            obj[key],\n            key,\n            generateArrayPrefix,\n            options.strictNullHandling,\n            options.skipNulls,\n            options.encode ? options.encoder : null,\n            options.filter,\n            options.sort,\n            options.allowDots,\n            options.serializeDate,\n            options.format,\n            options.formatter,\n            options.encodeValuesOnly,\n            options.charset,\n            sideChannel\n        ));\n    }\n\n    var joined = keys.join(options.delimiter);\n    var prefix = options.addQueryPrefix === true ? '?' : '';\n\n    if (options.charsetSentinel) {\n        if (options.charset === 'iso-8859-1') {\n            // encodeURIComponent('&#10003;'), the \"numeric entity\" representation of a checkmark\n            prefix += 'utf8=%26%2310003%3B&';\n        } else {\n            // encodeURIComponent('✓')\n            prefix += 'utf8=%E2%9C%93&';\n        }\n    }\n\n    return joined.length > 0 ? prefix + joined : '';\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/qs/lib/stringify.js?")},"./node_modules/qs/lib/utils.js":
/*!**************************************!*\
  !*** ./node_modules/qs/lib/utils.js ***!
  \**************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar formats = __webpack_require__(/*! ./formats */ \"./node_modules/qs/lib/formats.js\");\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n    var array = [];\n    for (var i = 0; i < 256; ++i) {\n        array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n    }\n\n    return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n    while (queue.length > 1) {\n        var item = queue.pop();\n        var obj = item.obj[item.prop];\n\n        if (isArray(obj)) {\n            var compacted = [];\n\n            for (var j = 0; j < obj.length; ++j) {\n                if (typeof obj[j] !== 'undefined') {\n                    compacted.push(obj[j]);\n                }\n            }\n\n            item.obj[item.prop] = compacted;\n        }\n    }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n    var obj = options && options.plainObjects ? Object.create(null) : {};\n    for (var i = 0; i < source.length; ++i) {\n        if (typeof source[i] !== 'undefined') {\n            obj[i] = source[i];\n        }\n    }\n\n    return obj;\n};\n\nvar merge = function merge(target, source, options) {\n    /* eslint no-param-reassign: 0 */\n    if (!source) {\n        return target;\n    }\n\n    if (typeof source !== 'object') {\n        if (isArray(target)) {\n            target.push(source);\n        } else if (target && typeof target === 'object') {\n            if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n                target[source] = true;\n            }\n        } else {\n            return [target, source];\n        }\n\n        return target;\n    }\n\n    if (!target || typeof target !== 'object') {\n        return [target].concat(source);\n    }\n\n    var mergeTarget = target;\n    if (isArray(target) && !isArray(source)) {\n        mergeTarget = arrayToObject(target, options);\n    }\n\n    if (isArray(target) && isArray(source)) {\n        source.forEach(function (item, i) {\n            if (has.call(target, i)) {\n                var targetItem = target[i];\n                if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n                    target[i] = merge(targetItem, item, options);\n                } else {\n                    target.push(item);\n                }\n            } else {\n                target[i] = item;\n            }\n        });\n        return target;\n    }\n\n    return Object.keys(source).reduce(function (acc, key) {\n        var value = source[key];\n\n        if (has.call(acc, key)) {\n            acc[key] = merge(acc[key], value, options);\n        } else {\n            acc[key] = value;\n        }\n        return acc;\n    }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n    return Object.keys(source).reduce(function (acc, key) {\n        acc[key] = source[key];\n        return acc;\n    }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n    var strWithoutPlus = str.replace(/\\+/g, ' ');\n    if (charset === 'iso-8859-1') {\n        // unescape never throws, no try...catch needed:\n        return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n    }\n    // utf-8\n    try {\n        return decodeURIComponent(strWithoutPlus);\n    } catch (e) {\n        return strWithoutPlus;\n    }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n    // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n    // It has been adapted here for stricter adherence to RFC 3986\n    if (str.length === 0) {\n        return str;\n    }\n\n    var string = str;\n    if (typeof str === 'symbol') {\n        string = Symbol.prototype.toString.call(str);\n    } else if (typeof str !== 'string') {\n        string = String(str);\n    }\n\n    if (charset === 'iso-8859-1') {\n        return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n            return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n        });\n    }\n\n    var out = '';\n    for (var i = 0; i < string.length; ++i) {\n        var c = string.charCodeAt(i);\n\n        if (\n            c === 0x2D // -\n            || c === 0x2E // .\n            || c === 0x5F // _\n            || c === 0x7E // ~\n            || (c >= 0x30 && c <= 0x39) // 0-9\n            || (c >= 0x41 && c <= 0x5A) // a-z\n            || (c >= 0x61 && c <= 0x7A) // A-Z\n            || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n        ) {\n            out += string.charAt(i);\n            continue;\n        }\n\n        if (c < 0x80) {\n            out = out + hexTable[c];\n            continue;\n        }\n\n        if (c < 0x800) {\n            out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n            continue;\n        }\n\n        if (c < 0xD800 || c >= 0xE000) {\n            out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n            continue;\n        }\n\n        i += 1;\n        c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n        out += hexTable[0xF0 | (c >> 18)]\n            + hexTable[0x80 | ((c >> 12) & 0x3F)]\n            + hexTable[0x80 | ((c >> 6) & 0x3F)]\n            + hexTable[0x80 | (c & 0x3F)];\n    }\n\n    return out;\n};\n\nvar compact = function compact(value) {\n    var queue = [{ obj: { o: value }, prop: 'o' }];\n    var refs = [];\n\n    for (var i = 0; i < queue.length; ++i) {\n        var item = queue[i];\n        var obj = item.obj[item.prop];\n\n        var keys = Object.keys(obj);\n        for (var j = 0; j < keys.length; ++j) {\n            var key = keys[j];\n            var val = obj[key];\n            if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n                queue.push({ obj: obj, prop: key });\n                refs.push(val);\n            }\n        }\n    }\n\n    compactQueue(queue);\n\n    return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n    return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n    if (!obj || typeof obj !== 'object') {\n        return false;\n    }\n\n    return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n    return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n    if (isArray(val)) {\n        var mapped = [];\n        for (var i = 0; i < val.length; i += 1) {\n            mapped.push(fn(val[i]));\n        }\n        return mapped;\n    }\n    return fn(val);\n};\n\nmodule.exports = {\n    arrayToObject: arrayToObject,\n    assign: assign,\n    combine: combine,\n    compact: compact,\n    decode: decode,\n    encode: encode,\n    isBuffer: isBuffer,\n    isRegExp: isRegExp,\n    maybeMap: maybeMap,\n    merge: merge\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/qs/lib/utils.js?")},"./node_modules/quick-lru/index.js":
/*!*****************************************!*\
  !*** ./node_modules/quick-lru/index.js ***!
  \*****************************************/module=>{"use strict";eval("\n\nclass QuickLRU {\n\tconstructor(options = {}) {\n\t\tif (!(options.maxSize && options.maxSize > 0)) {\n\t\t\tthrow new TypeError('`maxSize` must be a number greater than 0');\n\t\t}\n\n\t\tthis.maxSize = options.maxSize;\n\t\tthis.onEviction = options.onEviction;\n\t\tthis.cache = new Map();\n\t\tthis.oldCache = new Map();\n\t\tthis._size = 0;\n\t}\n\n\t_set(key, value) {\n\t\tthis.cache.set(key, value);\n\t\tthis._size++;\n\n\t\tif (this._size >= this.maxSize) {\n\t\t\tthis._size = 0;\n\n\t\t\tif (typeof this.onEviction === 'function') {\n\t\t\t\tfor (const [key, value] of this.oldCache.entries()) {\n\t\t\t\t\tthis.onEviction(key, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.oldCache = this.cache;\n\t\t\tthis.cache = new Map();\n\t\t}\n\t}\n\n\tget(key) {\n\t\tif (this.cache.has(key)) {\n\t\t\treturn this.cache.get(key);\n\t\t}\n\n\t\tif (this.oldCache.has(key)) {\n\t\t\tconst value = this.oldCache.get(key);\n\t\t\tthis.oldCache.delete(key);\n\t\t\tthis._set(key, value);\n\t\t\treturn value;\n\t\t}\n\t}\n\n\tset(key, value) {\n\t\tif (this.cache.has(key)) {\n\t\t\tthis.cache.set(key, value);\n\t\t} else {\n\t\t\tthis._set(key, value);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\thas(key) {\n\t\treturn this.cache.has(key) || this.oldCache.has(key);\n\t}\n\n\tpeek(key) {\n\t\tif (this.cache.has(key)) {\n\t\t\treturn this.cache.get(key);\n\t\t}\n\n\t\tif (this.oldCache.has(key)) {\n\t\t\treturn this.oldCache.get(key);\n\t\t}\n\t}\n\n\tdelete(key) {\n\t\tconst deleted = this.cache.delete(key);\n\t\tif (deleted) {\n\t\t\tthis._size--;\n\t\t}\n\n\t\treturn this.oldCache.delete(key) || deleted;\n\t}\n\n\tclear() {\n\t\tthis.cache.clear();\n\t\tthis.oldCache.clear();\n\t\tthis._size = 0;\n\t}\n\n\t* keys() {\n\t\tfor (const [key] of this) {\n\t\t\tyield key;\n\t\t}\n\t}\n\n\t* values() {\n\t\tfor (const [, value] of this) {\n\t\t\tyield value;\n\t\t}\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tfor (const item of this.cache) {\n\t\t\tyield item;\n\t\t}\n\n\t\tfor (const item of this.oldCache) {\n\t\t\tconst [key] = item;\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t}\n\t}\n\n\tget size() {\n\t\tlet oldCacheSize = 0;\n\t\tfor (const key of this.oldCache.keys()) {\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\toldCacheSize++;\n\t\t\t}\n\t\t}\n\n\t\treturn Math.min(this._size + oldCacheSize, this.maxSize);\n\t}\n}\n\nmodule.exports = QuickLRU;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/quick-lru/index.js?")},"./node_modules/raw-body/index.js":
/*!****************************************!*\
  !*** ./node_modules/raw-body/index.js ***!
  \****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("/*!\n * raw-body\n * Copyright(c) 2013-2014 Jonathan Ong\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar bytes = __webpack_require__(/*! bytes */ \"./node_modules/bytes/index.js\")\nvar createError = __webpack_require__(/*! http-errors */ \"./node_modules/http-errors/index.js\")\nvar iconv = __webpack_require__(/*! iconv-lite */ \"./node_modules/raw-body/node_modules/iconv-lite/lib/index.js\")\nvar unpipe = __webpack_require__(/*! unpipe */ \"./node_modules/unpipe/index.js\")\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = getRawBody\n\n/**\n * Module variables.\n * @private\n */\n\nvar ICONV_ENCODING_MESSAGE_REGEXP = /^Encoding not recognized: /\n\n/**\n * Get the decoder for a given encoding.\n *\n * @param {string} encoding\n * @private\n */\n\nfunction getDecoder (encoding) {\n  if (!encoding) return null\n\n  try {\n    return iconv.getDecoder(encoding)\n  } catch (e) {\n    // error getting decoder\n    if (!ICONV_ENCODING_MESSAGE_REGEXP.test(e.message)) throw e\n\n    // the encoding was not found\n    throw createError(415, 'specified encoding unsupported', {\n      encoding: encoding,\n      type: 'encoding.unsupported'\n    })\n  }\n}\n\n/**\n * Get the raw body of a stream (typically HTTP).\n *\n * @param {object} stream\n * @param {object|string|function} [options]\n * @param {function} [callback]\n * @public\n */\n\nfunction getRawBody (stream, options, callback) {\n  var done = callback\n  var opts = options || {}\n\n  if (options === true || typeof options === 'string') {\n    // short cut for encoding\n    opts = {\n      encoding: options\n    }\n  }\n\n  if (typeof options === 'function') {\n    done = options\n    opts = {}\n  }\n\n  // validate callback is a function, if provided\n  if (done !== undefined && typeof done !== 'function') {\n    throw new TypeError('argument callback must be a function')\n  }\n\n  // require the callback without promises\n  if (!done && !global.Promise) {\n    throw new TypeError('argument callback is required')\n  }\n\n  // get encoding\n  var encoding = opts.encoding !== true\n    ? opts.encoding\n    : 'utf-8'\n\n  // convert the limit to an integer\n  var limit = bytes.parse(opts.limit)\n\n  // convert the expected length to an integer\n  var length = opts.length != null && !isNaN(opts.length)\n    ? parseInt(opts.length, 10)\n    : null\n\n  if (done) {\n    // classic callback style\n    return readStream(stream, encoding, length, limit, done)\n  }\n\n  return new Promise(function executor (resolve, reject) {\n    readStream(stream, encoding, length, limit, function onRead (err, buf) {\n      if (err) return reject(err)\n      resolve(buf)\n    })\n  })\n}\n\n/**\n * Halt a stream.\n *\n * @param {Object} stream\n * @private\n */\n\nfunction halt (stream) {\n  // unpipe everything from the stream\n  unpipe(stream)\n\n  // pause stream\n  if (typeof stream.pause === 'function') {\n    stream.pause()\n  }\n}\n\n/**\n * Read the data from the stream.\n *\n * @param {object} stream\n * @param {string} encoding\n * @param {number} length\n * @param {number} limit\n * @param {function} callback\n * @public\n */\n\nfunction readStream (stream, encoding, length, limit, callback) {\n  var complete = false\n  var sync = true\n\n  // check the length and limit options.\n  // note: we intentionally leave the stream paused,\n  // so users should handle the stream themselves.\n  if (limit !== null && length !== null && length > limit) {\n    return done(createError(413, 'request entity too large', {\n      expected: length,\n      length: length,\n      limit: limit,\n      type: 'entity.too.large'\n    }))\n  }\n\n  // streams1: assert request encoding is buffer.\n  // streams2+: assert the stream encoding is buffer.\n  //   stream._decoder: streams1\n  //   state.encoding: streams2\n  //   state.decoder: streams2, specifically < 0.10.6\n  var state = stream._readableState\n  if (stream._decoder || (state && (state.encoding || state.decoder))) {\n    // developer error\n    return done(createError(500, 'stream encoding should not be set', {\n      type: 'stream.encoding.set'\n    }))\n  }\n\n  var received = 0\n  var decoder\n\n  try {\n    decoder = getDecoder(encoding)\n  } catch (err) {\n    return done(err)\n  }\n\n  var buffer = decoder\n    ? ''\n    : []\n\n  // attach listeners\n  stream.on('aborted', onAborted)\n  stream.on('close', cleanup)\n  stream.on('data', onData)\n  stream.on('end', onEnd)\n  stream.on('error', onEnd)\n\n  // mark sync section complete\n  sync = false\n\n  function done () {\n    var args = new Array(arguments.length)\n\n    // copy arguments\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i]\n    }\n\n    // mark complete\n    complete = true\n\n    if (sync) {\n      process.nextTick(invokeCallback)\n    } else {\n      invokeCallback()\n    }\n\n    function invokeCallback () {\n      cleanup()\n\n      if (args[0]) {\n        // halt the stream on error\n        halt(stream)\n      }\n\n      callback.apply(null, args)\n    }\n  }\n\n  function onAborted () {\n    if (complete) return\n\n    done(createError(400, 'request aborted', {\n      code: 'ECONNABORTED',\n      expected: length,\n      length: length,\n      received: received,\n      type: 'request.aborted'\n    }))\n  }\n\n  function onData (chunk) {\n    if (complete) return\n\n    received += chunk.length\n\n    if (limit !== null && received > limit) {\n      done(createError(413, 'request entity too large', {\n        limit: limit,\n        received: received,\n        type: 'entity.too.large'\n      }))\n    } else if (decoder) {\n      buffer += decoder.write(chunk)\n    } else {\n      buffer.push(chunk)\n    }\n  }\n\n  function onEnd (err) {\n    if (complete) return\n    if (err) return done(err)\n\n    if (length !== null && received !== length) {\n      done(createError(400, 'request size did not match content length', {\n        expected: length,\n        length: length,\n        received: received,\n        type: 'request.size.invalid'\n      }))\n    } else {\n      var string = decoder\n        ? buffer + (decoder.end() || '')\n        : Buffer.concat(buffer)\n      done(null, string)\n    }\n  }\n\n  function cleanup () {\n    buffer = null\n\n    stream.removeListener('aborted', onAborted)\n    stream.removeListener('data', onData)\n    stream.removeListener('end', onEnd)\n    stream.removeListener('error', onEnd)\n    stream.removeListener('close', cleanup)\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/raw-body/index.js?")},"./node_modules/raw-body/node_modules/iconv-lite/encodings/dbcs-codec.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/raw-body/node_modules/iconv-lite/encodings/dbcs-codec.js ***!
  \*******************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nvar Buffer = (__webpack_require__(/*! safer-buffer */ "./node_modules/safer-buffer/safer.js").Buffer);\n\n// Multibyte codec. In this scheme, a character is represented by 1 or more bytes.\n// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences.\n// To save memory and loading time, we read table files only when requested.\n\nexports._dbcs = DBCSCodec;\n\nvar UNASSIGNED = -1,\n    GB18030_CODE = -2,\n    SEQ_START  = -10,\n    NODE_START = -1000,\n    UNASSIGNED_NODE = new Array(0x100),\n    DEF_CHAR = -1;\n\nfor (var i = 0; i < 0x100; i++)\n    UNASSIGNED_NODE[i] = UNASSIGNED;\n\n\n// Class DBCSCodec reads and initializes mapping tables.\nfunction DBCSCodec(codecOptions, iconv) {\n    this.encodingName = codecOptions.encodingName;\n    if (!codecOptions)\n        throw new Error("DBCS codec is called without the data.")\n    if (!codecOptions.table)\n        throw new Error("Encoding \'" + this.encodingName + "\' has no data.");\n\n    // Load tables.\n    var mappingTable = codecOptions.table();\n\n\n    // Decode tables: MBCS -> Unicode.\n\n    // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256.\n    // Trie root is decodeTables[0].\n    // Values: >=  0 -> unicode character code. can be > 0xFFFF\n    //         == UNASSIGNED -> unknown/unassigned sequence.\n    //         == GB18030_CODE -> this is the end of a GB18030 4-byte sequence.\n    //         <= NODE_START -> index of the next node in our trie to process next byte.\n    //         <= SEQ_START  -> index of the start of a character code sequence, in decodeTableSeq.\n    this.decodeTables = [];\n    this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node.\n\n    // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. \n    this.decodeTableSeq = [];\n\n    // Actual mapping tables consist of chunks. Use them to fill up decode tables.\n    for (var i = 0; i < mappingTable.length; i++)\n        this._addDecodeChunk(mappingTable[i]);\n\n    this.defaultCharUnicode = iconv.defaultCharUnicode;\n\n    \n    // Encode tables: Unicode -> DBCS.\n\n    // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance.\n    // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null.\n    // Values: >=  0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.).\n    //         == UNASSIGNED -> no conversion found. Output a default char.\n    //         <= SEQ_START  -> it\'s an index in encodeTableSeq, see below. The character starts a sequence.\n    this.encodeTable = [];\n    \n    // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of\n    // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key\n    // means end of sequence (needed when one sequence is a strict subsequence of another).\n    // Objects are kept separately from encodeTable to increase performance.\n    this.encodeTableSeq = [];\n\n    // Some chars can be decoded, but need not be encoded.\n    var skipEncodeChars = {};\n    if (codecOptions.encodeSkipVals)\n        for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) {\n            var val = codecOptions.encodeSkipVals[i];\n            if (typeof val === \'number\')\n                skipEncodeChars[val] = true;\n            else\n                for (var j = val.from; j <= val.to; j++)\n                    skipEncodeChars[j] = true;\n        }\n        \n    // Use decode trie to recursively fill out encode tables.\n    this._fillEncodeTable(0, 0, skipEncodeChars);\n\n    // Add more encoding pairs when needed.\n    if (codecOptions.encodeAdd) {\n        for (var uChar in codecOptions.encodeAdd)\n            if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar))\n                this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]);\n    }\n\n    this.defCharSB  = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)];\n    if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0][\'?\'];\n    if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0);\n\n\n    // Load & create GB18030 tables when needed.\n    if (typeof codecOptions.gb18030 === \'function\') {\n        this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges.\n\n        // Add GB18030 decode tables.\n        var thirdByteNodeIdx = this.decodeTables.length;\n        var thirdByteNode = this.decodeTables[thirdByteNodeIdx] = UNASSIGNED_NODE.slice(0);\n\n        var fourthByteNodeIdx = this.decodeTables.length;\n        var fourthByteNode = this.decodeTables[fourthByteNodeIdx] = UNASSIGNED_NODE.slice(0);\n\n        for (var i = 0x81; i <= 0xFE; i++) {\n            var secondByteNodeIdx = NODE_START - this.decodeTables[0][i];\n            var secondByteNode = this.decodeTables[secondByteNodeIdx];\n            for (var j = 0x30; j <= 0x39; j++)\n                secondByteNode[j] = NODE_START - thirdByteNodeIdx;\n        }\n        for (var i = 0x81; i <= 0xFE; i++)\n            thirdByteNode[i] = NODE_START - fourthByteNodeIdx;\n        for (var i = 0x30; i <= 0x39; i++)\n            fourthByteNode[i] = GB18030_CODE\n    }        \n}\n\nDBCSCodec.prototype.encoder = DBCSEncoder;\nDBCSCodec.prototype.decoder = DBCSDecoder;\n\n// Decoder helpers\nDBCSCodec.prototype._getDecodeTrieNode = function(addr) {\n    var bytes = [];\n    for (; addr > 0; addr >>= 8)\n        bytes.push(addr & 0xFF);\n    if (bytes.length == 0)\n        bytes.push(0);\n\n    var node = this.decodeTables[0];\n    for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie.\n        var val = node[bytes[i]];\n\n        if (val == UNASSIGNED) { // Create new node.\n            node[bytes[i]] = NODE_START - this.decodeTables.length;\n            this.decodeTables.push(node = UNASSIGNED_NODE.slice(0));\n        }\n        else if (val <= NODE_START) { // Existing node.\n            node = this.decodeTables[NODE_START - val];\n        }\n        else\n            throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16));\n    }\n    return node;\n}\n\n\nDBCSCodec.prototype._addDecodeChunk = function(chunk) {\n    // First element of chunk is the hex mbcs code where we start.\n    var curAddr = parseInt(chunk[0], 16);\n\n    // Choose the decoding node where we\'ll write our chars.\n    var writeTable = this._getDecodeTrieNode(curAddr);\n    curAddr = curAddr & 0xFF;\n\n    // Write all other elements of the chunk to the table.\n    for (var k = 1; k < chunk.length; k++) {\n        var part = chunk[k];\n        if (typeof part === "string") { // String, write as-is.\n            for (var l = 0; l < part.length;) {\n                var code = part.charCodeAt(l++);\n                if (0xD800 <= code && code < 0xDC00) { // Decode surrogate\n                    var codeTrail = part.charCodeAt(l++);\n                    if (0xDC00 <= codeTrail && codeTrail < 0xE000)\n                        writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00);\n                    else\n                        throw new Error("Incorrect surrogate pair in "  + this.encodingName + " at chunk " + chunk[0]);\n                }\n                else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used)\n                    var len = 0xFFF - code + 2;\n                    var seq = [];\n                    for (var m = 0; m < len; m++)\n                        seq.push(part.charCodeAt(l++)); // Simple variation: don\'t support surrogates or subsequences in seq.\n\n                    writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length;\n                    this.decodeTableSeq.push(seq);\n                }\n                else\n                    writeTable[curAddr++] = code; // Basic char\n            }\n        } \n        else if (typeof part === "number") { // Integer, meaning increasing sequence starting with prev character.\n            var charCode = writeTable[curAddr - 1] + 1;\n            for (var l = 0; l < part; l++)\n                writeTable[curAddr++] = charCode++;\n        }\n        else\n            throw new Error("Incorrect type \'" + typeof part + "\' given in "  + this.encodingName + " at chunk " + chunk[0]);\n    }\n    if (curAddr > 0xFF)\n        throw new Error("Incorrect chunk in "  + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr);\n}\n\n// Encoder helpers\nDBCSCodec.prototype._getEncodeBucket = function(uCode) {\n    var high = uCode >> 8; // This could be > 0xFF because of astral characters.\n    if (this.encodeTable[high] === undefined)\n        this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand.\n    return this.encodeTable[high];\n}\n\nDBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) {\n    var bucket = this._getEncodeBucket(uCode);\n    var low = uCode & 0xFF;\n    if (bucket[low] <= SEQ_START)\n        this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There\'s already a sequence, set a single-char subsequence of it.\n    else if (bucket[low] == UNASSIGNED)\n        bucket[low] = dbcsCode;\n}\n\nDBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) {\n    \n    // Get the root of character tree according to first character of the sequence.\n    var uCode = seq[0];\n    var bucket = this._getEncodeBucket(uCode);\n    var low = uCode & 0xFF;\n\n    var node;\n    if (bucket[low] <= SEQ_START) {\n        // There\'s already a sequence with  - use it.\n        node = this.encodeTableSeq[SEQ_START-bucket[low]];\n    }\n    else {\n        // There was no sequence object - allocate a new one.\n        node = {};\n        if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence.\n        bucket[low] = SEQ_START - this.encodeTableSeq.length;\n        this.encodeTableSeq.push(node);\n    }\n\n    // Traverse the character tree, allocating new nodes as needed.\n    for (var j = 1; j < seq.length-1; j++) {\n        var oldVal = node[uCode];\n        if (typeof oldVal === \'object\')\n            node = oldVal;\n        else {\n            node = node[uCode] = {}\n            if (oldVal !== undefined)\n                node[DEF_CHAR] = oldVal\n        }\n    }\n\n    // Set the leaf to given dbcsCode.\n    uCode = seq[seq.length-1];\n    node[uCode] = dbcsCode;\n}\n\nDBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) {\n    var node = this.decodeTables[nodeIdx];\n    for (var i = 0; i < 0x100; i++) {\n        var uCode = node[i];\n        var mbCode = prefix + i;\n        if (skipEncodeChars[mbCode])\n            continue;\n\n        if (uCode >= 0)\n            this._setEncodeChar(uCode, mbCode);\n        else if (uCode <= NODE_START)\n            this._fillEncodeTable(NODE_START - uCode, mbCode << 8, skipEncodeChars);\n        else if (uCode <= SEQ_START)\n            this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode);\n    }\n}\n\n\n\n// == Encoder ==================================================================\n\nfunction DBCSEncoder(options, codec) {\n    // Encoder state\n    this.leadSurrogate = -1;\n    this.seqObj = undefined;\n    \n    // Static data\n    this.encodeTable = codec.encodeTable;\n    this.encodeTableSeq = codec.encodeTableSeq;\n    this.defaultCharSingleByte = codec.defCharSB;\n    this.gb18030 = codec.gb18030;\n}\n\nDBCSEncoder.prototype.write = function(str) {\n    var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)),\n        leadSurrogate = this.leadSurrogate,\n        seqObj = this.seqObj, nextChar = -1,\n        i = 0, j = 0;\n\n    while (true) {\n        // 0. Get next character.\n        if (nextChar === -1) {\n            if (i == str.length) break;\n            var uCode = str.charCodeAt(i++);\n        }\n        else {\n            var uCode = nextChar;\n            nextChar = -1;    \n        }\n\n        // 1. Handle surrogates.\n        if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates.\n            if (uCode < 0xDC00) { // We\'ve got lead surrogate.\n                if (leadSurrogate === -1) {\n                    leadSurrogate = uCode;\n                    continue;\n                } else {\n                    leadSurrogate = uCode;\n                    // Double lead surrogate found.\n                    uCode = UNASSIGNED;\n                }\n            } else { // We\'ve got trail surrogate.\n                if (leadSurrogate !== -1) {\n                    uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00);\n                    leadSurrogate = -1;\n                } else {\n                    // Incomplete surrogate pair - only trail surrogate found.\n                    uCode = UNASSIGNED;\n                }\n                \n            }\n        }\n        else if (leadSurrogate !== -1) {\n            // Incomplete surrogate pair - only lead surrogate found.\n            nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char.\n            leadSurrogate = -1;\n        }\n\n        // 2. Convert uCode character.\n        var dbcsCode = UNASSIGNED;\n        if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence\n            var resCode = seqObj[uCode];\n            if (typeof resCode === \'object\') { // Sequence continues.\n                seqObj = resCode;\n                continue;\n\n            } else if (typeof resCode == \'number\') { // Sequence finished. Write it.\n                dbcsCode = resCode;\n\n            } else if (resCode == undefined) { // Current character is not part of the sequence.\n\n                // Try default character for this sequence\n                resCode = seqObj[DEF_CHAR];\n                if (resCode !== undefined) {\n                    dbcsCode = resCode; // Found. Write it.\n                    nextChar = uCode; // Current character will be written too in the next iteration.\n\n                } else {\n                    // TODO: What if we have no default? (resCode == undefined)\n                    // Then, we should write first char of the sequence as-is and try the rest recursively.\n                    // Didn\'t do it for now because no encoding has this situation yet.\n                    // Currently, just skip the sequence and write current char.\n                }\n            }\n            seqObj = undefined;\n        }\n        else if (uCode >= 0) {  // Regular character\n            var subtable = this.encodeTable[uCode >> 8];\n            if (subtable !== undefined)\n                dbcsCode = subtable[uCode & 0xFF];\n            \n            if (dbcsCode <= SEQ_START) { // Sequence start\n                seqObj = this.encodeTableSeq[SEQ_START-dbcsCode];\n                continue;\n            }\n\n            if (dbcsCode == UNASSIGNED && this.gb18030) {\n                // Use GB18030 algorithm to find character(s) to write.\n                var idx = findIdx(this.gb18030.uChars, uCode);\n                if (idx != -1) {\n                    var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]);\n                    newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600;\n                    newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260;\n                    newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10;\n                    newBuf[j++] = 0x30 + dbcsCode;\n                    continue;\n                }\n            }\n        }\n\n        // 3. Write dbcsCode character.\n        if (dbcsCode === UNASSIGNED)\n            dbcsCode = this.defaultCharSingleByte;\n        \n        if (dbcsCode < 0x100) {\n            newBuf[j++] = dbcsCode;\n        }\n        else if (dbcsCode < 0x10000) {\n            newBuf[j++] = dbcsCode >> 8;   // high byte\n            newBuf[j++] = dbcsCode & 0xFF; // low byte\n        }\n        else {\n            newBuf[j++] = dbcsCode >> 16;\n            newBuf[j++] = (dbcsCode >> 8) & 0xFF;\n            newBuf[j++] = dbcsCode & 0xFF;\n        }\n    }\n\n    this.seqObj = seqObj;\n    this.leadSurrogate = leadSurrogate;\n    return newBuf.slice(0, j);\n}\n\nDBCSEncoder.prototype.end = function() {\n    if (this.leadSurrogate === -1 && this.seqObj === undefined)\n        return; // All clean. Most often case.\n\n    var newBuf = Buffer.alloc(10), j = 0;\n\n    if (this.seqObj) { // We\'re in the sequence.\n        var dbcsCode = this.seqObj[DEF_CHAR];\n        if (dbcsCode !== undefined) { // Write beginning of the sequence.\n            if (dbcsCode < 0x100) {\n                newBuf[j++] = dbcsCode;\n            }\n            else {\n                newBuf[j++] = dbcsCode >> 8;   // high byte\n                newBuf[j++] = dbcsCode & 0xFF; // low byte\n            }\n        } else {\n            // See todo above.\n        }\n        this.seqObj = undefined;\n    }\n\n    if (this.leadSurrogate !== -1) {\n        // Incomplete surrogate pair - only lead surrogate found.\n        newBuf[j++] = this.defaultCharSingleByte;\n        this.leadSurrogate = -1;\n    }\n    \n    return newBuf.slice(0, j);\n}\n\n// Export for testing\nDBCSEncoder.prototype.findIdx = findIdx;\n\n\n// == Decoder ==================================================================\n\nfunction DBCSDecoder(options, codec) {\n    // Decoder state\n    this.nodeIdx = 0;\n    this.prevBuf = Buffer.alloc(0);\n\n    // Static data\n    this.decodeTables = codec.decodeTables;\n    this.decodeTableSeq = codec.decodeTableSeq;\n    this.defaultCharUnicode = codec.defaultCharUnicode;\n    this.gb18030 = codec.gb18030;\n}\n\nDBCSDecoder.prototype.write = function(buf) {\n    var newBuf = Buffer.alloc(buf.length*2),\n        nodeIdx = this.nodeIdx, \n        prevBuf = this.prevBuf, prevBufOffset = this.prevBuf.length,\n        seqStart = -this.prevBuf.length, // idx of the start of current parsed sequence.\n        uCode;\n\n    if (prevBufOffset > 0) // Make prev buf overlap a little to make it easier to slice later.\n        prevBuf = Buffer.concat([prevBuf, buf.slice(0, 10)]);\n    \n    for (var i = 0, j = 0; i < buf.length; i++) {\n        var curByte = (i >= 0) ? buf[i] : prevBuf[i + prevBufOffset];\n\n        // Lookup in current trie node.\n        var uCode = this.decodeTables[nodeIdx][curByte];\n\n        if (uCode >= 0) { \n            // Normal character, just use it.\n        }\n        else if (uCode === UNASSIGNED) { // Unknown char.\n            // TODO: Callback with seq.\n            //var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset);\n            i = seqStart; // Try to parse again, after skipping first byte of the sequence (\'i\' will be incremented by \'for\' cycle).\n            uCode = this.defaultCharUnicode.charCodeAt(0);\n        }\n        else if (uCode === GB18030_CODE) {\n            var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset);\n            var ptr = (curSeq[0]-0x81)*12600 + (curSeq[1]-0x30)*1260 + (curSeq[2]-0x81)*10 + (curSeq[3]-0x30);\n            var idx = findIdx(this.gb18030.gbChars, ptr);\n            uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx];\n        }\n        else if (uCode <= NODE_START) { // Go to next trie node.\n            nodeIdx = NODE_START - uCode;\n            continue;\n        }\n        else if (uCode <= SEQ_START) { // Output a sequence of chars.\n            var seq = this.decodeTableSeq[SEQ_START - uCode];\n            for (var k = 0; k < seq.length - 1; k++) {\n                uCode = seq[k];\n                newBuf[j++] = uCode & 0xFF;\n                newBuf[j++] = uCode >> 8;\n            }\n            uCode = seq[seq.length-1];\n        }\n        else\n            throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte);\n\n        // Write the character to buffer, handling higher planes using surrogate pair.\n        if (uCode > 0xFFFF) { \n            uCode -= 0x10000;\n            var uCodeLead = 0xD800 + Math.floor(uCode / 0x400);\n            newBuf[j++] = uCodeLead & 0xFF;\n            newBuf[j++] = uCodeLead >> 8;\n\n            uCode = 0xDC00 + uCode % 0x400;\n        }\n        newBuf[j++] = uCode & 0xFF;\n        newBuf[j++] = uCode >> 8;\n\n        // Reset trie node.\n        nodeIdx = 0; seqStart = i+1;\n    }\n\n    this.nodeIdx = nodeIdx;\n    this.prevBuf = (seqStart >= 0) ? buf.slice(seqStart) : prevBuf.slice(seqStart + prevBufOffset);\n    return newBuf.slice(0, j).toString(\'ucs2\');\n}\n\nDBCSDecoder.prototype.end = function() {\n    var ret = \'\';\n\n    // Try to parse all remaining chars.\n    while (this.prevBuf.length > 0) {\n        // Skip 1 character in the buffer.\n        ret += this.defaultCharUnicode;\n        var buf = this.prevBuf.slice(1);\n\n        // Parse remaining as usual.\n        this.prevBuf = Buffer.alloc(0);\n        this.nodeIdx = 0;\n        if (buf.length > 0)\n            ret += this.write(buf);\n    }\n\n    this.nodeIdx = 0;\n    return ret;\n}\n\n// Binary search for GB18030. Returns largest i such that table[i] <= val.\nfunction findIdx(table, val) {\n    if (table[0] > val)\n        return -1;\n\n    var l = 0, r = table.length;\n    while (l < r-1) { // always table[l] <= val < table[r]\n        var mid = l + Math.floor((r-l+1)/2);\n        if (table[mid] <= val)\n            l = mid;\n        else\n            r = mid;\n    }\n    return l;\n}\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/raw-body/node_modules/iconv-lite/encodings/dbcs-codec.js?')},"./node_modules/raw-body/node_modules/iconv-lite/encodings/dbcs-data.js":
/*!******************************************************************************!*\
  !*** ./node_modules/raw-body/node_modules/iconv-lite/encodings/dbcs-data.js ***!
  \******************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n// Description of supported double byte encodings and aliases.\n// Tables are not require()-d until they are needed to speed up library load.\n// require()-s are direct to support Browserify.\n\nmodule.exports = {\n    \n    // == Japanese/ShiftJIS ====================================================\n    // All japanese encodings are based on JIS X set of standards:\n    // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF.\n    // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. \n    //              Has several variations in 1978, 1983, 1990 and 1997.\n    // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.\n    // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.\n    //              2 planes, first is superset of 0208, second - revised 0212.\n    //              Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)\n\n    // Byte encodings are:\n    //  * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte\n    //               encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.\n    //               Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.\n    //  * EUC-JP:    Up to 3 bytes per character. Used mostly on *nixes.\n    //               0x00-0x7F       - lower part of 0201\n    //               0x8E, 0xA1-0xDF - upper part of 0201\n    //               (0xA1-0xFE)x2   - 0208 plane (94x94).\n    //               0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).\n    //  * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.\n    //               Used as-is in ISO2022 family.\n    //  * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, \n    //                0201-1976 Roman, 0208-1978, 0208-1983.\n    //  * ISO2022-JP-1: Adds esc seq for 0212-1990.\n    //  * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.\n    //  * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.\n    //  * ISO2022-JP-2004: Adds 0213-2004 Plane 1.\n    //\n    // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.\n    //\n    // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html\n\n    'shiftjis': {\n        type: '_dbcs',\n        table: function() { return __webpack_require__(/*! ./tables/shiftjis.json */ \"./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/shiftjis.json\") },\n        encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n        encodeSkipVals: [{from: 0xED40, to: 0xF940}],\n    },\n    'csshiftjis': 'shiftjis',\n    'mskanji': 'shiftjis',\n    'sjis': 'shiftjis',\n    'windows31j': 'shiftjis',\n    'ms31j': 'shiftjis',\n    'xsjis': 'shiftjis',\n    'windows932': 'shiftjis',\n    'ms932': 'shiftjis',\n    '932': 'shiftjis',\n    'cp932': 'shiftjis',\n\n    'eucjp': {\n        type: '_dbcs',\n        table: function() { return __webpack_require__(/*! ./tables/eucjp.json */ \"./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/eucjp.json\") },\n        encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n    },\n\n    // TODO: KDDI extension to Shift_JIS\n    // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.\n    // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.\n\n\n    // == Chinese/GBK ==========================================================\n    // http://en.wikipedia.org/wiki/GBK\n    // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder\n\n    // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936\n    'gb2312': 'cp936',\n    'gb231280': 'cp936',\n    'gb23121980': 'cp936',\n    'csgb2312': 'cp936',\n    'csiso58gb231280': 'cp936',\n    'euccn': 'cp936',\n\n    // Microsoft's CP936 is a subset and approximation of GBK.\n    'windows936': 'cp936',\n    'ms936': 'cp936',\n    '936': 'cp936',\n    'cp936': {\n        type: '_dbcs',\n        table: function() { return __webpack_require__(/*! ./tables/cp936.json */ \"./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp936.json\") },\n    },\n\n    // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.\n    'gbk': {\n        type: '_dbcs',\n        table: function() { return (__webpack_require__(/*! ./tables/cp936.json */ \"./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp936.json\").concat)(__webpack_require__(/*! ./tables/gbk-added.json */ \"./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/gbk-added.json\")) },\n    },\n    'xgbk': 'gbk',\n    'isoir58': 'gbk',\n\n    // GB18030 is an algorithmic extension of GBK.\n    // Main source: https://www.w3.org/TR/encoding/#gbk-encoder\n    // http://icu-project.org/docs/papers/gb18030.html\n    // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml\n    // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0\n    'gb18030': {\n        type: '_dbcs',\n        table: function() { return (__webpack_require__(/*! ./tables/cp936.json */ \"./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp936.json\").concat)(__webpack_require__(/*! ./tables/gbk-added.json */ \"./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/gbk-added.json\")) },\n        gb18030: function() { return __webpack_require__(/*! ./tables/gb18030-ranges.json */ \"./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json\") },\n        encodeSkipVals: [0x80],\n        encodeAdd: {'€': 0xA2E3},\n    },\n\n    'chinese': 'gb18030',\n\n\n    // == Korean ===============================================================\n    // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.\n    'windows949': 'cp949',\n    'ms949': 'cp949',\n    '949': 'cp949',\n    'cp949': {\n        type: '_dbcs',\n        table: function() { return __webpack_require__(/*! ./tables/cp949.json */ \"./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp949.json\") },\n    },\n\n    'cseuckr': 'cp949',\n    'csksc56011987': 'cp949',\n    'euckr': 'cp949',\n    'isoir149': 'cp949',\n    'korean': 'cp949',\n    'ksc56011987': 'cp949',\n    'ksc56011989': 'cp949',\n    'ksc5601': 'cp949',\n\n\n    // == Big5/Taiwan/Hong Kong ================================================\n    // There are lots of tables for Big5 and cp950. Please see the following links for history:\n    // http://moztw.org/docs/big5/  http://www.haible.de/bruno/charsets/conversion-tables/Big5.html\n    // Variations, in roughly number of defined chars:\n    //  * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT\n    //  * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/\n    //  * Big5-2003 (Taiwan standard) almost superset of cp950.\n    //  * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.\n    //  * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. \n    //    many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.\n    //    Plus, it has 4 combining sequences.\n    //    Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299\n    //    because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.\n    //    Implementations are not consistent within browsers; sometimes labeled as just big5.\n    //    MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.\n    //    Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31\n    //    In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.\n    //    Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt\n    //                   http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt\n    // \n    // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder\n    // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.\n\n    'windows950': 'cp950',\n    'ms950': 'cp950',\n    '950': 'cp950',\n    'cp950': {\n        type: '_dbcs',\n        table: function() { return __webpack_require__(/*! ./tables/cp950.json */ \"./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp950.json\") },\n    },\n\n    // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.\n    'big5': 'big5hkscs',\n    'big5hkscs': {\n        type: '_dbcs',\n        table: function() { return (__webpack_require__(/*! ./tables/cp950.json */ \"./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp950.json\").concat)(__webpack_require__(/*! ./tables/big5-added.json */ \"./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/big5-added.json\")) },\n        encodeSkipVals: [0xa2cc],\n    },\n\n    'cnbig5': 'big5hkscs',\n    'csbig5': 'big5hkscs',\n    'xxbig5': 'big5hkscs',\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/raw-body/node_modules/iconv-lite/encodings/dbcs-data.js?")},"./node_modules/raw-body/node_modules/iconv-lite/encodings/index.js":
/*!**************************************************************************!*\
  !*** ./node_modules/raw-body/node_modules/iconv-lite/encodings/index.js ***!
  \**************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n\n// Update this array if you add/rename/remove files in this directory.\n// We support Browserify by skipping automatic module discovery and requiring modules directly.\nvar modules = [\n    __webpack_require__(/*! ./internal */ "./node_modules/raw-body/node_modules/iconv-lite/encodings/internal.js"),\n    __webpack_require__(/*! ./utf16 */ "./node_modules/raw-body/node_modules/iconv-lite/encodings/utf16.js"),\n    __webpack_require__(/*! ./utf7 */ "./node_modules/raw-body/node_modules/iconv-lite/encodings/utf7.js"),\n    __webpack_require__(/*! ./sbcs-codec */ "./node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-codec.js"),\n    __webpack_require__(/*! ./sbcs-data */ "./node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-data.js"),\n    __webpack_require__(/*! ./sbcs-data-generated */ "./node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-data-generated.js"),\n    __webpack_require__(/*! ./dbcs-codec */ "./node_modules/raw-body/node_modules/iconv-lite/encodings/dbcs-codec.js"),\n    __webpack_require__(/*! ./dbcs-data */ "./node_modules/raw-body/node_modules/iconv-lite/encodings/dbcs-data.js"),\n];\n\n// Put all encoding/alias/codec definitions to single object and export it. \nfor (var i = 0; i < modules.length; i++) {\n    var module = modules[i];\n    for (var enc in module)\n        if (Object.prototype.hasOwnProperty.call(module, enc))\n            exports[enc] = module[enc];\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/raw-body/node_modules/iconv-lite/encodings/index.js?')},"./node_modules/raw-body/node_modules/iconv-lite/encodings/internal.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/raw-body/node_modules/iconv-lite/encodings/internal.js ***!
  \*****************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\nvar Buffer = (__webpack_require__(/*! safer-buffer */ "./node_modules/safer-buffer/safer.js").Buffer);\n\n// Export Node.js internal encodings.\n\nmodule.exports = {\n    // Encodings\n    utf8:   { type: "_internal", bomAware: true},\n    cesu8:  { type: "_internal", bomAware: true},\n    unicode11utf8: "utf8",\n\n    ucs2:   { type: "_internal", bomAware: true},\n    utf16le: "ucs2",\n\n    binary: { type: "_internal" },\n    base64: { type: "_internal" },\n    hex:    { type: "_internal" },\n\n    // Codec.\n    _internal: InternalCodec,\n};\n\n//------------------------------------------------------------------------------\n\nfunction InternalCodec(codecOptions, iconv) {\n    this.enc = codecOptions.encodingName;\n    this.bomAware = codecOptions.bomAware;\n\n    if (this.enc === "base64")\n        this.encoder = InternalEncoderBase64;\n    else if (this.enc === "cesu8") {\n        this.enc = "utf8"; // Use utf8 for decoding.\n        this.encoder = InternalEncoderCesu8;\n\n        // Add decoder for versions of Node not supporting CESU-8\n        if (Buffer.from(\'eda0bdedb2a9\', \'hex\').toString() !== \'💩\') {\n            this.decoder = InternalDecoderCesu8;\n            this.defaultCharUnicode = iconv.defaultCharUnicode;\n        }\n    }\n}\n\nInternalCodec.prototype.encoder = InternalEncoder;\nInternalCodec.prototype.decoder = InternalDecoder;\n\n//------------------------------------------------------------------------------\n\n// We use node.js internal decoder. Its signature is the same as ours.\nvar StringDecoder = (__webpack_require__(/*! string_decoder */ "string_decoder").StringDecoder);\n\nif (!StringDecoder.prototype.end) // Node v0.8 doesn\'t have this method.\n    StringDecoder.prototype.end = function() {};\n\n\nfunction InternalDecoder(options, codec) {\n    StringDecoder.call(this, codec.enc);\n}\n\nInternalDecoder.prototype = StringDecoder.prototype;\n\n\n//------------------------------------------------------------------------------\n// Encoder is mostly trivial\n\nfunction InternalEncoder(options, codec) {\n    this.enc = codec.enc;\n}\n\nInternalEncoder.prototype.write = function(str) {\n    return Buffer.from(str, this.enc);\n}\n\nInternalEncoder.prototype.end = function() {\n}\n\n\n//------------------------------------------------------------------------------\n// Except base64 encoder, which must keep its state.\n\nfunction InternalEncoderBase64(options, codec) {\n    this.prevStr = \'\';\n}\n\nInternalEncoderBase64.prototype.write = function(str) {\n    str = this.prevStr + str;\n    var completeQuads = str.length - (str.length % 4);\n    this.prevStr = str.slice(completeQuads);\n    str = str.slice(0, completeQuads);\n\n    return Buffer.from(str, "base64");\n}\n\nInternalEncoderBase64.prototype.end = function() {\n    return Buffer.from(this.prevStr, "base64");\n}\n\n\n//------------------------------------------------------------------------------\n// CESU-8 encoder is also special.\n\nfunction InternalEncoderCesu8(options, codec) {\n}\n\nInternalEncoderCesu8.prototype.write = function(str) {\n    var buf = Buffer.alloc(str.length * 3), bufIdx = 0;\n    for (var i = 0; i < str.length; i++) {\n        var charCode = str.charCodeAt(i);\n        // Naive implementation, but it works because CESU-8 is especially easy\n        // to convert from UTF-16 (which all JS strings are encoded in).\n        if (charCode < 0x80)\n            buf[bufIdx++] = charCode;\n        else if (charCode < 0x800) {\n            buf[bufIdx++] = 0xC0 + (charCode >>> 6);\n            buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n        }\n        else { // charCode will always be < 0x10000 in javascript.\n            buf[bufIdx++] = 0xE0 + (charCode >>> 12);\n            buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f);\n            buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n        }\n    }\n    return buf.slice(0, bufIdx);\n}\n\nInternalEncoderCesu8.prototype.end = function() {\n}\n\n//------------------------------------------------------------------------------\n// CESU-8 decoder is not implemented in Node v4.0+\n\nfunction InternalDecoderCesu8(options, codec) {\n    this.acc = 0;\n    this.contBytes = 0;\n    this.accBytes = 0;\n    this.defaultCharUnicode = codec.defaultCharUnicode;\n}\n\nInternalDecoderCesu8.prototype.write = function(buf) {\n    var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, \n        res = \'\';\n    for (var i = 0; i < buf.length; i++) {\n        var curByte = buf[i];\n        if ((curByte & 0xC0) !== 0x80) { // Leading byte\n            if (contBytes > 0) { // Previous code is invalid\n                res += this.defaultCharUnicode;\n                contBytes = 0;\n            }\n\n            if (curByte < 0x80) { // Single-byte code\n                res += String.fromCharCode(curByte);\n            } else if (curByte < 0xE0) { // Two-byte code\n                acc = curByte & 0x1F;\n                contBytes = 1; accBytes = 1;\n            } else if (curByte < 0xF0) { // Three-byte code\n                acc = curByte & 0x0F;\n                contBytes = 2; accBytes = 1;\n            } else { // Four or more are not supported for CESU-8.\n                res += this.defaultCharUnicode;\n            }\n        } else { // Continuation byte\n            if (contBytes > 0) { // We\'re waiting for it.\n                acc = (acc << 6) | (curByte & 0x3f);\n                contBytes--; accBytes++;\n                if (contBytes === 0) {\n                    // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80)\n                    if (accBytes === 2 && acc < 0x80 && acc > 0)\n                        res += this.defaultCharUnicode;\n                    else if (accBytes === 3 && acc < 0x800)\n                        res += this.defaultCharUnicode;\n                    else\n                        // Actually add character.\n                        res += String.fromCharCode(acc);\n                }\n            } else { // Unexpected continuation byte\n                res += this.defaultCharUnicode;\n            }\n        }\n    }\n    this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes;\n    return res;\n}\n\nInternalDecoderCesu8.prototype.end = function() {\n    var res = 0;\n    if (this.contBytes > 0)\n        res += this.defaultCharUnicode;\n    return res;\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/raw-body/node_modules/iconv-lite/encodings/internal.js?')},"./node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-codec.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-codec.js ***!
  \*******************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nvar Buffer = (__webpack_require__(/*! safer-buffer */ \"./node_modules/safer-buffer/safer.js\").Buffer);\n\n// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that\n// correspond to encoded bytes (if 128 - then lower half is ASCII). \n\nexports._sbcs = SBCSCodec;\nfunction SBCSCodec(codecOptions, iconv) {\n    if (!codecOptions)\n        throw new Error(\"SBCS codec is called without the data.\")\n    \n    // Prepare char buffer for decoding.\n    if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256))\n        throw new Error(\"Encoding '\"+codecOptions.type+\"' has incorrect 'chars' (must be of len 128 or 256)\");\n    \n    if (codecOptions.chars.length === 128) {\n        var asciiString = \"\";\n        for (var i = 0; i < 128; i++)\n            asciiString += String.fromCharCode(i);\n        codecOptions.chars = asciiString + codecOptions.chars;\n    }\n\n    this.decodeBuf = Buffer.from(codecOptions.chars, 'ucs2');\n    \n    // Encoding buffer.\n    var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0));\n\n    for (var i = 0; i < codecOptions.chars.length; i++)\n        encodeBuf[codecOptions.chars.charCodeAt(i)] = i;\n\n    this.encodeBuf = encodeBuf;\n}\n\nSBCSCodec.prototype.encoder = SBCSEncoder;\nSBCSCodec.prototype.decoder = SBCSDecoder;\n\n\nfunction SBCSEncoder(options, codec) {\n    this.encodeBuf = codec.encodeBuf;\n}\n\nSBCSEncoder.prototype.write = function(str) {\n    var buf = Buffer.alloc(str.length);\n    for (var i = 0; i < str.length; i++)\n        buf[i] = this.encodeBuf[str.charCodeAt(i)];\n    \n    return buf;\n}\n\nSBCSEncoder.prototype.end = function() {\n}\n\n\nfunction SBCSDecoder(options, codec) {\n    this.decodeBuf = codec.decodeBuf;\n}\n\nSBCSDecoder.prototype.write = function(buf) {\n    // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.\n    var decodeBuf = this.decodeBuf;\n    var newBuf = Buffer.alloc(buf.length*2);\n    var idx1 = 0, idx2 = 0;\n    for (var i = 0; i < buf.length; i++) {\n        idx1 = buf[i]*2; idx2 = i*2;\n        newBuf[idx2] = decodeBuf[idx1];\n        newBuf[idx2+1] = decodeBuf[idx1+1];\n    }\n    return newBuf.toString('ucs2');\n}\n\nSBCSDecoder.prototype.end = function() {\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-codec.js?")},"./node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-data-generated.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-data-generated.js ***!
  \****************************************************************************************/module=>{"use strict";eval('\n\n// Generated data for sbcs codec. Don\'t edit manually. Regenerate using generation/gen-sbcs.js script.\nmodule.exports = {\n  "437": "cp437",\n  "737": "cp737",\n  "775": "cp775",\n  "850": "cp850",\n  "852": "cp852",\n  "855": "cp855",\n  "856": "cp856",\n  "857": "cp857",\n  "858": "cp858",\n  "860": "cp860",\n  "861": "cp861",\n  "862": "cp862",\n  "863": "cp863",\n  "864": "cp864",\n  "865": "cp865",\n  "866": "cp866",\n  "869": "cp869",\n  "874": "windows874",\n  "922": "cp922",\n  "1046": "cp1046",\n  "1124": "cp1124",\n  "1125": "cp1125",\n  "1129": "cp1129",\n  "1133": "cp1133",\n  "1161": "cp1161",\n  "1162": "cp1162",\n  "1163": "cp1163",\n  "1250": "windows1250",\n  "1251": "windows1251",\n  "1252": "windows1252",\n  "1253": "windows1253",\n  "1254": "windows1254",\n  "1255": "windows1255",\n  "1256": "windows1256",\n  "1257": "windows1257",\n  "1258": "windows1258",\n  "28591": "iso88591",\n  "28592": "iso88592",\n  "28593": "iso88593",\n  "28594": "iso88594",\n  "28595": "iso88595",\n  "28596": "iso88596",\n  "28597": "iso88597",\n  "28598": "iso88598",\n  "28599": "iso88599",\n  "28600": "iso885910",\n  "28601": "iso885911",\n  "28603": "iso885913",\n  "28604": "iso885914",\n  "28605": "iso885915",\n  "28606": "iso885916",\n  "windows874": {\n    "type": "_sbcs",\n    "chars": "€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"\n  },\n  "win874": "windows874",\n  "cp874": "windows874",\n  "windows1250": {\n    "type": "_sbcs",\n    "chars": "€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙"\n  },\n  "win1250": "windows1250",\n  "cp1250": "windows1250",\n  "windows1251": {\n    "type": "_sbcs",\n    "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"\n  },\n  "win1251": "windows1251",\n  "cp1251": "windows1251",\n  "windows1252": {\n    "type": "_sbcs",\n    "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"\n  },\n  "win1252": "windows1252",\n  "cp1252": "windows1252",\n  "windows1253": {\n    "type": "_sbcs",\n    "chars": "€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�"\n  },\n  "win1253": "windows1253",\n  "cp1253": "windows1253",\n  "windows1254": {\n    "type": "_sbcs",\n    "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ"\n  },\n  "win1254": "windows1254",\n  "cp1254": "windows1254",\n  "windows1255": {\n    "type": "_sbcs",\n    "chars": "€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�"\n  },\n  "win1255": "windows1255",\n  "cp1255": "windows1255",\n  "windows1256": {\n    "type": "_sbcs",\n    "chars": "€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے"\n  },\n  "win1256": "windows1256",\n  "cp1256": "windows1256",\n  "windows1257": {\n    "type": "_sbcs",\n    "chars": "€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙"\n  },\n  "win1257": "windows1257",\n  "cp1257": "windows1257",\n  "windows1258": {\n    "type": "_sbcs",\n    "chars": "€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"\n  },\n  "win1258": "windows1258",\n  "cp1258": "windows1258",\n  "iso88591": {\n    "type": "_sbcs",\n    "chars": " ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"\n  },\n  "cp28591": "iso88591",\n  "iso88592": {\n    "type": "_sbcs",\n    "chars": " Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙"\n  },\n  "cp28592": "iso88592",\n  "iso88593": {\n    "type": "_sbcs",\n    "chars": " Ħ˘£¤�Ĥ§¨İŞĞĴ­�Ż°ħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙"\n  },\n  "cp28593": "iso88593",\n  "iso88594": {\n    "type": "_sbcs",\n    "chars": " ĄĸŖ¤ĨĻ§¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩļˇ¸šēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖ×ØŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙"\n  },\n  "cp28594": "iso88594",\n  "iso88595": {\n    "type": "_sbcs",\n    "chars": " ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ"\n  },\n  "cp28595": "iso88595",\n  "iso88596": {\n    "type": "_sbcs",\n    "chars": " ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������"\n  },\n  "cp28596": "iso88596",\n  "iso88597": {\n    "type": "_sbcs",\n    "chars": " ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�"\n  },\n  "cp28597": "iso88597",\n  "iso88598": {\n    "type": "_sbcs",\n    "chars": " �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�"\n  },\n  "cp28598": "iso88598",\n  "iso88599": {\n    "type": "_sbcs",\n    "chars": " ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ"\n  },\n  "cp28599": "iso88599",\n  "iso885910": {\n    "type": "_sbcs",\n    "chars": " ĄĒĢĪĨĶ§ĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ"\n  },\n  "cp28600": "iso885910",\n  "iso885911": {\n    "type": "_sbcs",\n    "chars": " กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"\n  },\n  "cp28601": "iso885911",\n  "iso885913": {\n    "type": "_sbcs",\n    "chars": " ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’"\n  },\n  "cp28603": "iso885913",\n  "iso885914": {\n    "type": "_sbcs",\n    "chars": " Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ"\n  },\n  "cp28604": "iso885914",\n  "iso885915": {\n    "type": "_sbcs",\n    "chars": " ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"\n  },\n  "cp28605": "iso885915",\n  "iso885916": {\n    "type": "_sbcs",\n    "chars": " ĄąŁ€„Š§š©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ"\n  },\n  "cp28606": "iso885916",\n  "cp437": {\n    "type": "_sbcs",\n    "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñÑªº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "\n  },\n  "ibm437": "cp437",\n  "csibm437": "cp437",\n  "cp737": {\n    "type": "_sbcs",\n    "chars": "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ "\n  },\n  "ibm737": "cp737",\n  "csibm737": "cp737",\n  "cp775": {\n    "type": "_sbcs",\n    "chars": "ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ "\n  },\n  "ibm775": "cp775",\n  "csibm775": "cp775",\n  "cp850": {\n    "type": "_sbcs",\n    "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñÑªº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýÝ¯´­±‗¾¶§÷¸°¨·¹³²■ "\n  },\n  "ibm850": "cp850",\n  "csibm850": "cp850",\n  "cp852": {\n    "type": "_sbcs",\n    "chars": "ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘę¬źČş«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ "\n  },\n  "ibm852": "cp852",\n  "csibm852": "cp852",\n  "cp855": {\n    "type": "_sbcs",\n    "chars": "ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ "\n  },\n  "ibm855": "cp855",\n  "csibm855": "cp855",\n  "cp856": {\n    "type": "_sbcs",\n    "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´­±‗¾¶§÷¸°¨·¹³²■ "\n  },\n  "ibm856": "cp856",\n  "csibm856": "cp856",\n  "cp857": {\n    "type": "_sbcs",\n    "chars": "ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞğ¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ "\n  },\n  "ibm857": "cp857",\n  "csibm857": "cp857",\n  "cp858": {\n    "type": "_sbcs",\n    "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñÑªº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýÝ¯´­±‗¾¶§÷¸°¨·¹³²■ "\n  },\n  "ibm858": "cp858",\n  "csibm858": "cp858",\n  "cp860": {\n    "type": "_sbcs",\n    "chars": "ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñÑªº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "\n  },\n  "ibm860": "cp860",\n  "csibm860": "cp860",\n  "cp861": {\n    "type": "_sbcs",\n    "chars": "ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "\n  },\n  "ibm861": "cp861",\n  "csibm861": "cp861",\n  "cp862": {\n    "type": "_sbcs",\n    "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñÑªº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "\n  },\n  "ibm862": "cp862",\n  "csibm862": "cp862",\n  "cp863": {\n    "type": "_sbcs",\n    "chars": "ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "\n  },\n  "ibm863": "cp863",\n  "csibm863": "cp863",\n  "cp864": {\n    "type": "_sbcs",\n    "chars": "\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\"#$٪&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�"\n  },\n  "ibm864": "cp864",\n  "csibm864": "cp864",\n  "cp865": {\n    "type": "_sbcs",\n    "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñÑªº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "\n  },\n  "ibm865": "cp865",\n  "csibm865": "cp865",\n  "cp866": {\n    "type": "_sbcs",\n    "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ "\n  },\n  "ibm866": "cp866",\n  "csibm866": "cp866",\n  "cp869": {\n    "type": "_sbcs",\n    "chars": "������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ "\n  },\n  "ibm869": "cp869",\n  "csibm869": "cp869",\n  "cp922": {\n    "type": "_sbcs",\n    "chars": " ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖ×ØÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ"\n  },\n  "ibm922": "cp922",\n  "csibm922": "cp922",\n  "cp1046": {\n    "type": "_sbcs",\n    "chars": "ﺈ×÷ﹱ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�"\n  },\n  "ibm1046": "cp1046",\n  "csibm1046": "cp1046",\n  "cp1124": {\n    "type": "_sbcs",\n    "chars": " ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ"\n  },\n  "ibm1124": "cp1124",\n  "csibm1124": "cp1124",\n  "cp1125": {\n    "type": "_sbcs",\n    "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ "\n  },\n  "ibm1125": "cp1125",\n  "csibm1125": "cp1125",\n  "cp1129": {\n    "type": "_sbcs",\n    "chars": " ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"\n  },\n  "ibm1129": "cp1129",\n  "csibm1129": "cp1129",\n  "cp1133": {\n    "type": "_sbcs",\n    "chars": " ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�"\n  },\n  "ibm1133": "cp1133",\n  "csibm1133": "cp1133",\n  "cp1161": {\n    "type": "_sbcs",\n    "chars": "��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ "\n  },\n  "ibm1161": "cp1161",\n  "csibm1161": "cp1161",\n  "cp1162": {\n    "type": "_sbcs",\n    "chars": "€…‘’“”•–— กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"\n  },\n  "ibm1162": "cp1162",\n  "csibm1162": "cp1162",\n  "cp1163": {\n    "type": "_sbcs",\n    "chars": " ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"\n  },\n  "ibm1163": "cp1163",\n  "csibm1163": "cp1163",\n  "maccroatian": {\n    "type": "_sbcs",\n    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈Ć«Č… ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ"\n  },\n  "maccyrillic": {\n    "type": "_sbcs",\n    "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"\n  },\n  "macgreek": {\n    "type": "_sbcs",\n    "chars": "Ä¹²É³ÖÜ΅àâä΄¨çéèêë£™îï•½‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�"\n  },\n  "maciceland": {\n    "type": "_sbcs",\n    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüÝ°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"\n  },\n  "macroman": {\n    "type": "_sbcs",\n    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›ﬁﬂ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"\n  },\n  "macromania": {\n    "type": "_sbcs",\n    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"\n  },\n  "macthai": {\n    "type": "_sbcs",\n    "chars": "«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู\ufeff​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����"\n  },\n  "macturkish": {\n    "type": "_sbcs",\n    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ"\n  },\n  "macukraine": {\n    "type": "_sbcs",\n    "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"\n  },\n  "koi8r": {\n    "type": "_sbcs",\n    "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"\n  },\n  "koi8u": {\n    "type": "_sbcs",\n    "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"\n  },\n  "koi8ru": {\n    "type": "_sbcs",\n    "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"\n  },\n  "koi8t": {\n    "type": "_sbcs",\n    "chars": "қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"\n  },\n  "armscii8": {\n    "type": "_sbcs",\n    "chars": " �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�"\n  },\n  "rk1048": {\n    "type": "_sbcs",\n    "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"\n  },\n  "tcvn": {\n    "type": "_sbcs",\n    "chars": "\\u0000ÚỤ\\u0003ỪỬỮ\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010ỨỰỲỶỸÝỴ\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ"\n  },\n  "georgianacademy": {\n    "type": "_sbcs",\n    "chars": "‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ"\n  },\n  "georgianps": {\n    "type": "_sbcs",\n    "chars": "‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"\n  },\n  "pt154": {\n    "type": "_sbcs",\n    "chars": "ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"\n  },\n  "viscii": {\n    "type": "_sbcs",\n    "chars": "\\u0000\\u0001Ẳ\\u0003\\u0004ẴẪ\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Ỷ\\u0015\\u0016\\u0017\\u0018Ỹ\\u001a\\u001b\\u001c\\u001dỴ\\u001f !\\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ"\n  },\n  "iso646cn": {\n    "type": "_sbcs",\n    "chars": "\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\"#¥%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"\n  },\n  "iso646jp": {\n    "type": "_sbcs",\n    "chars": "\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"\n  },\n  "hproman8": {\n    "type": "_sbcs",\n    "chars": " ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�"\n  },\n  "macintosh": {\n    "type": "_sbcs",\n    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›ﬁﬂ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"\n  },\n  "ascii": {\n    "type": "_sbcs",\n    "chars": "��������������������������������������������������������������������������������������������������������������������������������"\n  },\n  "tis620": {\n    "type": "_sbcs",\n    "chars": "���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"\n  }\n}\n\n//# sourceURL=webpack://txadmin/./node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-data-generated.js?')},"./node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-data.js":
/*!******************************************************************************!*\
  !*** ./node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-data.js ***!
  \******************************************************************************/module=>{"use strict";eval('\n\n// Manually added data to be used by sbcs codec in addition to generated one.\n\nmodule.exports = {\n    // Not supported by iconv, not sure why.\n    "10029": "maccenteuro",\n    "maccenteuro": {\n        "type": "_sbcs",\n        "chars": "ÄĀāÉĄÖÜáąČäčĆćéŹźĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņŃ¬√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ"\n    },\n\n    "808": "cp808",\n    "ibm808": "cp808",\n    "cp808": {\n        "type": "_sbcs",\n        "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ "\n    },\n\n    "mik": {\n        "type": "_sbcs",\n        "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя└┴┬├─┼╣║╚╔╩╦╠═╬┐░▒▓│┤№§╗╝┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "\n    },\n\n    // Aliases of generated encodings.\n    "ascii8bit": "ascii",\n    "usascii": "ascii",\n    "ansix34": "ascii",\n    "ansix341968": "ascii",\n    "ansix341986": "ascii",\n    "csascii": "ascii",\n    "cp367": "ascii",\n    "ibm367": "ascii",\n    "isoir6": "ascii",\n    "iso646us": "ascii",\n    "iso646irv": "ascii",\n    "us": "ascii",\n\n    "latin1": "iso88591",\n    "latin2": "iso88592",\n    "latin3": "iso88593",\n    "latin4": "iso88594",\n    "latin5": "iso88599",\n    "latin6": "iso885910",\n    "latin7": "iso885913",\n    "latin8": "iso885914",\n    "latin9": "iso885915",\n    "latin10": "iso885916",\n\n    "csisolatin1": "iso88591",\n    "csisolatin2": "iso88592",\n    "csisolatin3": "iso88593",\n    "csisolatin4": "iso88594",\n    "csisolatincyrillic": "iso88595",\n    "csisolatinarabic": "iso88596",\n    "csisolatingreek" : "iso88597",\n    "csisolatinhebrew": "iso88598",\n    "csisolatin5": "iso88599",\n    "csisolatin6": "iso885910",\n\n    "l1": "iso88591",\n    "l2": "iso88592",\n    "l3": "iso88593",\n    "l4": "iso88594",\n    "l5": "iso88599",\n    "l6": "iso885910",\n    "l7": "iso885913",\n    "l8": "iso885914",\n    "l9": "iso885915",\n    "l10": "iso885916",\n\n    "isoir14": "iso646jp",\n    "isoir57": "iso646cn",\n    "isoir100": "iso88591",\n    "isoir101": "iso88592",\n    "isoir109": "iso88593",\n    "isoir110": "iso88594",\n    "isoir144": "iso88595",\n    "isoir127": "iso88596",\n    "isoir126": "iso88597",\n    "isoir138": "iso88598",\n    "isoir148": "iso88599",\n    "isoir157": "iso885910",\n    "isoir166": "tis620",\n    "isoir179": "iso885913",\n    "isoir199": "iso885914",\n    "isoir203": "iso885915",\n    "isoir226": "iso885916",\n\n    "cp819": "iso88591",\n    "ibm819": "iso88591",\n\n    "cyrillic": "iso88595",\n\n    "arabic": "iso88596",\n    "arabic8": "iso88596",\n    "ecma114": "iso88596",\n    "asmo708": "iso88596",\n\n    "greek" : "iso88597",\n    "greek8" : "iso88597",\n    "ecma118" : "iso88597",\n    "elot928" : "iso88597",\n\n    "hebrew": "iso88598",\n    "hebrew8": "iso88598",\n\n    "turkish": "iso88599",\n    "turkish8": "iso88599",\n\n    "thai": "iso885911",\n    "thai8": "iso885911",\n\n    "celtic": "iso885914",\n    "celtic8": "iso885914",\n    "isoceltic": "iso885914",\n\n    "tis6200": "tis620",\n    "tis62025291": "tis620",\n    "tis62025330": "tis620",\n\n    "10000": "macroman",\n    "10006": "macgreek",\n    "10007": "maccyrillic",\n    "10079": "maciceland",\n    "10081": "macturkish",\n\n    "cspc8codepage437": "cp437",\n    "cspc775baltic": "cp775",\n    "cspc850multilingual": "cp850",\n    "cspcp852": "cp852",\n    "cspc862latinhebrew": "cp862",\n    "cpgr": "cp869",\n\n    "msee": "cp1250",\n    "mscyrl": "cp1251",\n    "msansi": "cp1252",\n    "msgreek": "cp1253",\n    "msturk": "cp1254",\n    "mshebr": "cp1255",\n    "msarab": "cp1256",\n    "winbaltrim": "cp1257",\n\n    "cp20866": "koi8r",\n    "20866": "koi8r",\n    "ibm878": "koi8r",\n    "cskoi8r": "koi8r",\n\n    "cp21866": "koi8u",\n    "21866": "koi8u",\n    "ibm1168": "koi8u",\n\n    "strk10482002": "rk1048",\n\n    "tcvn5712": "tcvn",\n    "tcvn57121": "tcvn",\n\n    "gb198880": "iso646cn",\n    "cn": "iso646cn",\n\n    "csiso14jisc6220ro": "iso646jp",\n    "jisc62201969ro": "iso646jp",\n    "jp": "iso646jp",\n\n    "cshproman8": "hproman8",\n    "r8": "hproman8",\n    "roman8": "hproman8",\n    "xroman8": "hproman8",\n    "ibm1051": "hproman8",\n\n    "mac": "macintosh",\n    "csmacintosh": "macintosh",\n};\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-data.js?')},"./node_modules/raw-body/node_modules/iconv-lite/encodings/utf16.js":
/*!**************************************************************************!*\
  !*** ./node_modules/raw-body/node_modules/iconv-lite/encodings/utf16.js ***!
  \**************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nvar Buffer = (__webpack_require__(/*! safer-buffer */ \"./node_modules/safer-buffer/safer.js\").Buffer);\n\n// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js\n\n// == UTF16-BE codec. ==========================================================\n\nexports.utf16be = Utf16BECodec;\nfunction Utf16BECodec() {\n}\n\nUtf16BECodec.prototype.encoder = Utf16BEEncoder;\nUtf16BECodec.prototype.decoder = Utf16BEDecoder;\nUtf16BECodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf16BEEncoder() {\n}\n\nUtf16BEEncoder.prototype.write = function(str) {\n    var buf = Buffer.from(str, 'ucs2');\n    for (var i = 0; i < buf.length; i += 2) {\n        var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp;\n    }\n    return buf;\n}\n\nUtf16BEEncoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf16BEDecoder() {\n    this.overflowByte = -1;\n}\n\nUtf16BEDecoder.prototype.write = function(buf) {\n    if (buf.length == 0)\n        return '';\n\n    var buf2 = Buffer.alloc(buf.length + 1),\n        i = 0, j = 0;\n\n    if (this.overflowByte !== -1) {\n        buf2[0] = buf[0];\n        buf2[1] = this.overflowByte;\n        i = 1; j = 2;\n    }\n\n    for (; i < buf.length-1; i += 2, j+= 2) {\n        buf2[j] = buf[i+1];\n        buf2[j+1] = buf[i];\n    }\n\n    this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1;\n\n    return buf2.slice(0, j).toString('ucs2');\n}\n\nUtf16BEDecoder.prototype.end = function() {\n}\n\n\n// == UTF-16 codec =============================================================\n// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic.\n// Defaults to UTF-16LE, as it's prevalent and default in Node.\n// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le\n// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'});\n\n// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false).\n\nexports.utf16 = Utf16Codec;\nfunction Utf16Codec(codecOptions, iconv) {\n    this.iconv = iconv;\n}\n\nUtf16Codec.prototype.encoder = Utf16Encoder;\nUtf16Codec.prototype.decoder = Utf16Decoder;\n\n\n// -- Encoding (pass-through)\n\nfunction Utf16Encoder(options, codec) {\n    options = options || {};\n    if (options.addBOM === undefined)\n        options.addBOM = true;\n    this.encoder = codec.iconv.getEncoder('utf-16le', options);\n}\n\nUtf16Encoder.prototype.write = function(str) {\n    return this.encoder.write(str);\n}\n\nUtf16Encoder.prototype.end = function() {\n    return this.encoder.end();\n}\n\n\n// -- Decoding\n\nfunction Utf16Decoder(options, codec) {\n    this.decoder = null;\n    this.initialBytes = [];\n    this.initialBytesLen = 0;\n\n    this.options = options || {};\n    this.iconv = codec.iconv;\n}\n\nUtf16Decoder.prototype.write = function(buf) {\n    if (!this.decoder) {\n        // Codec is not chosen yet. Accumulate initial bytes.\n        this.initialBytes.push(buf);\n        this.initialBytesLen += buf.length;\n        \n        if (this.initialBytesLen < 16) // We need more bytes to use space heuristic (see below)\n            return '';\n\n        // We have enough bytes -> detect endianness.\n        var buf = Buffer.concat(this.initialBytes),\n            encoding = detectEncoding(buf, this.options.defaultEncoding);\n        this.decoder = this.iconv.getDecoder(encoding, this.options);\n        this.initialBytes.length = this.initialBytesLen = 0;\n    }\n\n    return this.decoder.write(buf);\n}\n\nUtf16Decoder.prototype.end = function() {\n    if (!this.decoder) {\n        var buf = Buffer.concat(this.initialBytes),\n            encoding = detectEncoding(buf, this.options.defaultEncoding);\n        this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n        var res = this.decoder.write(buf),\n            trail = this.decoder.end();\n\n        return trail ? (res + trail) : res;\n    }\n    return this.decoder.end();\n}\n\nfunction detectEncoding(buf, defaultEncoding) {\n    var enc = defaultEncoding || 'utf-16le';\n\n    if (buf.length >= 2) {\n        // Check BOM.\n        if (buf[0] == 0xFE && buf[1] == 0xFF) // UTF-16BE BOM\n            enc = 'utf-16be';\n        else if (buf[0] == 0xFF && buf[1] == 0xFE) // UTF-16LE BOM\n            enc = 'utf-16le';\n        else {\n            // No BOM found. Try to deduce encoding from initial content.\n            // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon.\n            // So, we count ASCII as if it was LE or BE, and decide from that.\n            var asciiCharsLE = 0, asciiCharsBE = 0, // Counts of chars in both positions\n                _len = Math.min(buf.length - (buf.length % 2), 64); // Len is always even.\n\n            for (var i = 0; i < _len; i += 2) {\n                if (buf[i] === 0 && buf[i+1] !== 0) asciiCharsBE++;\n                if (buf[i] !== 0 && buf[i+1] === 0) asciiCharsLE++;\n            }\n\n            if (asciiCharsBE > asciiCharsLE)\n                enc = 'utf-16be';\n            else if (asciiCharsBE < asciiCharsLE)\n                enc = 'utf-16le';\n        }\n    }\n\n    return enc;\n}\n\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/raw-body/node_modules/iconv-lite/encodings/utf16.js?")},"./node_modules/raw-body/node_modules/iconv-lite/encodings/utf7.js":
/*!*************************************************************************!*\
  !*** ./node_modules/raw-body/node_modules/iconv-lite/encodings/utf7.js ***!
  \*************************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nvar Buffer = (__webpack_require__(/*! safer-buffer */ \"./node_modules/safer-buffer/safer.js\").Buffer);\n\n// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152\n// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3\n\nexports.utf7 = Utf7Codec;\nexports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7\nfunction Utf7Codec(codecOptions, iconv) {\n    this.iconv = iconv;\n};\n\nUtf7Codec.prototype.encoder = Utf7Encoder;\nUtf7Codec.prototype.decoder = Utf7Decoder;\nUtf7Codec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nvar nonDirectChars = /[^A-Za-z0-9'\\(\\),-\\.\\/:\\? \\n\\r\\t]+/g;\n\nfunction Utf7Encoder(options, codec) {\n    this.iconv = codec.iconv;\n}\n\nUtf7Encoder.prototype.write = function(str) {\n    // Naive implementation.\n    // Non-direct chars are encoded as \"+<base64>-\"; single \"+\" char is encoded as \"+-\".\n    return Buffer.from(str.replace(nonDirectChars, function(chunk) {\n        return \"+\" + (chunk === '+' ? '' : \n            this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) \n            + \"-\";\n    }.bind(this)));\n}\n\nUtf7Encoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf7Decoder(options, codec) {\n    this.iconv = codec.iconv;\n    this.inBase64 = false;\n    this.base64Accum = '';\n}\n\nvar base64Regex = /[A-Za-z0-9\\/+]/;\nvar base64Chars = [];\nfor (var i = 0; i < 256; i++)\n    base64Chars[i] = base64Regex.test(String.fromCharCode(i));\n\nvar plusChar = '+'.charCodeAt(0), \n    minusChar = '-'.charCodeAt(0),\n    andChar = '&'.charCodeAt(0);\n\nUtf7Decoder.prototype.write = function(buf) {\n    var res = \"\", lastI = 0,\n        inBase64 = this.inBase64,\n        base64Accum = this.base64Accum;\n\n    // The decoder is more involved as we must handle chunks in stream.\n\n    for (var i = 0; i < buf.length; i++) {\n        if (!inBase64) { // We're in direct mode.\n            // Write direct chars until '+'\n            if (buf[i] == plusChar) {\n                res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n                lastI = i+1;\n                inBase64 = true;\n            }\n        } else { // We decode base64.\n            if (!base64Chars[buf[i]]) { // Base64 ended.\n                if (i == lastI && buf[i] == minusChar) {// \"+-\" -> \"+\"\n                    res += \"+\";\n                } else {\n                    var b64str = base64Accum + buf.slice(lastI, i).toString();\n                    res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n                }\n\n                if (buf[i] != minusChar) // Minus is absorbed after base64.\n                    i--;\n\n                lastI = i+1;\n                inBase64 = false;\n                base64Accum = '';\n            }\n        }\n    }\n\n    if (!inBase64) {\n        res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n    } else {\n        var b64str = base64Accum + buf.slice(lastI).toString();\n\n        var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n        base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n        b64str = b64str.slice(0, canBeDecoded);\n\n        res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n    }\n\n    this.inBase64 = inBase64;\n    this.base64Accum = base64Accum;\n\n    return res;\n}\n\nUtf7Decoder.prototype.end = function() {\n    var res = \"\";\n    if (this.inBase64 && this.base64Accum.length > 0)\n        res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n    this.inBase64 = false;\n    this.base64Accum = '';\n    return res;\n}\n\n\n// UTF-7-IMAP codec.\n// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3)\n// Differences:\n//  * Base64 part is started by \"&\" instead of \"+\"\n//  * Direct characters are 0x20-0x7E, except \"&\" (0x26)\n//  * In Base64, \",\" is used instead of \"/\"\n//  * Base64 must not be used to represent direct characters.\n//  * No implicit shift back from Base64 (should always end with '-')\n//  * String must end in non-shifted position.\n//  * \"-&\" while in base64 is not allowed.\n\n\nexports.utf7imap = Utf7IMAPCodec;\nfunction Utf7IMAPCodec(codecOptions, iconv) {\n    this.iconv = iconv;\n};\n\nUtf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder;\nUtf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder;\nUtf7IMAPCodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf7IMAPEncoder(options, codec) {\n    this.iconv = codec.iconv;\n    this.inBase64 = false;\n    this.base64Accum = Buffer.alloc(6);\n    this.base64AccumIdx = 0;\n}\n\nUtf7IMAPEncoder.prototype.write = function(str) {\n    var inBase64 = this.inBase64,\n        base64Accum = this.base64Accum,\n        base64AccumIdx = this.base64AccumIdx,\n        buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0;\n\n    for (var i = 0; i < str.length; i++) {\n        var uChar = str.charCodeAt(i);\n        if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'.\n            if (inBase64) {\n                if (base64AccumIdx > 0) {\n                    bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n                    base64AccumIdx = 0;\n                }\n\n                buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n                inBase64 = false;\n            }\n\n            if (!inBase64) {\n                buf[bufIdx++] = uChar; // Write direct character\n\n                if (uChar === andChar)  // Ampersand -> '&-'\n                    buf[bufIdx++] = minusChar;\n            }\n\n        } else { // Non-direct character\n            if (!inBase64) {\n                buf[bufIdx++] = andChar; // Write '&', then go to base64 mode.\n                inBase64 = true;\n            }\n            if (inBase64) {\n                base64Accum[base64AccumIdx++] = uChar >> 8;\n                base64Accum[base64AccumIdx++] = uChar & 0xFF;\n\n                if (base64AccumIdx == base64Accum.length) {\n                    bufIdx += buf.write(base64Accum.toString('base64').replace(/\\//g, ','), bufIdx);\n                    base64AccumIdx = 0;\n                }\n            }\n        }\n    }\n\n    this.inBase64 = inBase64;\n    this.base64AccumIdx = base64AccumIdx;\n\n    return buf.slice(0, bufIdx);\n}\n\nUtf7IMAPEncoder.prototype.end = function() {\n    var buf = Buffer.alloc(10), bufIdx = 0;\n    if (this.inBase64) {\n        if (this.base64AccumIdx > 0) {\n            bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n            this.base64AccumIdx = 0;\n        }\n\n        buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n        this.inBase64 = false;\n    }\n\n    return buf.slice(0, bufIdx);\n}\n\n\n// -- Decoding\n\nfunction Utf7IMAPDecoder(options, codec) {\n    this.iconv = codec.iconv;\n    this.inBase64 = false;\n    this.base64Accum = '';\n}\n\nvar base64IMAPChars = base64Chars.slice();\nbase64IMAPChars[','.charCodeAt(0)] = true;\n\nUtf7IMAPDecoder.prototype.write = function(buf) {\n    var res = \"\", lastI = 0,\n        inBase64 = this.inBase64,\n        base64Accum = this.base64Accum;\n\n    // The decoder is more involved as we must handle chunks in stream.\n    // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end).\n\n    for (var i = 0; i < buf.length; i++) {\n        if (!inBase64) { // We're in direct mode.\n            // Write direct chars until '&'\n            if (buf[i] == andChar) {\n                res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n                lastI = i+1;\n                inBase64 = true;\n            }\n        } else { // We decode base64.\n            if (!base64IMAPChars[buf[i]]) { // Base64 ended.\n                if (i == lastI && buf[i] == minusChar) { // \"&-\" -> \"&\"\n                    res += \"&\";\n                } else {\n                    var b64str = base64Accum + buf.slice(lastI, i).toString().replace(/,/g, '/');\n                    res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n                }\n\n                if (buf[i] != minusChar) // Minus may be absorbed after base64.\n                    i--;\n\n                lastI = i+1;\n                inBase64 = false;\n                base64Accum = '';\n            }\n        }\n    }\n\n    if (!inBase64) {\n        res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n    } else {\n        var b64str = base64Accum + buf.slice(lastI).toString().replace(/,/g, '/');\n\n        var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n        base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n        b64str = b64str.slice(0, canBeDecoded);\n\n        res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n    }\n\n    this.inBase64 = inBase64;\n    this.base64Accum = base64Accum;\n\n    return res;\n}\n\nUtf7IMAPDecoder.prototype.end = function() {\n    var res = \"\";\n    if (this.inBase64 && this.base64Accum.length > 0)\n        res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n    this.inBase64 = false;\n    this.base64Accum = '';\n    return res;\n}\n\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/raw-body/node_modules/iconv-lite/encodings/utf7.js?")},"./node_modules/raw-body/node_modules/iconv-lite/lib/bom-handling.js":
/*!***************************************************************************!*\
  !*** ./node_modules/raw-body/node_modules/iconv-lite/lib/bom-handling.js ***!
  \***************************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval("\n\nvar BOMChar = '\\uFEFF';\n\nexports.PrependBOM = PrependBOMWrapper\nfunction PrependBOMWrapper(encoder, options) {\n    this.encoder = encoder;\n    this.addBOM = true;\n}\n\nPrependBOMWrapper.prototype.write = function(str) {\n    if (this.addBOM) {\n        str = BOMChar + str;\n        this.addBOM = false;\n    }\n\n    return this.encoder.write(str);\n}\n\nPrependBOMWrapper.prototype.end = function() {\n    return this.encoder.end();\n}\n\n\n//------------------------------------------------------------------------------\n\nexports.StripBOM = StripBOMWrapper;\nfunction StripBOMWrapper(decoder, options) {\n    this.decoder = decoder;\n    this.pass = false;\n    this.options = options || {};\n}\n\nStripBOMWrapper.prototype.write = function(buf) {\n    var res = this.decoder.write(buf);\n    if (this.pass || !res)\n        return res;\n\n    if (res[0] === BOMChar) {\n        res = res.slice(1);\n        if (typeof this.options.stripBOM === 'function')\n            this.options.stripBOM();\n    }\n\n    this.pass = true;\n    return res;\n}\n\nStripBOMWrapper.prototype.end = function() {\n    return this.decoder.end();\n}\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/raw-body/node_modules/iconv-lite/lib/bom-handling.js?")},"./node_modules/raw-body/node_modules/iconv-lite/lib/extend-node.js":
/*!**************************************************************************!*\
  !*** ./node_modules/raw-body/node_modules/iconv-lite/lib/extend-node.js ***!
  \**************************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nvar Buffer = (__webpack_require__(/*! buffer */ \"buffer\").Buffer);\n// Note: not polyfilled with safer-buffer on a purpose, as overrides Buffer\n\n// == Extend Node primitives to use iconv-lite =================================\n\nmodule.exports = function (iconv) {\n    var original = undefined; // Place to keep original methods.\n\n    // Node authors rewrote Buffer internals to make it compatible with\n    // Uint8Array and we cannot patch key functions since then.\n    // Note: this does use older Buffer API on a purpose\n    iconv.supportsNodeEncodingsExtension = !(Buffer.from || new Buffer(0) instanceof Uint8Array);\n\n    iconv.extendNodeEncodings = function extendNodeEncodings() {\n        if (original) return;\n        original = {};\n\n        if (!iconv.supportsNodeEncodingsExtension) {\n            console.error(\"ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node\");\n            console.error(\"See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility\");\n            return;\n        }\n\n        var nodeNativeEncodings = {\n            'hex': true, 'utf8': true, 'utf-8': true, 'ascii': true, 'binary': true, \n            'base64': true, 'ucs2': true, 'ucs-2': true, 'utf16le': true, 'utf-16le': true,\n        };\n\n        Buffer.isNativeEncoding = function(enc) {\n            return enc && nodeNativeEncodings[enc.toLowerCase()];\n        }\n\n        // -- SlowBuffer -----------------------------------------------------------\n        var SlowBuffer = (__webpack_require__(/*! buffer */ \"buffer\").SlowBuffer);\n\n        original.SlowBufferToString = SlowBuffer.prototype.toString;\n        SlowBuffer.prototype.toString = function(encoding, start, end) {\n            encoding = String(encoding || 'utf8').toLowerCase();\n\n            // Use native conversion when possible\n            if (Buffer.isNativeEncoding(encoding))\n                return original.SlowBufferToString.call(this, encoding, start, end);\n\n            // Otherwise, use our decoding method.\n            if (typeof start == 'undefined') start = 0;\n            if (typeof end == 'undefined') end = this.length;\n            return iconv.decode(this.slice(start, end), encoding);\n        }\n\n        original.SlowBufferWrite = SlowBuffer.prototype.write;\n        SlowBuffer.prototype.write = function(string, offset, length, encoding) {\n            // Support both (string, offset, length, encoding)\n            // and the legacy (string, encoding, offset, length)\n            if (isFinite(offset)) {\n                if (!isFinite(length)) {\n                    encoding = length;\n                    length = undefined;\n                }\n            } else {  // legacy\n                var swap = encoding;\n                encoding = offset;\n                offset = length;\n                length = swap;\n            }\n\n            offset = +offset || 0;\n            var remaining = this.length - offset;\n            if (!length) {\n                length = remaining;\n            } else {\n                length = +length;\n                if (length > remaining) {\n                    length = remaining;\n                }\n            }\n            encoding = String(encoding || 'utf8').toLowerCase();\n\n            // Use native conversion when possible\n            if (Buffer.isNativeEncoding(encoding))\n                return original.SlowBufferWrite.call(this, string, offset, length, encoding);\n\n            if (string.length > 0 && (length < 0 || offset < 0))\n                throw new RangeError('attempt to write beyond buffer bounds');\n\n            // Otherwise, use our encoding method.\n            var buf = iconv.encode(string, encoding);\n            if (buf.length < length) length = buf.length;\n            buf.copy(this, offset, 0, length);\n            return length;\n        }\n\n        // -- Buffer ---------------------------------------------------------------\n\n        original.BufferIsEncoding = Buffer.isEncoding;\n        Buffer.isEncoding = function(encoding) {\n            return Buffer.isNativeEncoding(encoding) || iconv.encodingExists(encoding);\n        }\n\n        original.BufferByteLength = Buffer.byteLength;\n        Buffer.byteLength = SlowBuffer.byteLength = function(str, encoding) {\n            encoding = String(encoding || 'utf8').toLowerCase();\n\n            // Use native conversion when possible\n            if (Buffer.isNativeEncoding(encoding))\n                return original.BufferByteLength.call(this, str, encoding);\n\n            // Slow, I know, but we don't have a better way yet.\n            return iconv.encode(str, encoding).length;\n        }\n\n        original.BufferToString = Buffer.prototype.toString;\n        Buffer.prototype.toString = function(encoding, start, end) {\n            encoding = String(encoding || 'utf8').toLowerCase();\n\n            // Use native conversion when possible\n            if (Buffer.isNativeEncoding(encoding))\n                return original.BufferToString.call(this, encoding, start, end);\n\n            // Otherwise, use our decoding method.\n            if (typeof start == 'undefined') start = 0;\n            if (typeof end == 'undefined') end = this.length;\n            return iconv.decode(this.slice(start, end), encoding);\n        }\n\n        original.BufferWrite = Buffer.prototype.write;\n        Buffer.prototype.write = function(string, offset, length, encoding) {\n            var _offset = offset, _length = length, _encoding = encoding;\n            // Support both (string, offset, length, encoding)\n            // and the legacy (string, encoding, offset, length)\n            if (isFinite(offset)) {\n                if (!isFinite(length)) {\n                    encoding = length;\n                    length = undefined;\n                }\n            } else {  // legacy\n                var swap = encoding;\n                encoding = offset;\n                offset = length;\n                length = swap;\n            }\n\n            encoding = String(encoding || 'utf8').toLowerCase();\n\n            // Use native conversion when possible\n            if (Buffer.isNativeEncoding(encoding))\n                return original.BufferWrite.call(this, string, _offset, _length, _encoding);\n\n            offset = +offset || 0;\n            var remaining = this.length - offset;\n            if (!length) {\n                length = remaining;\n            } else {\n                length = +length;\n                if (length > remaining) {\n                    length = remaining;\n                }\n            }\n\n            if (string.length > 0 && (length < 0 || offset < 0))\n                throw new RangeError('attempt to write beyond buffer bounds');\n\n            // Otherwise, use our encoding method.\n            var buf = iconv.encode(string, encoding);\n            if (buf.length < length) length = buf.length;\n            buf.copy(this, offset, 0, length);\n            return length;\n\n            // TODO: Set _charsWritten.\n        }\n\n\n        // -- Readable -------------------------------------------------------------\n        if (iconv.supportsStreams) {\n            var Readable = (__webpack_require__(/*! stream */ \"stream\").Readable);\n\n            original.ReadableSetEncoding = Readable.prototype.setEncoding;\n            Readable.prototype.setEncoding = function setEncoding(enc, options) {\n                // Use our own decoder, it has the same interface.\n                // We cannot use original function as it doesn't handle BOM-s.\n                this._readableState.decoder = iconv.getDecoder(enc, options);\n                this._readableState.encoding = enc;\n            }\n\n            Readable.prototype.collect = iconv._collect;\n        }\n    }\n\n    // Remove iconv-lite Node primitive extensions.\n    iconv.undoExtendNodeEncodings = function undoExtendNodeEncodings() {\n        if (!iconv.supportsNodeEncodingsExtension)\n            return;\n        if (!original)\n            throw new Error(\"require('iconv-lite').undoExtendNodeEncodings(): Nothing to undo; extendNodeEncodings() is not called.\")\n\n        delete Buffer.isNativeEncoding;\n\n        var SlowBuffer = (__webpack_require__(/*! buffer */ \"buffer\").SlowBuffer);\n\n        SlowBuffer.prototype.toString = original.SlowBufferToString;\n        SlowBuffer.prototype.write = original.SlowBufferWrite;\n\n        Buffer.isEncoding = original.BufferIsEncoding;\n        Buffer.byteLength = original.BufferByteLength;\n        Buffer.prototype.toString = original.BufferToString;\n        Buffer.prototype.write = original.BufferWrite;\n\n        if (iconv.supportsStreams) {\n            var Readable = (__webpack_require__(/*! stream */ \"stream\").Readable);\n\n            Readable.prototype.setEncoding = original.ReadableSetEncoding;\n            delete Readable.prototype.collect;\n        }\n\n        original = undefined;\n    }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/raw-body/node_modules/iconv-lite/lib/extend-node.js?")},"./node_modules/raw-body/node_modules/iconv-lite/lib/index.js":
/*!********************************************************************!*\
  !*** ./node_modules/raw-body/node_modules/iconv-lite/lib/index.js ***!
  \********************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\n// Some environments don\'t have global Buffer (e.g. React Native).\n// Solution would be installing npm modules "buffer" and "stream" explicitly.\nvar Buffer = (__webpack_require__(/*! safer-buffer */ "./node_modules/safer-buffer/safer.js").Buffer);\n\nvar bomHandling = __webpack_require__(/*! ./bom-handling */ "./node_modules/raw-body/node_modules/iconv-lite/lib/bom-handling.js"),\n    iconv = module.exports;\n\n// All codecs and aliases are kept here, keyed by encoding name/alias.\n// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`.\niconv.encodings = null;\n\n// Characters emitted in case of error.\niconv.defaultCharUnicode = \'�\';\niconv.defaultCharSingleByte = \'?\';\n\n// Public API.\niconv.encode = function encode(str, encoding, options) {\n    str = "" + (str || ""); // Ensure string.\n\n    var encoder = iconv.getEncoder(encoding, options);\n\n    var res = encoder.write(str);\n    var trail = encoder.end();\n    \n    return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res;\n}\n\niconv.decode = function decode(buf, encoding, options) {\n    if (typeof buf === \'string\') {\n        if (!iconv.skipDecodeWarning) {\n            console.error(\'Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding\');\n            iconv.skipDecodeWarning = true;\n        }\n\n        buf = Buffer.from("" + (buf || ""), "binary"); // Ensure buffer.\n    }\n\n    var decoder = iconv.getDecoder(encoding, options);\n\n    var res = decoder.write(buf);\n    var trail = decoder.end();\n\n    return trail ? (res + trail) : res;\n}\n\niconv.encodingExists = function encodingExists(enc) {\n    try {\n        iconv.getCodec(enc);\n        return true;\n    } catch (e) {\n        return false;\n    }\n}\n\n// Legacy aliases to convert functions\niconv.toEncoding = iconv.encode;\niconv.fromEncoding = iconv.decode;\n\n// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache.\niconv._codecDataCache = {};\niconv.getCodec = function getCodec(encoding) {\n    if (!iconv.encodings)\n        iconv.encodings = __webpack_require__(/*! ../encodings */ "./node_modules/raw-body/node_modules/iconv-lite/encodings/index.js"); // Lazy load all encoding definitions.\n    \n    // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n    var enc = iconv._canonicalizeEncoding(encoding);\n\n    // Traverse iconv.encodings to find actual codec.\n    var codecOptions = {};\n    while (true) {\n        var codec = iconv._codecDataCache[enc];\n        if (codec)\n            return codec;\n\n        var codecDef = iconv.encodings[enc];\n\n        switch (typeof codecDef) {\n            case "string": // Direct alias to other encoding.\n                enc = codecDef;\n                break;\n\n            case "object": // Alias with options. Can be layered.\n                for (var key in codecDef)\n                    codecOptions[key] = codecDef[key];\n\n                if (!codecOptions.encodingName)\n                    codecOptions.encodingName = enc;\n                \n                enc = codecDef.type;\n                break;\n\n            case "function": // Codec itself.\n                if (!codecOptions.encodingName)\n                    codecOptions.encodingName = enc;\n\n                // The codec function must load all tables and return object with .encoder and .decoder methods.\n                // It\'ll be called only once (for each different options object).\n                codec = new codecDef(codecOptions, iconv);\n\n                iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later.\n                return codec;\n\n            default:\n                throw new Error("Encoding not recognized: \'" + encoding + "\' (searched as: \'"+enc+"\')");\n        }\n    }\n}\n\niconv._canonicalizeEncoding = function(encoding) {\n    // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n    return (\'\'+encoding).toLowerCase().replace(/:\\d{4}$|[^0-9a-z]/g, "");\n}\n\niconv.getEncoder = function getEncoder(encoding, options) {\n    var codec = iconv.getCodec(encoding),\n        encoder = new codec.encoder(options, codec);\n\n    if (codec.bomAware && options && options.addBOM)\n        encoder = new bomHandling.PrependBOM(encoder, options);\n\n    return encoder;\n}\n\niconv.getDecoder = function getDecoder(encoding, options) {\n    var codec = iconv.getCodec(encoding),\n        decoder = new codec.decoder(options, codec);\n\n    if (codec.bomAware && !(options && options.stripBOM === false))\n        decoder = new bomHandling.StripBOM(decoder, options);\n\n    return decoder;\n}\n\n\n// Load extensions in Node. All of them are omitted in Browserify build via \'browser\' field in package.json.\nvar nodeVer = typeof process !== \'undefined\' && process.versions && process.versions.node;\nif (nodeVer) {\n\n    // Load streaming support in Node v0.10+\n    var nodeVerArr = nodeVer.split(".").map(Number);\n    if (nodeVerArr[0] > 0 || nodeVerArr[1] >= 10) {\n        __webpack_require__(/*! ./streams */ "./node_modules/raw-body/node_modules/iconv-lite/lib/streams.js")(iconv);\n    }\n\n    // Load Node primitive extensions.\n    __webpack_require__(/*! ./extend-node */ "./node_modules/raw-body/node_modules/iconv-lite/lib/extend-node.js")(iconv);\n}\n\nif (false) {}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/raw-body/node_modules/iconv-lite/lib/index.js?')},"./node_modules/raw-body/node_modules/iconv-lite/lib/streams.js":
/*!**********************************************************************!*\
  !*** ./node_modules/raw-body/node_modules/iconv-lite/lib/streams.js ***!
  \**********************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar Buffer = (__webpack_require__(/*! buffer */ \"buffer\").Buffer),\n    Transform = (__webpack_require__(/*! stream */ \"stream\").Transform);\n\n\n// == Exports ==================================================================\nmodule.exports = function(iconv) {\n    \n    // Additional Public API.\n    iconv.encodeStream = function encodeStream(encoding, options) {\n        return new IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options);\n    }\n\n    iconv.decodeStream = function decodeStream(encoding, options) {\n        return new IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options);\n    }\n\n    iconv.supportsStreams = true;\n\n\n    // Not published yet.\n    iconv.IconvLiteEncoderStream = IconvLiteEncoderStream;\n    iconv.IconvLiteDecoderStream = IconvLiteDecoderStream;\n    iconv._collect = IconvLiteDecoderStream.prototype.collect;\n};\n\n\n// == Encoder stream =======================================================\nfunction IconvLiteEncoderStream(conv, options) {\n    this.conv = conv;\n    options = options || {};\n    options.decodeStrings = false; // We accept only strings, so we don't need to decode them.\n    Transform.call(this, options);\n}\n\nIconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {\n    constructor: { value: IconvLiteEncoderStream }\n});\n\nIconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) {\n    if (typeof chunk != 'string')\n        return done(new Error(\"Iconv encoding stream needs strings as its input.\"));\n    try {\n        var res = this.conv.write(chunk);\n        if (res && res.length) this.push(res);\n        done();\n    }\n    catch (e) {\n        done(e);\n    }\n}\n\nIconvLiteEncoderStream.prototype._flush = function(done) {\n    try {\n        var res = this.conv.end();\n        if (res && res.length) this.push(res);\n        done();\n    }\n    catch (e) {\n        done(e);\n    }\n}\n\nIconvLiteEncoderStream.prototype.collect = function(cb) {\n    var chunks = [];\n    this.on('error', cb);\n    this.on('data', function(chunk) { chunks.push(chunk); });\n    this.on('end', function() {\n        cb(null, Buffer.concat(chunks));\n    });\n    return this;\n}\n\n\n// == Decoder stream =======================================================\nfunction IconvLiteDecoderStream(conv, options) {\n    this.conv = conv;\n    options = options || {};\n    options.encoding = this.encoding = 'utf8'; // We output strings.\n    Transform.call(this, options);\n}\n\nIconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {\n    constructor: { value: IconvLiteDecoderStream }\n});\n\nIconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) {\n    if (!Buffer.isBuffer(chunk))\n        return done(new Error(\"Iconv decoding stream needs buffers as its input.\"));\n    try {\n        var res = this.conv.write(chunk);\n        if (res && res.length) this.push(res, this.encoding);\n        done();\n    }\n    catch (e) {\n        done(e);\n    }\n}\n\nIconvLiteDecoderStream.prototype._flush = function(done) {\n    try {\n        var res = this.conv.end();\n        if (res && res.length) this.push(res, this.encoding);                \n        done();\n    }\n    catch (e) {\n        done(e);\n    }\n}\n\nIconvLiteDecoderStream.prototype.collect = function(cb) {\n    var res = '';\n    this.on('error', cb);\n    this.on('data', function(chunk) { res += chunk; });\n    this.on('end', function() {\n        cb(null, res);\n    });\n    return this;\n}\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/raw-body/node_modules/iconv-lite/lib/streams.js?")},"./node_modules/resolve-alpn/index.js":
/*!********************************************!*\
  !*** ./node_modules/resolve-alpn/index.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nconst tls = __webpack_require__(/*! tls */ \"tls\");\n\nmodule.exports = (options = {}) => new Promise((resolve, reject) => {\n\tlet timeout = false;\n\n\tconst callback = async () => {\n\t\tsocket.off('timeout', onTimeout);\n\t\tsocket.off('error', reject);\n\n\t\tif (options.resolveSocket) {\n\t\t\tresolve({alpnProtocol: socket.alpnProtocol, socket, timeout});\n\n\t\t\tif (timeout) {\n\t\t\t\tawait Promise.resolve();\n\t\t\t\tsocket.emit('timeout');\n\t\t\t}\n\t\t} else {\n\t\t\tsocket.destroy();\n\t\t\tresolve({alpnProtocol: socket.alpnProtocol, timeout});\n\t\t}\n\t};\n\n\tconst onTimeout = async () => {\n\t\ttimeout = true;\n\t\tcallback();\n\t};\n\n\tconst socket = tls.connect(options, callback);\n\n\tsocket.on('error', reject);\n\tsocket.once('timeout', onTimeout);\n});\n\n\n//# sourceURL=webpack://txadmin/./node_modules/resolve-alpn/index.js?")},"./node_modules/resolve-path/index.js":
/*!********************************************!*\
  !*** ./node_modules/resolve-path/index.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("/*!\n * resolve-path\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2018 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar createError = __webpack_require__(/*! http-errors */ \"./node_modules/resolve-path/node_modules/http-errors/index.js\")\nvar join = (__webpack_require__(/*! path */ \"path\").join)\nvar normalize = (__webpack_require__(/*! path */ \"path\").normalize)\nvar pathIsAbsolute = __webpack_require__(/*! path-is-absolute */ \"./node_modules/path-is-absolute/index.js\")\nvar resolve = (__webpack_require__(/*! path */ \"path\").resolve)\nvar sep = (__webpack_require__(/*! path */ \"path\").sep)\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = resolvePath\n\n/**\n * Module variables.\n * @private\n */\n\nvar UP_PATH_REGEXP = /(?:^|[\\\\/])\\.\\.(?:[\\\\/]|$)/\n\n/**\n * Resolve relative path against a root path\n *\n * @param {string} rootPath\n * @param {string} relativePath\n * @return {string}\n * @public\n */\n\nfunction resolvePath (rootPath, relativePath) {\n  var path = relativePath\n  var root = rootPath\n\n  // root is optional, similar to root.resolve\n  if (arguments.length === 1) {\n    path = rootPath\n    root = process.cwd()\n  }\n\n  if (root == null) {\n    throw new TypeError('argument rootPath is required')\n  }\n\n  if (typeof root !== 'string') {\n    throw new TypeError('argument rootPath must be a string')\n  }\n\n  if (path == null) {\n    throw new TypeError('argument relativePath is required')\n  }\n\n  if (typeof path !== 'string') {\n    throw new TypeError('argument relativePath must be a string')\n  }\n\n  // containing NULL bytes is malicious\n  if (path.indexOf('\\0') !== -1) {\n    throw createError(400, 'Malicious Path')\n  }\n\n  // path should never be absolute\n  if (pathIsAbsolute.posix(path) || pathIsAbsolute.win32(path)) {\n    throw createError(400, 'Malicious Path')\n  }\n\n  // path outside root\n  if (UP_PATH_REGEXP.test(normalize('.' + sep + path))) {\n    throw createError(403)\n  }\n\n  // join the relative path\n  return normalize(join(resolve(root), path))\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/resolve-path/index.js?")},"./node_modules/resolve-path/node_modules/http-errors/index.js":
/*!*********************************************************************!*\
  !*** ./node_modules/resolve-path/node_modules/http-errors/index.js ***!
  \*********************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("/*!\n * http-errors\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar deprecate = __webpack_require__(/*! depd */ \"./node_modules/depd/index.js\")('http-errors')\nvar setPrototypeOf = __webpack_require__(/*! setprototypeof */ \"./node_modules/resolve-path/node_modules/setprototypeof/index.js\")\nvar statuses = __webpack_require__(/*! statuses */ \"./node_modules/statuses/index.js\")\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/resolve-path/node_modules/inherits/inherits.js\")\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = createError\nmodule.exports.HttpError = createHttpErrorConstructor()\n\n// Populate exports for all constructors\npopulateConstructorExports(module.exports, statuses.codes, module.exports.HttpError)\n\n/**\n * Get the code class of a status code.\n * @private\n */\n\nfunction codeClass (status) {\n  return Number(String(status).charAt(0) + '00')\n}\n\n/**\n * Create a new HTTP Error.\n *\n * @returns {Error}\n * @public\n */\n\nfunction createError () {\n  // so much arity going on ~_~\n  var err\n  var msg\n  var status = 500\n  var props = {}\n  for (var i = 0; i < arguments.length; i++) {\n    var arg = arguments[i]\n    if (arg instanceof Error) {\n      err = arg\n      status = err.status || err.statusCode || status\n      continue\n    }\n    switch (typeof arg) {\n      case 'string':\n        msg = arg\n        break\n      case 'number':\n        status = arg\n        if (i !== 0) {\n          deprecate('non-first-argument status code; replace with createError(' + arg + ', ...)')\n        }\n        break\n      case 'object':\n        props = arg\n        break\n    }\n  }\n\n  if (typeof status === 'number' && (status < 400 || status >= 600)) {\n    deprecate('non-error status code; use only 4xx or 5xx status codes')\n  }\n\n  if (typeof status !== 'number' ||\n    (!statuses[status] && (status < 400 || status >= 600))) {\n    status = 500\n  }\n\n  // constructor\n  var HttpError = createError[status] || createError[codeClass(status)]\n\n  if (!err) {\n    // create error\n    err = HttpError\n      ? new HttpError(msg)\n      : new Error(msg || statuses[status])\n    Error.captureStackTrace(err, createError)\n  }\n\n  if (!HttpError || !(err instanceof HttpError) || err.status !== status) {\n    // add properties to generic error\n    err.expose = status < 500\n    err.status = err.statusCode = status\n  }\n\n  for (var key in props) {\n    if (key !== 'status' && key !== 'statusCode') {\n      err[key] = props[key]\n    }\n  }\n\n  return err\n}\n\n/**\n * Create HTTP error abstract base class.\n * @private\n */\n\nfunction createHttpErrorConstructor () {\n  function HttpError () {\n    throw new TypeError('cannot construct abstract class')\n  }\n\n  inherits(HttpError, Error)\n\n  return HttpError\n}\n\n/**\n * Create a constructor for a client error.\n * @private\n */\n\nfunction createClientErrorConstructor (HttpError, name, code) {\n  var className = name.match(/Error$/) ? name : name + 'Error'\n\n  function ClientError (message) {\n    // create the error object\n    var msg = message != null ? message : statuses[code]\n    var err = new Error(msg)\n\n    // capture a stack trace to the construction point\n    Error.captureStackTrace(err, ClientError)\n\n    // adjust the [[Prototype]]\n    setPrototypeOf(err, ClientError.prototype)\n\n    // redefine the error message\n    Object.defineProperty(err, 'message', {\n      enumerable: true,\n      configurable: true,\n      value: msg,\n      writable: true\n    })\n\n    // redefine the error name\n    Object.defineProperty(err, 'name', {\n      enumerable: false,\n      configurable: true,\n      value: className,\n      writable: true\n    })\n\n    return err\n  }\n\n  inherits(ClientError, HttpError)\n\n  ClientError.prototype.status = code\n  ClientError.prototype.statusCode = code\n  ClientError.prototype.expose = true\n\n  return ClientError\n}\n\n/**\n * Create a constructor for a server error.\n * @private\n */\n\nfunction createServerErrorConstructor (HttpError, name, code) {\n  var className = name.match(/Error$/) ? name : name + 'Error'\n\n  function ServerError (message) {\n    // create the error object\n    var msg = message != null ? message : statuses[code]\n    var err = new Error(msg)\n\n    // capture a stack trace to the construction point\n    Error.captureStackTrace(err, ServerError)\n\n    // adjust the [[Prototype]]\n    setPrototypeOf(err, ServerError.prototype)\n\n    // redefine the error message\n    Object.defineProperty(err, 'message', {\n      enumerable: true,\n      configurable: true,\n      value: msg,\n      writable: true\n    })\n\n    // redefine the error name\n    Object.defineProperty(err, 'name', {\n      enumerable: false,\n      configurable: true,\n      value: className,\n      writable: true\n    })\n\n    return err\n  }\n\n  inherits(ServerError, HttpError)\n\n  ServerError.prototype.status = code\n  ServerError.prototype.statusCode = code\n  ServerError.prototype.expose = false\n\n  return ServerError\n}\n\n/**\n * Populate the exports object with constructors for every error class.\n * @private\n */\n\nfunction populateConstructorExports (exports, codes, HttpError) {\n  codes.forEach(function forEachCode (code) {\n    var CodeError\n    var name = toIdentifier(statuses[code])\n\n    switch (codeClass(code)) {\n      case 400:\n        CodeError = createClientErrorConstructor(HttpError, name, code)\n        break\n      case 500:\n        CodeError = createServerErrorConstructor(HttpError, name, code)\n        break\n    }\n\n    if (CodeError) {\n      // export the constructor\n      exports[code] = CodeError\n      exports[name] = CodeError\n    }\n  })\n\n  // backwards-compatibility\n  exports[\"I'mateapot\"] = deprecate.function(exports.ImATeapot,\n    '\"I\\'mateapot\"; use \"ImATeapot\" instead')\n}\n\n/**\n * Convert a string of words to a JavaScript identifier.\n * @private\n */\n\nfunction toIdentifier (str) {\n  return str.split(' ').map(function (token) {\n    return token.slice(0, 1).toUpperCase() + token.slice(1)\n  }).join('').replace(/[^ _0-9a-z]/gi, '')\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/resolve-path/node_modules/http-errors/index.js?")},"./node_modules/resolve-path/node_modules/inherits/inherits.js":
/*!*********************************************************************!*\
  !*** ./node_modules/resolve-path/node_modules/inherits/inherits.js ***!
  \*********************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("try {\n  var util = __webpack_require__(/*! util */ \"util\");\n  if (typeof util.inherits !== 'function') throw '';\n  module.exports = util.inherits;\n} catch (e) {\n  module.exports = __webpack_require__(/*! ./inherits_browser.js */ \"./node_modules/resolve-path/node_modules/inherits/inherits_browser.js\");\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/resolve-path/node_modules/inherits/inherits.js?")},"./node_modules/resolve-path/node_modules/inherits/inherits_browser.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/resolve-path/node_modules/inherits/inherits_browser.js ***!
  \*****************************************************************************/module=>{eval("if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    ctor.super_ = superCtor\n    ctor.prototype = Object.create(superCtor.prototype, {\n      constructor: {\n        value: ctor,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    ctor.super_ = superCtor\n    var TempCtor = function () {}\n    TempCtor.prototype = superCtor.prototype\n    ctor.prototype = new TempCtor()\n    ctor.prototype.constructor = ctor\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/resolve-path/node_modules/inherits/inherits_browser.js?")},"./node_modules/resolve-path/node_modules/setprototypeof/index.js":
/*!************************************************************************!*\
  !*** ./node_modules/resolve-path/node_modules/setprototypeof/index.js ***!
  \************************************************************************/module=>{eval("module.exports = Object.setPrototypeOf || ({__proto__:[]} instanceof Array ? setProtoOf : mixinProperties);\n\nfunction setProtoOf(obj, proto) {\n\tobj.__proto__ = proto;\n\treturn obj;\n}\n\nfunction mixinProperties(obj, proto) {\n\tfor (var prop in proto) {\n\t\tif (!obj.hasOwnProperty(prop)) {\n\t\t\tobj[prop] = proto[prop];\n\t\t}\n\t}\n\treturn obj;\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/resolve-path/node_modules/setprototypeof/index.js?")},"./node_modules/responselike/src/index.js":
/*!************************************************!*\
  !*** ./node_modules/responselike/src/index.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Readable = (__webpack_require__(/*! stream */ \"stream\").Readable);\nconst lowercaseKeys = __webpack_require__(/*! lowercase-keys */ \"./node_modules/lowercase-keys/index.js\");\n\nclass Response extends Readable {\n\tconstructor(statusCode, headers, body, url) {\n\t\tif (typeof statusCode !== 'number') {\n\t\t\tthrow new TypeError('Argument `statusCode` should be a number');\n\t\t}\n\t\tif (typeof headers !== 'object') {\n\t\t\tthrow new TypeError('Argument `headers` should be an object');\n\t\t}\n\t\tif (!(body instanceof Buffer)) {\n\t\t\tthrow new TypeError('Argument `body` should be a buffer');\n\t\t}\n\t\tif (typeof url !== 'string') {\n\t\t\tthrow new TypeError('Argument `url` should be a string');\n\t\t}\n\n\t\tsuper();\n\t\tthis.statusCode = statusCode;\n\t\tthis.headers = lowercaseKeys(headers);\n\t\tthis.body = body;\n\t\tthis.url = url;\n\t}\n\n\t_read() {\n\t\tthis.push(this.body);\n\t\tthis.push(null);\n\t}\n}\n\nmodule.exports = Response;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/responselike/src/index.js?")},"./node_modules/rotating-file-stream/dist/cjs/index.js":
/*!*************************************************************!*\
  !*** ./node_modules/rotating-file-stream/dist/cjs/index.js ***!
  \*************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.createStream = exports.RotatingFileStream = exports.RotatingFileStreamError = void 0;\nconst child_process_1 = __webpack_require__(/*! child_process */ "child_process");\nconst zlib_1 = __webpack_require__(/*! zlib */ "zlib");\nconst stream_1 = __webpack_require__(/*! stream */ "stream");\nconst fs_1 = __webpack_require__(/*! fs */ "fs");\nconst promises_1 = __webpack_require__(/*! fs/promises */ "fs/promises");\nconst path_1 = __webpack_require__(/*! path */ "path");\nconst util_1 = __webpack_require__(/*! util */ "util");\nasync function exists(filename) {\n    return new Promise(resolve => (0, fs_1.access)(filename, fs_1.constants.F_OK, error => resolve(!error)));\n}\nclass RotatingFileStreamError extends Error {\n    constructor() {\n        super("Too many destination file attempts");\n        this.code = "RFS-TOO-MANY";\n    }\n}\nexports.RotatingFileStreamError = RotatingFileStreamError;\nclass RotatingFileStream extends stream_1.Writable {\n    constructor(generator, options) {\n        const { encoding, history, maxFiles, maxSize, path } = options;\n        super({ decodeStrings: true, defaultEncoding: encoding });\n        this.createGzip = zlib_1.createGzip;\n        this.exec = child_process_1.exec;\n        this.filename = path + generator(null);\n        this.fsCreateReadStream = fs_1.createReadStream;\n        this.fsCreateWriteStream = fs_1.createWriteStream;\n        this.fsOpen = promises_1.open;\n        this.fsReadFile = promises_1.readFile;\n        this.fsStat = promises_1.stat;\n        this.generator = generator;\n        this.maxTimeout = 2147483640;\n        this.options = options;\n        this.stdout = process.stdout;\n        if (maxFiles || maxSize)\n            options.history = path + (history ? history : this.generator(null) + ".txt");\n        this.on("close", () => (this.finished ? null : this.emit("finish")));\n        this.on("finish", () => (this.finished = this.clear()));\n        // In v15 was introduced the _constructor method to delay any _write(), _final() and _destroy() calls\n        // Untill v16 will be not deprecated we still need this.initPromise\n        // https://nodejs.org/api/stream.html#stream_writable_construct_callback\n        (async () => {\n            try {\n                this.initPromise = this.init();\n                await this.initPromise;\n                delete this.initPromise;\n            }\n            catch (e) { }\n        })();\n    }\n    _destroy(error, callback) {\n        this.refinal(error, callback);\n    }\n    _final(callback) {\n        this.refinal(undefined, callback);\n    }\n    _write(chunk, encoding, callback) {\n        this.rewrite([{ chunk, encoding }], 0, callback);\n    }\n    _writev(chunks, callback) {\n        this.rewrite(chunks, 0, callback);\n    }\n    async refinal(error, callback) {\n        try {\n            this.clear();\n            if (this.initPromise)\n                await this.initPromise;\n            if (this.timeoutPromise)\n                await this.timeoutPromise;\n            await this.reclose();\n        }\n        catch (e) {\n            return callback(error || e);\n        }\n        callback(error);\n    }\n    async rewrite(chunks, index, callback) {\n        const { size, teeToStdout } = this.options;\n        try {\n            if (this.initPromise)\n                await this.initPromise;\n            if (this.timeoutPromise)\n                await this.timeoutPromise;\n            for (let i = 0; i < chunks.length; ++i) {\n                const { chunk } = chunks[i];\n                this.size += chunk.length;\n                await this.file.write(chunk);\n                if (teeToStdout && !this.stdout.destroyed)\n                    this.stdout.write(chunk);\n                if (size && this.size >= size)\n                    await this.rotate();\n            }\n        }\n        catch (e) {\n            return callback(e);\n        }\n        callback();\n    }\n    async init() {\n        const { immutable, initialRotation, interval, size } = this.options;\n        // In v15 was introduced the _constructor method to delay any _write(), _final() and _destroy() calls\n        // Once v16 will be deprecated we can restore only following line\n        // if(immutable) return this.immutate(true);\n        if (immutable)\n            return new Promise((resolve, reject) => process.nextTick(() => this.immutate(true).then(resolve).catch(reject)));\n        let stats;\n        try {\n            stats = await (0, promises_1.stat)(this.filename);\n        }\n        catch (e) {\n            if (e.code !== "ENOENT")\n                throw e;\n            return this.reopen(0);\n        }\n        if (!stats.isFile())\n            throw new Error(`Can\'t write on: ${this.filename} (it is not a file)`);\n        if (initialRotation) {\n            this.intervalBounds(this.now());\n            const prev = this.prev;\n            this.intervalBounds(new Date(stats.mtime.getTime()));\n            if (prev !== this.prev)\n                return this.rotate();\n        }\n        this.size = stats.size;\n        if (!size || stats.size < size)\n            return this.reopen(stats.size);\n        if (interval)\n            this.intervalBounds(this.now());\n        return this.rotate();\n    }\n    async makePath(name) {\n        return (0, promises_1.mkdir)(name.split(path_1.sep).slice(0, -1).join(path_1.sep), { recursive: true });\n    }\n    async reopen(size) {\n        let file;\n        try {\n            file = await (0, promises_1.open)(this.filename, "a", this.options.mode);\n        }\n        catch (e) {\n            if (e.code !== "ENOENT")\n                throw e;\n            await this.makePath(this.filename);\n            file = await (0, promises_1.open)(this.filename, "a", this.options.mode);\n        }\n        this.file = file;\n        this.size = size;\n        this.interval();\n        this.emit("open", this.filename);\n    }\n    async reclose() {\n        const { file } = this;\n        if (!file)\n            return;\n        delete this.file;\n        return file.close();\n    }\n    now() {\n        return new Date();\n    }\n    async rotate() {\n        const { immutable, rotate } = this.options;\n        this.size = 0;\n        this.rotation = this.now();\n        this.clear();\n        this.emit("rotation");\n        await this.reclose();\n        if (rotate)\n            return this.classical();\n        if (immutable)\n            return this.immutate(false);\n        return this.move();\n    }\n    async findName() {\n        const { interval, path, intervalBoundary } = this.options;\n        for (let index = 1; index < 1000; ++index) {\n            const filename = path + this.generator(interval && intervalBoundary ? new Date(this.prev) : this.rotation, index);\n            if (!(await exists(filename)))\n                return filename;\n        }\n        throw new RotatingFileStreamError();\n    }\n    async move() {\n        const { compress } = this.options;\n        const filename = await this.findName();\n        await this.touch(filename);\n        if (compress)\n            await this.compress(filename);\n        else\n            await (0, promises_1.rename)(this.filename, filename);\n        return this.rotated(filename);\n    }\n    async touch(filename) {\n        let file;\n        try {\n            file = await this.fsOpen(filename, "a");\n        }\n        catch (e) {\n            if (e.code !== "ENOENT")\n                throw e;\n            await this.makePath(filename);\n            file = await (0, promises_1.open)(filename, "a");\n        }\n        await file.close();\n        return (0, promises_1.unlink)(filename);\n    }\n    async classical() {\n        const { compress, path, rotate } = this.options;\n        let rotatedName = "";\n        for (let count = rotate; count > 0; --count) {\n            const currName = path + this.generator(count);\n            const prevName = count === 1 ? this.filename : path + this.generator(count - 1);\n            if (!(await exists(prevName)))\n                continue;\n            if (!rotatedName)\n                rotatedName = currName;\n            if (count === 1 && compress)\n                await this.compress(currName);\n            else {\n                try {\n                    await (0, promises_1.rename)(prevName, currName);\n                }\n                catch (e) {\n                    if (e.code !== "ENOENT")\n                        throw e;\n                    await this.makePath(currName);\n                    await (0, promises_1.rename)(prevName, currName);\n                }\n            }\n        }\n        return this.rotated(rotatedName);\n    }\n    clear() {\n        if (this.timeout) {\n            clearTimeout(this.timeout);\n            this.timeout = null;\n        }\n        return true;\n    }\n    intervalBoundsBig(now) {\n        const year = now.getFullYear();\n        let month = now.getMonth();\n        let day = now.getDate();\n        let hours = now.getHours();\n        const { num, unit } = this.options.interval;\n        if (unit === "M") {\n            day = 1;\n            hours = 0;\n        }\n        else if (unit === "d")\n            hours = 0;\n        else\n            hours = parseInt((hours / num), 10) * num;\n        this.prev = new Date(year, month, day, hours, 0, 0, 0).getTime();\n        if (unit === "M")\n            month += num;\n        else if (unit === "d")\n            day += num;\n        else\n            hours += num;\n        this.next = new Date(year, month, day, hours, 0, 0, 0).getTime();\n    }\n    intervalBounds(now) {\n        const unit = this.options.interval.unit;\n        if (unit === "M" || unit === "d" || unit === "h")\n            this.intervalBoundsBig(now);\n        else {\n            let period = 1000 * this.options.interval.num;\n            if (unit === "m")\n                period *= 60;\n            this.prev = parseInt((now.getTime() / period), 10) * period;\n            this.next = this.prev + period;\n        }\n        return new Date(this.prev);\n    }\n    interval() {\n        if (!this.options.interval)\n            return;\n        this.intervalBounds(this.now());\n        const set = async () => {\n            const time = this.next - this.now().getTime();\n            if (time <= 0) {\n                try {\n                    this.timeoutPromise = this.rotate();\n                    await this.timeoutPromise;\n                    delete this.timeoutPromise;\n                }\n                catch (e) { }\n            }\n            else {\n                this.timeout = setTimeout(set, time > this.maxTimeout ? this.maxTimeout : time);\n                this.timeout.unref();\n            }\n        };\n        set();\n    }\n    async compress(filename) {\n        const { compress } = this.options;\n        if (typeof compress === "function") {\n            await new Promise((resolve, reject) => {\n                this.exec(compress(this.filename, filename), (error, stdout, stderr) => {\n                    this.emit("external", stdout, stderr);\n                    error ? reject(error) : resolve();\n                });\n            });\n        }\n        else\n            await this.gzip(filename);\n        return (0, promises_1.unlink)(this.filename);\n    }\n    async gzip(filename) {\n        const { mode } = this.options;\n        const options = mode ? { mode } : {};\n        const inp = this.fsCreateReadStream(this.filename, {});\n        const out = this.fsCreateWriteStream(filename, options);\n        const zip = this.createGzip();\n        return new Promise((resolve, reject) => {\n            [inp, out, zip].map(stream => stream.once("error", reject));\n            out.once("finish", resolve);\n            inp.pipe(zip).pipe(out);\n        });\n    }\n    async rotated(filename) {\n        const { maxFiles, maxSize } = this.options;\n        if (maxFiles || maxSize)\n            await this.history(filename);\n        this.emit("rotated", filename);\n        return this.reopen(0);\n    }\n    async history(filename) {\n        const { history, maxFiles, maxSize } = this.options;\n        const res = [];\n        let files = [filename];\n        try {\n            const content = await this.fsReadFile(history, "utf8");\n            files = [...content.toString().split("\\n"), filename];\n        }\n        catch (e) {\n            if (e.code !== "ENOENT")\n                throw e;\n        }\n        for (const file of files) {\n            if (file) {\n                try {\n                    const stats = await this.fsStat(file);\n                    if (stats.isFile()) {\n                        res.push({\n                            name: file,\n                            size: stats.size,\n                            time: stats.ctime.getTime()\n                        });\n                    }\n                    else\n                        this.emit("warning", new Error(`File \'${file}\' contained in history is not a regular file`));\n                }\n                catch (e) {\n                    if (e.code !== "ENOENT")\n                        throw e;\n                }\n            }\n        }\n        res.sort((a, b) => a.time - b.time);\n        if (maxFiles) {\n            while (res.length > maxFiles) {\n                const file = res.shift();\n                await (0, promises_1.unlink)(file.name);\n                this.emit("removed", file.name, true);\n            }\n        }\n        if (maxSize) {\n            while (res.reduce((size, file) => size + file.size, 0) > maxSize) {\n                const file = res.shift();\n                await (0, promises_1.unlink)(file.name);\n                this.emit("removed", file.name, false);\n            }\n        }\n        await (0, promises_1.writeFile)(history, res.map(e => e.name).join("\\n") + "\\n", "utf-8");\n        this.emit("history");\n    }\n    async immutate(first) {\n        const { size } = this.options;\n        const now = this.now();\n        for (let index = 1; index < 1000; ++index) {\n            let fileSize = 0;\n            let stats = undefined;\n            this.filename = this.options.path + this.generator(now, index);\n            try {\n                stats = await this.fsStat(this.filename);\n            }\n            catch (e) {\n                if (e.code !== "ENOENT")\n                    throw e;\n            }\n            if (stats) {\n                fileSize = stats.size;\n                if (!stats.isFile())\n                    throw new Error(`Can\'t write on: \'${this.filename}\' (it is not a file)`);\n                if (size && fileSize >= size)\n                    continue;\n            }\n            if (first) {\n                this.last = this.filename;\n                return this.reopen(fileSize);\n            }\n            await this.rotated(this.last);\n            this.last = this.filename;\n            return;\n        }\n        throw new RotatingFileStreamError();\n    }\n}\nexports.RotatingFileStream = RotatingFileStream;\nfunction buildNumberCheck(field) {\n    return (type, options, value) => {\n        const converted = parseInt(value, 10);\n        if (type !== "number" || converted !== value || converted <= 0)\n            throw new Error(`\'${field}\' option must be a positive integer number`);\n    };\n}\nfunction buildStringCheck(field, check) {\n    return (type, options, value) => {\n        if (type !== "string")\n            throw new Error(`Don\'t know how to handle \'options.${field}\' type: ${type}`);\n        options[field] = check(value);\n    };\n}\nfunction checkMeasure(value, what, units) {\n    const ret = {};\n    ret.num = parseInt(value, 10);\n    if (isNaN(ret.num))\n        throw new Error(`Unknown \'options.${what}\' format: ${value}`);\n    if (ret.num <= 0)\n        throw new Error(`A positive integer number is expected for \'options.${what}\'`);\n    ret.unit = value.replace(/^[ 0]*/g, "").substr((ret.num + "").length, 1);\n    if (ret.unit.length === 0)\n        throw new Error(`Missing unit for \'options.${what}\'`);\n    if (!units[ret.unit])\n        throw new Error(`Unknown \'options.${what}\' unit: ${ret.unit}`);\n    return ret;\n}\nconst intervalUnits = { M: true, d: true, h: true, m: true, s: true };\nfunction checkIntervalUnit(ret, unit, amount) {\n    if (parseInt((amount / ret.num), 10) * ret.num !== amount)\n        throw new Error(`An integer divider of ${amount} is expected as ${unit} for \'options.interval\'`);\n}\nfunction checkInterval(value) {\n    const ret = checkMeasure(value, "interval", intervalUnits);\n    switch (ret.unit) {\n        case "h":\n            checkIntervalUnit(ret, "hours", 24);\n            break;\n        case "m":\n            checkIntervalUnit(ret, "minutes", 60);\n            break;\n        case "s":\n            checkIntervalUnit(ret, "seconds", 60);\n            break;\n    }\n    return ret;\n}\nconst sizeUnits = { B: true, G: true, K: true, M: true };\nfunction checkSize(value) {\n    const ret = checkMeasure(value, "size", sizeUnits);\n    if (ret.unit === "K")\n        return ret.num * 1024;\n    if (ret.unit === "M")\n        return ret.num * 1048576;\n    if (ret.unit === "G")\n        return ret.num * 1073741824;\n    return ret.num;\n}\nconst checks = {\n    encoding: (type, options, value) => new util_1.TextDecoder(value),\n    immutable: () => { },\n    initialRotation: () => { },\n    interval: buildStringCheck("interval", checkInterval),\n    intervalBoundary: () => { },\n    maxFiles: buildNumberCheck("maxFiles"),\n    maxSize: buildStringCheck("maxSize", checkSize),\n    mode: () => { },\n    omitExtension: () => { },\n    rotate: buildNumberCheck("rotate"),\n    size: buildStringCheck("size", checkSize),\n    teeToStdout: () => { },\n    compress: (type, options, value) => {\n        if (!value)\n            throw new Error("A value for \'options.compress\' must be specified");\n        if (type === "boolean")\n            return (options.compress = (source, dest) => `cat ${source} | gzip -c9 > ${dest}`);\n        if (type === "function")\n            return;\n        if (type !== "string")\n            throw new Error(`Don\'t know how to handle \'options.compress\' type: ${type}`);\n        if (value !== "gzip")\n            throw new Error(`Don\'t know how to handle compression method: ${value}`);\n    },\n    history: (type) => {\n        if (type !== "string")\n            throw new Error(`Don\'t know how to handle \'options.history\' type: ${type}`);\n    },\n    path: (type, options, value) => {\n        if (type !== "string")\n            throw new Error(`Don\'t know how to handle \'options.path\' type: ${type}`);\n        if (value[value.length - 1] !== path_1.sep)\n            options.path = value + path_1.sep;\n    }\n};\nfunction checkOpts(options) {\n    const ret = {};\n    for (const opt in options) {\n        const value = options[opt];\n        const type = typeof value;\n        if (!(opt in checks))\n            throw new Error(`Unknown option: ${opt}`);\n        ret[opt] = options[opt];\n        checks[opt](type, ret, value);\n    }\n    if (!ret.path)\n        ret.path = "";\n    if (!ret.interval) {\n        delete ret.immutable;\n        delete ret.initialRotation;\n        delete ret.intervalBoundary;\n    }\n    if (ret.rotate) {\n        delete ret.history;\n        delete ret.immutable;\n        delete ret.maxFiles;\n        delete ret.maxSize;\n        delete ret.intervalBoundary;\n    }\n    if (ret.immutable)\n        delete ret.compress;\n    if (!ret.intervalBoundary)\n        delete ret.initialRotation;\n    return ret;\n}\nfunction createClassical(filename, compress, omitExtension) {\n    return (index) => (index ? `${filename}.${index}${compress && !omitExtension ? ".gz" : ""}` : filename);\n}\nfunction createGenerator(filename, compress, omitExtension) {\n    const pad = (num) => (num > 9 ? "" : "0") + num;\n    return (time, index) => {\n        if (!time)\n            return filename;\n        const month = time.getFullYear() + "" + pad(time.getMonth() + 1);\n        const day = pad(time.getDate());\n        const hour = pad(time.getHours());\n        const minute = pad(time.getMinutes());\n        return month + day + "-" + hour + minute + "-" + pad(index) + "-" + filename + (compress && !omitExtension ? ".gz" : "");\n    };\n}\nfunction createStream(filename, options) {\n    if (typeof options === "undefined")\n        options = {};\n    else if (typeof options !== "object")\n        throw new Error(`The "options" argument must be of type object. Received type ${typeof options}`);\n    const opts = checkOpts(options);\n    const { compress, omitExtension } = opts;\n    let generator;\n    if (typeof filename === "string")\n        generator = options.rotate ? createClassical(filename, compress !== undefined, omitExtension) : createGenerator(filename, compress !== undefined, omitExtension);\n    else if (typeof filename === "function")\n        generator = filename;\n    else\n        throw new Error(`The "filename" argument must be one of type string or function. Received type ${typeof filename}`);\n    return new RotatingFileStream(generator, opts);\n}\nexports.createStream = createStream;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/rotating-file-stream/dist/cjs/index.js?')},"./node_modules/safer-buffer/safer.js":
/*!********************************************!*\
  !*** ./node_modules/safer-buffer/safer.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("/* eslint-disable node/no-deprecated-api */\n\n\n\nvar buffer = __webpack_require__(/*! buffer */ \"buffer\")\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n  if (!buffer.hasOwnProperty(key)) continue\n  if (key === 'SlowBuffer' || key === 'Buffer') continue\n  safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n  if (!Buffer.hasOwnProperty(key)) continue\n  if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n  Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n  Safer.from = function (value, encodingOrOffset, length) {\n    if (typeof value === 'number') {\n      throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n    }\n    if (value && typeof value.length === 'undefined') {\n      throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n    }\n    return Buffer(value, encodingOrOffset, length)\n  }\n}\n\nif (!Safer.alloc) {\n  Safer.alloc = function (size, fill, encoding) {\n    if (typeof size !== 'number') {\n      throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n    }\n    if (size < 0 || size >= 2 * (1 << 30)) {\n      throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n    }\n    var buf = Buffer(size)\n    if (!fill || fill.length === 0) {\n      buf.fill(0)\n    } else if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n    return buf\n  }\n}\n\nif (!safer.kStringMaxLength) {\n  try {\n    safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n  } catch (e) {\n    // we can't determine kStringMaxLength in environments where process.binding\n    // is unsupported, so let's not set it\n  }\n}\n\nif (!safer.constants) {\n  safer.constants = {\n    MAX_LENGTH: safer.kMaxLength\n  }\n  if (safer.kStringMaxLength) {\n    safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n  }\n}\n\nmodule.exports = safer\n\n\n//# sourceURL=webpack://txadmin/./node_modules/safer-buffer/safer.js?")},"./node_modules/semver/classes/comparator.js":
/*!***************************************************!*\
  !*** ./node_modules/semver/classes/comparator.js ***!
  \***************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n  static get ANY () {\n    return ANY\n  }\n\n  constructor (comp, options) {\n    options = parseOptions(options)\n\n    if (comp instanceof Comparator) {\n      if (comp.loose === !!options.loose) {\n        return comp\n      } else {\n        comp = comp.value\n      }\n    }\n\n    debug('comparator', comp, options)\n    this.options = options\n    this.loose = !!options.loose\n    this.parse(comp)\n\n    if (this.semver === ANY) {\n      this.value = ''\n    } else {\n      this.value = this.operator + this.semver.version\n    }\n\n    debug('comp', this)\n  }\n\n  parse (comp) {\n    const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n    const m = comp.match(r)\n\n    if (!m) {\n      throw new TypeError(`Invalid comparator: ${comp}`)\n    }\n\n    this.operator = m[1] !== undefined ? m[1] : ''\n    if (this.operator === '=') {\n      this.operator = ''\n    }\n\n    // if it literally is just '>' or '' then allow anything.\n    if (!m[2]) {\n      this.semver = ANY\n    } else {\n      this.semver = new SemVer(m[2], this.options.loose)\n    }\n  }\n\n  toString () {\n    return this.value\n  }\n\n  test (version) {\n    debug('Comparator.test', version, this.options.loose)\n\n    if (this.semver === ANY || version === ANY) {\n      return true\n    }\n\n    if (typeof version === 'string') {\n      try {\n        version = new SemVer(version, this.options)\n      } catch (er) {\n        return false\n      }\n    }\n\n    return cmp(version, this.operator, this.semver, this.options)\n  }\n\n  intersects (comp, options) {\n    if (!(comp instanceof Comparator)) {\n      throw new TypeError('a Comparator is required')\n    }\n\n    if (!options || typeof options !== 'object') {\n      options = {\n        loose: !!options,\n        includePrerelease: false,\n      }\n    }\n\n    if (this.operator === '') {\n      if (this.value === '') {\n        return true\n      }\n      return new Range(comp.value, options).test(this.value)\n    } else if (comp.operator === '') {\n      if (comp.value === '') {\n        return true\n      }\n      return new Range(this.value, options).test(comp.semver)\n    }\n\n    const sameDirectionIncreasing =\n      (this.operator === '>=' || this.operator === '>') &&\n      (comp.operator === '>=' || comp.operator === '>')\n    const sameDirectionDecreasing =\n      (this.operator === '<=' || this.operator === '<') &&\n      (comp.operator === '<=' || comp.operator === '<')\n    const sameSemVer = this.semver.version === comp.semver.version\n    const differentDirectionsInclusive =\n      (this.operator === '>=' || this.operator === '<=') &&\n      (comp.operator === '>=' || comp.operator === '<=')\n    const oppositeDirectionsLessThan =\n      cmp(this.semver, '<', comp.semver, options) &&\n      (this.operator === '>=' || this.operator === '>') &&\n        (comp.operator === '<=' || comp.operator === '<')\n    const oppositeDirectionsGreaterThan =\n      cmp(this.semver, '>', comp.semver, options) &&\n      (this.operator === '<=' || this.operator === '<') &&\n        (comp.operator === '>=' || comp.operator === '>')\n\n    return (\n      sameDirectionIncreasing ||\n      sameDirectionDecreasing ||\n      (sameSemVer && differentDirectionsInclusive) ||\n      oppositeDirectionsLessThan ||\n      oppositeDirectionsGreaterThan\n    )\n  }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = __webpack_require__(/*! ../internal/parse-options */ \"./node_modules/semver/internal/parse-options.js\")\nconst { re, t } = __webpack_require__(/*! ../internal/re */ \"./node_modules/semver/internal/re.js\")\nconst cmp = __webpack_require__(/*! ../functions/cmp */ \"./node_modules/semver/functions/cmp.js\")\nconst debug = __webpack_require__(/*! ../internal/debug */ \"./node_modules/semver/internal/debug.js\")\nconst SemVer = __webpack_require__(/*! ./semver */ \"./node_modules/semver/classes/semver.js\")\nconst Range = __webpack_require__(/*! ./range */ \"./node_modules/semver/classes/range.js\")\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/classes/comparator.js?")},"./node_modules/semver/classes/range.js":
/*!**********************************************!*\
  !*** ./node_modules/semver/classes/range.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("// hoisted class for cyclic dependency\nclass Range {\n  constructor (range, options) {\n    options = parseOptions(options)\n\n    if (range instanceof Range) {\n      if (\n        range.loose === !!options.loose &&\n        range.includePrerelease === !!options.includePrerelease\n      ) {\n        return range\n      } else {\n        return new Range(range.raw, options)\n      }\n    }\n\n    if (range instanceof Comparator) {\n      // just put it in the set and return\n      this.raw = range.value\n      this.set = [[range]]\n      this.format()\n      return this\n    }\n\n    this.options = options\n    this.loose = !!options.loose\n    this.includePrerelease = !!options.includePrerelease\n\n    // First, split based on boolean or ||\n    this.raw = range\n    this.set = range\n      .split('||')\n      // map the range to a 2d array of comparators\n      .map(r => this.parseRange(r.trim()))\n      // throw out any comparator lists that are empty\n      // this generally means that it was not a valid range, which is allowed\n      // in loose mode, but will still throw if the WHOLE range is invalid.\n      .filter(c => c.length)\n\n    if (!this.set.length) {\n      throw new TypeError(`Invalid SemVer Range: ${range}`)\n    }\n\n    // if we have any that are not the null set, throw out null sets.\n    if (this.set.length > 1) {\n      // keep the first one, in case they're all null sets\n      const first = this.set[0]\n      this.set = this.set.filter(c => !isNullSet(c[0]))\n      if (this.set.length === 0) {\n        this.set = [first]\n      } else if (this.set.length > 1) {\n        // if we have any that are *, then the range is just *\n        for (const c of this.set) {\n          if (c.length === 1 && isAny(c[0])) {\n            this.set = [c]\n            break\n          }\n        }\n      }\n    }\n\n    this.format()\n  }\n\n  format () {\n    this.range = this.set\n      .map((comps) => {\n        return comps.join(' ').trim()\n      })\n      .join('||')\n      .trim()\n    return this.range\n  }\n\n  toString () {\n    return this.range\n  }\n\n  parseRange (range) {\n    range = range.trim()\n\n    // memoize range parsing for performance.\n    // this is a very hot path, and fully deterministic.\n    const memoOpts = Object.keys(this.options).join(',')\n    const memoKey = `parseRange:${memoOpts}:${range}`\n    const cached = cache.get(memoKey)\n    if (cached) {\n      return cached\n    }\n\n    const loose = this.options.loose\n    // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n    const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n    range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n    debug('hyphen replace', range)\n    // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n    range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n    debug('comparator trim', range)\n\n    // `~ 1.2.3` => `~1.2.3`\n    range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n\n    // `^ 1.2.3` => `^1.2.3`\n    range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n\n    // normalize spaces\n    range = range.split(/\\s+/).join(' ')\n\n    // At this point, the range is completely trimmed and\n    // ready to be split into comparators.\n\n    let rangeList = range\n      .split(' ')\n      .map(comp => parseComparator(comp, this.options))\n      .join(' ')\n      .split(/\\s+/)\n      // >=0.0.0 is equivalent to *\n      .map(comp => replaceGTE0(comp, this.options))\n\n    if (loose) {\n      // in loose mode, throw out any that are not valid comparators\n      rangeList = rangeList.filter(comp => {\n        debug('loose invalid filter', comp, this.options)\n        return !!comp.match(re[t.COMPARATORLOOSE])\n      })\n    }\n    debug('range list', rangeList)\n\n    // if any comparators are the null set, then replace with JUST null set\n    // if more than one comparator, remove any * comparators\n    // also, don't include the same comparator more than once\n    const rangeMap = new Map()\n    const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n    for (const comp of comparators) {\n      if (isNullSet(comp)) {\n        return [comp]\n      }\n      rangeMap.set(comp.value, comp)\n    }\n    if (rangeMap.size > 1 && rangeMap.has('')) {\n      rangeMap.delete('')\n    }\n\n    const result = [...rangeMap.values()]\n    cache.set(memoKey, result)\n    return result\n  }\n\n  intersects (range, options) {\n    if (!(range instanceof Range)) {\n      throw new TypeError('a Range is required')\n    }\n\n    return this.set.some((thisComparators) => {\n      return (\n        isSatisfiable(thisComparators, options) &&\n        range.set.some((rangeComparators) => {\n          return (\n            isSatisfiable(rangeComparators, options) &&\n            thisComparators.every((thisComparator) => {\n              return rangeComparators.every((rangeComparator) => {\n                return thisComparator.intersects(rangeComparator, options)\n              })\n            })\n          )\n        })\n      )\n    })\n  }\n\n  // if ANY of the sets match ALL of its comparators, then pass\n  test (version) {\n    if (!version) {\n      return false\n    }\n\n    if (typeof version === 'string') {\n      try {\n        version = new SemVer(version, this.options)\n      } catch (er) {\n        return false\n      }\n    }\n\n    for (let i = 0; i < this.set.length; i++) {\n      if (testSet(this.set[i], version, this.options)) {\n        return true\n      }\n    }\n    return false\n  }\n}\nmodule.exports = Range\n\nconst LRU = __webpack_require__(/*! lru-cache */ \"./node_modules/lru-cache/index.js\")\nconst cache = new LRU({ max: 1000 })\n\nconst parseOptions = __webpack_require__(/*! ../internal/parse-options */ \"./node_modules/semver/internal/parse-options.js\")\nconst Comparator = __webpack_require__(/*! ./comparator */ \"./node_modules/semver/classes/comparator.js\")\nconst debug = __webpack_require__(/*! ../internal/debug */ \"./node_modules/semver/internal/debug.js\")\nconst SemVer = __webpack_require__(/*! ./semver */ \"./node_modules/semver/classes/semver.js\")\nconst {\n  re,\n  t,\n  comparatorTrimReplace,\n  tildeTrimReplace,\n  caretTrimReplace,\n} = __webpack_require__(/*! ../internal/re */ \"./node_modules/semver/internal/re.js\")\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n  let result = true\n  const remainingComparators = comparators.slice()\n  let testComparator = remainingComparators.pop()\n\n  while (result && remainingComparators.length) {\n    result = remainingComparators.every((otherComparator) => {\n      return testComparator.intersects(otherComparator, options)\n    })\n\n    testComparator = remainingComparators.pop()\n  }\n\n  return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n  debug('comp', comp, options)\n  comp = replaceCarets(comp, options)\n  debug('caret', comp)\n  comp = replaceTildes(comp, options)\n  debug('tildes', comp)\n  comp = replaceXRanges(comp, options)\n  debug('xrange', comp)\n  comp = replaceStars(comp, options)\n  debug('stars', comp)\n  return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --\x3e * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --\x3e >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --\x3e >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --\x3e >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --\x3e >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --\x3e >=1.2.0 <1.3.0-0\nconst replaceTildes = (comp, options) =>\n  comp.trim().split(/\\s+/).map((c) => {\n    return replaceTilde(c, options)\n  }).join(' ')\n\nconst replaceTilde = (comp, options) => {\n  const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n  return comp.replace(r, (_, M, m, p, pr) => {\n    debug('tilde', comp, _, M, m, p, pr)\n    let ret\n\n    if (isX(M)) {\n      ret = ''\n    } else if (isX(m)) {\n      ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n    } else if (isX(p)) {\n      // ~1.2 == >=1.2.0 <1.3.0-0\n      ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n    } else if (pr) {\n      debug('replaceTilde pr', pr)\n      ret = `>=${M}.${m}.${p}-${pr\n      } <${M}.${+m + 1}.0-0`\n    } else {\n      // ~1.2.3 == >=1.2.3 <1.3.0-0\n      ret = `>=${M}.${m}.${p\n      } <${M}.${+m + 1}.0-0`\n    }\n\n    debug('tilde return', ret)\n    return ret\n  })\n}\n\n// ^ --\x3e * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --\x3e >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --\x3e >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --\x3e >=1.2.0 <2.0.0-0\n// ^1.2.3 --\x3e >=1.2.3 <2.0.0-0\n// ^1.2.0 --\x3e >=1.2.0 <2.0.0-0\nconst replaceCarets = (comp, options) =>\n  comp.trim().split(/\\s+/).map((c) => {\n    return replaceCaret(c, options)\n  }).join(' ')\n\nconst replaceCaret = (comp, options) => {\n  debug('caret', comp, options)\n  const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n  const z = options.includePrerelease ? '-0' : ''\n  return comp.replace(r, (_, M, m, p, pr) => {\n    debug('caret', comp, _, M, m, p, pr)\n    let ret\n\n    if (isX(M)) {\n      ret = ''\n    } else if (isX(m)) {\n      ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n    } else if (isX(p)) {\n      if (M === '0') {\n        ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n      } else {\n        ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n      }\n    } else if (pr) {\n      debug('replaceCaret pr', pr)\n      if (M === '0') {\n        if (m === '0') {\n          ret = `>=${M}.${m}.${p}-${pr\n          } <${M}.${m}.${+p + 1}-0`\n        } else {\n          ret = `>=${M}.${m}.${p}-${pr\n          } <${M}.${+m + 1}.0-0`\n        }\n      } else {\n        ret = `>=${M}.${m}.${p}-${pr\n        } <${+M + 1}.0.0-0`\n      }\n    } else {\n      debug('no pr')\n      if (M === '0') {\n        if (m === '0') {\n          ret = `>=${M}.${m}.${p\n          }${z} <${M}.${m}.${+p + 1}-0`\n        } else {\n          ret = `>=${M}.${m}.${p\n          }${z} <${M}.${+m + 1}.0-0`\n        }\n      } else {\n        ret = `>=${M}.${m}.${p\n        } <${+M + 1}.0.0-0`\n      }\n    }\n\n    debug('caret return', ret)\n    return ret\n  })\n}\n\nconst replaceXRanges = (comp, options) => {\n  debug('replaceXRanges', comp, options)\n  return comp.split(/\\s+/).map((c) => {\n    return replaceXRange(c, options)\n  }).join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n  comp = comp.trim()\n  const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n  return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n    debug('xRange', comp, ret, gtlt, M, m, p, pr)\n    const xM = isX(M)\n    const xm = xM || isX(m)\n    const xp = xm || isX(p)\n    const anyX = xp\n\n    if (gtlt === '=' && anyX) {\n      gtlt = ''\n    }\n\n    // if we're including prereleases in the match, then we need\n    // to fix this to -0, the lowest possible prerelease value\n    pr = options.includePrerelease ? '-0' : ''\n\n    if (xM) {\n      if (gtlt === '>' || gtlt === '<') {\n        // nothing is allowed\n        ret = '<0.0.0-0'\n      } else {\n        // nothing is forbidden\n        ret = '*'\n      }\n    } else if (gtlt && anyX) {\n      // we know patch is an x, because we have any x at all.\n      // replace X with 0\n      if (xm) {\n        m = 0\n      }\n      p = 0\n\n      if (gtlt === '>') {\n        // >1 => >=2.0.0\n        // >1.2 => >=1.3.0\n        gtlt = '>='\n        if (xm) {\n          M = +M + 1\n          m = 0\n          p = 0\n        } else {\n          m = +m + 1\n          p = 0\n        }\n      } else if (gtlt === '<=') {\n        // <=0.7.x is actually <0.8.0, since any 0.7.x should\n        // pass.  Similarly, <=7.x is actually <8.0.0, etc.\n        gtlt = '<'\n        if (xm) {\n          M = +M + 1\n        } else {\n          m = +m + 1\n        }\n      }\n\n      if (gtlt === '<') {\n        pr = '-0'\n      }\n\n      ret = `${gtlt + M}.${m}.${p}${pr}`\n    } else if (xm) {\n      ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n    } else if (xp) {\n      ret = `>=${M}.${m}.0${pr\n      } <${M}.${+m + 1}.0-0`\n    }\n\n    debug('xRange return', ret)\n\n    return ret\n  })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n  debug('replaceStars', comp, options)\n  // Looseness is ignored here.  star is always as loose as it gets!\n  return comp.trim().replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n  debug('replaceGTE0', comp, options)\n  return comp.trim()\n    .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nconst hyphenReplace = incPr => ($0,\n  from, fM, fm, fp, fpr, fb,\n  to, tM, tm, tp, tpr, tb) => {\n  if (isX(fM)) {\n    from = ''\n  } else if (isX(fm)) {\n    from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n  } else if (isX(fp)) {\n    from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n  } else if (fpr) {\n    from = `>=${from}`\n  } else {\n    from = `>=${from}${incPr ? '-0' : ''}`\n  }\n\n  if (isX(tM)) {\n    to = ''\n  } else if (isX(tm)) {\n    to = `<${+tM + 1}.0.0-0`\n  } else if (isX(tp)) {\n    to = `<${tM}.${+tm + 1}.0-0`\n  } else if (tpr) {\n    to = `<=${tM}.${tm}.${tp}-${tpr}`\n  } else if (incPr) {\n    to = `<${tM}.${tm}.${+tp + 1}-0`\n  } else {\n    to = `<=${to}`\n  }\n\n  return (`${from} ${to}`).trim()\n}\n\nconst testSet = (set, version, options) => {\n  for (let i = 0; i < set.length; i++) {\n    if (!set[i].test(version)) {\n      return false\n    }\n  }\n\n  if (version.prerelease.length && !options.includePrerelease) {\n    // Find the set of versions that are allowed to have prereleases\n    // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n    // That should allow `1.2.3-pr.2` to pass.\n    // However, `1.2.4-alpha.notready` should NOT be allowed,\n    // even though it's within the range set by the comparators.\n    for (let i = 0; i < set.length; i++) {\n      debug(set[i].semver)\n      if (set[i].semver === Comparator.ANY) {\n        continue\n      }\n\n      if (set[i].semver.prerelease.length > 0) {\n        const allowed = set[i].semver\n        if (allowed.major === version.major &&\n            allowed.minor === version.minor &&\n            allowed.patch === version.patch) {\n          return true\n        }\n      }\n    }\n\n    // Version has a -pre, but it's not one of the ones we like.\n    return false\n  }\n\n  return true\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/classes/range.js?")},"./node_modules/semver/classes/semver.js":
/*!***********************************************!*\
  !*** ./node_modules/semver/classes/semver.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const debug = __webpack_require__(/*! ../internal/debug */ \"./node_modules/semver/internal/debug.js\")\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = __webpack_require__(/*! ../internal/constants */ \"./node_modules/semver/internal/constants.js\")\nconst { re, t } = __webpack_require__(/*! ../internal/re */ \"./node_modules/semver/internal/re.js\")\n\nconst parseOptions = __webpack_require__(/*! ../internal/parse-options */ \"./node_modules/semver/internal/parse-options.js\")\nconst { compareIdentifiers } = __webpack_require__(/*! ../internal/identifiers */ \"./node_modules/semver/internal/identifiers.js\")\nclass SemVer {\n  constructor (version, options) {\n    options = parseOptions(options)\n\n    if (version instanceof SemVer) {\n      if (version.loose === !!options.loose &&\n          version.includePrerelease === !!options.includePrerelease) {\n        return version\n      } else {\n        version = version.version\n      }\n    } else if (typeof version !== 'string') {\n      throw new TypeError(`Invalid Version: ${version}`)\n    }\n\n    if (version.length > MAX_LENGTH) {\n      throw new TypeError(\n        `version is longer than ${MAX_LENGTH} characters`\n      )\n    }\n\n    debug('SemVer', version, options)\n    this.options = options\n    this.loose = !!options.loose\n    // this isn't actually relevant for versions, but keep it so that we\n    // don't run into trouble passing this.options around.\n    this.includePrerelease = !!options.includePrerelease\n\n    const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n    if (!m) {\n      throw new TypeError(`Invalid Version: ${version}`)\n    }\n\n    this.raw = version\n\n    // these are actually numbers\n    this.major = +m[1]\n    this.minor = +m[2]\n    this.patch = +m[3]\n\n    if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n      throw new TypeError('Invalid major version')\n    }\n\n    if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n      throw new TypeError('Invalid minor version')\n    }\n\n    if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n      throw new TypeError('Invalid patch version')\n    }\n\n    // numberify any prerelease numeric ids\n    if (!m[4]) {\n      this.prerelease = []\n    } else {\n      this.prerelease = m[4].split('.').map((id) => {\n        if (/^[0-9]+$/.test(id)) {\n          const num = +id\n          if (num >= 0 && num < MAX_SAFE_INTEGER) {\n            return num\n          }\n        }\n        return id\n      })\n    }\n\n    this.build = m[5] ? m[5].split('.') : []\n    this.format()\n  }\n\n  format () {\n    this.version = `${this.major}.${this.minor}.${this.patch}`\n    if (this.prerelease.length) {\n      this.version += `-${this.prerelease.join('.')}`\n    }\n    return this.version\n  }\n\n  toString () {\n    return this.version\n  }\n\n  compare (other) {\n    debug('SemVer.compare', this.version, this.options, other)\n    if (!(other instanceof SemVer)) {\n      if (typeof other === 'string' && other === this.version) {\n        return 0\n      }\n      other = new SemVer(other, this.options)\n    }\n\n    if (other.version === this.version) {\n      return 0\n    }\n\n    return this.compareMain(other) || this.comparePre(other)\n  }\n\n  compareMain (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    return (\n      compareIdentifiers(this.major, other.major) ||\n      compareIdentifiers(this.minor, other.minor) ||\n      compareIdentifiers(this.patch, other.patch)\n    )\n  }\n\n  comparePre (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    // NOT having a prerelease is > having one\n    if (this.prerelease.length && !other.prerelease.length) {\n      return -1\n    } else if (!this.prerelease.length && other.prerelease.length) {\n      return 1\n    } else if (!this.prerelease.length && !other.prerelease.length) {\n      return 0\n    }\n\n    let i = 0\n    do {\n      const a = this.prerelease[i]\n      const b = other.prerelease[i]\n      debug('prerelease compare', i, a, b)\n      if (a === undefined && b === undefined) {\n        return 0\n      } else if (b === undefined) {\n        return 1\n      } else if (a === undefined) {\n        return -1\n      } else if (a === b) {\n        continue\n      } else {\n        return compareIdentifiers(a, b)\n      }\n    } while (++i)\n  }\n\n  compareBuild (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    let i = 0\n    do {\n      const a = this.build[i]\n      const b = other.build[i]\n      debug('prerelease compare', i, a, b)\n      if (a === undefined && b === undefined) {\n        return 0\n      } else if (b === undefined) {\n        return 1\n      } else if (a === undefined) {\n        return -1\n      } else if (a === b) {\n        continue\n      } else {\n        return compareIdentifiers(a, b)\n      }\n    } while (++i)\n  }\n\n  // preminor will bump the version up to the next minor release, and immediately\n  // down to pre-release. premajor and prepatch work the same way.\n  inc (release, identifier) {\n    switch (release) {\n      case 'premajor':\n        this.prerelease.length = 0\n        this.patch = 0\n        this.minor = 0\n        this.major++\n        this.inc('pre', identifier)\n        break\n      case 'preminor':\n        this.prerelease.length = 0\n        this.patch = 0\n        this.minor++\n        this.inc('pre', identifier)\n        break\n      case 'prepatch':\n        // If this is already a prerelease, it will bump to the next version\n        // drop any prereleases that might already exist, since they are not\n        // relevant at this point.\n        this.prerelease.length = 0\n        this.inc('patch', identifier)\n        this.inc('pre', identifier)\n        break\n      // If the input is a non-prerelease version, this acts the same as\n      // prepatch.\n      case 'prerelease':\n        if (this.prerelease.length === 0) {\n          this.inc('patch', identifier)\n        }\n        this.inc('pre', identifier)\n        break\n\n      case 'major':\n        // If this is a pre-major version, bump up to the same major version.\n        // Otherwise increment major.\n        // 1.0.0-5 bumps to 1.0.0\n        // 1.1.0 bumps to 2.0.0\n        if (\n          this.minor !== 0 ||\n          this.patch !== 0 ||\n          this.prerelease.length === 0\n        ) {\n          this.major++\n        }\n        this.minor = 0\n        this.patch = 0\n        this.prerelease = []\n        break\n      case 'minor':\n        // If this is a pre-minor version, bump up to the same minor version.\n        // Otherwise increment minor.\n        // 1.2.0-5 bumps to 1.2.0\n        // 1.2.1 bumps to 1.3.0\n        if (this.patch !== 0 || this.prerelease.length === 0) {\n          this.minor++\n        }\n        this.patch = 0\n        this.prerelease = []\n        break\n      case 'patch':\n        // If this is not a pre-release version, it will increment the patch.\n        // If it is a pre-release it will bump up to the same patch version.\n        // 1.2.0-5 patches to 1.2.0\n        // 1.2.0 patches to 1.2.1\n        if (this.prerelease.length === 0) {\n          this.patch++\n        }\n        this.prerelease = []\n        break\n      // This probably shouldn't be used publicly.\n      // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n      case 'pre':\n        if (this.prerelease.length === 0) {\n          this.prerelease = [0]\n        } else {\n          let i = this.prerelease.length\n          while (--i >= 0) {\n            if (typeof this.prerelease[i] === 'number') {\n              this.prerelease[i]++\n              i = -2\n            }\n          }\n          if (i === -1) {\n            // didn't increment anything\n            this.prerelease.push(0)\n          }\n        }\n        if (identifier) {\n          // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n          // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n          if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n            if (isNaN(this.prerelease[1])) {\n              this.prerelease = [identifier, 0]\n            }\n          } else {\n            this.prerelease = [identifier, 0]\n          }\n        }\n        break\n\n      default:\n        throw new Error(`invalid increment argument: ${release}`)\n    }\n    this.format()\n    this.raw = this.version\n    return this\n  }\n}\n\nmodule.exports = SemVer\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/classes/semver.js?")},"./node_modules/semver/functions/clean.js":
/*!************************************************!*\
  !*** ./node_modules/semver/functions/clean.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const parse = __webpack_require__(/*! ./parse */ \"./node_modules/semver/functions/parse.js\")\nconst clean = (version, options) => {\n  const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n  return s ? s.version : null\n}\nmodule.exports = clean\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/functions/clean.js?")},"./node_modules/semver/functions/cmp.js":
/*!**********************************************!*\
  !*** ./node_modules/semver/functions/cmp.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const eq = __webpack_require__(/*! ./eq */ \"./node_modules/semver/functions/eq.js\")\nconst neq = __webpack_require__(/*! ./neq */ \"./node_modules/semver/functions/neq.js\")\nconst gt = __webpack_require__(/*! ./gt */ \"./node_modules/semver/functions/gt.js\")\nconst gte = __webpack_require__(/*! ./gte */ \"./node_modules/semver/functions/gte.js\")\nconst lt = __webpack_require__(/*! ./lt */ \"./node_modules/semver/functions/lt.js\")\nconst lte = __webpack_require__(/*! ./lte */ \"./node_modules/semver/functions/lte.js\")\n\nconst cmp = (a, op, b, loose) => {\n  switch (op) {\n    case '===':\n      if (typeof a === 'object') {\n        a = a.version\n      }\n      if (typeof b === 'object') {\n        b = b.version\n      }\n      return a === b\n\n    case '!==':\n      if (typeof a === 'object') {\n        a = a.version\n      }\n      if (typeof b === 'object') {\n        b = b.version\n      }\n      return a !== b\n\n    case '':\n    case '=':\n    case '==':\n      return eq(a, b, loose)\n\n    case '!=':\n      return neq(a, b, loose)\n\n    case '>':\n      return gt(a, b, loose)\n\n    case '>=':\n      return gte(a, b, loose)\n\n    case '<':\n      return lt(a, b, loose)\n\n    case '<=':\n      return lte(a, b, loose)\n\n    default:\n      throw new TypeError(`Invalid operator: ${op}`)\n  }\n}\nmodule.exports = cmp\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/functions/cmp.js?")},"./node_modules/semver/functions/coerce.js":
/*!*************************************************!*\
  !*** ./node_modules/semver/functions/coerce.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const SemVer = __webpack_require__(/*! ../classes/semver */ \"./node_modules/semver/classes/semver.js\")\nconst parse = __webpack_require__(/*! ./parse */ \"./node_modules/semver/functions/parse.js\")\nconst { re, t } = __webpack_require__(/*! ../internal/re */ \"./node_modules/semver/internal/re.js\")\n\nconst coerce = (version, options) => {\n  if (version instanceof SemVer) {\n    return version\n  }\n\n  if (typeof version === 'number') {\n    version = String(version)\n  }\n\n  if (typeof version !== 'string') {\n    return null\n  }\n\n  options = options || {}\n\n  let match = null\n  if (!options.rtl) {\n    match = version.match(re[t.COERCE])\n  } else {\n    // Find the right-most coercible string that does not share\n    // a terminus with a more left-ward coercible string.\n    // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n    //\n    // Walk through the string checking with a /g regexp\n    // Manually set the index so as to pick up overlapping matches.\n    // Stop when we get a match that ends at the string end, since no\n    // coercible string can be more right-ward without the same terminus.\n    let next\n    while ((next = re[t.COERCERTL].exec(version)) &&\n        (!match || match.index + match[0].length !== version.length)\n    ) {\n      if (!match ||\n            next.index + next[0].length !== match.index + match[0].length) {\n        match = next\n      }\n      re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length\n    }\n    // leave it in a clean state\n    re[t.COERCERTL].lastIndex = -1\n  }\n\n  if (match === null) {\n    return null\n  }\n\n  return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)\n}\nmodule.exports = coerce\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/functions/coerce.js?")},"./node_modules/semver/functions/compare-build.js":
/*!********************************************************!*\
  !*** ./node_modules/semver/functions/compare-build.js ***!
  \********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const SemVer = __webpack_require__(/*! ../classes/semver */ "./node_modules/semver/classes/semver.js")\nconst compareBuild = (a, b, loose) => {\n  const versionA = new SemVer(a, loose)\n  const versionB = new SemVer(b, loose)\n  return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/functions/compare-build.js?')},"./node_modules/semver/functions/compare-loose.js":
/*!********************************************************!*\
  !*** ./node_modules/semver/functions/compare-loose.js ***!
  \********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const compare = __webpack_require__(/*! ./compare */ "./node_modules/semver/functions/compare.js")\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/functions/compare-loose.js?')},"./node_modules/semver/functions/compare.js":
/*!**************************************************!*\
  !*** ./node_modules/semver/functions/compare.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const SemVer = __webpack_require__(/*! ../classes/semver */ "./node_modules/semver/classes/semver.js")\nconst compare = (a, b, loose) =>\n  new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/functions/compare.js?')},"./node_modules/semver/functions/diff.js":
/*!***********************************************!*\
  !*** ./node_modules/semver/functions/diff.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const parse = __webpack_require__(/*! ./parse */ \"./node_modules/semver/functions/parse.js\")\nconst eq = __webpack_require__(/*! ./eq */ \"./node_modules/semver/functions/eq.js\")\n\nconst diff = (version1, version2) => {\n  if (eq(version1, version2)) {\n    return null\n  } else {\n    const v1 = parse(version1)\n    const v2 = parse(version2)\n    const hasPre = v1.prerelease.length || v2.prerelease.length\n    const prefix = hasPre ? 'pre' : ''\n    const defaultResult = hasPre ? 'prerelease' : ''\n    for (const key in v1) {\n      if (key === 'major' || key === 'minor' || key === 'patch') {\n        if (v1[key] !== v2[key]) {\n          return prefix + key\n        }\n      }\n    }\n    return defaultResult // may be undefined\n  }\n}\nmodule.exports = diff\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/functions/diff.js?")},"./node_modules/semver/functions/eq.js":
/*!*********************************************!*\
  !*** ./node_modules/semver/functions/eq.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const compare = __webpack_require__(/*! ./compare */ "./node_modules/semver/functions/compare.js")\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/functions/eq.js?')},"./node_modules/semver/functions/gt.js":
/*!*********************************************!*\
  !*** ./node_modules/semver/functions/gt.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const compare = __webpack_require__(/*! ./compare */ "./node_modules/semver/functions/compare.js")\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/functions/gt.js?')},"./node_modules/semver/functions/gte.js":
/*!**********************************************!*\
  !*** ./node_modules/semver/functions/gte.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const compare = __webpack_require__(/*! ./compare */ "./node_modules/semver/functions/compare.js")\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/functions/gte.js?')},"./node_modules/semver/functions/inc.js":
/*!**********************************************!*\
  !*** ./node_modules/semver/functions/inc.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const SemVer = __webpack_require__(/*! ../classes/semver */ \"./node_modules/semver/classes/semver.js\")\n\nconst inc = (version, release, options, identifier) => {\n  if (typeof (options) === 'string') {\n    identifier = options\n    options = undefined\n  }\n\n  try {\n    return new SemVer(\n      version instanceof SemVer ? version.version : version,\n      options\n    ).inc(release, identifier).version\n  } catch (er) {\n    return null\n  }\n}\nmodule.exports = inc\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/functions/inc.js?")},"./node_modules/semver/functions/lt.js":
/*!*********************************************!*\
  !*** ./node_modules/semver/functions/lt.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const compare = __webpack_require__(/*! ./compare */ "./node_modules/semver/functions/compare.js")\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/functions/lt.js?')},"./node_modules/semver/functions/lte.js":
/*!**********************************************!*\
  !*** ./node_modules/semver/functions/lte.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const compare = __webpack_require__(/*! ./compare */ "./node_modules/semver/functions/compare.js")\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/functions/lte.js?')},"./node_modules/semver/functions/major.js":
/*!************************************************!*\
  !*** ./node_modules/semver/functions/major.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const SemVer = __webpack_require__(/*! ../classes/semver */ "./node_modules/semver/classes/semver.js")\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/functions/major.js?')},"./node_modules/semver/functions/minor.js":
/*!************************************************!*\
  !*** ./node_modules/semver/functions/minor.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const SemVer = __webpack_require__(/*! ../classes/semver */ "./node_modules/semver/classes/semver.js")\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/functions/minor.js?')},"./node_modules/semver/functions/neq.js":
/*!**********************************************!*\
  !*** ./node_modules/semver/functions/neq.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const compare = __webpack_require__(/*! ./compare */ "./node_modules/semver/functions/compare.js")\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/functions/neq.js?')},"./node_modules/semver/functions/parse.js":
/*!************************************************!*\
  !*** ./node_modules/semver/functions/parse.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const { MAX_LENGTH } = __webpack_require__(/*! ../internal/constants */ "./node_modules/semver/internal/constants.js")\nconst { re, t } = __webpack_require__(/*! ../internal/re */ "./node_modules/semver/internal/re.js")\nconst SemVer = __webpack_require__(/*! ../classes/semver */ "./node_modules/semver/classes/semver.js")\n\nconst parseOptions = __webpack_require__(/*! ../internal/parse-options */ "./node_modules/semver/internal/parse-options.js")\nconst parse = (version, options) => {\n  options = parseOptions(options)\n\n  if (version instanceof SemVer) {\n    return version\n  }\n\n  if (typeof version !== \'string\') {\n    return null\n  }\n\n  if (version.length > MAX_LENGTH) {\n    return null\n  }\n\n  const r = options.loose ? re[t.LOOSE] : re[t.FULL]\n  if (!r.test(version)) {\n    return null\n  }\n\n  try {\n    return new SemVer(version, options)\n  } catch (er) {\n    return null\n  }\n}\n\nmodule.exports = parse\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/functions/parse.js?')},"./node_modules/semver/functions/patch.js":
/*!************************************************!*\
  !*** ./node_modules/semver/functions/patch.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const SemVer = __webpack_require__(/*! ../classes/semver */ "./node_modules/semver/classes/semver.js")\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/functions/patch.js?')},"./node_modules/semver/functions/prerelease.js":
/*!*****************************************************!*\
  !*** ./node_modules/semver/functions/prerelease.js ***!
  \*****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const parse = __webpack_require__(/*! ./parse */ "./node_modules/semver/functions/parse.js")\nconst prerelease = (version, options) => {\n  const parsed = parse(version, options)\n  return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/functions/prerelease.js?')},"./node_modules/semver/functions/rcompare.js":
/*!***************************************************!*\
  !*** ./node_modules/semver/functions/rcompare.js ***!
  \***************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const compare = __webpack_require__(/*! ./compare */ "./node_modules/semver/functions/compare.js")\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/functions/rcompare.js?')},"./node_modules/semver/functions/rsort.js":
/*!************************************************!*\
  !*** ./node_modules/semver/functions/rsort.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const compareBuild = __webpack_require__(/*! ./compare-build */ "./node_modules/semver/functions/compare-build.js")\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/functions/rsort.js?')},"./node_modules/semver/functions/satisfies.js":
/*!****************************************************!*\
  !*** ./node_modules/semver/functions/satisfies.js ***!
  \****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const Range = __webpack_require__(/*! ../classes/range */ "./node_modules/semver/classes/range.js")\nconst satisfies = (version, range, options) => {\n  try {\n    range = new Range(range, options)\n  } catch (er) {\n    return false\n  }\n  return range.test(version)\n}\nmodule.exports = satisfies\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/functions/satisfies.js?')},"./node_modules/semver/functions/sort.js":
/*!***********************************************!*\
  !*** ./node_modules/semver/functions/sort.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const compareBuild = __webpack_require__(/*! ./compare-build */ "./node_modules/semver/functions/compare-build.js")\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/functions/sort.js?')},"./node_modules/semver/functions/valid.js":
/*!************************************************!*\
  !*** ./node_modules/semver/functions/valid.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const parse = __webpack_require__(/*! ./parse */ "./node_modules/semver/functions/parse.js")\nconst valid = (version, options) => {\n  const v = parse(version, options)\n  return v ? v.version : null\n}\nmodule.exports = valid\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/functions/valid.js?')},"./node_modules/semver/index.js":
/*!**************************************!*\
  !*** ./node_modules/semver/index.js ***!
  \**************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('// just pre-load all the stuff that index.js lazily exports\nconst internalRe = __webpack_require__(/*! ./internal/re */ "./node_modules/semver/internal/re.js")\nmodule.exports = {\n  re: internalRe.re,\n  src: internalRe.src,\n  tokens: internalRe.t,\n  SEMVER_SPEC_VERSION: (__webpack_require__(/*! ./internal/constants */ "./node_modules/semver/internal/constants.js").SEMVER_SPEC_VERSION),\n  SemVer: __webpack_require__(/*! ./classes/semver */ "./node_modules/semver/classes/semver.js"),\n  compareIdentifiers: (__webpack_require__(/*! ./internal/identifiers */ "./node_modules/semver/internal/identifiers.js").compareIdentifiers),\n  rcompareIdentifiers: (__webpack_require__(/*! ./internal/identifiers */ "./node_modules/semver/internal/identifiers.js").rcompareIdentifiers),\n  parse: __webpack_require__(/*! ./functions/parse */ "./node_modules/semver/functions/parse.js"),\n  valid: __webpack_require__(/*! ./functions/valid */ "./node_modules/semver/functions/valid.js"),\n  clean: __webpack_require__(/*! ./functions/clean */ "./node_modules/semver/functions/clean.js"),\n  inc: __webpack_require__(/*! ./functions/inc */ "./node_modules/semver/functions/inc.js"),\n  diff: __webpack_require__(/*! ./functions/diff */ "./node_modules/semver/functions/diff.js"),\n  major: __webpack_require__(/*! ./functions/major */ "./node_modules/semver/functions/major.js"),\n  minor: __webpack_require__(/*! ./functions/minor */ "./node_modules/semver/functions/minor.js"),\n  patch: __webpack_require__(/*! ./functions/patch */ "./node_modules/semver/functions/patch.js"),\n  prerelease: __webpack_require__(/*! ./functions/prerelease */ "./node_modules/semver/functions/prerelease.js"),\n  compare: __webpack_require__(/*! ./functions/compare */ "./node_modules/semver/functions/compare.js"),\n  rcompare: __webpack_require__(/*! ./functions/rcompare */ "./node_modules/semver/functions/rcompare.js"),\n  compareLoose: __webpack_require__(/*! ./functions/compare-loose */ "./node_modules/semver/functions/compare-loose.js"),\n  compareBuild: __webpack_require__(/*! ./functions/compare-build */ "./node_modules/semver/functions/compare-build.js"),\n  sort: __webpack_require__(/*! ./functions/sort */ "./node_modules/semver/functions/sort.js"),\n  rsort: __webpack_require__(/*! ./functions/rsort */ "./node_modules/semver/functions/rsort.js"),\n  gt: __webpack_require__(/*! ./functions/gt */ "./node_modules/semver/functions/gt.js"),\n  lt: __webpack_require__(/*! ./functions/lt */ "./node_modules/semver/functions/lt.js"),\n  eq: __webpack_require__(/*! ./functions/eq */ "./node_modules/semver/functions/eq.js"),\n  neq: __webpack_require__(/*! ./functions/neq */ "./node_modules/semver/functions/neq.js"),\n  gte: __webpack_require__(/*! ./functions/gte */ "./node_modules/semver/functions/gte.js"),\n  lte: __webpack_require__(/*! ./functions/lte */ "./node_modules/semver/functions/lte.js"),\n  cmp: __webpack_require__(/*! ./functions/cmp */ "./node_modules/semver/functions/cmp.js"),\n  coerce: __webpack_require__(/*! ./functions/coerce */ "./node_modules/semver/functions/coerce.js"),\n  Comparator: __webpack_require__(/*! ./classes/comparator */ "./node_modules/semver/classes/comparator.js"),\n  Range: __webpack_require__(/*! ./classes/range */ "./node_modules/semver/classes/range.js"),\n  satisfies: __webpack_require__(/*! ./functions/satisfies */ "./node_modules/semver/functions/satisfies.js"),\n  toComparators: __webpack_require__(/*! ./ranges/to-comparators */ "./node_modules/semver/ranges/to-comparators.js"),\n  maxSatisfying: __webpack_require__(/*! ./ranges/max-satisfying */ "./node_modules/semver/ranges/max-satisfying.js"),\n  minSatisfying: __webpack_require__(/*! ./ranges/min-satisfying */ "./node_modules/semver/ranges/min-satisfying.js"),\n  minVersion: __webpack_require__(/*! ./ranges/min-version */ "./node_modules/semver/ranges/min-version.js"),\n  validRange: __webpack_require__(/*! ./ranges/valid */ "./node_modules/semver/ranges/valid.js"),\n  outside: __webpack_require__(/*! ./ranges/outside */ "./node_modules/semver/ranges/outside.js"),\n  gtr: __webpack_require__(/*! ./ranges/gtr */ "./node_modules/semver/ranges/gtr.js"),\n  ltr: __webpack_require__(/*! ./ranges/ltr */ "./node_modules/semver/ranges/ltr.js"),\n  intersects: __webpack_require__(/*! ./ranges/intersects */ "./node_modules/semver/ranges/intersects.js"),\n  simplifyRange: __webpack_require__(/*! ./ranges/simplify */ "./node_modules/semver/ranges/simplify.js"),\n  subset: __webpack_require__(/*! ./ranges/subset */ "./node_modules/semver/ranges/subset.js"),\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/index.js?')},"./node_modules/semver/internal/constants.js":
/*!***************************************************!*\
  !*** ./node_modules/semver/internal/constants.js ***!
  \***************************************************/module=>{eval("// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\nmodule.exports = {\n  SEMVER_SPEC_VERSION,\n  MAX_LENGTH,\n  MAX_SAFE_INTEGER,\n  MAX_SAFE_COMPONENT_LENGTH,\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/internal/constants.js?")},"./node_modules/semver/internal/debug.js":
/*!***********************************************!*\
  !*** ./node_modules/semver/internal/debug.js ***!
  \***********************************************/module=>{eval('const debug = (\n  typeof process === \'object\' &&\n  ({"APP_ENV":"webpack"}) &&\n  ({"APP_ENV":"webpack"}).NODE_DEBUG &&\n  /\\bsemver\\b/i.test(({"APP_ENV":"webpack"}).NODE_DEBUG)\n) ? (...args) => console.error(\'SEMVER\', ...args)\n  : () => {}\n\nmodule.exports = debug\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/internal/debug.js?')},"./node_modules/semver/internal/identifiers.js":
/*!*****************************************************!*\
  !*** ./node_modules/semver/internal/identifiers.js ***!
  \*****************************************************/module=>{eval("const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n  const anum = numeric.test(a)\n  const bnum = numeric.test(b)\n\n  if (anum && bnum) {\n    a = +a\n    b = +b\n  }\n\n  return a === b ? 0\n    : (anum && !bnum) ? -1\n    : (bnum && !anum) ? 1\n    : a < b ? -1\n    : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n  compareIdentifiers,\n  rcompareIdentifiers,\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/internal/identifiers.js?")},"./node_modules/semver/internal/parse-options.js":
/*!*******************************************************!*\
  !*** ./node_modules/semver/internal/parse-options.js ***!
  \*******************************************************/module=>{eval("// parse out just the options we care about so we always get a consistent\n// obj with keys in a consistent order.\nconst opts = ['includePrerelease', 'loose', 'rtl']\nconst parseOptions = options =>\n  !options ? {}\n  : typeof options !== 'object' ? { loose: true }\n  : opts.filter(k => options[k]).reduce((o, k) => {\n    o[k] = true\n    return o\n  }, {})\nmodule.exports = parseOptions\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/internal/parse-options.js?")},"./node_modules/semver/internal/re.js":
/*!********************************************!*\
  !*** ./node_modules/semver/internal/re.js ***!
  \********************************************/(module,exports,__webpack_require__)=>{eval("const { MAX_SAFE_COMPONENT_LENGTH } = __webpack_require__(/*! ./constants */ \"./node_modules/semver/internal/constants.js\")\nconst debug = __webpack_require__(/*! ./debug */ \"./node_modules/semver/internal/debug.js\")\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst createToken = (name, value, isGlobal) => {\n  const index = R++\n  debug(name, index, value)\n  t[name] = index\n  src[index] = value\n  re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '[0-9]+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*')\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n                   `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n                   `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n                        `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n                        `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+')\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups.  The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n  src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n  src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:${src[t.PRERELEASE]})?${\n                     src[t.BUILD]}?` +\n                   `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:${src[t.PRERELEASELOOSE]})?${\n                          src[t.BUILD]}?` +\n                        `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCE', `${'(^|[^\\\\d])' +\n              '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n              `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n              `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n              `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n                   `\\\\s+-\\\\s+` +\n                   `(${src[t.XRANGEPLAIN]})` +\n                   `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n                        `\\\\s+-\\\\s+` +\n                        `(${src[t.XRANGEPLAINLOOSE]})` +\n                        `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/internal/re.js?")},"./node_modules/semver/ranges/gtr.js":
/*!*******************************************!*\
  !*** ./node_modules/semver/ranges/gtr.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("// Determine if version is greater than all the versions possible in the range.\nconst outside = __webpack_require__(/*! ./outside */ \"./node_modules/semver/ranges/outside.js\")\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/ranges/gtr.js?")},"./node_modules/semver/ranges/intersects.js":
/*!**************************************************!*\
  !*** ./node_modules/semver/ranges/intersects.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const Range = __webpack_require__(/*! ../classes/range */ "./node_modules/semver/classes/range.js")\nconst intersects = (r1, r2, options) => {\n  r1 = new Range(r1, options)\n  r2 = new Range(r2, options)\n  return r1.intersects(r2)\n}\nmodule.exports = intersects\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/ranges/intersects.js?')},"./node_modules/semver/ranges/ltr.js":
/*!*******************************************!*\
  !*** ./node_modules/semver/ranges/ltr.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const outside = __webpack_require__(/*! ./outside */ \"./node_modules/semver/ranges/outside.js\")\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/ranges/ltr.js?")},"./node_modules/semver/ranges/max-satisfying.js":
/*!******************************************************!*\
  !*** ./node_modules/semver/ranges/max-satisfying.js ***!
  \******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const SemVer = __webpack_require__(/*! ../classes/semver */ "./node_modules/semver/classes/semver.js")\nconst Range = __webpack_require__(/*! ../classes/range */ "./node_modules/semver/classes/range.js")\n\nconst maxSatisfying = (versions, range, options) => {\n  let max = null\n  let maxSV = null\n  let rangeObj = null\n  try {\n    rangeObj = new Range(range, options)\n  } catch (er) {\n    return null\n  }\n  versions.forEach((v) => {\n    if (rangeObj.test(v)) {\n      // satisfies(v, range, options)\n      if (!max || maxSV.compare(v) === -1) {\n        // compare(max, v, true)\n        max = v\n        maxSV = new SemVer(max, options)\n      }\n    }\n  })\n  return max\n}\nmodule.exports = maxSatisfying\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/ranges/max-satisfying.js?')},"./node_modules/semver/ranges/min-satisfying.js":
/*!******************************************************!*\
  !*** ./node_modules/semver/ranges/min-satisfying.js ***!
  \******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const SemVer = __webpack_require__(/*! ../classes/semver */ "./node_modules/semver/classes/semver.js")\nconst Range = __webpack_require__(/*! ../classes/range */ "./node_modules/semver/classes/range.js")\nconst minSatisfying = (versions, range, options) => {\n  let min = null\n  let minSV = null\n  let rangeObj = null\n  try {\n    rangeObj = new Range(range, options)\n  } catch (er) {\n    return null\n  }\n  versions.forEach((v) => {\n    if (rangeObj.test(v)) {\n      // satisfies(v, range, options)\n      if (!min || minSV.compare(v) === 1) {\n        // compare(min, v, true)\n        min = v\n        minSV = new SemVer(min, options)\n      }\n    }\n  })\n  return min\n}\nmodule.exports = minSatisfying\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/ranges/min-satisfying.js?')},"./node_modules/semver/ranges/min-version.js":
/*!***************************************************!*\
  !*** ./node_modules/semver/ranges/min-version.js ***!
  \***************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const SemVer = __webpack_require__(/*! ../classes/semver */ \"./node_modules/semver/classes/semver.js\")\nconst Range = __webpack_require__(/*! ../classes/range */ \"./node_modules/semver/classes/range.js\")\nconst gt = __webpack_require__(/*! ../functions/gt */ \"./node_modules/semver/functions/gt.js\")\n\nconst minVersion = (range, loose) => {\n  range = new Range(range, loose)\n\n  let minver = new SemVer('0.0.0')\n  if (range.test(minver)) {\n    return minver\n  }\n\n  minver = new SemVer('0.0.0-0')\n  if (range.test(minver)) {\n    return minver\n  }\n\n  minver = null\n  for (let i = 0; i < range.set.length; ++i) {\n    const comparators = range.set[i]\n\n    let setMin = null\n    comparators.forEach((comparator) => {\n      // Clone to avoid manipulating the comparator's semver object.\n      const compver = new SemVer(comparator.semver.version)\n      switch (comparator.operator) {\n        case '>':\n          if (compver.prerelease.length === 0) {\n            compver.patch++\n          } else {\n            compver.prerelease.push(0)\n          }\n          compver.raw = compver.format()\n          /* fallthrough */\n        case '':\n        case '>=':\n          if (!setMin || gt(compver, setMin)) {\n            setMin = compver\n          }\n          break\n        case '<':\n        case '<=':\n          /* Ignore maximum versions */\n          break\n        /* istanbul ignore next */\n        default:\n          throw new Error(`Unexpected operation: ${comparator.operator}`)\n      }\n    })\n    if (setMin && (!minver || gt(minver, setMin))) {\n      minver = setMin\n    }\n  }\n\n  if (minver && range.test(minver)) {\n    return minver\n  }\n\n  return null\n}\nmodule.exports = minVersion\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/ranges/min-version.js?")},"./node_modules/semver/ranges/outside.js":
/*!***********************************************!*\
  !*** ./node_modules/semver/ranges/outside.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('const SemVer = __webpack_require__(/*! ../classes/semver */ "./node_modules/semver/classes/semver.js")\nconst Comparator = __webpack_require__(/*! ../classes/comparator */ "./node_modules/semver/classes/comparator.js")\nconst { ANY } = Comparator\nconst Range = __webpack_require__(/*! ../classes/range */ "./node_modules/semver/classes/range.js")\nconst satisfies = __webpack_require__(/*! ../functions/satisfies */ "./node_modules/semver/functions/satisfies.js")\nconst gt = __webpack_require__(/*! ../functions/gt */ "./node_modules/semver/functions/gt.js")\nconst lt = __webpack_require__(/*! ../functions/lt */ "./node_modules/semver/functions/lt.js")\nconst lte = __webpack_require__(/*! ../functions/lte */ "./node_modules/semver/functions/lte.js")\nconst gte = __webpack_require__(/*! ../functions/gte */ "./node_modules/semver/functions/gte.js")\n\nconst outside = (version, range, hilo, options) => {\n  version = new SemVer(version, options)\n  range = new Range(range, options)\n\n  let gtfn, ltefn, ltfn, comp, ecomp\n  switch (hilo) {\n    case \'>\':\n      gtfn = gt\n      ltefn = lte\n      ltfn = lt\n      comp = \'>\'\n      ecomp = \'>=\'\n      break\n    case \'<\':\n      gtfn = lt\n      ltefn = gte\n      ltfn = gt\n      comp = \'<\'\n      ecomp = \'<=\'\n      break\n    default:\n      throw new TypeError(\'Must provide a hilo val of "<" or ">"\')\n  }\n\n  // If it satisfies the range it is not outside\n  if (satisfies(version, range, options)) {\n    return false\n  }\n\n  // From now on, variable terms are as if we\'re in "gtr" mode.\n  // but note that everything is flipped for the "ltr" function.\n\n  for (let i = 0; i < range.set.length; ++i) {\n    const comparators = range.set[i]\n\n    let high = null\n    let low = null\n\n    comparators.forEach((comparator) => {\n      if (comparator.semver === ANY) {\n        comparator = new Comparator(\'>=0.0.0\')\n      }\n      high = high || comparator\n      low = low || comparator\n      if (gtfn(comparator.semver, high.semver, options)) {\n        high = comparator\n      } else if (ltfn(comparator.semver, low.semver, options)) {\n        low = comparator\n      }\n    })\n\n    // If the edge version comparator has a operator then our version\n    // isn\'t outside it\n    if (high.operator === comp || high.operator === ecomp) {\n      return false\n    }\n\n    // If the lowest version comparator has an operator and our version\n    // is less than it then it isn\'t higher than the range\n    if ((!low.operator || low.operator === comp) &&\n        ltefn(version, low.semver)) {\n      return false\n    } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n      return false\n    }\n  }\n  return true\n}\n\nmodule.exports = outside\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/ranges/outside.js?')},"./node_modules/semver/ranges/simplify.js":
/*!************************************************!*\
  !*** ./node_modules/semver/ranges/simplify.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = __webpack_require__(/*! ../functions/satisfies.js */ \"./node_modules/semver/functions/satisfies.js\")\nconst compare = __webpack_require__(/*! ../functions/compare.js */ \"./node_modules/semver/functions/compare.js\")\nmodule.exports = (versions, range, options) => {\n  const set = []\n  let first = null\n  let prev = null\n  const v = versions.sort((a, b) => compare(a, b, options))\n  for (const version of v) {\n    const included = satisfies(version, range, options)\n    if (included) {\n      prev = version\n      if (!first) {\n        first = version\n      }\n    } else {\n      if (prev) {\n        set.push([first, prev])\n      }\n      prev = null\n      first = null\n    }\n  }\n  if (first) {\n    set.push([first, null])\n  }\n\n  const ranges = []\n  for (const [min, max] of set) {\n    if (min === max) {\n      ranges.push(min)\n    } else if (!max && min === v[0]) {\n      ranges.push('*')\n    } else if (!max) {\n      ranges.push(`>=${min}`)\n    } else if (min === v[0]) {\n      ranges.push(`<=${max}`)\n    } else {\n      ranges.push(`${min} - ${max}`)\n    }\n  }\n  const simplified = ranges.join(' || ')\n  const original = typeof range.raw === 'string' ? range.raw : String(range)\n  return simplified.length < original.length ? simplified : range\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/ranges/simplify.js?")},"./node_modules/semver/ranges/subset.js":
/*!**********************************************!*\
  !*** ./node_modules/semver/ranges/subset.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const Range = __webpack_require__(/*! ../classes/range.js */ \"./node_modules/semver/classes/range.js\")\nconst Comparator = __webpack_require__(/*! ../classes/comparator.js */ \"./node_modules/semver/classes/comparator.js\")\nconst { ANY } = Comparator\nconst satisfies = __webpack_require__(/*! ../functions/satisfies.js */ \"./node_modules/semver/functions/satisfies.js\")\nconst compare = __webpack_require__(/*! ../functions/compare.js */ \"./node_modules/semver/functions/compare.js\")\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n//   some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n//   - If C is only the ANY comparator, return true\n//   - Else if in prerelease mode, return false\n//   - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n//   - if in prerelease mode, return true\n//   - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n//   - If GT, and EQ does not satisfy GT, return true (null set)\n//   - If LT, and EQ does not satisfy LT, return true (null set)\n//   - If EQ satisfies every C, return true\n//   - Else return false\n// - If GT\n//   - If GT.semver is lower than any > or >= comp in C, return false\n//   - If GT is >=, and GT.semver does not satisfy every C, return false\n//   - If GT.semver has a prerelease, and not in prerelease mode\n//     - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n//   - If LT.semver is greater than any < or <= comp in C, return false\n//   - If LT is <=, and LT.semver does not satisfy every C, return false\n//   - If GT.semver has a prerelease, and not in prerelease mode\n//     - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n  if (sub === dom) {\n    return true\n  }\n\n  sub = new Range(sub, options)\n  dom = new Range(dom, options)\n  let sawNonNull = false\n\n  OUTER: for (const simpleSub of sub.set) {\n    for (const simpleDom of dom.set) {\n      const isSub = simpleSubset(simpleSub, simpleDom, options)\n      sawNonNull = sawNonNull || isSub !== null\n      if (isSub) {\n        continue OUTER\n      }\n    }\n    // the null set is a subset of everything, but null simple ranges in\n    // a complex range should be ignored.  so if we saw a non-null range,\n    // then we know this isn't a subset, but if EVERY simple range was null,\n    // then it is a subset.\n    if (sawNonNull) {\n      return false\n    }\n  }\n  return true\n}\n\nconst simpleSubset = (sub, dom, options) => {\n  if (sub === dom) {\n    return true\n  }\n\n  if (sub.length === 1 && sub[0].semver === ANY) {\n    if (dom.length === 1 && dom[0].semver === ANY) {\n      return true\n    } else if (options.includePrerelease) {\n      sub = [new Comparator('>=0.0.0-0')]\n    } else {\n      sub = [new Comparator('>=0.0.0')]\n    }\n  }\n\n  if (dom.length === 1 && dom[0].semver === ANY) {\n    if (options.includePrerelease) {\n      return true\n    } else {\n      dom = [new Comparator('>=0.0.0')]\n    }\n  }\n\n  const eqSet = new Set()\n  let gt, lt\n  for (const c of sub) {\n    if (c.operator === '>' || c.operator === '>=') {\n      gt = higherGT(gt, c, options)\n    } else if (c.operator === '<' || c.operator === '<=') {\n      lt = lowerLT(lt, c, options)\n    } else {\n      eqSet.add(c.semver)\n    }\n  }\n\n  if (eqSet.size > 1) {\n    return null\n  }\n\n  let gtltComp\n  if (gt && lt) {\n    gtltComp = compare(gt.semver, lt.semver, options)\n    if (gtltComp > 0) {\n      return null\n    } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n      return null\n    }\n  }\n\n  // will iterate one or zero times\n  for (const eq of eqSet) {\n    if (gt && !satisfies(eq, String(gt), options)) {\n      return null\n    }\n\n    if (lt && !satisfies(eq, String(lt), options)) {\n      return null\n    }\n\n    for (const c of dom) {\n      if (!satisfies(eq, String(c), options)) {\n        return false\n      }\n    }\n\n    return true\n  }\n\n  let higher, lower\n  let hasDomLT, hasDomGT\n  // if the subset has a prerelease, we need a comparator in the superset\n  // with the same tuple and a prerelease, or it's not a subset\n  let needDomLTPre = lt &&\n    !options.includePrerelease &&\n    lt.semver.prerelease.length ? lt.semver : false\n  let needDomGTPre = gt &&\n    !options.includePrerelease &&\n    gt.semver.prerelease.length ? gt.semver : false\n  // exception: <1.2.3-0 is the same as <1.2.3\n  if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n      lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n    needDomLTPre = false\n  }\n\n  for (const c of dom) {\n    hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n    hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n    if (gt) {\n      if (needDomGTPre) {\n        if (c.semver.prerelease && c.semver.prerelease.length &&\n            c.semver.major === needDomGTPre.major &&\n            c.semver.minor === needDomGTPre.minor &&\n            c.semver.patch === needDomGTPre.patch) {\n          needDomGTPre = false\n        }\n      }\n      if (c.operator === '>' || c.operator === '>=') {\n        higher = higherGT(gt, c, options)\n        if (higher === c && higher !== gt) {\n          return false\n        }\n      } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n        return false\n      }\n    }\n    if (lt) {\n      if (needDomLTPre) {\n        if (c.semver.prerelease && c.semver.prerelease.length &&\n            c.semver.major === needDomLTPre.major &&\n            c.semver.minor === needDomLTPre.minor &&\n            c.semver.patch === needDomLTPre.patch) {\n          needDomLTPre = false\n        }\n      }\n      if (c.operator === '<' || c.operator === '<=') {\n        lower = lowerLT(lt, c, options)\n        if (lower === c && lower !== lt) {\n          return false\n        }\n      } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n        return false\n      }\n    }\n    if (!c.operator && (lt || gt) && gtltComp !== 0) {\n      return false\n    }\n  }\n\n  // if there was a < or >, and nothing in the dom, then must be false\n  // UNLESS it was limited by another range in the other direction.\n  // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n  if (gt && hasDomLT && !lt && gtltComp !== 0) {\n    return false\n  }\n\n  if (lt && hasDomGT && !gt && gtltComp !== 0) {\n    return false\n  }\n\n  // we needed a prerelease range in a specific tuple, but didn't get one\n  // then this isn't a subset.  eg >=1.2.3-pre is not a subset of >=1.0.0,\n  // because it includes prereleases in the 1.2.3 tuple\n  if (needDomGTPre || needDomLTPre) {\n    return false\n  }\n\n  return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n  if (!a) {\n    return b\n  }\n  const comp = compare(a.semver, b.semver, options)\n  return comp > 0 ? a\n    : comp < 0 ? b\n    : b.operator === '>' && a.operator === '>=' ? b\n    : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n  if (!a) {\n    return b\n  }\n  const comp = compare(a.semver, b.semver, options)\n  return comp < 0 ? a\n    : comp > 0 ? b\n    : b.operator === '<' && a.operator === '<=' ? b\n    : a\n}\n\nmodule.exports = subset\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/ranges/subset.js?")},"./node_modules/semver/ranges/to-comparators.js":
/*!******************************************************!*\
  !*** ./node_modules/semver/ranges/to-comparators.js ***!
  \******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const Range = __webpack_require__(/*! ../classes/range */ \"./node_modules/semver/classes/range.js\")\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n  new Range(range, options).set\n    .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/ranges/to-comparators.js?")},"./node_modules/semver/ranges/valid.js":
/*!*********************************************!*\
  !*** ./node_modules/semver/ranges/valid.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const Range = __webpack_require__(/*! ../classes/range */ \"./node_modules/semver/classes/range.js\")\nconst validRange = (range, options) => {\n  try {\n    // Return '*' instead of '' so that truthiness works.\n    // This will throw if it's invalid anyway\n    return new Range(range, options).range || '*'\n  } catch (er) {\n    return null\n  }\n}\nmodule.exports = validRange\n\n\n//# sourceURL=webpack://txadmin/./node_modules/semver/ranges/valid.js?")},"./node_modules/seq-queue/index.js":
/*!*****************************************!*\
  !*** ./node_modules/seq-queue/index.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('module.exports = __webpack_require__(/*! ./lib/seq-queue */ "./node_modules/seq-queue/lib/seq-queue.js");\n\n//# sourceURL=webpack://txadmin/./node_modules/seq-queue/index.js?')},"./node_modules/seq-queue/lib/seq-queue.js":
/*!*************************************************!*\
  !*** ./node_modules/seq-queue/lib/seq-queue.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var EventEmitter = (__webpack_require__(/*! events */ \"events\").EventEmitter);\nvar util = __webpack_require__(/*! util */ \"util\");\n\nvar DEFAULT_TIMEOUT = 3000;\nvar INIT_ID = 0;\nvar EVENT_CLOSED = 'closed';\nvar EVENT_DRAINED = 'drained';\n\n/**\n * Instance a new queue\n *\n * @param {Number} timeout a global timeout for new queue\n * @class\n * @constructor\n */\nvar SeqQueue = function(timeout) {\n\tEventEmitter.call(this);\n\t\n\tif(timeout && timeout > 0) {\n\t\tthis.timeout = timeout;\n\t} else {\n\t\tthis.timeout = DEFAULT_TIMEOUT;\n\t}\n\t\n\tthis.status = SeqQueueManager.STATUS_IDLE;\n\tthis.curId = INIT_ID;\n\tthis.queue = [];\n};\nutil.inherits(SeqQueue, EventEmitter);\n\n/**\n * Add a task into queue.\n * \n * @param fn new request\n * @param ontimeout callback when task timeout\n * @param timeout timeout for current request. take the global timeout if this is invalid\n * @returns true or false\n */\nSeqQueue.prototype.push = function(fn, ontimeout, timeout) {\n\tif(this.status !== SeqQueueManager.STATUS_IDLE && this.status !== SeqQueueManager.STATUS_BUSY) {\n\t\t//ignore invalid status\n\t\treturn false;\n\t}\n\t\n\tif(typeof fn !== 'function') {\n\t\tthrow new Error('fn should be a function.');\n\t}\n\tthis.queue.push({fn: fn, ontimeout: ontimeout, timeout: timeout});\n\n\tif(this.status === SeqQueueManager.STATUS_IDLE) {\n\t\tthis.status = SeqQueueManager.STATUS_BUSY;\n\t\tvar self = this;\n\t\tprocess.nextTick(function() {\n\t\t\tself._next(self.curId);\n\t\t});\n\t}\n\treturn true;\n};\n\n/**\n * Close queue\n * \n * @param {Boolean} force if true will close the queue immediately else will execute the rest task in queue\n */\nSeqQueue.prototype.close = function(force) {\n\tif(this.status !== SeqQueueManager.STATUS_IDLE && this.status !== SeqQueueManager.STATUS_BUSY) {\n\t\t//ignore invalid status\n\t\treturn;\n\t}\n\t\n\tif(force) {\n\t\tthis.status = SeqQueueManager.STATUS_DRAINED;\n\t\tif(this.timerId) {\n\t\t\tclearTimeout(this.timerId);\n\t\t\tthis.timerId = undefined;\n\t\t}\n\t\tthis.emit(EVENT_DRAINED);\n\t} else {\n\t\tthis.status = SeqQueueManager.STATUS_CLOSED;\n\t\tthis.emit(EVENT_CLOSED);\n\t}\n};\n\n/**\n * Invoke next task\n * \n * @param {String|Number} tid last executed task id\n * @api private\n */\nSeqQueue.prototype._next = function(tid) {\n\tif(tid !== this.curId || this.status !== SeqQueueManager.STATUS_BUSY && this.status !== SeqQueueManager.STATUS_CLOSED) {\n\t\t//ignore invalid next call\n\t\treturn;\n\t}\n\t\n\tif(this.timerId) {\n\t\tclearTimeout(this.timerId);\n\t\tthis.timerId = undefined;\n\t}\n\t\n\tvar task = this.queue.shift();\n\tif(!task) {\n\t\tif(this.status === SeqQueueManager.STATUS_BUSY) {\n\t\t\tthis.status = SeqQueueManager.STATUS_IDLE;\n\t\t\tthis.curId++;\t//modify curId to invalidate timeout task\n\t\t} else {\n\t\t\tthis.status = SeqQueueManager.STATUS_DRAINED;\n\t\t\tthis.emit(EVENT_DRAINED);\n\t\t}\n\t\treturn;\n\t}\n\t\n\tvar self = this;\n\ttask.id = ++this.curId;\n\n\tvar timeout = task.timeout > 0 ? task.timeout : this.timeout;\n\ttimeout = timeout > 0 ? timeout : DEFAULT_TIMEOUT;\n\tthis.timerId = setTimeout(function() {\n\t\tprocess.nextTick(function() {\n\t\t\tself._next(task.id);\n\t\t});\n\t\tself.emit('timeout', task);\n\t\tif(task.ontimeout) {\n\t\t\ttask.ontimeout();\n\t\t}\n\t}, timeout);\n\n\ttry {\n\t\ttask.fn({\n\t\t\tdone: function() {\n\t\t\t\tvar res = task.id === self.curId;\n\t\t\t\tprocess.nextTick(function() {\n\t\t\t\t\tself._next(task.id);\n\t\t\t\t});\n\t\t\t\treturn res;\n\t\t\t}\n\t\t});\n\t} catch(err) {\n\t\tself.emit('error', err, task);\n\t\tprocess.nextTick(function() {\n\t\t\tself._next(task.id);\n\t\t});\n\t}\n};\n\n/**\n * Queue manager.\n * \n * @module\n */\nvar SeqQueueManager = module.exports;\n\n/**\n * Queue status: idle, welcome new tasks\n *\n * @const\n * @type {Number}\n * @memberOf SeqQueueManager\n */\nSeqQueueManager.STATUS_IDLE = 0;\n\n/**\n * Queue status: busy, queue is working for some tasks now\n *\n * @const\n * @type {Number}\n * @memberOf SeqQueueManager\n */\nSeqQueueManager.STATUS_BUSY = 1;\n\n/**\n * Queue status: closed, queue has closed and would not receive task any more \n * \t\t\t\t\tand is processing the remaining tasks now.\n *\n * @const\n * @type {Number}\n * @memberOf SeqQueueManager\n */\nSeqQueueManager.STATUS_CLOSED = 2; \n\n/**\n * Queue status: drained, queue is ready to be destroy\n *\n * @const\n * @type {Number}\n * @memberOf SeqQueueManager\n */\nSeqQueueManager.STATUS_DRAINED = 3;\n\n/**\n * Create Sequence queue\n * \n * @param  {Number} timeout a global timeout for the new queue instance\n * @return {Object}         new queue instance\n * @memberOf SeqQueueManager\n */\nSeqQueueManager.createQueue = function(timeout) {\n\treturn new SeqQueue(timeout);\n};\n\n//# sourceURL=webpack://txadmin/./node_modules/seq-queue/lib/seq-queue.js?")},"./node_modules/setprototypeof/index.js":
/*!**********************************************!*\
  !*** ./node_modules/setprototypeof/index.js ***!
  \**********************************************/module=>{"use strict";eval("\n/* eslint no-proto: 0 */\nmodule.exports = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties)\n\nfunction setProtoOf (obj, proto) {\n  obj.__proto__ = proto\n  return obj\n}\n\nfunction mixinProperties (obj, proto) {\n  for (var prop in proto) {\n    if (!Object.prototype.hasOwnProperty.call(obj, prop)) {\n      obj[prop] = proto[prop]\n    }\n  }\n  return obj\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/setprototypeof/index.js?")},"./node_modules/shebang-command/index.js":
/*!***********************************************!*\
  !*** ./node_modules/shebang-command/index.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nconst shebangRegex = __webpack_require__(/*! shebang-regex */ \"./node_modules/shebang-regex/index.js\");\n\nmodule.exports = (string = '') => {\n\tconst match = string.match(shebangRegex);\n\n\tif (!match) {\n\t\treturn null;\n\t}\n\n\tconst [path, argument] = match[0].replace(/#! ?/, '').split(' ');\n\tconst binary = path.split('/').pop();\n\n\tif (binary === 'env') {\n\t\treturn argument;\n\t}\n\n\treturn argument ? `${binary} ${argument}` : binary;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/shebang-command/index.js?")},"./node_modules/shebang-regex/index.js":
/*!*********************************************!*\
  !*** ./node_modules/shebang-regex/index.js ***!
  \*********************************************/module=>{"use strict";eval("\nmodule.exports = /^#!(.*)/;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/shebang-regex/index.js?")},"./node_modules/side-channel/index.js":
/*!********************************************!*\
  !*** ./node_modules/side-channel/index.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar GetIntrinsic = __webpack_require__(/*! get-intrinsic */ \"./node_modules/get-intrinsic/index.js\");\nvar callBound = __webpack_require__(/*! call-bind/callBound */ \"./node_modules/call-bind/callBound.js\");\nvar inspect = __webpack_require__(/*! object-inspect */ \"./node_modules/object-inspect/index.js\");\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/side-channel/index.js?")},"./node_modules/signal-exit/index.js":
/*!*******************************************!*\
  !*** ./node_modules/signal-exit/index.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\nvar assert = __webpack_require__(/*! assert */ \"assert\")\nvar signals = __webpack_require__(/*! ./signals.js */ \"./node_modules/signal-exit/signals.js\")\nvar isWin = /^win/i.test(process.platform)\n\nvar EE = __webpack_require__(/*! events */ \"events\")\n/* istanbul ignore if */\nif (typeof EE !== 'function') {\n  EE = EE.EventEmitter\n}\n\nvar emitter\nif (process.__signal_exit_emitter__) {\n  emitter = process.__signal_exit_emitter__\n} else {\n  emitter = process.__signal_exit_emitter__ = new EE()\n  emitter.count = 0\n  emitter.emitted = {}\n}\n\n// Because this emitter is a global, we have to check to see if a\n// previous version of this library failed to enable infinite listeners.\n// I know what you're about to say.  But literally everything about\n// signal-exit is a compromise with evil.  Get used to it.\nif (!emitter.infinite) {\n  emitter.setMaxListeners(Infinity)\n  emitter.infinite = true\n}\n\nmodule.exports = function (cb, opts) {\n  assert.equal(typeof cb, 'function', 'a callback must be provided for exit handler')\n\n  if (loaded === false) {\n    load()\n  }\n\n  var ev = 'exit'\n  if (opts && opts.alwaysLast) {\n    ev = 'afterexit'\n  }\n\n  var remove = function () {\n    emitter.removeListener(ev, cb)\n    if (emitter.listeners('exit').length === 0 &&\n        emitter.listeners('afterexit').length === 0) {\n      unload()\n    }\n  }\n  emitter.on(ev, cb)\n\n  return remove\n}\n\nmodule.exports.unload = unload\nfunction unload () {\n  if (!loaded) {\n    return\n  }\n  loaded = false\n\n  signals.forEach(function (sig) {\n    try {\n      process.removeListener(sig, sigListeners[sig])\n    } catch (er) {}\n  })\n  process.emit = originalProcessEmit\n  process.reallyExit = originalProcessReallyExit\n  emitter.count -= 1\n}\n\nfunction emit (event, code, signal) {\n  if (emitter.emitted[event]) {\n    return\n  }\n  emitter.emitted[event] = true\n  emitter.emit(event, code, signal)\n}\n\n// { <signal>: <listener fn>, ... }\nvar sigListeners = {}\nsignals.forEach(function (sig) {\n  sigListeners[sig] = function listener () {\n    // If there are no other listeners, an exit is coming!\n    // Simplest way: remove us and then re-send the signal.\n    // We know that this will kill the process, so we can\n    // safely emit now.\n    var listeners = process.listeners(sig)\n    if (listeners.length === emitter.count) {\n      unload()\n      emit('exit', null, sig)\n      /* istanbul ignore next */\n      emit('afterexit', null, sig)\n      /* istanbul ignore next */\n      if (isWin && sig === 'SIGHUP') {\n        // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n        // so use a supported signal instead\n        sig = 'SIGINT'\n      }\n      process.kill(process.pid, sig)\n    }\n  }\n})\n\nmodule.exports.signals = function () {\n  return signals\n}\n\nmodule.exports.load = load\n\nvar loaded = false\n\nfunction load () {\n  if (loaded) {\n    return\n  }\n  loaded = true\n\n  // This is the number of onSignalExit's that are in play.\n  // It's important so that we can count the correct number of\n  // listeners on signals, and don't wait for the other one to\n  // handle it instead of us.\n  emitter.count += 1\n\n  signals = signals.filter(function (sig) {\n    try {\n      process.on(sig, sigListeners[sig])\n      return true\n    } catch (er) {\n      return false\n    }\n  })\n\n  process.emit = processEmit\n  process.reallyExit = processReallyExit\n}\n\nvar originalProcessReallyExit = process.reallyExit\nfunction processReallyExit (code) {\n  process.exitCode = code || 0\n  emit('exit', process.exitCode, null)\n  /* istanbul ignore next */\n  emit('afterexit', process.exitCode, null)\n  /* istanbul ignore next */\n  originalProcessReallyExit.call(process, process.exitCode)\n}\n\nvar originalProcessEmit = process.emit\nfunction processEmit (ev, arg) {\n  if (ev === 'exit') {\n    if (arg !== undefined) {\n      process.exitCode = arg\n    }\n    var ret = originalProcessEmit.apply(this, arguments)\n    emit('exit', process.exitCode, null)\n    /* istanbul ignore next */\n    emit('afterexit', process.exitCode, null)\n    return ret\n  } else {\n    return originalProcessEmit.apply(this, arguments)\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/signal-exit/index.js?")},"./node_modules/signal-exit/signals.js":
/*!*********************************************!*\
  !*** ./node_modules/signal-exit/signals.js ***!
  \*********************************************/module=>{eval("// This is not the set of all possible signals.\n//\n// It IS, however, the set of all signals that trigger\n// an exit on either Linux or BSD systems.  Linux is a\n// superset of the signal names supported on BSD, and\n// the unknown signals just fail to register, so we can\n// catch that easily enough.\n//\n// Don't bother with SIGKILL.  It's uncatchable, which\n// means that we can't fire any callbacks anyway.\n//\n// If a user does happen to register a handler on a non-\n// fatal signal like SIGWINCH or something, and then\n// exit, it'll end up firing `process.emit('exit')`, so\n// the handler will be fired anyway.\n//\n// SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n// artificially, inherently leave the process in a\n// state from which it is not safe to try and enter JS\n// listeners.\nmodule.exports = [\n  'SIGABRT',\n  'SIGALRM',\n  'SIGHUP',\n  'SIGINT',\n  'SIGTERM'\n]\n\nif (process.platform !== 'win32') {\n  module.exports.push(\n    'SIGVTALRM',\n    'SIGXCPU',\n    'SIGXFSZ',\n    'SIGUSR2',\n    'SIGTRAP',\n    'SIGSYS',\n    'SIGQUIT',\n    'SIGIOT'\n    // should detect profiler and enable/disable accordingly.\n    // see #21\n    // 'SIGPROF'\n  )\n}\n\nif (process.platform === 'linux') {\n  module.exports.push(\n    'SIGIO',\n    'SIGPOLL',\n    'SIGPWR',\n    'SIGSTKFLT',\n    'SIGUNUSED'\n  )\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/signal-exit/signals.js?")},"./node_modules/slash/index.js":
/*!*************************************!*\
  !*** ./node_modules/slash/index.js ***!
  \*************************************/module=>{"use strict";eval("\nmodule.exports = path => {\n\tconst isExtendedLengthPath = /^\\\\\\\\\\?\\\\/.test(path);\n\tconst hasNonAscii = /[^\\u0000-\\u0080]+/.test(path); // eslint-disable-line no-control-regex\n\n\tif (isExtendedLengthPath || hasNonAscii) {\n\t\treturn path;\n\t}\n\n\treturn path.replace(/\\\\/g, '/');\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/slash/index.js?")},"./node_modules/slug/slug.js":
/*!***********************************!*\
  !*** ./node_modules/slug/slug.js ***!
  \***********************************/function(module,exports){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* global btoa */\n(function (root) {\n  let base64\n\n  // This function's sole purpose is to help us ignore lone surrogates so that\n  // malformed strings don't throw in the browser while being processed\n  // permissively in Node.js. If we didn't care about parity, we could get rid\n  // of it.\n  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charAt\n  function getWholeCharAndI (str, i) {\n    const code = str.charCodeAt(i)\n\n    // This is a coherence check. `code` should never be `NaN`.\n    /* istanbul ignore if */\n    if (isNaN(code)) {\n      throw new RangeError('Index ' + i + ' out of range for string \"' + str + '\"; please open an issue at https://github.com/Trott/slug/issues/new')\n    }\n    if (code < 0xD800 || code > 0xDFFF) {\n      return [str.charAt(i), i] // Non-surrogate character, keeping 'i' the same\n    }\n\n    // High surrogate\n    if (code >= 0xD800 && code <= 0xDBFF) {\n      if (str.length <= (i + 1)) {\n        // High surrogate without following low surrogate\n        return [' ', i]\n      }\n      const next = str.charCodeAt(i + 1)\n      if (next < 0xDC00 || next > 0xDFFF) {\n        // High surrogate without following low surrogate\n        return [' ', i]\n      }\n      return [str.charAt(i) + str.charAt(i + 1), i + 1]\n    }\n\n    // Low surrogate (0xDC00 <= code && code <= 0xDFFF)\n    if (i === 0) {\n      // Low surrogate without preceding high surrogate\n      return [' ', i]\n    }\n\n    const prev = str.charCodeAt(i - 1)\n\n    /* istanbul ignore else */\n    if (prev < 0xD800 || prev > 0xDBFF) {\n      // Low surrogate without preceding high surrogate\n      return [' ', i]\n    }\n\n    /* istanbul ignore next */\n    throw new Error('String \"' + str + '\" reaches code believed to be unreachable; please open an issue at https://github.com/Trott/slug/issues/new')\n  }\n\n  if (typeof window !== 'undefined') {\n    if (window.btoa) {\n      base64 = function (input) {\n        return btoa(unescape(encodeURIComponent(input)))\n      }\n    } else {\n      // Polyfill for environments that don't have btoa or Buffer class (notably, React Native).\n      // Based on https://github.com/davidchambers/Base64.js/blob/a121f75bb10c8dd5d557886c4b1069b31258d230/base64.js\n      base64 = function (input) {\n        const str = unescape(encodeURIComponent(input + ''))\n        let output = ''\n        for (\n          let block, charCode, idx = 0, map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n          str.charAt(idx | 0) || (map = '=', idx % 1);\n          output += map.charAt(63 & block >> 8 - idx % 1 * 8)\n        ) {\n          charCode = str.charCodeAt(idx += 3 / 4)\n          // TODO: The if condition may be guaranteed to be false. Verify and\n          // remove or otherwise write a test to cover it.\n          /* istanbul ignore if */\n          if (charCode > 0xFF) {\n            throw new Error(\"'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.\")\n          }\n          block = block << 8 | charCode\n        }\n        return output\n      }\n    }\n  } else {\n    base64 = function (input) {\n      return Buffer.from(input).toString('base64')\n    }\n  }\n\n  // IE11 doesn't have Object.assign(), hence this MDN-supplied polyfill.\n  /* istanbul ignore if */\n  if (typeof Object.assign !== 'function') {\n    // Must be writable: true, enumerable: false, configurable: true\n    Object.defineProperty(Object, 'assign', {\n      value: function assign (target, varArgs) { // .length of function is 2\n        'use strict'\n        if (target === null || target === undefined) {\n          throw new TypeError('Cannot convert undefined or null to object')\n        }\n\n        const to = Object(target)\n\n        for (let index = 1; index < arguments.length; index++) {\n          const nextSource = arguments[index]\n\n          if (nextSource !== null && nextSource !== undefined) {\n            // eslint-disable-next-line no-var\n            for (var nextKey in nextSource) {\n              // Avoid bugs when hasOwnProperty is shadowed\n              if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n                to[nextKey] = nextSource[nextKey]\n              }\n            }\n          }\n        }\n        return to\n      },\n      writable: true,\n      configurable: true\n    })\n  }\n\n  function slug (string, opts) {\n    let result = slugify(string, opts)\n    // If output is an empty string, try slug for base64 of string.\n    if (result === '') {\n      // Get rid of lone surrogates.\n      let input = ''\n      for (let i = 0; i < string.length; i++) {\n        const charAndI = getWholeCharAndI(string, i)\n        i = charAndI[1]\n        input += charAndI[0]\n      }\n      result = slugify(base64(input), opts)\n    }\n    return result\n  }\n\n  const locales = {\n    // http://www.eki.ee/wgrs/rom1_bg.pdf\n    bg: { Й: 'Y', й: 'y', X: 'H', x: 'h', Ц: 'Ts', ц: 'ts', Щ: 'Sht', щ: 'sht', Ъ: 'A', ъ: 'a', Ь: 'Y', ь: 'y' },\n    // Need a reference URL for German, although this is pretty well-known.\n    de: { Ä: 'AE', ä: 'ae', Ö: 'OE', ö: 'oe', Ü: 'UE', ü: 'ue' },\n    // Need a reference URL for Serbian.\n    sr: { đ: 'dj', Đ: 'DJ' },\n    // https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/864314/ROMANIZATION_OF_UKRAINIAN.pdf\n    uk: { И: 'Y', и: 'y', Й: 'Y', й: 'y', Ц: 'Ts', ц: 'ts', Х: 'Kh', х: 'kh', Щ: 'Shch', щ: 'shch', Г: 'H', г: 'h' }\n  }\n\n  let defaultLocale = {}\n\n  function slugify (string, opts) {\n    if (typeof string !== 'string') {\n      throw new Error('slug() requires a string argument, received ' + typeof string)\n    }\n    if (typeof opts === 'string') { opts = { replacement: opts } }\n    opts = opts ? Object.assign({}, opts) : {}\n    opts.mode = opts.mode || slug.defaults.mode\n    const defaults = slug.defaults.modes[opts.mode]\n    const keys = ['replacement', 'multicharmap', 'charmap', 'remove', 'lower', 'trim']\n    for (let key, i = 0, l = keys.length; i < l; i++) {\n      key = keys[i]\n      opts[key] = (key in opts) ? opts[key] : defaults[key]\n    }\n    const localeMap = locales[opts.locale] || defaultLocale\n\n    let lengths = []\n    // \"let\" instead of \"const\" in next line is for IE11 compatibilty\n    for (let key in opts.multicharmap) { // eslint-disable-line prefer-const\n      if (!Object.prototype.hasOwnProperty.call(opts.multicharmap, key)) { continue }\n\n      const len = key.length\n      if (lengths.indexOf(len) === -1) { lengths.push(len) }\n    }\n\n    // We want to match the longest string if there are multiple matches, so\n    // sort lengths in descending order.\n    lengths = lengths.sort(function (a, b) { return b - a })\n\n    const disallowedChars = opts.mode === 'rfc3986' ? /[^\\w\\s\\-.~]/ : /[^A-Za-z0-9\\s]/\n\n    let result = ''\n    for (let char, i = 0, l = string.length; i < l; i++) {\n      char = string[i]\n      let matchedMultichar = false\n      for (let j = 0; j < lengths.length; j++) {\n        const len = lengths[j]\n        const str = string.substr(i, len)\n        if (opts.multicharmap[str]) {\n          i += len - 1\n          char = opts.multicharmap[str]\n          matchedMultichar = true\n          break\n        }\n      }\n      if (!matchedMultichar) {\n        if (localeMap[char]) {\n          char = localeMap[char]\n        } else if (opts.charmap[char]) {\n          char = opts.charmap[char].replace(opts.replacement, ' ')\n        } else if (char.includes(opts.replacement)) {\n          // preserve the replacement character in case it is excluded by disallowedChars\n          char = char.replace(opts.replacement, ' ')\n        } else {\n          char = char.replace(disallowedChars, '')\n        }\n      }\n      result += char\n    }\n\n    if (opts.remove) {\n      result = result.replace(opts.remove, '')\n    }\n    if (opts.trim) {\n      result = result.trim()\n    }\n    result = result.replace(/\\s+/g, opts.replacement) // convert spaces\n    if (opts.lower) {\n      result = result.toLowerCase()\n    }\n    return result\n  }\n\n  const initialMulticharmap = {\n    // multibyte devanagari characters (hindi, sanskrit, etc.)\n    फ़: 'Fi',\n    ग़: 'Ghi',\n    ख़: 'Khi',\n    क़: 'Qi',\n    ड़: 'ugDha',\n    ढ़: 'ugDhha',\n    य़: 'Yi',\n    ज़: 'Za',\n    // hebrew\n    // Refs: http://www.eki.ee/wgrs/rom1_he.pdf\n    // Refs: https://en.wikipedia.org/wiki/Niqqud\n    בִי: 'i',\n    בֵ: 'e',\n    בֵי: 'e',\n    בֶ: 'e',\n    בַ: 'a',\n    בָ: 'a',\n    בֹ: 'o',\n    וֹ: 'o',\n    בֻ: 'u',\n    וּ: 'u',\n    בּ: 'b',\n    כּ: 'k',\n    ךּ: 'k',\n    פּ: 'p',\n    שׁ: 'sh',\n    שׂ: 's',\n    בְ: 'e',\n    חֱ: 'e',\n    חֲ: 'a',\n    חֳ: 'o',\n    בִ: 'i'\n  }\n\n  // https://github.com/django/django/blob/master/django/contrib/admin/static/admin/js/urlify.js\n  const initialCharmap = {\n    // latin\n    À: 'A',\n    Á: 'A',\n    Â: 'A',\n    Ã: 'A',\n    Ä: 'A',\n    Å: 'A',\n    Æ: 'AE',\n    Ç: 'C',\n    È: 'E',\n    É: 'E',\n    Ê: 'E',\n    Ë: 'E',\n    Ì: 'I',\n    Í: 'I',\n    Î: 'I',\n    Ï: 'I',\n    Ð: 'D',\n    Ñ: 'N',\n    Ò: 'O',\n    Ó: 'O',\n    Ô: 'O',\n    Õ: 'O',\n    Ö: 'O',\n    Ő: 'O',\n    Ø: 'O',\n    Ō: 'O',\n    Ù: 'U',\n    Ú: 'U',\n    Û: 'U',\n    Ü: 'U',\n    Ű: 'U',\n    Ý: 'Y',\n    Þ: 'TH',\n    ß: 'ss',\n    à: 'a',\n    á: 'a',\n    â: 'a',\n    ã: 'a',\n    ä: 'a',\n    å: 'a',\n    æ: 'ae',\n    ç: 'c',\n    è: 'e',\n    é: 'e',\n    ê: 'e',\n    ë: 'e',\n    ì: 'i',\n    í: 'i',\n    î: 'i',\n    ï: 'i',\n    ð: 'd',\n    ñ: 'n',\n    ò: 'o',\n    ó: 'o',\n    ô: 'o',\n    õ: 'o',\n    ö: 'o',\n    ő: 'o',\n    ø: 'o',\n    ō: 'o',\n    Œ: 'OE',\n    œ: 'oe',\n    ù: 'u',\n    ú: 'u',\n    û: 'u',\n    ü: 'u',\n    ű: 'u',\n    ý: 'y',\n    þ: 'th',\n    ÿ: 'y',\n    ẞ: 'SS',\n    // greek\n    α: 'a',\n    β: 'b',\n    γ: 'g',\n    δ: 'd',\n    ε: 'e',\n    ζ: 'z',\n    η: 'h',\n    θ: '8',\n    ι: 'i',\n    κ: 'k',\n    λ: 'l',\n    μ: 'm',\n    ν: 'n',\n    ξ: '3',\n    ο: 'o',\n    π: 'p',\n    ρ: 'r',\n    σ: 's',\n    τ: 't',\n    υ: 'y',\n    φ: 'f',\n    χ: 'x',\n    ψ: 'ps',\n    ω: 'w',\n    ά: 'a',\n    έ: 'e',\n    ί: 'i',\n    ό: 'o',\n    ύ: 'y',\n    ή: 'h',\n    ώ: 'w',\n    ς: 's',\n    ϊ: 'i',\n    ΰ: 'y',\n    ϋ: 'y',\n    ΐ: 'i',\n    Α: 'A',\n    Β: 'B',\n    Γ: 'G',\n    Δ: 'D',\n    Ε: 'E',\n    Ζ: 'Z',\n    Η: 'H',\n    Θ: '8',\n    Ι: 'I',\n    Κ: 'K',\n    Λ: 'L',\n    Μ: 'M',\n    Ν: 'N',\n    Ξ: '3',\n    Ο: 'O',\n    Π: 'P',\n    Ρ: 'R',\n    Σ: 'S',\n    Τ: 'T',\n    Υ: 'Y',\n    Φ: 'F',\n    Χ: 'X',\n    Ψ: 'PS',\n    Ω: 'W',\n    Ά: 'A',\n    Έ: 'E',\n    Ί: 'I',\n    Ό: 'O',\n    Ύ: 'Y',\n    Ή: 'H',\n    Ώ: 'W',\n    Ϊ: 'I',\n    Ϋ: 'Y',\n    // turkish\n    ş: 's',\n    Ş: 'S',\n    ı: 'i',\n    İ: 'I',\n    ğ: 'g',\n    Ğ: 'G',\n    // russian\n    а: 'a',\n    б: 'b',\n    в: 'v',\n    г: 'g',\n    д: 'd',\n    е: 'e',\n    ё: 'yo',\n    ж: 'zh',\n    з: 'z',\n    и: 'i',\n    й: 'j',\n    к: 'k',\n    л: 'l',\n    м: 'm',\n    н: 'n',\n    о: 'o',\n    п: 'p',\n    р: 'r',\n    с: 's',\n    т: 't',\n    у: 'u',\n    ф: 'f',\n    х: 'h',\n    ц: 'c',\n    ч: 'ch',\n    ш: 'sh',\n    щ: 'sh',\n    ъ: 'u',\n    ы: 'y',\n    ь: '',\n    э: 'e',\n    ю: 'yu',\n    я: 'ya',\n    А: 'A',\n    Б: 'B',\n    В: 'V',\n    Г: 'G',\n    Д: 'D',\n    Е: 'E',\n    Ё: 'Yo',\n    Ж: 'Zh',\n    З: 'Z',\n    И: 'I',\n    Й: 'J',\n    К: 'K',\n    Л: 'L',\n    М: 'M',\n    Н: 'N',\n    О: 'O',\n    П: 'P',\n    Р: 'R',\n    С: 'S',\n    Т: 'T',\n    У: 'U',\n    Ф: 'F',\n    Х: 'H',\n    Ц: 'C',\n    Ч: 'Ch',\n    Ш: 'Sh',\n    Щ: 'Sh',\n    Ъ: 'U',\n    Ы: 'Y',\n    Ь: '',\n    Э: 'E',\n    Ю: 'Yu',\n    Я: 'Ya',\n    // ukranian\n    Є: 'Ye',\n    І: 'I',\n    Ї: 'Yi',\n    Ґ: 'G',\n    є: 'ye',\n    і: 'i',\n    ї: 'yi',\n    ґ: 'g',\n    // czech\n    č: 'c',\n    ď: 'd',\n    ě: 'e',\n    ň: 'n',\n    ř: 'r',\n    š: 's',\n    ť: 't',\n    ů: 'u',\n    ž: 'z',\n    Č: 'C',\n    Ď: 'D',\n    Ě: 'E',\n    Ň: 'N',\n    Ř: 'R',\n    Š: 'S',\n    Ť: 'T',\n    Ů: 'U',\n    Ž: 'Z',\n    // slovak\n    ľ: 'l',\n    ĺ: 'l',\n    ŕ: 'r',\n    Ľ: 'L',\n    Ĺ: 'L',\n    Ŕ: 'R',\n    // polish\n    ą: 'a',\n    ć: 'c',\n    ę: 'e',\n    ł: 'l',\n    ń: 'n',\n    ś: 's',\n    ź: 'z',\n    ż: 'z',\n    Ą: 'A',\n    Ć: 'C',\n    Ę: 'E',\n    Ł: 'L',\n    Ń: 'N',\n    Ś: 'S',\n    Ź: 'Z',\n    Ż: 'Z',\n    // latvian\n    ā: 'a',\n    ē: 'e',\n    ģ: 'g',\n    ī: 'i',\n    ķ: 'k',\n    ļ: 'l',\n    ņ: 'n',\n    ū: 'u',\n    Ā: 'A',\n    Ē: 'E',\n    Ģ: 'G',\n    Ī: 'I',\n    Ķ: 'K',\n    Ļ: 'L',\n    Ņ: 'N',\n    Ū: 'U',\n    // arabic\n    أ: 'a',\n    إ: 'i',\n    ب: 'b',\n    ت: 't',\n    ث: 'th',\n    ج: 'g',\n    ح: 'h',\n    خ: 'kh',\n    د: 'd',\n    ذ: 'th',\n    ر: 'r',\n    ز: 'z',\n    س: 's',\n    ش: 'sh',\n    ص: 's',\n    ض: 'd',\n    ط: 't',\n    ظ: 'th',\n    ع: 'aa',\n    غ: 'gh',\n    ف: 'f',\n    ق: 'k',\n    ك: 'k',\n    ل: 'l',\n    م: 'm',\n    ن: 'n',\n    ه: 'h',\n    و: 'o',\n    ي: 'y',\n    ء: 'aa',\n    ة: 'a',\n    // farsi\n    آ: 'a',\n    ا: 'a',\n    پ: 'p',\n    ژ: 'zh',\n    گ: 'g',\n    چ: 'ch',\n    ک: 'k',\n    ی: 'i',\n    // lithuanian\n    ė: 'e',\n    į: 'i',\n    ų: 'u',\n    Ė: 'E',\n    Į: 'I',\n    Ų: 'U',\n    // romanian\n    ț: 't',\n    Ț: 'T',\n    ţ: 't',\n    Ţ: 'T',\n    ș: 's',\n    Ș: 'S',\n    ă: 'a',\n    Ă: 'A',\n    // vietnamese\n    Ạ: 'A',\n    Ả: 'A',\n    Ầ: 'A',\n    Ấ: 'A',\n    Ậ: 'A',\n    Ẩ: 'A',\n    Ẫ: 'A',\n    Ằ: 'A',\n    Ắ: 'A',\n    Ặ: 'A',\n    Ẳ: 'A',\n    Ẵ: 'A',\n    Ẹ: 'E',\n    Ẻ: 'E',\n    Ẽ: 'E',\n    Ề: 'E',\n    Ế: 'E',\n    Ệ: 'E',\n    Ể: 'E',\n    Ễ: 'E',\n    Ị: 'I',\n    Ỉ: 'I',\n    Ĩ: 'I',\n    Ọ: 'O',\n    Ỏ: 'O',\n    Ồ: 'O',\n    Ố: 'O',\n    Ộ: 'O',\n    Ổ: 'O',\n    Ỗ: 'O',\n    Ơ: 'O',\n    Ờ: 'O',\n    Ớ: 'O',\n    Ợ: 'O',\n    Ở: 'O',\n    Ỡ: 'O',\n    Ụ: 'U',\n    Ủ: 'U',\n    Ũ: 'U',\n    Ư: 'U',\n    Ừ: 'U',\n    Ứ: 'U',\n    Ự: 'U',\n    Ử: 'U',\n    Ữ: 'U',\n    Ỳ: 'Y',\n    Ỵ: 'Y',\n    Ỷ: 'Y',\n    Ỹ: 'Y',\n    Đ: 'D',\n    ạ: 'a',\n    ả: 'a',\n    ầ: 'a',\n    ấ: 'a',\n    ậ: 'a',\n    ẩ: 'a',\n    ẫ: 'a',\n    ằ: 'a',\n    ắ: 'a',\n    ặ: 'a',\n    ẳ: 'a',\n    ẵ: 'a',\n    ẹ: 'e',\n    ẻ: 'e',\n    ẽ: 'e',\n    ề: 'e',\n    ế: 'e',\n    ệ: 'e',\n    ể: 'e',\n    ễ: 'e',\n    ị: 'i',\n    ỉ: 'i',\n    ĩ: 'i',\n    ọ: 'o',\n    ỏ: 'o',\n    ồ: 'o',\n    ố: 'o',\n    ộ: 'o',\n    ổ: 'o',\n    ỗ: 'o',\n    ơ: 'o',\n    ờ: 'o',\n    ớ: 'o',\n    ợ: 'o',\n    ở: 'o',\n    ỡ: 'o',\n    ụ: 'u',\n    ủ: 'u',\n    ũ: 'u',\n    ư: 'u',\n    ừ: 'u',\n    ứ: 'u',\n    ự: 'u',\n    ử: 'u',\n    ữ: 'u',\n    ỳ: 'y',\n    ỵ: 'y',\n    ỷ: 'y',\n    ỹ: 'y',\n    đ: 'd',\n    // kazakh\n    Ә: 'AE',\n    ә: 'ae',\n    Ғ: 'GH',\n    ғ: 'gh',\n    Қ: 'KH',\n    қ: 'kh',\n    Ң: 'NG',\n    ң: 'ng',\n    Ү: 'UE',\n    ү: 'ue',\n    Ұ: 'U',\n    ұ: 'u',\n    Һ: 'H',\n    һ: 'h',\n    Ө: 'OE',\n    ө: 'oe',\n    // serbian\n    ђ: 'dj',\n    ј: 'j',\n    љ: 'lj',\n    њ: 'nj',\n    ћ: 'c',\n    џ: 'dz',\n    Ђ: 'Dj',\n    Ј: 'j',\n    Љ: 'Lj',\n    Њ: 'Nj',\n    Ћ: 'C',\n    Џ: 'Dz',\n    ǌ: 'nj',\n    ǉ: 'lj',\n    ǋ: 'NJ',\n    ǈ: 'LJ',\n    // hindi\n    अ: 'a',\n    आ: 'aa',\n    ए: 'e',\n    ई: 'ii',\n    ऍ: 'ei',\n    ऎ: 'ae',\n    ऐ: 'ai',\n    इ: 'i',\n    ओ: 'o',\n    ऑ: 'oi',\n    ऒ: 'oii',\n    ऊ: 'uu',\n    औ: 'ou',\n    उ: 'u',\n    ब: 'B',\n    भ: 'Bha',\n    च: 'Ca',\n    छ: 'Chha',\n    ड: 'Da',\n    ढ: 'Dha',\n    फ: 'Fa',\n    ग: 'Ga',\n    घ: 'Gha',\n    ग़: 'Ghi',\n    ह: 'Ha',\n    ज: 'Ja',\n    झ: 'Jha',\n    क: 'Ka',\n    ख: 'Kha',\n    ख़: 'Khi',\n    ल: 'L',\n    ळ: 'Li',\n    ऌ: 'Li',\n    ऴ: 'Lii',\n    ॡ: 'Lii',\n    म: 'Ma',\n    न: 'Na',\n    ङ: 'Na',\n    ञ: 'Nia',\n    ण: 'Nae',\n    ऩ: 'Ni',\n    ॐ: 'oms',\n    प: 'Pa',\n    क़: 'Qi',\n    र: 'Ra',\n    ऋ: 'Ri',\n    ॠ: 'Ri',\n    ऱ: 'Ri',\n    स: 'Sa',\n    श: 'Sha',\n    ष: 'Shha',\n    ट: 'Ta',\n    त: 'Ta',\n    ठ: 'Tha',\n    द: 'Tha',\n    थ: 'Tha',\n    ध: 'Thha',\n    ड़: 'ugDha',\n    ढ़: 'ugDhha',\n    व: 'Va',\n    य: 'Ya',\n    य़: 'Yi',\n    ज़: 'Za',\n    // azerbaijani\n    ə: 'e',\n    Ə: 'E',\n    // georgian\n    ა: 'a',\n    ბ: 'b',\n    გ: 'g',\n    დ: 'd',\n    ე: 'e',\n    ვ: 'v',\n    ზ: 'z',\n    თ: 't',\n    ი: 'i',\n    კ: 'k',\n    ლ: 'l',\n    მ: 'm',\n    ნ: 'n',\n    ო: 'o',\n    პ: 'p',\n    ჟ: 'zh',\n    რ: 'r',\n    ს: 's',\n    ტ: 't',\n    უ: 'u',\n    ფ: 'p',\n    ქ: 'k',\n    ღ: 'gh',\n    ყ: 'q',\n    შ: 'sh',\n    ჩ: 'ch',\n    ც: 'ts',\n    ძ: 'dz',\n    წ: 'ts',\n    ჭ: 'ch',\n    ხ: 'kh',\n    ჯ: 'j',\n    ჰ: 'h',\n    // hebrew\n    ב: 'v',\n    גּ: 'g',\n    ג: 'g',\n    ד: 'd',\n    דּ: 'd',\n    ה: 'h',\n    ו: 'v',\n    ז: 'z',\n    ח: 'h',\n    ט: 't',\n    י: 'y',\n    כ: 'kh',\n    ך: 'kh',\n    ל: 'l',\n    מ: 'm',\n    ם: 'm',\n    נ: 'n',\n    ן: 'n',\n    ס: 's',\n    פ: 'f',\n    ף: 'f',\n    ץ: 'ts',\n    צ: 'ts',\n    ק: 'k',\n    ר: 'r',\n    תּ: 't',\n    ת: 't'\n  }\n\n  slug.charmap = Object.assign({}, initialCharmap)\n  slug.multicharmap = Object.assign({}, initialMulticharmap)\n  slug.defaults = {\n    charmap: slug.charmap,\n    mode: 'pretty',\n    modes: {\n      rfc3986: {\n        replacement: '-',\n        remove: null,\n        lower: true,\n        charmap: slug.charmap,\n        multicharmap: slug.multicharmap,\n        trim: true\n      },\n      pretty: {\n        replacement: '-',\n        remove: null,\n        lower: true,\n        charmap: slug.charmap,\n        multicharmap: slug.multicharmap,\n        trim: true\n      }\n    },\n    multicharmap: slug.multicharmap\n  }\n\n  slug.reset = function () {\n    slug.defaults.modes.rfc3986.charmap = slug.defaults.modes.pretty.charmap = slug.charmap = slug.defaults.charmap = Object.assign({}, initialCharmap)\n    slug.defaults.modes.rfc3986.multicharmap = slug.defaults.modes.pretty.multicharmap = slug.multicharmap = slug.defaults.multicharmap = Object.assign({}, initialMulticharmap)\n    defaultLocale = ''\n  }\n\n  slug.extend = function (customMap) {\n    const keys = Object.keys(customMap)\n    const multi = {}\n    const single = {}\n    for (let i = 0; i < keys.length; i++) {\n      if (keys[i].length > 1) {\n        multi[keys[i]] = customMap[keys[i]]\n      } else {\n        single[keys[i]] = customMap[keys[i]]\n      }\n    }\n    Object.assign(slug.charmap, single)\n    Object.assign(slug.multicharmap, multi)\n  }\n\n  slug.setLocale = function (locale) {\n    defaultLocale = locales[locale] || {}\n  }\n\n  /* global define */\n  // Be compatible with different module systems\n\n  if (true) { // AMD\n    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () { return slug }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))\n  } else {}\n}(this))\n\n\n//# sourceURL=webpack://txadmin/./node_modules/slug/slug.js?")},"./node_modules/socket.io-adapter/dist/index.js":
/*!******************************************************!*\
  !*** ./node_modules/socket.io-adapter/dist/index.js ***!
  \******************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.Adapter = void 0;\nconst events_1 = __webpack_require__(/*! events */ "events");\nclass Adapter extends events_1.EventEmitter {\n    /**\n     * In-memory adapter constructor.\n     *\n     * @param {Namespace} nsp\n     */\n    constructor(nsp) {\n        super();\n        this.nsp = nsp;\n        this.rooms = new Map();\n        this.sids = new Map();\n        this.encoder = nsp.server.encoder;\n    }\n    /**\n     * To be overridden\n     */\n    init() { }\n    /**\n     * To be overridden\n     */\n    close() { }\n    /**\n     * Returns the number of Socket.IO servers in the cluster\n     *\n     * @public\n     */\n    serverCount() {\n        return Promise.resolve(1);\n    }\n    /**\n     * Adds a socket to a list of room.\n     *\n     * @param {SocketId}  id      the socket id\n     * @param {Set<Room>} rooms   a set of rooms\n     * @public\n     */\n    addAll(id, rooms) {\n        if (!this.sids.has(id)) {\n            this.sids.set(id, new Set());\n        }\n        for (const room of rooms) {\n            this.sids.get(id).add(room);\n            if (!this.rooms.has(room)) {\n                this.rooms.set(room, new Set());\n                this.emit("create-room", room);\n            }\n            if (!this.rooms.get(room).has(id)) {\n                this.rooms.get(room).add(id);\n                this.emit("join-room", room, id);\n            }\n        }\n    }\n    /**\n     * Removes a socket from a room.\n     *\n     * @param {SocketId} id     the socket id\n     * @param {Room}     room   the room name\n     */\n    del(id, room) {\n        if (this.sids.has(id)) {\n            this.sids.get(id).delete(room);\n        }\n        this._del(room, id);\n    }\n    _del(room, id) {\n        const _room = this.rooms.get(room);\n        if (_room != null) {\n            const deleted = _room.delete(id);\n            if (deleted) {\n                this.emit("leave-room", room, id);\n            }\n            if (_room.size === 0 && this.rooms.delete(room)) {\n                this.emit("delete-room", room);\n            }\n        }\n    }\n    /**\n     * Removes a socket from all rooms it\'s joined.\n     *\n     * @param {SocketId} id   the socket id\n     */\n    delAll(id) {\n        if (!this.sids.has(id)) {\n            return;\n        }\n        for (const room of this.sids.get(id)) {\n            this._del(room, id);\n        }\n        this.sids.delete(id);\n    }\n    /**\n     * Broadcasts a packet.\n     *\n     * Options:\n     *  - `flags` {Object} flags for this packet\n     *  - `except` {Array} sids that should be excluded\n     *  - `rooms` {Array} list of rooms to broadcast to\n     *\n     * @param {Object} packet   the packet object\n     * @param {Object} opts     the options\n     * @public\n     */\n    broadcast(packet, opts) {\n        const flags = opts.flags || {};\n        const packetOpts = {\n            preEncoded: true,\n            volatile: flags.volatile,\n            compress: flags.compress\n        };\n        packet.nsp = this.nsp.name;\n        const encodedPackets = this.encoder.encode(packet);\n        this.apply(opts, socket => {\n            if (typeof socket.notifyOutgoingListeners === "function") {\n                socket.notifyOutgoingListeners(packet);\n            }\n            socket.client.writeToEngine(encodedPackets, packetOpts);\n        });\n    }\n    /**\n     * Broadcasts a packet and expects multiple acknowledgements.\n     *\n     * Options:\n     *  - `flags` {Object} flags for this packet\n     *  - `except` {Array} sids that should be excluded\n     *  - `rooms` {Array} list of rooms to broadcast to\n     *\n     * @param {Object} packet   the packet object\n     * @param {Object} opts     the options\n     * @param clientCountCallback - the number of clients that received the packet\n     * @param ack                 - the callback that will be called for each client response\n     *\n     * @public\n     */\n    broadcastWithAck(packet, opts, clientCountCallback, ack) {\n        const flags = opts.flags || {};\n        const packetOpts = {\n            preEncoded: true,\n            volatile: flags.volatile,\n            compress: flags.compress\n        };\n        packet.nsp = this.nsp.name;\n        // we can use the same id for each packet, since the _ids counter is common (no duplicate)\n        packet.id = this.nsp._ids++;\n        const encodedPackets = this.encoder.encode(packet);\n        let clientCount = 0;\n        this.apply(opts, socket => {\n            // track the total number of acknowledgements that are expected\n            clientCount++;\n            // call the ack callback for each client response\n            socket.acks.set(packet.id, ack);\n            if (typeof socket.notifyOutgoingListeners === "function") {\n                socket.notifyOutgoingListeners(packet);\n            }\n            socket.client.writeToEngine(encodedPackets, packetOpts);\n        });\n        clientCountCallback(clientCount);\n    }\n    /**\n     * Gets a list of sockets by sid.\n     *\n     * @param {Set<Room>} rooms   the explicit set of rooms to check.\n     */\n    sockets(rooms) {\n        const sids = new Set();\n        this.apply({ rooms }, socket => {\n            sids.add(socket.id);\n        });\n        return Promise.resolve(sids);\n    }\n    /**\n     * Gets the list of rooms a given socket has joined.\n     *\n     * @param {SocketId} id   the socket id\n     */\n    socketRooms(id) {\n        return this.sids.get(id);\n    }\n    /**\n     * Returns the matching socket instances\n     *\n     * @param opts - the filters to apply\n     */\n    fetchSockets(opts) {\n        const sockets = [];\n        this.apply(opts, socket => {\n            sockets.push(socket);\n        });\n        return Promise.resolve(sockets);\n    }\n    /**\n     * Makes the matching socket instances join the specified rooms\n     *\n     * @param opts - the filters to apply\n     * @param rooms - the rooms to join\n     */\n    addSockets(opts, rooms) {\n        this.apply(opts, socket => {\n            socket.join(rooms);\n        });\n    }\n    /**\n     * Makes the matching socket instances leave the specified rooms\n     *\n     * @param opts - the filters to apply\n     * @param rooms - the rooms to leave\n     */\n    delSockets(opts, rooms) {\n        this.apply(opts, socket => {\n            rooms.forEach(room => socket.leave(room));\n        });\n    }\n    /**\n     * Makes the matching socket instances disconnect\n     *\n     * @param opts - the filters to apply\n     * @param close - whether to close the underlying connection\n     */\n    disconnectSockets(opts, close) {\n        this.apply(opts, socket => {\n            socket.disconnect(close);\n        });\n    }\n    apply(opts, callback) {\n        const rooms = opts.rooms;\n        const except = this.computeExceptSids(opts.except);\n        if (rooms.size) {\n            const ids = new Set();\n            for (const room of rooms) {\n                if (!this.rooms.has(room))\n                    continue;\n                for (const id of this.rooms.get(room)) {\n                    if (ids.has(id) || except.has(id))\n                        continue;\n                    const socket = this.nsp.sockets.get(id);\n                    if (socket) {\n                        callback(socket);\n                        ids.add(id);\n                    }\n                }\n            }\n        }\n        else {\n            for (const [id] of this.sids) {\n                if (except.has(id))\n                    continue;\n                const socket = this.nsp.sockets.get(id);\n                if (socket)\n                    callback(socket);\n            }\n        }\n    }\n    computeExceptSids(exceptRooms) {\n        const exceptSids = new Set();\n        if (exceptRooms && exceptRooms.size > 0) {\n            for (const room of exceptRooms) {\n                if (this.rooms.has(room)) {\n                    this.rooms.get(room).forEach(sid => exceptSids.add(sid));\n                }\n            }\n        }\n        return exceptSids;\n    }\n    /**\n     * Send a packet to the other Socket.IO servers in the cluster\n     * @param packet - an array of arguments, which may include an acknowledgement callback at the end\n     */\n    serverSideEmit(packet) {\n        console.warn("this adapter does not support the serverSideEmit() functionality");\n    }\n}\nexports.Adapter = Adapter;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/socket.io-adapter/dist/index.js?')},"./node_modules/socket.io-parser/dist/binary.js":
/*!******************************************************!*\
  !*** ./node_modules/socket.io-parser/dist/binary.js ***!
  \******************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.reconstructPacket = exports.deconstructPacket = void 0;\nconst is_binary_1 = __webpack_require__(/*! ./is-binary */ "./node_modules/socket.io-parser/dist/is-binary.js");\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nfunction deconstructPacket(packet) {\n    const buffers = [];\n    const packetData = packet.data;\n    const pack = packet;\n    pack.data = _deconstructPacket(packetData, buffers);\n    pack.attachments = buffers.length; // number of binary \'attachments\'\n    return { packet: pack, buffers: buffers };\n}\nexports.deconstructPacket = deconstructPacket;\nfunction _deconstructPacket(data, buffers) {\n    if (!data)\n        return data;\n    if (is_binary_1.isBinary(data)) {\n        const placeholder = { _placeholder: true, num: buffers.length };\n        buffers.push(data);\n        return placeholder;\n    }\n    else if (Array.isArray(data)) {\n        const newData = new Array(data.length);\n        for (let i = 0; i < data.length; i++) {\n            newData[i] = _deconstructPacket(data[i], buffers);\n        }\n        return newData;\n    }\n    else if (typeof data === "object" && !(data instanceof Date)) {\n        const newData = {};\n        for (const key in data) {\n            if (data.hasOwnProperty(key)) {\n                newData[key] = _deconstructPacket(data[key], buffers);\n            }\n        }\n        return newData;\n    }\n    return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nfunction reconstructPacket(packet, buffers) {\n    packet.data = _reconstructPacket(packet.data, buffers);\n    packet.attachments = undefined; // no longer useful\n    return packet;\n}\nexports.reconstructPacket = reconstructPacket;\nfunction _reconstructPacket(data, buffers) {\n    if (!data)\n        return data;\n    if (data && data._placeholder) {\n        return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n    }\n    else if (Array.isArray(data)) {\n        for (let i = 0; i < data.length; i++) {\n            data[i] = _reconstructPacket(data[i], buffers);\n        }\n    }\n    else if (typeof data === "object") {\n        for (const key in data) {\n            if (data.hasOwnProperty(key)) {\n                data[key] = _reconstructPacket(data[key], buffers);\n            }\n        }\n    }\n    return data;\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/socket.io-parser/dist/binary.js?')},"./node_modules/socket.io-parser/dist/index.js":
/*!*****************************************************!*\
  !*** ./node_modules/socket.io-parser/dist/index.js ***!
  \*****************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.Decoder = exports.Encoder = exports.PacketType = exports.protocol = void 0;\nconst Emitter = __webpack_require__(/*! component-emitter */ "./node_modules/component-emitter/index.js");\nconst binary_1 = __webpack_require__(/*! ./binary */ "./node_modules/socket.io-parser/dist/binary.js");\nconst is_binary_1 = __webpack_require__(/*! ./is-binary */ "./node_modules/socket.io-parser/dist/is-binary.js");\nconst debug = __webpack_require__(/*! debug */ "./node_modules/debug/src/index.js")("socket.io-parser");\n/**\n * Protocol version.\n *\n * @public\n */\nexports.protocol = 5;\nvar PacketType;\n(function (PacketType) {\n    PacketType[PacketType["CONNECT"] = 0] = "CONNECT";\n    PacketType[PacketType["DISCONNECT"] = 1] = "DISCONNECT";\n    PacketType[PacketType["EVENT"] = 2] = "EVENT";\n    PacketType[PacketType["ACK"] = 3] = "ACK";\n    PacketType[PacketType["CONNECT_ERROR"] = 4] = "CONNECT_ERROR";\n    PacketType[PacketType["BINARY_EVENT"] = 5] = "BINARY_EVENT";\n    PacketType[PacketType["BINARY_ACK"] = 6] = "BINARY_ACK";\n})(PacketType = exports.PacketType || (exports.PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nclass Encoder {\n    /**\n     * Encode a packet as a single string if non-binary, or as a\n     * buffer sequence, depending on packet type.\n     *\n     * @param {Object} obj - packet object\n     */\n    encode(obj) {\n        debug("encoding packet %j", obj);\n        if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n            if (is_binary_1.hasBinary(obj)) {\n                obj.type =\n                    obj.type === PacketType.EVENT\n                        ? PacketType.BINARY_EVENT\n                        : PacketType.BINARY_ACK;\n                return this.encodeAsBinary(obj);\n            }\n        }\n        return [this.encodeAsString(obj)];\n    }\n    /**\n     * Encode packet as string.\n     */\n    encodeAsString(obj) {\n        // first is type\n        let str = "" + obj.type;\n        // attachments if we have them\n        if (obj.type === PacketType.BINARY_EVENT ||\n            obj.type === PacketType.BINARY_ACK) {\n            str += obj.attachments + "-";\n        }\n        // if we have a namespace other than `/`\n        // we append it followed by a comma `,`\n        if (obj.nsp && "/" !== obj.nsp) {\n            str += obj.nsp + ",";\n        }\n        // immediately followed by the id\n        if (null != obj.id) {\n            str += obj.id;\n        }\n        // json data\n        if (null != obj.data) {\n            str += JSON.stringify(obj.data);\n        }\n        debug("encoded %j as %s", obj, str);\n        return str;\n    }\n    /**\n     * Encode packet as \'buffer sequence\' by removing blobs, and\n     * deconstructing packet into object with placeholders and\n     * a list of buffers.\n     */\n    encodeAsBinary(obj) {\n        const deconstruction = binary_1.deconstructPacket(obj);\n        const pack = this.encodeAsString(deconstruction.packet);\n        const buffers = deconstruction.buffers;\n        buffers.unshift(pack); // add packet info to beginning of data list\n        return buffers; // write all the buffers\n    }\n}\nexports.Encoder = Encoder;\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nclass Decoder extends Emitter {\n    constructor() {\n        super();\n    }\n    /**\n     * Decodes an encoded packet string into packet JSON.\n     *\n     * @param {String} obj - encoded packet\n     */\n    add(obj) {\n        let packet;\n        if (typeof obj === "string") {\n            packet = this.decodeString(obj);\n            if (packet.type === PacketType.BINARY_EVENT ||\n                packet.type === PacketType.BINARY_ACK) {\n                // binary packet\'s json\n                this.reconstructor = new BinaryReconstructor(packet);\n                // no attachments, labeled binary but no binary data to follow\n                if (packet.attachments === 0) {\n                    super.emit("decoded", packet);\n                }\n            }\n            else {\n                // non-binary full packet\n                super.emit("decoded", packet);\n            }\n        }\n        else if (is_binary_1.isBinary(obj) || obj.base64) {\n            // raw binary data\n            if (!this.reconstructor) {\n                throw new Error("got binary data when not reconstructing a packet");\n            }\n            else {\n                packet = this.reconstructor.takeBinaryData(obj);\n                if (packet) {\n                    // received final buffer\n                    this.reconstructor = null;\n                    super.emit("decoded", packet);\n                }\n            }\n        }\n        else {\n            throw new Error("Unknown type: " + obj);\n        }\n    }\n    /**\n     * Decode a packet String (JSON data)\n     *\n     * @param {String} str\n     * @return {Object} packet\n     */\n    decodeString(str) {\n        let i = 0;\n        // look up type\n        const p = {\n            type: Number(str.charAt(0)),\n        };\n        if (PacketType[p.type] === undefined) {\n            throw new Error("unknown packet type " + p.type);\n        }\n        // look up attachments if type binary\n        if (p.type === PacketType.BINARY_EVENT ||\n            p.type === PacketType.BINARY_ACK) {\n            const start = i + 1;\n            while (str.charAt(++i) !== "-" && i != str.length) { }\n            const buf = str.substring(start, i);\n            if (buf != Number(buf) || str.charAt(i) !== "-") {\n                throw new Error("Illegal attachments");\n            }\n            p.attachments = Number(buf);\n        }\n        // look up namespace (if any)\n        if ("/" === str.charAt(i + 1)) {\n            const start = i + 1;\n            while (++i) {\n                const c = str.charAt(i);\n                if ("," === c)\n                    break;\n                if (i === str.length)\n                    break;\n            }\n            p.nsp = str.substring(start, i);\n        }\n        else {\n            p.nsp = "/";\n        }\n        // look up id\n        const next = str.charAt(i + 1);\n        if ("" !== next && Number(next) == next) {\n            const start = i + 1;\n            while (++i) {\n                const c = str.charAt(i);\n                if (null == c || Number(c) != c) {\n                    --i;\n                    break;\n                }\n                if (i === str.length)\n                    break;\n            }\n            p.id = Number(str.substring(start, i + 1));\n        }\n        // look up json data\n        if (str.charAt(++i)) {\n            const payload = tryParse(str.substr(i));\n            if (Decoder.isPayloadValid(p.type, payload)) {\n                p.data = payload;\n            }\n            else {\n                throw new Error("invalid payload");\n            }\n        }\n        debug("decoded %s as %j", str, p);\n        return p;\n    }\n    static isPayloadValid(type, payload) {\n        switch (type) {\n            case PacketType.CONNECT:\n                return typeof payload === "object";\n            case PacketType.DISCONNECT:\n                return payload === undefined;\n            case PacketType.CONNECT_ERROR:\n                return typeof payload === "string" || typeof payload === "object";\n            case PacketType.EVENT:\n            case PacketType.BINARY_EVENT:\n                return Array.isArray(payload) && payload.length > 0;\n            case PacketType.ACK:\n            case PacketType.BINARY_ACK:\n                return Array.isArray(payload);\n        }\n    }\n    /**\n     * Deallocates a parser\'s resources\n     */\n    destroy() {\n        if (this.reconstructor) {\n            this.reconstructor.finishedReconstruction();\n        }\n    }\n}\nexports.Decoder = Decoder;\nfunction tryParse(str) {\n    try {\n        return JSON.parse(str);\n    }\n    catch (e) {\n        return false;\n    }\n}\n/**\n * A manager of a binary event\'s \'buffer sequence\'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n    constructor(packet) {\n        this.packet = packet;\n        this.buffers = [];\n        this.reconPack = packet;\n    }\n    /**\n     * Method to be called when binary data received from connection\n     * after a BINARY_EVENT packet.\n     *\n     * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n     * @return {null | Object} returns null if more binary data is expected or\n     *   a reconstructed packet object if all buffers have been received.\n     */\n    takeBinaryData(binData) {\n        this.buffers.push(binData);\n        if (this.buffers.length === this.reconPack.attachments) {\n            // done with buffer list\n            const packet = binary_1.reconstructPacket(this.reconPack, this.buffers);\n            this.finishedReconstruction();\n            return packet;\n        }\n        return null;\n    }\n    /**\n     * Cleans up binary packet reconstruction variables.\n     */\n    finishedReconstruction() {\n        this.reconPack = null;\n        this.buffers = [];\n    }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/socket.io-parser/dist/index.js?')},"./node_modules/socket.io-parser/dist/is-binary.js":
/*!*********************************************************!*\
  !*** ./node_modules/socket.io-parser/dist/is-binary.js ***!
  \*********************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.hasBinary = exports.isBinary = void 0;\nconst withNativeArrayBuffer = typeof ArrayBuffer === "function";\nconst isView = (obj) => {\n    return typeof ArrayBuffer.isView === "function"\n        ? ArrayBuffer.isView(obj)\n        : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === "function" ||\n    (typeof Blob !== "undefined" &&\n        toString.call(Blob) === "[object BlobConstructor]");\nconst withNativeFile = typeof File === "function" ||\n    (typeof File !== "undefined" &&\n        toString.call(File) === "[object FileConstructor]");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nfunction isBinary(obj) {\n    return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n        (withNativeBlob && obj instanceof Blob) ||\n        (withNativeFile && obj instanceof File));\n}\nexports.isBinary = isBinary;\nfunction hasBinary(obj, toJSON) {\n    if (!obj || typeof obj !== "object") {\n        return false;\n    }\n    if (Array.isArray(obj)) {\n        for (let i = 0, l = obj.length; i < l; i++) {\n            if (hasBinary(obj[i])) {\n                return true;\n            }\n        }\n        return false;\n    }\n    if (isBinary(obj)) {\n        return true;\n    }\n    if (obj.toJSON &&\n        typeof obj.toJSON === "function" &&\n        arguments.length === 1) {\n        return hasBinary(obj.toJSON(), true);\n    }\n    for (const key in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n            return true;\n        }\n    }\n    return false;\n}\nexports.hasBinary = hasBinary;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/socket.io-parser/dist/is-binary.js?')},"./node_modules/sqlstring/index.js":
/*!*****************************************!*\
  !*** ./node_modules/sqlstring/index.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('module.exports = __webpack_require__(/*! ./lib/SqlString */ "./node_modules/sqlstring/lib/SqlString.js");\n\n\n//# sourceURL=webpack://txadmin/./node_modules/sqlstring/index.js?')},"./node_modules/sqlstring/lib/SqlString.js":
/*!*************************************************!*\
  !*** ./node_modules/sqlstring/lib/SqlString.js ***!
  \*************************************************/(__unused_webpack_module,exports)=>{eval("var SqlString  = exports;\n\nvar ID_GLOBAL_REGEXP    = /`/g;\nvar QUAL_GLOBAL_REGEXP  = /\\./g;\nvar CHARS_GLOBAL_REGEXP = /[\\0\\b\\t\\n\\r\\x1a\\\"\\'\\\\]/g; // eslint-disable-line no-control-regex\nvar CHARS_ESCAPE_MAP    = {\n  '\\0'   : '\\\\0',\n  '\\b'   : '\\\\b',\n  '\\t'   : '\\\\t',\n  '\\n'   : '\\\\n',\n  '\\r'   : '\\\\r',\n  '\\x1a' : '\\\\Z',\n  '\"'    : '\\\\\"',\n  '\\''   : '\\\\\\'',\n  '\\\\'   : '\\\\\\\\'\n};\n\nSqlString.escapeId = function escapeId(val, forbidQualified) {\n  if (Array.isArray(val)) {\n    var sql = '';\n\n    for (var i = 0; i < val.length; i++) {\n      sql += (i === 0 ? '' : ', ') + SqlString.escapeId(val[i], forbidQualified);\n    }\n\n    return sql;\n  } else if (forbidQualified) {\n    return '`' + String(val).replace(ID_GLOBAL_REGEXP, '``') + '`';\n  } else {\n    return '`' + String(val).replace(ID_GLOBAL_REGEXP, '``').replace(QUAL_GLOBAL_REGEXP, '`.`') + '`';\n  }\n};\n\nSqlString.escape = function escape(val, stringifyObjects, timeZone) {\n  if (val === undefined || val === null) {\n    return 'NULL';\n  }\n\n  switch (typeof val) {\n    case 'boolean': return (val) ? 'true' : 'false';\n    case 'number': return val + '';\n    case 'object':\n      if (val instanceof Date) {\n        return SqlString.dateToString(val, timeZone || 'local');\n      } else if (Array.isArray(val)) {\n        return SqlString.arrayToList(val, timeZone);\n      } else if (Buffer.isBuffer(val)) {\n        return SqlString.bufferToString(val);\n      } else if (typeof val.toSqlString === 'function') {\n        return String(val.toSqlString());\n      } else if (stringifyObjects) {\n        return escapeString(val.toString());\n      } else {\n        return SqlString.objectToValues(val, timeZone);\n      }\n    default: return escapeString(val);\n  }\n};\n\nSqlString.arrayToList = function arrayToList(array, timeZone) {\n  var sql = '';\n\n  for (var i = 0; i < array.length; i++) {\n    var val = array[i];\n\n    if (Array.isArray(val)) {\n      sql += (i === 0 ? '' : ', ') + '(' + SqlString.arrayToList(val, timeZone) + ')';\n    } else {\n      sql += (i === 0 ? '' : ', ') + SqlString.escape(val, true, timeZone);\n    }\n  }\n\n  return sql;\n};\n\nSqlString.format = function format(sql, values, stringifyObjects, timeZone) {\n  if (values == null) {\n    return sql;\n  }\n\n  if (!Array.isArray(values)) {\n    values = [values];\n  }\n\n  var chunkIndex        = 0;\n  var placeholdersRegex = /\\?+/g;\n  var result            = '';\n  var valuesIndex       = 0;\n  var match;\n\n  while (valuesIndex < values.length && (match = placeholdersRegex.exec(sql))) {\n    var len = match[0].length;\n\n    if (len > 2) {\n      continue;\n    }\n\n    var value = len === 2\n      ? SqlString.escapeId(values[valuesIndex])\n      : SqlString.escape(values[valuesIndex], stringifyObjects, timeZone);\n\n    result += sql.slice(chunkIndex, match.index) + value;\n    chunkIndex = placeholdersRegex.lastIndex;\n    valuesIndex++;\n  }\n\n  if (chunkIndex === 0) {\n    // Nothing was replaced\n    return sql;\n  }\n\n  if (chunkIndex < sql.length) {\n    return result + sql.slice(chunkIndex);\n  }\n\n  return result;\n};\n\nSqlString.dateToString = function dateToString(date, timeZone) {\n  var dt = new Date(date);\n\n  if (isNaN(dt.getTime())) {\n    return 'NULL';\n  }\n\n  var year;\n  var month;\n  var day;\n  var hour;\n  var minute;\n  var second;\n  var millisecond;\n\n  if (timeZone === 'local') {\n    year        = dt.getFullYear();\n    month       = dt.getMonth() + 1;\n    day         = dt.getDate();\n    hour        = dt.getHours();\n    minute      = dt.getMinutes();\n    second      = dt.getSeconds();\n    millisecond = dt.getMilliseconds();\n  } else {\n    var tz = convertTimezone(timeZone);\n\n    if (tz !== false && tz !== 0) {\n      dt.setTime(dt.getTime() + (tz * 60000));\n    }\n\n    year       = dt.getUTCFullYear();\n    month       = dt.getUTCMonth() + 1;\n    day         = dt.getUTCDate();\n    hour        = dt.getUTCHours();\n    minute      = dt.getUTCMinutes();\n    second      = dt.getUTCSeconds();\n    millisecond = dt.getUTCMilliseconds();\n  }\n\n  // YYYY-MM-DD HH:mm:ss.mmm\n  var str = zeroPad(year, 4) + '-' + zeroPad(month, 2) + '-' + zeroPad(day, 2) + ' ' +\n    zeroPad(hour, 2) + ':' + zeroPad(minute, 2) + ':' + zeroPad(second, 2) + '.' +\n    zeroPad(millisecond, 3);\n\n  return escapeString(str);\n};\n\nSqlString.bufferToString = function bufferToString(buffer) {\n  return 'X' + escapeString(buffer.toString('hex'));\n};\n\nSqlString.objectToValues = function objectToValues(object, timeZone) {\n  var sql = '';\n\n  for (var key in object) {\n    var val = object[key];\n\n    if (typeof val === 'function') {\n      continue;\n    }\n\n    sql += (sql.length === 0 ? '' : ', ') + SqlString.escapeId(key) + ' = ' + SqlString.escape(val, true, timeZone);\n  }\n\n  return sql;\n};\n\nSqlString.raw = function raw(sql) {\n  if (typeof sql !== 'string') {\n    throw new TypeError('argument sql must be a string');\n  }\n\n  return {\n    toSqlString: function toSqlString() { return sql; }\n  };\n};\n\nfunction escapeString(val) {\n  var chunkIndex = CHARS_GLOBAL_REGEXP.lastIndex = 0;\n  var escapedVal = '';\n  var match;\n\n  while ((match = CHARS_GLOBAL_REGEXP.exec(val))) {\n    escapedVal += val.slice(chunkIndex, match.index) + CHARS_ESCAPE_MAP[match[0]];\n    chunkIndex = CHARS_GLOBAL_REGEXP.lastIndex;\n  }\n\n  if (chunkIndex === 0) {\n    // Nothing was escaped\n    return \"'\" + val + \"'\";\n  }\n\n  if (chunkIndex < val.length) {\n    return \"'\" + escapedVal + val.slice(chunkIndex) + \"'\";\n  }\n\n  return \"'\" + escapedVal + \"'\";\n}\n\nfunction zeroPad(number, length) {\n  number = number.toString();\n  while (number.length < length) {\n    number = '0' + number;\n  }\n\n  return number;\n}\n\nfunction convertTimezone(tz) {\n  if (tz === 'Z') {\n    return 0;\n  }\n\n  var m = tz.match(/([\\+\\-\\s])(\\d\\d):?(\\d\\d)?/);\n  if (m) {\n    return (m[1] === '-' ? -1 : 1) * (parseInt(m[2], 10) + ((m[3] ? parseInt(m[3], 10) : 0) / 60)) * 60;\n  }\n  return false;\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/sqlstring/lib/SqlString.js?")},"./node_modules/statuses/index.js":
/*!****************************************!*\
  !*** ./node_modules/statuses/index.js ***!
  \****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("/*!\n * statuses\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar codes = __webpack_require__(/*! ./codes.json */ \"./node_modules/statuses/codes.json\")\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = status\n\n// status code to message map\nstatus.STATUS_CODES = codes\n\n// array of status codes\nstatus.codes = populateStatusesMap(status, codes)\n\n// status codes for redirects\nstatus.redirect = {\n  300: true,\n  301: true,\n  302: true,\n  303: true,\n  305: true,\n  307: true,\n  308: true\n}\n\n// status codes for empty bodies\nstatus.empty = {\n  204: true,\n  205: true,\n  304: true\n}\n\n// status codes for when you should retry the request\nstatus.retry = {\n  502: true,\n  503: true,\n  504: true\n}\n\n/**\n * Populate the statuses map for given codes.\n * @private\n */\n\nfunction populateStatusesMap (statuses, codes) {\n  var arr = []\n\n  Object.keys(codes).forEach(function forEachCode (code) {\n    var message = codes[code]\n    var status = Number(code)\n\n    // Populate properties\n    statuses[status] = message\n    statuses[message] = status\n    statuses[message.toLowerCase()] = status\n\n    // Add to array\n    arr.push(status)\n  })\n\n  return arr\n}\n\n/**\n * Get the status code.\n *\n * Given a number, this will throw if it is not a known status\n * code, otherwise the code will be returned. Given a string,\n * the string will be parsed for a number and return the code\n * if valid, otherwise will lookup the code assuming this is\n * the status message.\n *\n * @param {string|number} code\n * @returns {number}\n * @public\n */\n\nfunction status (code) {\n  if (typeof code === 'number') {\n    if (!status[code]) throw new Error('invalid status code: ' + code)\n    return code\n  }\n\n  if (typeof code !== 'string') {\n    throw new TypeError('code must be a number or string')\n  }\n\n  // '403'\n  var n = parseInt(code, 10)\n  if (!isNaN(n)) {\n    if (!status[n]) throw new Error('invalid status code: ' + n)\n    return n\n  }\n\n  n = status[code.toLowerCase()]\n  if (!n) throw new Error('invalid status message: \"' + code + '\"')\n  return n\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/statuses/index.js?")},"./node_modules/steno/index.js":
/*!*************************************!*\
  !*** ./node_modules/steno/index.js ***!
  \*************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('var fs = __webpack_require__(/*! graceful-fs */ "./node_modules/graceful-fs/graceful-fs.js")\nvar path = __webpack_require__(/*! path */ "path")\n\nvar writers = {}\n\n// Returns a temporary file\n// Example: for /some/file will return /some/.~file\nfunction getTempFile (file) {\n  return path.join(path.dirname(file), \'.~\' + path.basename(file))\n}\n\nfunction Writer (file) {\n  this.file = file\n  this.callbacks = []\n  this.nextData = null\n  this.nextCallbacks = []\n}\n\nWriter.prototype.write = function (data, cb) {\n  if (this.lock) {\n    // File is locked\n    // Save callback for later\n    this.nextCallbacks.push(cb)\n    // Set next data to be written\n    this.nextData = data\n  } else {\n    // File is not locked\n    // Lock it\n    this.lock = true\n\n    // Write data to a temporary file\n    var tmpFile = getTempFile(this.file)\n    fs.writeFile(tmpFile, data, function (err) {\n      if (err) {\n        // On error, call all the stored callbacks and the current one\n        // Then return\n        while (this.callbacks.length) this.callbacks.shift()(err)\n        cb(err)\n        return\n      }\n\n      // On success rename the temporary file to the real file\n      fs.rename(tmpFile, this.file, function (err) {\n        // call all the stored callbacks and the current one\n        while (this.callbacks.length) this.callbacks.shift()(err)\n        cb()\n\n        // Unlock file\n        this.lock = false\n\n        // Write next data if any\n        if (this.nextData) {\n          var data = this.nextData\n          this.callbacks = this.nextCallbacks\n\n          this.nextData = null\n          this.nextCallbacks = []\n\n          this.write(data, this.callbacks.pop())\n        }\n      }.bind(this))\n    }.bind(this))\n  }\n}\n\nmodule.exports.writeFile = function (file, data, cb) {\n  // Convert to absolute path\n  file = path.resolve(file)\n\n  // Create or get writer\n  writers[file] = writers[file] || new Writer(file)\n\n  // Write\n  writers[file].write(data, cb)\n}\n\nmodule.exports.writeFileSync = function (file, data) {\n  fs.writeFileSync(getTempFile(file), data)\n  fs.renameSync(getTempFile(file), file)\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/steno/index.js?')},"./node_modules/stream-chain/index.js":
/*!********************************************!*\
  !*** ./node_modules/stream-chain/index.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst {Readable, Writable, Duplex, Transform} = __webpack_require__(/*! stream */ \"stream\");\n\nconst none = Symbol.for('object-stream.none');\nconst finalSymbol = Symbol.for('object-stream.final');\nconst manySymbol = Symbol.for('object-stream.many');\n\nconst final = value => ({[finalSymbol]: value});\nconst many = values => ({[manySymbol]: values});\n\nconst isFinal = o => o && typeof o == 'object' && finalSymbol in o;\nconst isMany = o => o && typeof o == 'object' && manySymbol in o;\n\nconst getFinalValue = o => o[finalSymbol];\nconst getManyValues = o => o[manySymbol];\n\nconst runAsyncGenerator = async (gen, stream) => {\n  for (;;) {\n    let data = gen.next();\n    if (data && typeof data.then == 'function') {\n      data = await data;\n    }\n    if (data.done) break;\n    let value = data.value;\n    if (value && typeof value.then == 'function') {\n      value = await value;\n    }\n    Chain.sanitize(value, stream);\n  }\n};\n\nconst wrapFunction = fn =>\n  new Transform({\n    writableObjectMode: true,\n    readableObjectMode: true,\n    transform(chunk, encoding, callback) {\n      try {\n        const result = fn.call(this, chunk, encoding);\n        if (result && typeof result.then == 'function') {\n          // thenable\n          result.then(\n            result => (Chain.sanitize(result, this), callback(null)),\n            error => callback(error)\n          );\n          return;\n        }\n        if (result && typeof result.next == 'function') {\n          // generator\n          runAsyncGenerator(result, this).then(\n            () => callback(null),\n            error => callback(error)\n          );\n          return;\n        }\n        Chain.sanitize(result, this);\n        callback(null);\n      } catch (error) {\n        callback(error);\n      }\n    }\n  });\n\nconst wrapArray = fns =>\n  new Transform({\n    writableObjectMode: true,\n    readableObjectMode: true,\n    transform(chunk, encoding, callback) {\n      try {\n        let value = chunk;\n        for (let i = 0; i < fns.length; ++i) {\n          const result = fns[i].call(this, value, encoding);\n          if (result === Chain.none) {\n            callback(null);\n            return;\n          }\n          if (Chain.isFinal(result)) {\n            value = Chain.getFinalValue(result);\n            break;\n          }\n          value = result;\n        }\n        Chain.sanitize(value, this);\n        callback(null);\n      } catch (error) {\n        callback(error);\n      }\n    }\n  });\n\n// is*NodeStream functions taken from https://github.com/nodejs/node/blob/master/lib/internal/streams/utils.js\nconst isReadableNodeStream = obj =>\n  obj &&\n  typeof obj.pipe === 'function' &&\n  typeof obj.on === 'function' &&\n  (!obj._writableState || (typeof obj._readableState === 'object' ? obj._readableState.readable : null) !== false) && // Duplex\n  (!obj._writableState || obj._readableState); // Writable has .pipe.\n\nconst isWritableNodeStream = obj =>\n  obj &&\n  typeof obj.write === 'function' &&\n  typeof obj.on === 'function' &&\n  (!obj._readableState || (typeof obj._writableState === 'object' ? obj._writableState.writable : null) !== false); // Duplex\n\nconst isDuplexNodeStream = obj =>\n  obj && typeof obj.pipe === 'function' && obj._readableState && typeof obj.on === 'function' && typeof obj.write === 'function';\n\nclass Chain extends Duplex {\n  constructor(fns, options) {\n    super(options || {writableObjectMode: true, readableObjectMode: true});\n\n    if (!(fns instanceof Array) || !fns.length) {\n      throw Error(\"Chain's argument should be a non-empty array.\");\n    }\n\n    this.streams = fns\n      .filter(fn => fn)\n      .map((fn, index, fns) => {\n        if (typeof fn === 'function' || fn instanceof Array) return Chain.convertToTransform(fn);\n        if (isDuplexNodeStream(fn) || (!index && isReadableNodeStream(fn)) || (index === fns.length - 1 && isWritableNodeStream(fn))) {\n          return fn;\n        }\n        throw Error('Arguments should be functions, arrays or streams.');\n      })\n      .filter(s => s);\n    this.input = this.streams[0];\n    this.output = this.streams.reduce((output, stream) => (output && output.pipe(stream)) || stream);\n\n    if (!isWritableNodeStream(this.input)) {\n      this._write = (_1, _2, callback) => callback(null);\n      this._final = callback => callback(null); // unavailable in Node 6\n      this.input.on('end', () => this.end());\n    }\n\n    if (isReadableNodeStream(this.output)) {\n      this.output.on('data', chunk => !this.push(chunk) && this.output.pause());\n      this.output.on('end', () => this.push(null));\n    } else {\n      this._read = () => {}; // nop\n      this.resume();\n      this.output.on('finish', () => this.push(null));\n    }\n\n    // connect events\n    if (!options || !options.skipEvents) {\n      this.streams.forEach(stream => stream.on('error', error => this.emit('error', error)));\n    }\n  }\n  _write(chunk, encoding, callback) {\n    let error = null;\n    try {\n      this.input.write(chunk, encoding, e => callback(e || error));\n    } catch (e) {\n      error = e;\n    }\n  }\n  _final(callback) {\n    let error = null;\n    try {\n      this.input.end(null, null, e => callback(e || error));\n    } catch (e) {\n      error = e;\n    }\n  }\n  _read() {\n    this.output.resume();\n  }\n  static make(fns, options) {\n    return new Chain(fns, options);\n  }\n  static sanitize(result, stream) {\n    if (Chain.isFinal(result)) {\n      result = Chain.getFinalValue(result);\n    } else if (Chain.isMany(result)) {\n      result = Chain.getManyValues(result);\n    }\n    if (result !== undefined && result !== null && result !== Chain.none) {\n      if (result instanceof Array) {\n        result.forEach(value => value !== undefined && value !== null && stream.push(value));\n      } else {\n        stream.push(result);\n      }\n    }\n  }\n  static convertToTransform(fn) {\n    if (typeof fn === 'function') return wrapFunction(fn);\n    if (fn instanceof Array) return fn.length ? wrapArray(fn) : null;\n    return null;\n  }\n}\n\nChain.none = none;\nChain.final = final;\nChain.isFinal = isFinal;\nChain.getFinalValue = getFinalValue;\nChain.many = many;\nChain.isMany = isMany;\nChain.getManyValues = getManyValues;\n\nChain.chain = Chain.make;\nChain.make.Constructor = Chain;\n\nmodule.exports = Chain;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/stream-chain/index.js?")},"./node_modules/stream-json/Assembler.js":
/*!***********************************************!*\
  !*** ./node_modules/stream-json/Assembler.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst EventEmitter = __webpack_require__(/*! events */ \"events\");\n\nconst startObject = Ctr =>\n  function () {\n    if (this.done) {\n      this.done = false;\n    } else {\n      this.stack.push(this.current, this.key);\n    }\n    this.current = new Ctr();\n    this.key = null;\n  };\n\nclass Assembler extends EventEmitter {\n  static connectTo(stream, options) {\n    return new Assembler(options).connectTo(stream);\n  }\n\n  constructor(options) {\n    super();\n    this.stack = [];\n    this.current = this.key = null;\n    this.done = true;\n    if (options) {\n      this.reviver = typeof options.reviver == 'function' && options.reviver;\n      if (this.reviver) {\n        this.stringValue = this._saveValue = this._saveValueWithReviver;\n      }\n      if (options.numberAsString) {\n        this.numberValue = this.stringValue;\n      }\n    }\n  }\n\n  connectTo(stream) {\n    stream.on('data', chunk => {\n      if (this[chunk.name]) {\n        this[chunk.name](chunk.value);\n        if (this.done) this.emit('done', this);\n      }\n    });\n    return this;\n  }\n\n  get depth() {\n    return (this.stack.length >> 1) + (this.done ? 0 : 1);\n  }\n\n  get path() {\n    const path = [];\n    for (let i = 0; i < this.stack.length; i += 2) {\n      const key = this.stack[i + 1];\n      path.push(key === null ? this.stack[i].length : key);\n    }\n    return path;\n  }\n\n  dropToLevel(level) {\n    if (level < this.depth) {\n      if (level) {\n        const index = (level - 1) << 1;\n        this.current = this.stack[index];\n        this.key = this.stack[index + 1];\n        this.stack.splice(index);\n      } else {\n        this.stack = [];\n        this.current = this.key = null;\n        this.done = true;\n      }\n    }\n    return this;\n  }\n\n  consume(chunk) {\n    this[chunk.name] && this[chunk.name](chunk.value);\n    return this;\n  }\n\n  keyValue(value) {\n    this.key = value;\n  }\n\n  //stringValue() - aliased below to _saveValue()\n\n  numberValue(value) {\n    this._saveValue(parseFloat(value));\n  }\n  nullValue() {\n    this._saveValue(null);\n  }\n  trueValue() {\n    this._saveValue(true);\n  }\n  falseValue() {\n    this._saveValue(false);\n  }\n\n  //startObject() - assigned below\n\n  endObject() {\n    if (this.stack.length) {\n      const value = this.current;\n      this.key = this.stack.pop();\n      this.current = this.stack.pop();\n      this._saveValue(value);\n    } else {\n      this.done = true;\n    }\n  }\n\n  //startArray() - assigned below\n  //endArray() - aliased below to endObject()\n\n  _saveValue(value) {\n    if (this.done) {\n      this.current = value;\n    } else {\n      if (this.current instanceof Array) {\n        this.current.push(value);\n      } else {\n        this.current[this.key] = value;\n        this.key = null;\n      }\n    }\n  }\n  _saveValueWithReviver(value) {\n    if (this.done) {\n      this.current = this.reviver('', value);\n    } else {\n      if (this.current instanceof Array) {\n        value = this.reviver('' + this.current.length, value);\n        this.current.push(value);\n        if (value === undefined) {\n          delete this.current[this.current.length - 1];\n        }\n      } else {\n        value = this.reviver(this.key, value);\n        if (value !== undefined) {\n          this.current[this.key] = value;\n        }\n        this.key = null;\n      }\n    }\n  }\n}\n\nAssembler.prototype.stringValue = Assembler.prototype._saveValue;\nAssembler.prototype.startObject = startObject(Object);\nAssembler.prototype.startArray = startObject(Array);\nAssembler.prototype.endArray = Assembler.prototype.endObject;\n\nmodule.exports = Assembler;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/stream-json/Assembler.js?")},"./node_modules/stream-json/Parser.js":
/*!********************************************!*\
  !*** ./node_modules/stream-json/Parser.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst Utf8Stream = __webpack_require__(/*! ./utils/Utf8Stream */ \"./node_modules/stream-json/utils/Utf8Stream.js\");\n\nconst patterns = {\n  value1: /^(?:[\\\"\\{\\[\\]\\-\\d]|true\\b|false\\b|null\\b|\\s{1,256})/,\n  string: /^(?:[^\\\"\\\\]{1,256}|\\\\[bfnrt\\\"\\\\\\/]|\\\\u[\\da-fA-F]{4}|\\\")/,\n  key1: /^(?:[\\\"\\}]|\\s{1,256})/,\n  colon: /^(?:\\:|\\s{1,256})/,\n  comma: /^(?:[\\,\\]\\}]|\\s{1,256})/,\n  ws: /^\\s{1,256}/,\n  numberStart: /^\\d/,\n  numberDigit: /^\\d{0,256}/,\n  numberFraction: /^[\\.eE]/,\n  numberExponent: /^[eE]/,\n  numberExpSign: /^[-+]/\n};\nconst MAX_PATTERN_SIZE = 16;\n\nlet noSticky = true;\ntry {\n  new RegExp('.', 'y');\n  noSticky = false;\n} catch (e) {\n  // suppress\n}\n\n!noSticky &&\n  Object.keys(patterns).forEach(key => {\n    let src = patterns[key].source.slice(1); // lop off ^\n    if (src.slice(0, 3) === '(?:' && src.slice(-1) === ')') {\n      src = src.slice(3, -1);\n    }\n    patterns[key] = new RegExp(src, 'y');\n  });\n\npatterns.numberFracStart = patterns.numberExpStart = patterns.numberStart;\npatterns.numberFracDigit = patterns.numberExpDigit = patterns.numberDigit;\n\nconst values = {true: true, false: false, null: null},\n  expected = {object: 'objectStop', array: 'arrayStop', '': 'done'};\n\n// long hexadecimal codes: \\uXXXX\nconst fromHex = s => String.fromCharCode(parseInt(s.slice(2), 16));\n\n// short codes: \\b \\f \\n \\r \\t \\\" \\\\ \\/\nconst codes = {b: '\\b', f: '\\f', n: '\\n', r: '\\r', t: '\\t', '\"': '\"', '\\\\': '\\\\', '/': '/'};\n\nclass Parser extends Utf8Stream {\n  static make(options) {\n    return new Parser(options);\n  }\n\n  constructor(options) {\n    super(Object.assign({}, options, {readableObjectMode: true}));\n\n    this._packKeys = this._packStrings = this._packNumbers = this._streamKeys = this._streamStrings = this._streamNumbers = true;\n    if (options) {\n      'packValues' in options && (this._packKeys = this._packStrings = this._packNumbers = options.packValues);\n      'packKeys' in options && (this._packKeys = options.packKeys);\n      'packStrings' in options && (this._packStrings = options.packStrings);\n      'packNumbers' in options && (this._packNumbers = options.packNumbers);\n      'streamValues' in options && (this._streamKeys = this._streamStrings = this._streamNumbers = options.streamValues);\n      'streamKeys' in options && (this._streamKeys = options.streamKeys);\n      'streamStrings' in options && (this._streamStrings = options.streamStrings);\n      'streamNumbers' in options && (this._streamNumbers = options.streamNumbers);\n      this._jsonStreaming = options.jsonStreaming;\n    }\n    !this._packKeys && (this._streamKeys = true);\n    !this._packStrings && (this._streamStrings = true);\n    !this._packNumbers && (this._streamNumbers = true);\n\n    this._done = false;\n    this._expect = this._jsonStreaming ? 'done' : 'value';\n    this._stack = [];\n    this._parent = '';\n    this._open_number = false;\n    this._accumulator = '';\n  }\n\n  _flush(callback) {\n    this._done = true;\n    super._flush(error => {\n      if (error) return callback(error);\n      if (this._open_number) {\n        if (this._streamNumbers) {\n          this.push({name: 'endNumber'});\n        }\n        this._open_number = false;\n        if (this._packNumbers) {\n          this.push({name: 'numberValue', value: this._accumulator});\n          this._accumulator = '';\n        }\n      }\n      callback(null);\n    });\n  }\n\n  _processBuffer(callback) {\n    let match,\n      value,\n      index = 0;\n    main: for (;;) {\n      switch (this._expect) {\n        case 'value1':\n        case 'value':\n          patterns.value1.lastIndex = index;\n          match = patterns.value1.exec(this._buffer);\n          if (!match) {\n            if (this._done || index + MAX_PATTERN_SIZE < this._buffer.length) {\n              if (index < this._buffer.length) return callback(new Error('Parser cannot parse input: expected a value'));\n              return callback(new Error('Parser has expected a value'));\n            }\n            break main; // wait for more input\n          }\n          value = match[0];\n          switch (value) {\n            case '\"':\n              this._streamStrings && this.push({name: 'startString'});\n              this._expect = 'string';\n              break;\n            case '{':\n              this.push({name: 'startObject'});\n              this._stack.push(this._parent);\n              this._parent = 'object';\n              this._expect = 'key1';\n              break;\n            case '[':\n              this.push({name: 'startArray'});\n              this._stack.push(this._parent);\n              this._parent = 'array';\n              this._expect = 'value1';\n              break;\n            case ']':\n              if (this._expect !== 'value1') return callback(new Error(\"Parser cannot parse input: unexpected token ']'\"));\n              if (this._open_number) {\n                this._streamNumbers && this.push({name: 'endNumber'});\n                this._open_number = false;\n                if (this._packNumbers) {\n                  this.push({name: 'numberValue', value: this._accumulator});\n                  this._accumulator = '';\n                }\n              }\n              this.push({name: 'endArray'});\n              this._parent = this._stack.pop();\n              this._expect = expected[this._parent];\n              break;\n            case '-':\n              this._open_number = true;\n              if (this._streamNumbers) {\n                this.push({name: 'startNumber'});\n                this.push({name: 'numberChunk', value: '-'});\n              }\n              this._packNumbers && (this._accumulator = '-');\n              this._expect = 'numberStart';\n              break;\n            case '0':\n              this._open_number = true;\n              if (this._streamNumbers) {\n                this.push({name: 'startNumber'});\n                this.push({name: 'numberChunk', value: '0'});\n              }\n              this._packNumbers && (this._accumulator = '0');\n              this._expect = 'numberFraction';\n              break;\n            case '1':\n            case '2':\n            case '3':\n            case '4':\n            case '5':\n            case '6':\n            case '7':\n            case '8':\n            case '9':\n              this._open_number = true;\n              if (this._streamNumbers) {\n                this.push({name: 'startNumber'});\n                this.push({name: 'numberChunk', value: value});\n              }\n              this._packNumbers && (this._accumulator = value);\n              this._expect = 'numberDigit';\n              break;\n            case 'true':\n            case 'false':\n            case 'null':\n              if (this._buffer.length - index === value.length && !this._done) break main; // wait for more input\n              this.push({name: value + 'Value', value: values[value]});\n              this._expect = expected[this._parent];\n              break;\n            // default: // ws\n          }\n          if (noSticky) {\n            this._buffer = this._buffer.slice(value.length);\n          } else {\n            index += value.length;\n          }\n          break;\n        case 'keyVal':\n        case 'string':\n          patterns.string.lastIndex = index;\n          match = patterns.string.exec(this._buffer);\n          if (!match) {\n            if (index < this._buffer.length && (this._done || this._buffer.length - index >= 6))\n              return callback(new Error('Parser cannot parse input: escaped characters'));\n            if (this._done) return callback(new Error('Parser has expected a string value'));\n            break main; // wait for more input\n          }\n          value = match[0];\n          if (value === '\"') {\n            if (this._expect === 'keyVal') {\n              this._streamKeys && this.push({name: 'endKey'});\n              if (this._packKeys) {\n                this.push({name: 'keyValue', value: this._accumulator});\n                this._accumulator = '';\n              }\n              this._expect = 'colon';\n            } else {\n              this._streamStrings && this.push({name: 'endString'});\n              if (this._packStrings) {\n                this.push({name: 'stringValue', value: this._accumulator});\n                this._accumulator = '';\n              }\n              this._expect = expected[this._parent];\n            }\n          } else if (value.length > 1 && value.charAt(0) === '\\\\') {\n            const t = value.length == 2 ? codes[value.charAt(1)] : fromHex(value);\n            if (this._expect === 'keyVal' ? this._streamKeys : this._streamStrings) {\n              this.push({name: 'stringChunk', value: t});\n            }\n            if (this._expect === 'keyVal' ? this._packKeys : this._packStrings) {\n              this._accumulator += t;\n            }\n          } else {\n            if (this._expect === 'keyVal' ? this._streamKeys : this._streamStrings) {\n              this.push({name: 'stringChunk', value: value});\n            }\n            if (this._expect === 'keyVal' ? this._packKeys : this._packStrings) {\n              this._accumulator += value;\n            }\n          }\n          if (noSticky) {\n            this._buffer = this._buffer.slice(value.length);\n          } else {\n            index += value.length;\n          }\n          break;\n        case 'key1':\n        case 'key':\n          patterns.key1.lastIndex = index;\n          match = patterns.key1.exec(this._buffer);\n          if (!match) {\n            if (index < this._buffer.length || this._done) return callback(new Error('Parser cannot parse input: expected an object key'));\n            break main; // wait for more input\n          }\n          value = match[0];\n          if (value === '\"') {\n            this._streamKeys && this.push({name: 'startKey'});\n            this._expect = 'keyVal';\n          } else if (value === '}') {\n            if (this._expect !== 'key1') return callback(new Error(\"Parser cannot parse input: unexpected token '}'\"));\n            this.push({name: 'endObject'});\n            this._parent = this._stack.pop();\n            this._expect = expected[this._parent];\n          }\n          if (noSticky) {\n            this._buffer = this._buffer.slice(value.length);\n          } else {\n            index += value.length;\n          }\n          break;\n        case 'colon':\n          patterns.colon.lastIndex = index;\n          match = patterns.colon.exec(this._buffer);\n          if (!match) {\n            if (index < this._buffer.length || this._done) return callback(new Error(\"Parser cannot parse input: expected ':'\"));\n            break main; // wait for more input\n          }\n          value = match[0];\n          value === ':' && (this._expect = 'value');\n          if (noSticky) {\n            this._buffer = this._buffer.slice(value.length);\n          } else {\n            index += value.length;\n          }\n          break;\n        case 'arrayStop':\n        case 'objectStop':\n          patterns.comma.lastIndex = index;\n          match = patterns.comma.exec(this._buffer);\n          if (!match) {\n            if (index < this._buffer.length || this._done) return callback(new Error(\"Parser cannot parse input: expected ','\"));\n            break main; // wait for more input\n          }\n          if (this._open_number) {\n            this._streamNumbers && this.push({name: 'endNumber'});\n            this._open_number = false;\n            if (this._packNumbers) {\n              this.push({name: 'numberValue', value: this._accumulator});\n              this._accumulator = '';\n            }\n          }\n          value = match[0];\n          if (value === ',') {\n            this._expect = this._expect === 'arrayStop' ? 'value' : 'key';\n          } else if (value === '}' || value === ']') {\n            if (value === '}' ? this._expect === 'arrayStop' : this._expect !== 'arrayStop') {\n              return callback(new Error(\"Parser cannot parse input: expected '\" + (this._expect === 'arrayStop' ? ']' : '}') + \"'\"));\n            }\n            this.push({name: value === '}' ? 'endObject' : 'endArray'});\n            this._parent = this._stack.pop();\n            this._expect = expected[this._parent];\n          }\n          if (noSticky) {\n            this._buffer = this._buffer.slice(value.length);\n          } else {\n            index += value.length;\n          }\n          break;\n        // number chunks\n        case 'numberStart': // [0-9]\n          patterns.numberStart.lastIndex = index;\n          match = patterns.numberStart.exec(this._buffer);\n          if (!match) {\n            if (index < this._buffer.length || this._done) return callback(new Error('Parser cannot parse input: expected a starting digit'));\n            break main; // wait for more input\n          }\n          value = match[0];\n          this._streamNumbers && this.push({name: 'numberChunk', value: value});\n          this._packNumbers && (this._accumulator += value);\n          this._expect = value === '0' ? 'numberFraction' : 'numberDigit';\n          if (noSticky) {\n            this._buffer = this._buffer.slice(value.length);\n          } else {\n            index += value.length;\n          }\n          break;\n        case 'numberDigit': // [0-9]*\n          patterns.numberDigit.lastIndex = index;\n          match = patterns.numberDigit.exec(this._buffer);\n          if (!match) {\n            if (index < this._buffer.length || this._done) return callback(new Error('Parser cannot parse input: expected a digit'));\n            break main; // wait for more input\n          }\n          value = match[0];\n          if (value) {\n            this._streamNumbers && this.push({name: 'numberChunk', value: value});\n            this._packNumbers && (this._accumulator += value);\n            if (noSticky) {\n              this._buffer = this._buffer.slice(value.length);\n            } else {\n              index += value.length;\n            }\n          } else {\n            if (index < this._buffer.length) {\n              this._expect = 'numberFraction';\n              break;\n            }\n            if (this._done) {\n              this._expect = expected[this._parent];\n              break;\n            }\n            break main; // wait for more input\n          }\n          break;\n        case 'numberFraction': // [\\.eE]?\n          patterns.numberFraction.lastIndex = index;\n          match = patterns.numberFraction.exec(this._buffer);\n          if (!match) {\n            if (index < this._buffer.length || this._done) {\n              this._expect = expected[this._parent];\n              break;\n            }\n            break main; // wait for more input\n          }\n          value = match[0];\n          this._streamNumbers && this.push({name: 'numberChunk', value: value});\n          this._packNumbers && (this._accumulator += value);\n          this._expect = value === '.' ? 'numberFracStart' : 'numberExpSign';\n          if (noSticky) {\n            this._buffer = this._buffer.slice(value.length);\n          } else {\n            index += value.length;\n          }\n          break;\n        case 'numberFracStart': // [0-9]\n          patterns.numberFracStart.lastIndex = index;\n          match = patterns.numberFracStart.exec(this._buffer);\n          if (!match) {\n            if (index < this._buffer.length || this._done) return callback(new Error('Parser cannot parse input: expected a fractional part of a number'));\n            break main; // wait for more input\n          }\n          value = match[0];\n          this._streamNumbers && this.push({name: 'numberChunk', value: value});\n          this._packNumbers && (this._accumulator += value);\n          this._expect = 'numberFracDigit';\n          if (noSticky) {\n            this._buffer = this._buffer.slice(value.length);\n          } else {\n            index += value.length;\n          }\n          break;\n        case 'numberFracDigit': // [0-9]*\n          patterns.numberFracDigit.lastIndex = index;\n          match = patterns.numberFracDigit.exec(this._buffer);\n          value = match[0];\n          if (value) {\n            this._streamNumbers && this.push({name: 'numberChunk', value: value});\n            this._packNumbers && (this._accumulator += value);\n            if (noSticky) {\n              this._buffer = this._buffer.slice(value.length);\n            } else {\n              index += value.length;\n            }\n          } else {\n            if (index < this._buffer.length) {\n              this._expect = 'numberExponent';\n              break;\n            }\n            if (this._done) {\n              this._expect = expected[this._parent];\n              break;\n            }\n            break main; // wait for more input\n          }\n          break;\n        case 'numberExponent': // [eE]?\n          patterns.numberExponent.lastIndex = index;\n          match = patterns.numberExponent.exec(this._buffer);\n          if (!match) {\n            if (index < this._buffer.length) {\n              this._expect = expected[this._parent];\n              break;\n            }\n            if (this._done) {\n              this._expect = 'done';\n              break;\n            }\n            break main; // wait for more input\n          }\n          value = match[0];\n          this._streamNumbers && this.push({name: 'numberChunk', value: value});\n          this._packNumbers && (this._accumulator += value);\n          this._expect = 'numberExpSign';\n          if (noSticky) {\n            this._buffer = this._buffer.slice(value.length);\n          } else {\n            index += value.length;\n          }\n          break;\n        case 'numberExpSign': // [-+]?\n          patterns.numberExpSign.lastIndex = index;\n          match = patterns.numberExpSign.exec(this._buffer);\n          if (!match) {\n            if (index < this._buffer.length) {\n              this._expect = 'numberExpStart';\n              break;\n            }\n            if (this._done) return callback(new Error('Parser has expected an exponent value of a number'));\n            break main; // wait for more input\n          }\n          value = match[0];\n          this._streamNumbers && this.push({name: 'numberChunk', value: value});\n          this._packNumbers && (this._accumulator += value);\n          this._expect = 'numberExpStart';\n          if (noSticky) {\n            this._buffer = this._buffer.slice(value.length);\n          } else {\n            index += value.length;\n          }\n          break;\n        case 'numberExpStart': // [0-9]\n          patterns.numberExpStart.lastIndex = index;\n          match = patterns.numberExpStart.exec(this._buffer);\n          if (!match) {\n            if (index < this._buffer.length || this._done) return callback(new Error('Parser cannot parse input: expected an exponent part of a number'));\n            break main; // wait for more input\n          }\n          value = match[0];\n          this._streamNumbers && this.push({name: 'numberChunk', value: value});\n          this._packNumbers && (this._accumulator += value);\n          this._expect = 'numberExpDigit';\n          if (noSticky) {\n            this._buffer = this._buffer.slice(value.length);\n          } else {\n            index += value.length;\n          }\n          break;\n        case 'numberExpDigit': // [0-9]*\n          patterns.numberExpDigit.lastIndex = index;\n          match = patterns.numberExpDigit.exec(this._buffer);\n          value = match[0];\n          if (value) {\n            this._streamNumbers && this.push({name: 'numberChunk', value: value});\n            this._packNumbers && (this._accumulator += value);\n            if (noSticky) {\n              this._buffer = this._buffer.slice(value.length);\n            } else {\n              index += value.length;\n            }\n          } else {\n            if (index < this._buffer.length || this._done) {\n              this._expect = expected[this._parent];\n              break;\n            }\n            break main; // wait for more input\n          }\n          break;\n        case 'done':\n          patterns.ws.lastIndex = index;\n          match = patterns.ws.exec(this._buffer);\n          if (!match) {\n            if (index < this._buffer.length) {\n              if (this._jsonStreaming) {\n                this._expect = 'value';\n                break;\n              }\n              return callback(new Error('Parser cannot parse input: unexpected characters'));\n            }\n            break main; // wait for more input\n          }\n          value = match[0];\n          if (this._open_number) {\n            this._streamNumbers && this.push({name: 'endNumber'});\n            this._open_number = false;\n            if (this._packNumbers) {\n              this.push({name: 'numberValue', value: this._accumulator});\n              this._accumulator = '';\n            }\n          }\n          if (noSticky) {\n            this._buffer = this._buffer.slice(value.length);\n          } else {\n            index += value.length;\n          }\n          break;\n      }\n    }\n    !noSticky && (this._buffer = this._buffer.slice(index));\n    callback(null);\n  }\n}\nParser.parser = Parser.make;\nParser.make.Constructor = Parser;\n\nmodule.exports = Parser;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/stream-json/Parser.js?")},"./node_modules/stream-json/streamers/StreamBase.js":
/*!**********************************************************!*\
  !*** ./node_modules/stream-json/streamers/StreamBase.js ***!
  \**********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst {Transform} = __webpack_require__(/*! stream */ "stream");\nconst Assembler = __webpack_require__(/*! ../Assembler */ "./node_modules/stream-json/Assembler.js");\n\nclass Counter {\n  constructor(initialDepth) {\n    this.depth = initialDepth;\n  }\n  startObject() {\n    ++this.depth;\n  }\n  endObject() {\n    --this.depth;\n  }\n  startArray() {\n    ++this.depth;\n  }\n  endArray() {\n    --this.depth;\n  }\n}\n\nclass StreamBase extends Transform {\n  constructor(options) {\n    super(Object.assign({}, options, {writableObjectMode: true, readableObjectMode: true}));\n    if (options) {\n      this.objectFilter = options.objectFilter;\n      this.includeUndecided = options.includeUndecided;\n    }\n    if (typeof this.objectFilter != \'function\') {\n      this._filter = this._transform;\n    }\n    this._transform = this._wait || this._filter;\n    this._assembler = new Assembler(options);\n  }\n\n  _transform(chunk, encoding, callback) {\n    if (this._assembler[chunk.name]) {\n      this._assembler[chunk.name](chunk.value);\n      if (this._assembler.depth === this._level) {\n        this._push();\n      }\n    }\n    callback(null);\n  }\n\n  _filter(chunk, encoding, callback) {\n    if (this._assembler[chunk.name]) {\n      this._assembler[chunk.name](chunk.value);\n      const result = this.objectFilter(this._assembler);\n      if (result) {\n        if (this._assembler.depth === this._level) {\n          this._push();\n          this._transform = this._filter;\n        }\n        this._transform = this._accept;\n        return callback(null);\n      }\n      if (result === false) {\n        this._saved_assembler = this._assembler;\n        this._assembler = new Counter(this._saved_assembler.depth);\n        this._saved_assembler.dropToLevel(this._level);\n        if (this._assembler.depth === this._level) {\n          this._assembler = this._saved_assembler;\n          this._transform = this._filter;\n        }\n        this._transform = this._reject;\n        return callback(null);\n      }\n      if (this._assembler.depth === this._level) {\n        this._push(!this.includeUndecided);\n      }\n    }\n    callback(null);\n  }\n\n  _accept(chunk, encoding, callback) {\n    if (this._assembler[chunk.name]) {\n      this._assembler[chunk.name](chunk.value);\n      if (this._assembler.depth === this._level) {\n        this._push();\n        this._transform = this._filter;\n      }\n    }\n    callback(null);\n  }\n\n  _reject(chunk, encoding, callback) {\n    if (this._assembler[chunk.name]) {\n      this._assembler[chunk.name](chunk.value);\n      if (this._assembler.depth === this._level) {\n        this._assembler = this._saved_assembler;\n        this._transform = this._filter;\n      }\n    }\n    callback(null);\n  }\n}\n\nmodule.exports = StreamBase;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/stream-json/streamers/StreamBase.js?')},"./node_modules/stream-json/streamers/StreamValues.js":
/*!************************************************************!*\
  !*** ./node_modules/stream-json/streamers/StreamValues.js ***!
  \************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst StreamBase = __webpack_require__(/*! ./StreamBase */ "./node_modules/stream-json/streamers/StreamBase.js");\nconst withParser = __webpack_require__(/*! ../utils/withParser */ "./node_modules/stream-json/utils/withParser.js");\n\nclass StreamValues extends StreamBase {\n  static make(options) {\n    return new StreamValues(options);\n  }\n\n  static withParser(options) {\n    return withParser(StreamValues.make, Object.assign({}, options, {jsonStreaming: true}));\n  }\n\n  constructor(options) {\n    super(options);\n    this._counter = 0;\n    this._level = 0;\n  }\n\n  _push(discard) {\n    if (discard) {\n      ++this._counter;\n    } else {\n      this.push({key: this._counter++, value: this._assembler.current});\n    }\n    this._assembler.current = this._assembler.key = null;\n  }\n}\nStreamValues.streamValues = StreamValues.make;\nStreamValues.make.Constructor = StreamValues;\n\nmodule.exports = StreamValues;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/stream-json/streamers/StreamValues.js?')},"./node_modules/stream-json/utils/Utf8Stream.js":
/*!******************************************************!*\
  !*** ./node_modules/stream-json/utils/Utf8Stream.js ***!
  \******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst {Transform} = __webpack_require__(/*! stream */ \"stream\");\nconst {StringDecoder} = __webpack_require__(/*! string_decoder */ \"string_decoder\");\n\nclass Utf8Stream extends Transform {\n  constructor(options) {\n    super(Object.assign({}, options, {writableObjectMode: false}));\n    this._buffer = '';\n  }\n\n  _transform(chunk, encoding, callback) {\n    if (typeof chunk == 'string') {\n      this._transform = this._transformString;\n    } else {\n      this._stringDecoder = new StringDecoder();\n      this._transform = this._transformBuffer;\n    }\n    this._transform(chunk, encoding, callback);\n  }\n\n  _transformBuffer(chunk, _, callback) {\n    this._buffer += this._stringDecoder.write(chunk);\n    this._processBuffer(callback);\n  }\n\n  _transformString(chunk, _, callback) {\n    this._buffer += chunk.toString();\n    this._processBuffer(callback);\n  }\n\n  _processBuffer(callback) {\n    if (this._buffer) {\n      this.push(this._buffer, 'utf8');\n      this._buffer = '';\n    }\n    callback(null);\n  }\n\n  _flushInput() {\n    // meant to be called from _flush()\n    if (this._stringDecoder) {\n      this._buffer += this._stringDecoder.end();\n    }\n  }\n\n  _flush(callback) {\n    this._flushInput();\n    this._processBuffer(callback);\n  }\n}\n\nmodule.exports = Utf8Stream;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/stream-json/utils/Utf8Stream.js?")},"./node_modules/stream-json/utils/withParser.js":
/*!******************************************************!*\
  !*** ./node_modules/stream-json/utils/withParser.js ***!
  \******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst Chain = __webpack_require__(/*! stream-chain */ "./node_modules/stream-chain/index.js");\n\nconst Parser = __webpack_require__(/*! ../Parser */ "./node_modules/stream-json/Parser.js");\n\nconst withParser = (fn, options) =>\n  new Chain([new Parser(options), fn(options)], Object.assign({}, options, {writableObjectMode: false, readableObjectMode: true}));\n\nmodule.exports = withParser;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/stream-json/utils/withParser.js?')},"./node_modules/string-argv/index.js":
/*!*******************************************!*\
  !*** ./node_modules/string-argv/index.js ***!
  \*******************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\r\nexports.__esModule = true;\r\nfunction parseArgsStringToArgv(value, env, file) {\r\n    // ([^\\s\'"]([^\\s\'"]*([\'"])([^\\3]*?)\\3)+[^\\s\'"]*) Matches nested quotes until the first space outside of quotes\r\n    // [^\\s\'"]+ or Match if not a space \' or "\r\n    // ([\'"])([^\\5]*?)\\5 or Match "quoted text" without quotes\r\n    // `\\3` and `\\5` are a backreference to the quote style (\' or ") captured\r\n    var myRegexp = /([^\\s\'"]([^\\s\'"]*([\'"])([^\\3]*?)\\3)+[^\\s\'"]*)|[^\\s\'"]+|([\'"])([^\\5]*?)\\5/gi;\r\n    var myString = value;\r\n    var myArray = [];\r\n    if (env) {\r\n        myArray.push(env);\r\n    }\r\n    if (file) {\r\n        myArray.push(file);\r\n    }\r\n    var match;\r\n    do {\r\n        // Each call to exec returns the next regex match as an array\r\n        match = myRegexp.exec(myString);\r\n        if (match !== null) {\r\n            // Index 1 in the array is the captured group if it exists\r\n            // Index 0 is the matched text, which we use if no captured group exists\r\n            myArray.push(firstString(match[1], match[6], match[0]));\r\n        }\r\n    } while (match !== null);\r\n    return myArray;\r\n}\r\nexports["default"] = parseArgsStringToArgv;\r\nexports.parseArgsStringToArgv = parseArgsStringToArgv;\r\n// Accepts any number of arguments, and returns the first one that is a string\r\n// (even an empty string)\r\nfunction firstString() {\r\n    var args = [];\r\n    for (var _i = 0; _i < arguments.length; _i++) {\r\n        args[_i] = arguments[_i];\r\n    }\r\n    for (var i = 0; i < args.length; i++) {\r\n        var arg = args[i];\r\n        if (typeof arg === "string") {\r\n            return arg;\r\n        }\r\n    }\r\n}\r\n\n\n//# sourceURL=webpack://txadmin/./node_modules/string-argv/index.js?')},"./node_modules/string-width/index.js":
/*!********************************************!*\
  !*** ./node_modules/string-width/index.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\nconst stripAnsi = __webpack_require__(/*! strip-ansi */ "./node_modules/strip-ansi/index.js");\nconst isFullwidthCodePoint = __webpack_require__(/*! is-fullwidth-code-point */ "./node_modules/is-fullwidth-code-point/index.js");\nconst emojiRegex = __webpack_require__(/*! emoji-regex */ "./node_modules/string-width/node_modules/emoji-regex/index.js");\n\nconst stringWidth = string => {\n\tif (typeof string !== \'string\' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = stripAnsi(string);\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = string.replace(emojiRegex(), \'  \');\n\n\tlet width = 0;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst code = string.codePointAt(i);\n\n\t\t// Ignore control characters\n\t\tif (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (code >= 0x300 && code <= 0x36F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Surrogates\n\t\tif (code > 0xFFFF) {\n\t\t\ti++;\n\t\t}\n\n\t\twidth += isFullwidthCodePoint(code) ? 2 : 1;\n\t}\n\n\treturn width;\n};\n\nmodule.exports = stringWidth;\n// TODO: remove this in the next major version\nmodule.exports["default"] = stringWidth;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/string-width/index.js?')},"./node_modules/string-width/node_modules/emoji-regex/index.js":
/*!*********************************************************************!*\
  !*** ./node_modules/string-width/node_modules/emoji-regex/index.js ***!
  \*********************************************************************/module=>{"use strict";eval("\n\nmodule.exports = function () {\n  // https://mths.be/emoji\n  return /\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F|\\uD83D\\uDC68(?:\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C\\uDFFB|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83D[\\uDC66\\uDC67]|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C[\\uDFFB-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)\\uD83C\\uDFFB|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83D\\uDC69(?:\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|(?:(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)\\uFE0F|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\u200D[\\u2640\\u2642])|\\uD83C\\uDFF4\\u200D\\u2620)\\uFE0F|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83C\\uDDF6\\uD83C\\uDDE6|[#\\*0-9]\\uFE0F\\u20E3|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83D\\uDC69(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC70\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDCAA\\uDD74\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD36\\uDDB5\\uDDB6\\uDDBB\\uDDD2-\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5\\uDEEB\\uDEEC\\uDEF4-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/string-width/node_modules/emoji-regex/index.js?")},"./node_modules/string.prototype.trim/implementation.js":
/*!**************************************************************!*\
  !*** ./node_modules/string.prototype.trim/implementation.js ***!
  \**************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar RequireObjectCoercible = __webpack_require__(/*! es-abstract/2020/RequireObjectCoercible */ \"./node_modules/es-abstract/2020/RequireObjectCoercible.js\");\nvar ToString = __webpack_require__(/*! es-abstract/2020/ToString */ \"./node_modules/es-abstract/2020/ToString.js\");\nvar callBound = __webpack_require__(/*! call-bind/callBound */ \"./node_modules/call-bind/callBound.js\");\nvar $replace = callBound('String.prototype.replace');\n\n/* eslint-disable no-control-regex */\nvar leftWhitespace = /^[\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF]+/;\nvar rightWhitespace = /[\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF]+$/;\n/* eslint-enable no-control-regex */\n\nmodule.exports = function trim() {\n\tvar S = ToString(RequireObjectCoercible(this));\n\treturn $replace($replace(S, leftWhitespace, ''), rightWhitespace, '');\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/string.prototype.trim/implementation.js?")},"./node_modules/string.prototype.trim/index.js":
/*!*****************************************************!*\
  !*** ./node_modules/string.prototype.trim/index.js ***!
  \*****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nvar callBind = __webpack_require__(/*! call-bind */ "./node_modules/call-bind/index.js");\nvar define = __webpack_require__(/*! define-properties */ "./node_modules/define-properties/index.js");\n\nvar implementation = __webpack_require__(/*! ./implementation */ "./node_modules/string.prototype.trim/implementation.js");\nvar getPolyfill = __webpack_require__(/*! ./polyfill */ "./node_modules/string.prototype.trim/polyfill.js");\nvar shim = __webpack_require__(/*! ./shim */ "./node_modules/string.prototype.trim/shim.js");\n\nvar boundTrim = callBind(getPolyfill());\n\ndefine(boundTrim, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = boundTrim;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/string.prototype.trim/index.js?')},"./node_modules/string.prototype.trim/polyfill.js":
/*!********************************************************!*\
  !*** ./node_modules/string.prototype.trim/polyfill.js ***!
  \********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar implementation = __webpack_require__(/*! ./implementation */ \"./node_modules/string.prototype.trim/implementation.js\");\n\nvar zeroWidthSpace = '\\u200b';\n\nmodule.exports = function getPolyfill() {\n\tif (String.prototype.trim && zeroWidthSpace.trim() === zeroWidthSpace) {\n\t\treturn String.prototype.trim;\n\t}\n\treturn implementation;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/string.prototype.trim/polyfill.js?")},"./node_modules/string.prototype.trim/shim.js":
/*!****************************************************!*\
  !*** ./node_modules/string.prototype.trim/shim.js ***!
  \****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nvar define = __webpack_require__(/*! define-properties */ "./node_modules/define-properties/index.js");\nvar getPolyfill = __webpack_require__(/*! ./polyfill */ "./node_modules/string.prototype.trim/polyfill.js");\n\nmodule.exports = function shimStringTrim() {\n\tvar polyfill = getPolyfill();\n\tdefine(String.prototype, { trim: polyfill }, {\n\t\ttrim: function testTrim() {\n\t\t\treturn String.prototype.trim !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/string.prototype.trim/shim.js?')},"./node_modules/strip-ansi/index.js":
/*!******************************************!*\
  !*** ./node_modules/strip-ansi/index.js ***!
  \******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nconst ansiRegex = __webpack_require__(/*! ansi-regex */ \"./node_modules/ansi-regex/index.js\");\n\nmodule.exports = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/strip-ansi/index.js?")},"./node_modules/strip-final-newline/index.js":
/*!***************************************************!*\
  !*** ./node_modules/strip-final-newline/index.js ***!
  \***************************************************/module=>{"use strict";eval("\n\nmodule.exports = input => {\n\tconst LF = typeof input === 'string' ? '\\n' : '\\n'.charCodeAt();\n\tconst CR = typeof input === 'string' ? '\\r' : '\\r'.charCodeAt();\n\n\tif (input[input.length - 1] === LF) {\n\t\tinput = input.slice(0, input.length - 1);\n\t}\n\n\tif (input[input.length - 1] === CR) {\n\t\tinput = input.slice(0, input.length - 1);\n\t}\n\n\treturn input;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/strip-final-newline/index.js?")},"./node_modules/supports-color/index.js":
/*!**********************************************!*\
  !*** ./node_modules/supports-color/index.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nconst os = __webpack_require__(/*! os */ \"os\");\nconst tty = __webpack_require__(/*! tty */ \"tty\");\nconst hasFlag = __webpack_require__(/*! has-flag */ \"./node_modules/has-flag/index.js\");\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/supports-color/index.js?")},"./node_modules/systeminformation/lib/audio.js":
/*!*****************************************************!*\
  !*** ./node_modules/systeminformation/lib/audio.js ***!
  \*****************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n// @ts-check\n// ==================================================================================\n// audio.js\n// ----------------------------------------------------------------------------------\n// Description:   System Information - library\n//                for Node.js\n// Copyright:     (c) 2014 - 2022\n// Author:        Sebastian Hildebrandt\n// ----------------------------------------------------------------------------------\n// License:       MIT\n// ==================================================================================\n// 16. audio\n// ----------------------------------------------------------------------------------\n\nconst exec = (__webpack_require__(/*! child_process */ \"child_process\").exec);\nconst execSync = (__webpack_require__(/*! child_process */ \"child_process\").execSync);\nconst util = __webpack_require__(/*! ./util */ \"./node_modules/systeminformation/lib/util.js\");\n// const fs = require('fs');\n\nlet _platform = process.platform;\n\nconst _linux = (_platform === 'linux' || _platform === 'android');\nconst _darwin = (_platform === 'darwin');\nconst _windows = (_platform === 'win32');\nconst _freebsd = (_platform === 'freebsd');\nconst _openbsd = (_platform === 'openbsd');\nconst _netbsd = (_platform === 'netbsd');\nconst _sunos = (_platform === 'sunos');\n\nfunction parseAudioType(str, input, output) {\n  let result = '';\n\n  if (str.indexOf('speak') >= 0) { result = 'Speaker'; }\n  if (str.indexOf('laut') >= 0) { result = 'Speaker'; }\n  if (str.indexOf('loud') >= 0) { result = 'Speaker'; }\n  if (str.indexOf('head') >= 0) { result = 'Headset'; }\n  if (str.indexOf('mic') >= 0) { result = 'Microphone'; }\n  if (str.indexOf('mikr') >= 0) { result = 'Microphone'; }\n  if (str.indexOf('phone') >= 0) { result = 'Phone'; }\n  if (str.indexOf('controll') >= 0) { result = 'Controller'; }\n  if (str.indexOf('line o') >= 0) { result = 'Line Out'; }\n  if (str.indexOf('digital o') >= 0) { result = 'Digital Out'; }\n\n  if (!result && output) {\n    result = 'Speaker';\n  } else if (!result && input) {\n    result = 'Microphone';\n  }\n  return result;\n}\n\n\nfunction getLinuxAudioPci() {\n  let cmd = 'lspci -v 2>/dev/null';\n  let result = [];\n  try {\n    const parts = execSync(cmd).toString().split('\\n\\n');\n    for (let i = 0; i < parts.length; i++) {\n      const lines = parts[i].split('\\n');\n      if (lines && lines.length && lines[0].toLowerCase().indexOf('audio') >= 0) {\n        const audio = {};\n        audio.slotId = lines[0].split(' ')[0];\n        audio.driver = util.getValue(lines, 'Kernel driver in use', ':', true) || util.getValue(lines, 'Kernel modules', ':', true);\n        result.push(audio);\n      }\n    }\n    return result;\n  } catch (e) {\n    return result;\n  }\n}\n\nfunction parseLinuxAudioPciMM(lines, audioPCI) {\n  const result = {};\n  const slotId = util.getValue(lines, 'Slot');\n\n  const pciMatch = audioPCI.filter(function (item) { return item.slotId === slotId; });\n\n  result.id = slotId;\n  result.name = util.getValue(lines, 'SDevice');\n  // result.type = util.getValue(lines, 'Class');\n  result.manufacturer = util.getValue(lines, 'SVendor');\n  result.revision = util.getValue(lines, 'Rev');\n  result.driver = pciMatch && pciMatch.length === 1 && pciMatch[0].driver ? pciMatch[0].driver : '';\n  result.default = null;\n  result.channel = 'PCIe';\n  result.type = parseAudioType(result.name, null, null);\n  result.in = null;\n  result.out = null;\n  result.status = 'online';\n\n  return result;\n}\n\nfunction parseDarwinChannel(str) {\n  let result = '';\n\n  if (str.indexOf('builtin') >= 0) { result = 'Built-In'; }\n  if (str.indexOf('extern') >= 0) { result = 'Audio-Jack'; }\n  if (str.indexOf('hdmi') >= 0) { result = 'HDMI'; }\n  if (str.indexOf('displayport') >= 0) { result = 'Display-Port'; }\n  if (str.indexOf('usb') >= 0) { result = 'USB'; }\n  if (str.indexOf('pci') >= 0) { result = 'PCIe'; }\n\n  return result;\n}\n\nfunction parseDarwinAudio(audioObject, id) {\n  const result = {};\n  const channelStr = ((audioObject.coreaudio_device_transport || '') + ' ' + (audioObject._name || '')).toLowerCase();\n\n  result.id = id;\n  result.name = audioObject._name;\n  result.manufacturer = audioObject.coreaudio_device_manufacturer;\n  result.revision = null;\n  result.driver = null;\n  result.default = !!(audioObject.coreaudio_default_audio_input_device || '') || !!(audioObject.coreaudio_default_audio_output_device || '');\n  result.channel = parseDarwinChannel(channelStr);\n  result.type = parseAudioType(result.name, !!(audioObject.coreaudio_device_input || ''), !!(audioObject.coreaudio_device_output || ''));\n  result.in = !!(audioObject.coreaudio_device_input || '');\n  result.out = !!(audioObject.coreaudio_device_output || '');\n  result.status = 'online';\n\n  return result;\n}\n\nfunction parseWindowsAudio(lines) {\n  const result = {};\n  const status = util.getValue(lines, 'StatusInfo', ':');\n  // const description = util.getValue(lines, 'Description', ':');\n\n  result.id = util.getValue(lines, 'DeviceID', ':'); // PNPDeviceID??\n  result.name = util.getValue(lines, 'name', ':');\n  result.manufacturer = util.getValue(lines, 'manufacturer', ':');\n  result.revision = null;\n  result.driver = null;\n  result.default = null;\n  result.channel = null;\n  result.type = parseAudioType(result.name, null, null);\n  result.in = null;\n  result.out = null;\n  result.status = status;\n\n  return result;\n}\n\nfunction audio(callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      let result = [];\n      if (_linux || _freebsd || _openbsd || _netbsd) {\n        let cmd = 'lspci -vmm 2>/dev/null';\n        exec(cmd, function (error, stdout) {\n          // PCI\n          if (!error) {\n            const audioPCI = getLinuxAudioPci();\n            const parts = stdout.toString().split('\\n\\n');\n            for (let i = 0; i < parts.length; i++) {\n              const lines = parts[i].split('\\n');\n              if (util.getValue(lines, 'class', ':', true).toLowerCase().indexOf('audio') >= 0) {\n                const audio = parseLinuxAudioPciMM(lines, audioPCI);\n                result.push(audio);\n              }\n            }\n          }\n          if (callback) {\n            callback(result);\n          }\n          resolve(result);\n        });\n      }\n      if (_darwin) {\n        let cmd = 'system_profiler SPAudioDataType -json';\n        exec(cmd, function (error, stdout) {\n          if (!error) {\n            try {\n              const outObj = JSON.parse(stdout.toString());\n              if (outObj.SPAudioDataType && outObj.SPAudioDataType.length && outObj.SPAudioDataType[0] && outObj.SPAudioDataType[0]['_items'] && outObj.SPAudioDataType[0]['_items'].length) {\n                for (let i = 0; i < outObj.SPAudioDataType[0]['_items'].length; i++) {\n                  const audio = parseDarwinAudio(outObj.SPAudioDataType[0]['_items'][i], i);\n                  result.push(audio);\n                }\n              }\n            } catch (e) {\n              util.noop();\n            }\n          }\n          if (callback) {\n            callback(result);\n          }\n          resolve(result);\n        });\n      }\n      if (_windows) {\n        util.powerShell('Get-WmiObject Win32_SoundDevice | select DeviceID,StatusInfo,Name,Manufacturer | fl').then((stdout, error) => {\n          if (!error) {\n            const parts = stdout.toString().split(/\\n\\s*\\n/);\n            for (let i = 0; i < parts.length; i++) {\n              if (util.getValue(parts[i].split('\\n'), 'name', ':')) {\n                result.push(parseWindowsAudio(parts[i].split('\\n')));\n              }\n            }\n          }\n          if (callback) {\n            callback(result);\n          }\n          resolve(result);\n        });\n      }\n      if (_sunos) {\n        resolve(null);\n      }\n    });\n  });\n}\n\nexports.audio = audio;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/systeminformation/lib/audio.js?")},"./node_modules/systeminformation/lib/battery.js":
/*!*******************************************************!*\
  !*** ./node_modules/systeminformation/lib/battery.js ***!
  \*******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n// @ts-check;\n// ==================================================================================\n// battery.js\n// ----------------------------------------------------------------------------------\n// Description:   System Information - library\n//                for Node.js\n// Copyright:     (c) 2014 - 2022\n// Author:        Sebastian Hildebrandt\n// ----------------------------------------------------------------------------------\n// License:       MIT\n// ==================================================================================\n// 6. Battery\n// ----------------------------------------------------------------------------------\n\nconst exec = (__webpack_require__(/*! child_process */ \"child_process\").exec);\nconst fs = __webpack_require__(/*! fs */ \"fs\");\nconst util = __webpack_require__(/*! ./util */ \"./node_modules/systeminformation/lib/util.js\");\n\nlet _platform = process.platform;\n\nconst _linux = (_platform === 'linux' || _platform === 'android');\nconst _darwin = (_platform === 'darwin');\nconst _windows = (_platform === 'win32');\nconst _freebsd = (_platform === 'freebsd');\nconst _openbsd = (_platform === 'openbsd');\nconst _netbsd = (_platform === 'netbsd');\nconst _sunos = (_platform === 'sunos');\n\nfunction parseWinBatteryPart(lines, designedCapacity, fullChargeCapacity) {\n  const result = {};\n  let status = util.getValue(lines, 'BatteryStatus', ':').trim();\n  // 1 = \"Discharging\"\n  // 2 = \"On A/C\"\n  // 3 = \"Fully Charged\"\n  // 4 = \"Low\"\n  // 5 = \"Critical\"\n  // 6 = \"Charging\"\n  // 7 = \"Charging High\"\n  // 8 = \"Charging Low\"\n  // 9 = \"Charging Critical\"\n  // 10 = \"Undefined\"\n  // 11 = \"Partially Charged\"\n  if (status >= 0) {\n    const statusValue = status ? parseInt(status) : 0;\n    result.status = statusValue;\n    result.hasBattery = true;\n    result.maxCapacity = fullChargeCapacity || parseInt(util.getValue(lines, 'DesignCapacity', ':') || 0);\n    result.designedCapacity = parseInt(util.getValue(lines, 'DesignCapacity', ':') || designedCapacity);\n    result.voltage = parseInt(util.getValue(lines, 'DesignVoltage', ':') || 0) / 1000.0;\n    result.capacityUnit = 'mWh';\n    result.percent = parseInt(util.getValue(lines, 'EstimatedChargeRemaining', ':') || 0);\n    result.currentCapacity = parseInt(result.maxCapacity * result.percent / 100);\n    result.isCharging = (statusValue >= 6 && statusValue <= 9) || statusValue === 11 || (!(statusValue === 3) && !(statusValue === 1) && result.percent < 100);\n    result.acConnected = result.isCharging || statusValue === 2;\n    result.model = util.getValue(lines, 'DeviceID', ':');\n  } else {\n    result.status = -1;\n  }\n\n  return result;\n}\n\nmodule.exports = function (callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      let result = {\n        hasBattery: false,\n        cycleCount: 0,\n        isCharging: false,\n        designedCapacity: 0,\n        maxCapacity: 0,\n        currentCapacity: 0,\n        voltage: 0,\n        capacityUnit: '',\n        percent: 0,\n        timeRemaining: null,\n        acConnected: true,\n        type: '',\n        model: '',\n        manufacturer: '',\n        serial: ''\n      };\n\n      if (_linux) {\n        let battery_path = '';\n        if (fs.existsSync('/sys/class/power_supply/BAT1/uevent')) {\n          battery_path = '/sys/class/power_supply/BAT1/';\n        } else if (fs.existsSync('/sys/class/power_supply/BAT0/uevent')) {\n          battery_path = '/sys/class/power_supply/BAT0/';\n        }\n\n        let acConnected = false;\n        let acPath = '';\n        if (fs.existsSync('/sys/class/power_supply/AC/online')) {\n          acPath = '/sys/class/power_supply/AC/online';\n        } else if (fs.existsSync('/sys/class/power_supply/AC0/online')) {\n          acPath = '/sys/class/power_supply/AC0/online';\n        }\n\n        if (acPath) {\n          const file = fs.readFileSync(acPath);\n          acConnected = file.toString().trim() === '1';\n        }\n\n        if (battery_path) {\n          fs.readFile(battery_path + 'uevent', function (error, stdout) {\n            if (!error) {\n              let lines = stdout.toString().split('\\n');\n\n              result.isCharging = (util.getValue(lines, 'POWER_SUPPLY_STATUS', '=').toLowerCase() === 'charging');\n              result.acConnected = acConnected || result.isCharging;\n              result.voltage = parseInt('0' + util.getValue(lines, 'POWER_SUPPLY_VOLTAGE_NOW', '='), 10) / 1000000.0;\n              result.capacityUnit = result.voltage ? 'mWh' : 'mAh';\n              result.cycleCount = parseInt('0' + util.getValue(lines, 'POWER_SUPPLY_CYCLE_COUNT', '='), 10);\n              result.maxCapacity = Math.round(parseInt('0' + util.getValue(lines, 'POWER_SUPPLY_CHARGE_FULL', '=', true, true), 10) / 1000.0 * (result.voltage || 1));\n              const desingedMinVoltage = parseInt('0' + util.getValue(lines, 'POWER_SUPPLY_VOLTAGE_MIN_DESIGN', '='), 10) / 1000000.0;\n              result.designedCapacity = Math.round(parseInt('0' + util.getValue(lines, 'POWER_SUPPLY_CHARGE_FULL_DESIGN', '=', true, true), 10) / 1000.0 * (desingedMinVoltage || result.voltage || 1));\n              result.currentCapacity = Math.round(parseInt('0' + util.getValue(lines, 'POWER_SUPPLY_CHARGE_NOW', '='), 10) / 1000.0 * (result.voltage || 1));\n              if (!result.maxCapacity) {\n                result.maxCapacity = parseInt('0' + util.getValue(lines, 'POWER_SUPPLY_ENERGY_FULL', '=', true, true), 10) / 1000.0;\n                result.designedCapacity = parseInt('0' + util.getValue(lines, 'POWER_SUPPLY_ENERGY_FULL_DESIGN', '=', true, true), 10) / 1000.0 | result.maxCapacity;\n                result.currentCapacity = parseInt('0' + util.getValue(lines, 'POWER_SUPPLY_ENERGY_NOW', '='), 10) / 1000.0;\n              }\n              const percent = util.getValue(lines, 'POWER_SUPPLY_CAPACITY', '=');\n              const energy = parseInt('0' + util.getValue(lines, 'POWER_SUPPLY_ENERGY_NOW', '='), 10);\n              const power = parseInt('0' + util.getValue(lines, 'POWER_SUPPLY_POWER_NOW', '='), 10);\n              const current = parseInt('0' + util.getValue(lines, 'POWER_SUPPLY_CURRENT_NOW', '='), 10);\n\n              result.percent = parseInt('0' + percent, 10);\n              if (result.maxCapacity && result.currentCapacity) {\n                result.hasBattery = true;\n                if (!percent) {\n                  result.percent = 100.0 * result.currentCapacity / result.maxCapacity;\n                }\n              }\n              if (result.isCharging) {\n                result.hasBattery = true;\n              }\n              if (energy && power) {\n                result.timeRemaining = Math.floor(energy / power * 60);\n              } else if (current && result.currentCapacity) {\n                result.timeRemaining = Math.floor(result.currentCapacity / current * 60);\n              }\n              result.type = util.getValue(lines, 'POWER_SUPPLY_TECHNOLOGY', '=');\n              result.model = util.getValue(lines, 'POWER_SUPPLY_MODEL_NAME', '=');\n              result.manufacturer = util.getValue(lines, 'POWER_SUPPLY_MANUFACTURER', '=');\n              result.serial = util.getValue(lines, 'POWER_SUPPLY_SERIAL_NUMBER', '=');\n              if (callback) { callback(result); }\n              resolve(result);\n            } else {\n              if (callback) { callback(result); }\n              resolve(result);\n            }\n          });\n        } else {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      }\n      if (_freebsd || _openbsd || _netbsd) {\n        exec('sysctl -i hw.acpi.battery hw.acpi.acline', function (error, stdout) {\n          let lines = stdout.toString().split('\\n');\n          const batteries = parseInt('0' + util.getValue(lines, 'hw.acpi.battery.units'), 10);\n          const percent = parseInt('0' + util.getValue(lines, 'hw.acpi.battery.life'), 10);\n          result.hasBattery = (batteries > 0);\n          result.cycleCount = null;\n          result.isCharging = util.getValue(lines, 'hw.acpi.acline') !== '1';\n          result.acConnected = result.isCharging;\n          result.maxCapacity = null;\n          result.currentCapacity = null;\n          result.capacityUnit = 'unknown';\n          result.percent = batteries ? percent : null;\n          if (callback) { callback(result); }\n          resolve(result);\n        });\n      }\n\n      if (_darwin) {\n        exec('ioreg -n AppleSmartBattery -r | egrep \"CycleCount|IsCharging|DesignCapacity|MaxCapacity|CurrentCapacity|BatterySerialNumber|TimeRemaining|Voltage\"; pmset -g batt | grep %', function (error, stdout) {\n          if (stdout) {\n            let lines = stdout.toString().replace(/ +/g, '').replace(/\"+/g, '').replace(/-/g, '').split('\\n');\n            result.cycleCount = parseInt('0' + util.getValue(lines, 'cyclecount', '='), 10);\n            result.voltage = parseInt('0' + util.getValue(lines, 'voltage', '='), 10) / 1000.0;\n            result.capacityUnit = result.voltage ? 'mWh' : 'mAh';\n            result.maxCapacity = Math.round(parseInt('0' + util.getValue(lines, 'applerawmaxcapacity', '='), 10) * (result.voltage || 1));\n            result.currentCapacity = Math.round(parseInt('0' + util.getValue(lines, 'applerawcurrentcapacity', '='), 10) * (result.voltage || 1));\n            result.designedCapacity = Math.round(parseInt('0' + util.getValue(lines, 'DesignCapacity', '='), 10) * (result.voltage || 1));\n            result.manufacturer = 'Apple';\n            result.serial = util.getValue(lines, 'BatterySerialNumber', '=');\n            let percent = null;\n            const line = util.getValue(lines, 'internal', 'Battery');\n            let parts = line.split(';');\n            if (parts && parts[0]) {\n              let parts2 = parts[0].split('\\t');\n              if (parts2 && parts2[1]) {\n                percent = parseFloat(parts2[1].trim().replace(/%/g, ''));\n              }\n            }\n            if (parts && parts[1]) {\n              result.isCharging = (parts[1].trim() === 'charging');\n              result.acConnected = (parts[1].trim() !== 'discharging');\n            } else {\n              result.isCharging = util.getValue(lines, 'ischarging', '=').toLowerCase() === 'yes';\n              result.acConnected = result.isCharging;\n            }\n            if (result.maxCapacity && result.currentCapacity) {\n              result.hasBattery = true;\n              result.type = 'Li-ion';\n              result.percent = percent !== null ? percent : Math.round(100.0 * result.currentCapacity / result.maxCapacity);\n              if (!result.isCharging) {\n                result.timeRemaining = parseInt('0' + util.getValue(lines, 'TimeRemaining', '='), 10);\n              }\n            }\n          }\n          if (callback) { callback(result); }\n          resolve(result);\n        });\n      }\n      if (_sunos) {\n        if (callback) { callback(result); }\n        resolve(result);\n      }\n      if (_windows) {\n        try {\n          const workload = [];\n          workload.push(util.powerShell('Get-WmiObject Win32_Battery | select BatteryStatus, DesignCapacity, DesignVoltage, EstimatedChargeRemaining, DeviceID | fl'));\n          workload.push(util.powerShell('(Get-WmiObject -Class BatteryStaticData -Namespace ROOT/WMI).DesignedCapacity'));\n          workload.push(util.powerShell('(Get-WmiObject -Class BatteryFullChargedCapacity -Namespace ROOT/WMI).FullChargedCapacity'));\n          util.promiseAll(\n            workload\n          ).then(data => {\n            if (data) {\n              // let parts = data.results[0].split(/\\n\\s*\\n/);\n              let parts = data.results[0].split(/\\n\\s*\\n/);\n              let batteries = [];\n              const hasValue = value => /\\S/.test(value);\n              for (let i = 0; i < parts.length; i++) {\n                if (hasValue(parts[i]) && (!batteries.length || !hasValue(parts[i - 1]))) {\n                  batteries.push([]);\n                }\n                if (hasValue(parts[i])) {\n                  batteries[batteries.length - 1].push(parts[i]);\n                }\n              }\n              let designCapacities = data.results[1].split('\\r\\n').filter(e => e);\n              let fullChargeCapacities = data.results[2].split('\\r\\n').filter(e => e);\n              if (batteries.length) {\n                let first = false;\n                let additionalBatteries = [];\n                for (let i = 0; i < batteries.length; i++) {\n                  let lines = batteries[i][0].split('\\r\\n');\n                  const designedCapacity = designCapacities && designCapacities.length >= (i + 1) && designCapacities[i] ? util.toInt(designCapacities[i]) : 0;\n                  const fullChargeCapacity = fullChargeCapacities && fullChargeCapacities.length >= (i + 1) && fullChargeCapacities[i] ? util.toInt(fullChargeCapacities[i]) : 0;\n                  const parsed = parseWinBatteryPart(lines, designedCapacity, fullChargeCapacity);\n                  if (!first && parsed.status > 0 && parsed.status !== 10) {\n                    result.hasBattery = parsed.hasBattery;\n                    result.maxCapacity = parsed.maxCapacity;\n                    result.designedCapacity = parsed.designedCapacity;\n                    result.voltage = parsed.voltage;\n                    result.capacityUnit = parsed.capacityUnit;\n                    result.percent = parsed.percent;\n                    result.currentCapacity = parsed.currentCapacity;\n                    result.isCharging = parsed.isCharging;\n                    result.acConnected = parsed.acConnected;\n                    result.model = parsed.model;\n                    first = true;\n                  } else if (parsed.status !== -1) {\n                    additionalBatteries.push(\n                      {\n                        hasBattery: parsed.hasBattery,\n                        maxCapacity: parsed.maxCapacity,\n                        designedCapacity: parsed.designedCapacity,\n                        voltage: parsed.voltage,\n                        capacityUnit: parsed.capacityUnit,\n                        percent: parsed.percent,\n                        currentCapacity: parsed.currentCapacity,\n                        isCharging: parsed.isCharging,\n                        timeRemaining: null,\n                        acConnected: parsed.acConnected,\n                        model: parsed.model,\n                        type: '',\n                        manufacturer: '',\n                        serial: ''\n                      }\n                    );\n                  }\n                }\n                if (!first && additionalBatteries.length) {\n                  result = additionalBatteries[0];\n                  additionalBatteries.shift();\n                }\n                if (additionalBatteries.length) {\n                  result.additionalBatteries = additionalBatteries;\n                }\n              }\n            }\n            if (callback) { callback(result); }\n            resolve(result);\n          });\n        } catch (e) {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      }\n    });\n  });\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/systeminformation/lib/battery.js?")},"./node_modules/systeminformation/lib/bluetooth.js":
/*!*********************************************************!*\
  !*** ./node_modules/systeminformation/lib/bluetooth.js ***!
  \*********************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n// @ts-check\n// ==================================================================================\n// audio.js\n// ----------------------------------------------------------------------------------\n// Description:   System Information - library\n//                for Node.js\n// Copyright:     (c) 2014 - 2022\n// Author:        Sebastian Hildebrandt\n// ----------------------------------------------------------------------------------\n// License:       MIT\n// ==================================================================================\n// 17. bluetooth\n// ----------------------------------------------------------------------------------\n\nconst exec = (__webpack_require__(/*! child_process */ \"child_process\").exec);\nconst execSync = (__webpack_require__(/*! child_process */ \"child_process\").execSync);\nconst path = __webpack_require__(/*! path */ \"path\");\nconst util = __webpack_require__(/*! ./util */ \"./node_modules/systeminformation/lib/util.js\");\nconst fs = __webpack_require__(/*! fs */ \"fs\");\n\nlet _platform = process.platform;\n\nconst _linux = (_platform === 'linux' || _platform === 'android');\nconst _darwin = (_platform === 'darwin');\nconst _windows = (_platform === 'win32');\nconst _freebsd = (_platform === 'freebsd');\nconst _openbsd = (_platform === 'openbsd');\nconst _netbsd = (_platform === 'netbsd');\nconst _sunos = (_platform === 'sunos');\n\nfunction parseBluetoothType(str) {\n  let result = '';\n\n  if (str.indexOf('keyboard') >= 0) { result = 'Keyboard'; }\n  if (str.indexOf('mouse') >= 0) { result = 'Mouse'; }\n  if (str.indexOf('speaker') >= 0) { result = 'Speaker'; }\n  if (str.indexOf('headset') >= 0) { result = 'Headset'; }\n  if (str.indexOf('phone') >= 0) { result = 'Phone'; }\n  // to be continued ...\n\n  return result;\n}\n\nfunction parseLinuxBluetoothInfo(lines, macAddr1, macAddr2) {\n  const result = {};\n\n  result.device = null;\n  result.name = util.getValue(lines, 'name', '=');\n  result.manufacturer = null;\n  result.macDevice = macAddr1;\n  result.macHost = macAddr2;\n  result.batteryPercent = null;\n  result.type = parseBluetoothType(result.name.toLowerCase());\n  result.connected = false;\n\n  return result;\n}\n\nfunction parseDarwinBluetoothDevices(bluetoothObject, macAddr2) {\n  const result = {};\n  const typeStr = ((bluetoothObject.device_minorClassOfDevice_string || bluetoothObject.device_majorClassOfDevice_string || '') + (bluetoothObject.device_name || '')).toLowerCase();\n\n  result.device = bluetoothObject.device_services || '';\n  result.name = bluetoothObject.device_name || '';\n  result.manufacturer = bluetoothObject.device_manufacturer || '';\n  result.macDevice = (bluetoothObject.device_addr || '').toLowerCase().replace(/-/g, ':');\n  result.macHost = macAddr2;\n  result.batteryPercent = bluetoothObject.device_batteryPercent || null;\n  result.type = parseBluetoothType(typeStr);\n  result.connected = bluetoothObject.device_isconnected === 'attrib_Yes' || false;\n\n  return result;\n}\n\nfunction parseWindowsBluetooth(lines) {\n  const result = {};\n\n  result.device = null;\n  result.name = util.getValue(lines, 'name', ':');\n  result.manufacturer = util.getValue(lines, 'manufacturer', ':');\n  result.macDevice = null;\n  result.macHost = null;\n  result.batteryPercent = null;\n  result.type = parseBluetoothType(result.name.toLowerCase());\n  result.connected = null;\n\n  return result;\n}\n\nfunction bluetoothDevices(callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      let result = [];\n      if (_linux) {\n        // get files in /var/lib/bluetooth/ recursive\n        const btFiles = util.getFilesInPath('/var/lib/bluetooth/');\n        for (let i = 0; i < btFiles.length; i++) {\n          const filename = path.basename(btFiles[i]);\n          const pathParts = btFiles[i].split('/');\n          const macAddr1 = pathParts.length >= 6 ? pathParts[pathParts.length - 2] : null;\n          const macAddr2 = pathParts.length >= 7 ? pathParts[pathParts.length - 3] : null;\n          if (filename === 'info') {\n            const infoFile = fs.readFileSync(btFiles[i], { encoding: 'utf8' }).split('\\n');\n            result.push(parseLinuxBluetoothInfo(infoFile, macAddr1, macAddr2));\n          }\n        }\n        // determine \"connected\" with hcitool con\n        try {\n          const hdicon = execSync('hcitool con').toString().toLowerCase();\n          for (let i = 0; i < result.length; i++) {\n            if (result[i].macDevice && result[i].macDevice.length > 10 && hdicon.indexOf(result[i].macDevice.toLowerCase()) >= 0) {\n              result[i].connected = true;\n            }\n          }\n        } catch (e) {\n          util.noop();\n        }\n\n        if (callback) {\n          callback(result);\n        }\n        resolve(result);\n      }\n      if (_darwin) {\n        let cmd = 'system_profiler SPBluetoothDataType -json';\n        exec(cmd, function (error, stdout) {\n          if (!error) {\n            try {\n              const outObj = JSON.parse(stdout.toString());\n              if (outObj.SPBluetoothDataType && outObj.SPBluetoothDataType.length && outObj.SPBluetoothDataType[0] && outObj.SPBluetoothDataType[0]['device_title'] && outObj.SPBluetoothDataType[0]['device_title'].length) {\n                // missing: host BT Adapter macAddr ()\n                let macAddr2 = null;\n                if (outObj.SPBluetoothDataType[0]['local_device_title'] && outObj.SPBluetoothDataType[0].local_device_title.general_address) {\n                  macAddr2 = outObj.SPBluetoothDataType[0].local_device_title.general_address.toLowerCase().replace(/-/g, ':');\n                }\n\n                for (let i = 0; i < outObj.SPBluetoothDataType[0]['device_title'].length; i++) {\n                  const obj = outObj.SPBluetoothDataType[0]['device_title'][i];\n                  const objKey = Object.keys(obj);\n                  if (objKey && objKey.length === 1) {\n                    const innerObject = obj[objKey[0]];\n                    innerObject.device_name = objKey[0];\n                    const bluetoothDevice = parseDarwinBluetoothDevices(innerObject, macAddr2);\n                    result.push(bluetoothDevice);\n                  }\n                }\n              }\n            } catch (e) {\n              util.noop();\n            }\n          }\n          if (callback) {\n            callback(result);\n          }\n          resolve(result);\n        });\n      }\n      if (_windows) {\n        util.powerShell('Get-WmiObject Win32_PNPEntity | select PNPClass, Name, Manufacturer | fl').then((stdout, error) => {\n          if (!error) {\n            const parts = stdout.toString().split(/\\n\\s*\\n/);\n            for (let i = 0; i < parts.length; i++) {\n              if (util.getValue(parts[i].split('\\n'), 'PNPClass', ':') === 'Bluetooth') {\n                result.push(parseWindowsBluetooth(parts[i].split('\\n')));\n              }\n            }\n          }\n          if (callback) {\n            callback(result);\n          }\n          resolve(result);\n        });\n      }\n      if (_freebsd || _netbsd || _openbsd || _sunos) {\n        resolve(null);\n      }\n    });\n  });\n}\n\nexports.bluetoothDevices = bluetoothDevices;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/systeminformation/lib/bluetooth.js?")},"./node_modules/systeminformation/lib/cpu.js":
/*!***************************************************!*\
  !*** ./node_modules/systeminformation/lib/cpu.js ***!
  \***************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n// @ts-check\n// ==================================================================================\n// cpu.js\n// ----------------------------------------------------------------------------------\n// Description:   System Information - library\n//                for Node.js\n// Copyright:     (c) 2014 - 2022\n// Author:        Sebastian Hildebrandt\n// ----------------------------------------------------------------------------------\n// License:       MIT\n// ==================================================================================\n// 4. CPU\n// ----------------------------------------------------------------------------------\n\nconst os = __webpack_require__(/*! os */ \"os\");\nconst exec = (__webpack_require__(/*! child_process */ \"child_process\").exec);\nconst execSync = (__webpack_require__(/*! child_process */ \"child_process\").execSync);\nconst fs = __webpack_require__(/*! fs */ \"fs\");\nconst util = __webpack_require__(/*! ./util */ \"./node_modules/systeminformation/lib/util.js\");\n\nlet _platform = process.platform;\n\nconst _linux = (_platform === 'linux' || _platform === 'android');\nconst _darwin = (_platform === 'darwin');\nconst _windows = (_platform === 'win32');\nconst _freebsd = (_platform === 'freebsd');\nconst _openbsd = (_platform === 'openbsd');\nconst _netbsd = (_platform === 'netbsd');\nconst _sunos = (_platform === 'sunos');\n\nlet _cpu_speed = 0;\nlet _current_cpu = {\n  user: 0,\n  nice: 0,\n  system: 0,\n  idle: 0,\n  irq: 0,\n  load: 0,\n  tick: 0,\n  ms: 0,\n  currentLoad: 0,\n  currentLoadUser: 0,\n  currentLoadSystem: 0,\n  currentLoadNice: 0,\n  currentLoadIdle: 0,\n  currentLoadIrq: 0,\n  rawCurrentLoad: 0,\n  rawCurrentLoadUser: 0,\n  rawCurrentLoadSystem: 0,\n  rawCurrentLoadNice: 0,\n  rawCurrentLoadIdle: 0,\n  rawCurrentLoadIrq: 0\n};\nlet _cpus = [];\nlet _corecount = 0;\n\nconst AMDBaseFrequencies = {\n  '8346': '1.8',\n  '8347': '1.9',\n  '8350': '2.0',\n  '8354': '2.2',\n  '8356|SE': '2.4',\n  '8356': '2.3',\n  '8360': '2.5',\n  '2372': '2.1',\n  '2373': '2.1',\n  '2374': '2.2',\n  '2376': '2.3',\n  '2377': '2.3',\n  '2378': '2.4',\n  '2379': '2.4',\n  '2380': '2.5',\n  '2381': '2.5',\n  '2382': '2.6',\n  '2384': '2.7',\n  '2386': '2.8',\n  '2387': '2.8',\n  '2389': '2.9',\n  '2393': '3.1',\n  '8374': '2.2',\n  '8376': '2.3',\n  '8378': '2.4',\n  '8379': '2.4',\n  '8380': '2.5',\n  '8381': '2.5',\n  '8382': '2.6',\n  '8384': '2.7',\n  '8386': '2.8',\n  '8387': '2.8',\n  '8389': '2.9',\n  '8393': '3.1',\n  '2419EE': '1.8',\n  '2423HE': '2.0',\n  '2425HE': '2.1',\n  '2427': '2.2',\n  '2431': '2.4',\n  '2435': '2.6',\n  '2439SE': '2.8',\n  '8425HE': '2.1',\n  '8431': '2.4',\n  '8435': '2.6',\n  '8439SE': '2.8',\n  '4122': '2.2',\n  '4130': '2.6',\n  '4162EE': '1.7',\n  '4164EE': '1.8',\n  '4170HE': '2.1',\n  '4174HE': '2.3',\n  '4176HE': '2.4',\n  '4180': '2.6',\n  '4184': '2.8',\n  '6124HE': '1.8',\n  '6128HE': '2.0',\n  '6132HE': '2.2',\n  '6128': '2.0',\n  '6134': '2.3',\n  '6136': '2.4',\n  '6140': '2.6',\n  '6164HE': '1.7',\n  '6166HE': '1.8',\n  '6168': '1.9',\n  '6172': '2.1',\n  '6174': '2.2',\n  '6176': '2.3',\n  '6176SE': '2.3',\n  '6180SE': '2.5',\n  '3250': '2.5',\n  '3260': '2.7',\n  '3280': '2.4',\n  '4226': '2.7',\n  '4228': '2.8',\n  '4230': '2.9',\n  '4234': '3.1',\n  '4238': '3.3',\n  '4240': '3.4',\n  '4256': '1.6',\n  '4274': '2.5',\n  '4276': '2.6',\n  '4280': '2.8',\n  '4284': '3.0',\n  '6204': '3.3',\n  '6212': '2.6',\n  '6220': '3.0',\n  '6234': '2.4',\n  '6238': '2.6',\n  '6262HE': '1.6',\n  '6272': '2.1',\n  '6274': '2.2',\n  '6276': '2.3',\n  '6278': '2.4',\n  '6282SE': '2.6',\n  '6284SE': '2.7',\n  '6308': '3.5',\n  '6320': '2.8',\n  '6328': '3.2',\n  '6338P': '2.3',\n  '6344': '2.6',\n  '6348': '2.8',\n  '6366': '1.8',\n  '6370P': '2.0',\n  '6376': '2.3',\n  '6378': '2.4',\n  '6380': '2.5',\n  '6386': '2.8',\n  'FX|4100': '3.6',\n  'FX|4120': '3.9',\n  'FX|4130': '3.8',\n  'FX|4150': '3.8',\n  'FX|4170': '4.2',\n  'FX|6100': '3.3',\n  'FX|6120': '3.6',\n  'FX|6130': '3.6',\n  'FX|6200': '3.8',\n  'FX|8100': '2.8',\n  'FX|8120': '3.1',\n  'FX|8140': '3.2',\n  'FX|8150': '3.6',\n  'FX|8170': '3.9',\n  'FX|4300': '3.8',\n  'FX|4320': '4.0',\n  'FX|4350': '4.2',\n  'FX|6300': '3.5',\n  'FX|6350': '3.9',\n  'FX|8300': '3.3',\n  'FX|8310': '3.4',\n  'FX|8320': '3.5',\n  'FX|8350': '4.0',\n  'FX|8370': '4.0',\n  'FX|9370': '4.4',\n  'FX|9590': '4.7',\n  'FX|8320E': '3.2',\n  'FX|8370E': '3.3',\n\n  // ZEN Desktop CPUs\n  '1200': '3.1',\n  'Pro 1200': '3.1',\n  '1300X': '3.5',\n  'Pro 1300': '3.5',\n  '1400': '3.2',\n  '1500X': '3.5',\n  'Pro 1500': '3.5',\n  '1600': '3.2',\n  '1600X': '3.6',\n  'Pro 1600': '3.2',\n  '1700': '3.0',\n  'Pro 1700': '3.0',\n  '1700X': '3.4',\n  'Pro 1700X': '3.4',\n  '1800X': '3.6',\n  '1900X': '3.8',\n  '1920': '3.2',\n  '1920X': '3.5',\n  '1950X': '3.4',\n\n  // ZEN Desktop APUs\n  '200GE': '3.2',\n  'Pro 200GE': '3.2',\n  '220GE': '3.4',\n  '240GE': '3.5',\n  '3000G': '3.5',\n  '300GE': '3.4',\n  '3050GE': '3.4',\n  '2200G': '3.5',\n  'Pro 2200G': '3.5',\n  '2200GE': '3.2',\n  'Pro 2200GE': '3.2',\n  '2400G': '3.6',\n  'Pro 2400G': '3.6',\n  '2400GE': '3.2',\n  'Pro 2400GE': '3.2',\n\n  // ZEN Mobile APUs\n  'Pro 200U': '2.3',\n  '300U': '2.4',\n  '2200U': '2.5',\n  '3200U': '2.6',\n  '2300U': '2.0',\n  'Pro 2300U': '2.0',\n  '2500U': '2.0',\n  'Pro 2500U': '2.2',\n  '2600H': '3.2',\n  '2700U': '2.0',\n  'Pro 2700U': '2.2',\n  '2800H': '3.3',\n\n  // ZEN Server Processors\n  '7351': '2.4',\n  '7351P': '2.4',\n  '7401': '2.0',\n  '7401P': '2.0',\n  '7551P': '2.0',\n  '7551': '2.0',\n  '7251': '2.1',\n  '7261': '2.5',\n  '7281': '2.1',\n  '7301': '2.2',\n  '7371': '3.1',\n  '7451': '2.3',\n  '7501': '2.0',\n  '7571': '2.2',\n  '7601': '2.2',\n\n  // ZEN Embedded Processors\n  'V1500B': '2.2',\n  'V1780B': '3.35',\n  'V1202B': '2.3',\n  'V1404I': '2.0',\n  'V1605B': '2.0',\n  'V1756B': '3.25',\n  'V1807B': '3.35',\n\n  '3101': '2.1',\n  '3151': '2.7',\n  '3201': '1.5',\n  '3251': '2.5',\n  '3255': '2.5',\n  '3301': '2.0',\n  '3351': '1.9',\n  '3401': '1.85',\n  '3451': '2.15',\n\n  // ZEN+ Desktop\n  '1200|AF': '3.1',\n  '2300X': '3.5',\n  '2500X': '3.6',\n  '2600': '3.4',\n  '2600E': '3.1',\n  '1600|AF': '3.2',\n  '2600X': '3.6',\n  '2700': '3.2',\n  '2700E': '2.8',\n  'Pro 2700': '3.2',\n  '2700X': '3.7',\n  'Pro 2700X': '3.6',\n  '2920X': '3.5',\n  '2950X': '3.5',\n  '2970WX': '3.0',\n  '2990WX': '3.0',\n\n  // ZEN+ Desktop APU\n  'Pro 300GE': '3.4',\n  'Pro 3125GE': '3.4',\n  '3150G': '3.5',\n  'Pro 3150G': '3.5',\n  '3150GE': '3.3',\n  'Pro 3150GE': '3.3',\n  '3200G': '3.6',\n  'Pro 3200G': '3.6',\n  '3200GE': '3.3',\n  'Pro 3200GE': '3.3',\n  '3350G': '3.6',\n  'Pro 3350G': '3.6',\n  '3350GE': '3.3',\n  'Pro 3350GE': '3.3',\n  '3400G': '3.7',\n  'Pro 3400G': '3.7',\n  '3400GE': '3.3',\n  'Pro 3400GE': '3.3',\n\n  // ZEN+ Mobile\n  '3300U': '2.1',\n  'PRO 3300U': '2.1',\n  '3450U': '2.1',\n  '3500U': '2.1',\n  'PRO 3500U': '2.1',\n  '3500C': '2.1',\n  '3550H': '2.1',\n  '3580U': '2.1',\n  '3700U': '2.3',\n  'PRO 3700U': '2.3',\n  '3700C': '2.3',\n  '3750H': '2.3',\n  '3780U': '2.3',\n\n  // ZEN2 Desktop CPUS\n  '3100': '3.6',\n  '3300X': '3.8',\n  '3500': '3.6',\n  '3500X': '3.6',\n  '3600': '3.6',\n  'Pro 3600': '3.6',\n  '3600X': '3.8',\n  '3600XT': '3.8',\n  'Pro 3700': '3.6',\n  '3700X': '3.6',\n  '3800X': '3.9',\n  '3800XT': '3.9',\n  '3900': '3.1',\n  'Pro 3900': '3.1',\n  '3900X': '3.8',\n  '3900XT': '3.8',\n  '3950X': '3.5',\n  '3960X': '3.8',\n  '3970X': '3.7',\n  '3990X': '2.9',\n  '3945WX': '4.0',\n  '3955WX': '3.9',\n  '3975WX': '3.5',\n  '3995WX': '2.7',\n\n  // ZEN2 Desktop APUs\n  '4300GE': '3.5',\n  'Pro 4300GE': '3.5',\n  '4300G': '3.8',\n  'Pro 4300G': '3.8',\n  '4600GE': '3.3',\n  'Pro 4650GE': '3.3',\n  '4600G': '3.7',\n  'Pro 4650G': '3.7',\n  '4700GE': '3.1',\n  'Pro 4750GE': '3.1',\n  '4700G': '3.6',\n  'Pro 4750G': '3.6',\n  '4300U': '2.7',\n  '4450U': '2.5',\n  'Pro 4450U': '2.5',\n  '4500U': '2.3',\n  '4600U': '2.1',\n  'PRO 4650U': '2.1',\n  '4680U': '2.1',\n  '4600HS': '3.0',\n  '4600H': '3.0',\n  '4700U': '2.0',\n  'PRO 4750U': '1.7',\n  '4800U': '1.8',\n  '4800HS': '2.9',\n  '4800H': '2.9',\n  '4900HS': '3.0',\n  '4900H': '3.3',\n  '5300U': '2.6',\n  '5500U': '2.1',\n  '5700U': '1.8',\n\n  // ZEN2 - EPYC\n  '7232P': '3.1',\n  '7302P': '3.0',\n  '7402P': '2.8',\n  '7502P': '2.5',\n  '7702P': '2.0',\n  '7252': '3.1',\n  '7262': '3.2',\n  '7272': '2.9',\n  '7282': '2.8',\n  '7302': '3.0',\n  '7352': '2.3',\n  '7402': '2.8',\n  '7452': '2.35',\n  '7502': '2.5',\n  '7532': '2.4',\n  '7542': '2.9',\n  '7552': '2.2',\n  '7642': '2.3',\n  '7662': '2.0',\n  '7702': '2.0',\n  '7742': '2.25',\n  '7H12': '2.6',\n  '7F32': '3.7',\n  '7F52': '3.5',\n  '7F72': '3.2',\n\n  // Epyc (Milan)\n\n  '7763': '2.45',\n  '7713': '2.0',\n  '7713P': '2.0',\n  '7663': '2.0',\n  '7643': '2.3',\n  '75F3': '2.95',\n  '7543': '2.8',\n  '7543P': '2.8',\n  '7513': '2.6',\n  '7453': '2.75',\n  '74F3': '3.2',\n  '7443': '2.85',\n  '7443P': '2.85',\n  '7413': '2.65',\n  '73F3': '3.5',\n  '7343': '3.2',\n  '7313': '3.0',\n  '7313P': '3.0',\n  '72F3': '3.7',\n\n  // ZEN3\n  '5600X': '3.7',\n  '5800X': '3.8',\n  '5900X': '3.7',\n  '5950X': '3.4'\n};\n\n\nconst socketTypes = {\n  1: 'Other',\n  2: 'Unknown',\n  3: 'Daughter Board',\n  4: 'ZIF Socket',\n  5: 'Replacement/Piggy Back',\n  6: 'None',\n  7: 'LIF Socket',\n  8: 'Slot 1',\n  9: 'Slot 2',\n  10: '370 Pin Socket',\n  11: 'Slot A',\n  12: 'Slot M',\n  13: '423',\n  14: 'A (Socket 462)',\n  15: '478',\n  16: '754',\n  17: '940',\n  18: '939',\n  19: 'mPGA604',\n  20: 'LGA771',\n  21: 'LGA775',\n  22: 'S1',\n  23: 'AM2',\n  24: 'F (1207)',\n  25: 'LGA1366',\n  26: 'G34',\n  27: 'AM3',\n  28: 'C32',\n  29: 'LGA1156',\n  30: 'LGA1567',\n  31: 'PGA988A',\n  32: 'BGA1288',\n  33: 'rPGA988B',\n  34: 'BGA1023',\n  35: 'BGA1224',\n  36: 'LGA1155',\n  37: 'LGA1356',\n  38: 'LGA2011',\n  39: 'FS1',\n  40: 'FS2',\n  41: 'FM1',\n  42: 'FM2',\n  43: 'LGA2011-3',\n  44: 'LGA1356-3',\n  45: 'LGA1150',\n  46: 'BGA1168',\n  47: 'BGA1234',\n  48: 'BGA1364',\n  49: 'AM4',\n  50: 'LGA1151',\n  51: 'BGA1356',\n  52: 'BGA1440',\n  53: 'BGA1515',\n  54: 'LGA3647-1',\n  55: 'SP3',\n  56: 'SP3r2',\n  57: 'LGA2066',\n  58: 'BGA1392',\n  59: 'BGA1510',\n  60: 'BGA1528',\n  61: 'LGA4189',\n  62: 'LGA1200',\n  63: 'LGA4677',\n};\n\nconst socketTypesByName = {\n  'LGA1150': 'i7-5775C i3-4340 i3-4170 G3250 i3-4160T i3-4160 E3-1231 G3258 G3240 i7-4790S i7-4790K i7-4790 i5-4690K i5-4690 i5-4590T i5-4590S i5-4590 i5-4460 i3-4360 i3-4150 G1820 G3420 G3220 i7-4771 i5-4440 i3-4330 i3-4130T i3-4130 E3-1230 i7-4770S i7-4770K i7-4770 i5-4670K i5-4670 i5-4570T i5-4570S i5-4570 i5-4430',\n  'LGA1151': 'i9-9900KS E-2288G E-2224 G5420 i9-9900T i9-9900 i7-9700T i7-9700F i7-9700E i7-9700 i5-9600 i5-9500T i5-9500F i5-9500 i5-9400T i3-9350K i3-9300 i3-9100T i3-9100F i3-9100 G4930 i9-9900KF i7-9700KF i5-9600KF i5-9400F i5-9400 i3-9350KF i9-9900K i7-9700K i5-9600K G5500 G5400 i7-8700T i7-8086K i5-8600 i5-8500T i5-8500 i5-8400T i3-8300 i3-8100T G4900 i7-8700K i7-8700 i5-8600K i5-8400 i3-8350K i3-8100 E3-1270 G4600 G4560 i7-7700T i7-7700K i7-7700 i5-7600K i5-7600 i5-7500T i5-7500 i5-7400 i3-7350K i3-7300 i3-7100T i3-7100 G3930 G3900 G4400 i7-6700T i7-6700K i7-6700 i5-6600K i5-6600 i5-6500T i5-6500 i5-6400T i5-6400 i3-6300 i3-6100T i3-6100 E3-1270 E3-1270 T4500 T4400',\n  '1155': 'G440 G460 G465 G470 G530T G540T G550T G1610T G1620T G530 G540 G1610 G550 G1620 G555 G1630 i3-2100T i3-2120T i3-3220T i3-3240T i3-3250T i3-2100 i3-2105 i3-2102 i3-3210 i3-3220 i3-2125 i3-2120 i3-3225 i3-2130 i3-3245 i3-3240 i3-3250 i5-3570T i5-2500T i5-2400S i5-2405S i5-2390T i5-3330S i5-2500S i5-3335S i5-2300 i5-3450S i5-3340S i5-3470S i5-3475S i5-3470T i5-2310 i5-3550S i5-2320 i5-3330 i5-3350P i5-3450 i5-2400 i5-3340 i5-3570S i5-2380P i5-2450P i5-3470 i5-2500K i5-3550 i5-2500 i5-3570 i5-3570K i5-2550K i7-3770T i7-2600S i7-3770S i7-2600K i7-2600 i7-3770 i7-3770K i7-2700K G620T G630T G640T G2020T G645T G2100T G2030T G622 G860T G620 G632 G2120T G630 G640 G2010 G840 G2020 G850 G645 G2030 G860 G2120 G870 G2130 G2140 E3-1220L E3-1220L E3-1260L E3-1265L E3-1220 E3-1225 E3-1220 E3-1235 E3-1225 E3-1230 E3-1230 E3-1240 E3-1245 E3-1270 E3-1275 E3-1240 E3-1245 E3-1270 E3-1280 E3-1275 E3-1290 E3-1280 E3-1290'\n};\n\nfunction getSocketTypesByName(str) {\n  let result = '';\n  for (const key in socketTypesByName) {\n    const names = socketTypesByName[key].split(' ');\n    for (let i = 0; i < names.length; i++) {\n      if (str.indexOf(names[i]) >= 0) {\n        result = key;\n      }\n    }\n  }\n  return result;\n}\n\nfunction cpuManufacturer(str) {\n  let result = str;\n  str = str.toLowerCase();\n\n  if (str.indexOf('intel') >= 0) { result = 'Intel'; }\n  if (str.indexOf('amd') >= 0) { result = 'AMD'; }\n  if (str.indexOf('qemu') >= 0) { result = 'QEMU'; }\n  if (str.indexOf('hygon') >= 0) { result = 'Hygon'; }\n  if (str.indexOf('centaur') >= 0) { result = 'WinChip/Via'; }\n  if (str.indexOf('vmware') >= 0) { result = 'VMware'; }\n  if (str.indexOf('Xen') >= 0) { result = 'Xen Hypervisor'; }\n  if (str.indexOf('tcg') >= 0) { result = 'QEMU'; }\n  if (str.indexOf('apple') >= 0) { result = 'Apple'; }\n\n  return result;\n}\n\nfunction cpuBrandManufacturer(res) {\n  res.brand = res.brand.replace(/\\(R\\)+/g, '®').replace(/\\s+/g, ' ').trim();\n  res.brand = res.brand.replace(/\\(TM\\)+/g, '™').replace(/\\s+/g, ' ').trim();\n  res.brand = res.brand.replace(/\\(C\\)+/g, '©').replace(/\\s+/g, ' ').trim();\n  res.brand = res.brand.replace(/CPU+/g, '').replace(/\\s+/g, ' ').trim();\n  res.manufacturer = cpuManufacturer(res.brand);\n\n  let parts = res.brand.split(' ');\n  parts.shift();\n  res.brand = parts.join(' ');\n  return res;\n}\n\nfunction getAMDSpeed(brand) {\n  let result = '0';\n  for (let key in AMDBaseFrequencies) {\n    if ({}.hasOwnProperty.call(AMDBaseFrequencies, key)) {\n      let parts = key.split('|');\n      let found = 0;\n      parts.forEach(item => {\n        if (brand.indexOf(item) > -1) {\n          found++;\n        }\n      });\n      if (found === parts.length) {\n        result = AMDBaseFrequencies[key];\n      }\n    }\n  }\n  return parseFloat(result);\n}\n\n// --------------------------\n// CPU - brand, speed\n\nfunction getCpu() {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      const UNKNOWN = 'unknown';\n      let result = {\n        manufacturer: UNKNOWN,\n        brand: UNKNOWN,\n        vendor: '',\n        family: '',\n        model: '',\n        stepping: '',\n        revision: '',\n        voltage: '',\n        speed: 0,\n        speedMin: 0,\n        speedMax: 0,\n        governor: '',\n        cores: util.cores(),\n        physicalCores: util.cores(),\n        processors: 1,\n        socket: '',\n        flags: '',\n        virtualization: false,\n        cache: {}\n      };\n      cpuFlags().then(flags => {\n        result.flags = flags;\n        result.virtualization = flags.indexOf('vmx') > -1 || flags.indexOf('svm') > -1;\n        // if (_windows) {\n        //   try {\n        //     const systeminfo = execSync('systeminfo', util.execOptsWin).toString();\n        //     result.virtualization = result.virtualization || (systeminfo.indexOf('Virtualization Enabled In Firmware: Yes') !== -1) || (systeminfo.indexOf('Virtualisierung in Firmware aktiviert: Ja') !== -1) || (systeminfo.indexOf('Virtualisation activée dans le microprogramme : Qiu') !== -1);\n        //   } catch (e) {\n        //     util.noop();\n        //   }\n        // }\n        if (_darwin) {\n          exec('sysctl machdep.cpu hw.cpufrequency_max hw.cpufrequency_min hw.packages hw.physicalcpu_max hw.ncpu hw.tbfrequency hw.cpufamily hw.cpusubfamily', function (error, stdout) {\n            let lines = stdout.toString().split('\\n');\n            const modelline = util.getValue(lines, 'machdep.cpu.brand_string');\n            const modellineParts = modelline.split('@');\n            result.brand = modellineParts[0].trim();\n            const speed = modellineParts[1] ? modellineParts[1].trim() : '0';\n            result.speed = parseFloat(speed.replace(/GHz+/g, ''));\n            let tbFrequency = util.getValue(lines, 'hw.tbfrequency') / 1000000000.0;\n            tbFrequency = tbFrequency < 0.1 ? tbFrequency * 100 : tbFrequency;\n            result.speed = result.speed === 0 ? tbFrequency : result.speed;\n\n            _cpu_speed = result.speed;\n            result = cpuBrandManufacturer(result);\n            result.speedMin = util.getValue(lines, 'hw.cpufrequency_min') ? (util.getValue(lines, 'hw.cpufrequency_min') / 1000000000.0) : result.speed;\n            result.speedMax = util.getValue(lines, 'hw.cpufrequency_max') ? (util.getValue(lines, 'hw.cpufrequency_max') / 1000000000.0) : result.speed;\n            result.vendor = util.getValue(lines, 'machdep.cpu.vendor') || 'Apple';\n            result.family = util.getValue(lines, 'machdep.cpu.family') || util.getValue(lines, 'hw.cpufamily');\n            result.model = util.getValue(lines, 'machdep.cpu.model');\n            result.stepping = util.getValue(lines, 'machdep.cpu.stepping') || util.getValue(lines, 'hw.cpusubfamily');\n            const countProcessors = util.getValue(lines, 'hw.packages');\n            const countCores = util.getValue(lines, 'hw.physicalcpu_max');\n            const countThreads = util.getValue(lines, 'hw.ncpu');\n            if (os.arch() === 'arm64') {\n              const clusters = execSync('ioreg -c IOPlatformDevice -d 3 -r | grep cluster-type').toString().split('\\n');\n              const efficiencyCores = clusters.filter(line => line.indexOf('\"E\"') >= 0).length;\n              const performanceCores = clusters.filter(line => line.indexOf('\"P\"') >= 0).length;\n              result.socket = 'SOC';\n              result.efficiencyCores = efficiencyCores;\n              result.performanceCores = performanceCores;\n            }\n            if (countProcessors) {\n              result.processors = parseInt(countProcessors) || 1;\n            }\n            if (countCores && countThreads) {\n              result.cores = parseInt(countThreads) || util.cores();\n              result.physicalCores = parseInt(countCores) || util.cores();\n            }\n            cpuCache().then(res => {\n              result.cache = res;\n              resolve(result);\n            });\n          });\n        }\n        if (_linux) {\n          let modelline = '';\n          let lines = [];\n          if (os.cpus()[0] && os.cpus()[0].model) { modelline = os.cpus()[0].model; }\n          exec('export LC_ALL=C; lscpu; echo -n \"Governor: \"; cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 2>/dev/null; echo; unset LC_ALL', function (error, stdout) {\n            if (!error) {\n              lines = stdout.toString().split('\\n');\n            }\n            modelline = util.getValue(lines, 'model name') || modelline;\n            const modellineParts = modelline.split('@');\n            result.brand = modellineParts[0].trim();\n            result.speed = modellineParts[1] ? parseFloat(modellineParts[1].trim()) : 0;\n            if (result.speed === 0 && (result.brand.indexOf('AMD') > -1 || result.brand.toLowerCase().indexOf('ryzen') > -1)) {\n              result.speed = getAMDSpeed(result.brand);\n            }\n            if (result.speed === 0) {\n              const current = getCpuCurrentSpeedSync();\n              if (current.avg !== 0) { result.speed = current.avg; }\n            }\n            _cpu_speed = result.speed;\n            result.speedMin = Math.round(parseFloat(util.getValue(lines, 'cpu min mhz').replace(/,/g, '.')) / 10.0) / 100;\n            result.speedMax = Math.round(parseFloat(util.getValue(lines, 'cpu max mhz').replace(/,/g, '.')) / 10.0) / 100;\n\n            result = cpuBrandManufacturer(result);\n            result.vendor = cpuManufacturer(util.getValue(lines, 'vendor id'));\n            // if (!result.vendor) { result.vendor = util.getValue(lines, 'anbieterkennung'); }\n\n            result.family = util.getValue(lines, 'cpu family');\n            // if (!result.family) { result.family = util.getValue(lines, 'prozessorfamilie'); }\n            result.model = util.getValue(lines, 'model:');\n            // if (!result.model) { result.model = util.getValue(lines, 'modell:'); }\n            result.stepping = util.getValue(lines, 'stepping');\n            result.revision = util.getValue(lines, 'cpu revision');\n            result.cache.l1d = util.getValue(lines, 'l1d cache');\n            if (result.cache.l1d) { result.cache.l1d = parseInt(result.cache.l1d) * (result.cache.l1d.indexOf('M') !== -1 ? 1024 * 1024 : (result.cache.l1d.indexOf('K') !== -1 ? 1024 : 1)); }\n            result.cache.l1i = util.getValue(lines, 'l1i cache');\n            if (result.cache.l1i) { result.cache.l1i = parseInt(result.cache.l1i) * (result.cache.l1i.indexOf('M') !== -1 ? 1024 * 1024 : (result.cache.l1i.indexOf('K') !== -1 ? 1024 : 1)); }\n            result.cache.l2 = util.getValue(lines, 'l2 cache');\n            if (result.cache.l2) { result.cache.l2 = parseInt(result.cache.l2) * (result.cache.l2.indexOf('M') !== -1 ? 1024 * 1024 : (result.cache.l2.indexOf('K') !== -1 ? 1024 : 1)); }\n            result.cache.l3 = util.getValue(lines, 'l3 cache');\n            if (result.cache.l3) { result.cache.l3 = parseInt(result.cache.l3) * (result.cache.l3.indexOf('M') !== -1 ? 1024 * 1024 : (result.cache.l3.indexOf('K') !== -1 ? 1024 : 1)); }\n\n            const threadsPerCore = util.getValue(lines, 'thread(s) per core') || '1';\n            // const coresPerSocketInt = parseInt(util.getValue(lines, 'cores(s) per socket') || '1', 10);\n            const processors = util.getValue(lines, 'socket(s)') || '1';\n            let threadsPerCoreInt = parseInt(threadsPerCore, 10);\n            let processorsInt = parseInt(processors, 10);\n            result.physicalCores = result.cores / threadsPerCoreInt;\n            result.processors = processorsInt;\n            result.governor = util.getValue(lines, 'governor') || '';\n\n            // Test Raspberry\n            if (result.vendor === 'ARM') {\n              const linesRpi = fs.readFileSync('/proc/cpuinfo').toString().split('\\n');\n              const rPIRevision = util.decodePiCpuinfo(linesRpi);\n              if (rPIRevision.model.toLowerCase().indexOf('raspberry') >= 0) {\n                result.family = result.manufacturer;\n                result.manufacturer = rPIRevision.manufacturer;\n                result.brand = rPIRevision.processor;\n                result.revision = rPIRevision.revisionCode;\n                result.socket = 'SOC';\n              }\n            }\n\n            // socket type\n            let lines2 = [];\n            exec('export LC_ALL=C; dmidecode –t 4 2>/dev/null | grep \"Upgrade: Socket\"; unset LC_ALL', function (error2, stdout2) {\n              lines2 = stdout2.toString().split('\\n');\n              if (lines2 && lines2.length) {\n                result.socket = util.getValue(lines2, 'Upgrade').replace('Socket', '').trim() || result.socket;\n              }\n              resolve(result);\n            });\n          });\n        }\n        if (_freebsd || _openbsd || _netbsd) {\n          let modelline = '';\n          let lines = [];\n          if (os.cpus()[0] && os.cpus()[0].model) { modelline = os.cpus()[0].model; }\n          exec('export LC_ALL=C; dmidecode -t 4; dmidecode -t 7 unset LC_ALL', function (error, stdout) {\n            let cache = [];\n            if (!error) {\n              const data = stdout.toString().split('# dmidecode');\n              const processor = data.length > 1 ? data[1] : '';\n              cache = data.length > 2 ? data[2].split('Cache Information') : [];\n\n              lines = processor.split('\\n');\n            }\n            result.brand = modelline.split('@')[0].trim();\n            result.speed = modelline.split('@')[1] ? parseFloat(modelline.split('@')[1].trim()) : 0;\n            if (result.speed === 0 && (result.brand.indexOf('AMD') > -1 || result.brand.toLowerCase().indexOf('ryzen') > -1)) {\n              result.speed = getAMDSpeed(result.brand);\n            }\n            if (result.speed === 0) {\n              const current = getCpuCurrentSpeedSync();\n              if (current.avg !== 0) { result.speed = current.avg; }\n            }\n            _cpu_speed = result.speed;\n            result.speedMin = result.speed;\n            result.speedMax = Math.round(parseFloat(util.getValue(lines, 'max speed').replace(/Mhz/g, '')) / 10.0) / 100;\n\n            result = cpuBrandManufacturer(result);\n            result.vendor = cpuManufacturer(util.getValue(lines, 'manufacturer'));\n            let sig = util.getValue(lines, 'signature');\n            sig = sig.split(',');\n            for (var i = 0; i < sig.length; i++) {\n              sig[i] = sig[i].trim();\n            }\n            result.family = util.getValue(sig, 'Family', ' ', true);\n            result.model = util.getValue(sig, 'Model', ' ', true);\n            result.stepping = util.getValue(sig, 'Stepping', ' ', true);\n            result.revision = '';\n            const voltage = parseFloat(util.getValue(lines, 'voltage'));\n            result.voltage = isNaN(voltage) ? '' : voltage.toFixed(2);\n            for (let i = 0; i < cache.length; i++) {\n              lines = cache[i].split('\\n');\n              let cacheType = util.getValue(lines, 'Socket Designation').toLowerCase().replace(' ', '-').split('-');\n              cacheType = cacheType.length ? cacheType[0] : '';\n              const sizeParts = util.getValue(lines, 'Installed Size').split(' ');\n              let size = parseInt(sizeParts[0], 10);\n              const unit = sizeParts.length > 1 ? sizeParts[1] : 'kb';\n              size = size * (unit === 'kb' ? 1024 : (unit === 'mb' ? 1024 * 1024 : (unit === 'gb' ? 1024 * 1024 * 1024 : 1)));\n              if (cacheType) {\n                if (cacheType === 'l1') {\n                  result.cache[cacheType + 'd'] = size / 2;\n                  result.cache[cacheType + 'i'] = size / 2;\n                } else {\n                  result.cache[cacheType] = size;\n                }\n              }\n            }\n            // socket type\n            result.socket = util.getValue(lines, 'Upgrade').replace('Socket', '').trim();\n            // # threads / # cores\n            const threadCount = util.getValue(lines, 'thread count').trim();\n            const coreCount = util.getValue(lines, 'core count').trim();\n            if (coreCount && threadCount) {\n              result.cores = parseInt(threadCount, 10);\n              result.physicalCores = parseInt(coreCount, 10);\n            }\n            resolve(result);\n          });\n        }\n        if (_sunos) {\n          resolve(result);\n        }\n        if (_windows) {\n          try {\n            const workload = [];\n            workload.push(util.powerShell('Get-WmiObject Win32_processor | select Name, Revision, L2CacheSize, L3CacheSize, Manufacturer, MaxClockSpeed, Description, UpgradeMethod, Caption, NumberOfLogicalProcessors, NumberOfCores | fl'));\n            workload.push(util.powerShell('Get-WmiObject Win32_CacheMemory | select CacheType,InstalledSize,Level | fl'));\n            // workload.push(util.powerShell('Get-ComputerInfo -property \"HyperV*\"'));\n            workload.push(util.powerShell('(Get-CimInstance Win32_ComputerSystem).HypervisorPresent'));\n\n            Promise.all(\n              workload\n            ).then(data => {\n              let lines = data[0].split('\\r\\n');\n              let name = util.getValue(lines, 'name', ':') || '';\n              if (name.indexOf('@') >= 0) {\n                result.brand = name.split('@')[0].trim();\n                result.speed = name.split('@')[1] ? parseFloat(name.split('@')[1].trim()) : 0;\n                _cpu_speed = result.speed;\n              } else {\n                result.brand = name.trim();\n                result.speed = 0;\n              }\n              result = cpuBrandManufacturer(result);\n              result.revision = util.getValue(lines, 'revision', ':');\n              result.cache.l1d = 0;\n              result.cache.l1i = 0;\n              result.cache.l2 = util.getValue(lines, 'l2cachesize', ':');\n              result.cache.l3 = util.getValue(lines, 'l3cachesize', ':');\n              if (result.cache.l2) { result.cache.l2 = parseInt(result.cache.l2, 10) * 1024; }\n              if (result.cache.l3) { result.cache.l3 = parseInt(result.cache.l3, 10) * 1024; }\n              result.vendor = util.getValue(lines, 'manufacturer', ':');\n              result.speedMax = Math.round(parseFloat(util.getValue(lines, 'maxclockspeed', ':').replace(/,/g, '.')) / 10.0) / 100;\n              if (result.speed === 0 && (result.brand.indexOf('AMD') > -1 || result.brand.toLowerCase().indexOf('ryzen') > -1)) {\n                result.speed = getAMDSpeed(result.brand);\n              }\n              if (result.speed === 0) {\n                result.speed = result.speedMax;\n              }\n              result.speedMin = result.speed;\n\n              let description = util.getValue(lines, 'description', ':').split(' ');\n              for (let i = 0; i < description.length; i++) {\n                if (description[i].toLowerCase().startsWith('family') && (i + 1) < description.length && description[i + 1]) {\n                  result.family = description[i + 1];\n                }\n                if (description[i].toLowerCase().startsWith('model') && (i + 1) < description.length && description[i + 1]) {\n                  result.model = description[i + 1];\n                }\n                if (description[i].toLowerCase().startsWith('stepping') && (i + 1) < description.length && description[i + 1]) {\n                  result.stepping = description[i + 1];\n                }\n              }\n              // socket type\n              const socketId = util.getValue(lines, 'UpgradeMethod', ':');\n              if (socketTypes[socketId]) {\n                result.socket = socketTypes[socketId];\n              }\n              const socketByName = getSocketTypesByName(name);\n              if (socketByName) {\n                result.socket = socketByName;\n              }\n              // # threads / # cores\n              const countProcessors = util.countLines(lines, 'Caption');\n              const countThreads = util.getValue(lines, 'NumberOfLogicalProcessors', ':');\n              const countCores = util.getValue(lines, 'NumberOfCores', ':');\n              if (countProcessors) {\n                result.processors = parseInt(countProcessors) || 1;\n              }\n              if (countCores && countThreads) {\n                result.cores = parseInt(countThreads) || util.cores();\n                result.physicalCores = parseInt(countCores) || util.cores();\n              }\n              if (countProcessors > 1) {\n                result.cores = result.cores * countProcessors;\n                result.physicalCores = result.physicalCores * countProcessors;\n              }\n              const parts = data[1].split(/\\n\\s*\\n/);\n              parts.forEach(function (part) {\n                lines = part.split('\\r\\n');\n                const cacheType = util.getValue(lines, 'CacheType');\n                const level = util.getValue(lines, 'Level');\n                const installedSize = util.getValue(lines, 'InstalledSize');\n                // L1 Instructions\n                if (level === '3' && cacheType === '3') {\n                  result.cache.l1i = parseInt(installedSize, 10);\n                }\n                // L1 Data\n                if (level === '3' && cacheType === '4') {\n                  result.cache.l1d = parseInt(installedSize, 10);\n                }\n                // L1 all\n                if (level === '3' && cacheType === '5' && !result.cache.l1i && !result.cache.l1d) {\n                  result.cache.l1i = parseInt(installedSize, 10) / 2;\n                  result.cache.l1d = parseInt(installedSize, 10) / 2;\n                }\n              });\n              // lines = data[2].split('\\r\\n');\n              // result.virtualization = (util.getValue(lines, 'HyperVRequirementVirtualizationFirmwareEnabled').toLowerCase() === 'true');\n              // result.virtualization = (util.getValue(lines, 'HyperVisorPresent').toLowerCase() === 'true');\n              const hyperv = data[2] ? data[2].toString().toLowerCase() : '';\n              result.virtualization = hyperv.indexOf('true') !== -1;\n\n              resolve(result);\n            });\n          } catch (e) {\n            resolve(result);\n          }\n        }\n      });\n    });\n  });\n}\n\n// --------------------------\n// CPU - Processor Data\n\nfunction cpu(callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      getCpu().then(result => {\n        if (callback) { callback(result); }\n        resolve(result);\n      });\n    });\n  });\n}\n\nexports.cpu = cpu;\n\n// --------------------------\n// CPU - current speed - in GHz\n\nfunction getCpuCurrentSpeedSync() {\n\n  let cpus = os.cpus();\n  let minFreq = 999999999;\n  let maxFreq = 0;\n  let avgFreq = 0;\n  let cores = [];\n\n  if (cpus && cpus.length) {\n    for (let i in cpus) {\n      if ({}.hasOwnProperty.call(cpus, i)) {\n        let freq = cpus[i].speed > 100 ? (cpus[i].speed + 1) / 1000 : cpus[i].speed / 10;\n        avgFreq = avgFreq + freq;\n        if (freq > maxFreq) { maxFreq = freq; }\n        if (freq < minFreq) { minFreq = freq; }\n        cores.push(parseFloat(freq.toFixed(2)));\n      }\n    }\n    avgFreq = avgFreq / cpus.length;\n    return {\n      min: parseFloat(minFreq.toFixed(2)),\n      max: parseFloat(maxFreq.toFixed(2)),\n      avg: parseFloat((avgFreq).toFixed(2)),\n      cores: cores\n    };\n  } else {\n    return {\n      min: 0,\n      max: 0,\n      avg: 0,\n      cores: cores\n    };\n  }\n}\n\nfunction cpuCurrentSpeed(callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      let result = getCpuCurrentSpeedSync();\n      if (result.avg === 0 && _cpu_speed !== 0) {\n        const currCpuSpeed = parseFloat(_cpu_speed);\n        result = {\n          min: currCpuSpeed,\n          max: currCpuSpeed,\n          avg: currCpuSpeed,\n          cores: []\n        };\n      }\n      if (callback) { callback(result); }\n      resolve(result);\n    });\n  });\n}\n\nexports.cpuCurrentSpeed = cpuCurrentSpeed;\n\n// --------------------------\n// CPU - temperature\n// if sensors are installed\n\nfunction cpuTemperature(callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      let result = {\n        main: null,\n        cores: [],\n        max: null,\n        socket: [],\n        chipset: null\n      };\n      if (_linux) {\n        // CPU Chipset, Socket\n        try {\n          const cmd = 'cat /sys/class/thermal/thermal_zone*/type  2>/dev/null; echo \"-----\"; cat /sys/class/thermal/thermal_zone*/temp 2>/dev/null;';\n          const parts = execSync(cmd).toString().split('-----\\n');\n          if (parts.length === 2) {\n            const lines = parts[0].split('\\n');\n            const lines2 = parts[1].split('\\n');\n            for (let i = 0; i < lines.length; i++) {\n              const line = lines[i].trim();\n              if (line.startsWith('acpi') && lines2[i]) {\n                result.socket.push(Math.round(parseInt(lines2[i], 10) / 100) / 10);\n              }\n              if (line.startsWith('pch') && lines2[i]) {\n                result.chipset = Math.round(parseInt(lines2[i], 10) / 100) / 10;\n              }\n            }\n          }\n        } catch (e) {\n          util.noop();\n        }\n\n        const cmd = 'for mon in /sys/class/hwmon/hwmon*; do for label in \"$mon\"/temp*_label; do if [ -f $label ]; then value=$(echo $label | rev | cut -c 7- | rev)_input; if [ -f \"$value\" ]; then echo $(cat \"$label\")___$(cat \"$value\");  fi; fi; done; done;';\n        try {\n          exec(cmd, function (error, stdout) {\n            stdout = stdout.toString();\n            const tdiePos = stdout.toLowerCase().indexOf('tdie');\n            if (tdiePos !== -1) {\n              stdout = stdout.substring(tdiePos);\n            }\n            let lines = stdout.split('\\n');\n            lines.forEach(line => {\n              const parts = line.split('___');\n              const label = parts[0];\n              const value = parts.length > 1 && parts[1] ? parts[1] : '0';\n              if (value && (label === undefined || (label && label.toLowerCase().startsWith('core')))) {\n                result.cores.push(Math.round(parseInt(value, 10) / 100) / 10);\n              } else if (value && label && result.main === null) {\n                result.main = Math.round(parseInt(value, 10) / 100) / 10;\n              }\n            });\n\n            if (result.cores.length > 0) {\n              if (result.main === null) {\n                result.main = Math.round(result.cores.reduce((a, b) => a + b, 0) / result.cores.length);\n              }\n              let maxtmp = Math.max.apply(Math, result.cores);\n              result.max = (maxtmp > result.main) ? maxtmp : result.main;\n            }\n            if (result.main !== null) {\n              if (result.max === null) {\n                result.max = result.main;\n              }\n              if (callback) { callback(result); }\n              resolve(result);\n              return;\n            }\n            exec('sensors', function (error, stdout) {\n              if (!error) {\n                let lines = stdout.toString().split('\\n');\n                let tdieTemp = null;\n                let newSectionStarts = true;\n                let section = '';\n                lines.forEach(function (line) {\n                  // determine section\n                  if (line.trim() === '') {\n                    newSectionStarts = true;\n                  } else if (newSectionStarts) {\n                    if (line.trim().toLowerCase().startsWith('acpi')) { section = 'acpi'; }\n                    if (line.trim().toLowerCase().startsWith('pch')) { section = 'pch'; }\n                    if (line.trim().toLowerCase().startsWith('core')) { section = 'core'; }\n                    newSectionStarts = false;\n                  }\n                  let regex = /[+-]([^°]*)/g;\n                  let temps = line.match(regex);\n                  let firstPart = line.split(':')[0].toUpperCase();\n                  if (section === 'acpi') {\n                    // socket temp\n                    if (firstPart.indexOf('TEMP') !== -1) {\n                      result.socket.push(parseFloat(temps));\n                    }\n                  } else if (section === 'pch') {\n                    // chipset temp\n                    if (firstPart.indexOf('TEMP') !== -1) {\n                      result.chipset = parseFloat(temps);\n                    }\n                  }\n                  // cpu temp\n                  if (firstPart.indexOf('PHYSICAL') !== -1 || firstPart.indexOf('PACKAGE') !== -1) {\n                    result.main = parseFloat(temps);\n                  }\n                  if (firstPart.indexOf('CORE ') !== -1) {\n                    result.cores.push(parseFloat(temps));\n                  }\n                  if (firstPart.indexOf('TDIE') !== -1 && tdieTemp === null) {\n                    tdieTemp = parseFloat(temps);\n                  }\n                });\n                if (result.cores.length > 0) {\n                  if (result.main === null) {\n                    result.main = Math.round(result.cores.reduce((a, b) => a + b, 0) / result.cores.length);\n                  }\n                  let maxtmp = Math.max.apply(Math, result.cores);\n                  result.max = (maxtmp > result.main) ? maxtmp : result.main;\n                } else {\n                  if (result.main === null && tdieTemp !== null) {\n                    result.main = tdieTemp;\n                    result.max = tdieTemp;\n                  }\n                }\n                if (result.main !== null || result.max !== null) {\n                  if (callback) { callback(result); }\n                  resolve(result);\n                  return;\n                }\n              }\n              fs.stat('/sys/class/thermal/thermal_zone0/temp', function (err) {\n                if (err === null) {\n                  fs.readFile('/sys/class/thermal/thermal_zone0/temp', function (error, stdout) {\n                    if (!error) {\n                      let lines = stdout.toString().split('\\n');\n                      if (lines.length > 0) {\n                        result.main = parseFloat(lines[0]) / 1000.0;\n                        result.max = result.main;\n                      }\n                    }\n                    if (callback) { callback(result); }\n                    resolve(result);\n                  });\n                } else {\n                  exec('/opt/vc/bin/vcgencmd measure_temp', function (error, stdout) {\n                    if (!error) {\n                      let lines = stdout.toString().split('\\n');\n                      if (lines.length > 0 && lines[0].indexOf('=')) {\n                        result.main = parseFloat(lines[0].split('=')[1]);\n                        result.max = result.main;\n                      }\n                    }\n                    if (callback) { callback(result); }\n                    resolve(result);\n                  });\n                }\n              });\n            });\n          });\n        } catch (er) {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      }\n      if (_freebsd || _openbsd || _netbsd) {\n        exec('sysctl dev.cpu | grep temp', function (error, stdout) {\n          if (!error) {\n            let lines = stdout.toString().split('\\n');\n            let sum = 0;\n            lines.forEach(function (line) {\n              const parts = line.split(':');\n              if (parts.length > 1) {\n                const temp = parseFloat(parts[1].replace(',', '.'));\n                if (temp > result.max) { result.max = temp; }\n                sum = sum + temp;\n                result.cores.push(temp);\n              }\n            });\n            if (result.cores.length) {\n              result.main = Math.round(sum / result.cores.length * 100) / 100;\n            }\n          }\n          if (callback) { callback(result); }\n          resolve(result);\n        });\n      }\n      if (_darwin) {\n        let osxTemp = null;\n        try {\n          osxTemp = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'osx-temperature-sensor'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\n        } catch (er) {\n          osxTemp = null;\n        }\n        if (osxTemp) {\n          result = osxTemp.cpuTemperature();\n        }\n\n        if (callback) { callback(result); }\n        resolve(result);\n      }\n      if (_sunos) {\n        if (callback) { callback(result); }\n        resolve(result);\n      }\n      if (_windows) {\n        try {\n          util.powerShell('Get-WmiObject MSAcpi_ThermalZoneTemperature -Namespace \"root/wmi\" | Select CurrentTemperature').then((stdout, error) => {\n            if (!error) {\n              let sum = 0;\n              let lines = stdout.split('\\r\\n').filter(line => line.trim() !== '').filter((line, idx) => idx > 0);\n              lines.forEach(function (line) {\n                let value = (parseInt(line, 10) - 2732) / 10;\n                if (!isNaN(value)) {\n                  sum = sum + value;\n                  if (value > result.max) { result.max = value; }\n                  result.cores.push(value);\n                }\n              });\n              if (result.cores.length) {\n                result.main = sum / result.cores.length;\n              }\n            }\n            if (callback) { callback(result); }\n            resolve(result);\n          });\n        } catch (e) {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      }\n    });\n  });\n}\n\nexports.cpuTemperature = cpuTemperature;\n\n// --------------------------\n// CPU Flags\n\nfunction cpuFlags(callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      let result = '';\n      if (_windows) {\n        try {\n          exec('reg query \"HKEY_LOCAL_MACHINE\\\\HARDWARE\\\\DESCRIPTION\\\\System\\\\CentralProcessor\\\\0\" /v FeatureSet', util.execOptsWin, function (error, stdout) {\n            if (!error) {\n              let flag_hex = stdout.split('0x').pop().trim();\n              let flag_bin_unpadded = parseInt(flag_hex, 16).toString(2);\n              let flag_bin = '0'.repeat(32 - flag_bin_unpadded.length) + flag_bin_unpadded;\n              // empty flags are the reserved fields in the CPUID feature bit list\n              // as found on wikipedia:\n              // https://en.wikipedia.org/wiki/CPUID\n              let all_flags = [\n                'fpu', 'vme', 'de', 'pse', 'tsc', 'msr', 'pae', 'mce', 'cx8', 'apic',\n                '', 'sep', 'mtrr', 'pge', 'mca', 'cmov', 'pat', 'pse-36', 'psn', 'clfsh',\n                '', 'ds', 'acpi', 'mmx', 'fxsr', 'sse', 'sse2', 'ss', 'htt', 'tm', 'ia64', 'pbe'\n              ];\n              for (let f = 0; f < all_flags.length; f++) {\n                if (flag_bin[f] === '1' && all_flags[f] !== '') {\n                  result += ' ' + all_flags[f];\n                }\n              }\n              result = result.trim().toLowerCase();\n            }\n            if (callback) { callback(result); }\n            resolve(result);\n          });\n        } catch (e) {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      }\n      if (_linux) {\n        try {\n\n          exec('export LC_ALL=C; lscpu; unset LC_ALL', function (error, stdout) {\n            if (!error) {\n              let lines = stdout.toString().split('\\n');\n              lines.forEach(function (line) {\n                if (line.split(':')[0].toUpperCase().indexOf('FLAGS') !== -1) {\n                  result = line.split(':')[1].trim().toLowerCase();\n                }\n              });\n            }\n            if (!result) {\n              fs.readFile('/proc/cpuinfo', function (error, stdout) {\n                if (!error) {\n                  let lines = stdout.toString().split('\\n');\n                  result = util.getValue(lines, 'features', ':', true).toLowerCase();\n                }\n                if (callback) { callback(result); }\n                resolve(result);\n              });\n            } else {\n              if (callback) { callback(result); }\n              resolve(result);\n            }\n          });\n        } catch (e) {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      }\n      if (_freebsd || _openbsd || _netbsd) {\n        exec('export LC_ALL=C; dmidecode -t 4 2>/dev/null; unset LC_ALL', function (error, stdout) {\n          let flags = [];\n          if (!error) {\n            let parts = stdout.toString().split('\\tFlags:');\n            const lines = parts.length > 1 ? parts[1].split('\\tVersion:')[0].split('\\n') : [];\n            lines.forEach(function (line) {\n              let flag = (line.indexOf('(') ? line.split('(')[0].toLowerCase() : '').trim().replace(/\\t/g, '');\n              if (flag) {\n                flags.push(flag);\n              }\n            });\n          }\n          result = flags.join(' ').trim().toLowerCase();\n          if (callback) { callback(result); }\n          resolve(result);\n        });\n      }\n      if (_darwin) {\n        exec('sysctl machdep.cpu.features', function (error, stdout) {\n          if (!error) {\n            let lines = stdout.toString().split('\\n');\n            if (lines.length > 0 && lines[0].indexOf('machdep.cpu.features:') !== -1) {\n              result = lines[0].split(':')[1].trim().toLowerCase();\n            }\n          }\n          if (callback) { callback(result); }\n          resolve(result);\n        });\n      }\n      if (_sunos) {\n        if (callback) { callback(result); }\n        resolve(result);\n      }\n    });\n  });\n}\n\nexports.cpuFlags = cpuFlags;\n\n// --------------------------\n// CPU Cache\n\nfunction cpuCache(callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n\n      let result = {\n        l1d: null,\n        l1i: null,\n        l2: null,\n        l3: null,\n      };\n      if (_linux) {\n        try {\n          exec('export LC_ALL=C; lscpu; unset LC_ALL', function (error, stdout) {\n            if (!error) {\n              let lines = stdout.toString().split('\\n');\n              lines.forEach(function (line) {\n                let parts = line.split(':');\n                if (parts[0].toUpperCase().indexOf('L1D CACHE') !== -1) {\n                  result.l1d = parseInt(parts[1].trim()) * (parts[1].indexOf('M') !== -1 ? 1024 * 1024 : (parts[1].indexOf('K') !== -1 ? 1024 : 1));\n                }\n                if (parts[0].toUpperCase().indexOf('L1I CACHE') !== -1) {\n                  result.l1i = parseInt(parts[1].trim()) * (parts[1].indexOf('M') !== -1 ? 1024 * 1024 : (parts[1].indexOf('K') !== -1 ? 1024 : 1));\n                }\n                if (parts[0].toUpperCase().indexOf('L2 CACHE') !== -1) {\n                  result.l2 = parseInt(parts[1].trim()) * (parts[1].indexOf('M') !== -1 ? 1024 * 1024 : (parts[1].indexOf('K') !== -1 ? 1024 : 1));\n                }\n                if (parts[0].toUpperCase().indexOf('L3 CACHE') !== -1) {\n                  result.l3 = parseInt(parts[1].trim()) * (parts[1].indexOf('M') !== -1 ? 1024 * 1024 : (parts[1].indexOf('K') !== -1 ? 1024 : 1));\n                }\n              });\n            }\n            if (callback) { callback(result); }\n            resolve(result);\n          });\n        } catch (e) {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      }\n      if (_freebsd || _openbsd || _netbsd) {\n        exec('export LC_ALL=C; dmidecode -t 7 2>/dev/null; unset LC_ALL', function (error, stdout) {\n          let cache = [];\n          if (!error) {\n            const data = stdout.toString();\n            cache = data.split('Cache Information');\n            cache.shift();\n          }\n          for (let i = 0; i < cache.length; i++) {\n            const lines = cache[i].split('\\n');\n            let cacheType = util.getValue(lines, 'Socket Designation').toLowerCase().replace(' ', '-').split('-');\n            cacheType = cacheType.length ? cacheType[0] : '';\n            const sizeParts = util.getValue(lines, 'Installed Size').split(' ');\n            let size = parseInt(sizeParts[0], 10);\n            const unit = sizeParts.length > 1 ? sizeParts[1] : 'kb';\n            size = size * (unit === 'kb' ? 1024 : (unit === 'mb' ? 1024 * 1024 : (unit === 'gb' ? 1024 * 1024 * 1024 : 1)));\n            if (cacheType) {\n              if (cacheType === 'l1') {\n                result.cache[cacheType + 'd'] = size / 2;\n                result.cache[cacheType + 'i'] = size / 2;\n              } else {\n                result.cache[cacheType] = size;\n              }\n            }\n          }\n          if (callback) { callback(result); }\n          resolve(result);\n        });\n      }\n      if (_darwin) {\n        exec('sysctl hw.l1icachesize hw.l1dcachesize hw.l2cachesize hw.l3cachesize', function (error, stdout) {\n          if (!error) {\n            let lines = stdout.toString().split('\\n');\n            lines.forEach(function (line) {\n              let parts = line.split(':');\n              if (parts[0].toLowerCase().indexOf('hw.l1icachesize') !== -1) {\n                result.l1d = parseInt(parts[1].trim()) * (parts[1].indexOf('K') !== -1 ? 1024 : 1);\n              }\n              if (parts[0].toLowerCase().indexOf('hw.l1dcachesize') !== -1) {\n                result.l1i = parseInt(parts[1].trim()) * (parts[1].indexOf('K') !== -1 ? 1024 : 1);\n              }\n              if (parts[0].toLowerCase().indexOf('hw.l2cachesize') !== -1) {\n                result.l2 = parseInt(parts[1].trim()) * (parts[1].indexOf('K') !== -1 ? 1024 : 1);\n              }\n              if (parts[0].toLowerCase().indexOf('hw.l3cachesize') !== -1) {\n                result.l3 = parseInt(parts[1].trim()) * (parts[1].indexOf('K') !== -1 ? 1024 : 1);\n              }\n            });\n          }\n          if (callback) { callback(result); }\n          resolve(result);\n        });\n      }\n      if (_sunos) {\n        if (callback) { callback(result); }\n        resolve(result);\n      }\n      if (_windows) {\n        try {\n          util.powerShell('Get-WmiObject Win32_processor | select L2CacheSize, L3CacheSize | fl').then((stdout, error) => {\n            if (!error) {\n              let lines = stdout.split('\\r\\n');\n              result.l1d = 0;\n              result.l1i = 0;\n              result.l2 = util.getValue(lines, 'l2cachesize', ':');\n              result.l3 = util.getValue(lines, 'l3cachesize', ':');\n              if (result.l2) { result.l2 = parseInt(result.l2, 10) * 1024; }\n              if (result.l3) { result.l3 = parseInt(result.l3, 10) * 1024; }\n            }\n            util.powerShell('Get-WmiObject Win32_CacheMemory | select CacheType,InstalledSize,Level | fl').then((stdout, error) => {\n              if (!error) {\n                const parts = stdout.split(/\\n\\s*\\n/);\n                parts.forEach(function (part) {\n                  const lines = part.split('\\r\\n');\n                  const cacheType = util.getValue(lines, 'CacheType');\n                  const level = util.getValue(lines, 'Level');\n                  const installedSize = util.getValue(lines, 'InstalledSize');\n                  // L1 Instructions\n                  if (level === '3' && cacheType === '3') {\n                    result.l1i = parseInt(installedSize, 10);\n                  }\n                  // L1 Data\n                  if (level === '3' && cacheType === '4') {\n                    result.l1d = parseInt(installedSize, 10);\n                  }\n                  // L1 all\n                  if (level === '3' && cacheType === '5' && !result.l1i && !result.l1d) {\n                    result.l1i = parseInt(installedSize, 10) / 2;\n                    result.l1d = parseInt(installedSize, 10) / 2;\n                  }\n                });\n              }\n              if (callback) { callback(result); }\n              resolve(result);\n            });\n          });\n        } catch (e) {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      }\n    });\n  });\n}\n\nexports.cpuCache = cpuCache;\n\n// --------------------------\n// CPU - current load - in %\n\nfunction getLoad() {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      let loads = os.loadavg().map(function (x) { return x / util.cores(); });\n      let avgLoad = parseFloat((Math.max.apply(Math, loads)).toFixed(2));\n      let result = {};\n\n      let now = Date.now() - _current_cpu.ms;\n      if (now >= 200) {\n        _current_cpu.ms = Date.now();\n        const cpus = os.cpus();\n        let totalUser = 0;\n        let totalSystem = 0;\n        let totalNice = 0;\n        let totalIrq = 0;\n        let totalIdle = 0;\n        let cores = [];\n        _corecount = (cpus && cpus.length) ? cpus.length : 0;\n\n        for (let i = 0; i < _corecount; i++) {\n          const cpu = cpus[i].times;\n          totalUser += cpu.user;\n          totalSystem += cpu.sys;\n          totalNice += cpu.nice;\n          totalIdle += cpu.idle;\n          totalIrq += cpu.irq;\n          let tmpTick = (_cpus && _cpus[i] && _cpus[i].totalTick ? _cpus[i].totalTick : 0);\n          let tmpLoad = (_cpus && _cpus[i] && _cpus[i].totalLoad ? _cpus[i].totalLoad : 0);\n          let tmpUser = (_cpus && _cpus[i] && _cpus[i].user ? _cpus[i].user : 0);\n          let tmpSystem = (_cpus && _cpus[i] && _cpus[i].sys ? _cpus[i].sys : 0);\n          let tmpNice = (_cpus && _cpus[i] && _cpus[i].nice ? _cpus[i].nice : 0);\n          let tmpIdle = (_cpus && _cpus[i] && _cpus[i].idle ? _cpus[i].idle : 0);\n          let tmpIrq = (_cpus && _cpus[i] && _cpus[i].irq ? _cpus[i].irq : 0);\n          _cpus[i] = cpu;\n          _cpus[i].totalTick = _cpus[i].user + _cpus[i].sys + _cpus[i].nice + _cpus[i].irq + _cpus[i].idle;\n          _cpus[i].totalLoad = _cpus[i].user + _cpus[i].sys + _cpus[i].nice + _cpus[i].irq;\n          _cpus[i].currentTick = _cpus[i].totalTick - tmpTick;\n          _cpus[i].load = (_cpus[i].totalLoad - tmpLoad);\n          _cpus[i].loadUser = (_cpus[i].user - tmpUser);\n          _cpus[i].loadSystem = (_cpus[i].sys - tmpSystem);\n          _cpus[i].loadNice = (_cpus[i].nice - tmpNice);\n          _cpus[i].loadIdle = (_cpus[i].idle - tmpIdle);\n          _cpus[i].loadIrq = (_cpus[i].irq - tmpIrq);\n          cores[i] = {};\n          cores[i].load = _cpus[i].load / _cpus[i].currentTick * 100;\n          cores[i].loadUser = _cpus[i].loadUser / _cpus[i].currentTick * 100;\n          cores[i].loadSystem = _cpus[i].loadSystem / _cpus[i].currentTick * 100;\n          cores[i].loadNice = _cpus[i].loadNice / _cpus[i].currentTick * 100;\n          cores[i].loadIdle = _cpus[i].loadIdle / _cpus[i].currentTick * 100;\n          cores[i].loadIrq = _cpus[i].loadIrq / _cpus[i].currentTick * 100;\n          cores[i].rawLoad = _cpus[i].load;\n          cores[i].rawLoadUser = _cpus[i].loadUser;\n          cores[i].rawLoadSystem = _cpus[i].loadSystem;\n          cores[i].rawLoadNice = _cpus[i].loadNice;\n          cores[i].rawLoadIdle = _cpus[i].loadIdle;\n          cores[i].rawLoadIrq = _cpus[i].loadIrq;\n        }\n        let totalTick = totalUser + totalSystem + totalNice + totalIrq + totalIdle;\n        let totalLoad = totalUser + totalSystem + totalNice + totalIrq;\n        let currentTick = totalTick - _current_cpu.tick;\n        result = {\n          avgLoad: avgLoad,\n          currentLoad: (totalLoad - _current_cpu.load) / currentTick * 100,\n          currentLoadUser: (totalUser - _current_cpu.user) / currentTick * 100,\n          currentLoadSystem: (totalSystem - _current_cpu.system) / currentTick * 100,\n          currentLoadNice: (totalNice - _current_cpu.nice) / currentTick * 100,\n          currentLoadIdle: (totalIdle - _current_cpu.idle) / currentTick * 100,\n          currentLoadIrq: (totalIrq - _current_cpu.irq) / currentTick * 100,\n          rawCurrentLoad: (totalLoad - _current_cpu.load),\n          rawCurrentLoadUser: (totalUser - _current_cpu.user),\n          rawCurrentLoadSystem: (totalSystem - _current_cpu.system),\n          rawCurrentLoadNice: (totalNice - _current_cpu.nice),\n          rawCurrentLoadIdle: (totalIdle - _current_cpu.idle),\n          rawCurrentLoadIrq: (totalIrq - _current_cpu.irq),\n          cpus: cores\n        };\n        _current_cpu = {\n          user: totalUser,\n          nice: totalNice,\n          system: totalSystem,\n          idle: totalIdle,\n          irq: totalIrq,\n          tick: totalTick,\n          load: totalLoad,\n          ms: _current_cpu.ms,\n          currentLoad: result.currentLoad,\n          currentLoadUser: result.currentLoadUser,\n          currentLoadSystem: result.currentLoadSystem,\n          currentLoadNice: result.currentLoadNice,\n          currentLoadIdle: result.currentLoadIdle,\n          currentLoadIrq: result.currentLoadIrq,\n          rawCurrentLoad: result.rawCurrentLoad,\n          rawCurrentLoadUser: result.rawCurrentLoadUser,\n          rawCurrentLoadSystem: result.rawCurrentLoadSystem,\n          rawCurrentLoadNice: result.rawCurrentLoadNice,\n          rawCurrentLoadIdle: result.rawCurrentLoadIdle,\n          rawCurrentLoadIrq: result.rawCurrentLoadIrq,\n        };\n      } else {\n        let cores = [];\n        for (let i = 0; i < _corecount; i++) {\n          cores[i] = {};\n          cores[i].load = _cpus[i].load / _cpus[i].currentTick * 100;\n          cores[i].loadUser = _cpus[i].loadUser / _cpus[i].currentTick * 100;\n          cores[i].loadSystem = _cpus[i].loadSystem / _cpus[i].currentTick * 100;\n          cores[i].loadNice = _cpus[i].loadNice / _cpus[i].currentTick * 100;\n          cores[i].loadIdle = _cpus[i].loadIdle / _cpus[i].currentTick * 100;\n          cores[i].loadIrq = _cpus[i].loadIrq / _cpus[i].currentTick * 100;\n          cores[i].rawLoad = _cpus[i].load;\n          cores[i].rawLoadUser = _cpus[i].loadUser;\n          cores[i].rawLoadSystem = _cpus[i].loadSystem;\n          cores[i].rawLoadNice = _cpus[i].loadNice;\n          cores[i].rawLoadIdle = _cpus[i].loadIdle;\n          cores[i].rawLoadIrq = _cpus[i].loadIrq;\n        }\n        result = {\n          avgLoad: avgLoad,\n          currentLoad: _current_cpu.currentLoad,\n          currentLoadUser: _current_cpu.currentLoadUser,\n          currentLoadSystem: _current_cpu.currentLoadSystem,\n          currentLoadNice: _current_cpu.currentLoadNice,\n          currentLoadIdle: _current_cpu.currentLoadIdle,\n          currentLoadIrq: _current_cpu.currentLoadIrq,\n          rawCurrentLoad: _current_cpu.rawCurrentLoad,\n          rawCurrentLoadUser: _current_cpu.rawCurrentLoadUser,\n          rawCurrentLoadSystem: _current_cpu.rawCurrentLoadSystem,\n          rawCurrentLoadNice: _current_cpu.rawCurrentLoadNice,\n          rawCurrentLoadIdle: _current_cpu.rawCurrentLoadIdle,\n          rawCurrentLoadIrq: _current_cpu.rawCurrentLoadIrq,\n          cpus: cores\n        };\n      }\n      resolve(result);\n    });\n  });\n}\n\nfunction currentLoad(callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      getLoad().then(result => {\n        if (callback) { callback(result); }\n        resolve(result);\n      });\n    });\n  });\n}\n\nexports.currentLoad = currentLoad;\n\n// --------------------------\n// PS - full load\n// since bootup\n\nfunction getFullLoad() {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n\n      const cpus = os.cpus();\n      let totalUser = 0;\n      let totalSystem = 0;\n      let totalNice = 0;\n      let totalIrq = 0;\n      let totalIdle = 0;\n\n      let result = 0;\n\n      if (cpus && cpus.length) {\n        for (let i = 0, len = cpus.length; i < len; i++) {\n          const cpu = cpus[i].times;\n          totalUser += cpu.user;\n          totalSystem += cpu.sys;\n          totalNice += cpu.nice;\n          totalIrq += cpu.irq;\n          totalIdle += cpu.idle;\n        }\n        let totalTicks = totalIdle + totalIrq + totalNice + totalSystem + totalUser;\n        result = (totalTicks - totalIdle) / totalTicks * 100.0;\n\n      } else {\n        result = 0;\n      }\n      resolve(result);\n    });\n  });\n}\n\nfunction fullLoad(callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      getFullLoad().then(result => {\n        if (callback) { callback(result); }\n        resolve(result);\n      });\n    });\n  });\n}\n\nexports.fullLoad = fullLoad;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/systeminformation/lib/cpu.js?")},"./node_modules/systeminformation/lib/docker.js":
/*!******************************************************!*\
  !*** ./node_modules/systeminformation/lib/docker.js ***!
  \******************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n// @ts-check\n// ==================================================================================\n// docker.js\n// ----------------------------------------------------------------------------------\n// Description:   System Information - library\n//                for Node.js\n// Copyright:     (c) 2014 - 2022\n// Author:        Sebastian Hildebrandt\n// ----------------------------------------------------------------------------------\n// License:       MIT\n// ==================================================================================\n// 13. Docker\n// ----------------------------------------------------------------------------------\n\nconst util = __webpack_require__(/*! ./util */ \"./node_modules/systeminformation/lib/util.js\");\nconst DockerSocket = __webpack_require__(/*! ./dockerSocket */ \"./node_modules/systeminformation/lib/dockerSocket.js\");\n\nlet _platform = process.platform;\nconst _windows = (_platform === 'win32');\n\nlet _docker_container_stats = {};\nlet _docker_socket;\nlet _docker_last_read = 0;\n\n\n// --------------------------\n// get containers (parameter all: get also inactive/exited containers)\n\nfunction dockerInfo(callback) {\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      if (!_docker_socket) {\n        _docker_socket = new DockerSocket();\n      }\n      const result = {};\n\n      _docker_socket.getInfo(data => {\n        result.id = data.ID;\n        result.containers = data.Containers;\n        result.containersRunning = data.ContainersRunning;\n        result.containersPaused = data.ContainersPaused;\n        result.containersStopped = data.ContainersStopped;\n        result.images = data.Images;\n        result.driver = data.Driver;\n        result.memoryLimit = data.MemoryLimit;\n        result.swapLimit = data.SwapLimit;\n        result.kernelMemory = data.KernelMemory;\n        result.cpuCfsPeriod = data.CpuCfsPeriod;\n        result.cpuCfsQuota = data.CpuCfsQuota;\n        result.cpuShares = data.CPUShares;\n        result.cpuSet = data.CPUSet;\n        result.ipv4Forwarding = data.IPv4Forwarding;\n        result.bridgeNfIptables = data.BridgeNfIptables;\n        result.bridgeNfIp6tables = data.BridgeNfIp6tables;\n        result.debug = data.Debug;\n        result.nfd = data.NFd;\n        result.oomKillDisable = data.OomKillDisable;\n        result.ngoroutines = data.NGoroutines;\n        result.systemTime = data.SystemTime;\n        result.loggingDriver = data.LoggingDriver;\n        result.cgroupDriver = data.CgroupDriver;\n        result.nEventsListener = data.NEventsListener;\n        result.kernelVersion = data.KernelVersion;\n        result.operatingSystem = data.OperatingSystem;\n        result.osType = data.OSType;\n        result.architecture = data.Architecture;\n        result.ncpu = data.NCPU;\n        result.memTotal = data.MemTotal;\n        result.dockerRootDir = data.DockerRootDir;\n        result.httpProxy = data.HttpProxy;\n        result.httpsProxy = data.HttpsProxy;\n        result.noProxy = data.NoProxy;\n        result.name = data.Name;\n        result.labels = data.Labels;\n        result.experimentalBuild = data.ExperimentalBuild;\n        result.serverVersion = data.ServerVersion;\n        result.clusterStore = data.ClusterStore;\n        result.clusterAdvertise = data.ClusterAdvertise;\n        result.defaultRuntime = data.DefaultRuntime;\n        result.liveRestoreEnabled = data.LiveRestoreEnabled;\n        result.isolation = data.Isolation;\n        result.initBinary = data.InitBinary;\n        result.productLicense = data.ProductLicense;\n        if (callback) { callback(result); }\n        resolve(result);\n      });\n    });\n  });\n}\n\nexports.dockerInfo = dockerInfo;\n\nfunction dockerImages(all, callback) {\n\n  // fallback - if only callback is given\n  if (util.isFunction(all) && !callback) {\n    callback = all;\n    all = false;\n  }\n  if (typeof all === 'string' && all === 'true') {\n    all = true;\n  }\n  if (typeof all !== 'boolean' && all !== undefined) {\n    all = false;\n  }\n\n  all = all || false;\n  let result = [];\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      if (!_docker_socket) {\n        _docker_socket = new DockerSocket();\n      }\n      const workload = [];\n\n      _docker_socket.listImages(all, data => {\n        let dockerImages = {};\n        try {\n          dockerImages = data;\n          if (dockerImages && Object.prototype.toString.call(dockerImages) === '[object Array]' && dockerImages.length > 0) {\n\n            dockerImages.forEach(function (element) {\n\n              if (element.Names && Object.prototype.toString.call(element.Names) === '[object Array]' && element.Names.length > 0) {\n                element.Name = element.Names[0].replace(/^\\/|\\/$/g, '');\n              }\n              workload.push(dockerImagesInspect(element.Id.trim(), element));\n            });\n            if (workload.length) {\n              Promise.all(\n                workload\n              ).then(data => {\n                if (callback) { callback(data); }\n                resolve(data);\n              });\n            } else {\n              if (callback) { callback(result); }\n              resolve(result);\n            }\n          } else {\n            if (callback) { callback(result); }\n            resolve(result);\n          }\n        } catch (err) {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      });\n    });\n  });\n}\n\n// --------------------------\n// container inspect (for one container)\n\nfunction dockerImagesInspect(imageID, payload) {\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      imageID = imageID || '';\n      if (typeof imageID !== 'string') {\n        return resolve();\n      }\n      const imageIDSanitized = (util.isPrototypePolluted() ? '' : util.sanitizeShellString(imageID, true)).trim();\n      if (imageIDSanitized) {\n\n        if (!_docker_socket) {\n          _docker_socket = new DockerSocket();\n        }\n\n        _docker_socket.inspectImage(imageIDSanitized.trim(), data => {\n          try {\n            resolve({\n              id: payload.Id,\n              container: data.Container,\n              comment: data.Comment,\n              os: data.Os,\n              architecture: data.Architecture,\n              parent: data.Parent,\n              dockerVersion: data.DockerVersion,\n              size: data.Size,\n              sharedSize: payload.SharedSize,\n              virtualSize: data.VirtualSize,\n              author: data.Author,\n              created: data.Created ? Math.round(new Date(data.Created).getTime() / 1000) : 0,\n              containerConfig: data.ContainerConfig ? data.ContainerConfig : {},\n              graphDriver: data.GraphDriver ? data.GraphDriver : {},\n              repoDigests: data.RepoDigests ? data.RepoDigests : {},\n              repoTags: data.RepoTags ? data.RepoTags : {},\n              config: data.Config ? data.Config : {},\n              rootFS: data.RootFS ? data.RootFS : {},\n            });\n          } catch (err) {\n            resolve();\n          }\n        });\n      } else {\n        resolve();\n      }\n    });\n  });\n}\n\nexports.dockerImages = dockerImages;\n\nfunction dockerContainers(all, callback) {\n\n  function inContainers(containers, id) {\n    let filtered = containers.filter(obj => {\n      /**\n       * @namespace\n       * @property {string}  Id\n       */\n      return (obj.Id && (obj.Id === id));\n    });\n    return (filtered.length > 0);\n  }\n\n  // fallback - if only callback is given\n  if (util.isFunction(all) && !callback) {\n    callback = all;\n    all = false;\n  }\n  if (typeof all === 'string' && all === 'true') {\n    all = true;\n  }\n  if (typeof all !== 'boolean' && all !== undefined) {\n    all = false;\n  }\n\n  all = all || false;\n  let result = [];\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      if (!_docker_socket) {\n        _docker_socket = new DockerSocket();\n      }\n      const workload = [];\n\n      _docker_socket.listContainers(all, data => {\n        let docker_containers = {};\n        try {\n          docker_containers = data;\n          if (docker_containers && Object.prototype.toString.call(docker_containers) === '[object Array]' && docker_containers.length > 0) {\n            // GC in _docker_container_stats\n            for (let key in _docker_container_stats) {\n              if ({}.hasOwnProperty.call(_docker_container_stats, key)) {\n                if (!inContainers(docker_containers, key)) { delete _docker_container_stats[key]; }\n              }\n            }\n\n            docker_containers.forEach(function (element) {\n\n              if (element.Names && Object.prototype.toString.call(element.Names) === '[object Array]' && element.Names.length > 0) {\n                element.Name = element.Names[0].replace(/^\\/|\\/$/g, '');\n              }\n              workload.push(dockerContainerInspect(element.Id.trim(), element));\n              // result.push({\n              //   id: element.Id,\n              //   name: element.Name,\n              //   image: element.Image,\n              //   imageID: element.ImageID,\n              //   command: element.Command,\n              //   created: element.Created,\n              //   state: element.State,\n              //   ports: element.Ports,\n              //   mounts: element.Mounts,\n              //   // hostconfig: element.HostConfig,\n              //   // network: element.NetworkSettings\n              // });\n            });\n            if (workload.length) {\n              Promise.all(\n                workload\n              ).then(data => {\n                if (callback) { callback(data); }\n                resolve(data);\n              });\n            } else {\n              if (callback) { callback(result); }\n              resolve(result);\n            }\n          } else {\n            if (callback) { callback(result); }\n            resolve(result);\n          }\n        } catch (err) {\n          // GC in _docker_container_stats\n          for (let key in _docker_container_stats) {\n            if ({}.hasOwnProperty.call(_docker_container_stats, key)) {\n              if (!inContainers(docker_containers, key)) { delete _docker_container_stats[key]; }\n            }\n          }\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      });\n    });\n  });\n}\n\n// --------------------------\n// container inspect (for one container)\n\nfunction dockerContainerInspect(containerID, payload) {\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      containerID = containerID || '';\n      if (typeof containerID !== 'string') {\n        return resolve();\n      }\n      const containerIdSanitized = (util.isPrototypePolluted() ? '' : util.sanitizeShellString(containerID, true)).trim();\n      if (containerIdSanitized) {\n\n        if (!_docker_socket) {\n          _docker_socket = new DockerSocket();\n        }\n\n        _docker_socket.getInspect(containerIdSanitized.trim(), data => {\n          try {\n            resolve({\n              id: payload.Id,\n              name: payload.Name,\n              image: payload.Image,\n              imageID: payload.ImageID,\n              command: payload.Command,\n              created: payload.Created,\n              started: data.State && data.State.StartedAt ? Math.round(new Date(data.State.StartedAt).getTime() / 1000) : 0,\n              finished: data.State && data.State.FinishedAt && !data.State.FinishedAt.startsWith('0001-01-01') ? Math.round(new Date(data.State.FinishedAt).getTime() / 1000) : 0,\n              createdAt: data.Created ? data.Created : '',\n              startedAt: data.State && data.State.StartedAt ? data.State.StartedAt : '',\n              finishedAt: data.State && data.State.FinishedAt && !data.State.FinishedAt.startsWith('0001-01-01') ? data.State.FinishedAt : '',\n              state: payload.State,\n              restartCount: data.RestartCount || 0,\n              platform: data.Platform || '',\n              driver: data.Driver || '',\n              ports: payload.Ports,\n              mounts: payload.Mounts,\n              // hostconfig: payload.HostConfig,\n              // network: payload.NetworkSettings\n            });\n          } catch (err) {\n            resolve();\n          }\n        });\n      } else {\n        resolve();\n      }\n    });\n  });\n}\n\nexports.dockerContainers = dockerContainers;\n\n// --------------------------\n// helper functions for calculation of docker stats\n\nfunction docker_calcCPUPercent(cpu_stats, precpu_stats) {\n  /**\n   * @namespace\n   * @property {object}  cpu_usage\n   * @property {number}  cpu_usage.total_usage\n   * @property {number}  system_cpu_usage\n   * @property {object}  cpu_usage\n   * @property {Array}  cpu_usage.percpu_usage\n   */\n\n  if (!_windows) {\n    let cpuPercent = 0.0;\n    // calculate the change for the cpu usage of the container in between readings\n    let cpuDelta = cpu_stats.cpu_usage.total_usage - precpu_stats.cpu_usage.total_usage;\n    // calculate the change for the entire system between readings\n    let systemDelta = cpu_stats.system_cpu_usage - precpu_stats.system_cpu_usage;\n\n    if (systemDelta > 0.0 && cpuDelta > 0.0) {\n      // calculate the change for the cpu usage of the container in between readings\n      cpuPercent = (cpuDelta / systemDelta) * cpu_stats.cpu_usage.percpu_usage.length * 100.0;\n    }\n\n    return cpuPercent;\n  } else {\n    let nanoSecNow = util.nanoSeconds();\n    let cpuPercent = 0.0;\n    if (_docker_last_read > 0) {\n      let possIntervals = (nanoSecNow - _docker_last_read); //  / 100 * os.cpus().length;\n      let intervalsUsed = cpu_stats.cpu_usage.total_usage - precpu_stats.cpu_usage.total_usage;\n      if (possIntervals > 0) {\n        cpuPercent = 100.0 * intervalsUsed / possIntervals;\n      }\n    }\n    _docker_last_read = nanoSecNow;\n    return cpuPercent;\n  }\n}\n\nfunction docker_calcNetworkIO(networks) {\n  let rx;\n  let wx;\n  for (let key in networks) {\n    // skip loop if the property is from prototype\n    if (!{}.hasOwnProperty.call(networks, key)) { continue; }\n\n    /**\n     * @namespace\n     * @property {number}  rx_bytes\n     * @property {number}  tx_bytes\n     */\n    let obj = networks[key];\n    rx = +obj.rx_bytes;\n    wx = +obj.tx_bytes;\n  }\n  return {\n    rx,\n    wx\n  };\n}\n\nfunction docker_calcBlockIO(blkio_stats) {\n  let result = {\n    r: 0,\n    w: 0\n  };\n\n  /**\n   * @namespace\n   * @property {Array}  io_service_bytes_recursive\n   */\n  if (blkio_stats && blkio_stats.io_service_bytes_recursive && Object.prototype.toString.call(blkio_stats.io_service_bytes_recursive) === '[object Array]' && blkio_stats.io_service_bytes_recursive.length > 0) {\n    blkio_stats.io_service_bytes_recursive.forEach(function (element) {\n      /**\n       * @namespace\n       * @property {string}  op\n       * @property {number}  value\n       */\n\n      if (element.op && element.op.toLowerCase() === 'read' && element.value) {\n        result.r += element.value;\n      }\n      if (element.op && element.op.toLowerCase() === 'write' && element.value) {\n        result.w += element.value;\n      }\n    });\n  }\n  return result;\n}\n\nfunction dockerContainerStats(containerIDs, callback) {\n\n  let containerArray = [];\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n\n      // fallback - if only callback is given\n      if (util.isFunction(containerIDs) && !callback) {\n        callback = containerIDs;\n        containerArray = ['*'];\n      } else {\n        containerIDs = containerIDs || '*';\n        if (typeof containerIDs !== 'string') {\n          if (callback) { callback([]); }\n          return resolve([]);\n        }\n        let containerIDsSanitized = '';\n        containerIDsSanitized.__proto__.toLowerCase = util.stringToLower;\n        containerIDsSanitized.__proto__.replace = util.stringReplace;\n        containerIDsSanitized.__proto__.trim = util.stringTrim;\n\n        containerIDsSanitized = containerIDs;\n        containerIDsSanitized = containerIDsSanitized.trim();\n        if (containerIDsSanitized !== '*') {\n          containerIDsSanitized = '';\n          const s = (util.isPrototypePolluted() ? '' : util.sanitizeShellString(containerIDs, true)).trim();\n          for (let i = 0; i <= util.mathMin(s.length, 2000); i++) {\n            if (!(s[i] === undefined)) {\n              s[i].__proto__.toLowerCase = util.stringToLower;\n              const sl = s[i].toLowerCase();\n              if (sl && sl[0] && !sl[1]) {\n                containerIDsSanitized = containerIDsSanitized + sl[0];\n              }\n            }\n          }\n        }\n\n        containerIDsSanitized = containerIDsSanitized.trim().toLowerCase().replace(/,+/g, '|');\n        containerArray = containerIDsSanitized.split('|');\n      }\n\n      const result = [];\n\n      const workload = [];\n      if (containerArray.length && containerArray[0].trim() === '*') {\n        containerArray = [];\n        dockerContainers().then(allContainers => {\n          for (let container of allContainers) {\n            containerArray.push(container.id);\n          }\n          if (containerArray.length) {\n            dockerContainerStats(containerArray.join(',')).then(result => {\n              if (callback) { callback(result); }\n              resolve(result);\n            });\n          } else {\n            if (callback) { callback(result); }\n            resolve(result);\n          }\n        });\n      } else {\n        for (let containerID of containerArray) {\n          workload.push(dockerContainerStatsSingle(containerID.trim()));\n        }\n        if (workload.length) {\n          Promise.all(\n            workload\n          ).then(data => {\n            if (callback) { callback(data); }\n            resolve(data);\n          });\n        } else {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      }\n    });\n  });\n}\n\n// --------------------------\n// container stats (for one container)\n\nfunction dockerContainerStatsSingle(containerID) {\n  containerID = containerID || '';\n  let result = {\n    id: containerID,\n    memUsage: 0,\n    memLimit: 0,\n    memPercent: 0,\n    cpuPercent: 0,\n    pids: 0,\n    netIO: {\n      rx: 0,\n      wx: 0\n    },\n    blockIO: {\n      r: 0,\n      w: 0\n    },\n    restartCount: 0,\n    cpuStats: {},\n    precpuStats: {},\n    memoryStats: {},\n    networks: {},\n  };\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      if (containerID) {\n\n        if (!_docker_socket) {\n          _docker_socket = new DockerSocket();\n        }\n\n        _docker_socket.getInspect(containerID, dataInspect => {\n          try {\n            _docker_socket.getStats(containerID, data => {\n              try {\n                let stats = data;\n\n                if (!stats.message) {\n                  result.memUsage = (stats.memory_stats && stats.memory_stats.usage ? stats.memory_stats.usage : 0);\n                  result.memLimit = (stats.memory_stats && stats.memory_stats.limit ? stats.memory_stats.limit : 0);\n                  result.memPercent = (stats.memory_stats && stats.memory_stats.usage && stats.memory_stats.limit ? stats.memory_stats.usage / stats.memory_stats.limit * 100.0 : 0);\n                  result.cpuPercent = (stats.cpu_stats && stats.precpu_stats ? docker_calcCPUPercent(stats.cpu_stats, stats.precpu_stats) : 0);\n                  result.pids = (stats.pids_stats && stats.pids_stats.current ? stats.pids_stats.current : 0);\n                  result.restartCount = (dataInspect.RestartCount ? dataInspect.RestartCount : 0);\n                  if (stats.networks) { result.netIO = docker_calcNetworkIO(stats.networks); }\n                  if (stats.blkio_stats) { result.blockIO = docker_calcBlockIO(stats.blkio_stats); }\n                  result.cpuStats = (stats.cpu_stats ? stats.cpu_stats : {});\n                  result.precpuStats = (stats.precpu_stats ? stats.precpu_stats : {});\n                  result.memoryStats = (stats.memory_stats ? stats.memory_stats : {});\n                  result.networks = (stats.networks ? stats.networks : {});\n                }\n              } catch (err) {\n                util.noop();\n              }\n              // }\n              resolve(result);\n            });\n          } catch (err) {\n            util.noop();\n          }\n        });\n      } else {\n        resolve(result);\n      }\n    });\n  });\n}\n\nexports.dockerContainerStats = dockerContainerStats;\n\n// --------------------------\n// container processes (for one container)\n\nfunction dockerContainerProcesses(containerID, callback) {\n  let result = [];\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      containerID = containerID || '';\n      if (typeof containerID !== 'string') {\n        return resolve(result);\n      }\n      const containerIdSanitized = (util.isPrototypePolluted() ? '' : util.sanitizeShellString(containerID, true)).trim();\n\n      if (containerIdSanitized) {\n\n        if (!_docker_socket) {\n          _docker_socket = new DockerSocket();\n        }\n\n        _docker_socket.getProcesses(containerIdSanitized, data => {\n          /**\n           * @namespace\n           * @property {Array}  Titles\n           * @property {Array}  Processes\n           **/\n          try {\n            if (data && data.Titles && data.Processes) {\n              let titles = data.Titles.map(function (value) {\n                return value.toUpperCase();\n              });\n              let pos_pid = titles.indexOf('PID');\n              let pos_ppid = titles.indexOf('PPID');\n              let pos_pgid = titles.indexOf('PGID');\n              let pos_vsz = titles.indexOf('VSZ');\n              let pos_time = titles.indexOf('TIME');\n              let pos_elapsed = titles.indexOf('ELAPSED');\n              let pos_ni = titles.indexOf('NI');\n              let pos_ruser = titles.indexOf('RUSER');\n              let pos_user = titles.indexOf('USER');\n              let pos_rgroup = titles.indexOf('RGROUP');\n              let pos_group = titles.indexOf('GROUP');\n              let pos_stat = titles.indexOf('STAT');\n              let pos_rss = titles.indexOf('RSS');\n              let pos_command = titles.indexOf('COMMAND');\n\n              data.Processes.forEach(process => {\n                result.push({\n                  pidHost: (pos_pid >= 0 ? process[pos_pid] : ''),\n                  ppid: (pos_ppid >= 0 ? process[pos_ppid] : ''),\n                  pgid: (pos_pgid >= 0 ? process[pos_pgid] : ''),\n                  user: (pos_user >= 0 ? process[pos_user] : ''),\n                  ruser: (pos_ruser >= 0 ? process[pos_ruser] : ''),\n                  group: (pos_group >= 0 ? process[pos_group] : ''),\n                  rgroup: (pos_rgroup >= 0 ? process[pos_rgroup] : ''),\n                  stat: (pos_stat >= 0 ? process[pos_stat] : ''),\n                  time: (pos_time >= 0 ? process[pos_time] : ''),\n                  elapsed: (pos_elapsed >= 0 ? process[pos_elapsed] : ''),\n                  nice: (pos_ni >= 0 ? process[pos_ni] : ''),\n                  rss: (pos_rss >= 0 ? process[pos_rss] : ''),\n                  vsz: (pos_vsz >= 0 ? process[pos_vsz] : ''),\n                  command: (pos_command >= 0 ? process[pos_command] : '')\n                });\n              });\n            }\n          } catch (err) {\n            util.noop();\n          }\n          if (callback) { callback(result); }\n          resolve(result);\n        });\n      } else {\n        if (callback) { callback(result); }\n        resolve(result);\n      }\n    });\n  });\n}\n\nexports.dockerContainerProcesses = dockerContainerProcesses;\n\nfunction dockerVolumes(callback) {\n\n  let result = [];\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      if (!_docker_socket) {\n        _docker_socket = new DockerSocket();\n      }\n      _docker_socket.listVolumes(data => {\n        let dockerVolumes = {};\n        try {\n          dockerVolumes = data;\n          if (dockerVolumes && dockerVolumes.Volumes && Object.prototype.toString.call(dockerVolumes.Volumes) === '[object Array]' && dockerVolumes.Volumes.length > 0) {\n\n            dockerVolumes.Volumes.forEach(function (element) {\n\n              result.push({\n                name: element.Name,\n                driver: element.Driver,\n                labels: element.Labels,\n                mountpoint: element.Mountpoint,\n                options: element.Options,\n                scope: element.Scope,\n                created: element.CreatedAt ? Math.round(new Date(element.CreatedAt).getTime() / 1000) : 0,\n              });\n            });\n            if (callback) { callback(result); }\n            resolve(result);\n          } else {\n            if (callback) { callback(result); }\n            resolve(result);\n          }\n        } catch (err) {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      });\n    });\n  });\n}\n\nexports.dockerVolumes = dockerVolumes;\nfunction dockerAll(callback) {\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      dockerContainers(true).then(result => {\n        if (result && Object.prototype.toString.call(result) === '[object Array]' && result.length > 0) {\n          let l = result.length;\n          result.forEach(function (element) {\n            dockerContainerStats(element.id).then(res => {\n              // include stats in array\n              element.memUsage = res[0].memUsage;\n              element.memLimit = res[0].memLimit;\n              element.memPercent = res[0].memPercent;\n              element.cpuPercent = res[0].cpuPercent;\n              element.pids = res[0].pids;\n              element.netIO = res[0].netIO;\n              element.blockIO = res[0].blockIO;\n              element.cpuStats = res[0].cpuStats;\n              element.precpuStats = res[0].precpuStats;\n              element.memoryStats = res[0].memoryStats;\n              element.networks = res[0].networks;\n\n              dockerContainerProcesses(element.id).then(processes => {\n                element.processes = processes;\n\n                l -= 1;\n                if (l === 0) {\n                  if (callback) { callback(result); }\n                  resolve(result);\n                }\n              });\n              // all done??\n            });\n          });\n        } else {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      });\n    });\n  });\n}\n\nexports.dockerAll = dockerAll;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/systeminformation/lib/docker.js?")},"./node_modules/systeminformation/lib/dockerSocket.js":
/*!************************************************************!*\
  !*** ./node_modules/systeminformation/lib/dockerSocket.js ***!
  \************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n// @ts-check\n// ==================================================================================\n// dockerSockets.js\n// ----------------------------------------------------------------------------------\n// Description:   System Information - library\n//                for Node.js\n// Copyright:     (c) 2014 - 2022\n// Author:        Sebastian Hildebrandt\n// ----------------------------------------------------------------------------------\n// License:       MIT\n// ==================================================================================\n// 13. DockerSockets\n// ----------------------------------------------------------------------------------\n\nconst net = __webpack_require__(/*! net */ \"net\");\nconst isWin = (__webpack_require__(/*! os */ \"os\").type)() === 'Windows_NT';\nconst socketPath = isWin ? '//./pipe/docker_engine' : '/var/run/docker.sock';\n\nclass DockerSocket {\n\n  getInfo(callback) {\n    try {\n\n      let socket = net.createConnection({ path: socketPath });\n      let alldata = '';\n      let data;\n\n      socket.on('connect', () => {\n        socket.write('GET http:/info HTTP/1.0\\r\\n\\r\\n');\n      });\n\n      socket.on('data', data => {\n        alldata = alldata + data.toString();\n      });\n\n      socket.on('error', () => {\n        socket = false;\n        callback({});\n      });\n\n      socket.on('end', () => {\n        let startbody = alldata.indexOf('\\r\\n\\r\\n');\n        alldata = alldata.substring(startbody + 4);\n        socket = false;\n        try {\n          data = JSON.parse(alldata);\n          callback(data);\n        } catch (err) {\n          callback({});\n        }\n      });\n    } catch (err) {\n      callback({});\n    }\n  }\n\n  listImages(all, callback) {\n    try {\n\n      let socket = net.createConnection({ path: socketPath });\n      let alldata = '';\n      let data;\n\n      socket.on('connect', () => {\n        socket.write('GET http:/images/json' + (all ? '?all=1' : '') + ' HTTP/1.0\\r\\n\\r\\n');\n      });\n\n      socket.on('data', data => {\n        alldata = alldata + data.toString();\n      });\n\n      socket.on('error', () => {\n        socket = false;\n        callback({});\n      });\n\n      socket.on('end', () => {\n        let startbody = alldata.indexOf('\\r\\n\\r\\n');\n        alldata = alldata.substring(startbody + 4);\n        socket = false;\n        try {\n          data = JSON.parse(alldata);\n          callback(data);\n        } catch (err) {\n          callback({});\n        }\n      });\n    } catch (err) {\n      callback({});\n    }\n  }\n\n  inspectImage(id, callback) {\n    id = id || '';\n    if (id) {\n      try {\n        let socket = net.createConnection({ path: socketPath });\n        let alldata = '';\n        let data;\n\n        socket.on('connect', () => {\n          socket.write('GET http:/images/' + id + '/json?stream=0 HTTP/1.0\\r\\n\\r\\n');\n        });\n\n        socket.on('data', data => {\n          alldata = alldata + data.toString();\n        });\n\n        socket.on('error', () => {\n          socket = false;\n          callback({});\n        });\n\n        socket.on('end', () => {\n          let startbody = alldata.indexOf('\\r\\n\\r\\n');\n          alldata = alldata.substring(startbody + 4);\n          socket = false;\n          try {\n            data = JSON.parse(alldata);\n            callback(data);\n          } catch (err) {\n            callback({});\n          }\n        });\n      } catch (err) {\n        callback({});\n      }\n    } else {\n      callback({});\n    }\n  }\n\n  listContainers(all, callback) {\n    try {\n\n      let socket = net.createConnection({ path: socketPath });\n      let alldata = '';\n      let data;\n\n      socket.on('connect', () => {\n        socket.write('GET http:/containers/json' + (all ? '?all=1' : '') + ' HTTP/1.0\\r\\n\\r\\n');\n      });\n\n      socket.on('data', data => {\n        alldata = alldata + data.toString();\n      });\n\n      socket.on('error', () => {\n        socket = false;\n        callback({});\n      });\n\n      socket.on('end', () => {\n        let startbody = alldata.indexOf('\\r\\n\\r\\n');\n        alldata = alldata.substring(startbody + 4);\n        socket = false;\n        try {\n          data = JSON.parse(alldata);\n          callback(data);\n        } catch (err) {\n          callback({});\n        }\n      });\n    } catch (err) {\n      callback({});\n    }\n  }\n\n  getStats(id, callback) {\n    id = id || '';\n    if (id) {\n      try {\n        let socket = net.createConnection({ path: socketPath });\n        let alldata = '';\n        let data;\n\n        socket.on('connect', () => {\n          socket.write('GET http:/containers/' + id + '/stats?stream=0 HTTP/1.0\\r\\n\\r\\n');\n        });\n\n        socket.on('data', data => {\n          alldata = alldata + data.toString();\n        });\n\n        socket.on('error', () => {\n          socket = false;\n          callback({});\n        });\n\n        socket.on('end', () => {\n          let startbody = alldata.indexOf('\\r\\n\\r\\n');\n          alldata = alldata.substring(startbody + 4);\n          socket = false;\n          try {\n            data = JSON.parse(alldata);\n            callback(data);\n          } catch (err) {\n            callback({});\n          }\n        });\n      } catch (err) {\n        callback({});\n      }\n    } else {\n      callback({});\n    }\n  }\n\n  getInspect(id, callback) {\n    id = id || '';\n    if (id) {\n      try {\n        let socket = net.createConnection({ path: socketPath });\n        let alldata = '';\n        let data;\n\n        socket.on('connect', () => {\n          socket.write('GET http:/containers/' + id + '/json?stream=0 HTTP/1.0\\r\\n\\r\\n');\n        });\n\n        socket.on('data', data => {\n          alldata = alldata + data.toString();\n        });\n\n        socket.on('error', () => {\n          socket = false;\n          callback({});\n        });\n\n        socket.on('end', () => {\n          let startbody = alldata.indexOf('\\r\\n\\r\\n');\n          alldata = alldata.substring(startbody + 4);\n          socket = false;\n          try {\n            data = JSON.parse(alldata);\n            callback(data);\n          } catch (err) {\n            callback({});\n          }\n        });\n      } catch (err) {\n        callback({});\n      }\n    } else {\n      callback({});\n    }\n  }\n\n  getProcesses(id, callback) {\n    id = id || '';\n    if (id) {\n      try {\n        let socket = net.createConnection({ path: socketPath });\n        let alldata = '';\n        let data;\n\n        socket.on('connect', () => {\n          socket.write('GET http:/containers/' + id + '/top?ps_args=-opid,ppid,pgid,vsz,time,etime,nice,ruser,user,rgroup,group,stat,rss,args HTTP/1.0\\r\\n\\r\\n');\n        });\n\n        socket.on('data', data => {\n          alldata = alldata + data.toString();\n        });\n\n        socket.on('error', () => {\n          socket = false;\n          callback({});\n        });\n\n        socket.on('end', () => {\n          let startbody = alldata.indexOf('\\r\\n\\r\\n');\n          alldata = alldata.substring(startbody + 4);\n          socket = false;\n          try {\n            data = JSON.parse(alldata);\n            callback(data);\n          } catch (err) {\n            callback({});\n          }\n        });\n      } catch (err) {\n        callback({});\n      }\n    } else {\n      callback({});\n    }\n  }\n\n  listVolumes(callback) {\n    try {\n\n      let socket = net.createConnection({ path: socketPath });\n      let alldata = '';\n      let data;\n\n      socket.on('connect', () => {\n        socket.write('GET http:/volumes HTTP/1.0\\r\\n\\r\\n');\n      });\n\n      socket.on('data', data => {\n        alldata = alldata + data.toString();\n      });\n\n      socket.on('error', () => {\n        socket = false;\n        callback({});\n      });\n\n      socket.on('end', () => {\n        let startbody = alldata.indexOf('\\r\\n\\r\\n');\n        alldata = alldata.substring(startbody + 4);\n        socket = false;\n        try {\n          data = JSON.parse(alldata);\n          callback(data);\n        } catch (err) {\n          callback({});\n        }\n      });\n    } catch (err) {\n      callback({});\n    }\n  }\n}\n\nmodule.exports = DockerSocket;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/systeminformation/lib/dockerSocket.js?")},"./node_modules/systeminformation/lib/filesystem.js":
/*!**********************************************************!*\
  !*** ./node_modules/systeminformation/lib/filesystem.js ***!
  \**********************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n// @ts-check\n// ==================================================================================\n// filesystem.js\n// ----------------------------------------------------------------------------------\n// Description:   System Information - library\n//                for Node.js\n// Copyright:     (c) 2014 - 2022\n// Author:        Sebastian Hildebrandt\n// ----------------------------------------------------------------------------------\n// License:       MIT\n// ==================================================================================\n// 8. File System\n// ----------------------------------------------------------------------------------\n\nconst util = __webpack_require__(/*! ./util */ \"./node_modules/systeminformation/lib/util.js\");\nconst fs = __webpack_require__(/*! fs */ \"fs\");\n\nconst exec = (__webpack_require__(/*! child_process */ \"child_process\").exec);\nconst execSync = (__webpack_require__(/*! child_process */ \"child_process\").execSync);\nconst execPromiseSave = util.promisifySave((__webpack_require__(/*! child_process */ \"child_process\").exec));\n\nlet _platform = process.platform;\n\nconst _linux = (_platform === 'linux' || _platform === 'android');\nconst _darwin = (_platform === 'darwin');\nconst _windows = (_platform === 'win32');\nconst _freebsd = (_platform === 'freebsd');\nconst _openbsd = (_platform === 'openbsd');\nconst _netbsd = (_platform === 'netbsd');\nconst _sunos = (_platform === 'sunos');\n\nlet _fs_speed = {};\nlet _disk_io = {};\n\n// --------------------------\n// FS - mounted file systems\n\nfunction fsSize(callback) {\n\n  let macOsDisks = [];\n\n  function getmacOsFsType(fs) {\n    if (!fs.startsWith('/')) { return 'NFS'; }\n    const parts = fs.split('/');\n    const fsShort = parts[parts.length - 1];\n    const macOsDisksSingle = macOsDisks.filter(item => item.indexOf(fsShort) >= 0);\n    if (macOsDisksSingle.length === 1 && macOsDisksSingle[0].indexOf('APFS') >= 0) { return 'APFS'; }\n    return 'HFS';\n  }\n\n  function isLinuxTmpFs(fs) {\n    const linuxTmpFileSystems = ['rootfs', 'unionfs', 'squashfs', 'cramfs', 'initrd', 'initramfs', 'devtmpfs', 'tmpfs', 'udev', 'devfs', 'specfs', 'type'];\n    return (linuxTmpFileSystems.includes(fs.toLowerCase()));\n  }\n\n  function parseDf(lines) {\n    let data = [];\n    lines.forEach(function (line) {\n      if (line !== '') {\n        line = line.replace(/ +/g, ' ').split(' ');\n        if (line && ((line[0].startsWith('/')) || (line[6] && line[6] === '/') || (line[0].indexOf('/') > 0) || (line[0].indexOf(':') === 1) || !_darwin && !isLinuxTmpFs(line[1]))) {\n          const fs = line[0];\n          const fsType = ((_linux || _freebsd || _openbsd || _netbsd) ? line[1] : getmacOsFsType(line[0]));\n          const size = parseInt(((_linux || _freebsd || _openbsd || _netbsd) ? line[2] : line[1])) * 1024;\n          const used = parseInt(((_linux || _freebsd || _openbsd || _netbsd) ? line[3] : line[2])) * 1024;\n          const available = parseInt(((_linux || _freebsd || _openbsd || _netbsd) ? line[4] : line[3])) * 1024;\n          const use = parseFloat((100.0 * (used / (used + available))).toFixed(2));\n          line.splice(0, (_linux || _freebsd || _openbsd || _netbsd) ? 6 : 5);\n          const mount = line.join(' ');\n          // const mount = line[line.length - 1];\n          if (!data.find(el => (el.fs === fs && el.type === fsType))) {\n            data.push({\n              fs,\n              type: fsType,\n              size,\n              used,\n              available,\n              use,\n              mount\n            });\n          }\n        }\n      }\n    });\n    return data;\n  }\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      let data = [];\n      if (_linux || _freebsd || _openbsd || _netbsd || _darwin) {\n        let cmd = '';\n        if (_darwin) {\n          cmd = 'df -kP';\n          try {\n            macOsDisks = execSync('diskutil list').toString().split('\\n').filter(line => {\n              return !line.startsWith('/') && line.indexOf(':') > 0;\n            });\n          } catch (e) {\n            macOsDisks = [];\n          }\n        }\n        if (_linux) { cmd = 'df -lkPTx squashfs'; } // cmd = 'df -lkPTx squashfs | grep  -E \"^/|^.\\\\:\"';\n        if (_freebsd || _openbsd || _netbsd) { cmd = 'df -lkPT'; }\n        exec(cmd, { maxBuffer: 1024 * 1024 }, function (error, stdout) {\n          if (!error) {\n            let lines = stdout.toString().split('\\n');\n            if (lines && lines[0] && lines[0].toLowerCase().startsWith('filesystem')) { lines.shift(); }\n            data = parseDf(lines);\n            if (callback) {\n              callback(data);\n            }\n            resolve(data);\n          } else {\n            exec('df -kPT', { maxBuffer: 1024 * 1024 }, function (error, stdout) {\n              if (!error) {\n                let lines = stdout.toString().split('\\n');\n                if (lines && lines[0] && lines[0].toLowerCase().startsWith('filesystem')) { lines.shift(); }\n                data = parseDf(lines);\n              }\n              if (callback) {\n                callback(data);\n              }\n              resolve(data);\n            });\n          }\n        });\n      }\n      if (_sunos) {\n        if (callback) { callback(data); }\n        resolve(data);\n      }\n      if (_windows) {\n        try {\n          // util.wmic('logicaldisk get Caption,FileSystem,FreeSpace,Size').then((stdout) => {\n          util.powerShell('Get-WmiObject Win32_logicaldisk | select Caption,FileSystem,FreeSpace,Size | fl').then((stdout, error) => {\n            if (!error) {\n              let devices = stdout.toString().split(/\\n\\s*\\n/);\n              devices.forEach(function (device) {\n                let lines = device.split('\\r\\n');\n                const size = util.toInt(util.getValue(lines, 'size', ':'));\n                const free = util.toInt(util.getValue(lines, 'freespace', ':'));\n                const caption = util.getValue(lines, 'caption', ':');\n                if (size) {\n                  data.push({\n                    fs: caption,\n                    type: util.getValue(lines, 'filesystem', ':'),\n                    size,\n                    used: size - free,\n                    available: free,\n                    use: parseFloat(((100.0 * (size - free)) / size).toFixed(2)),\n                    mount: caption\n                  });\n                }\n              });\n            }\n            if (callback) {\n              callback(data);\n            }\n            resolve(data);\n          });\n        } catch (e) {\n          if (callback) { callback(data); }\n          resolve(data);\n        }\n      }\n    });\n  });\n}\n\nexports.fsSize = fsSize;\n\n// --------------------------\n// FS - open files count\n\nfunction fsOpenFiles(callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      const result = {\n        max: null,\n        allocated: null,\n        available: null\n      };\n      if (_freebsd || _openbsd || _netbsd || _darwin) {\n        let cmd = 'sysctl -i kern.maxfiles kern.num_files kern.open_files';\n        exec(cmd, { maxBuffer: 1024 * 1024 }, function (error, stdout) {\n          if (!error) {\n            let lines = stdout.toString().split('\\n');\n            result.max = parseInt(util.getValue(lines, 'kern.maxfiles', ':'), 10);\n            result.allocated = parseInt(util.getValue(lines, 'kern.num_files', ':'), 10) || parseInt(util.getValue(lines, 'kern.open_files', ':'), 10);\n            result.available = result.max - result.allocated;\n          }\n          if (callback) {\n            callback(result);\n          }\n          resolve(result);\n        });\n      }\n      if (_linux) {\n        fs.readFile('/proc/sys/fs/file-nr', function (error, stdout) {\n          if (!error) {\n            let lines = stdout.toString().split('\\n');\n            if (lines[0]) {\n              const parts = lines[0].replace(/\\s+/g, ' ').split(' ');\n              if (parts.length === 3) {\n                result.allocated = parseInt(parts[0], 10);\n                result.available = parseInt(parts[1], 10);\n                result.max = parseInt(parts[2], 10);\n                if (!result.available) { result.available = result.max - result.allocated; }\n              }\n            }\n            if (callback) {\n              callback(result);\n            }\n            resolve(result);\n          } else {\n            fs.readFile('/proc/sys/fs/file-max', function (error, stdout) {\n              if (!error) {\n                let lines = stdout.toString().split('\\n');\n                if (lines[0]) {\n                  result.max = parseInt(lines[0], 10);\n                }\n              }\n              if (callback) {\n                callback(result);\n              }\n              resolve(result);\n            });\n          }\n        });\n      }\n      if (_sunos) {\n        if (callback) { callback(null); }\n        resolve(null);\n      }\n      if (_windows) {\n        if (callback) { callback(null); }\n        resolve(null);\n      }\n    });\n  });\n}\n\nexports.fsOpenFiles = fsOpenFiles;\n\n// --------------------------\n// disks\n\nfunction parseBytes(s) {\n  return parseInt(s.substr(s.indexOf(' (') + 2, s.indexOf(' Bytes)') - 10));\n}\n\nfunction parseDevices(lines) {\n  let devices = [];\n  let i = 0;\n  lines.forEach(line => {\n    if (line.length > 0) {\n      if (line[0] === '*') {\n        i++;\n      } else {\n        let parts = line.split(':');\n        if (parts.length > 1) {\n          if (!devices[i]) {\n            devices[i] = {\n              name: '',\n              identifier: '',\n              type: 'disk',\n              fsType: '',\n              mount: '',\n              size: 0,\n              physical: 'HDD',\n              uuid: '',\n              label: '',\n              model: '',\n              serial: '',\n              removable: false,\n              protocol: ''\n            };\n          }\n          parts[0] = parts[0].trim().toUpperCase().replace(/ +/g, '');\n          parts[1] = parts[1].trim();\n          if ('DEVICEIDENTIFIER' === parts[0]) { devices[i].identifier = parts[1]; }\n          if ('DEVICENODE' === parts[0]) { devices[i].name = parts[1]; }\n          if ('VOLUMENAME' === parts[0]) {\n            if (parts[1].indexOf('Not applicable') === -1) { devices[i].label = parts[1]; }\n          }\n          if ('PROTOCOL' === parts[0]) { devices[i].protocol = parts[1]; }\n          if ('DISKSIZE' === parts[0]) { devices[i].size = parseBytes(parts[1]); }\n          if ('FILESYSTEMPERSONALITY' === parts[0]) { devices[i].fsType = parts[1]; }\n          if ('MOUNTPOINT' === parts[0]) { devices[i].mount = parts[1]; }\n          if ('VOLUMEUUID' === parts[0]) { devices[i].uuid = parts[1]; }\n          if ('READ-ONLYMEDIA' === parts[0] && parts[1] === 'Yes') { devices[i].physical = 'CD/DVD'; }\n          if ('SOLIDSTATE' === parts[0] && parts[1] === 'Yes') { devices[i].physical = 'SSD'; }\n          if ('VIRTUAL' === parts[0]) { devices[i].type = 'virtual'; }\n          if ('REMOVABLEMEDIA' === parts[0]) { devices[i].removable = (parts[1] === 'Removable'); }\n          if ('PARTITIONTYPE' === parts[0]) { devices[i].type = 'part'; }\n          if ('DEVICE/MEDIANAME' === parts[0]) { devices[i].model = parts[1]; }\n        }\n      }\n    }\n  });\n  return devices;\n}\n\nfunction parseBlk(lines) {\n  let data = [];\n\n  lines.filter(line => line !== '').forEach((line) => {\n    try {\n      line = decodeURIComponent(line.replace(/\\\\x/g, '%'));\n      line = line.replace(/\\\\/g, '\\\\\\\\');\n      let disk = JSON.parse(line);\n      data.push({\n        'name': disk.name,\n        'type': disk.type,\n        'fsType': disk.fsType,\n        'mount': disk.mountpoint,\n        'size': parseInt(disk.size),\n        'physical': (disk.type === 'disk' ? (disk.rota === '0' ? 'SSD' : 'HDD') : (disk.type === 'rom' ? 'CD/DVD' : '')),\n        'uuid': disk.uuid,\n        'label': disk.label,\n        'model': disk.model,\n        'serial': disk.serial,\n        'removable': disk.rm === '1',\n        'protocol': disk.tran,\n        'group': disk.group,\n      });\n    } catch (e) {\n      util.noop();\n    }\n  });\n  data = util.unique(data);\n  data = util.sortByKey(data, ['type', 'name']);\n  return data;\n}\n\nfunction blkStdoutToObject(stdout) {\n  return stdout.toString()\n    .replace(/NAME=/g, '{\"name\":')\n    .replace(/FSTYPE=/g, ',\"fsType\":')\n    .replace(/TYPE=/g, ',\"type\":')\n    .replace(/SIZE=/g, ',\"size\":')\n    .replace(/MOUNTPOINT=/g, ',\"mountpoint\":')\n    .replace(/UUID=/g, ',\"uuid\":')\n    .replace(/ROTA=/g, ',\"rota\":')\n    .replace(/RO=/g, ',\"ro\":')\n    .replace(/RM=/g, ',\"rm\":')\n    .replace(/TRAN=/g, ',\"tran\":')\n    .replace(/SERIAL=/g, ',\"serial\":')\n    .replace(/LABEL=/g, ',\"label\":')\n    .replace(/MODEL=/g, ',\"model\":')\n    .replace(/OWNER=/g, ',\"owner\":')\n    .replace(/GROUP=/g, ',\"group\":')\n    .replace(/\\n/g, '}\\n');\n}\n\nfunction blockDevices(callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      let data = [];\n      if (_linux) {\n        // see https://wiki.ubuntuusers.de/lsblk/\n        // exec(\"lsblk -bo NAME,TYPE,SIZE,FSTYPE,MOUNTPOINT,UUID,ROTA,RO,TRAN,SERIAL,LABEL,MODEL,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,SCHED,RQ-SIZE,RA,WSAME\", function (error, stdout) {\n        exec('lsblk -bPo NAME,TYPE,SIZE,FSTYPE,MOUNTPOINT,UUID,ROTA,RO,RM,TRAN,SERIAL,LABEL,MODEL,OWNER 2>/dev/null', { maxBuffer: 1024 * 1024 }, function (error, stdout) {\n          if (!error) {\n            let lines = blkStdoutToObject(stdout).split('\\n');\n            data = parseBlk(lines);\n            if (callback) {\n              callback(data);\n            }\n            resolve(data);\n          } else {\n            exec('lsblk -bPo NAME,TYPE,SIZE,FSTYPE,MOUNTPOINT,UUID,ROTA,RO,RM,LABEL,MODEL,OWNER 2>/dev/null', { maxBuffer: 1024 * 1024 }, function (error, stdout) {\n              if (!error) {\n                let lines = blkStdoutToObject(stdout).split('\\n');\n                data = parseBlk(lines);\n              }\n              if (callback) {\n                callback(data);\n              }\n              resolve(data);\n            });\n          }\n        });\n      }\n      if (_darwin) {\n        exec('diskutil info -all', { maxBuffer: 1024 * 1024 }, function (error, stdout) {\n          if (!error) {\n            let lines = stdout.toString().split('\\n');\n            // parse lines into temp array of devices\n            data = parseDevices(lines);\n          }\n          if (callback) {\n            callback(data);\n          }\n          resolve(data);\n        });\n      }\n      if (_sunos) {\n        if (callback) { callback(data); }\n        resolve(data);\n      }\n      if (_windows) {\n        let drivetypes = ['Unknown', 'NoRoot', 'Removable', 'Local', 'Network', 'CD/DVD', 'RAM'];\n        try {\n          // util.wmic('logicaldisk get Caption,Description,DeviceID,DriveType,FileSystem,FreeSpace,Name,Size,VolumeName,VolumeSerialNumber /value').then((stdout, error) => {\n          // util.powerShell('Get-WmiObject Win32_logicaldisk | select Caption,DriveType,Name,FileSystem,Size,VolumeSerialNumber,VolumeName | fl').then((stdout, error) => {\n          util.powerShell('Get-CimInstance -ClassName Win32_LogicalDisk | select Caption,DriveType,Name,FileSystem,Size,VolumeSerialNumber,VolumeName | fl').then((stdout, error) => {\n            if (!error) {\n              let devices = stdout.toString().split(/\\n\\s*\\n/);\n              devices.forEach(function (device) {\n                let lines = device.split('\\r\\n');\n                let drivetype = util.getValue(lines, 'drivetype', ':');\n                if (drivetype) {\n                  data.push({\n                    name: util.getValue(lines, 'name', ':'),\n                    identifier: util.getValue(lines, 'caption', ':'),\n                    type: 'disk',\n                    fsType: util.getValue(lines, 'filesystem', ':').toLowerCase(),\n                    mount: util.getValue(lines, 'caption', ':'),\n                    size: util.getValue(lines, 'size', ':'),\n                    physical: (drivetype >= 0 && drivetype <= 6) ? drivetypes[drivetype] : drivetypes[0],\n                    uuid: util.getValue(lines, 'volumeserialnumber', ':'),\n                    label: util.getValue(lines, 'volumename', ':'),\n                    model: '',\n                    serial: util.getValue(lines, 'volumeserialnumber', ':'),\n                    removable: drivetype === '2',\n                    protocol: ''\n                  });\n                }\n              });\n            }\n            if (callback) {\n              callback(data);\n            }\n            resolve(data);\n          });\n        } catch (e) {\n          if (callback) { callback(data); }\n          resolve(data);\n        }\n      }\n      if (_freebsd || _openbsd || _netbsd) {\n        // will follow\n        if (callback) { callback(null); }\n        resolve(null);\n      }\n\n    });\n  });\n}\n\nexports.blockDevices = blockDevices;\n\n// --------------------------\n// FS - speed\n\nfunction calcFsSpeed(rx, wx) {\n  let result = {\n    rx: 0,\n    wx: 0,\n    tx: 0,\n    rx_sec: null,\n    wx_sec: null,\n    tx_sec: null,\n    ms: 0\n  };\n\n  if (_fs_speed && _fs_speed.ms) {\n    result.rx = rx;\n    result.wx = wx;\n    result.tx = result.rx + result.wx;\n    result.ms = Date.now() - _fs_speed.ms;\n    result.rx_sec = (result.rx - _fs_speed.bytes_read) / (result.ms / 1000);\n    result.wx_sec = (result.wx - _fs_speed.bytes_write) / (result.ms / 1000);\n    result.tx_sec = result.rx_sec + result.wx_sec;\n    _fs_speed.rx_sec = result.rx_sec;\n    _fs_speed.wx_sec = result.wx_sec;\n    _fs_speed.tx_sec = result.tx_sec;\n    _fs_speed.bytes_read = result.rx;\n    _fs_speed.bytes_write = result.wx;\n    _fs_speed.bytes_overall = result.rx + result.wx;\n    _fs_speed.ms = Date.now();\n    _fs_speed.last_ms = result.ms;\n  } else {\n    result.rx = rx;\n    result.wx = wx;\n    result.tx = result.rx + result.wx;\n    _fs_speed.rx_sec = null;\n    _fs_speed.wx_sec = null;\n    _fs_speed.tx_sec = null;\n    _fs_speed.bytes_read = result.rx;\n    _fs_speed.bytes_write = result.wx;\n    _fs_speed.bytes_overall = result.rx + result.wx;\n    _fs_speed.ms = Date.now();\n    _fs_speed.last_ms = 0;\n  }\n  return result;\n}\n\nfunction fsStats(callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      if (_windows || _freebsd || _openbsd || _netbsd || _sunos) {\n        return resolve(null);\n      }\n\n      let result = {\n        rx: 0,\n        wx: 0,\n        tx: 0,\n        rx_sec: null,\n        wx_sec: null,\n        tx_sec: null,\n        ms: 0\n      };\n\n      let rx = 0;\n      let wx = 0;\n      if ((_fs_speed && !_fs_speed.ms) || (_fs_speed && _fs_speed.ms && Date.now() - _fs_speed.ms >= 500)) {\n        if (_linux) {\n          // exec(\"df -k | grep /dev/\", function(error, stdout) {\n          exec('lsblk -r 2>/dev/null | grep /', { maxBuffer: 1024 * 1024 }, function (error, stdout) {\n            if (!error) {\n              let lines = stdout.toString().split('\\n');\n              let fs_filter = [];\n              lines.forEach(function (line) {\n                if (line !== '') {\n                  line = line.trim().split(' ');\n                  if (fs_filter.indexOf(line[0]) === -1) { fs_filter.push(line[0]); }\n                }\n              });\n\n              let output = fs_filter.join('|');\n              exec('cat /proc/diskstats | egrep \"' + output + '\"', { maxBuffer: 1024 * 1024 }, function (error, stdout) {\n                if (!error) {\n                  let lines = stdout.toString().split('\\n');\n                  lines.forEach(function (line) {\n                    line = line.trim();\n                    if (line !== '') {\n                      line = line.replace(/ +/g, ' ').split(' ');\n\n                      rx += parseInt(line[5]) * 512;\n                      wx += parseInt(line[9]) * 512;\n                    }\n                  });\n                  result = calcFsSpeed(rx, wx);\n                }\n                if (callback) {\n                  callback(result);\n                }\n                resolve(result);\n              });\n            } else {\n              if (callback) {\n                callback(result);\n              }\n              resolve(result);\n            }\n          });\n        }\n        if (_darwin) {\n          exec('ioreg -c IOBlockStorageDriver -k Statistics -r -w0 | sed -n \"/IOBlockStorageDriver/,/Statistics/p\" | grep \"Statistics\" | tr -cd \"01234567890,\\n\"', { maxBuffer: 1024 * 1024 }, function (error, stdout) {\n            if (!error) {\n              let lines = stdout.toString().split('\\n');\n              lines.forEach(function (line) {\n                line = line.trim();\n                if (line !== '') {\n                  line = line.split(',');\n\n                  rx += parseInt(line[2]);\n                  wx += parseInt(line[9]);\n                }\n              });\n              result = calcFsSpeed(rx, wx);\n            }\n            if (callback) {\n              callback(result);\n            }\n            resolve(result);\n          });\n        }\n      } else {\n        result.ms = _fs_speed.last_ms;\n        result.rx = _fs_speed.bytes_read;\n        result.wx = _fs_speed.bytes_write;\n        result.tx = _fs_speed.bytes_read + _fs_speed.bytes_write;\n        result.rx_sec = _fs_speed.rx_sec;\n        result.wx_sec = _fs_speed.wx_sec;\n        result.tx_sec = _fs_speed.tx_sec;\n        if (callback) {\n          callback(result);\n        }\n        resolve(result);\n      }\n    });\n  });\n}\n\nexports.fsStats = fsStats;\n\nfunction calcDiskIO(rIO, wIO, rWaitTime, wWaitTime, tWaitTime) {\n  let result = {\n    rIO: 0,\n    wIO: 0,\n    tIO: 0,\n    rIO_sec: null,\n    wIO_sec: null,\n    tIO_sec: null,\n    rWaitTime: 0,\n    wWaitTime: 0,\n    tWaitTime: 0,\n    rWaitPercent: null,\n    wWaitPercent: null,\n    tWaitPercent: null,\n    ms: 0\n  };\n  if (_disk_io && _disk_io.ms) {\n    result.rIO = rIO;\n    result.wIO = wIO;\n    result.tIO = rIO + wIO;\n    result.ms = Date.now() - _disk_io.ms;\n    result.rIO_sec = (result.rIO - _disk_io.rIO) / (result.ms / 1000);\n    result.wIO_sec = (result.wIO - _disk_io.wIO) / (result.ms / 1000);\n    result.tIO_sec = result.rIO_sec + result.wIO_sec;\n    result.rWaitTime = rWaitTime;\n    result.wWaitTime = wWaitTime;\n    result.tWaitTime = tWaitTime;\n    result.rWaitPercent = (result.rWaitTime - _disk_io.rWaitTime) * 100 / (result.ms);\n    result.wWaitPercent = (result.wWaitTime - _disk_io.wWaitTime) * 100 / (result.ms);\n    result.tWaitPercent = (result.tWaitTime - _disk_io.tWaitTime) * 100 / (result.ms);\n    _disk_io.rIO = rIO;\n    _disk_io.wIO = wIO;\n    _disk_io.rIO_sec = result.rIO_sec;\n    _disk_io.wIO_sec = result.wIO_sec;\n    _disk_io.tIO_sec = result.tIO_sec;\n    _disk_io.rWaitTime = rWaitTime;\n    _disk_io.wWaitTime = wWaitTime;\n    _disk_io.tWaitTime = tWaitTime;\n    _disk_io.rWaitPercent = result.rWaitPercent;\n    _disk_io.wWaitPercent = result.wWaitPercent;\n    _disk_io.tWaitPercent = result.tWaitPercent;\n    _disk_io.last_ms = result.ms;\n    _disk_io.ms = Date.now();\n  } else {\n    result.rIO = rIO;\n    result.wIO = wIO;\n    result.tIO = rIO + wIO;\n    result.rWaitTime = rWaitTime;\n    result.wWaitTime = wWaitTime;\n    result.tWaitTime = tWaitTime;\n    _disk_io.rIO = rIO;\n    _disk_io.wIO = wIO;\n    _disk_io.rIO_sec = null;\n    _disk_io.wIO_sec = null;\n    _disk_io.tIO_sec = null;\n    _disk_io.rWaitTime = rWaitTime;\n    _disk_io.wWaitTime = wWaitTime;\n    _disk_io.tWaitTime = tWaitTime;\n    _disk_io.rWaitPercent = null;\n    _disk_io.wWaitPercent = null;\n    _disk_io.tWaitPercent = null;\n    _disk_io.last_ms = 0;\n    _disk_io.ms = Date.now();\n  }\n  return result;\n}\n\nfunction disksIO(callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      if (_windows) {\n        return resolve(null);\n      }\n      if (_sunos) {\n        return resolve(null);\n      }\n\n      let result = {\n        rIO: 0,\n        wIO: 0,\n        tIO: 0,\n        rIO_sec: null,\n        wIO_sec: null,\n        tIO_sec: null,\n        rWaitTime: 0,\n        wWaitTime: 0,\n        tWaitTime: 0,\n        rWaitPercent: null,\n        wWaitPercent: null,\n        tWaitPercent: null,\n        ms: 0\n      };\n      let rIO = 0;\n      let wIO = 0;\n      let rWaitTime = 0;\n      let wWaitTime = 0;\n      let tWaitTime = 0;\n\n      if ((_disk_io && !_disk_io.ms) || (_disk_io && _disk_io.ms && Date.now() - _disk_io.ms >= 500)) {\n        if (_linux || _freebsd || _openbsd || _netbsd) {\n          // prints Block layer statistics for all mounted volumes\n          // var cmd = \"for mount in `lsblk | grep / | sed -r 's/│ └─//' | cut -d ' ' -f 1`; do cat /sys/block/$mount/stat | sed -r 's/ +/;/g' | sed -r 's/^;//'; done\";\n          // var cmd = \"for mount in `lsblk | grep / | sed 's/[│└─├]//g' | awk '{$1=$1};1' | cut -d ' ' -f 1 | sort -u`; do cat /sys/block/$mount/stat | sed -r 's/ +/;/g' | sed -r 's/^;//'; done\";\n          let cmd = 'for mount in `lsblk 2>/dev/null | grep \" disk \" | sed \"s/[│└─├]//g\" | awk \\'{$1=$1};1\\' | cut -d \" \" -f 1 | sort -u`; do cat /sys/block/$mount/stat | sed -r \"s/ +/;/g\" | sed -r \"s/^;//\"; done';\n\n          exec(cmd, { maxBuffer: 1024 * 1024 }, function (error, stdout) {\n            if (!error) {\n              let lines = stdout.split('\\n');\n              lines.forEach(function (line) {\n                // ignore empty lines\n                if (!line) { return; }\n\n                // sum r/wIO of all disks to compute all disks IO\n                let stats = line.split(';');\n                rIO += parseInt(stats[0]);\n                wIO += parseInt(stats[4]);\n                rWaitTime += parseInt(stats[3]);\n                wWaitTime += parseInt(stats[7]);\n                tWaitTime += parseInt(stats[10]);\n              });\n              result = calcDiskIO(rIO, wIO, rWaitTime, wWaitTime, tWaitTime);\n\n              if (callback) {\n                callback(result);\n              }\n              resolve(result);\n            } else {\n              if (callback) {\n                callback(result);\n              }\n              resolve(result);\n            }\n          });\n        }\n        if (_darwin) {\n          exec('ioreg -c IOBlockStorageDriver -k Statistics -r -w0 | sed -n \"/IOBlockStorageDriver/,/Statistics/p\" | grep \"Statistics\" | tr -cd \"01234567890,\\n\"', { maxBuffer: 1024 * 1024 }, function (error, stdout) {\n            if (!error) {\n              let lines = stdout.toString().split('\\n');\n              lines.forEach(function (line) {\n                line = line.trim();\n                if (line !== '') {\n                  line = line.split(',');\n\n                  rIO += parseInt(line[10]);\n                  wIO += parseInt(line[0]);\n                }\n              });\n              result = calcDiskIO(rIO, wIO, rWaitTime, wWaitTime, tWaitTime);\n            }\n            if (callback) {\n              callback(result);\n            }\n            resolve(result);\n          });\n        }\n      } else {\n        result.rIO = _disk_io.rIO;\n        result.wIO = _disk_io.wIO;\n        result.tIO = _disk_io.rIO + _disk_io.wIO;\n        result.ms = _disk_io.last_ms;\n        result.rIO_sec = _disk_io.rIO_sec;\n        result.wIO_sec = _disk_io.wIO_sec;\n        result.tIO_sec = _disk_io.tIO_sec;\n        result.rWaitTime = _disk_io.rWaitTime;\n        result.wWaitTime = _disk_io.wWaitTime;\n        result.tWaitTime = _disk_io.tWaitTime;\n        result.rWaitPercent = _disk_io.rWaitPercent;\n        result.wWaitPercent = _disk_io.wWaitPercent;\n        result.tWaitPercent = _disk_io.tWaitPercent;\n        if (callback) {\n          callback(result);\n        }\n        resolve(result);\n      }\n    });\n  });\n}\n\nexports.disksIO = disksIO;\n\nfunction diskLayout(callback) {\n\n  function getVendorFromModel(model) {\n    const diskManufacturers = [\n      { pattern: 'WESTERN.*', manufacturer: 'Western Digital' },\n      { pattern: '^WDC.*', manufacturer: 'Western Digital' },\n      { pattern: 'WD.*', manufacturer: 'Western Digital' },\n      { pattern: 'TOSHIBA.*', manufacturer: 'Toshiba' },\n      { pattern: 'HITACHI.*', manufacturer: 'Hitachi' },\n      { pattern: '^IC.*', manufacturer: 'Hitachi' },\n      { pattern: '^HTS.*', manufacturer: 'Hitachi' },\n      { pattern: 'SANDISK.*', manufacturer: 'SanDisk' },\n      { pattern: 'KINGSTON.*', manufacturer: 'Kingston Technology' },\n      { pattern: '^SONY.*', manufacturer: 'Sony' },\n      { pattern: 'TRANSCEND.*', manufacturer: 'Transcend' },\n      { pattern: 'SAMSUNG.*', manufacturer: 'Samsung' },\n      { pattern: '^ST(?!I\\\\ ).*', manufacturer: 'Seagate' },\n      { pattern: '^STI\\\\ .*', manufacturer: 'SimpleTech' },\n      { pattern: '^D...-.*', manufacturer: 'IBM' },\n      { pattern: '^IBM.*', manufacturer: 'IBM' },\n      { pattern: '^FUJITSU.*', manufacturer: 'Fujitsu' },\n      { pattern: '^MP.*', manufacturer: 'Fujitsu' },\n      { pattern: '^MK.*', manufacturer: 'Toshiba' },\n      { pattern: 'MAXTO.*', manufacturer: 'Maxtor' },\n      { pattern: 'PIONEER.*', manufacturer: 'Pioneer' },\n      { pattern: 'PHILIPS.*', manufacturer: 'Philips' },\n      { pattern: 'QUANTUM.*', manufacturer: 'Quantum Technology' },\n      { pattern: 'FIREBALL.*', manufacturer: 'Quantum Technology' },\n      { pattern: '^VBOX.*', manufacturer: 'VirtualBox' },\n      { pattern: 'CORSAIR.*', manufacturer: 'Corsair Components' },\n      { pattern: 'CRUCIAL.*', manufacturer: 'Crucial' },\n      { pattern: 'ECM.*', manufacturer: 'ECM' },\n      { pattern: 'INTEL.*', manufacturer: 'INTEL' },\n      { pattern: 'EVO.*', manufacturer: 'Samsung' },\n      { pattern: 'APPLE.*', manufacturer: 'Apple' },\n    ];\n\n    let result = '';\n    if (model) {\n      model = model.toUpperCase();\n      diskManufacturers.forEach((manufacturer) => {\n        const re = RegExp(manufacturer.pattern);\n        if (re.test(model)) { result = manufacturer.manufacturer; }\n      });\n    }\n    return result;\n  }\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n\n      const commitResult = res => {\n        for (let i = 0; i < res.length; i++) {\n          delete res[i].BSDName;\n        }\n        if (callback) {\n          callback(res);\n        }\n        resolve(res);\n      };\n\n      let result = [];\n      let cmd = '';\n\n      if (_linux) {\n        let cmdFullSmart = '';\n\n        exec('export LC_ALL=C; lsblk -ablJO 2>/dev/null; unset LC_ALL', { maxBuffer: 1024 * 1024 }, function (error, stdout) {\n          if (!error) {\n            try {\n              const out = stdout.toString().trim();\n              let devices = [];\n              try {\n                const outJSON = JSON.parse(out);\n                if (outJSON && {}.hasOwnProperty.call(outJSON, 'blockdevices')) {\n                  devices = outJSON.blockdevices.filter(item => { return (item.type === 'disk') && item.size > 0 && (item.model !== null || (item.mountpoint === null && item.label === null && item.fstype === null && item.parttype === null && item.path && item.path.indexOf('/ram') !== 0 && item.path.indexOf('/loop') !== 0 && item['disc-max'] && item['disc-max'] !== 0)); });\n                }\n              } catch (e) {\n                // fallback to older version of lsblk\n                const out2 = execSync('export LC_ALL=C; lsblk -bPo NAME,TYPE,SIZE,FSTYPE,MOUNTPOINT,UUID,ROTA,RO,RM,LABEL,MODEL,OWNER,GROUP 2>/dev/null; unset LC_ALL').toString();\n                let lines = blkStdoutToObject(out2).split('\\n');\n                const data = parseBlk(lines);\n                devices = data.filter(item => { return (item.type === 'disk') && item.size > 0 && ((item.model !== null && item.model !== '') || (item.mount === '' && item.label === '' && item.fsType === '')); });\n              }\n              devices.forEach((device) => {\n                let mediumType = '';\n                const BSDName = '/dev/' + device.name;\n                const logical = device.name;\n                try {\n                  mediumType = execSync('cat /sys/block/' + logical + '/queue/rotational 2>/dev/null').toString().split('\\n')[0];\n                } catch (e) {\n                  util.noop();\n                }\n                let interfaceType = device.tran ? device.tran.toUpperCase().trim() : '';\n                if (interfaceType === 'NVME') {\n                  mediumType = '2';\n                  interfaceType = 'PCIe';\n                }\n                result.push({\n                  device: BSDName,\n                  type: (mediumType === '0' ? 'SSD' : (mediumType === '1' ? 'HD' : (mediumType === '2' ? 'NVMe' : (device.model && device.model.indexOf('SSD') > -1 ? 'SSD' : (device.model && device.model.indexOf('NVM') > -1 ? 'NVMe' : 'HD'))))),\n                  name: device.model || '',\n                  vendor: getVendorFromModel(device.model) || (device.vendor ? device.vendor.trim() : ''),\n                  size: device.size || 0,\n                  bytesPerSector: null,\n                  totalCylinders: null,\n                  totalHeads: null,\n                  totalSectors: null,\n                  totalTracks: null,\n                  tracksPerCylinder: null,\n                  sectorsPerTrack: null,\n                  firmwareRevision: device.rev ? device.rev.trim() : '',\n                  serialNum: device.serial ? device.serial.trim() : '',\n                  interfaceType: interfaceType,\n                  smartStatus: 'unknown',\n                  temperature: null,\n                  BSDName: BSDName\n                });\n                cmd += `printf \"\\n${BSDName}|\"; smartctl -H ${BSDName} | grep overall;`;\n                cmdFullSmart += `${cmdFullSmart ? 'printf \",\";' : ''}smartctl -a -j ${BSDName};`;\n              });\n            } catch (e) {\n              util.noop();\n            }\n          }\n          // check S.M.A.R.T. status\n          if (cmdFullSmart) {\n            exec(cmdFullSmart, { maxBuffer: 1024 * 1024 }, function (error, stdout) {\n              try {\n                const data = JSON.parse(`[${stdout}]`);\n                data.forEach(disk => {\n                  const diskBSDName = disk.smartctl.argv[disk.smartctl.argv.length - 1];\n\n                  for (let i = 0; i < result.length; i++) {\n                    if (result[i].BSDName === diskBSDName) {\n                      result[i].smartStatus = (disk.smart_status.passed ? 'Ok' : (disk.smart_status.passed === false ? 'Predicted Failure' : 'unknown'));\n                      if (disk.temperature && disk.temperature.current) {\n                        result[i].temperature = disk.temperature.current;\n                      }\n                      result[i].smartData = disk;\n                    }\n                  }\n                });\n                commitResult(result);\n              } catch (e) {\n                if (cmd) {\n                  cmd = cmd + 'printf \"\\n\"';\n                  exec(cmd, { maxBuffer: 1024 * 1024 }, function (error, stdout) {\n                    let lines = stdout.toString().split('\\n');\n                    lines.forEach(line => {\n                      if (line) {\n                        let parts = line.split('|');\n                        if (parts.length === 2) {\n                          let BSDName = parts[0];\n                          parts[1] = parts[1].trim();\n                          let parts2 = parts[1].split(':');\n                          if (parts2.length === 2) {\n                            parts2[1] = parts2[1].trim();\n                            let status = parts2[1].toLowerCase();\n                            for (let i = 0; i < result.length; i++) {\n                              if (result[i].BSDName === BSDName) {\n                                result[i].smartStatus = (status === 'passed' ? 'Ok' : (status === 'failed!' ? 'Predicted Failure' : 'unknown'));\n                              }\n                            }\n                          }\n                        }\n                      }\n                    });\n                    commitResult(result);\n                  });\n                } else {\n                  commitResult(result);\n                }\n              }\n            });\n          } else {\n            commitResult(result);\n          }\n        });\n      }\n      if (_freebsd || _openbsd || _netbsd) {\n        if (callback) { callback(result); }\n        resolve(result);\n      }\n      if (_sunos) {\n        if (callback) { callback(result); }\n        resolve(result);\n      }\n      if (_darwin) {\n        exec('system_profiler SPSerialATADataType SPNVMeDataType SPUSBDataType', { maxBuffer: 1024 * 1024 }, function (error, stdout) {\n          if (!error) {\n            // split by type:\n            let lines = stdout.toString().split('\\n');\n            let linesSATA = [];\n            let linesNVMe = [];\n            let linesUSB = [];\n            let dataType = 'SATA';\n            lines.forEach(line => {\n              if (line === 'NVMExpress:') { dataType = 'NVMe'; }\n              else if (line === 'USB:') { dataType = 'USB'; }\n              else if (line === 'SATA/SATA Express:') { dataType = 'SATA'; }\n              else if (dataType === 'SATA') { linesSATA.push(line); }\n              else if (dataType === 'NVMe') { linesNVMe.push(line); }\n              else if (dataType === 'USB') { linesUSB.push(line); }\n            });\n            try {\n              // Serial ATA Drives\n              let devices = linesSATA.join('\\n').split(' Physical Interconnect: ');\n              devices.shift();\n              devices.forEach(function (device) {\n                device = 'InterfaceType: ' + device;\n                let lines = device.split('\\n');\n                const mediumType = util.getValue(lines, 'Medium Type', ':', true).trim();\n                const sizeStr = util.getValue(lines, 'capacity', ':', true).trim();\n                const BSDName = util.getValue(lines, 'BSD Name', ':', true).trim();\n                if (sizeStr) {\n                  let sizeValue = 0;\n                  if (sizeStr.indexOf('(') >= 0) {\n                    sizeValue = parseInt(sizeStr.match(/\\(([^)]+)\\)/)[1].replace(/\\./g, '').replace(/,/g, '').replace(/\\s/g, ''));\n                  }\n                  if (!sizeValue) {\n                    sizeValue = parseInt(sizeStr);\n                  }\n                  if (sizeValue) {\n                    const smartStatusString = util.getValue(lines, 'S.M.A.R.T. status', ':', true).trim().toLowerCase();\n                    result.push({\n                      device: BSDName,\n                      type: mediumType.startsWith('Solid') ? 'SSD' : 'HD',\n                      name: util.getValue(lines, 'Model', ':', true).trim(),\n                      vendor: getVendorFromModel(util.getValue(lines, 'Model', ':', true).trim()) || util.getValue(lines, 'Manufacturer', ':', true),\n                      size: sizeValue,\n                      bytesPerSector: null,\n                      totalCylinders: null,\n                      totalHeads: null,\n                      totalSectors: null,\n                      totalTracks: null,\n                      tracksPerCylinder: null,\n                      sectorsPerTrack: null,\n                      firmwareRevision: util.getValue(lines, 'Revision', ':', true).trim(),\n                      serialNum: util.getValue(lines, 'Serial Number', ':', true).trim(),\n                      interfaceType: util.getValue(lines, 'InterfaceType', ':', true).trim(),\n                      smartStatus: smartStatusString === 'verified' ? 'OK' : smartStatusString || 'unknown',\n                      temperature: null,\n                      BSDName: BSDName\n                    });\n                    cmd = cmd + 'printf \"\\n' + BSDName + '|\"; diskutil info /dev/' + BSDName + ' | grep SMART;';\n                  }\n                }\n              });\n            } catch (e) {\n              util.noop();\n            }\n\n            // NVME Drives\n            try {\n              let devices = linesNVMe.join('\\n').split('\\n\\n          Capacity:');\n              devices.shift();\n              devices.forEach(function (device) {\n                device = '!Capacity: ' + device;\n                let lines = device.split('\\n');\n                const linkWidth = util.getValue(lines, 'link width', ':', true).trim();\n                const sizeStr = util.getValue(lines, '!capacity', ':', true).trim();\n                const BSDName = util.getValue(lines, 'BSD Name', ':', true).trim();\n                if (sizeStr) {\n                  let sizeValue = 0;\n                  if (sizeStr.indexOf('(') >= 0) {\n                    sizeValue = parseInt(sizeStr.match(/\\(([^)]+)\\)/)[1].replace(/\\./g, '').replace(/,/g, '').replace(/\\s/g, ''));\n                  }\n                  if (!sizeValue) {\n                    sizeValue = parseInt(sizeStr);\n                  }\n                  if (sizeValue) {\n                    const smartStatusString = util.getValue(lines, 'S.M.A.R.T. status', ':', true).trim().toLowerCase();\n                    result.push({\n                      device: BSDName,\n                      type: 'NVMe',\n                      name: util.getValue(lines, 'Model', ':', true).trim(),\n                      vendor: getVendorFromModel(util.getValue(lines, 'Model', ':', true).trim()),\n                      size: sizeValue,\n                      bytesPerSector: null,\n                      totalCylinders: null,\n                      totalHeads: null,\n                      totalSectors: null,\n                      totalTracks: null,\n                      tracksPerCylinder: null,\n                      sectorsPerTrack: null,\n                      firmwareRevision: util.getValue(lines, 'Revision', ':', true).trim(),\n                      serialNum: util.getValue(lines, 'Serial Number', ':', true).trim(),\n                      interfaceType: ('PCIe ' + linkWidth).trim(),\n                      smartStatus: smartStatusString === 'verified' ? 'OK' : smartStatusString || 'unknown',\n                      temperature: null,\n                      BSDName: BSDName\n                    });\n                    cmd = cmd + 'printf \"\\n' + BSDName + '|\"; diskutil info /dev/' + BSDName + ' | grep SMART;';\n                  }\n                }\n              });\n            } catch (e) {\n              util.noop();\n            }\n            // USB Drives\n            try {\n              let devices = linesUSB.join('\\n').replaceAll('Media:\\n ', 'Model:').split('\\n\\n          Product ID:');\n              devices.shift();\n              devices.forEach(function (device) {\n                let lines = device.split('\\n');\n                const sizeStr = util.getValue(lines, 'Capacity', ':', true).trim();\n                const BSDName = util.getValue(lines, 'BSD Name', ':', true).trim();\n                if (sizeStr) {\n                  let sizeValue = 0;\n                  if (sizeStr.indexOf('(') >= 0) {\n                    sizeValue = parseInt(sizeStr.match(/\\(([^)]+)\\)/)[1].replace(/\\./g, '').replace(/,/g, '').replace(/\\s/g, ''));\n                  }\n                  if (!sizeValue) {\n                    sizeValue = parseInt(sizeStr);\n                  }\n                  if (sizeValue) {\n                    const smartStatusString = util.getValue(lines, 'S.M.A.R.T. status', ':', true).trim().toLowerCase();\n                    result.push({\n                      device: BSDName,\n                      type: 'USB',\n                      name: util.getValue(lines, 'Model', ':', true).trim().replaceAll(':', ''),\n                      vendor: getVendorFromModel(util.getValue(lines, 'Model', ':', true).trim()),\n                      size: sizeValue,\n                      bytesPerSector: null,\n                      totalCylinders: null,\n                      totalHeads: null,\n                      totalSectors: null,\n                      totalTracks: null,\n                      tracksPerCylinder: null,\n                      sectorsPerTrack: null,\n                      firmwareRevision: util.getValue(lines, 'Revision', ':', true).trim(),\n                      serialNum: util.getValue(lines, 'Serial Number', ':', true).trim(),\n                      interfaceType: 'USB',\n                      smartStatus: smartStatusString === 'verified' ? 'OK' : smartStatusString || 'unknown',\n                      temperature: null,\n                      BSDName: BSDName\n                    });\n                    cmd = cmd + 'printf \"\\n' + BSDName + '|\"; diskutil info /dev/' + BSDName + ' | grep SMART;';\n                  }\n                }\n              });\n            } catch (e) {\n              util.noop();\n            }\n            if (cmd) {\n              cmd = cmd + 'printf \"\\n\"';\n              exec(cmd, { maxBuffer: 1024 * 1024 }, function (error, stdout) {\n                let lines = stdout.toString().split('\\n');\n                lines.forEach(line => {\n                  if (line) {\n                    let parts = line.split('|');\n                    if (parts.length === 2) {\n                      let BSDName = parts[0];\n                      parts[1] = parts[1].trim();\n                      let parts2 = parts[1].split(':');\n                      if (parts2.length === 2) {\n                        parts2[1] = parts2[1].trim();\n                        let status = parts2[1].toLowerCase();\n                        for (let i = 0; i < result.length; i++) {\n                          if (result[i].BSDName === BSDName) {\n                            result[i].smartStatus = (status === 'not supported' ? 'not supported' : (status === 'verified' ? 'Ok' : (status === 'failing' ? 'Predicted Failure' : 'unknown')));\n                          }\n                        }\n                      }\n                    }\n                  }\n                });\n                for (let i = 0; i < result.length; i++) {\n                  delete result[i].BSDName;\n                }\n                if (callback) {\n                  callback(result);\n                }\n                resolve(result);\n              });\n            } else {\n              for (let i = 0; i < result.length; i++) {\n                delete result[i].BSDName;\n              }\n              if (callback) {\n                callback(result);\n              }\n              resolve(result);\n            }\n          }\n        });\n      }\n      if (_windows) {\n        try {\n          const workload = [];\n          workload.push(util.powerShell('Get-WmiObject Win32_DiskDrive | select Caption,Size,Status,PNPDeviceId,BytesPerSector,TotalCylinders,TotalHeads,TotalSectors,TotalTracks,TracksPerCylinder,SectorsPerTrack,FirmwareRevision,SerialNumber,InterfaceType | fl'));\n          workload.push(util.powerShell('Get-PhysicalDisk | select BusType,MediaType,FriendlyName,Model,SerialNumber,Size | fl'));\n          if (util.smartMonToolsInstalled()) {\n            try {\n              const smartDev = JSON.parse(execSync('smartctl --scan -j'));\n              if (smartDev && smartDev.devices && smartDev.devices.length > 0) {\n                smartDev.devices.forEach((dev) => {\n                  workload.push(execPromiseSave(`smartctl -j -a ${dev.name}`, util.execOptsWin));\n                });\n              }\n            } catch (e) {\n              util.noop();\n            }\n          }\n          util.promiseAll(\n            workload\n          ).then(data => {\n            let devices = data.results[0].toString().split(/\\n\\s*\\n/);\n            devices.forEach(function (device) {\n              let lines = device.split('\\r\\n');\n              const size = util.getValue(lines, 'Size', ':').trim();\n              const status = util.getValue(lines, 'Status', ':').trim().toLowerCase();\n              if (size) {\n                result.push({\n                  device: util.getValue(lines, 'PNPDeviceId', ':'),\n                  type: device.indexOf('SSD') > -1 ? 'SSD' : 'HD',  // just a starting point ... better: MSFT_PhysicalDisk - Media Type ... see below\n                  name: util.getValue(lines, 'Caption', ':'),\n                  vendor: getVendorFromModel(util.getValue(lines, 'Caption', ':', true).trim()),\n                  size: parseInt(size),\n                  bytesPerSector: parseInt(util.getValue(lines, 'BytesPerSector', ':')),\n                  totalCylinders: parseInt(util.getValue(lines, 'TotalCylinders', ':')),\n                  totalHeads: parseInt(util.getValue(lines, 'TotalHeads', ':')),\n                  totalSectors: parseInt(util.getValue(lines, 'TotalSectors', ':')),\n                  totalTracks: parseInt(util.getValue(lines, 'TotalTracks', ':')),\n                  tracksPerCylinder: parseInt(util.getValue(lines, 'TracksPerCylinder', ':')),\n                  sectorsPerTrack: parseInt(util.getValue(lines, 'SectorsPerTrack', ':')),\n                  firmwareRevision: util.getValue(lines, 'FirmwareRevision', ':').trim(),\n                  serialNum: util.getValue(lines, 'SerialNumber', ':').trim(),\n                  interfaceType: util.getValue(lines, 'InterfaceType', ':').trim(),\n                  smartStatus: (status === 'ok' ? 'Ok' : (status === 'degraded' ? 'Degraded' : (status === 'pred fail' ? 'Predicted Failure' : 'Unknown'))),\n                  temperature: null,\n                });\n              }\n            });\n            devices = data.results[1].split(/\\n\\s*\\n/);\n            devices.forEach(function (device) {\n              let lines = device.split('\\r\\n');\n              const serialNum = util.getValue(lines, 'SerialNumber', ':').trim();\n              const name = util.getValue(lines, 'FriendlyName', ':').trim().replace('Msft ', 'Microsoft');\n              const size = util.getValue(lines, 'Size', ':').trim();\n              const model = util.getValue(lines, 'Model', ':').trim();\n              const interfaceType = util.getValue(lines, 'BusType', ':').trim();\n              let mediaType = util.getValue(lines, 'MediaType', ':').trim();\n              if (mediaType === '3' || mediaType === 'HDD') { mediaType = 'HD'; }\n              if (mediaType === '4') { mediaType = 'SSD'; }\n              if (mediaType === '5') { mediaType = 'SCM'; }\n              if (mediaType === 'Unspecified' && (model.toLowerCase().indexOf('virtual') > -1 || model.toLowerCase().indexOf('vbox') > -1)) { mediaType = 'Virtual'; }\n              if (size) {\n                let i = util.findObjectByKey(result, 'serialNum', serialNum);\n                if (i === -1 || serialNum === '') {\n                  i = util.findObjectByKey(result, 'name', name);\n                }\n                if (i != -1) {\n                  result[i].type = mediaType;\n                  result[i].interfaceType = interfaceType;\n                }\n              }\n            });\n            // S.M.A.R.T\n            data.results.shift();\n            data.results.shift();\n            if (data.results.length) {\n              data.results.forEach((smartStr) => {\n                try {\n                  const smartData = JSON.parse(smartStr);\n                  if (smartData.serial_number) {\n                    const serialNum = smartData.serial_number;\n                    let i = util.findObjectByKey(result, 'serialNum', serialNum);\n                    if (i != -1) {\n                      result[i].smartStatus = (smartData.smart_status && smartData.smart_status.passed ? 'Ok' : (smartData.smart_status && smartData.smart_status.passed === false ? 'Predicted Failure' : 'unknown'));\n                      if (smartData.temperature && smartData.temperature.current) {\n                        result[i].temperature = smartData.temperature.current;\n                      }\n                      result[i].smartData = smartData;\n                    }\n                  }\n                } catch (e) {\n                  util.noop();\n                }\n              });\n            }\n            if (callback) {\n              callback(result);\n            }\n            resolve(result);\n          });\n        } catch (e) {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      }\n    });\n  });\n}\n\nexports.diskLayout = diskLayout;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/systeminformation/lib/filesystem.js?")},"./node_modules/systeminformation/lib/graphics.js":
/*!********************************************************!*\
  !*** ./node_modules/systeminformation/lib/graphics.js ***!
  \********************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n// @ts-check\n// ==================================================================================\n// graphics.js\n// ----------------------------------------------------------------------------------\n// Description:   System Information - library\n//                for Node.js\n// Copyright:     (c) 2014 - 2022\n// Author:        Sebastian Hildebrandt\n// ----------------------------------------------------------------------------------\n// License:       MIT\n// ==================================================================================\n// 7. Graphics (controller, display)\n// ----------------------------------------------------------------------------------\n\nconst fs = __webpack_require__(/*! fs */ \"fs\");\nconst exec = (__webpack_require__(/*! child_process */ \"child_process\").exec);\nconst execSync = (__webpack_require__(/*! child_process */ \"child_process\").execSync);\nconst util = __webpack_require__(/*! ./util */ \"./node_modules/systeminformation/lib/util.js\");\n\nlet _platform = process.platform;\nlet _nvidiaSmiPath = '';\n\nconst _linux = (_platform === 'linux' || _platform === 'android');\nconst _darwin = (_platform === 'darwin');\nconst _windows = (_platform === 'win32');\nconst _freebsd = (_platform === 'freebsd');\nconst _openbsd = (_platform === 'openbsd');\nconst _netbsd = (_platform === 'netbsd');\nconst _sunos = (_platform === 'sunos');\n\nlet _resolutionX = 0;\nlet _resolutionY = 0;\nlet _pixelDepth = 0;\nlet _refreshRate = 0;\n\nconst videoTypes = {\n  '-2': 'UNINITIALIZED',\n  '-1': 'OTHER',\n  '0': 'HD15',\n  '1': 'SVIDEO',\n  '2': 'Composite video',\n  '3': 'Component video',\n  '4': 'DVI',\n  '5': 'HDMI',\n  '6': 'LVDS',\n  '8': 'D_JPN',\n  '9': 'SDI',\n  '10': 'DP',\n  '11': 'DP embedded',\n  '12': 'UDI',\n  '13': 'UDI embedded',\n  '14': 'SDTVDONGLE',\n  '15': 'MIRACAST',\n  '2147483648': 'INTERNAL'\n};\n\nfunction getVendorFromModel(model) {\n  const manufacturers = [\n    { pattern: '^LG.+', manufacturer: 'LG' },\n    { pattern: '^BENQ.+', manufacturer: 'BenQ' },\n    { pattern: '^ASUS.+', manufacturer: 'Asus' },\n    { pattern: '^DELL.+', manufacturer: 'Dell' },\n    { pattern: '^SAMSUNG.+', manufacturer: 'Samsung' },\n    { pattern: '^VIEWSON.+', manufacturer: 'ViewSonic' },\n    { pattern: '^SONY.+', manufacturer: 'Sony' },\n    { pattern: '^ACER.+', manufacturer: 'Acer' },\n    { pattern: '^AOC.+', manufacturer: 'AOC Monitors' },\n    { pattern: '^HP.+', manufacturer: 'HP' },\n    { pattern: '^EIZO.?', manufacturer: 'Eizo' },\n    { pattern: '^PHILIPS.?', manufacturer: 'Philips' },\n    { pattern: '^IIYAMA.?', manufacturer: 'Iiyama' },\n    { pattern: '^SHARP.?', manufacturer: 'Sharp' },\n    { pattern: '^NEC.?', manufacturer: 'NEC' },\n    { pattern: '^LENOVO.?', manufacturer: 'Lenovo' },\n    { pattern: 'COMPAQ.?', manufacturer: 'Compaq' },\n    { pattern: 'APPLE.?', manufacturer: 'Apple' },\n    { pattern: 'INTEL.?', manufacturer: 'Intel' },\n    { pattern: 'AMD.?', manufacturer: 'AMD' },\n    { pattern: 'NVIDIA.?', manufacturer: 'NVDIA' },\n  ];\n\n  let result = '';\n  if (model) {\n    model = model.toUpperCase();\n    manufacturers.forEach((manufacturer) => {\n      const re = RegExp(manufacturer.pattern);\n      if (re.test(model)) { result = manufacturer.manufacturer; }\n    });\n  }\n  return result;\n}\n\nfunction getVendorFromId(id) {\n  const vendors = {\n    '610': 'Apple',\n    '1e6d': 'LG',\n    '10ac': 'DELL',\n    '4dd9': 'Sony',\n    '38a3': 'NEC',\n  };\n  return vendors[id] || '';\n}\n\nfunction vendorToId(str) {\n  let result = '';\n  str = (str || '').toLowerCase();\n  if (str.indexOf('apple') >= 0) { result = '0x05ac'; }\n  else if (str.indexOf('nvidia') >= 0) { result = '0x10de'; }\n  else if (str.indexOf('intel') >= 0) { result = '0x8086'; }\n  else if (str.indexOf('ati') >= 0 || str.indexOf('amd') >= 0) { result = '0x1002'; }\n\n  return result;\n}\n\nfunction getMetalVersion(id) {\n  const families = {\n    'spdisplays_mtlgpufamilymac1': 'mac1',\n    'spdisplays_mtlgpufamilymac2': 'mac2',\n    'spdisplays_mtlgpufamilyapple1': 'apple1',\n    'spdisplays_mtlgpufamilyapple2': 'apple2',\n    'spdisplays_mtlgpufamilyapple3': 'apple3',\n    'spdisplays_mtlgpufamilyapple4': 'apple4',\n    'spdisplays_mtlgpufamilyapple5': 'apple5',\n    'spdisplays_mtlgpufamilyapple6': 'apple6',\n    'spdisplays_mtlgpufamilyapple7': 'apple7',\n    'spdisplays_metalfeaturesetfamily11': 'family1_v1',\n    'spdisplays_metalfeaturesetfamily12': 'family1_v2',\n    'spdisplays_metalfeaturesetfamily13': 'family1_v3',\n    'spdisplays_metalfeaturesetfamily14': 'family1_v4',\n    'spdisplays_metalfeaturesetfamily21': 'family2_v1'\n  };\n  return families[id] || '';\n}\n\nfunction graphics(callback) {\n\n  function parseLinesDarwin(graphicsArr) {\n    const res = {\n      controllers: [],\n      displays: []\n    };\n    try {\n      graphicsArr.forEach(function (item) {\n        // controllers\n        const bus = ((item.sppci_bus || '').indexOf('builtin') > -1 ? 'Built-In' : ((item.sppci_bus || '').indexOf('pcie') > -1 ? 'PCIe' : ''));\n        const vram = (parseInt((item.spdisplays_vram || ''), 10) || 0) * (((item.spdisplays_vram || '').indexOf('GB') > -1) ? 1024 : 1);\n        const vramDyn = (parseInt((item.spdisplays_vram_shared || ''), 10) || 0) * (((item.spdisplays_vram_shared || '').indexOf('GB') > -1) ? 1024 : 1);\n        let metalVersion = getMetalVersion(item.spdisplays_metal || item.spdisplays_metalfamily || '');\n        res.controllers.push({\n          vendor: getVendorFromModel(item.spdisplays_vendor || '') || item.spdisplays_vendor || '',\n          model: item.sppci_model || '',\n          bus,\n          vramDynamic: bus === 'Built-In',\n          vram: vram || vramDyn || null,\n          deviceId: item['spdisplays_device-id'] || '',\n          vendorId: item['spdisplays_vendor-id'] || vendorToId((item['spdisplays_vendor'] || '') + (item.sppci_model || '')),\n          external: (item.sppci_device_type === 'spdisplays_egpu'),\n          cores: item['sppci_cores'] || null,\n          metalVersion\n        });\n\n        // displays\n        if (item.spdisplays_ndrvs && item.spdisplays_ndrvs.length) {\n          item.spdisplays_ndrvs.forEach(function (displayItem) {\n            const connectionType = displayItem['spdisplays_connection_type'] || '';\n            const currentResolutionParts = (displayItem['_spdisplays_resolution'] || '').split('@');\n            const currentResolution = currentResolutionParts[0].split('x');\n            const pixelParts = (displayItem['_spdisplays_pixels'] || '').split('x');\n            const pixelDepthString = displayItem['spdisplays_depth'] || '';\n            const serial = displayItem['_spdisplays_display-serial-number'] || displayItem['_spdisplays_display-serial-number2'] || null;\n            res.displays.push({\n              vendor: getVendorFromId(displayItem['_spdisplays_display-vendor-id'] || '') || getVendorFromModel(displayItem['_name'] || ''),\n              vendorId: displayItem['_spdisplays_display-vendor-id'] || '',\n              model: displayItem['_name'] || '',\n              productionYear: displayItem['_spdisplays_display-year'] || null,\n              serial: serial !== '0' ? serial : null,\n              displayId: displayItem['_spdisplays_displayID'] || null,\n              main: displayItem['spdisplays_main'] ? displayItem['spdisplays_main'] === 'spdisplays_yes' : false,\n              builtin: (displayItem['spdisplays_display_type'] || '').indexOf('built-in') > -1,\n              connection: ((connectionType.indexOf('_internal') > -1) ? 'Internal' : ((connectionType.indexOf('_displayport') > -1) ? 'Display Port' : ((connectionType.indexOf('_hdmi') > -1) ? 'HDMI' : null))),\n              sizeX: null,\n              sizeY: null,\n              pixelDepth: (pixelDepthString === 'CGSThirtyBitColor' ? 30 : (pixelDepthString === 'CGSThirtytwoBitColor' ? 32 : (pixelDepthString === 'CGSTwentyfourBitColor' ? 24 : null))),\n              resolutionX: pixelParts.length > 1 ? parseInt(pixelParts[0], 10) : null,\n              resolutionY: pixelParts.length > 1 ? parseInt(pixelParts[1], 10) : null,\n              currentResX: currentResolution.length > 1 ? parseInt(currentResolution[0], 10) : null,\n              currentResY: currentResolution.length > 1 ? parseInt(currentResolution[1], 10) : null,\n              positionX: 0,\n              positionY: 0,\n              currentRefreshRate: currentResolutionParts.length > 1 ? parseInt(currentResolutionParts[1], 10) : null,\n\n            });\n          });\n        }\n      });\n      return res;\n    } catch (e) {\n      return res;\n    }\n  }\n\n  function parseLinesLinuxControllers(lines) {\n    let controllers = [];\n    let currentController = {\n      vendor: '',\n      model: '',\n      bus: '',\n      busAddress: '',\n      vram: null,\n      vramDynamic: false,\n      pciID: ''\n    };\n    let isGraphicsController = false;\n    // PCI bus IDs\n    let pciIDs = [];\n    try {\n      pciIDs = execSync('export LC_ALL=C; dmidecode -t 9 2>/dev/null; unset LC_ALL | grep \"Bus Address: \"').toString().split('\\n');\n      for (let i = 0; i < pciIDs.length; i++) {\n        pciIDs[i] = pciIDs[i].replace('Bus Address:', '').replace('0000:', '').trim();\n      }\n      pciIDs = pciIDs.filter(function (el) {\n        return el != null && el;\n      });\n    } catch (e) {\n      util.noop();\n    }\n    for (let i = 0; i < lines.length; i++) {\n      if ('' !== lines[i].trim()) {\n        if (' ' !== lines[i][0] && '\\t' !== lines[i][0]) {        // first line of new entry\n          let isExternal = (pciIDs.indexOf(lines[i].split(' ')[0]) >= 0);\n          let vgapos = lines[i].toLowerCase().indexOf(' vga ');\n          let _3dcontrollerpos = lines[i].toLowerCase().indexOf('3d controller');\n          if (vgapos !== -1 || _3dcontrollerpos !== -1) {         // VGA\n            if (_3dcontrollerpos !== -1 && vgapos === -1) {\n              vgapos = _3dcontrollerpos;\n            }\n            if (currentController.vendor || currentController.model || currentController.bus || currentController.vram !== null || currentController.vramDynamic) { // already a controller found\n              controllers.push(currentController);\n              currentController = {\n                vendor: '',\n                model: '',\n                bus: '',\n                busAddress: '',\n                vram: null,\n                vramDynamic: false,\n              };\n            }\n\n            const pciIDCandidate = lines[i].split(' ')[0];\n            if (/[\\da-fA-F]{2}:[\\da-fA-F]{2}\\.[\\da-fA-F]/.test(pciIDCandidate)) {\n              currentController.busAddress = pciIDCandidate;\n            }\n            isGraphicsController = true;\n            let endpos = lines[i].search(/\\[[0-9a-f]{4}:[0-9a-f]{4}]|$/);\n            let parts = lines[i].substr(vgapos, endpos - vgapos).split(':');\n            currentController.busAddress = lines[i].substr(0, vgapos).trim();\n            if (parts.length > 1) {\n              parts[1] = parts[1].trim();\n              if (parts[1].toLowerCase().indexOf('corporation') >= 0) {\n                currentController.vendor = parts[1].substr(0, parts[1].toLowerCase().indexOf('corporation') + 11).trim();\n                currentController.model = parts[1].substr(parts[1].toLowerCase().indexOf('corporation') + 11, 200).trim().split('(')[0];\n                currentController.bus = (pciIDs.length > 0 && isExternal) ? 'PCIe' : 'Onboard';\n                currentController.vram = null;\n                currentController.vramDynamic = false;\n              } else if (parts[1].toLowerCase().indexOf(' inc.') >= 0) {\n                if ((parts[1].match(new RegExp(']', 'g')) || []).length > 1) {\n                  currentController.vendor = parts[1].substr(0, parts[1].toLowerCase().indexOf(']') + 1).trim();\n                  currentController.model = parts[1].substr(parts[1].toLowerCase().indexOf(']') + 1, 200).trim().split('(')[0].trim();\n                } else {\n                  currentController.vendor = parts[1].substr(0, parts[1].toLowerCase().indexOf(' inc.') + 5).trim();\n                  currentController.model = parts[1].substr(parts[1].toLowerCase().indexOf(' inc.') + 5, 200).trim().split('(')[0].trim();\n                }\n                currentController.bus = (pciIDs.length > 0 && isExternal) ? 'PCIe' : 'Onboard';\n                currentController.vram = null;\n                currentController.vramDynamic = false;\n              } else if (parts[1].toLowerCase().indexOf(' ltd.') >= 0) {\n                if ((parts[1].match(new RegExp(']', 'g')) || []).length > 1) {\n                  currentController.vendor = parts[1].substr(0, parts[1].toLowerCase().indexOf(']') + 1).trim();\n                  currentController.model = parts[1].substr(parts[1].toLowerCase().indexOf(']') + 1, 200).trim().split('(')[0].trim();\n                } else {\n                  currentController.vendor = parts[1].substr(0, parts[1].toLowerCase().indexOf(' ltd.') + 5).trim();\n                  currentController.model = parts[1].substr(parts[1].toLowerCase().indexOf(' ltd.') + 5, 200).trim().split('(')[0].trim();\n                }\n              }\n            }\n\n          } else {\n            isGraphicsController = false;\n          }\n        }\n        if (isGraphicsController) { // within VGA details\n          let parts = lines[i].split(':');\n          if (parts.length > 1 && parts[0].replace(/ +/g, '').toLowerCase().indexOf('devicename') !== -1 && parts[1].toLowerCase().indexOf('onboard') !== -1) { currentController.bus = 'Onboard'; }\n          if (parts.length > 1 && parts[0].replace(/ +/g, '').toLowerCase().indexOf('region') !== -1 && parts[1].toLowerCase().indexOf('memory') !== -1) {\n            let memparts = parts[1].split('=');\n            if (memparts.length > 1) {\n              currentController.vram = parseInt(memparts[1]);\n            }\n          }\n        }\n      }\n    }\n    if (currentController.vendor || currentController.model || currentController.bus || currentController.busAddress || currentController.vram !== null || currentController.vramDynamic) { // already a controller found\n      controllers.push(currentController);\n    }\n    return (controllers);\n  }\n\n  function parseLinesLinuxClinfo(controllers, lines) {\n    const fieldPattern = /\\[([^\\]]+)\\]\\s+(\\w+)\\s+(.*)/;\n    const devices = lines.reduce((devices, line) => {\n      const field = fieldPattern.exec(line.trim());\n      if (field) {\n        if (!devices[field[1]]) {\n          devices[field[1]] = {};\n        }\n        devices[field[1]][field[2]] = field[3];\n      }\n      return devices;\n    }, {});\n    for (let deviceId in devices) {\n      const device = devices[deviceId];\n      if (device['CL_DEVICE_TYPE'] === 'CL_DEVICE_TYPE_GPU') {\n        let busAddress;\n        if (device['CL_DEVICE_TOPOLOGY_AMD']) {\n          const bdf = device['CL_DEVICE_TOPOLOGY_AMD'].match(/[a-zA-Z0-9]+:\\d+\\.\\d+/);\n          if (bdf) {\n            busAddress = bdf[0];\n          }\n        } else if (device['CL_DEVICE_PCI_BUS_ID_NV'] && device['CL_DEVICE_PCI_SLOT_ID_NV']) {\n          const bus = parseInt(device['CL_DEVICE_PCI_BUS_ID_NV']);\n          const slot = parseInt(device['CL_DEVICE_PCI_SLOT_ID_NV']);\n          if (!isNaN(bus) && !isNaN(slot)) {\n            const b = bus & 0xff;\n            const d = (slot >> 3) & 0xff;\n            const f = slot & 0x07;\n            busAddress = `${b.toString().padStart(2, '0')}:${d.toString().padStart(2, '0')}.${f}`;\n          }\n        }\n        if (busAddress) {\n          let controller = controllers.find(controller => controller.busAddress === busAddress);\n          if (!controller) {\n            controller = {\n              vendor: '',\n              model: '',\n              bus: '',\n              busAddress,\n              vram: null,\n              vramDynamic: false\n            };\n            controllers.push(controller);\n          }\n          controller.vendor = device['CL_DEVICE_VENDOR'];\n          if (device['CL_DEVICE_BOARD_NAME_AMD']) {\n            controller.model = device['CL_DEVICE_BOARD_NAME_AMD'];\n          } else {\n            controller.model = device['CL_DEVICE_NAME'];\n          }\n          const memory = parseInt(device['CL_DEVICE_GLOBAL_MEM_SIZE']);\n          if (!isNaN(memory)) {\n            controller.vram = Math.round(memory / 1024 / 1024);\n          }\n        }\n      }\n    }\n    return controllers;\n  }\n\n  function getNvidiaSmi() {\n    if (_nvidiaSmiPath) {\n      return _nvidiaSmiPath;\n    }\n\n    if (_windows) {\n      try {\n        const basePath = util.WINDIR + '\\\\System32\\\\DriverStore\\\\FileRepository';\n        // find all directories that have an nvidia-smi.exe file\n        const candidateDirs = fs.readdirSync(basePath).filter(dir => {\n          return fs.readdirSync([basePath, dir].join('/')).includes('nvidia-smi.exe');\n        });\n        // use the directory with the most recently created nvidia-smi.exe file\n        const targetDir = candidateDirs.reduce((prevDir, currentDir) => {\n          const previousNvidiaSmi = fs.statSync([basePath, prevDir, 'nvidia-smi.exe'].join('/'));\n          const currentNvidiaSmi = fs.statSync([basePath, currentDir, 'nvidia-smi.exe'].join('/'));\n          return (previousNvidiaSmi.ctimeMs > currentNvidiaSmi.ctimeMs) ? prevDir : currentDir;\n        });\n\n        if (targetDir) {\n          _nvidiaSmiPath = [basePath, targetDir, 'nvidia-smi.exe'].join('/');\n        }\n      } catch (e) {\n        util.noop();\n      }\n    } else if (_linux) {\n      _nvidiaSmiPath = 'nvidia-smi';\n    }\n    return _nvidiaSmiPath;\n  }\n\n  function nvidiaSmi(options) {\n    const nvidiaSmiExe = getNvidiaSmi();\n    options = options || util.execOptsWin;\n    if (nvidiaSmiExe) {\n      const nvidiaSmiOpts = '--query-gpu=driver_version,pci.sub_device_id,name,pci.bus_id,fan.speed,memory.total,memory.used,memory.free,utilization.gpu,utilization.memory,temperature.gpu,temperature.memory,power.draw,power.limit,clocks.gr,clocks.mem --format=csv,noheader,nounits';\n      const cmd = nvidiaSmiExe + ' ' + nvidiaSmiOpts + (_linux ? '  2>/dev/null' : '');\n      try {\n        const res = execSync(cmd, options).toString();\n        return res;\n      } catch (e) {\n        util.noop();\n      }\n    }\n    return '';\n  }\n\n  function nvidiaDevices() {\n\n    function safeParseNumber(value) {\n      if ([null, undefined].includes(value)) {\n        return value;\n      }\n      return parseFloat(value);\n    }\n\n    const stdout = nvidiaSmi();\n    if (!stdout) {\n      return [];\n    }\n\n    const gpus = stdout.split('\\n').filter(Boolean);\n    const results = gpus.map(gpu => {\n      const splittedData = gpu.split(', ').map(value => value.includes('N/A') ? undefined : value);\n      if (splittedData.length === 16) {\n        return {\n          driverVersion: splittedData[0],\n          subDeviceId: splittedData[1],\n          name: splittedData[2],\n          pciBus: splittedData[3],\n          fanSpeed: safeParseNumber(splittedData[4]),\n          memoryTotal: safeParseNumber(splittedData[5]),\n          memoryUsed: safeParseNumber(splittedData[6]),\n          memoryFree: safeParseNumber(splittedData[7]),\n          utilizationGpu: safeParseNumber(splittedData[8]),\n          utilizationMemory: safeParseNumber(splittedData[9]),\n          temperatureGpu: safeParseNumber(splittedData[10]),\n          temperatureMemory: safeParseNumber(splittedData[11]),\n          powerDraw: safeParseNumber(splittedData[12]),\n          powerLimit: safeParseNumber(splittedData[13]),\n          clockCore: safeParseNumber(splittedData[14]),\n          clockMemory: safeParseNumber(splittedData[15]),\n        };\n      }\n    });\n\n    return results;\n  }\n\n  function mergeControllerNvidia(controller, nvidia) {\n    if (nvidia.driverVersion) { controller.driverVersion = nvidia.driverVersion; }\n    if (nvidia.subDeviceId) { controller.subDeviceId = nvidia.subDeviceId; }\n    if (nvidia.name) { controller.name = nvidia.name; }\n    if (nvidia.pciBus) { controller.pciBus = nvidia.pciBus; }\n    if (nvidia.fanSpeed) { controller.fanSpeed = nvidia.fanSpeed; }\n    if (nvidia.memoryTotal) {\n      controller.memoryTotal = nvidia.memoryTotal;\n      controller.vram = nvidia.memoryTotal;\n      controller.vramDynamic = false;\n    }\n    if (nvidia.memoryUsed) { controller.memoryUsed = nvidia.memoryUsed; }\n    if (nvidia.memoryFree) { controller.memoryFree = nvidia.memoryFree; }\n    if (nvidia.utilizationGpu) { controller.utilizationGpu = nvidia.utilizationGpu; }\n    if (nvidia.utilizationMemory) { controller.utilizationMemory = nvidia.utilizationMemory; }\n    if (nvidia.temperatureGpu) { controller.temperatureGpu = nvidia.temperatureGpu; }\n    if (nvidia.temperatureMemory) { controller.temperatureMemory = nvidia.temperatureMemory; }\n    if (nvidia.powerDraw) { controller.powerDraw = nvidia.powerDraw; }\n    if (nvidia.powerLimit) { controller.powerLimit = nvidia.powerLimit; }\n    if (nvidia.clockCore) { controller.clockCore = nvidia.clockCore; }\n    if (nvidia.clockMemory) { controller.clockMemory = nvidia.clockMemory; }\n    return controller;\n  }\n\n  function parseLinesLinuxEdid(edid) {\n    // parsen EDID\n    // --\x3e model\n    // --\x3e resolutionx\n    // --\x3e resolutiony\n    // --\x3e builtin = false\n    // --\x3e pixeldepth (?)\n    // --\x3e sizex\n    // --\x3e sizey\n    let result = {\n      vendor: '',\n      model: '',\n      deviceName: '',\n      main: false,\n      builtin: false,\n      connection: '',\n      sizeX: null,\n      sizeY: null,\n      pixelDepth: null,\n      resolutionX: null,\n      resolutionY: null,\n      currentResX: null,\n      currentResY: null,\n      positionX: 0,\n      positionY: 0,\n      currentRefreshRate: null\n    };\n    // find first \"Detailed Timing Description\"\n    let start = 108;\n    if (edid.substr(start, 6) === '000000') {\n      start += 36;\n    }\n    if (edid.substr(start, 6) === '000000') {\n      start += 36;\n    }\n    if (edid.substr(start, 6) === '000000') {\n      start += 36;\n    }\n    if (edid.substr(start, 6) === '000000') {\n      start += 36;\n    }\n    result.resolutionX = parseInt('0x0' + edid.substr(start + 8, 1) + edid.substr(start + 4, 2));\n    result.resolutionY = parseInt('0x0' + edid.substr(start + 14, 1) + edid.substr(start + 10, 2));\n    result.sizeX = parseInt('0x0' + edid.substr(start + 28, 1) + edid.substr(start + 24, 2));\n    result.sizeY = parseInt('0x0' + edid.substr(start + 29, 1) + edid.substr(start + 26, 2));\n    // monitor name\n    start = edid.indexOf('000000fc00'); // find first \"Monitor Description Data\"\n    if (start >= 0) {\n      let model_raw = edid.substr(start + 10, 26);\n      if (model_raw.indexOf('0a') !== -1) {\n        model_raw = model_raw.substr(0, model_raw.indexOf('0a'));\n      }\n      try {\n        if (model_raw.length > 2) {\n          result.model = model_raw.match(/.{1,2}/g).map(function (v) {\n            return String.fromCharCode(parseInt(v, 16));\n          }).join('');\n        }\n      } catch (e) {\n        util.noop();\n      }\n    } else {\n      result.model = '';\n    }\n    return result;\n  }\n\n  function parseLinesLinuxDisplays(lines, depth) {\n    let displays = [];\n    let currentDisplay = {\n      vendor: '',\n      model: '',\n      deviceName: '',\n      main: false,\n      builtin: false,\n      connection: '',\n      sizeX: null,\n      sizeY: null,\n      pixelDepth: null,\n      resolutionX: null,\n      resolutionY: null,\n      currentResX: null,\n      currentResY: null,\n      positionX: 0,\n      positionY: 0,\n      currentRefreshRate: null\n    };\n    let is_edid = false;\n    let is_current = false;\n    let edid_raw = '';\n    let start = 0;\n    for (let i = 1; i < lines.length; i++) {        // start with second line\n      if ('' !== lines[i].trim()) {\n        if (' ' !== lines[i][0] && '\\t' !== lines[i][0] && lines[i].toLowerCase().indexOf(' connected ') !== -1) {        // first line of new entry\n          if (currentDisplay.model || currentDisplay.main || currentDisplay.builtin || currentDisplay.connection || currentDisplay.sizeX !== null || currentDisplay.pixelDepth !== null || currentDisplay.resolutionX !== null) {         // push last display to array\n            displays.push(currentDisplay);\n            currentDisplay = {\n              vendor: '',\n              model: '',\n              main: false,\n              builtin: false,\n              connection: '',\n              sizeX: null,\n              sizeY: null,\n              pixelDepth: null,\n              resolutionX: null,\n              resolutionY: null,\n              currentResX: null,\n              currentResY: null,\n              positionX: 0,\n              positionY: 0,\n              currentRefreshRate: null\n            };\n          }\n          let parts = lines[i].split(' ');\n          currentDisplay.connection = parts[0];\n          currentDisplay.main = lines[i].toLowerCase().indexOf(' primary ') >= 0;\n          currentDisplay.builtin = (parts[0].toLowerCase().indexOf('edp') >= 0);\n        }\n\n        // try to read EDID information\n        if (is_edid) {\n          if (lines[i].search(/\\S|$/) > start) {\n            edid_raw += lines[i].toLowerCase().trim();\n          } else {\n            // parsen EDID\n            let edid_decoded = parseLinesLinuxEdid(edid_raw);\n            currentDisplay.vendor = edid_decoded.vendor;\n            currentDisplay.model = edid_decoded.model;\n            currentDisplay.resolutionX = edid_decoded.resolutionX;\n            currentDisplay.resolutionY = edid_decoded.resolutionY;\n            currentDisplay.sizeX = edid_decoded.sizeX;\n            currentDisplay.sizeY = edid_decoded.sizeY;\n            currentDisplay.pixelDepth = depth;\n            is_edid = false;\n          }\n        }\n        if (lines[i].toLowerCase().indexOf('edid:') >= 0) {\n          is_edid = true;\n          start = lines[i].search(/\\S|$/);\n        }\n        if (lines[i].toLowerCase().indexOf('*current') >= 0) {\n          const parts1 = lines[i].split('(');\n          if (parts1 && parts1.length > 1 && parts1[0].indexOf('x') >= 0) {\n            const resParts = parts1[0].trim().split('x');\n            currentDisplay.currentResX = util.toInt(resParts[0]);\n            currentDisplay.currentResY = util.toInt(resParts[1]);\n          }\n          is_current = true;\n        }\n        if (is_current && lines[i].toLowerCase().indexOf('clock') >= 0 && lines[i].toLowerCase().indexOf('hz') >= 0 && lines[i].toLowerCase().indexOf('v: height') >= 0) {\n          const parts1 = lines[i].split('clock');\n          if (parts1 && parts1.length > 1 && parts1[1].toLowerCase().indexOf('hz') >= 0) {\n            currentDisplay.currentRefreshRate = util.toInt(parts1[1]);\n          }\n          is_current = false;\n        }\n      }\n    }\n\n    // pushen displays\n    if (currentDisplay.model || currentDisplay.main || currentDisplay.builtin || currentDisplay.connection || currentDisplay.sizeX !== null || currentDisplay.pixelDepth !== null || currentDisplay.resolutionX !== null) {  // still information there\n      displays.push(currentDisplay);\n    }\n    return displays;\n  }\n\n  // function starts here\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      let result = {\n        controllers: [],\n        displays: []\n      };\n      if (_darwin) {\n        let cmd = 'system_profiler -xml -detailLevel full SPDisplaysDataType';\n        exec(cmd, function (error, stdout) {\n          if (!error) {\n            try {\n              let output = stdout.toString();\n              result = parseLinesDarwin(util.plistParser(output)[0]._items);\n            } catch (e) {\n              util.noop();\n            }\n          }\n          if (callback) {\n            callback(result);\n          }\n          resolve(result);\n        });\n      }\n      if (_linux) {\n        // Raspberry: https://elinux.org/RPI_vcgencmd_usage\n        if (util.isRaspberry() && util.isRaspbian()) {\n          let cmd = 'fbset -s | grep \\'mode \"\\'; vcgencmd get_mem gpu; tvservice -s; tvservice -n;';\n          exec(cmd, function (error, stdout) {\n            let lines = stdout.toString().split('\\n');\n            if (lines.length > 3 && lines[0].indexOf('mode \"') >= -1 && lines[2].indexOf('0x12000a') > -1) {\n              const parts = lines[0].replace('mode', '').replace(/\"/g, '').trim().split('x');\n              if (parts.length === 2) {\n                result.displays.push({\n                  vendor: '',\n                  model: util.getValue(lines, 'device_name', '='),\n                  main: true,\n                  builtin: false,\n                  connection: 'HDMI',\n                  sizeX: null,\n                  sizeY: null,\n                  pixelDepth: null,\n                  resolutionX: parseInt(parts[0], 10),\n                  resolutionY: parseInt(parts[1], 10),\n                  currentResX: null,\n                  currentResY: null,\n                  positionX: 0,\n                  positionY: 0,\n                  currentRefreshRate: null\n                });\n              }\n            }\n            if (lines.length > 1 && stdout.toString().indexOf('gpu=') >= -1) {\n              result.controllers.push({\n                vendor: 'Broadcom',\n                model: 'VideoCore IV',\n                bus: '',\n                vram: util.getValue(lines, 'gpu', '=').replace('M', ''),\n                vramDynamic: true\n              });\n            }\n            if (callback) {\n              callback(result);\n            }\n            resolve(result);\n          });\n        } else {\n          let cmd = 'lspci -vvv  2>/dev/null';\n          exec(cmd, function (error, stdout) {\n            if (!error) {\n              let lines = stdout.toString().split('\\n');\n              result.controllers = parseLinesLinuxControllers(lines);\n              const nvidiaData = nvidiaDevices();\n              // needs to be rewritten ... using no spread operators\n              result.controllers = result.controllers.map((controller) => { // match by busAddress\n                return mergeControllerNvidia(controller, nvidiaData.find((contr) => contr.pciBus.toLowerCase().endsWith(controller.busAddress.toLowerCase())) || {});\n              });\n            }\n            let cmd = 'clinfo --raw';\n            exec(cmd, function (error, stdout) {\n              if (!error) {\n                let lines = stdout.toString().split('\\n');\n                result.controllers = parseLinesLinuxClinfo(result.controllers, lines);\n              }\n              let cmd = 'xdpyinfo 2>/dev/null | grep \\'depth of root window\\' | awk \\'{ print $5 }\\'';\n              exec(cmd, function (error, stdout) {\n                let depth = 0;\n                if (!error) {\n                  let lines = stdout.toString().split('\\n');\n                  depth = parseInt(lines[0]) || 0;\n                }\n                let cmd = 'xrandr --verbose 2>/dev/null';\n                exec(cmd, function (error, stdout) {\n                  if (!error) {\n                    let lines = stdout.toString().split('\\n');\n                    result.displays = parseLinesLinuxDisplays(lines, depth);\n                  }\n                  if (callback) {\n                    callback(result);\n                  }\n                  resolve(result);\n                });\n              });\n            });\n          });\n        }\n      }\n      if (_freebsd || _openbsd || _netbsd) {\n        if (callback) { callback(null); }\n        resolve(null);\n      }\n      if (_sunos) {\n        if (callback) { callback(null); }\n        resolve(null);\n      }\n      if (_windows) {\n\n        // https://blogs.technet.microsoft.com/heyscriptingguy/2013/10/03/use-powershell-to-discover-multi-monitor-information/\n        // https://devblogs.microsoft.com/scripting/use-powershell-to-discover-multi-monitor-information/\n        try {\n          const workload = [];\n          workload.push(util.powerShell('Get-WmiObject win32_VideoController | fl *'));\n          workload.push(util.powerShell('gp \"HKLM:\\\\SYSTEM\\\\ControlSet001\\\\Control\\\\Class\\\\{4d36e968-e325-11ce-bfc1-08002be10318}\\\\*\" -ErrorAction SilentlyContinue | where MatchingDeviceId $null -NE | select MatchingDeviceId,HardwareInformation.qwMemorySize | fl'));\n          workload.push(util.powerShell('Get-WmiObject win32_desktopmonitor | fl *'));\n          workload.push(util.powerShell('Get-CimInstance -Namespace root\\\\wmi -ClassName WmiMonitorBasicDisplayParams | fl'));\n          workload.push(util.powerShell('Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.Screen]::AllScreens'));\n          workload.push(util.powerShell('Get-CimInstance -Namespace root\\\\wmi -ClassName WmiMonitorConnectionParams | fl'));\n          workload.push(util.powerShell('gwmi WmiMonitorID -Namespace root\\\\wmi | ForEach-Object {(($_.ManufacturerName -notmatch 0 | foreach {[char]$_}) -join \"\") + \"|\" + (($_.ProductCodeID -notmatch 0 | foreach {[char]$_}) -join \"\") + \"|\" + (($_.UserFriendlyName -notmatch 0 | foreach {[char]$_}) -join \"\") + \"|\" + (($_.SerialNumberID -notmatch 0 | foreach {[char]$_}) -join \"\") + \"|\" + $_.InstanceName}'));\n\n          const nvidiaData = nvidiaDevices();\n\n          Promise.all(\n            workload\n          ).then(data => {\n            // controller + vram\n            let csections = data[0].replace(/\\r/g, '').split(/\\n\\s*\\n/);\n            let vsections = data[1].replace(/\\r/g, '').split(/\\n\\s*\\n/);\n            result.controllers = parseLinesWindowsControllers(csections, vsections);\n            result.controllers = result.controllers.map((controller) => { // match by subDeviceId\n              if (controller.vendor.toLowerCase() === 'nvidia') {\n                return mergeControllerNvidia(controller, nvidiaData.find(device => {\n                  let windowsSubDeviceId = (controller.subDeviceId || '').toLowerCase();\n                  const nvidiaSubDeviceIdParts = device.subDeviceId.split('x');\n                  let nvidiaSubDeviceId = nvidiaSubDeviceIdParts.length > 1 ? nvidiaSubDeviceIdParts[1].toLowerCase() : nvidiaSubDeviceIdParts[0].toLowerCase();\n                  const lengthDifference = Math.abs(windowsSubDeviceId.length - nvidiaSubDeviceId.length);\n                  if (windowsSubDeviceId.length > nvidiaSubDeviceId.length) {\n                    for (let i = 0; i < lengthDifference; i++) {\n                      nvidiaSubDeviceId = '0' + nvidiaSubDeviceId;\n                    }\n                  } else if (windowsSubDeviceId.length < nvidiaSubDeviceId.length) {\n                    for (let i = 0; i < lengthDifference; i++) {\n                      windowsSubDeviceId = '0' + windowsSubDeviceId;\n                    }\n                  }\n                  return windowsSubDeviceId === nvidiaSubDeviceId;\n                }) || {});\n              } else {\n                return controller;\n              }\n            });\n\n            // displays\n            let dsections = data[2].replace(/\\r/g, '').split(/\\n\\s*\\n/);\n            // result.displays = parseLinesWindowsDisplays(dsections);\n            if (dsections[0].trim() === '') { dsections.shift(); }\n            if (dsections.length && dsections[dsections.length - 1].trim() === '') { dsections.pop(); }\n\n            // monitor (powershell)\n            let msections = data[3].replace(/\\r/g, '').split('Active ');\n            msections.shift();\n\n            // forms.screens (powershell)\n            let ssections = data[4].replace(/\\r/g, '').split('BitsPerPixel ');\n            ssections.shift();\n\n            // connection params (powershell) - video type\n            let tsections = data[5].replace(/\\r/g, '').split(/\\n\\s*\\n/);\n            tsections.shift();\n\n            // monitor ID (powershell) - model / vendor\n            const res = data[6].replace(/\\r/g, '').split(/\\n/);\n            let isections = [];\n            res.forEach(element => {\n              const parts = element.split('|');\n              if (parts.length === 5) {\n                isections.push({\n                  vendor: parts[0],\n                  code: parts[1],\n                  model: parts[2],\n                  serial: parts[3],\n                  instanceId: parts[4]\n                });\n              }\n            });\n\n            result.displays = parseLinesWindowsDisplaysPowershell(ssections, msections, dsections, tsections, isections);\n\n            if (result.displays.length === 1) {\n              if (_resolutionX) {\n                result.displays[0].resolutionX = _resolutionX;\n                if (!result.displays[0].currentResX) {\n                  result.displays[0].currentResX = _resolutionX;\n                }\n              }\n              if (_resolutionY) {\n                result.displays[0].resolutionY = _resolutionY;\n                if (result.displays[0].currentResY === 0) {\n                  result.displays[0].currentResY = _resolutionY;\n                }\n              }\n              if (_pixelDepth) {\n                result.displays[0].pixelDepth = _pixelDepth;\n              }\n              if (_refreshRate && !result.displays[0].currentRefreshRate) {\n                result.displays[0].currentRefreshRate = _refreshRate;\n              }\n            }\n\n            if (callback) {\n              callback(result);\n            }\n            resolve(result);\n          })\n            .catch(() => {\n              if (callback) {\n                callback(result);\n              }\n              resolve(result);\n            });\n        } catch (e) {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      }\n    });\n  });\n\n  function parseLinesWindowsControllers(sections, vections) {\n    const memorySizes = {};\n    for (const i in vections) {\n      if ({}.hasOwnProperty.call(vections, i)) {\n        if (vections[i].trim() !== '') {\n          const lines = vections[i].trim().split('\\n');\n          const matchingDeviceId = util.getValue(lines, 'MatchingDeviceId').match(/PCI\\\\(VEN_[0-9A-F]{4})&(DEV_[0-9A-F]{4})(?:&(SUBSYS_[0-9A-F]{8}))?(?:&(REV_[0-9A-F]{2}))?/i);\n          if (matchingDeviceId) {\n            const quadWordmemorySize = parseInt(util.getValue(lines, 'HardwareInformation.qwMemorySize'));\n            if (!isNaN(quadWordmemorySize)) {\n              let deviceId = matchingDeviceId[1].toUpperCase() + '&' + matchingDeviceId[2].toUpperCase();\n              if (matchingDeviceId[3]) {\n                deviceId += '&' + matchingDeviceId[3].toUpperCase();\n              }\n              if (matchingDeviceId[4]) {\n                deviceId += '&' + matchingDeviceId[4].toUpperCase();\n              }\n              memorySizes[deviceId] = quadWordmemorySize;\n            }\n          }\n        }\n      }\n    }\n\n    let controllers = [];\n    for (let i in sections) {\n      if ({}.hasOwnProperty.call(sections, i)) {\n        if (sections[i].trim() !== '') {\n          let lines = sections[i].trim().split('\\n');\n          let pnpDeviceId = util.getValue(lines, 'PNPDeviceID', ':').match(/PCI\\\\(VEN_[0-9A-F]{4})&(DEV_[0-9A-F]{4})(?:&(SUBSYS_[0-9A-F]{8}))?(?:&(REV_[0-9A-F]{2}))?/i);\n          let subDeviceId = null;\n          let memorySize = null;\n          if (pnpDeviceId) {\n            subDeviceId = pnpDeviceId[3] || '';\n            if (subDeviceId) {\n              subDeviceId = subDeviceId.split('_')[1];\n            }\n\n            // Match PCI device identifier (there's an order of increasing generality):\n            // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/identifiers-for-pci-devices\n\n            // PCI\\VEN_v(4)&DEV_d(4)&SUBSYS_s(4)n(4)&REV_r(2)\n            if (memorySize == null && pnpDeviceId[3] && pnpDeviceId[4]) {\n              const deviceId = pnpDeviceId[1].toUpperCase() + '&' + pnpDeviceId[2].toUpperCase() + '&' + pnpDeviceId[3].toUpperCase() + '&' + pnpDeviceId[4].toUpperCase();\n              if ({}.hasOwnProperty.call(memorySizes, deviceId)) {\n                memorySize = memorySizes[deviceId];\n              }\n            }\n\n            // PCI\\VEN_v(4)&DEV_d(4)&SUBSYS_s(4)n(4)\n            if (memorySize == null && pnpDeviceId[3]) {\n              const deviceId = pnpDeviceId[1].toUpperCase() + '&' + pnpDeviceId[2].toUpperCase() + '&' + pnpDeviceId[3].toUpperCase();\n              if ({}.hasOwnProperty.call(memorySizes, deviceId)) {\n                memorySize = memorySizes[deviceId];\n              }\n            }\n\n            // PCI\\VEN_v(4)&DEV_d(4)&REV_r(2)\n            if (memorySize == null && pnpDeviceId[4]) {\n              const deviceId = pnpDeviceId[1].toUpperCase() + '&' + pnpDeviceId[2].toUpperCase() + '&' + pnpDeviceId[4].toUpperCase();\n              if ({}.hasOwnProperty.call(memorySizes, deviceId)) {\n                memorySize = memorySizes[deviceId];\n              }\n            }\n\n            // PCI\\VEN_v(4)&DEV_d(4)\n            if (memorySize == null) {\n              const deviceId = pnpDeviceId[1].toUpperCase() + '&' + pnpDeviceId[2].toUpperCase();\n              if ({}.hasOwnProperty.call(memorySizes, deviceId)) {\n                memorySize = memorySizes[deviceId];\n              }\n            }\n          }\n\n          controllers.push({\n            vendor: util.getValue(lines, 'AdapterCompatibility', ':'),\n            model: util.getValue(lines, 'name', ':'),\n            bus: util.getValue(lines, 'PNPDeviceID', ':').startsWith('PCI') ? 'PCI' : '',\n            vram: (memorySize == null ? util.toInt(util.getValue(lines, 'AdapterRAM', ':')) : memorySize) / 1024 / 1024,\n            vramDynamic: (util.getValue(lines, 'VideoMemoryType', ':') === '2'),\n            subDeviceId\n          });\n          _resolutionX = util.toInt(util.getValue(lines, 'CurrentHorizontalResolution', ':')) || _resolutionX;\n          _resolutionY = util.toInt(util.getValue(lines, 'CurrentVerticalResolution', ':')) || _resolutionY;\n          _refreshRate = util.toInt(util.getValue(lines, 'CurrentRefreshRate', ':')) || _refreshRate;\n          _pixelDepth = util.toInt(util.getValue(lines, 'CurrentBitsPerPixel', ':')) || _pixelDepth;\n        }\n      }\n    }\n    return controllers;\n  }\n\n  function parseLinesWindowsDisplaysPowershell(ssections, msections, dsections, tsections, isections) {\n    let displays = [];\n    let vendor = '';\n    let model = '';\n    let deviceID = '';\n    let resolutionX = 0;\n    let resolutionY = 0;\n    if (dsections && dsections.length) {\n      let linesDisplay = dsections[0].split('\\n');\n      vendor = util.getValue(linesDisplay, 'MonitorManufacturer', ':');\n      model = util.getValue(linesDisplay, 'Name', ':');\n      deviceID = util.getValue(linesDisplay, 'PNPDeviceID', ':').replace(/&amp;/g, '&').toLowerCase();\n      resolutionX = util.toInt(util.getValue(linesDisplay, 'ScreenWidth', ':'));\n      resolutionY = util.toInt(util.getValue(linesDisplay, 'ScreenHeight', ':'));\n    }\n    for (let i = 0; i < ssections.length; i++) {\n      if (ssections[i].trim() !== '') {\n        ssections[i] = 'BitsPerPixel ' + ssections[i];\n        msections[i] = 'Active ' + msections[i];\n        // tsections can be empty OR undefined on earlier versions of powershell (<=2.0)\n        // Tag connection type as UNKNOWN by default if this information is missing\n        if (tsections.length === 0 || tsections[i] === undefined) {\n          tsections[i] = 'Unknown';\n        }\n        let linesScreen = ssections[i].split('\\n');\n        let linesMonitor = msections[i].split('\\n');\n\n        let linesConnection = tsections[i].split('\\n');\n        const bitsPerPixel = util.getValue(linesScreen, 'BitsPerPixel');\n        const bounds = util.getValue(linesScreen, 'Bounds').replace('{', '').replace('}', '').replace(/=/g, ':').split(',');\n        const primary = util.getValue(linesScreen, 'Primary');\n        const sizeX = util.getValue(linesMonitor, 'MaxHorizontalImageSize');\n        const sizeY = util.getValue(linesMonitor, 'MaxVerticalImageSize');\n        const instanceName = util.getValue(linesMonitor, 'InstanceName').toLowerCase();\n        const videoOutputTechnology = util.getValue(linesConnection, 'VideoOutputTechnology');\n        const deviceName = util.getValue(linesScreen, 'DeviceName');\n        let displayVendor = '';\n        let displayModel = '';\n        isections.forEach(element => {\n          if (element.instanceId.toLowerCase().startsWith(instanceName) && vendor.startsWith('(') && model.startsWith('PnP')) {\n            displayVendor = element.vendor;\n            displayModel = element.model;\n          }\n        });\n        displays.push({\n          vendor: instanceName.startsWith(deviceID) && displayVendor === '' ? vendor : displayVendor,\n          model: instanceName.startsWith(deviceID) && displayModel === '' ? model : displayModel,\n          deviceName,\n          main: primary.toLowerCase() === 'true',\n          builtin: videoOutputTechnology === '2147483648',\n          connection: videoOutputTechnology && videoTypes[videoOutputTechnology] ? videoTypes[videoOutputTechnology] : '',\n          resolutionX: util.toInt(util.getValue(bounds, 'Width', ':')),\n          resolutionY: util.toInt(util.getValue(bounds, 'Height', ':')),\n          sizeX: sizeX ? parseInt(sizeX, 10) : null,\n          sizeY: sizeY ? parseInt(sizeY, 10) : null,\n          pixelDepth: bitsPerPixel,\n          currentResX: util.toInt(util.getValue(bounds, 'Width', ':')),\n          currentResY: util.toInt(util.getValue(bounds, 'Height', ':')),\n          positionX: util.toInt(util.getValue(bounds, 'X', ':')),\n          positionY: util.toInt(util.getValue(bounds, 'Y', ':')),\n        });\n      }\n    }\n    if (ssections.length === 0) {\n      displays.push({\n        vendor,\n        model,\n        main: true,\n        sizeX: null,\n        sizeY: null,\n        resolutionX,\n        resolutionY,\n        pixelDepth: null,\n        currentResX: resolutionX,\n        currentResY: resolutionY,\n        positionX: 0,\n        positionY: 0\n      });\n    }\n    return displays;\n  }\n}\n\nexports.graphics = graphics;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/systeminformation/lib/graphics.js?")},"./node_modules/systeminformation/lib/index.js":
/*!*****************************************************!*\
  !*** ./node_modules/systeminformation/lib/index.js ***!
  \*****************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n// @ts-check\n// ==================================================================================\n// index.js\n// ----------------------------------------------------------------------------------\n// Description:   System Information - library\n//                for Node.js\n// Copyright:     (c) 2014 - 2022\n// Author:        Sebastian Hildebrandt\n// ----------------------------------------------------------------------------------\n// Contributors:  Guillaume Legrain (https://github.com/glegrain)\n//                Riccardo Novaglia (https://github.com/richy24)\n//                Quentin Busuttil (https://github.com/Buzut)\n//                Lapsio (https://github.com/lapsio)\n//                csy (https://github.com/csy1983)\n// ----------------------------------------------------------------------------------\n// License:       MIT\n// ==================================================================================\n\n// ----------------------------------------------------------------------------------\n// Dependencies\n// ----------------------------------------------------------------------------------\n\nconst lib_version = (__webpack_require__(/*! ../package.json */ \"./node_modules/systeminformation/package.json\").version);\nconst util = __webpack_require__(/*! ./util */ \"./node_modules/systeminformation/lib/util.js\");\nconst system = __webpack_require__(/*! ./system */ \"./node_modules/systeminformation/lib/system.js\");\nconst osInfo = __webpack_require__(/*! ./osinfo */ \"./node_modules/systeminformation/lib/osinfo.js\");\nconst cpu = __webpack_require__(/*! ./cpu */ \"./node_modules/systeminformation/lib/cpu.js\");\nconst memory = __webpack_require__(/*! ./memory */ \"./node_modules/systeminformation/lib/memory.js\");\nconst battery = __webpack_require__(/*! ./battery */ \"./node_modules/systeminformation/lib/battery.js\");\nconst graphics = __webpack_require__(/*! ./graphics */ \"./node_modules/systeminformation/lib/graphics.js\");\nconst filesystem = __webpack_require__(/*! ./filesystem */ \"./node_modules/systeminformation/lib/filesystem.js\");\nconst network = __webpack_require__(/*! ./network */ \"./node_modules/systeminformation/lib/network.js\");\nconst wifi = __webpack_require__(/*! ./wifi */ \"./node_modules/systeminformation/lib/wifi.js\");\nconst processes = __webpack_require__(/*! ./processes */ \"./node_modules/systeminformation/lib/processes.js\");\nconst users = __webpack_require__(/*! ./users */ \"./node_modules/systeminformation/lib/users.js\");\nconst internet = __webpack_require__(/*! ./internet */ \"./node_modules/systeminformation/lib/internet.js\");\nconst docker = __webpack_require__(/*! ./docker */ \"./node_modules/systeminformation/lib/docker.js\");\nconst vbox = __webpack_require__(/*! ./virtualbox */ \"./node_modules/systeminformation/lib/virtualbox.js\");\nconst printer = __webpack_require__(/*! ./printer */ \"./node_modules/systeminformation/lib/printer.js\");\nconst usb = __webpack_require__(/*! ./usb */ \"./node_modules/systeminformation/lib/usb.js\");\nconst audio = __webpack_require__(/*! ./audio */ \"./node_modules/systeminformation/lib/audio.js\");\nconst bluetooth = __webpack_require__(/*! ./bluetooth */ \"./node_modules/systeminformation/lib/bluetooth.js\");\n\nlet _platform = process.platform;\nconst _windows = (_platform === 'win32');\nconst _freebsd = (_platform === 'freebsd');\nconst _openbsd = (_platform === 'openbsd');\nconst _netbsd = (_platform === 'netbsd');\nconst _sunos = (_platform === 'sunos');\n\n// ----------------------------------------------------------------------------------\n// init\n// ----------------------------------------------------------------------------------\n\nif (_windows) {\n  util.getCodepage();\n}\n\n// ----------------------------------------------------------------------------------\n// General\n// ----------------------------------------------------------------------------------\n\nfunction version() {\n  return lib_version;\n}\n\n// ----------------------------------------------------------------------------------\n// Get static and dynamic data (all)\n// ----------------------------------------------------------------------------------\n\n// --------------------------\n// get static data - they should not change until restarted\n\nfunction getStaticData(callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n\n      let data = {};\n\n      data.version = version();\n\n      Promise.all([\n        system.system(),\n        system.bios(),\n        system.baseboard(),\n        system.chassis(),\n        osInfo.osInfo(),\n        osInfo.uuid(),\n        osInfo.versions(),\n        cpu.cpu(),\n        cpu.cpuFlags(),\n        graphics.graphics(),\n        network.networkInterfaces(),\n        memory.memLayout(),\n        filesystem.diskLayout()\n      ]).then(res => {\n        data.system = res[0];\n        data.bios = res[1];\n        data.baseboard = res[2];\n        data.chassis = res[3];\n        data.os = res[4];\n        data.uuid = res[5];\n        data.versions = res[6];\n        data.cpu = res[7];\n        data.cpu.flags = res[8];\n        data.graphics = res[9];\n        data.net = res[10];\n        data.memLayout = res[11];\n        data.diskLayout = res[12];\n        if (callback) { callback(data); }\n        resolve(data);\n      });\n    });\n  });\n}\n\n\n// --------------------------\n// get all dynamic data - e.g. for monitoring agents\n// may take some seconds to get all data\n// --------------------------\n// 2 additional parameters needed\n// - srv: \t\tcomma separated list of services to monitor e.g. \"mysql, apache, postgresql\"\n// - iface:\tdefine network interface for which you like to monitor network speed e.g. \"eth0\"\n\nfunction getDynamicData(srv, iface, callback) {\n\n  if (util.isFunction(iface)) {\n    callback = iface;\n    iface = '';\n  }\n  if (util.isFunction(srv)) {\n    callback = srv;\n    srv = '';\n  }\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n\n      iface = iface || network.getDefaultNetworkInterface();\n      srv = srv || '';\n\n      // use closure to track ƒ completion\n      let functionProcessed = (function () {\n        let totalFunctions = 15;\n        if (_windows) { totalFunctions = 13; }\n        if (_freebsd || _openbsd || _netbsd) { totalFunctions = 11; }\n        if (_sunos) { totalFunctions = 6; }\n\n        return function () {\n          if (--totalFunctions === 0) {\n            if (callback) {\n              callback(data);\n            }\n            resolve(data);\n          }\n        };\n      })();\n\n      // var totalFunctions = 14;\n      // function functionProcessed() {\n      //   if (--totalFunctions === 0) {\n      //     if (callback) { callback(data) }\n      //     resolve(data);\n      //   }\n      // }\n\n      let data = {};\n\n      // get time\n      data.time = osInfo.time();\n\n      /**\n       * @namespace\n       * @property {Object}  versions\n       * @property {string}  versions.node\n       * @property {string}  versions.v8\n       */\n      data.node = process.versions.node;\n      data.v8 = process.versions.v8;\n\n      cpu.cpuCurrentSpeed().then(res => {\n        data.cpuCurrentSpeed = res;\n        functionProcessed();\n      });\n\n      users.users().then(res => {\n        data.users = res;\n        functionProcessed();\n      });\n\n      processes.processes().then(res => {\n        data.processes = res;\n        functionProcessed();\n      });\n\n      cpu.currentLoad().then(res => {\n        data.currentLoad = res;\n        functionProcessed();\n      });\n\n      if (!_sunos) {\n        cpu.cpuTemperature().then(res => {\n          data.temp = res;\n          functionProcessed();\n        });\n      }\n\n      if (!_openbsd && !_freebsd && !_netbsd && !_sunos) {\n        network.networkStats(iface).then(res => {\n          data.networkStats = res;\n          functionProcessed();\n        });\n      }\n\n      if (!_sunos) {\n        network.networkConnections().then(res => {\n          data.networkConnections = res;\n          functionProcessed();\n        });\n      }\n\n      memory.mem().then(res => {\n        data.mem = res;\n        functionProcessed();\n      });\n\n      if (!_sunos) {\n        battery().then(res => {\n          data.battery = res;\n          functionProcessed();\n        });\n      }\n\n      if (!_sunos) {\n        processes.services(srv).then(res => {\n          data.services = res;\n          functionProcessed();\n        });\n      }\n\n      if (!_sunos) {\n        filesystem.fsSize().then(res => {\n          data.fsSize = res;\n          functionProcessed();\n        });\n      }\n\n      if (!_windows && !_openbsd && !_freebsd && !_netbsd && !_sunos) {\n        filesystem.fsStats().then(res => {\n          data.fsStats = res;\n          functionProcessed();\n        });\n      }\n\n      if (!_windows && !_openbsd && !_freebsd && !_netbsd && !_sunos) {\n        filesystem.disksIO().then(res => {\n          data.disksIO = res;\n          functionProcessed();\n        });\n      }\n\n      if (!_openbsd && !_freebsd && !_netbsd && !_sunos) {\n        wifi.wifiNetworks().then(res => {\n          data.wifiNetworks = res;\n          functionProcessed();\n        });\n      }\n\n      internet.inetLatency().then(res => {\n        data.inetLatency = res;\n        functionProcessed();\n      });\n    });\n  });\n}\n\n// --------------------------\n// get all data at once\n// --------------------------\n// 2 additional parameters needed\n// - srv: \t\tcomma separated list of services to monitor e.g. \"mysql, apache, postgresql\"\n// - iface:\tdefine network interface for which you like to monitor network speed e.g. \"eth0\"\n\nfunction getAllData(srv, iface, callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      let data = {};\n\n      if (iface && util.isFunction(iface) && !callback) {\n        callback = iface;\n        iface = '';\n      }\n\n      if (srv && util.isFunction(srv) && !iface && !callback) {\n        callback = srv;\n        srv = '';\n        iface = '';\n      }\n\n      getStaticData().then(res => {\n        data = res;\n        getDynamicData(srv, iface).then(res => {\n          for (let key in res) {\n            if ({}.hasOwnProperty.call(res, key)) {\n              data[key] = res[key];\n            }\n          }\n          if (callback) { callback(data); }\n          resolve(data);\n        });\n      });\n    });\n  });\n}\n\nfunction get(valueObject, callback) {\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      const allPromises = Object.keys(valueObject)\n        .filter(func => ({}.hasOwnProperty.call(exports, func)))\n        .map(func => {\n          const params = valueObject[func].substring(valueObject[func].lastIndexOf('(') + 1, valueObject[func].lastIndexOf(')'));\n          let funcWithoutParams = func.indexOf(')') >= 0 ? func.split(')')[1].trim() : func;\n          funcWithoutParams = func.indexOf('|') >= 0 ? func.split('|')[0].trim() : funcWithoutParams;\n          if (params) {\n            return exports[funcWithoutParams](params);\n          } else {\n            return exports[funcWithoutParams]('');\n          }\n        });\n\n      Promise.all(allPromises).then(data => {\n        const result = {};\n        let i = 0;\n        for (let key in valueObject) {\n          if ({}.hasOwnProperty.call(valueObject, key) && {}.hasOwnProperty.call(exports, key) && data.length > i) {\n            if (valueObject[key] === '*' || valueObject[key] === 'all') {\n              result[key] = data[i];\n            } else {\n              let keys = valueObject[key];\n              // let params = '';\n              let filter = '';\n              let filterParts = [];\n              // remove params\n              if (keys.indexOf(')') >= 0) {\n                keys = keys.split(')')[1].trim();\n              }\n              // extract filter and remove it from keys\n              if (keys.indexOf('|') >= 0) {\n                filter = keys.split('|')[1].trim();\n                filterParts = filter.split(':');\n\n                keys = keys.split('|')[0].trim();\n              }\n              keys = keys.replace(/,/g, ' ').replace(/ +/g, ' ').split(' ');\n              if (data[i]) {\n                if (Array.isArray(data[i])) {\n                  // result is in an array, go through all elements of array and pick only the right ones\n                  const partialArray = [];\n                  data[i].forEach(element => {\n                    let partialRes = {};\n                    if (keys.length === 1 && (keys[0] === '*' || keys[0] === 'all')) {\n                      partialRes = element;\n                    } else {\n                      keys.forEach(k => {\n                        if ({}.hasOwnProperty.call(element, k)) {\n                          partialRes[k] = element[k];\n                        }\n                      });\n                    }\n                    // if there is a filter, then just take those elements\n                    if (filter && filterParts.length === 2) {\n                      if ({}.hasOwnProperty.call(partialRes, filterParts[0].trim())) {\n                        const val = partialRes[filterParts[0].trim()];\n                        if (typeof val == 'number') {\n                          if (val === parseFloat(filterParts[1].trim())) {\n                            partialArray.push(partialRes);\n                          }\n                        } else if (typeof val == 'string') {\n                          if (val.toLowerCase() === filterParts[1].trim().toLowerCase()) {\n                            partialArray.push(partialRes);\n                          }\n                        }\n                      }\n                    } else {\n                      partialArray.push(partialRes);\n                    }\n\n                  });\n                  result[key] = partialArray;\n                } else {\n                  const partialRes = {};\n                  keys.forEach(k => {\n                    if ({}.hasOwnProperty.call(data[i], k)) {\n                      partialRes[k] = data[i][k];\n                    }\n                  });\n                  result[key] = partialRes;\n                }\n              } else {\n                result[key] = {};\n              }\n            }\n            i++;\n          }\n        }\n        if (callback) { callback(result); }\n        resolve(result);\n      });\n    });\n  });\n}\n\nfunction observe(valueObject, interval, callback) {\n  let _data = null;\n\n  const result = setInterval(() => {\n    get(valueObject).then(data => {\n      if (JSON.stringify(_data) !== JSON.stringify(data)) {\n        _data = Object.assign({}, data);\n        callback(data);\n      }\n    });\n  }, interval);\n  return result;\n}\n\n// ----------------------------------------------------------------------------------\n// export all libs\n// ----------------------------------------------------------------------------------\n\nexports.version = version;\nexports.system = system.system;\nexports.bios = system.bios;\nexports.baseboard = system.baseboard;\nexports.chassis = system.chassis;\n\nexports.time = osInfo.time;\nexports.osInfo = osInfo.osInfo;\nexports.versions = osInfo.versions;\nexports.shell = osInfo.shell;\nexports.uuid = osInfo.uuid;\n\nexports.cpu = cpu.cpu;\nexports.cpuFlags = cpu.cpuFlags;\nexports.cpuCache = cpu.cpuCache;\nexports.cpuCurrentSpeed = cpu.cpuCurrentSpeed;\nexports.cpuTemperature = cpu.cpuTemperature;\nexports.currentLoad = cpu.currentLoad;\nexports.fullLoad = cpu.fullLoad;\n\nexports.mem = memory.mem;\nexports.memLayout = memory.memLayout;\n\nexports.battery = battery;\n\nexports.graphics = graphics.graphics;\n\nexports.fsSize = filesystem.fsSize;\nexports.fsOpenFiles = filesystem.fsOpenFiles;\nexports.blockDevices = filesystem.blockDevices;\nexports.fsStats = filesystem.fsStats;\nexports.disksIO = filesystem.disksIO;\nexports.diskLayout = filesystem.diskLayout;\n\nexports.networkInterfaceDefault = network.networkInterfaceDefault;\nexports.networkGatewayDefault = network.networkGatewayDefault;\nexports.networkInterfaces = network.networkInterfaces;\nexports.networkStats = network.networkStats;\nexports.networkConnections = network.networkConnections;\n\nexports.wifiNetworks = wifi.wifiNetworks;\nexports.wifiInterfaces = wifi.wifiInterfaces;\nexports.wifiConnections = wifi.wifiConnections;\n\nexports.services = processes.services;\nexports.processes = processes.processes;\nexports.processLoad = processes.processLoad;\n\nexports.users = users.users;\n\nexports.inetChecksite = internet.inetChecksite;\nexports.inetLatency = internet.inetLatency;\n\nexports.dockerInfo = docker.dockerInfo;\nexports.dockerImages = docker.dockerImages;\nexports.dockerContainers = docker.dockerContainers;\nexports.dockerContainerStats = docker.dockerContainerStats;\nexports.dockerContainerProcesses = docker.dockerContainerProcesses;\nexports.dockerVolumes = docker.dockerVolumes;\nexports.dockerAll = docker.dockerAll;\n\nexports.vboxInfo = vbox.vboxInfo;\n\nexports.printer = printer.printer;\n\nexports.usb = usb.usb;\n\nexports.audio = audio.audio;\nexports.bluetoothDevices = bluetooth.bluetoothDevices;\n\nexports.getStaticData = getStaticData;\nexports.getDynamicData = getDynamicData;\nexports.getAllData = getAllData;\nexports.get = get;\nexports.observe = observe;\n\nexports.powerShellStart = util.powerShellStart;\nexports.powerShellRelease = util.powerShellRelease;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/systeminformation/lib/index.js?")},"./node_modules/systeminformation/lib/internet.js":
/*!********************************************************!*\
  !*** ./node_modules/systeminformation/lib/internet.js ***!
  \********************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n// @ts-check\n// ==================================================================================\n// internet.js\n// ----------------------------------------------------------------------------------\n// Description:   System Information - library\n//                for Node.js\n// Copyright:     (c) 2014 - 2022\n// Author:        Sebastian Hildebrandt\n// ----------------------------------------------------------------------------------\n// License:       MIT\n// ==================================================================================\n// 12. Internet\n// ----------------------------------------------------------------------------------\n\n// const exec = require('child_process').exec;\nconst util = __webpack_require__(/*! ./util */ \"./node_modules/systeminformation/lib/util.js\");\n\nlet _platform = process.platform;\n\nconst _linux = (_platform === 'linux' || _platform === 'android');\nconst _darwin = (_platform === 'darwin');\nconst _windows = (_platform === 'win32');\nconst _freebsd = (_platform === 'freebsd');\nconst _openbsd = (_platform === 'openbsd');\nconst _netbsd = (_platform === 'netbsd');\nconst _sunos = (_platform === 'sunos');\n\n// --------------------------\n// check if external site is available\n\nfunction inetChecksite(url, callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      let result = {\n        url: url,\n        ok: false,\n        status: 404,\n        ms: null\n      };\n      if (typeof url !== 'string') {\n        if (callback) { callback(result); }\n        return resolve(result);\n      }\n      let urlSanitized = '';\n      const s = util.sanitizeShellString(url, true);\n      for (let i = 0; i <= util.mathMin(s.length, 2000); i++) {\n        if (!(s[i] === undefined)) {\n          s[i].__proto__.toLowerCase = util.stringToLower;\n          const sl = s[i].toLowerCase();\n          if (sl && sl[0] && !sl[1] && sl[0].length === 1) {\n            urlSanitized = urlSanitized + sl[0];\n          }\n        }\n      }\n      result.url = urlSanitized;\n      try {\n        if (urlSanitized && !util.isPrototypePolluted()) {\n          urlSanitized.__proto__.startsWith = util.stringStartWith;\n          if (urlSanitized.startsWith('file:') || urlSanitized.startsWith('gopher:') || urlSanitized.startsWith('telnet:') || urlSanitized.startsWith('mailto:') || urlSanitized.startsWith('news:') || urlSanitized.startsWith('nntp:')) {\n            if (callback) { callback(result); }\n            return resolve(result);\n          }\n          let t = Date.now();\n          if (_linux || _freebsd || _openbsd || _netbsd || _darwin || _sunos) {\n            let args = ['-I', '--connect-timeout', '5', '-m', '5'];\n            args.push(urlSanitized);\n            let cmd = 'curl';\n            util.execSafe(cmd, args).then((stdout) => {\n              const lines = stdout.split('\\n');\n              let statusCode = lines[0] && lines[0].indexOf(' ') >= 0 ? parseInt(lines[0].split(' ')[1], 10) : 404;\n              result.status = statusCode || 404;\n              result.ok = (statusCode === 200 || statusCode === 301 || statusCode === 302 || statusCode === 304);\n              result.ms = (result.ok ? Date.now() - t : null);\n              if (callback) { callback(result); }\n              resolve(result);\n            });\n          }\n          if (_windows) {   // if this is stable, this can be used for all OS types\n            const http = (urlSanitized.startsWith('https:') ? __webpack_require__(/*! https */ \"https\") : __webpack_require__(/*! http */ \"http\"));\n            try {\n              http.get(urlSanitized, (res) => {\n                const statusCode = res.statusCode;\n\n                result.status = statusCode || 404;\n                result.ok = (statusCode === 200 || statusCode === 301 || statusCode === 302 || statusCode === 304);\n\n                if (statusCode !== 200) {\n                  res.resume();\n                  result.ms = (result.ok ? Date.now() - t : null);\n                  if (callback) { callback(result); }\n                  resolve(result);\n                } else {\n                  res.on('data', () => { });\n                  res.on('end', () => {\n                    result.ms = (result.ok ? Date.now() - t : null);\n                    if (callback) { callback(result); }\n                    resolve(result);\n                  });\n                }\n              }).on('error', () => {\n                if (callback) { callback(result); }\n                resolve(result);\n              });\n            } catch (err) {\n              if (callback) { callback(result); }\n              resolve(result);\n            }\n          }\n        } else {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      } catch (err) {\n        if (callback) { callback(result); }\n        resolve(result);\n      }\n    });\n  });\n}\n\nexports.inetChecksite = inetChecksite;\n\n// --------------------------\n// check inet latency\n\nfunction inetLatency(host, callback) {\n\n  // fallback - if only callback is given\n  if (util.isFunction(host) && !callback) {\n    callback = host;\n    host = '';\n  }\n\n  host = host || '8.8.8.8';\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      if (typeof host !== 'string') {\n        if (callback) { callback(null); }\n        return resolve(null);\n      }\n      let hostSanitized = '';\n      const s = (util.isPrototypePolluted() ? '8.8.8.8' : util.sanitizeShellString(host, true)).trim();\n      for (let i = 0; i <= util.mathMin(s.length, 2000); i++) {\n        if (!(s[i] === undefined)) {\n          s[i].__proto__.toLowerCase = util.stringToLower;\n          const sl = s[i].toLowerCase();\n          if (sl && sl[0] && !sl[1]) {\n            hostSanitized = hostSanitized + sl[0];\n          }\n        }\n      }\n      hostSanitized.__proto__.startsWith = util.stringStartWith;\n      if (hostSanitized.startsWith('file:') || hostSanitized.startsWith('gopher:') || hostSanitized.startsWith('telnet:') || hostSanitized.startsWith('mailto:') || hostSanitized.startsWith('news:') || hostSanitized.startsWith('nntp:')) {\n        if (callback) { callback(null); }\n        return resolve(null);\n      }\n      let params;\n      let filt;\n      if (_linux || _freebsd || _openbsd || _netbsd || _darwin) {\n        if (_linux) {\n          params = ['-c', '2', '-w', '3', hostSanitized];\n          filt = 'rtt';\n        }\n        if (_freebsd || _openbsd || _netbsd) {\n          params = ['-c', '2', '-t', '3', hostSanitized];\n          filt = 'round-trip';\n        }\n        if (_darwin) {\n          params = ['-c2', '-t3', hostSanitized];\n          filt = 'avg';\n        }\n        util.execSafe('ping', params).then((stdout) => {\n          let result = null;\n          if (stdout) {\n            const lines = stdout.split('\\n').filter(line => line.indexOf(filt) >= 0).join('\\n');\n\n            const line = lines.split('=');\n            if (line.length > 1) {\n              const parts = line[1].split('/');\n              if (parts.length > 1) {\n                result = parseFloat(parts[1]);\n              }\n            }\n          }\n          if (callback) { callback(result); }\n          resolve(result);\n        });\n      }\n      if (_sunos) {\n        const params = ['-s', '-a', hostSanitized, '56', '2'];\n        const filt = 'avg';\n        util.execSafe('ping', params, { timeout: 3000 }).then((stdout) => {\n          let result = null;\n          if (stdout) {\n            const lines = stdout.split('\\n').filter(line => line.indexOf(filt) >= 0).join('\\n');\n            const line = lines.split('=');\n            if (line.length > 1) {\n              const parts = line[1].split('/');\n              if (parts.length > 1) {\n                result = parseFloat(parts[1].replace(',', '.'));\n              }\n            }\n          }\n          if (callback) { callback(result); }\n          resolve(result);\n        });\n      }\n      if (_windows) {\n        let result = null;\n        try {\n          const params = [hostSanitized, '-n', '1'];\n          util.execSafe('ping', params, util.execOptsWin).then((stdout) => {\n            if (stdout) {\n              let lines = stdout.split('\\r\\n');\n              lines.shift();\n              lines.forEach(function (line) {\n                if ((line.toLowerCase().match(/ms/g) || []).length === 3) {\n                  let l = line.replace(/ +/g, ' ').split(' ');\n                  if (l.length > 6) {\n                    result = parseFloat(l[l.length - 1]);\n                  }\n                }\n              });\n            }\n            if (callback) { callback(result); }\n            resolve(result);\n          });\n        } catch (e) {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      }\n    });\n  });\n}\n\nexports.inetLatency = inetLatency;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/systeminformation/lib/internet.js?")},"./node_modules/systeminformation/lib/memory.js":
/*!******************************************************!*\
  !*** ./node_modules/systeminformation/lib/memory.js ***!
  \******************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n// @ts-check\n// ==================================================================================\n// memory.js\n// ----------------------------------------------------------------------------------\n// Description:   System Information - library\n//                for Node.js\n// Copyright:     (c) 2014 - 2022\n// Author:        Sebastian Hildebrandt\n// ----------------------------------------------------------------------------------\n// License:       MIT\n// ==================================================================================\n// 5. Memory\n// ----------------------------------------------------------------------------------\n\nconst os = __webpack_require__(/*! os */ \"os\");\nconst exec = (__webpack_require__(/*! child_process */ \"child_process\").exec);\nconst execSync = (__webpack_require__(/*! child_process */ \"child_process\").execSync);\nconst util = __webpack_require__(/*! ./util */ \"./node_modules/systeminformation/lib/util.js\");\nconst fs = __webpack_require__(/*! fs */ \"fs\");\n\nlet _platform = process.platform;\n\nconst _linux = (_platform === 'linux' || _platform === 'android');\nconst _darwin = (_platform === 'darwin');\nconst _windows = (_platform === 'win32');\nconst _freebsd = (_platform === 'freebsd');\nconst _openbsd = (_platform === 'openbsd');\nconst _netbsd = (_platform === 'netbsd');\nconst _sunos = (_platform === 'sunos');\n\nconst OSX_RAM_manufacturers = {\n  '0x014F': 'Transcend Information',\n  '0x2C00': 'Micron Technology Inc.',\n  '0x802C': 'Micron Technology Inc.',\n  '0x80AD': 'Hynix Semiconductor Inc.',\n  '0x80CE': 'Samsung Electronics Inc.',\n  '0xAD00': 'Hynix Semiconductor Inc.',\n  '0xCE00': 'Samsung Electronics Inc.',\n  '0x02FE': 'Elpida',\n  '0x5105': 'Qimonda AG i. In.',\n  '0x8551': 'Qimonda AG i. In.',\n  '0x859B': 'Crucial',\n  '0x04CD': 'G-Skill'\n};\n\nconst LINUX_RAM_manufacturers = {\n  '017A': 'Apacer',\n  '0198': 'HyperX',\n  '029E': 'Corsair',\n  '04CB': 'A-DATA',\n  '04CD': 'G-Skill',\n  '059B': 'Crucial',\n  '00CE': 'Samsung',\n  '1315': 'Crutial',\n  '014F': 'Transcend Information',\n  '2C00': 'Micron Technology Inc.',\n  '802C': 'Micron Technology Inc.',\n  '80AD': 'Hynix Semiconductor Inc.',\n  '80CE': 'Samsung Electronics Inc.',\n  'AD00': 'Hynix Semiconductor Inc.',\n  'CE00': 'Samsung Electronics Inc.',\n  '02FE': 'Elpida',\n  '5105': 'Qimonda AG i. In.',\n  '8551': 'Qimonda AG i. In.',\n  '859B': 'Crucial'\n};\n\n// _______________________________________________________________________________________\n// |                         R A M                              |          H D           |\n// |______________________|_________________________|           |                        |\n// |        active             buffers/cache        |           |                        |\n// |________________________________________________|___________|_________|______________|\n// |                     used                            free   |   used       free      |\n// |____________________________________________________________|________________________|\n// |                        total                               |          swap          |\n// |____________________________________________________________|________________________|\n\n// free (older versions)\n// ----------------------------------\n// # free\n//              total       used        free     shared    buffers     cached\n// Mem:         16038 (1)   15653 (2)   384 (3)  0 (4)     236 (5)     14788 (6)\n// -/+ buffers/cache:       628 (7)     15409 (8)\n// Swap:        16371         83      16288\n//\n// |------------------------------------------------------------|\n// |                           R A M                            |\n// |______________________|_____________________________________|\n// | active (2-(5+6) = 7) |  available (3+5+6 = 8)              |\n// |______________________|_________________________|___________|\n// |        active        |  buffers/cache (5+6)    |           |\n// |________________________________________________|___________|\n// |                   used (2)                     | free (3)  |\n// |____________________________________________________________|\n// |                          total (1)                         |\n// |____________________________________________________________|\n\n//\n// free (since free von procps-ng 3.3.10)\n// ----------------------------------\n// # free\n//              total       used        free     shared    buffers/cache   available\n// Mem:         16038 (1)   628 (2)     386 (3)  0 (4)     15024 (5)     14788 (6)\n// Swap:        16371         83      16288\n//\n// |------------------------------------------------------------|\n// |                           R A M                            |\n// |______________________|_____________________________________|\n// |                      |      available (6) estimated        |\n// |______________________|_________________________|___________|\n// |     active (2)       |   buffers/cache (5)     | free (3)  |\n// |________________________________________________|___________|\n// |                          total (1)                         |\n// |____________________________________________________________|\n//\n// Reference: http://www.software-architect.net/blog/article/date/2015/06/12/-826c6e5052.html\n\n// /procs/meminfo - sample (all in kB)\n//\n// MemTotal: 32806380 kB\n// MemFree: 17977744 kB\n// MemAvailable: 19768972 kB\n// Buffers: 517028 kB\n// Cached: 2161876 kB\n// SwapCached: 456 kB\n// Active: 12081176 kB\n// Inactive: 2164616 kB\n// Active(anon): 10832884 kB\n// Inactive(anon): 1477272 kB\n// Active(file): 1248292 kB\n// Inactive(file): 687344 kB\n// Unevictable: 0 kB\n// Mlocked: 0 kB\n// SwapTotal: 16768892 kB\n// SwapFree: 16768304 kB\n// Dirty: 268 kB\n// Writeback: 0 kB\n// AnonPages: 11568832 kB\n// Mapped: 719992 kB\n// Shmem: 743272 kB\n// Slab: 335716 kB\n// SReclaimable: 256364 kB\n// SUnreclaim: 79352 kB\n\nfunction mem(callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n\n      let result = {\n        total: os.totalmem(),\n        free: os.freemem(),\n        used: os.totalmem() - os.freemem(),\n\n        active: os.totalmem() - os.freemem(),     // temporarily (fallback)\n        available: os.freemem(),                  // temporarily (fallback)\n        buffers: 0,\n        cached: 0,\n        slab: 0,\n        buffcache: 0,\n\n        swaptotal: 0,\n        swapused: 0,\n        swapfree: 0\n      };\n\n      if (_linux) {\n        fs.readFile('/proc/meminfo', function (error, stdout) {\n          if (!error) {\n            const lines = stdout.toString().split('\\n');\n            result.total = parseInt(util.getValue(lines, 'memtotal'), 10);\n            result.total = result.total ? result.total * 1024 : os.totalmem();\n            result.free = parseInt(util.getValue(lines, 'memfree'), 10);\n            result.free = result.free ? result.free * 1024 : os.freemem();\n            result.used = result.total - result.free;\n\n            result.buffers = parseInt(util.getValue(lines, 'buffers'), 10);\n            result.buffers = result.buffers ? result.buffers * 1024 : 0;\n            result.cached = parseInt(util.getValue(lines, 'cached'), 10);\n            result.cached = result.cached ? result.cached * 1024 : 0;\n            result.slab = parseInt(util.getValue(lines, 'slab'), 10);\n            result.slab = result.slab ? result.slab * 1024 : 0;\n            result.buffcache = result.buffers + result.cached + result.slab;\n\n            let available = parseInt(util.getValue(lines, 'memavailable'), 10);\n            result.available = available ? available * 1024 : result.free + result.buffcache;\n            result.active = result.total - result.available;\n\n            result.swaptotal = parseInt(util.getValue(lines, 'swaptotal'), 10);\n            result.swaptotal = result.swaptotal ? result.swaptotal * 1024 : 0;\n            result.swapfree = parseInt(util.getValue(lines, 'swapfree'), 10);\n            result.swapfree = result.swapfree ? result.swapfree * 1024 : 0;\n            result.swapused = result.swaptotal - result.swapfree;\n          }\n          if (callback) { callback(result); }\n          resolve(result);\n        });\n      }\n      if (_freebsd || _openbsd || _netbsd) {\n        exec('/sbin/sysctl hw.realmem hw.physmem vm.stats.vm.v_page_count vm.stats.vm.v_wire_count vm.stats.vm.v_active_count vm.stats.vm.v_inactive_count vm.stats.vm.v_cache_count vm.stats.vm.v_free_count vm.stats.vm.v_page_size', function (error, stdout) {\n          if (!error) {\n            let lines = stdout.toString().split('\\n');\n            const pagesize = parseInt(util.getValue(lines, 'vm.stats.vm.v_page_size'), 10);\n            const inactive = parseInt(util.getValue(lines, 'vm.stats.vm.v_inactive_count'), 10) * pagesize;\n            const cache = parseInt(util.getValue(lines, 'vm.stats.vm.v_cache_count'), 10) * pagesize;\n\n            result.total = parseInt(util.getValue(lines, 'hw.realmem'), 10);\n            if (isNaN(result.total)) { result.total = parseInt(util.getValue(lines, 'hw.physmem'), 10); }\n            result.free = parseInt(util.getValue(lines, 'vm.stats.vm.v_free_count'), 10) * pagesize;\n            result.buffcache = inactive + cache;\n            result.available = result.buffcache + result.free;\n            result.active = result.total - result.free - result.buffcache;\n\n            result.swaptotal = 0;\n            result.swapfree = 0;\n            result.swapused = 0;\n\n          }\n          if (callback) { callback(result); }\n          resolve(result);\n        });\n      }\n      if (_sunos) {\n        if (callback) { callback(result); }\n        resolve(result);\n      }\n      if (_darwin) {\n        let pageSize = 4096;\n        try {\n          let sysPpageSize = util.toInt(execSync('sysctl -n vm.pagesize').toString());\n          pageSize = sysPpageSize || pageSize;\n        } catch (e) {\n          util.noop();\n        }\n        exec('vm_stat 2>/dev/null | grep \"Pages active\"', function (error, stdout) {\n          if (!error) {\n            let lines = stdout.toString().split('\\n');\n\n            result.active = parseInt(lines[0].split(':')[1], 10) * pageSize;\n            result.buffcache = result.used - result.active;\n            result.available = result.free + result.buffcache;\n          }\n          exec('sysctl -n vm.swapusage 2>/dev/null', function (error, stdout) {\n            if (!error) {\n              let lines = stdout.toString().split('\\n');\n              if (lines.length > 0) {\n                let line = lines[0].replace(/,/g, '.').replace(/M/g, '');\n                line = line.trim().split('  ');\n                for (let i = 0; i < line.length; i++) {\n                  if (line[i].toLowerCase().indexOf('total') !== -1) { result.swaptotal = parseFloat(line[i].split('=')[1].trim()) * 1024 * 1024; }\n                  if (line[i].toLowerCase().indexOf('used') !== -1) { result.swapused = parseFloat(line[i].split('=')[1].trim()) * 1024 * 1024; }\n                  if (line[i].toLowerCase().indexOf('free') !== -1) { result.swapfree = parseFloat(line[i].split('=')[1].trim()) * 1024 * 1024; }\n                }\n              }\n            }\n            if (callback) { callback(result); }\n            resolve(result);\n          });\n        });\n      }\n      if (_windows) {\n        let swaptotal = 0;\n        let swapused = 0;\n        try {\n          util.powerShell('Get-CimInstance Win32_PageFileUsage | Select AllocatedBaseSize, CurrentUsage').then((stdout, error) => {\n            if (!error) {\n              let lines = stdout.split('\\r\\n').filter(line => line.trim() !== '').filter((line, idx) => idx > 0);\n              lines.forEach(function (line) {\n                if (line !== '') {\n                  line = line.trim().split(/\\s\\s+/);\n                  swaptotal = swaptotal + (parseInt(line[0], 10) || 0);\n                  swapused = swapused + (parseInt(line[1], 10) || 0);\n                }\n              });\n            }\n            result.swaptotal = swaptotal * 1024 * 1024;\n            result.swapused = swapused * 1024 * 1024;\n            result.swapfree = result.swaptotal - result.swapused;\n\n            if (callback) { callback(result); }\n            resolve(result);\n          });\n        } catch (e) {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      }\n    });\n  });\n}\n\nexports.mem = mem;\n\nfunction memLayout(callback) {\n\n  function getManufacturerDarwin(manId) {\n    if ({}.hasOwnProperty.call(OSX_RAM_manufacturers, manId)) {\n      return (OSX_RAM_manufacturers[manId]);\n    }\n    return manId;\n  }\n\n  function getManufacturerLinux(manId) {\n    const manIdSearch = manId.replace('0x', '').toUpperCase();\n    if (manIdSearch.length === 4 && {}.hasOwnProperty.call(LINUX_RAM_manufacturers, manIdSearch)) {\n      return (LINUX_RAM_manufacturers[manIdSearch]);\n    }\n    return manId;\n  }\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n\n      let result = [];\n\n      if (_linux || _freebsd || _openbsd || _netbsd) {\n        exec('export LC_ALL=C; dmidecode -t memory 2>/dev/null | grep -iE \"Size:|Type|Speed|Manufacturer|Form Factor|Locator|Memory Device|Serial Number|Voltage|Part Number\"; unset LC_ALL', function (error, stdout) {\n          if (!error) {\n            let devices = stdout.toString().split('Memory Device');\n            devices.shift();\n            devices.forEach(function (device) {\n              let lines = device.split('\\n');\n              const sizeString = util.getValue(lines, 'Size');\n              const size = sizeString.indexOf('GB') >= 0 ? parseInt(sizeString, 10) * 1024 * 1024 * 1024 : parseInt(sizeString, 10) * 1024 * 1024;\n              if (parseInt(util.getValue(lines, 'Size'), 10) > 0) {\n                const totalWidth = util.toInt(util.getValue(lines, 'Total Width'));\n                const dataWidth = util.toInt(util.getValue(lines, 'Data Width'));\n                result.push({\n                  size,\n                  bank: util.getValue(lines, 'Bank Locator'),\n                  type: util.getValue(lines, 'Type:'),\n                  ecc: dataWidth && totalWidth ? totalWidth > dataWidth : false,\n                  clockSpeed: (util.getValue(lines, 'Configured Clock Speed:') ? parseInt(util.getValue(lines, 'Configured Clock Speed:'), 10) : (util.getValue(lines, 'Speed:') ? parseInt(util.getValue(lines, 'Speed:'), 10) : null)),\n                  formFactor: util.getValue(lines, 'Form Factor:'),\n                  manufacturer: getManufacturerLinux(util.getValue(lines, 'Manufacturer:')),\n                  partNum: util.getValue(lines, 'Part Number:'),\n                  serialNum: util.getValue(lines, 'Serial Number:'),\n                  voltageConfigured: parseFloat(util.getValue(lines, 'Configured Voltage:')) || null,\n                  voltageMin: parseFloat(util.getValue(lines, 'Minimum Voltage:')) || null,\n                  voltageMax: parseFloat(util.getValue(lines, 'Maximum Voltage:')) || null,\n                });\n              } else {\n                result.push({\n                  size: 0,\n                  bank: util.getValue(lines, 'Bank Locator'),\n                  type: 'Empty',\n                  ecc: null,\n                  clockSpeed: 0,\n                  formFactor: util.getValue(lines, 'Form Factor:'),\n                  partNum: '',\n                  serialNum: '',\n                  voltageConfigured: null,\n                  voltageMin: null,\n                  voltageMax: null,\n                });\n              }\n            });\n          }\n          if (!result.length) {\n            result.push({\n              size: os.totalmem(),\n              bank: '',\n              type: '',\n              ecc: null,\n              clockSpeed: 0,\n              formFactor: '',\n              partNum: '',\n              serialNum: '',\n              voltageConfigured: null,\n              voltageMin: null,\n              voltageMax: null,\n            });\n\n            // Try Raspberry PI\n            try {\n              let stdout = execSync('cat /proc/cpuinfo 2>/dev/null');\n              let lines = stdout.toString().split('\\n');\n              let model = util.getValue(lines, 'hardware', ':', true).toUpperCase();\n              let version = util.getValue(lines, 'revision', ':', true).toLowerCase();\n\n              if (model === 'BCM2835' || model === 'BCM2708' || model === 'BCM2709' || model === 'BCM2835' || model === 'BCM2837') {\n\n                const clockSpeed = {\n                  '0': 400,\n                  '1': 450,\n                  '2': 450,\n                  '3': 3200\n                };\n                result[0].type = 'LPDDR2';\n                result[0].type = version && version[2] && version[2] === '3' ? 'LPDDR4' : result[0].type;\n                result[0].ecc = false;\n                result[0].clockSpeed = version && version[2] && clockSpeed[version[2]] || 400;\n                result[0].clockSpeed = version && version[4] && version[4] === 'd' ? 500 : result[0].clockSpeed;\n                result[0].formFactor = 'SoC';\n\n                stdout = execSync('vcgencmd get_config sdram_freq 2>/dev/null');\n                lines = stdout.toString().split('\\n');\n                let freq = parseInt(util.getValue(lines, 'sdram_freq', '=', true), 10) || 0;\n                if (freq) {\n                  result[0].clockSpeed = freq;\n                }\n\n                stdout = execSync('vcgencmd measure_volts sdram_p 2>/dev/null');\n                lines = stdout.toString().split('\\n');\n                let voltage = parseFloat(util.getValue(lines, 'volt', '=', true)) || 0;\n                if (voltage) {\n                  result[0].voltageConfigured = voltage;\n                  result[0].voltageMin = voltage;\n                  result[0].voltageMax = voltage;\n                }\n              }\n            } catch (e) {\n              util.noop();\n            }\n\n          }\n          if (callback) { callback(result); }\n          resolve(result);\n        });\n      }\n\n      if (_darwin) {\n        exec('system_profiler SPMemoryDataType', function (error, stdout) {\n          if (!error) {\n            const allLines = stdout.toString().split('\\n');\n            const eccStatus = util.getValue(allLines, 'ecc', ':', true).toLowerCase();\n            let devices = stdout.toString().split('        BANK ');\n            let hasBank = true;\n            if (devices.length === 1) {\n              devices = stdout.toString().split('        DIMM');\n              hasBank = false;\n            }\n            devices.shift();\n            devices.forEach(function (device) {\n              let lines = device.split('\\n');\n              const bank = (hasBank ? 'BANK ' : 'DIMM') + lines[0].trim().split('/')[0];\n              const size = parseInt(util.getValue(lines, '          Size'));\n              if (size) {\n                result.push({\n                  size: size * 1024 * 1024 * 1024,\n                  bank: bank,\n                  type: util.getValue(lines, '          Type:'),\n                  ecc: eccStatus ? eccStatus === 'enabled' : null,\n                  clockSpeed: parseInt(util.getValue(lines, '          Speed:'), 10),\n                  formFactor: '',\n                  manufacturer: getManufacturerDarwin(util.getValue(lines, '          Manufacturer:')),\n                  partNum: util.getValue(lines, '          Part Number:'),\n                  serialNum: util.getValue(lines, '          Serial Number:'),\n                  voltageConfigured: null,\n                  voltageMin: null,\n                  voltageMax: null,\n                });\n              } else {\n                result.push({\n                  size: 0,\n                  bank: bank,\n                  type: 'Empty',\n                  ecc: null,\n                  clockSpeed: 0,\n                  formFactor: '',\n                  manufacturer: '',\n                  partNum: '',\n                  serialNum: '',\n                  voltageConfigured: null,\n                  voltageMin: null,\n                  voltageMax: null,\n                });\n              }\n            });\n          }\n          if (!result.length) {\n            const lines = stdout.toString().split('\\n');\n            const size = parseInt(util.getValue(lines, '      Memory:'));\n            const type = util.getValue(lines, '      Type:');\n            if (size && type) {\n              result.push({\n                size: size * 1024 * 1024 * 1024,\n                bank: '0',\n                type,\n                ecc: false,\n                clockSpeed: 0,\n                formFactor: '',\n                manufacturer: 'Apple',\n                partNum: '',\n                serialNum: '',\n                voltageConfigured: null,\n                voltageMin: null,\n                voltageMax: null,\n              });\n\n            }\n          }\n          if (callback) { callback(result); }\n          resolve(result);\n        });\n      }\n      if (_sunos) {\n        if (callback) { callback(result); }\n        resolve(result);\n      }\n      if (_windows) {\n        const memoryTypes = 'Unknown|Other|DRAM|Synchronous DRAM|Cache DRAM|EDO|EDRAM|VRAM|SRAM|RAM|ROM|FLASH|EEPROM|FEPROM|EPROM|CDRAM|3DRAM|SDRAM|SGRAM|RDRAM|DDR|DDR2|DDR2 FB-DIMM|Reserved|DDR3|FBD2|DDR4|LPDDR|LPDDR2|LPDDR3|LPDDR4'.split('|');\n        const FormFactors = 'Unknown|Other|SIP|DIP|ZIP|SOJ|Proprietary|SIMM|DIMM|TSOP|PGA|RIMM|SODIMM|SRIMM|SMD|SSMP|QFP|TQFP|SOIC|LCC|PLCC|BGA|FPBGA|LGA'.split('|');\n\n        try {\n          util.powerShell('Get-WmiObject Win32_PhysicalMemory | select DataWidth,TotalWidth,Capacity,BankLabel,MemoryType,SMBIOSMemoryType,ConfiguredClockSpeed,FormFactor,Manufacturer,PartNumber,SerialNumber,ConfiguredVoltage,MinVoltage,MaxVoltage | fl').then((stdout, error) => {\n            if (!error) {\n              let devices = stdout.toString().split(/\\n\\s*\\n/);\n              devices.shift();\n              devices.forEach(function (device) {\n                let lines = device.split('\\r\\n');\n                const dataWidth = util.toInt(util.getValue(lines, 'DataWidth', ':'));\n                const totalWidth = util.toInt(util.getValue(lines, 'TotalWidth', ':'));\n                const size = parseInt(util.getValue(lines, 'Capacity', ':'), 10) || 0;\n                if (size) {\n                  result.push({\n                    size,\n                    bank: util.getValue(lines, 'BankLabel', ':'), // BankLabel\n                    type: memoryTypes[parseInt(util.getValue(lines, 'MemoryType', ':'), 10) || parseInt(util.getValue(lines, 'SMBIOSMemoryType', ':'), 10)],\n                    ecc: dataWidth && totalWidth ? totalWidth > dataWidth : false,\n                    clockSpeed: parseInt(util.getValue(lines, 'ConfiguredClockSpeed', ':'), 10) || parseInt(util.getValue(lines, 'Speed', ':'), 10) || 0,\n                    formFactor: FormFactors[parseInt(util.getValue(lines, 'FormFactor', ':'), 10) || 0],\n                    manufacturer: util.getValue(lines, 'Manufacturer', ':'),\n                    partNum: util.getValue(lines, 'PartNumber', ':'),\n                    serialNum: util.getValue(lines, 'SerialNumber', ':'),\n                    voltageConfigured: (parseInt(util.getValue(lines, 'ConfiguredVoltage', ':'), 10) || 0) / 1000.0,\n                    voltageMin: (parseInt(util.getValue(lines, 'MinVoltage', ':'), 10) || 0) / 1000.0,\n                    voltageMax: (parseInt(util.getValue(lines, 'MaxVoltage', ':'), 10) || 0) / 1000.0,\n                  });\n                }\n              });\n            }\n            if (callback) { callback(result); }\n            resolve(result);\n          });\n        } catch (e) {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      }\n    });\n  });\n}\n\nexports.memLayout = memLayout;\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/systeminformation/lib/memory.js?")},"./node_modules/systeminformation/lib/network.js":
/*!*******************************************************!*\
  !*** ./node_modules/systeminformation/lib/network.js ***!
  \*******************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n// @ts-check\n// ==================================================================================\n// network.js\n// ----------------------------------------------------------------------------------\n// Description:   System Information - library\n//                for Node.js\n// Copyright:     (c) 2014 - 2022\n// Author:        Sebastian Hildebrandt\n// ----------------------------------------------------------------------------------\n// License:       MIT\n// ==================================================================================\n// 9. Network\n// ----------------------------------------------------------------------------------\n\nconst os = __webpack_require__(/*! os */ \"os\");\nconst exec = (__webpack_require__(/*! child_process */ \"child_process\").exec);\nconst execSync = (__webpack_require__(/*! child_process */ \"child_process\").execSync);\nconst fs = __webpack_require__(/*! fs */ \"fs\");\nconst util = __webpack_require__(/*! ./util */ \"./node_modules/systeminformation/lib/util.js\");\n\nlet _platform = process.platform;\n\nconst _linux = (_platform === 'linux' || _platform === 'android');\nconst _darwin = (_platform === 'darwin');\nconst _windows = (_platform === 'win32');\nconst _freebsd = (_platform === 'freebsd');\nconst _openbsd = (_platform === 'openbsd');\nconst _netbsd = (_platform === 'netbsd');\nconst _sunos = (_platform === 'sunos');\n\nlet _network = {};\nlet _default_iface = '';\nlet _ifaces = {};\nlet _dhcpNics = [];\nlet _networkInterfaces = [];\nlet _mac = {};\nlet pathToIp;\n\nfunction getDefaultNetworkInterface() {\n\n  let ifacename = '';\n  let ifacenameFirst = '';\n  try {\n    let ifaces = os.networkInterfaces();\n\n    let scopeid = 9999;\n\n    // fallback - \"first\" external interface (sorted by scopeid)\n    for (let dev in ifaces) {\n      if ({}.hasOwnProperty.call(ifaces, dev)) {\n        ifaces[dev].forEach(function (details) {\n          if (details && details.internal === false) {\n            ifacenameFirst = ifacenameFirst || dev; // fallback if no scopeid\n            if (details.scopeid && details.scopeid < scopeid) {\n              ifacename = dev;\n              scopeid = details.scopeid;\n            }\n          }\n        });\n      }\n    }\n    ifacename = ifacename || ifacenameFirst || '';\n\n    if (_windows) {\n      // https://www.inetdaemon.com/tutorials/internet/ip/routing/default_route.shtml\n      let defaultIp = '';\n      const cmd = 'netstat -r';\n      const result = execSync(cmd, util.execOptsWin);\n      const lines = result.toString().split(os.EOL);\n      lines.forEach(line => {\n        line = line.replace(/\\s+/g, ' ').trim();\n        if (line.indexOf('0.0.0.0 0.0.0.0') > -1 && !(/[a-zA-Z]/.test(line))) {\n          const parts = line.split(' ');\n          if (parts.length >= 5) {\n            defaultIp = parts[parts.length - 2];\n          }\n        }\n      });\n      if (defaultIp) {\n        for (let dev in ifaces) {\n          if ({}.hasOwnProperty.call(ifaces, dev)) {\n            ifaces[dev].forEach(function (details) {\n              if (details && details.address && details.address === defaultIp) {\n                ifacename = dev;\n              }\n            });\n          }\n        }\n      }\n    }\n    if (_linux) {\n      let cmd = 'ip route 2> /dev/null | grep default';\n      let result = execSync(cmd);\n      let parts = result.toString().split('\\n')[0].split(/\\s+/);\n      if (parts[0] === 'none' && parts[5]) {\n        ifacename = parts[5];\n      } else if (parts[4]) {\n        ifacename = parts[4];\n      }\n\n      if (ifacename.indexOf(':') > -1) {\n        ifacename = ifacename.split(':')[1].trim();\n      }\n    }\n    if (_darwin || _freebsd || _openbsd || _netbsd || _sunos) {\n      let cmd = '';\n      if (_linux) { cmd = 'ip route 2> /dev/null | grep default | awk \\'{print $5}\\''; }\n      if (_darwin) { cmd = 'route -n get default 2>/dev/null | grep interface: | awk \\'{print $2}\\''; }\n      if (_freebsd || _openbsd || _netbsd || _sunos) { cmd = 'route get 0.0.0.0 | grep interface:'; }\n      // console.log('SYNC - default darwin 3');\n      let result = execSync(cmd);\n      ifacename = result.toString().split('\\n')[0];\n      if (ifacename.indexOf(':') > -1) {\n        ifacename = ifacename.split(':')[1].trim();\n      }\n    }\n  } catch (e) {\n    util.noop();\n  }\n  if (ifacename) { _default_iface = ifacename; }\n  return _default_iface;\n}\n\nexports.getDefaultNetworkInterface = getDefaultNetworkInterface;\n\nfunction getMacAddresses() {\n  let iface = '';\n  let mac = '';\n  let result = {};\n  if (_linux || _freebsd || _openbsd || _netbsd) {\n    if (typeof pathToIp === 'undefined') {\n      try {\n        const lines = execSync('which ip').toString().split('\\n');\n        if (lines.length && lines[0].indexOf(':') === -1 && lines[0].indexOf('/') === 0) {\n          pathToIp = lines[0];\n        } else {\n          pathToIp = '';\n        }\n      } catch (e) {\n        pathToIp = '';\n      }\n    }\n    try {\n      const cmd = 'export LC_ALL=C; ' + ((pathToIp) ? pathToIp + ' link show up' : '/sbin/ifconfig') + '; unset LC_ALL';\n      let res = execSync(cmd);\n      const lines = res.toString().split('\\n');\n      for (let i = 0; i < lines.length; i++) {\n        if (lines[i] && lines[i][0] !== ' ') {\n          if (pathToIp) {\n            let nextline = lines[i + 1].trim().split(' ');\n            if (nextline[0] === 'link/ether') {\n              iface = lines[i].split(' ')[1];\n              iface = iface.slice(0, iface.length - 1);\n              mac = nextline[1];\n            }\n          } else {\n            iface = lines[i].split(' ')[0];\n            mac = lines[i].split('HWaddr ')[1];\n          }\n\n          if (iface && mac) {\n            result[iface] = mac.trim();\n            iface = '';\n            mac = '';\n          }\n        }\n      }\n    } catch (e) {\n      util.noop();\n    }\n  }\n  if (_darwin) {\n    try {\n      const cmd = '/sbin/ifconfig';\n      // console.log('SYNC - macAde darwin 6');\n      let res = execSync(cmd);\n      const lines = res.toString().split('\\n');\n      for (let i = 0; i < lines.length; i++) {\n        if (lines[i] && lines[i][0] !== '\\t' && lines[i].indexOf(':') > 0) {\n          iface = lines[i].split(':')[0];\n        } else if (lines[i].indexOf('\\tether ') === 0) {\n          mac = lines[i].split('\\tether ')[1];\n          if (iface && mac) {\n            result[iface] = mac.trim();\n            iface = '';\n            mac = '';\n          }\n        }\n      }\n    } catch (e) {\n      util.noop();\n    }\n  }\n  return result;\n}\n\nfunction networkInterfaceDefault(callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      let result = getDefaultNetworkInterface();\n      if (callback) { callback(result); }\n      resolve(result);\n    });\n  });\n}\n\nexports.networkInterfaceDefault = networkInterfaceDefault;\n\n// --------------------------\n// NET - interfaces\n\nfunction parseLinesWindowsNics(sections, nconfigsections) {\n  let nics = [];\n  for (let i in sections) {\n    if ({}.hasOwnProperty.call(sections, i)) {\n\n      if (sections[i].trim() !== '') {\n\n        let lines = sections[i].trim().split('\\r\\n');\n        let linesNicConfig = nconfigsections && nconfigsections[i] ? nconfigsections[i].trim().split('\\r\\n') : [];\n        let netEnabled = util.getValue(lines, 'NetEnabled', ':');\n        let adapterType = util.getValue(lines, 'AdapterTypeID', ':') === '9' ? 'wireless' : 'wired';\n        let ifacename = util.getValue(lines, 'Name', ':').replace(/\\]/g, ')').replace(/\\[/g, '(');\n        let iface = util.getValue(lines, 'NetConnectionID', ':').replace(/\\]/g, ')').replace(/\\[/g, '(');\n        if (ifacename.toLowerCase().indexOf('wi-fi') >= 0 || ifacename.toLowerCase().indexOf('wireless') >= 0) {\n          adapterType = 'wireless';\n        }\n        if (netEnabled !== '') {\n          const speed = parseInt(util.getValue(lines, 'speed', ':').trim(), 10) / 1000000;\n          nics.push({\n            mac: util.getValue(lines, 'MACAddress', ':').toLowerCase(),\n            dhcp: util.getValue(linesNicConfig, 'dhcpEnabled', ':').toLowerCase() === 'true',\n            name: ifacename,\n            iface,\n            netEnabled: netEnabled === 'TRUE',\n            speed: isNaN(speed) ? null : speed,\n            operstate: util.getValue(lines, 'NetConnectionStatus', ':') === '2' ? 'up' : 'down',\n            type: adapterType\n          });\n        }\n      }\n    }\n  }\n  return nics;\n}\n\nfunction getWindowsNics() {\n  // const cmd = util.getWmic() + ' nic get /value';\n  // const cmdnicconfig = util.getWmic() + ' nicconfig get dhcpEnabled /value';\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      let cmd = 'Get-WmiObject Win32_NetworkAdapter | fl *' + '; echo \\'#-#-#-#\\';';\n      cmd += 'Get-WmiObject Win32_NetworkAdapterConfiguration | fl DHCPEnabled' + '';\n      try {\n        util.powerShell(cmd).then(data => {\n          data = data.split('#-#-#-#');\n          const nsections = (data[0] || '').split(/\\n\\s*\\n/);\n          const nconfigsections = (data[1] || '').split(/\\n\\s*\\n/);\n          resolve(parseLinesWindowsNics(nsections, nconfigsections));\n        });\n      } catch (e) {\n        resolve([]);\n      }\n    });\n  });\n}\n\nfunction getWindowsDNSsuffixes() {\n\n  let iface = {};\n\n  let dnsSuffixes = {\n    primaryDNS: '',\n    exitCode: 0,\n    ifaces: [],\n  };\n\n  try {\n    const ipconfig = execSync('ipconfig /all', util.execOptsWin);\n    const ipconfigArray = ipconfig.split('\\r\\n\\r\\n');\n\n    ipconfigArray.forEach((element, index) => {\n\n      if (index == 1) {\n        const longPrimaryDNS = element.split('\\r\\n').filter((element) => {\n          return element.toUpperCase().includes('DNS');\n        });\n        const primaryDNS = longPrimaryDNS[0].substring(longPrimaryDNS[0].lastIndexOf(':') + 1);\n        dnsSuffixes.primaryDNS = primaryDNS.trim();\n        if (!dnsSuffixes.primaryDNS) { dnsSuffixes.primaryDNS = 'Not defined'; }\n      }\n      if (index > 1) {\n        if (index % 2 == 0) {\n          const name = element.substring(element.lastIndexOf(' ') + 1).replace(':', '');\n          iface.name = name;\n        } else {\n          const connectionSpecificDNS = element.split('\\r\\n').filter((element) => {\n            return element.toUpperCase().includes('DNS');\n          });\n          const dnsSuffix = connectionSpecificDNS[0].substring(connectionSpecificDNS[0].lastIndexOf(':') + 1);\n          iface.dnsSuffix = dnsSuffix.trim();\n          dnsSuffixes.ifaces.push(iface);\n          iface = {};\n        }\n      }\n    });\n\n    return dnsSuffixes;\n  } catch (error) {\n    // console.log('An error occurred trying to bring the Connection-specific DNS suffix', error.message);\n    return {\n      primaryDNS: '',\n      exitCode: 0,\n      ifaces: [],\n    };\n  }\n}\n\nfunction getWindowsIfaceDNSsuffix(ifaces, ifacename) {\n  let dnsSuffix = '';\n  // Adding (.) to ensure ifacename compatibility when duplicated iface-names\n  const interfaceName = ifacename + '.';\n  try {\n    const connectionDnsSuffix = ifaces.filter((iface) => {\n      return interfaceName.includes(iface.name + '.');\n    }).map((iface) => iface.dnsSuffix);\n    if (connectionDnsSuffix[0]) {\n      dnsSuffix = connectionDnsSuffix[0];\n    }\n    if (!dnsSuffix) { dnsSuffix = ''; }\n    return dnsSuffix;\n  } catch (error) {\n    // console.log('Error getting Connection-specific DNS suffix: ', error.message);\n    return 'Unknown';\n  }\n}\n\nfunction getWindowsWiredProfilesInformation() {\n  try {\n    const result = execSync('netsh lan show profiles', util.execOptsWin);\n    const profileList = result.split('\\r\\nProfile on interface');\n    return profileList;\n  } catch (error) {\n    if (error.status === 1 && error.stdout.includes('AutoConfig')) {\n      return 'Disabled';\n    }\n    return [];\n  }\n}\n\nfunction getWindowsWirelessIfaceSSID(interfaceName) {\n  try {\n    const result = execSync(`netsh wlan show  interface name=\"${interfaceName}\" | findstr \"SSID\"`, util.execOptsWin);\n    const SSID = result.split('\\r\\n').shift();\n    const parseSSID = SSID.split(':').pop();\n    return parseSSID;\n  } catch (error) {\n    return 'Unknown';\n  }\n}\nfunction getWindowsIEEE8021x(connectionType, iface, ifaces) {\n  let i8021x = {\n    state: 'Unknown',\n    protocol: 'Unknown',\n  };\n\n  if (ifaces === 'Disabled') {\n    i8021x.state = 'Disabled';\n    i8021x.protocol = 'Not defined';\n    return i8021x;\n  }\n\n  if (connectionType == 'wired' && ifaces.length > 0) {\n    try {\n      // Get 802.1x information by interface name\n      const iface8021xInfo = ifaces.find((element) => {\n        return element.includes(iface + '\\r\\n');\n      });\n      const arrayIface8021xInfo = iface8021xInfo.split('\\r\\n');\n      const state8021x = arrayIface8021xInfo.find((element) => {\n        return element.includes('802.1x');\n      });\n\n      if (state8021x.includes('Disabled')) {\n        i8021x.state = 'Disabled';\n        i8021x.protocol = 'Not defined';\n      } else if (state8021x.includes('Enabled')) {\n        const protocol8021x = arrayIface8021xInfo.find((element) => {\n          return element.includes('EAP');\n        });\n        i8021x.protocol = protocol8021x.split(':').pop();\n        i8021x.state = 'Enabled';\n      }\n    } catch (error) {\n      // console.log('Error getting wired information:', error);\n      return i8021x;\n    }\n  } else if (connectionType == 'wireless') {\n\n    let i8021xState = '';\n    let i8021xProtocol = '';\n\n\n\n    try {\n      const SSID = getWindowsWirelessIfaceSSID(iface);\n      if (SSID !== 'Unknown') {\n        i8021xState = execSync(`netsh wlan show profiles \"${SSID}\" | findstr \"802.1X\"`, util.execOptsWin);\n        i8021xProtocol = execSync(`netsh wlan show profiles \"${SSID}\" | findstr \"EAP\"`, util.execOptsWin);\n      }\n\n      if (i8021xState.includes(':') && i8021xProtocol.includes(':')) {\n        i8021x.state = i8021xState.split(':').pop();\n        i8021x.protocol = i8021xProtocol.split(':').pop();\n      }\n    } catch (error) {\n      // console.log('Error getting wireless information:', error);\n      if (error.status === 1 && error.stdout.includes('AutoConfig')) {\n        i8021x.state = 'Disabled';\n        i8021x.protocol = 'Not defined';\n      }\n      return i8021x;\n    }\n  }\n\n  return i8021x;\n}\n\nfunction splitSectionsNics(lines) {\n  const result = [];\n  let section = [];\n  lines.forEach(function (line) {\n    if (!line.startsWith('\\t') && !line.startsWith(' ')) {\n      if (section.length) {\n        result.push(section);\n        section = [];\n      }\n    }\n    section.push(line);\n  });\n  if (section.length) {\n    result.push(section);\n  }\n  return result;\n}\n\nfunction parseLinesDarwinNics(sections) {\n  let nics = [];\n  sections.forEach(section => {\n    let nic = {\n      iface: '',\n      mtu: null,\n      mac: '',\n      ip6: '',\n      ip4: '',\n      speed: null,\n      type: '',\n      operstate: '',\n      duplex: '',\n      internal: false\n    };\n    const first = section[0];\n    nic.iface = first.split(':')[0].trim();\n    let parts = first.split('> mtu');\n    nic.mtu = parts.length > 1 ? parseInt(parts[1], 10) : null;\n    if (isNaN(nic.mtu)) {\n      nic.mtu = null;\n    }\n    nic.internal = parts[0].toLowerCase().indexOf('loopback') > -1;\n    section.forEach(line => {\n      if (line.trim().startsWith('ether ')) {\n        nic.mac = line.split('ether ')[1].toLowerCase().trim();\n      }\n      if (line.trim().startsWith('inet6 ') && !nic.ip6) {\n        nic.ip6 = line.split('inet6 ')[1].toLowerCase().split('%')[0].split(' ')[0];\n      }\n      if (line.trim().startsWith('inet ') && !nic.ip4) {\n        nic.ip4 = line.split('inet ')[1].toLowerCase().split(' ')[0];\n      }\n    });\n    let speed = util.getValue(section, 'link rate');\n    nic.speed = speed ? parseFloat(speed) : null;\n    if (nic.speed === null) {\n      speed = util.getValue(section, 'uplink rate');\n      nic.speed = speed ? parseFloat(speed) : null;\n      if (nic.speed !== null && speed.toLowerCase().indexOf('gbps') >= 0) {\n        nic.speed = nic.speed * 1000;\n      }\n    } else {\n      if (speed.toLowerCase().indexOf('gbps') >= 0) {\n        nic.speed = nic.speed * 1000;\n      }\n    }\n    nic.type = util.getValue(section, 'type').toLowerCase().indexOf('wi-fi') > -1 ? 'wireless' : 'wired';\n    nic.operstate = util.getValue(section, 'status').toLowerCase().indexOf('active') > -1 ? 'up' : 'down';\n    nic.duplex = util.getValue(section, 'media').toLowerCase().indexOf('half-duplex') > -1 ? 'half' : 'full';\n    if (nic.ip6 || nic.ip4 || nic.mac) {\n      nics.push(nic);\n    }\n  });\n  return nics;\n}\n\nfunction getDarwinNics() {\n  const cmd = '/sbin/ifconfig -v';\n  try {\n    // console.log('SYNC - Nics darwin 12');\n    const lines = execSync(cmd, { maxBuffer: 1024 * 20000 }).toString().split('\\n');\n    const nsections = splitSectionsNics(lines);\n    return (parseLinesDarwinNics(nsections));\n  } catch (e) {\n    return [];\n  }\n}\n\nfunction getLinuxIfaceConnectionName(interfaceName) {\n  const cmd = `nmcli device status 2>/dev/null | grep ${interfaceName}`;\n\n  try {\n    const result = execSync(cmd).toString();\n    const resultFormat = result.replace(/\\s+/g, ' ').trim();\n    const connectionNameLines = resultFormat.split(' ').slice(3);\n    const connectionName = connectionNameLines.join(' ');\n    return connectionName != '--' ? connectionName : '';\n  } catch (e) {\n    return '';\n  }\n}\n\nfunction checkLinuxDCHPInterfaces(file) {\n  let result = [];\n  try {\n    let cmd = `cat ${file} 2> /dev/null | grep 'iface\\\\|source'`;\n    const lines = execSync(cmd, { maxBuffer: 1024 * 20000 }).toString().split('\\n');\n\n    lines.forEach(line => {\n      const parts = line.replace(/\\s+/g, ' ').trim().split(' ');\n      if (parts.length >= 4) {\n        if (line.toLowerCase().indexOf(' inet ') >= 0 && line.toLowerCase().indexOf('dhcp') >= 0) {\n          result.push(parts[1]);\n        }\n      }\n      if (line.toLowerCase().includes('source')) {\n        let file = line.split(' ')[1];\n        result = result.concat(checkLinuxDCHPInterfaces(file));\n      }\n    });\n  } catch (e) {\n    util.noop();\n  }\n  return result;\n}\n\nfunction getLinuxDHCPNics() {\n  // alternate methods getting interfaces using DHCP\n  let cmd = 'ip a 2> /dev/null';\n  let result = [];\n  try {\n    const lines = execSync(cmd, { maxBuffer: 1024 * 20000 }).toString().split('\\n');\n    const nsections = splitSectionsNics(lines);\n    result = (parseLinuxDHCPNics(nsections));\n  } catch (e) {\n    util.noop();\n  }\n  try {\n    result = checkLinuxDCHPInterfaces('/etc/network/interfaces');\n  } catch (e) {\n    util.noop();\n  }\n  return result;\n}\n\nfunction parseLinuxDHCPNics(sections) {\n  const result = [];\n  if (sections && sections.length) {\n    sections.forEach(lines => {\n      if (lines && lines.length) {\n        const parts = lines[0].split(':');\n        if (parts.length > 2) {\n          for (let line of lines) {\n            if (line.indexOf(' inet ') >= 0 && line.indexOf(' dynamic ') >= 0) {\n              const parts2 = line.split(' ');\n              const nic = parts2[parts2.length - 1].trim();\n              result.push(nic);\n              break;\n            }\n          }\n        }\n      }\n    });\n  }\n  return result;\n}\n\nfunction getLinuxIfaceDHCPstatus(iface, connectionName, DHCPNics) {\n  let result = false;\n  if (connectionName) {\n    const cmd = `nmcli connection show \"${connectionName}\" 2>/dev/null | grep ipv4.method;`;\n    try {\n      const lines = execSync(cmd).toString();\n      const resultFormat = lines.replace(/\\s+/g, ' ').trim();\n\n      let dhcStatus = resultFormat.split(' ').slice(1).toString();\n      switch (dhcStatus) {\n        case 'auto':\n          result = true;\n          break;\n\n        default:\n          result = false;\n          break;\n      }\n      return result;\n    } catch (e) {\n      return (DHCPNics.indexOf(iface) >= 0);\n    }\n  } else {\n    return (DHCPNics.indexOf(iface) >= 0);\n  }\n}\n\nfunction getDarwinIfaceDHCPstatus(iface) {\n  let result = false;\n  const cmd = `ipconfig getpacket \"${iface}\" 2>/dev/null | grep lease_time;`;\n  try {\n    // console.log('SYNC - DHCP status darwin 17');\n    const lines = execSync(cmd).toString().split('\\n');\n    if (lines.length && lines[0].startsWith('lease_time')) {\n      result = true;\n    }\n  } catch (e) {\n    util.noop();\n  }\n  return result;\n}\n\nfunction getLinuxIfaceDNSsuffix(connectionName) {\n  if (connectionName) {\n    const cmd = `nmcli connection show \"${connectionName}\" 2>/dev/null | grep ipv4.dns-search;`;\n    try {\n      const result = execSync(cmd).toString();\n      const resultFormat = result.replace(/\\s+/g, ' ').trim();\n      const dnsSuffix = resultFormat.split(' ').slice(1).toString();\n      return dnsSuffix == '--' ? 'Not defined' : dnsSuffix;\n    } catch (e) {\n      return 'Unknown';\n    }\n  } else {\n    return 'Unknown';\n  }\n}\n\nfunction getLinuxIfaceIEEE8021xAuth(connectionName) {\n  if (connectionName) {\n    const cmd = `nmcli connection show \"${connectionName}\" 2>/dev/null | grep 802-1x.eap;`;\n    try {\n      const result = execSync(cmd).toString();\n      const resultFormat = result.replace(/\\s+/g, ' ').trim();\n      const authenticationProtocol = resultFormat.split(' ').slice(1).toString();\n\n\n      return authenticationProtocol == '--' ? '' : authenticationProtocol;\n    } catch (e) {\n      return 'Not defined';\n    }\n  } else {\n    return 'Not defined';\n  }\n}\n\nfunction getLinuxIfaceIEEE8021xState(authenticationProtocol) {\n  if (authenticationProtocol) {\n    if (authenticationProtocol == 'Not defined') {\n      return 'Disabled';\n    }\n    return 'Enabled';\n  } else {\n    return 'Unknown';\n  }\n}\n\nfunction testVirtualNic(iface, ifaceName, mac) {\n  const virtualMacs = ['00:00:00:00:00:00', '00:03:FF', '00:05:69', '00:0C:29', '00:0F:4B', '00:0F:4B', '00:13:07', '00:13:BE', '00:15:5d', '00:16:3E', '00:1C:42', '00:21:F6', '00:21:F6', '00:24:0B', '00:24:0B', '00:50:56', '00:A0:B1', '00:E0:C8', '08:00:27', '0A:00:27', '18:92:2C', '16:DF:49', '3C:F3:92', '54:52:00', 'FC:15:97'];\n  if (mac) {\n    return virtualMacs.filter(item => { return mac.toUpperCase().toUpperCase().startsWith(item.substr(0, mac.length)); }).length > 0 ||\n      iface.toLowerCase().indexOf(' virtual ') > -1 ||\n      ifaceName.toLowerCase().indexOf(' virtual ') > -1 ||\n      iface.toLowerCase().indexOf('vethernet ') > -1 ||\n      ifaceName.toLowerCase().indexOf('vethernet ') > -1 ||\n      iface.toLowerCase().startsWith('veth') ||\n      ifaceName.toLowerCase().startsWith('veth') ||\n      iface.toLowerCase().startsWith('vboxnet') ||\n      ifaceName.toLowerCase().startsWith('vboxnet');\n  } else { return false; }\n}\n\nfunction networkInterfaces(callback, rescan, defaultString) {\n\n  if (typeof callback === 'string') {\n    defaultString = callback;\n    rescan = true;\n    callback = null;\n  }\n\n  if (typeof callback === 'boolean') {\n    rescan = callback;\n    callback = null;\n    defaultString = '';\n  }\n  if (typeof rescan === 'undefined') {\n    rescan = true;\n  }\n  defaultString = defaultString || '';\n  defaultString = '' + defaultString;\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n\n      let ifaces = os.networkInterfaces();\n\n      let result = [];\n      let nics = [];\n      let dnsSuffixes = [];\n      let nics8021xInfo = [];\n      // seperate handling in OSX\n      if (_darwin || _freebsd || _openbsd || _netbsd) {\n        if ((JSON.stringify(ifaces) === JSON.stringify(_ifaces)) && !rescan) {\n          // no changes - just return object\n          result = _networkInterfaces;\n\n          if (callback) { callback(result); }\n          resolve(result);\n        } else {\n          const defaultInterface = getDefaultNetworkInterface();\n          _ifaces = JSON.parse(JSON.stringify(ifaces));\n\n          nics = getDarwinNics();\n\n\n          nics.forEach(nic => {\n\n            if ({}.hasOwnProperty.call(ifaces, nic.iface)) {\n              ifaces[nic.iface].forEach(function (details) {\n                if (details.family === 'IPv4' || details.family === 4) {\n                  nic.ip4subnet = details.netmask;\n                }\n                if (details.family === 'IPv6' || details.family === 6) {\n                  nic.ip6subnet = details.netmask;\n                }\n              });\n            }\n\n            result.push({\n              iface: nic.iface,\n              ifaceName: nic.iface,\n              default: nic.iface === defaultInterface,\n              ip4: nic.ip4,\n              ip4subnet: nic.ip4subnet || '',\n              ip6: nic.ip6,\n              ip6subnet: nic.ip6subnet || '',\n              mac: nic.mac,\n              internal: nic.internal,\n              virtual: nic.internal ? false : testVirtualNic(nic.iface, nic.iface, nic.mac),\n              operstate: nic.operstate,\n              type: nic.type,\n              duplex: nic.duplex,\n              mtu: nic.mtu,\n              speed: nic.speed,\n              dhcp: getDarwinIfaceDHCPstatus(nic.iface),\n              dnsSuffix: '',\n              ieee8021xAuth: '',\n              ieee8021xState: '',\n              carrierChanges: 0\n            });\n          });\n          _networkInterfaces = result;\n          if (defaultString.toLowerCase().indexOf('default') >= 0) {\n            result = result.filter(item => item.default);\n            if (result.length > 0) {\n              result = result[0];\n            } else {\n              result = [];\n            }\n          }\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      }\n      if (_linux) {\n        if ((JSON.stringify(ifaces) === JSON.stringify(_ifaces)) && !rescan) {\n          // no changes - just return object\n          result = _networkInterfaces;\n\n          if (callback) { callback(result); }\n          resolve(result);\n        } else {\n          _ifaces = JSON.parse(JSON.stringify(ifaces));\n          _dhcpNics = getLinuxDHCPNics();\n          const defaultInterface = getDefaultNetworkInterface();\n          for (let dev in ifaces) {\n            let ip4 = '';\n            let ip4subnet = '';\n            let ip6 = '';\n            let ip6subnet = '';\n            let mac = '';\n            let duplex = '';\n            let mtu = '';\n            let speed = null;\n            let carrierChanges = 0;\n            let dhcp = false;\n            let dnsSuffix = '';\n            let ieee8021xAuth = '';\n            let ieee8021xState = '';\n            let type = '';\n\n            if ({}.hasOwnProperty.call(ifaces, dev)) {\n              let ifaceName = dev;\n              ifaces[dev].forEach(function (details) {\n                if (details.family === 'IPv4' || details.family === 4) {\n                  ip4 = details.address;\n                  ip4subnet = details.netmask;\n                }\n                if (details.family === 'IPv6' || details.family === 6) {\n                  if (!ip6 || ip6.match(/^fe80::/i)) {\n                    ip6 = details.address;\n                    ip6subnet = details.netmask;\n                  }\n                }\n                mac = details.mac;\n                // fallback due to https://github.com/nodejs/node/issues/13581 (node 8.1 - node 8.2)\n                const nodeMainVersion = parseInt(process.versions.node.split('.'), 10);\n                if (mac.indexOf('00:00:0') > -1 && (_linux || _darwin) && (!details.internal) && nodeMainVersion >= 8 && nodeMainVersion <= 11) {\n                  if (Object.keys(_mac).length === 0) {\n                    _mac = getMacAddresses();\n                  }\n                  mac = _mac[dev] || '';\n                }\n              });\n              let iface = dev.split(':')[0].trim().toLowerCase();\n              const cmd = `echo -n \"addr_assign_type: \"; cat /sys/class/net/${iface}/addr_assign_type 2>/dev/null; echo;\n            echo -n \"address: \"; cat /sys/class/net/${iface}/address 2>/dev/null; echo;\n            echo -n \"addr_len: \"; cat /sys/class/net/${iface}/addr_len 2>/dev/null; echo;\n            echo -n \"broadcast: \"; cat /sys/class/net/${iface}/broadcast 2>/dev/null; echo;\n            echo -n \"carrier: \"; cat /sys/class/net/${iface}/carrier 2>/dev/null; echo;\n            echo -n \"carrier_changes: \"; cat /sys/class/net/${iface}/carrier_changes 2>/dev/null; echo;\n            echo -n \"dev_id: \"; cat /sys/class/net/${iface}/dev_id 2>/dev/null; echo;\n            echo -n \"dev_port: \"; cat /sys/class/net/${iface}/dev_port 2>/dev/null; echo;\n            echo -n \"dormant: \"; cat /sys/class/net/${iface}/dormant 2>/dev/null; echo;\n            echo -n \"duplex: \"; cat /sys/class/net/${iface}/duplex 2>/dev/null; echo;\n            echo -n \"flags: \"; cat /sys/class/net/${iface}/flags 2>/dev/null; echo;\n            echo -n \"gro_flush_timeout: \"; cat /sys/class/net/${iface}/gro_flush_timeout 2>/dev/null; echo;\n            echo -n \"ifalias: \"; cat /sys/class/net/${iface}/ifalias 2>/dev/null; echo;\n            echo -n \"ifindex: \"; cat /sys/class/net/${iface}/ifindex 2>/dev/null; echo;\n            echo -n \"iflink: \"; cat /sys/class/net/${iface}/iflink 2>/dev/null; echo;\n            echo -n \"link_mode: \"; cat /sys/class/net/${iface}/link_mode 2>/dev/null; echo;\n            echo -n \"mtu: \"; cat /sys/class/net/${iface}/mtu 2>/dev/null; echo;\n            echo -n \"netdev_group: \"; cat /sys/class/net/${iface}/netdev_group 2>/dev/null; echo;\n            echo -n \"operstate: \"; cat /sys/class/net/${iface}/operstate 2>/dev/null; echo;\n            echo -n \"proto_down: \"; cat /sys/class/net/${iface}/proto_down 2>/dev/null; echo;\n            echo -n \"speed: \"; cat /sys/class/net/${iface}/speed 2>/dev/null; echo;\n            echo -n \"tx_queue_len: \"; cat /sys/class/net/${iface}/tx_queue_len 2>/dev/null; echo;\n            echo -n \"type: \"; cat /sys/class/net/${iface}/type 2>/dev/null; echo;\n            echo -n \"wireless: \"; cat /proc/net/wireless 2>/dev/null | grep ${iface}; echo;\n            echo -n \"wirelessspeed: \"; iw dev ${iface} link 2>&1 | grep bitrate; echo;`;\n\n              let lines = [];\n              try {\n                lines = execSync(cmd).toString().split('\\n');\n                const connectionName = getLinuxIfaceConnectionName(iface);\n                dhcp = getLinuxIfaceDHCPstatus(iface, connectionName, _dhcpNics);\n                dnsSuffix = getLinuxIfaceDNSsuffix(connectionName);\n                ieee8021xAuth = getLinuxIfaceIEEE8021xAuth(connectionName);\n                ieee8021xState = getLinuxIfaceIEEE8021xState(ieee8021xAuth);\n              } catch (e) {\n                util.noop();\n              }\n              duplex = util.getValue(lines, 'duplex');\n              duplex = duplex.startsWith('cat') ? '' : duplex;\n              mtu = parseInt(util.getValue(lines, 'mtu'), 10);\n              let myspeed = parseInt(util.getValue(lines, 'speed'), 10);\n              speed = isNaN(myspeed) ? null : myspeed;\n              let wirelessspeed = util.getValue(lines, 'wirelessspeed').split('tx bitrate: ');\n              if (speed === null && wirelessspeed.length === 2) {\n                myspeed = parseFloat(wirelessspeed[1]);\n                speed = isNaN(myspeed) ? null : myspeed;\n              }\n              carrierChanges = parseInt(util.getValue(lines, 'carrier_changes'), 10);\n              const operstate = util.getValue(lines, 'operstate');\n              type = operstate === 'up' ? (util.getValue(lines, 'wireless').trim() ? 'wireless' : 'wired') : 'unknown';\n              if (iface === 'lo' || iface.startsWith('bond')) { type = 'virtual'; }\n\n              let internal = (ifaces[dev] && ifaces[dev][0]) ? ifaces[dev][0].internal : false;\n              if (dev.toLowerCase().indexOf('loopback') > -1 || ifaceName.toLowerCase().indexOf('loopback') > -1) {\n                internal = true;\n              }\n              const virtual = internal ? false : testVirtualNic(dev, ifaceName, mac);\n              result.push({\n                iface,\n                ifaceName,\n                default: iface === defaultInterface,\n                ip4,\n                ip4subnet,\n                ip6,\n                ip6subnet,\n                mac,\n                internal,\n                virtual,\n                operstate,\n                type,\n                duplex,\n                mtu,\n                speed,\n                dhcp,\n                dnsSuffix,\n                ieee8021xAuth,\n                ieee8021xState,\n                carrierChanges,\n              });\n            }\n          }\n          _networkInterfaces = result;\n          if (defaultString.toLowerCase().indexOf('default') >= 0) {\n            result = result.filter(item => item.default);\n            if (result.length > 0) {\n              result = result[0];\n            } else {\n              result = [];\n            }\n          }\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      }\n      if (_windows) {\n        if ((JSON.stringify(ifaces) === JSON.stringify(_ifaces)) && !rescan) {\n          // no changes - just return object\n          result = _networkInterfaces;\n\n          if (callback) { callback(result); }\n          resolve(result);\n        } else {\n          _ifaces = JSON.parse(JSON.stringify(ifaces));\n          const defaultInterface = getDefaultNetworkInterface();\n\n          getWindowsNics().then(function (nics) {\n            nics.forEach(nic => {\n              let found = false;\n              Object.keys(ifaces).forEach(key => {\n                if (!found) {\n                  ifaces[key].forEach(value => {\n                    if (Object.keys(value).indexOf('mac') >= 0) {\n                      found = value['mac'] === nic.mac;\n                    }\n                  });\n                }\n              });\n\n              if (!found) {\n                ifaces[nic.name] = [{ mac: nic.mac }];\n              }\n            });\n            nics8021xInfo = getWindowsWiredProfilesInformation();\n            dnsSuffixes = getWindowsDNSsuffixes();\n            for (let dev in ifaces) {\n              let iface = dev;\n              let ip4 = '';\n              let ip4subnet = '';\n              let ip6 = '';\n              let ip6subnet = '';\n              let mac = '';\n              let duplex = '';\n              let mtu = '';\n              let speed = null;\n              let carrierChanges = 0;\n              let operstate = 'down';\n              let dhcp = false;\n              let dnsSuffix = '';\n              let ieee8021xAuth = '';\n              let ieee8021xState = '';\n              let type = '';\n\n              if ({}.hasOwnProperty.call(ifaces, dev)) {\n                let ifaceName = dev;\n                ifaces[dev].forEach(function (details) {\n                  if (details.family === 'IPv4' || details.family === 4) {\n                    ip4 = details.address;\n                    ip4subnet = details.netmask;\n                  }\n                  if (details.family === 'IPv6' || details.family === 6) {\n                    if (!ip6 || ip6.match(/^fe80::/i)) {\n                      ip6 = details.address;\n                      ip6subnet = details.netmask;\n                    }\n                  }\n                  mac = details.mac;\n                  // fallback due to https://github.com/nodejs/node/issues/13581 (node 8.1 - node 8.2)\n                  const nodeMainVersion = parseInt(process.versions.node.split('.'), 10);\n                  if (mac.indexOf('00:00:0') > -1 && (_linux || _darwin) && (!details.internal) && nodeMainVersion >= 8 && nodeMainVersion <= 11) {\n                    if (Object.keys(_mac).length === 0) {\n                      _mac = getMacAddresses();\n                    }\n                    mac = _mac[dev] || '';\n                  }\n                });\n\n\n\n                dnsSuffix = getWindowsIfaceDNSsuffix(dnsSuffixes.ifaces, dev);\n                let foundFirst = false;\n                nics.forEach(detail => {\n                  if (detail.mac === mac && !foundFirst) {\n                    iface = detail.iface || iface;\n                    ifaceName = detail.name;\n                    dhcp = detail.dhcp;\n                    operstate = detail.operstate;\n                    speed = detail.speed;\n                    type = detail.type;\n                    foundFirst = true;\n                  }\n                });\n\n                if (dev.toLowerCase().indexOf('wlan') >= 0 || ifaceName.toLowerCase().indexOf('wlan') >= 0 || ifaceName.toLowerCase().indexOf('802.11n') >= 0 || ifaceName.toLowerCase().indexOf('wireless') >= 0 || ifaceName.toLowerCase().indexOf('wi-fi') >= 0 || ifaceName.toLowerCase().indexOf('wifi') >= 0) {\n                  type = 'wireless';\n                }\n\n                const IEEE8021x = getWindowsIEEE8021x(type, dev, nics8021xInfo);\n                ieee8021xAuth = IEEE8021x.protocol;\n                ieee8021xState = IEEE8021x.state;\n                let internal = (ifaces[dev] && ifaces[dev][0]) ? ifaces[dev][0].internal : false;\n                if (dev.toLowerCase().indexOf('loopback') > -1 || ifaceName.toLowerCase().indexOf('loopback') > -1) {\n                  internal = true;\n                }\n                const virtual = internal ? false : testVirtualNic(dev, ifaceName, mac);\n                result.push({\n                  iface,\n                  ifaceName,\n                  default: iface === defaultInterface,\n                  ip4,\n                  ip4subnet,\n                  ip6,\n                  ip6subnet,\n                  mac,\n                  internal,\n                  virtual,\n                  operstate,\n                  type,\n                  duplex,\n                  mtu,\n                  speed,\n                  dhcp,\n                  dnsSuffix,\n                  ieee8021xAuth,\n                  ieee8021xState,\n                  carrierChanges,\n                });\n              }\n            }\n            _networkInterfaces = result;\n            if (defaultString.toLowerCase().indexOf('default') >= 0) {\n              result = result.filter(item => item.default);\n              if (result.length > 0) {\n                result = result[0];\n              } else {\n                result = [];\n              }\n            }\n            if (callback) { callback(result); }\n            resolve(result);\n          });\n        }\n      }\n    });\n  });\n}\n\nexports.networkInterfaces = networkInterfaces;\n\n// --------------------------\n// NET - Speed\n\nfunction calcNetworkSpeed(iface, rx_bytes, tx_bytes, operstate, rx_dropped, rx_errors, tx_dropped, tx_errors) {\n  let result = {\n    iface,\n    operstate,\n    rx_bytes,\n    rx_dropped,\n    rx_errors,\n    tx_bytes,\n    tx_dropped,\n    tx_errors,\n    rx_sec: null,\n    tx_sec: null,\n    ms: 0\n  };\n\n  if (_network[iface] && _network[iface].ms) {\n    result.ms = Date.now() - _network[iface].ms;\n    result.rx_sec = (rx_bytes - _network[iface].rx_bytes) >= 0 ? (rx_bytes - _network[iface].rx_bytes) / (result.ms / 1000) : 0;\n    result.tx_sec = (tx_bytes - _network[iface].tx_bytes) >= 0 ? (tx_bytes - _network[iface].tx_bytes) / (result.ms / 1000) : 0;\n    _network[iface].rx_bytes = rx_bytes;\n    _network[iface].tx_bytes = tx_bytes;\n    _network[iface].rx_sec = result.rx_sec;\n    _network[iface].tx_sec = result.tx_sec;\n    _network[iface].ms = Date.now();\n    _network[iface].last_ms = result.ms;\n    _network[iface].operstate = operstate;\n  } else {\n    if (!_network[iface]) { _network[iface] = {}; }\n    _network[iface].rx_bytes = rx_bytes;\n    _network[iface].tx_bytes = tx_bytes;\n    _network[iface].rx_sec = null;\n    _network[iface].tx_sec = null;\n    _network[iface].ms = Date.now();\n    _network[iface].last_ms = 0;\n    _network[iface].operstate = operstate;\n  }\n  return result;\n}\n\nfunction networkStats(ifaces, callback) {\n\n  let ifacesArray = [];\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n\n      // fallback - if only callback is given\n      if (util.isFunction(ifaces) && !callback) {\n        callback = ifaces;\n        ifacesArray = [getDefaultNetworkInterface()];\n      } else {\n        if (typeof ifaces !== 'string' && ifaces !== undefined) {\n          if (callback) { callback([]); }\n          return resolve([]);\n        }\n        ifaces = ifaces || getDefaultNetworkInterface();\n\n        ifaces.__proto__.toLowerCase = util.stringToLower;\n        ifaces.__proto__.replace = util.stringReplace;\n        ifaces.__proto__.trim = util.stringTrim;\n\n        ifaces = ifaces.trim().toLowerCase().replace(/,+/g, '|');\n        ifacesArray = ifaces.split('|');\n      }\n\n      const result = [];\n\n      const workload = [];\n      if (ifacesArray.length && ifacesArray[0].trim() === '*') {\n        ifacesArray = [];\n        networkInterfaces(false).then(allIFaces => {\n          for (let iface of allIFaces) {\n            ifacesArray.push(iface.iface);\n          }\n          networkStats(ifacesArray.join(',')).then(result => {\n            if (callback) { callback(result); }\n            resolve(result);\n          });\n        });\n      } else {\n        for (let iface of ifacesArray) {\n          workload.push(networkStatsSingle(iface.trim()));\n        }\n        if (workload.length) {\n          Promise.all(\n            workload\n          ).then(data => {\n            if (callback) { callback(data); }\n            resolve(data);\n          });\n        } else {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      }\n    });\n  });\n}\n\nfunction networkStatsSingle(iface) {\n\n  function parseLinesWindowsPerfData(sections) {\n    let perfData = [];\n    for (let i in sections) {\n      if ({}.hasOwnProperty.call(sections, i)) {\n        if (sections[i].trim() !== '') {\n          let lines = sections[i].trim().split('\\r\\n');\n          perfData.push({\n            name: util.getValue(lines, 'Name', ':').replace(/[()[\\] ]+/g, '').replace('#', '_').toLowerCase(),\n            rx_bytes: parseInt(util.getValue(lines, 'BytesReceivedPersec', ':'), 10),\n            rx_errors: parseInt(util.getValue(lines, 'PacketsReceivedErrors', ':'), 10),\n            rx_dropped: parseInt(util.getValue(lines, 'PacketsReceivedDiscarded', ':'), 10),\n            tx_bytes: parseInt(util.getValue(lines, 'BytesSentPersec', ':'), 10),\n            tx_errors: parseInt(util.getValue(lines, 'PacketsOutboundErrors', ':'), 10),\n            tx_dropped: parseInt(util.getValue(lines, 'PacketsOutboundDiscarded', ':'), 10)\n          });\n        }\n      }\n    }\n    return perfData;\n  }\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      let ifaceSanitized = '';\n      const s = util.isPrototypePolluted() ? '---' : util.sanitizeShellString(iface);\n      for (let i = 0; i <= util.mathMin(s.length, 2000); i++) {\n        if (!(s[i] === undefined)) {\n          ifaceSanitized = ifaceSanitized + s[i];\n        }\n      }\n\n      let result = {\n        iface: ifaceSanitized,\n        operstate: 'unknown',\n        rx_bytes: 0,\n        rx_dropped: 0,\n        rx_errors: 0,\n        tx_bytes: 0,\n        tx_dropped: 0,\n        tx_errors: 0,\n        rx_sec: null,\n        tx_sec: null,\n        ms: 0\n      };\n\n      let operstate = 'unknown';\n      let rx_bytes = 0;\n      let tx_bytes = 0;\n      let rx_dropped = 0;\n      let rx_errors = 0;\n      let tx_dropped = 0;\n      let tx_errors = 0;\n\n      let cmd, lines, stats;\n      if (!_network[ifaceSanitized] || (_network[ifaceSanitized] && !_network[ifaceSanitized].ms) || (_network[ifaceSanitized] && _network[ifaceSanitized].ms && Date.now() - _network[ifaceSanitized].ms >= 500)) {\n        if (_linux) {\n          if (fs.existsSync('/sys/class/net/' + ifaceSanitized)) {\n            cmd =\n              'cat /sys/class/net/' + ifaceSanitized + '/operstate; ' +\n              'cat /sys/class/net/' + ifaceSanitized + '/statistics/rx_bytes; ' +\n              'cat /sys/class/net/' + ifaceSanitized + '/statistics/tx_bytes; ' +\n              'cat /sys/class/net/' + ifaceSanitized + '/statistics/rx_dropped; ' +\n              'cat /sys/class/net/' + ifaceSanitized + '/statistics/rx_errors; ' +\n              'cat /sys/class/net/' + ifaceSanitized + '/statistics/tx_dropped; ' +\n              'cat /sys/class/net/' + ifaceSanitized + '/statistics/tx_errors; ';\n            exec(cmd, function (error, stdout) {\n              if (!error) {\n                lines = stdout.toString().split('\\n');\n                operstate = lines[0].trim();\n                rx_bytes = parseInt(lines[1], 10);\n                tx_bytes = parseInt(lines[2], 10);\n                rx_dropped = parseInt(lines[3], 10);\n                rx_errors = parseInt(lines[4], 10);\n                tx_dropped = parseInt(lines[5], 10);\n                tx_errors = parseInt(lines[6], 10);\n\n                result = calcNetworkSpeed(ifaceSanitized, rx_bytes, tx_bytes, operstate, rx_dropped, rx_errors, tx_dropped, tx_errors);\n\n              }\n              resolve(result);\n            });\n          } else {\n            resolve(result);\n          }\n        }\n        if (_freebsd || _openbsd || _netbsd) {\n          cmd = 'netstat -ibndI ' + ifaceSanitized;   // lgtm [js/shell-command-constructed-from-input]\n          exec(cmd, function (error, stdout) {\n            if (!error) {\n              lines = stdout.toString().split('\\n');\n              for (let i = 1; i < lines.length; i++) {\n                const line = lines[i].replace(/ +/g, ' ').split(' ');\n                if (line && line[0] && line[7] && line[10]) {\n                  rx_bytes = rx_bytes + parseInt(line[7]);\n                  if (line[6].trim() !== '-') { rx_dropped = rx_dropped + parseInt(line[6]); }\n                  if (line[5].trim() !== '-') { rx_errors = rx_errors + parseInt(line[5]); }\n                  tx_bytes = tx_bytes + parseInt(line[10]);\n                  if (line[12].trim() !== '-') { tx_dropped = tx_dropped + parseInt(line[12]); }\n                  if (line[9].trim() !== '-') { tx_errors = tx_errors + parseInt(line[9]); }\n                  operstate = 'up';\n                }\n              }\n              result = calcNetworkSpeed(ifaceSanitized, rx_bytes, tx_bytes, operstate, rx_dropped, rx_errors, tx_dropped, tx_errors);\n            }\n            resolve(result);\n          });\n        }\n        if (_darwin) {\n          cmd = 'ifconfig ' + ifaceSanitized + ' | grep \"status\"';    // lgtm [js/shell-command-constructed-from-input]\n          exec(cmd, function (error, stdout) {\n            result.operstate = (stdout.toString().split(':')[1] || '').trim();\n            result.operstate = (result.operstate || '').toLowerCase();\n            result.operstate = (result.operstate === 'active' ? 'up' : (result.operstate === 'inactive' ? 'down' : 'unknown'));\n            cmd = 'netstat -bdI ' + ifaceSanitized;   // lgtm [js/shell-command-constructed-from-input]\n            exec(cmd, function (error, stdout) {\n              if (!error) {\n                lines = stdout.toString().split('\\n');\n                // if there is less than 2 lines, no information for this interface was found\n                if (lines.length > 1 && lines[1].trim() !== '') {\n                  // skip header line\n                  // use the second line because it is tied to the NIC instead of the ipv4 or ipv6 address\n                  stats = lines[1].replace(/ +/g, ' ').split(' ');\n                  const offset = stats.length > 11 ? 1 : 0;\n                  rx_bytes = parseInt(stats[offset + 5]);\n                  rx_dropped = parseInt(stats[offset + 10]);\n                  rx_errors = parseInt(stats[offset + 4]);\n                  tx_bytes = parseInt(stats[offset + 8]);\n                  tx_dropped = parseInt(stats[offset + 10]);\n                  tx_errors = parseInt(stats[offset + 7]);\n                  result = calcNetworkSpeed(ifaceSanitized, rx_bytes, tx_bytes, result.operstate, rx_dropped, rx_errors, tx_dropped, tx_errors);\n                }\n              }\n              resolve(result);\n            });\n          });\n        }\n        if (_windows) {\n          let perfData = [];\n          let ifaceName = ifaceSanitized;\n\n          // Performance Data\n          util.powerShell('Get-WmiObject Win32_PerfRawData_Tcpip_NetworkInterface | select Name,BytesReceivedPersec,PacketsReceivedErrors,PacketsReceivedDiscarded,BytesSentPersec,PacketsOutboundErrors,PacketsOutboundDiscarded | fl').then((stdout, error) => {\n            if (!error) {\n              const psections = stdout.toString().split(/\\n\\s*\\n/);\n              perfData = parseLinesWindowsPerfData(psections);\n            }\n\n            // Network Interfaces\n            networkInterfaces(false).then(interfaces => {\n              // get bytes sent, received from perfData by name\n              rx_bytes = 0;\n              tx_bytes = 0;\n              perfData.forEach(detail => {\n                interfaces.forEach(det => {\n                  if ((det.iface.toLowerCase() === ifaceSanitized.toLowerCase() ||\n                    det.mac.toLowerCase() === ifaceSanitized.toLowerCase() ||\n                    det.ip4.toLowerCase() === ifaceSanitized.toLowerCase() ||\n                    det.ip6.toLowerCase() === ifaceSanitized.toLowerCase() ||\n                    det.ifaceName.replace(/[()[\\] ]+/g, '').replace('#', '_').toLowerCase() === ifaceSanitized.replace(/[()[\\] ]+/g, '').replace('#', '_').toLowerCase()) &&\n                    (det.ifaceName.replace(/[()[\\] ]+/g, '').replace('#', '_').toLowerCase() === detail.name)) {\n                    ifaceName = det.iface;\n                    rx_bytes = detail.rx_bytes;\n                    rx_dropped = detail.rx_dropped;\n                    rx_errors = detail.rx_errors;\n                    tx_bytes = detail.tx_bytes;\n                    tx_dropped = detail.tx_dropped;\n                    tx_errors = detail.tx_errors;\n                    operstate = det.operstate;\n                  }\n                });\n              });\n              if (rx_bytes && tx_bytes) {\n                result = calcNetworkSpeed(ifaceName, parseInt(rx_bytes), parseInt(tx_bytes), operstate, rx_dropped, rx_errors, tx_dropped, tx_errors);\n              }\n              resolve(result);\n            });\n          });\n        }\n      } else {\n        result.rx_bytes = _network[ifaceSanitized].rx_bytes;\n        result.tx_bytes = _network[ifaceSanitized].tx_bytes;\n        result.rx_sec = _network[ifaceSanitized].rx_sec;\n        result.tx_sec = _network[ifaceSanitized].tx_sec;\n        result.ms = _network[ifaceSanitized].last_ms;\n        result.operstate = _network[ifaceSanitized].operstate;\n        resolve(result);\n      }\n    });\n  });\n}\n\nexports.networkStats = networkStats;\n\n// --------------------------\n// NET - connections (sockets)\n\nfunction networkConnections(callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      let result = [];\n      if (_linux || _freebsd || _openbsd || _netbsd) {\n        let cmd = 'export LC_ALL=C; netstat -tunap | grep \"ESTABLISHED\\\\|SYN_SENT\\\\|SYN_RECV\\\\|FIN_WAIT1\\\\|FIN_WAIT2\\\\|TIME_WAIT\\\\|CLOSE\\\\|CLOSE_WAIT\\\\|LAST_ACK\\\\|LISTEN\\\\|CLOSING\\\\|UNKNOWN\"; unset LC_ALL';\n        if (_freebsd || _openbsd || _netbsd) { cmd = 'export LC_ALL=C; netstat -na | grep \"ESTABLISHED\\\\|SYN_SENT\\\\|SYN_RECV\\\\|FIN_WAIT1\\\\|FIN_WAIT2\\\\|TIME_WAIT\\\\|CLOSE\\\\|CLOSE_WAIT\\\\|LAST_ACK\\\\|LISTEN\\\\|CLOSING\\\\|UNKNOWN\"; unset LC_ALL'; }\n        exec(cmd, { maxBuffer: 1024 * 20000 }, function (error, stdout) {\n          let lines = stdout.toString().split('\\n');\n          if (!error && (lines.length > 1 || lines[0] != '')) {\n            lines.forEach(function (line) {\n              line = line.replace(/ +/g, ' ').split(' ');\n              if (line.length >= 7) {\n                let localip = line[3];\n                let localport = '';\n                let localaddress = line[3].split(':');\n                if (localaddress.length > 1) {\n                  localport = localaddress[localaddress.length - 1];\n                  localaddress.pop();\n                  localip = localaddress.join(':');\n                }\n                let peerip = line[4];\n                let peerport = '';\n                let peeraddress = line[4].split(':');\n                if (peeraddress.length > 1) {\n                  peerport = peeraddress[peeraddress.length - 1];\n                  peeraddress.pop();\n                  peerip = peeraddress.join(':');\n                }\n                let connstate = line[5];\n                // if (connstate === 'VERBUNDEN') connstate = 'ESTABLISHED';\n                let proc = line[6].split('/');\n\n                if (connstate) {\n                  result.push({\n                    protocol: line[0],\n                    localAddress: localip,\n                    localPort: localport,\n                    peerAddress: peerip,\n                    peerPort: peerport,\n                    state: connstate,\n                    pid: proc[0] && proc[0] !== '-' ? parseInt(proc[0], 10) : null,\n                    process: proc[1] ? proc[1].split(' ')[0] : ''\n                  });\n                }\n              }\n            });\n            if (callback) {\n              callback(result);\n            }\n            resolve(result);\n          } else {\n            cmd = 'ss -tunap | grep \"ESTAB\\\\|SYN-SENT\\\\|SYN-RECV\\\\|FIN-WAIT1\\\\|FIN-WAIT2\\\\|TIME-WAIT\\\\|CLOSE\\\\|CLOSE-WAIT\\\\|LAST-ACK\\\\|LISTEN\\\\|CLOSING\"';\n            exec(cmd, { maxBuffer: 1024 * 20000 }, function (error, stdout) {\n\n              if (!error) {\n                let lines = stdout.toString().split('\\n');\n                lines.forEach(function (line) {\n                  line = line.replace(/ +/g, ' ').split(' ');\n                  if (line.length >= 6) {\n                    let localip = line[4];\n                    let localport = '';\n                    let localaddress = line[4].split(':');\n                    if (localaddress.length > 1) {\n                      localport = localaddress[localaddress.length - 1];\n                      localaddress.pop();\n                      localip = localaddress.join(':');\n                    }\n                    let peerip = line[5];\n                    let peerport = '';\n                    let peeraddress = line[5].split(':');\n                    if (peeraddress.length > 1) {\n                      peerport = peeraddress[peeraddress.length - 1];\n                      peeraddress.pop();\n                      peerip = peeraddress.join(':');\n                    }\n                    let connstate = line[1];\n                    if (connstate === 'ESTAB') { connstate = 'ESTABLISHED'; }\n                    if (connstate === 'TIME-WAIT') { connstate = 'TIME_WAIT'; }\n                    let pid = null;\n                    let process = '';\n                    if (line.length >= 7 && line[6].indexOf('users:') > -1) {\n                      let proc = line[6].replace('users:((\"', '').replace(/\"/g, '').split(',');\n                      if (proc.length > 2) {\n                        process = proc[0].split(' ')[0];\n                        pid = parseInt(proc[1], 10);\n                      }\n                    }\n                    if (connstate) {\n                      result.push({\n                        protocol: line[0],\n                        localAddress: localip,\n                        localPort: localport,\n                        peerAddress: peerip,\n                        peerPort: peerport,\n                        state: connstate,\n                        pid,\n                        process\n                      });\n                    }\n                  }\n                });\n              }\n              if (callback) {\n                callback(result);\n              }\n              resolve(result);\n            });\n          }\n        });\n      }\n      if (_darwin) {\n        let cmd = 'netstat -natv | grep \"ESTABLISHED\\\\|SYN_SENT\\\\|SYN_RECV\\\\|FIN_WAIT1\\\\|FIN_WAIT2\\\\|TIME_WAIT\\\\|CLOSE\\\\|CLOSE_WAIT\\\\|LAST_ACK\\\\|LISTEN\\\\|CLOSING\\\\|UNKNOWN\"';\n        exec(cmd, { maxBuffer: 1024 * 20000 }, function (error, stdout) {\n          if (!error) {\n\n            let lines = stdout.toString().split('\\n');\n\n            lines.forEach(function (line) {\n              line = line.replace(/ +/g, ' ').split(' ');\n              if (line.length >= 8) {\n                let localip = line[3];\n                let localport = '';\n                let localaddress = line[3].split('.');\n                if (localaddress.length > 1) {\n                  localport = localaddress[localaddress.length - 1];\n                  localaddress.pop();\n                  localip = localaddress.join('.');\n                }\n                let peerip = line[4];\n                let peerport = '';\n                let peeraddress = line[4].split('.');\n                if (peeraddress.length > 1) {\n                  peerport = peeraddress[peeraddress.length - 1];\n                  peeraddress.pop();\n                  peerip = peeraddress.join('.');\n                }\n                let connstate = line[5];\n                let pid = parseInt(line[8], 10);\n                if (connstate) {\n                  result.push({\n                    protocol: line[0],\n                    localAddress: localip,\n                    localPort: localport,\n                    peerAddress: peerip,\n                    peerPort: peerport,\n                    state: connstate,\n                    pid: pid,\n                    process: ''\n                  });\n                }\n              }\n            });\n            if (callback) {\n              callback(result);\n            }\n            resolve(result);\n          }\n        });\n      }\n      if (_windows) {\n        let cmd = 'netstat -nao';\n        try {\n          exec(cmd, util.execOptsWin, function (error, stdout) {\n            if (!error) {\n\n              let lines = stdout.toString().split('\\r\\n');\n\n              lines.forEach(function (line) {\n                line = line.trim().replace(/ +/g, ' ').split(' ');\n                if (line.length >= 4) {\n                  let localip = line[1];\n                  let localport = '';\n                  let localaddress = line[1].split(':');\n                  if (localaddress.length > 1) {\n                    localport = localaddress[localaddress.length - 1];\n                    localaddress.pop();\n                    localip = localaddress.join(':');\n                  }\n                  let peerip = line[2];\n                  let peerport = '';\n                  let peeraddress = line[2].split(':');\n                  if (peeraddress.length > 1) {\n                    peerport = peeraddress[peeraddress.length - 1];\n                    peeraddress.pop();\n                    peerip = peeraddress.join(':');\n                  }\n                  let pid = util.toInt(line[4]);\n                  let connstate = line[3];\n                  if (connstate === 'HERGESTELLT') { connstate = 'ESTABLISHED'; }\n                  if (connstate.startsWith('ABH')) { connstate = 'LISTEN'; }\n                  if (connstate === 'SCHLIESSEN_WARTEN') { connstate = 'CLOSE_WAIT'; }\n                  if (connstate === 'WARTEND') { connstate = 'TIME_WAIT'; }\n                  if (connstate === 'SYN_GESENDET') { connstate = 'SYN_SENT'; }\n\n                  if (connstate === 'LISTENING') { connstate = 'LISTEN'; }\n                  if (connstate === 'SYN_RECEIVED') { connstate = 'SYN_RECV'; }\n                  if (connstate === 'FIN_WAIT_1') { connstate = 'FIN_WAIT1'; }\n                  if (connstate === 'FIN_WAIT_2') { connstate = 'FIN_WAIT2'; }\n                  if (connstate) {\n                    result.push({\n                      protocol: line[0].toLowerCase(),\n                      localAddress: localip,\n                      localPort: localport,\n                      peerAddress: peerip,\n                      peerPort: peerport,\n                      state: connstate,\n                      pid,\n                      process: ''\n                    });\n                  }\n                }\n              });\n              if (callback) {\n                callback(result);\n              }\n              resolve(result);\n            }\n          });\n        } catch (e) {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      }\n    });\n  });\n}\n\nexports.networkConnections = networkConnections;\n\nfunction networkGatewayDefault(callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      let result = '';\n      if (_linux || _freebsd || _openbsd || _netbsd) {\n        let cmd = 'ip route get 1';\n        try {\n          exec(cmd, { maxBuffer: 1024 * 20000 }, function (error, stdout) {\n            if (!error) {\n              let lines = stdout.toString().split('\\n');\n              const line = lines && lines[0] ? lines[0] : '';\n              let parts = line.split(' via ');\n              if (parts && parts[1]) {\n                parts = parts[1].split(' ');\n                result = parts[0];\n              }\n              if (callback) {\n                callback(result);\n              }\n              resolve(result);\n            } else {\n              if (callback) {\n                callback(result);\n              }\n              resolve(result);\n            }\n          });\n        } catch (e) {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      }\n      if (_darwin) {\n        let cmd = 'route -n get default';\n        try {\n          exec(cmd, { maxBuffer: 1024 * 20000 }, function (error, stdout) {\n            if (!error) {\n              const lines = stdout.toString().split('\\n').map(line => line.trim());\n              result = util.getValue(lines, 'gateway');\n            }\n            if (!result) {\n              cmd = 'netstat -rn | awk \\'/default/ {print $2}\\'';\n              exec(cmd, { maxBuffer: 1024 * 20000 }, function (error, stdout) {\n                const lines = stdout.toString().split('\\n').map(line => line.trim());\n                result = lines.find(line => (/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(line)));\n                if (callback) {\n                  callback(result);\n                }\n                resolve(result);\n              });\n            } else {\n              if (callback) {\n                callback(result);\n              }\n              resolve(result);\n            }\n          });\n        } catch (e) {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      }\n      if (_windows) {\n        try {\n          exec('netstat -r', util.execOptsWin, function (error, stdout) {\n            const lines = stdout.toString().split(os.EOL);\n            lines.forEach(line => {\n              line = line.replace(/\\s+/g, ' ').trim();\n              if (line.indexOf('0.0.0.0 0.0.0.0') > -1 && !(/[a-zA-Z]/.test(line))) {\n                const parts = line.split(' ');\n                if (parts.length >= 5 && (parts[parts.length - 3]).indexOf('.') > -1) {\n                  result = parts[parts.length - 3];\n                }\n              }\n            });\n            if (!result) {\n              util.powerShell('Get-CimInstance -ClassName Win32_IP4RouteTable | Where-Object { $_.Destination -eq \\'0.0.0.0\\' -and $_.Mask -eq \\'0.0.0.0\\' }')\n                .then(data => {\n                  let lines = data.toString().split('\\r\\n');\n                  if (lines.length > 1 && !result) {\n                    result = util.getValue(lines, 'NextHop');\n                    if (callback) {\n                      callback(result);\n                    }\n                    resolve(result);\n                    // } else {\n                    //   exec('ipconfig', util.execOptsWin, function (error, stdout) {\n                    //     let lines = stdout.toString().split('\\r\\n');\n                    //     lines.forEach(function (line) {\n                    //       line = line.trim().replace(/\\. /g, '');\n                    //       line = line.trim().replace(/ +/g, '');\n                    //       const parts = line.split(':');\n                    //       if ((parts[0].toLowerCase().startsWith('standardgate') || parts[0].toLowerCase().indexOf('gateway') > -1 || parts[0].toLowerCase().indexOf('enlace') > -1) && parts[1]) {\n                    //         result = parts[1];\n                    //       }\n                    //     });\n                    //     if (callback) { callback(result); }\n                    //     resolve(result);\n                    //   });\n                  }\n                });\n            } else {\n              if (callback) {\n                callback(result);\n              }\n              resolve(result);\n            }\n          });\n        } catch (e) {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      }\n    });\n  });\n}\n\nexports.networkGatewayDefault = networkGatewayDefault;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/systeminformation/lib/network.js?")},"./node_modules/systeminformation/lib/osinfo.js":
/*!******************************************************!*\
  !*** ./node_modules/systeminformation/lib/osinfo.js ***!
  \******************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n// @ts-check\n// ==================================================================================\n// osinfo.js\n// ----------------------------------------------------------------------------------\n// Description:   System Information - library\n//                for Node.js\n// Copyright:     (c) 2014 - 2022\n// Author:        Sebastian Hildebrandt\n// ----------------------------------------------------------------------------------\n// License:       MIT\n// ==================================================================================\n// 3. Operating System\n// ----------------------------------------------------------------------------------\n\nconst os = __webpack_require__(/*! os */ \"os\");\nconst fs = __webpack_require__(/*! fs */ \"fs\");\nconst util = __webpack_require__(/*! ./util */ \"./node_modules/systeminformation/lib/util.js\");\nconst exec = (__webpack_require__(/*! child_process */ \"child_process\").exec);\nconst execSync = (__webpack_require__(/*! child_process */ \"child_process\").execSync);\n// const execPromise = util.promisify(require('child_process').exec);\n\nlet _platform = process.platform;\n\nconst _linux = (_platform === 'linux' || _platform === 'android');\nconst _darwin = (_platform === 'darwin');\nconst _windows = (_platform === 'win32');\nconst _freebsd = (_platform === 'freebsd');\nconst _openbsd = (_platform === 'openbsd');\nconst _netbsd = (_platform === 'netbsd');\nconst _sunos = (_platform === 'sunos');\n\n// --------------------------\n// Get current time and OS uptime\n\nfunction time() {\n  let t = new Date().toString().split(' ');\n  return {\n    current: Date.now(),\n    uptime: os.uptime(),\n    timezone: (t.length >= 7) ? t[5] : '',\n    timezoneName: Intl ? Intl.DateTimeFormat().resolvedOptions().timeZone : (t.length >= 7) ? t.slice(6).join(' ').replace(/\\(/g, '').replace(/\\)/g, '') : ''\n  };\n}\n\nexports.time = time;\n\n// --------------------------\n// Get logo filename of OS distribution\n\nfunction getLogoFile(distro) {\n  distro = distro || '';\n  distro = distro.toLowerCase();\n  let result = _platform;\n  if (_windows) {\n    result = 'windows';\n  }\n  else if (distro.indexOf('mac os') !== -1) {\n    result = 'apple';\n  }\n  else if (distro.indexOf('arch') !== -1) {\n    result = 'arch';\n  }\n  else if (distro.indexOf('centos') !== -1) {\n    result = 'centos';\n  }\n  else if (distro.indexOf('coreos') !== -1) {\n    result = 'coreos';\n  }\n  else if (distro.indexOf('debian') !== -1) {\n    result = 'debian';\n  }\n  else if (distro.indexOf('deepin') !== -1) {\n    result = 'deepin';\n  }\n  else if (distro.indexOf('elementary') !== -1) {\n    result = 'elementary';\n  }\n  else if (distro.indexOf('fedora') !== -1) {\n    result = 'fedora';\n  }\n  else if (distro.indexOf('gentoo') !== -1) {\n    result = 'gentoo';\n  }\n  else if (distro.indexOf('mageia') !== -1) {\n    result = 'mageia';\n  }\n  else if (distro.indexOf('mandriva') !== -1) {\n    result = 'mandriva';\n  }\n  else if (distro.indexOf('manjaro') !== -1) {\n    result = 'manjaro';\n  }\n  else if (distro.indexOf('mint') !== -1) {\n    result = 'mint';\n  }\n  else if (distro.indexOf('mx') !== -1) {\n    result = 'mx';\n  }\n  else if (distro.indexOf('openbsd') !== -1) {\n    result = 'openbsd';\n  }\n  else if (distro.indexOf('freebsd') !== -1) {\n    result = 'freebsd';\n  }\n  else if (distro.indexOf('opensuse') !== -1) {\n    result = 'opensuse';\n  }\n  else if (distro.indexOf('pclinuxos') !== -1) {\n    result = 'pclinuxos';\n  }\n  else if (distro.indexOf('puppy') !== -1) {\n    result = 'puppy';\n  }\n  else if (distro.indexOf('raspbian') !== -1) {\n    result = 'raspbian';\n  }\n  else if (distro.indexOf('reactos') !== -1) {\n    result = 'reactos';\n  }\n  else if (distro.indexOf('redhat') !== -1) {\n    result = 'redhat';\n  }\n  else if (distro.indexOf('slackware') !== -1) {\n    result = 'slackware';\n  }\n  else if (distro.indexOf('sugar') !== -1) {\n    result = 'sugar';\n  }\n  else if (distro.indexOf('steam') !== -1) {\n    result = 'steam';\n  }\n  else if (distro.indexOf('suse') !== -1) {\n    result = 'suse';\n  }\n  else if (distro.indexOf('mate') !== -1) {\n    result = 'ubuntu-mate';\n  }\n  else if (distro.indexOf('lubuntu') !== -1) {\n    result = 'lubuntu';\n  }\n  else if (distro.indexOf('xubuntu') !== -1) {\n    result = 'xubuntu';\n  }\n  else if (distro.indexOf('ubuntu') !== -1) {\n    result = 'ubuntu';\n  }\n  else if (distro.indexOf('solaris') !== -1) {\n    result = 'solaris';\n  }\n  else if (distro.indexOf('tails') !== -1) {\n    result = 'tails';\n  }\n  else if (distro.indexOf('feren') !== -1) {\n    result = 'ferenos';\n  }\n  else if (distro.indexOf('robolinux') !== -1) {\n    result = 'robolinux';\n  } else if (_linux && distro) {\n    result = distro.toLowerCase().trim().replace(/\\s+/g, '-');\n  }\n  return result;\n}\n\n// --------------------------\n// FQDN\n\nfunction getFQDN() {\n  let fqdn = os.hostname;\n  if (_linux || _darwin) {\n    try {\n      const stdout = execSync('hostname -f');\n      fqdn = stdout.toString().split(os.EOL)[0];\n    } catch (e) {\n      util.noop();\n    }\n  }\n  if (_freebsd || _openbsd || _netbsd) {\n    try {\n      const stdout = execSync('hostname');\n      fqdn = stdout.toString().split(os.EOL)[0];\n    } catch (e) {\n      util.noop();\n    }\n  }\n  if (_windows) {\n    try {\n      const stdout = execSync('echo %COMPUTERNAME%.%USERDNSDOMAIN%', util.execOptsWin);\n      fqdn = stdout.toString().replace('.%USERDNSDOMAIN%', '').split(os.EOL)[0];\n    } catch (e) {\n      util.noop();\n    }\n  }\n  return fqdn;\n}\n\n// --------------------------\n// OS Information\n\nfunction osInfo(callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      let result = {\n\n        platform: (_platform === 'win32' ? 'Windows' : _platform),\n        distro: 'unknown',\n        release: 'unknown',\n        codename: '',\n        kernel: os.release(),\n        arch: os.arch(),\n        hostname: os.hostname(),\n        fqdn: getFQDN(),\n        codepage: '',\n        logofile: '',\n        serial: '',\n        build: '',\n        servicepack: '',\n        uefi: false\n      };\n\n      if (_linux) {\n\n        exec('cat /etc/*-release; cat /usr/lib/os-release; cat /etc/openwrt_release', function (error, stdout) {\n          //if (!error) {\n          /**\n           * @namespace\n           * @property {string}  DISTRIB_ID\n           * @property {string}  NAME\n           * @property {string}  DISTRIB_RELEASE\n           * @property {string}  VERSION_ID\n           * @property {string}  DISTRIB_CODENAME\n           */\n          let release = {};\n          let lines = stdout.toString().split('\\n');\n          lines.forEach(function (line) {\n            if (line.indexOf('=') !== -1) {\n              release[line.split('=')[0].trim().toUpperCase()] = line.split('=')[1].trim();\n            }\n          });\n          let releaseVersion = (release.VERSION || '').replace(/\"/g, '');\n          let codename = (release.DISTRIB_CODENAME || release.VERSION_CODENAME || '').replace(/\"/g, '');\n          if (releaseVersion.indexOf('(') >= 0) {\n            codename = releaseVersion.split('(')[1].replace(/[()]/g, '').trim();\n            releaseVersion = releaseVersion.split('(')[0].trim();\n          }\n          result.distro = (release.DISTRIB_ID || release.NAME || 'unknown').replace(/\"/g, '');\n          result.logofile = getLogoFile(result.distro);\n          result.release = (releaseVersion || release.DISTRIB_RELEASE || release.VERSION_ID || 'unknown').replace(/\"/g, '');\n          result.codename = codename;\n          result.codepage = util.getCodepage();\n          result.build = (release.BUILD_ID || '').replace(/\"/g, '').trim();\n          isUefiLinux().then(uefi => {\n            result.uefi = uefi;\n            uuid().then(data => {\n              result.serial = data.os;\n              if (callback) {\n                callback(result);\n              }\n              resolve(result);\n            });\n          });\n          //}\n        });\n      }\n      if (_freebsd || _openbsd || _netbsd) {\n\n        exec('sysctl kern.ostype kern.osrelease kern.osrevision kern.hostuuid machdep.bootmethod', function (error, stdout) {\n          if (!error) {\n            let lines = stdout.toString().split('\\n');\n            result.distro = util.getValue(lines, 'kern.ostype');\n            result.logofile = getLogoFile(result.distro);\n            result.release = util.getValue(lines, 'kern.osrelease').split('-')[0];\n            result.serial = util.getValue(lines, 'kern.uuid');\n            result.codename = '';\n            result.codepage = util.getCodepage();\n            result.uefi = util.getValue(lines, 'machdep.bootmethod').toLowerCase().indexOf('uefi') >= 0;\n          }\n          if (callback) {\n            callback(result);\n          }\n          resolve(result);\n        });\n      }\n      if (_darwin) {\n        exec('sw_vers; sysctl kern.ostype kern.osrelease kern.osrevision kern.uuid', function (error, stdout) {\n          let lines = stdout.toString().split('\\n');\n          result.serial = util.getValue(lines, 'kern.uuid');\n          result.distro = util.getValue(lines, 'ProductName');\n          result.release = util.getValue(lines, 'ProductVersion');\n          result.build = util.getValue(lines, 'BuildVersion');\n          result.logofile = getLogoFile(result.distro);\n          result.codename = 'macOS';\n          result.codename = (result.release.indexOf('10.4') > -1 ? 'Mac OS X Tiger' : result.codename);\n          result.codename = (result.release.indexOf('10.4') > -1 ? 'Mac OS X Tiger' : result.codename);\n          result.codename = (result.release.indexOf('10.4') > -1 ? 'Mac OS X Tiger' : result.codename);\n          result.codename = (result.release.indexOf('10.5') > -1 ? 'Mac OS X Leopard' : result.codename);\n          result.codename = (result.release.indexOf('10.6') > -1 ? 'Mac OS X Snow Leopard' : result.codename);\n          result.codename = (result.release.indexOf('10.7') > -1 ? 'Mac OS X Lion' : result.codename);\n          result.codename = (result.release.indexOf('10.8') > -1 ? 'OS X Mountain Lion' : result.codename);\n          result.codename = (result.release.indexOf('10.9') > -1 ? 'OS X Mavericks' : result.codename);\n          result.codename = (result.release.indexOf('10.10') > -1 ? 'OS X Yosemite' : result.codename);\n          result.codename = (result.release.indexOf('10.11') > -1 ? 'OS X El Capitan' : result.codename);\n          result.codename = (result.release.indexOf('10.12') > -1 ? 'macOS Sierra' : result.codename);\n          result.codename = (result.release.indexOf('10.13') > -1 ? 'macOS High Sierra' : result.codename);\n          result.codename = (result.release.indexOf('10.14') > -1 ? 'macOS Mojave' : result.codename);\n          result.codename = (result.release.indexOf('10.15') > -1 ? 'macOS Catalina' : result.codename);\n          result.codename = (result.release.startsWith('11.') ? 'macOS Big Sur' : result.codename);\n          result.codename = (result.release.startsWith('12.') ? 'macOS Monterey' : result.codename);\n          result.uefi = true;\n          result.codepage = util.getCodepage();\n          if (callback) {\n            callback(result);\n          }\n          resolve(result);\n        });\n      }\n      if (_sunos) {\n        result.release = result.kernel;\n        exec('uname -o', function (error, stdout) {\n          let lines = stdout.toString().split('\\n');\n          result.distro = lines[0];\n          result.logofile = getLogoFile(result.distro);\n          if (callback) { callback(result); }\n          resolve(result);\n        });\n      }\n      if (_windows) {\n        result.logofile = getLogoFile();\n        result.release = result.kernel;\n        try {\n          const workload = [];\n          workload.push(util.powerShell('Get-WmiObject Win32_OperatingSystem | select Caption,SerialNumber,BuildNumber,ServicePackMajorVersion,ServicePackMinorVersion | fl'));\n          // workload.push(execPromise('systeminfo', util.execOptsWin));\n          // workload.push(util.powerShell('Get-ComputerInfo -property \"HyperV*\"'));\n          workload.push(util.powerShell('(Get-CimInstance Win32_ComputerSystem).HypervisorPresent'));\n          workload.push(util.powerShell('Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.SystemInformation]::TerminalServerSession'));\n          util.promiseAll(\n            workload\n          ).then(data => {\n            let lines = data.results[0] ? data.results[0].toString().split('\\r\\n') : [''];\n            result.distro = util.getValue(lines, 'Caption', ':').trim();\n            result.serial = util.getValue(lines, 'SerialNumber', ':').trim();\n            result.build = util.getValue(lines, 'BuildNumber', ':').trim();\n            result.servicepack = util.getValue(lines, 'ServicePackMajorVersion', ':').trim() + '.' + util.getValue(lines, 'ServicePackMinorVersion', ':').trim();\n            result.codepage = util.getCodepage();\n            // const systeminfo = data.results[1] ? data.results[1].toString() : '';\n            // result.hypervisor = (systeminfo.indexOf('hypervisor has been detected') !== -1) || (systeminfo.indexOf('ein Hypervisor erkannt') !== -1) || (systeminfo.indexOf('Un hyperviseur a ') !== -1);\n            // const hyperv = data.results[1] ? data.results[1].toString().split('\\r\\n') : [];\n            // result.hypervisor = (util.getValue(hyperv, 'HyperVisorPresent').toLowerCase() === 'true');\n            const hyperv = data.results[1] ? data.results[1].toString().toLowerCase() : '';\n            result.hypervisor = hyperv.indexOf('true') !== -1;\n            const term = data.results[2] ? data.results[2].toString() : '';\n            result.remoteSession = (term.toString().toLowerCase().indexOf('true') >= 0);\n            isUefiWindows().then(uefi => {\n              result.uefi = uefi;\n              if (callback) {\n                callback(result);\n              }\n              resolve(result);\n            });\n          });\n        } catch (e) {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      }\n    });\n  });\n}\n\nexports.osInfo = osInfo;\n\nfunction isUefiLinux() {\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      fs.stat('/sys/firmware/efi', function (err) {\n        if (!err) {\n          return resolve(true);\n        } else {\n          exec('dmesg | grep -E \"EFI v\"', function (error, stdout) {\n            if (!error) {\n              const lines = stdout.toString().split('\\n');\n              return resolve(lines.length > 0);\n            }\n            return resolve(false);\n          });\n        }\n      });\n    });\n  });\n}\n\nfunction isUefiWindows() {\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      try {\n        exec('findstr /C:\"Detected boot environment\" \"%windir%\\\\Panther\\\\setupact.log\"', util.execOptsWin, function (error, stdout) {\n          if (!error) {\n            const line = stdout.toString().split('\\n\\r')[0];\n            return resolve(line.toLowerCase().indexOf('efi') >= 0);\n          } else {\n            exec('echo %firmware_type%', util.execOptsWin, function (error, stdout) {\n              if (!error) {\n                const line = stdout.toString() || '';\n                return resolve(line.toLowerCase().indexOf('efi') >= 0);\n              } else {\n                return resolve(false);\n              }\n            });\n          }\n        });\n      } catch (e) {\n        return resolve(false);\n      }\n    });\n  });\n}\n\nfunction versions(apps, callback) {\n  let versionObject = {\n    kernel: os.release(),\n    openssl: '',\n    systemOpenssl: '',\n    systemOpensslLib: '',\n    node: process.versions.node,\n    v8: process.versions.v8,\n    npm: '',\n    yarn: '',\n    pm2: '',\n    gulp: '',\n    grunt: '',\n    git: '',\n    tsc: '',\n    mysql: '',\n    redis: '',\n    mongodb: '',\n    apache: '',\n    nginx: '',\n    php: '',\n    docker: '',\n    postfix: '',\n    postgresql: '',\n    perl: '',\n    python: '',\n    python3: '',\n    pip: '',\n    pip3: '',\n    java: '',\n    gcc: '',\n    virtualbox: '',\n    bash: '',\n    zsh: '',\n    fish: '',\n    powershell: '',\n    dotnet: ''\n  };\n\n  function checkVersionParam(apps) {\n    if (apps === '*') {\n      return {\n        versions: versionObject,\n        counter: 30\n      };\n    }\n    if (!Array.isArray(apps)) {\n      apps = apps.trim().toLowerCase().replace(/,+/g, '|').replace(/ /g, '|');\n      apps = apps.split('|');\n      const result = {\n        versions: {},\n        counter: 0\n      };\n      apps.forEach(el => {\n        if (el) {\n          for (let key in versionObject) {\n            if ({}.hasOwnProperty.call(versionObject, key)) {\n              if (key.toLowerCase() === el.toLowerCase() && !{}.hasOwnProperty.call(result.versions, key)) {\n                result.versions[key] = versionObject[key];\n                if (key === 'openssl') {\n                  result.versions.systemOpenssl = '';\n                  result.versions.systemOpensslLib = '';\n                }\n\n                if (!result.versions[key]) { result.counter++; }\n              }\n            }\n          }\n        }\n      });\n      return result;\n    }\n  }\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      if (util.isFunction(apps) && !callback) {\n        callback = apps;\n        apps = '*';\n      } else {\n        apps = apps || '*';\n        if (typeof apps !== 'string') {\n          if (callback) { callback({}); }\n          return resolve({});\n        }\n      }\n      const appsObj = checkVersionParam(apps);\n      let totalFunctions = appsObj.counter;\n\n      let functionProcessed = (function () {\n        return function () {\n          if (--totalFunctions === 0) {\n            if (callback) {\n              callback(appsObj.versions);\n            }\n            resolve(appsObj.versions);\n          }\n        };\n      })();\n\n      let cmd = '';\n      try {\n        if ({}.hasOwnProperty.call(appsObj.versions, 'openssl')) {\n          appsObj.versions.openssl = process.versions.openssl;\n          exec('openssl version', function (error, stdout) {\n            if (!error) {\n              let openssl_string = stdout.toString().split('\\n')[0].trim();\n              let openssl = openssl_string.split(' ');\n              appsObj.versions.systemOpenssl = openssl.length > 0 ? openssl[1] : openssl[0];\n              appsObj.versions.systemOpensslLib = openssl.length > 0 ? openssl[0] : 'openssl';\n            }\n            functionProcessed();\n          });\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'npm')) {\n          exec('npm -v', function (error, stdout) {\n            if (!error) {\n              appsObj.versions.npm = stdout.toString().split('\\n')[0];\n            }\n            functionProcessed();\n          });\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'pm2')) {\n          cmd = 'pm2';\n          if (_windows) {\n            cmd += '.cmd';\n          }\n          exec(`${cmd} -v`, function (error, stdout) {\n            if (!error) {\n              let pm2 = stdout.toString().split('\\n')[0].trim();\n              if (!pm2.startsWith('[PM2]')) {\n                appsObj.versions.pm2 = pm2;\n              }\n            }\n            functionProcessed();\n          });\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'yarn')) {\n          exec('yarn --version', function (error, stdout) {\n            if (!error) {\n              appsObj.versions.yarn = stdout.toString().split('\\n')[0];\n            }\n            functionProcessed();\n          });\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'gulp')) {\n          cmd = 'gulp';\n          if (_windows) {\n            cmd += '.cmd';\n          }\n          exec(`${cmd} --version`, function (error, stdout) {\n            if (!error) {\n              const gulp = stdout.toString().split('\\n')[0] || '';\n              appsObj.versions.gulp = (gulp.toLowerCase().split('version')[1] || '').trim();\n            }\n            functionProcessed();\n          });\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'tsc')) {\n          cmd = 'tsc';\n          if (_windows) {\n            cmd += '.cmd';\n          }\n          exec(`${cmd} --version`, function (error, stdout) {\n            if (!error) {\n              const tsc = stdout.toString().split('\\n')[0] || '';\n              appsObj.versions.tsc = (tsc.toLowerCase().split('version')[1] || '').trim();\n            }\n            functionProcessed();\n          });\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'grunt')) {\n          cmd = 'grunt';\n          if (_windows) {\n            cmd += '.cmd';\n          }\n          exec(`${cmd} --version`, function (error, stdout) {\n            if (!error) {\n              const grunt = stdout.toString().split('\\n')[0] || '';\n              appsObj.versions.grunt = (grunt.toLowerCase().split('cli v')[1] || '').trim();\n            }\n            functionProcessed();\n          });\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'git')) {\n          if (_darwin) {\n            const gitHomebrewExists = fs.existsSync('/usr/local/Cellar/git') || fs.existsSync('/opt/homebrew/bin/git');\n            if (util.darwinXcodeExists() || gitHomebrewExists) {\n              exec('git --version', function (error, stdout) {\n                if (!error) {\n                  let git = stdout.toString().split('\\n')[0] || '';\n                  git = (git.toLowerCase().split('version')[1] || '').trim();\n                  appsObj.versions.git = (git.split(' ')[0] || '').trim();\n                }\n                functionProcessed();\n              });\n            } else {\n              functionProcessed();\n            }\n          } else {\n            exec('git --version', function (error, stdout) {\n              if (!error) {\n                let git = stdout.toString().split('\\n')[0] || '';\n                git = (git.toLowerCase().split('version')[1] || '').trim();\n                appsObj.versions.git = (git.split(' ')[0] || '').trim();\n              }\n              functionProcessed();\n            });\n          }\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'apache')) {\n          exec('apachectl -v 2>&1', function (error, stdout) {\n            if (!error) {\n              const apache = (stdout.toString().split('\\n')[0] || '').split(':');\n              appsObj.versions.apache = (apache.length > 1 ? apache[1].replace('Apache', '').replace('/', '').split('(')[0].trim() : '');\n            }\n            functionProcessed();\n          });\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'nginx')) {\n          exec('nginx -v 2>&1', function (error, stdout) {\n            if (!error) {\n              const nginx = stdout.toString().split('\\n')[0] || '';\n              appsObj.versions.nginx = (nginx.toLowerCase().split('/')[1] || '').trim();\n            }\n            functionProcessed();\n          });\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'mysql')) {\n          exec('mysql -V', function (error, stdout) {\n            if (!error) {\n              let mysql = stdout.toString().split('\\n')[0] || '';\n              mysql = mysql.toLowerCase();\n              if (mysql.indexOf(',') > -1) {\n                mysql = (mysql.split(',')[0] || '').trim();\n                const parts = mysql.split(' ');\n                appsObj.versions.mysql = (parts[parts.length - 1] || '').trim();\n              } else {\n                if (mysql.indexOf(' ver ') > -1) {\n                  mysql = mysql.split(' ver ')[1];\n                  appsObj.versions.mysql = mysql.split(' ')[0];\n                }\n              }\n            }\n            functionProcessed();\n          });\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'php')) {\n          exec('php -v', function (error, stdout) {\n            if (!error) {\n              const php = stdout.toString().split('\\n')[0] || '';\n              let parts = php.split('(');\n              if (parts[0].indexOf('-')) {\n                parts = parts[0].split('-');\n              }\n              appsObj.versions.php = parts[0].replace(/[^0-9.]/g, '');\n            }\n            functionProcessed();\n          });\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'redis')) {\n          exec('redis-server --version', function (error, stdout) {\n            if (!error) {\n              const redis = stdout.toString().split('\\n')[0] || '';\n              const parts = redis.split(' ');\n              appsObj.versions.redis = util.getValue(parts, 'v', '=', true);\n            }\n            functionProcessed();\n          });\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'docker')) {\n          exec('docker --version', function (error, stdout) {\n            if (!error) {\n              const docker = stdout.toString().split('\\n')[0] || '';\n              const parts = docker.split(' ');\n              appsObj.versions.docker = parts.length > 2 && parts[2].endsWith(',') ? parts[2].slice(0, -1) : '';\n            }\n            functionProcessed();\n          });\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'postfix')) {\n          exec('postconf -d | grep mail_version', function (error, stdout) {\n            if (!error) {\n              const postfix = stdout.toString().split('\\n') || [];\n              appsObj.versions.postfix = util.getValue(postfix, 'mail_version', '=', true);\n            }\n            functionProcessed();\n          });\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'mongodb')) {\n          exec('mongod --version', function (error, stdout) {\n            if (!error) {\n              const mongodb = stdout.toString().split('\\n')[0] || '';\n              appsObj.versions.mongodb = (mongodb.toLowerCase().split(',')[0] || '').replace(/[^0-9.]/g, '');\n            }\n            functionProcessed();\n          });\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'postgresql')) {\n          if (_linux) {\n            exec('locate bin/postgres', function (error, stdout) {\n              if (!error) {\n                const postgresqlBin = stdout.toString().split('\\n').sort();\n                if (postgresqlBin.length) {\n                  exec(postgresqlBin[postgresqlBin.length - 1] + ' -V', function (error, stdout) {\n                    if (!error) {\n                      const postgresql = stdout.toString().split('\\n')[0].split(' ') || [];\n                      appsObj.versions.postgresql = postgresql.length ? postgresql[postgresql.length - 1] : '';\n                    }\n                    functionProcessed();\n                  });\n                } else {\n                  functionProcessed();\n                }\n              } else {\n                exec('psql -V', function (error, stdout) {\n                  if (!error) {\n                    const postgresql = stdout.toString().split('\\n')[0].split(' ') || [];\n                    appsObj.versions.postgresql = postgresql.length ? postgresql[postgresql.length - 1] : '';\n                    appsObj.versions.postgresql = appsObj.versions.postgresql.split('-')[0];\n                  }\n                  functionProcessed();\n                });\n                functionProcessed();\n              }\n            });\n          } else {\n            if (_windows) {\n              util.powerShell('Get-WmiObject Win32_Service | select caption | fl').then((stdout) => {\n                let serviceSections = stdout.split(/\\n\\s*\\n/);\n                for (let i = 0; i < serviceSections.length; i++) {\n                  if (serviceSections[i].trim() !== '') {\n                    let lines = serviceSections[i].trim().split('\\r\\n');\n                    let srvCaption = util.getValue(lines, 'caption', ':', true).toLowerCase();\n                    if (srvCaption.indexOf('postgresql') > -1) {\n                      const parts = srvCaption.split(' server ');\n                      if (parts.length > 1) {\n                        appsObj.versions.postgresql = parts[1];\n                      }\n                    }\n                  }\n                }\n                functionProcessed();\n              });\n            } else {\n              exec('postgres -V', function (error, stdout) {\n                if (!error) {\n                  const postgresql = stdout.toString().split('\\n')[0].split(' ') || [];\n                  appsObj.versions.postgresql = postgresql.length ? postgresql[postgresql.length - 1] : '';\n                }\n                functionProcessed();\n              });\n            }\n          }\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'perl')) {\n          exec('perl -v', function (error, stdout) {\n            if (!error) {\n              const perl = stdout.toString().split('\\n') || '';\n              while (perl.length > 0 && perl[0].trim() === '') {\n                perl.shift();\n              }\n              if (perl.length > 0) {\n                appsObj.versions.perl = perl[0].split('(').pop().split(')')[0].replace('v', '');\n              }\n            }\n            functionProcessed();\n          });\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'python')) {\n          if (_darwin) {\n            const stdout = execSync('sw_vers');\n            const lines = stdout.toString().split('\\n');\n            const osVersion = util.getValue(lines, 'ProductVersion', ':');\n            const gitHomebrewExists1 = fs.existsSync('/usr/local/Cellar/python');\n            const gitHomebrewExists2 = fs.existsSync('/opt/homebrew/bin/python');\n            if ((util.darwinXcodeExists() && util.semverCompare('12.0.1', osVersion) < 0) || gitHomebrewExists1 || gitHomebrewExists2) {\n              const cmd = gitHomebrewExists1 ? '/usr/local/Cellar/python -V 2>&1' : (gitHomebrewExists2 ? '/opt/homebrew/bin/python -V 2>&1' : 'python -V 2>&1');\n              exec(cmd, function (error, stdout) {\n                if (!error) {\n                  const python = stdout.toString().split('\\n')[0] || '';\n                  appsObj.versions.python = python.toLowerCase().replace('python', '').trim();\n                }\n                functionProcessed();\n              });\n            } else {\n              functionProcessed();\n            }\n          } else {\n            exec('python -V 2>&1', function (error, stdout) {\n              if (!error) {\n                const python = stdout.toString().split('\\n')[0] || '';\n                appsObj.versions.python = python.toLowerCase().replace('python', '').trim();\n              }\n              functionProcessed();\n            });\n          }\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'python3')) {\n          if (_darwin) {\n            const gitHomebrewExists = fs.existsSync('/usr/local/Cellar/python3') || fs.existsSync('/opt/homebrew/bin/python3');\n            if (util.darwinXcodeExists() || gitHomebrewExists) {\n              exec('python3 -V 2>&1', function (error, stdout) {\n                if (!error) {\n                  const python = stdout.toString().split('\\n')[0] || '';\n                  appsObj.versions.python3 = python.toLowerCase().replace('python', '').trim();\n                }\n                functionProcessed();\n              });\n            } else {\n              functionProcessed();\n            }\n          } else {\n            exec('python3 -V 2>&1', function (error, stdout) {\n              if (!error) {\n                const python = stdout.toString().split('\\n')[0] || '';\n                appsObj.versions.python3 = python.toLowerCase().replace('python', '').trim();\n              }\n              functionProcessed();\n            });\n          }\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'pip')) {\n          if (_darwin) {\n            const gitHomebrewExists = fs.existsSync('/usr/local/Cellar/pip') || fs.existsSync('/opt/homebrew/bin/pip');\n            if (util.darwinXcodeExists() || gitHomebrewExists) {\n              exec('pip -V 2>&1', function (error, stdout) {\n                if (!error) {\n                  const pip = stdout.toString().split('\\n')[0] || '';\n                  const parts = pip.split(' ');\n                  appsObj.versions.pip = parts.length >= 2 ? parts[1] : '';\n                }\n                functionProcessed();\n              });\n            } else {\n              functionProcessed();\n            }\n          } else {\n            exec('pip -V 2>&1', function (error, stdout) {\n              if (!error) {\n                const pip = stdout.toString().split('\\n')[0] || '';\n                const parts = pip.split(' ');\n                appsObj.versions.pip = parts.length >= 2 ? parts[1] : '';\n              }\n              functionProcessed();\n            });\n          }\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'pip3')) {\n          if (_darwin) {\n            const gitHomebrewExists = fs.existsSync('/usr/local/Cellar/pip3') || fs.existsSync('/opt/homebrew/bin/pip3');\n            if (util.darwinXcodeExists() || gitHomebrewExists) {\n              exec('pip3 -V 2>&1', function (error, stdout) {\n                if (!error) {\n                  const pip = stdout.toString().split('\\n')[0] || '';\n                  const parts = pip.split(' ');\n                  appsObj.versions.pip3 = parts.length >= 2 ? parts[1] : '';\n                }\n                functionProcessed();\n              });\n            } else {\n              functionProcessed();\n            }\n          } else {\n            exec('pip3 -V 2>&1', function (error, stdout) {\n              if (!error) {\n                const pip = stdout.toString().split('\\n')[0] || '';\n                const parts = pip.split(' ');\n                appsObj.versions.pip3 = parts.length >= 2 ? parts[1] : '';\n              }\n              functionProcessed();\n            });\n          }\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'java')) {\n          if (_darwin) {\n            // check if any JVM is installed but avoid dialog box that Java needs to be installed\n            exec('/usr/libexec/java_home -V 2>&1', function (error, stdout) {\n              if (!error && stdout.toString().toLowerCase().indexOf('no java runtime') === -1) {\n                // now this can be done savely\n                exec('java -version 2>&1', function (error, stdout) {\n                  if (!error) {\n                    const java = stdout.toString().split('\\n')[0] || '';\n                    const parts = java.split('\"');\n                    appsObj.versions.java = parts.length === 3 ? parts[1].trim() : '';\n                  }\n                  functionProcessed();\n                });\n              } else {\n                functionProcessed();\n              }\n            });\n          } else {\n            exec('java -version 2>&1', function (error, stdout) {\n              if (!error) {\n                const java = stdout.toString().split('\\n')[0] || '';\n                const parts = java.split('\"');\n                appsObj.versions.java = parts.length === 3 ? parts[1].trim() : '';\n              }\n              functionProcessed();\n            });\n          }\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'gcc')) {\n          if ((_darwin && util.darwinXcodeExists()) || !_darwin) {\n            exec('gcc -dumpversion', function (error, stdout) {\n              if (!error) {\n                appsObj.versions.gcc = stdout.toString().split('\\n')[0].trim() || '';\n              }\n              if (appsObj.versions.gcc.indexOf('.') > -1) {\n                functionProcessed();\n              } else {\n                exec('gcc --version', function (error, stdout) {\n                  if (!error) {\n                    const gcc = stdout.toString().split('\\n')[0].trim();\n                    if (gcc.indexOf('gcc') > -1 && gcc.indexOf(')') > -1) {\n                      const parts = gcc.split(')');\n                      appsObj.versions.gcc = parts[1].trim() || appsObj.versions.gcc;\n                    }\n                  }\n                  functionProcessed();\n                });\n              }\n            });\n          } else {\n            functionProcessed();\n          }\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'virtualbox')) {\n          exec(util.getVboxmanage() + ' -v 2>&1', function (error, stdout) {\n            if (!error) {\n              const vbox = stdout.toString().split('\\n')[0] || '';\n              const parts = vbox.split('r');\n              appsObj.versions.virtualbox = parts[0];\n            }\n            functionProcessed();\n          });\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'bash')) {\n          exec('bash --version', function (error, stdout) {\n            if (!error) {\n              const line = stdout.toString().split('\\n')[0];\n              const parts = line.split(' version ');\n              if (parts.length > 1) {\n                appsObj.versions.bash = parts[1].split(' ')[0].split('(')[0];\n              }\n            }\n            functionProcessed();\n          });\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'zsh')) {\n          exec('zsh --version', function (error, stdout) {\n            if (!error) {\n              const line = stdout.toString().split('\\n')[0];\n              const parts = line.split('zsh ');\n              if (parts.length > 1) {\n                appsObj.versions.zsh = parts[1].split(' ')[0];\n              }\n            }\n            functionProcessed();\n          });\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'fish')) {\n          exec('fish --version', function (error, stdout) {\n            if (!error) {\n              const line = stdout.toString().split('\\n')[0];\n              const parts = line.split(' version ');\n              if (parts.length > 1) {\n                appsObj.versions.fish = parts[1].split(' ')[0];\n              }\n            }\n            functionProcessed();\n          });\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'powershell')) {\n          if (_windows) {\n            util.powerShell('$PSVersionTable').then(stdout => {\n              const lines = stdout.toString().split('\\n').map(line => line.replace(/ +/g, ' ').replace(/ +/g, ':'));\n              appsObj.versions.powershell = util.getValue(lines, 'psversion');\n              functionProcessed();\n            });\n          } else {\n            functionProcessed();\n          }\n        }\n        if ({}.hasOwnProperty.call(appsObj.versions, 'dotnet')) {\n          util.powerShell('gci \"HKLM:\\\\SOFTWARE\\\\Microsoft\\\\NET Framework Setup\\\\NDP\" -recurse | gp -name Version,Release -EA 0 | where { $_.PSChildName -match \"^(?!S)\\\\p{L}\"} | select PSChildName, Version, Release').then(stdout => {\n            const lines = stdout.toString().split('\\r\\n');\n            let dotnet = '';\n            lines.forEach(line => {\n              line = line.replace(/ +/g, ' ');\n              const parts = line.split(' ');\n              dotnet = dotnet || ((parts[0].toLowerCase().startsWith('client') && parts.length > 2 ? parts[1].trim() : (parts[0].toLowerCase().startsWith('full') && parts.length > 2 ? parts[1].trim() : '')));\n            });\n            appsObj.versions.dotnet = dotnet.trim();\n            functionProcessed();\n          });\n        }\n      } catch (e) {\n        if (callback) { callback(appsObj.versions); }\n        resolve(appsObj.versions);\n      }\n    });\n  });\n}\n\nexports.versions = versions;\n\nfunction shell(callback) {\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      if (_windows) {\n        resolve('cmd');\n      } else {\n        let result = '';\n        exec('echo $SHELL', function (error, stdout) {\n          if (!error) {\n            result = stdout.toString().split('\\n')[0];\n          }\n          if (callback) {\n            callback(result);\n          }\n          resolve(result);\n        });\n      }\n    });\n  });\n}\n\nexports.shell = shell;\n\nfunction getUniqueMacAdresses() {\n  const ifaces = os.networkInterfaces();\n  let macs = [];\n  for (let dev in ifaces) {\n    if ({}.hasOwnProperty.call(ifaces, dev)) {\n      ifaces[dev].forEach(function (details) {\n        if (details && details.mac && details.mac !== '00:00:00:00:00:00') {\n          const mac = details.mac.toLowerCase();\n          if (macs.indexOf(mac) === -1) {\n            macs.push(mac);\n          }\n        }\n      });\n    }\n  }\n  macs = macs.sort(function (a, b) {\n    if (a < b) { return -1; }\n    if (a > b) { return 1; }\n    return 0;\n  });\n  return macs;\n}\n\nfunction uuid(callback) {\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n\n      let result = {\n        os: '',\n        hardware: '',\n        macs: getUniqueMacAdresses()\n      };\n      let parts;\n\n      if (_darwin) {\n        exec('system_profiler SPHardwareDataType -json', function (error, stdout) {\n          if (!error) {\n            try {\n              const jsonObj = JSON.parse(stdout.toString());\n              if (jsonObj.SPHardwareDataType && jsonObj.SPHardwareDataType.length > 0) {\n                const spHardware = jsonObj.SPHardwareDataType[0];\n                // result.os = parts.length > 1 ? parts[1].trim().toLowerCase() : '';\n                result.os = spHardware.platform_UUID.toLowerCase();\n                result.hardware = spHardware.serial_number;\n              }\n            } catch (e) {\n              util.noop();\n            }\n          }\n          if (callback) {\n            callback(result);\n          }\n          resolve(result);\n        });\n      }\n      if (_linux) {\n        const cmd = `echo -n \"os: \"; cat /var/lib/dbus/machine-id 2> /dev/null; echo;\necho -n \"os: \"; cat /etc/machine-id 2> /dev/null; echo;\necho -n \"hardware: \"; cat /sys/class/dmi/id/product_uuid 2> /dev/null; echo;`;\n        exec(cmd, function (error, stdout) {\n          const lines = stdout.toString().split('\\n');\n          result.os = util.getValue(lines, 'os').toLowerCase();\n          result.hardware = util.getValue(lines, 'hardware').toLowerCase();\n          if (!result.hardware) {\n            const lines = fs.readFileSync('/proc/cpuinfo', { encoding: 'utf8' }).toString().split('\\n');\n            const serial = util.getValue(lines, 'serial');\n            result.hardware = serial || '';\n          }\n          if (callback) {\n            callback(result);\n          }\n          resolve(result);\n        });\n      }\n      if (_freebsd || _openbsd || _netbsd) {\n        exec('sysctl -i kern.hostid kern.hostuuid', function (error, stdout) {\n          const lines = stdout.toString().split('\\n');\n          result.os = util.getValue(lines, 'kern.hostid', ':').toLowerCase();\n          result.hardware = util.getValue(lines, 'kern.hostuuid', ':').toLowerCase();\n          if (result.os.indexOf('unknown') >= 0) { result.os = ''; }\n          if (result.hardware.indexOf('unknown') >= 0) { result.hardware = ''; }\n          if (callback) {\n            callback(result);\n          }\n          resolve(result);\n        });\n      }\n      if (_windows) {\n        let sysdir = '%windir%\\\\System32';\n        if (process.arch === 'ia32' && Object.prototype.hasOwnProperty.call(({\"APP_ENV\":\"webpack\"}), 'PROCESSOR_ARCHITEW6432')) {\n          sysdir = '%windir%\\\\sysnative\\\\cmd.exe /c %windir%\\\\System32';\n        }\n        util.powerShell('Get-WmiObject Win32_ComputerSystemProduct | select UUID | fl').then((stdout) => {\n          // let lines = stdout.split('\\r\\n').filter(line => line.trim() !== '').filter((line, idx) => idx > 0)[0].trim().split(/\\s\\s+/);\n          let lines = stdout.split('\\r\\n');\n          result.hardware = util.getValue(lines, 'uuid', ':').toLowerCase();\n          exec(`${sysdir}\\\\reg query \"HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Cryptography\" /v MachineGuid`, util.execOptsWin, function (error, stdout) {\n            parts = stdout.toString().split('\\n\\r')[0].split('REG_SZ');\n            result.os = parts.length > 1 ? parts[1].replace(/\\r+|\\n+|\\s+/ig, '').toLowerCase() : '';\n            if (callback) {\n              callback(result);\n            }\n            resolve(result);\n          });\n        });\n      }\n    });\n  });\n}\n\nexports.uuid = uuid;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/systeminformation/lib/osinfo.js?")},"./node_modules/systeminformation/lib/printer.js":
/*!*******************************************************!*\
  !*** ./node_modules/systeminformation/lib/printer.js ***!
  \*******************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n// @ts-check\n// ==================================================================================\n// printers.js\n// ----------------------------------------------------------------------------------\n// Description:   System Information - library\n//                for Node.js\n// Copyright:     (c) 2014 - 2022\n// Author:        Sebastian Hildebrandt\n// ----------------------------------------------------------------------------------\n// License:       MIT\n// ==================================================================================\n// 15. printers\n// ----------------------------------------------------------------------------------\n\nconst exec = (__webpack_require__(/*! child_process */ \"child_process\").exec);\n// const execSync = require('child_process').execSync;\nconst util = __webpack_require__(/*! ./util */ \"./node_modules/systeminformation/lib/util.js\");\n// const fs = require('fs');\n\nlet _platform = process.platform;\n\nconst _linux = (_platform === 'linux' || _platform === 'android');\nconst _darwin = (_platform === 'darwin');\nconst _windows = (_platform === 'win32');\nconst _freebsd = (_platform === 'freebsd');\nconst _openbsd = (_platform === 'openbsd');\nconst _netbsd = (_platform === 'netbsd');\nconst _sunos = (_platform === 'sunos');\n\nconst winPrinterStatus = {\n  1: 'Other',\n  2: 'Unknown',\n  3: 'Idle',\n  4: 'Printing',\n  5: 'Warmup',\n  6: 'Stopped Printing',\n  7: 'Offline',\n};\n\nfunction parseLinuxCupsHeader(lines) {\n  const result = {};\n  if (lines && lines.length) {\n    if (lines[0].indexOf(' CUPS v') > 0) {\n      const parts = lines[0].split(' CUPS v');\n      result.cupsVersion = parts[1];\n    }\n  }\n  return result;\n}\n\nfunction parseLinuxCupsPrinter(lines) {\n  const result = {};\n  const printerId = util.getValue(lines, 'PrinterId', ' ');\n  result.id = printerId ? parseInt(printerId, 10) : null;\n  result.name = util.getValue(lines, 'Info', ' ');\n  result.model = lines.length > 0 && lines[0] ? lines[0].split(' ')[0] : '';\n  result.uri = util.getValue(lines, 'DeviceURI', ' ');\n  result.uuid = util.getValue(lines, 'UUID', ' ');\n  result.status = util.getValue(lines, 'State', ' ');\n  result.local = util.getValue(lines, 'Location', ' ').toLowerCase().startsWith('local');\n  result.default = null;\n  result.shared = util.getValue(lines, 'Shared', ' ').toLowerCase().startsWith('yes');\n\n  return result;\n}\n\nfunction parseLinuxLpstatPrinter(lines, id) {\n  const result = {};\n  result.id = id;\n  result.name = util.getValue(lines, 'Description', ':', true);\n  result.model = lines.length > 0 && lines[0] ? lines[0].split(' ')[0] : '';\n  result.uri = null;\n  result.uuid = null;\n  result.status = lines.length > 0 && lines[0] ? (lines[0].indexOf(' idle') > 0 ? 'idle' : (lines[0].indexOf(' printing') > 0 ? 'printing' : 'unknown')) : null;\n  result.local = util.getValue(lines, 'Location', ':', true).toLowerCase().startsWith('local');\n  result.default = null;\n  result.shared = util.getValue(lines, 'Shared', ' ').toLowerCase().startsWith('yes');\n\n  return result;\n}\n\nfunction parseDarwinPrinters(printerObject, id) {\n  const result = {};\n  const uriParts = printerObject.uri.split('/');\n  result.id = id;\n  result.name = printerObject._name;\n  result.model = uriParts.length ? uriParts[uriParts.length - 1] : '';\n  result.uri = printerObject.uri;\n  result.uuid = null;\n  result.status = printerObject.status;\n  result.local = printerObject.printserver === 'local';\n  result.default = printerObject.default === 'yes';\n  result.shared = printerObject.shared === 'yes';\n\n  return result;\n}\n\nfunction parseWindowsPrinters(lines, id) {\n  const result = {};\n  const status = parseInt(util.getValue(lines, 'PrinterStatus', ':'), 10);\n\n  result.id = id;\n  result.name = util.getValue(lines, 'name', ':');\n  result.model = util.getValue(lines, 'DriverName', ':');\n  result.uri = null;\n  result.uuid = null;\n  result.status = winPrinterStatus[status] ? winPrinterStatus[status] : null;\n  result.local = util.getValue(lines, 'Local', ':').toUpperCase() === 'TRUE';\n  result.default = util.getValue(lines, 'Default', ':').toUpperCase() === 'TRUE';\n  result.shared = util.getValue(lines, 'Shared', ':').toUpperCase() === 'TRUE';\n\n  return result;\n}\n\nfunction printer(callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      let result = [];\n      if (_linux || _freebsd || _openbsd || _netbsd) {\n        let cmd = 'cat /etc/cups/printers.conf 2>/dev/null';\n        exec(cmd, function (error, stdout) {\n          // printers.conf\n          if (!error) {\n            const parts = stdout.toString().split('<Printer ');\n            const printerHeader = parseLinuxCupsHeader(parts[0]);\n            for (let i = 1; i < parts.length; i++) {\n              const printers = parseLinuxCupsPrinter(parts[i].split('\\n'));\n              if (printers.name) {\n                printers.engine = 'CUPS';\n                printers.engineVersion = printerHeader.cupsVersion;\n                result.push(printers);\n              }\n            }\n          }\n          if (result.length === 0) {\n            if (_linux) {\n              cmd = 'export LC_ALL=C; lpstat -lp 2>/dev/null; unset LC_ALL';\n              // lpstat\n              exec(cmd, function (error, stdout) {\n                const parts = ('\\n' + stdout.toString()).split('\\nprinter ');\n                for (let i = 1; i < parts.length; i++) {\n                  const printers = parseLinuxLpstatPrinter(parts[i].split('\\n'), i);\n                  result.push(printers);\n                }\n              });\n              if (callback) {\n                callback(result);\n              }\n              resolve(result);\n            } else {\n              if (callback) {\n                callback(result);\n              }\n              resolve(result);\n            }\n          } else {\n            if (callback) {\n              callback(result);\n            }\n            resolve(result);\n          }\n        });\n      }\n      if (_darwin) {\n        let cmd = 'system_profiler SPPrintersDataType -json';\n        exec(cmd, function (error, stdout) {\n          if (!error) {\n            try {\n              const outObj = JSON.parse(stdout.toString());\n              if (outObj.SPPrintersDataType && outObj.SPPrintersDataType.length) {\n                for (let i = 0; i < outObj.SPPrintersDataType.length; i++) {\n                  const printer = parseDarwinPrinters(outObj.SPPrintersDataType[i], i);\n                  result.push(printer);\n                }\n              }\n            } catch (e) {\n              util.noop();\n            }\n          }\n          if (callback) {\n            callback(result);\n          }\n          resolve(result);\n        });\n      }\n      if (_windows) {\n        util.powerShell('Get-WmiObject Win32_Printer | select PrinterStatus,Name,DriverName,Local,Default,Shared | fl').then((stdout, error) => {\n          if (!error) {\n            const parts = stdout.toString().split(/\\n\\s*\\n/);\n            for (let i = 0; i < parts.length; i++) {\n              const printer = parseWindowsPrinters(parts[i].split('\\n'), i);\n              if (printer.name || printer.model) {\n                result.push(parseWindowsPrinters(parts[i].split('\\n'), i));\n              }\n            }\n          }\n          if (callback) {\n            callback(result);\n          }\n          resolve(result);\n        });\n      }\n      if (_sunos) {\n        resolve(null);\n      }\n    });\n  });\n}\n\nexports.printer = printer;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/systeminformation/lib/printer.js?")},"./node_modules/systeminformation/lib/processes.js":
/*!*********************************************************!*\
  !*** ./node_modules/systeminformation/lib/processes.js ***!
  \*********************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n// @ts-check\n// ==================================================================================\n// processes.js\n// ----------------------------------------------------------------------------------\n// Description:   System Information - library\n//                for Node.js\n// Copyright:     (c) 2014 - 2022\n// Author:        Sebastian Hildebrandt\n// ----------------------------------------------------------------------------------\n// License:       MIT\n// ==================================================================================\n// 10. Processes\n// ----------------------------------------------------------------------------------\n\nconst os = __webpack_require__(/*! os */ \"os\");\nconst fs = __webpack_require__(/*! fs */ \"fs\");\nconst path = __webpack_require__(/*! path */ \"path\");\nconst exec = (__webpack_require__(/*! child_process */ \"child_process\").exec);\nconst execSync = (__webpack_require__(/*! child_process */ \"child_process\").execSync);\n\nconst util = __webpack_require__(/*! ./util */ \"./node_modules/systeminformation/lib/util.js\");\n\nlet _platform = process.platform;\n\nconst _linux = (_platform === 'linux' || _platform === 'android');\nconst _darwin = (_platform === 'darwin');\nconst _windows = (_platform === 'win32');\nconst _freebsd = (_platform === 'freebsd');\nconst _openbsd = (_platform === 'openbsd');\nconst _netbsd = (_platform === 'netbsd');\nconst _sunos = (_platform === 'sunos');\n\nconst _processes_cpu = {\n  all: 0,\n  all_utime: 0,\n  all_stime: 0,\n  list: {},\n  ms: 0,\n  result: {}\n};\nconst _services_cpu = {\n  all: 0,\n  all_utime: 0,\n  all_stime: 0,\n  list: {},\n  ms: 0,\n  result: {}\n};\nconst _process_cpu = {\n  all: 0,\n  all_utime: 0,\n  all_stime: 0,\n  list: {},\n  ms: 0,\n  result: {}\n};\n\nconst _winStatusValues = {\n  '0': 'unknown',\n  '1': 'other',\n  '2': 'ready',\n  '3': 'running',\n  '4': 'blocked',\n  '5': 'suspended blocked',\n  '6': 'suspended ready',\n  '7': 'terminated',\n  '8': 'stopped',\n  '9': 'growing',\n};\n\n\nfunction parseTimeWin(time) {\n  time = time || '';\n  if (time) {\n    return (time.substr(0, 4) + '-' + time.substr(4, 2) + '-' + time.substr(6, 2) + ' ' + time.substr(8, 2) + ':' + time.substr(10, 2) + ':' + time.substr(12, 2));\n  } else {\n    return '';\n  }\n}\n\nfunction parseTimeUnix(time) {\n  let result = time;\n  let parts = time.replace(/ +/g, ' ').split(' ');\n  if (parts.length === 5) {\n    result = parts[4] + '-' + ('0' + ('JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC'.indexOf(parts[1].toUpperCase()) / 3 + 1)).slice(-2) + '-' + ('0' + parts[2]).slice(-2) + ' ' + parts[3];\n  }\n  return result;\n}\n\nfunction parseElapsedTime(etime) {\n  let current = new Date();\n  current = new Date(current.getTime() - current.getTimezoneOffset() * 60000);\n\n  const elapsed = etime.split('-');\n\n  const timeIndex = elapsed.length - 1;\n  const days = timeIndex > 0 ? parseInt(elapsed[timeIndex - 1]) : 0;\n\n  const timeStr = elapsed[timeIndex].split(':');\n  const hours = timeStr.length === 3 ? parseInt(timeStr[0] || 0) : 0;\n  const mins = parseInt(timeStr[timeStr.length === 3 ? 1 : 0] || 0);\n  const secs = parseInt(timeStr[timeStr.length === 3 ? 2 : 1] || 0);\n  const ms = (((((days * 24 + hours) * 60) + mins) * 60 + secs) * 1000);\n\n  const res = new Date(current.getTime() - ms);\n  return res.toISOString().substring(0, 10) + ' ' + res.toISOString().substring(11, 19);\n}\n\n// --------------------------\n// PS - services\n// pass a comma separated string with services to check (mysql, apache, postgresql, ...)\n// this function gives an array back, if the services are running.\n\nfunction services(srv, callback) {\n\n  // fallback - if only callback is given\n  if (util.isFunction(srv) && !callback) {\n    callback = srv;\n    srv = '';\n  }\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      if (typeof srv !== 'string') {\n        if (callback) { callback([]); }\n        return resolve([]);\n      }\n\n      if (srv) {\n        let srvString = '';\n        srvString.__proto__.toLowerCase = util.stringToLower;\n        srvString.__proto__.replace = util.stringReplace;\n        srvString.__proto__.trim = util.stringTrim;\n\n        const s = util.sanitizeShellString(srv);\n        for (let i = 0; i <= util.mathMin(s.length, 2000); i++) {\n          if (!(s[i] === undefined)) {\n            srvString = srvString + s[i];\n          }\n        }\n\n        srvString = srvString.trim().toLowerCase().replace(/, /g, '|').replace(/,+/g, '|');\n        if (srvString === '') {\n          srvString = '*';\n        }\n        if (util.isPrototypePolluted() && srvString !== '*') {\n          srvString = '------';\n        }\n        let srvs = srvString.split('|');\n        let result = [];\n        let dataSrv = [];\n        // let allSrv = [];\n\n        if (_linux || _freebsd || _openbsd || _netbsd || _darwin) {\n          if ((_linux || _freebsd || _openbsd || _netbsd) && srvString === '*') {\n            try {\n              const tmpsrv = execSync('systemctl --type=service --no-legend 2> /dev/null').toString().split('\\n');\n              srvs = [];\n              for (const s of tmpsrv) {\n                const name = s.split('.service')[0];\n                if (name) {\n                  srvs.push(name);\n                }\n              }\n              srvString = srvs.join('|');\n            } catch (d) {\n              try {\n                srvString = '';\n                const tmpsrv = execSync('service --status-all 2> /dev/null').toString().split('\\n');\n                for (const s of tmpsrv) {\n                  const parts = s.split(']');\n                  if (parts.length === 2) {\n                    srvString += (srvString !== '' ? '|' : '') + parts[1].trim();\n                    // allSrv.push({ name: parts[1].trim(), running: parts[0].indexOf('+') > 0 });\n                  }\n                }\n                srvs = srvString.split('|');\n              } catch (e) {\n                try {\n                  const srvStr = execSync('ls /etc/init.d/ -m 2> /dev/null').toString().split('\\n').join('');\n                  srvString = '';\n                  if (srvStr) {\n                    const tmpsrv = srvStr.split(',');\n                    for (const s of tmpsrv) {\n                      const name = s.trim();\n                      if (name) {\n                        srvString += (srvString !== '' ? '|' : '') + name;\n                        // allSrv.push({ name: name, running: null });\n                      }\n                    }\n                    srvs = srvString.split('|');\n                  }\n                } catch (f) {\n                  // allSrv = [];\n                  srvString = '';\n                  srvs = [];\n                }\n              }\n            }\n          }\n          if ((_darwin) && srvString === '*') { // service enumeration not yet suported on mac OS\n            if (callback) { callback(result); }\n            resolve(result);\n          }\n          let args = (_darwin) ? ['-caxo', 'pcpu,pmem,pid,command'] : ['-axo', 'pcpu,pmem,pid,command'];\n          if (srvString !== '' && srvs.length > 0) {\n            util.execSafe('ps', args).then((stdout) => {\n              if (stdout) {\n                let lines = stdout.replace(/ +/g, ' ').replace(/,+/g, '.').split('\\n');\n                srvs.forEach(function (srv) {\n                  let ps;\n                  if (_darwin) {\n                    ps = lines.filter(function (e) {\n                      return (e.toLowerCase().indexOf(srv) !== -1);\n                    });\n\n                  } else {\n                    ps = lines.filter(function (e) {\n                      return (e.toLowerCase().indexOf(' ' + srv + ':') !== -1) || (e.toLowerCase().indexOf('/' + srv) !== -1);\n                    });\n                  }\n                  // let singleSrv = allSrv.filter(item => { return item.name === srv; });\n                  const pids = [];\n                  for (const p of ps) {\n                    const pid = p.trim().split(' ')[2];\n                    if (pid) {\n                      pids.push(parseInt(pid, 10));\n                    }\n                  }\n                  result.push({\n                    name: srv,\n                    //                    running: (allSrv.length && singleSrv.length && singleSrv[0].running !== null ? singleSrv[0].running : ps.length > 0),\n                    running: ps.length > 0,\n                    startmode: '',\n                    pids: pids,\n                    cpu: parseFloat((ps.reduce(function (pv, cv) {\n                      return pv + parseFloat(cv.trim().split(' ')[0]);\n                    }, 0)).toFixed(2)),\n                    mem: parseFloat((ps.reduce(function (pv, cv) {\n                      return pv + parseFloat(cv.trim().split(' ')[1]);\n                    }, 0)).toFixed(2))\n                  });\n                });\n                if (_linux) {\n                  // calc process_cpu - ps is not accurate in linux!\n                  let cmd = 'cat /proc/stat | grep \"cpu \"';\n                  for (let i in result) {\n                    for (let j in result[i].pids) {\n                      cmd += (';cat /proc/' + result[i].pids[j] + '/stat');\n                    }\n                  }\n                  exec(cmd, { maxBuffer: 1024 * 20000 }, function (error, stdout) {\n                    let curr_processes = stdout.toString().split('\\n');\n\n                    // first line (all - /proc/stat)\n                    let all = parseProcStat(curr_processes.shift());\n\n                    // process\n                    let list_new = {};\n                    let resultProcess = {};\n                    for (let i = 0; i < curr_processes.length; i++) {\n                      resultProcess = calcProcStatLinux(curr_processes[i], all, _services_cpu);\n\n                      if (resultProcess.pid) {\n                        let listPos = -1;\n                        for (let i in result) {\n                          for (let j in result[i].pids) {\n                            if (parseInt(result[i].pids[j]) === parseInt(resultProcess.pid)) {\n                              listPos = i;\n                            }\n                          }\n                        }\n                        if (listPos >= 0) {\n                          result[listPos].cpu += resultProcess.cpuu + resultProcess.cpus;\n                        }\n\n                        // save new values\n                        list_new[resultProcess.pid] = {\n                          cpuu: resultProcess.cpuu,\n                          cpus: resultProcess.cpus,\n                          utime: resultProcess.utime,\n                          stime: resultProcess.stime,\n                          cutime: resultProcess.cutime,\n                          cstime: resultProcess.cstime\n                        };\n                      }\n                    }\n\n                    // store old values\n                    _services_cpu.all = all;\n                    // _services_cpu.list = list_new;\n                    _services_cpu.list = Object.assign({}, list_new);\n                    _services_cpu.ms = Date.now() - _services_cpu.ms;\n                    // _services_cpu.result = result;\n                    _services_cpu.result = Object.assign({}, result);\n                    if (callback) { callback(result); }\n                    resolve(result);\n                  });\n                } else {\n                  if (callback) { callback(result); }\n                  resolve(result);\n                }\n              } else {\n                args = ['-o', 'comm'];\n                util.execSafe('ps', args).then((stdout) => {\n                  if (stdout) {\n                    let lines = stdout.replace(/ +/g, ' ').replace(/,+/g, '.').split('\\n');\n                    srvs.forEach(function (srv) {\n                      let ps = lines.filter(function (e) {\n                        return e.indexOf(srv) !== -1;\n                      });\n                      result.push({\n                        name: srv,\n                        running: ps.length > 0,\n                        startmode: '',\n                        cpu: 0,\n                        mem: 0\n                      });\n                    });\n                    if (callback) { callback(result); }\n                    resolve(result);\n                  } else {\n                    srvs.forEach(function (srv) {\n                      result.push({\n                        name: srv,\n                        running: false,\n                        startmode: '',\n                        cpu: 0,\n                        mem: 0\n                      });\n                    });\n                    if (callback) { callback(result); }\n                    resolve(result);\n                  }\n                });\n              }\n            });\n          } else {\n            if (callback) { callback(result); }\n            resolve(result);\n          }\n        }\n        if (_windows) {\n          try {\n            let wincommand = 'Get-WmiObject Win32_Service';\n            if (srvs[0] !== '*') {\n              wincommand += ' -Filter \"';\n              for (let i = 0; i < srvs.length; i++) {\n                wincommand += `Name='${srvs[i]}' or `;\n              }\n              wincommand = `${wincommand.slice(0, -4)}\"`;\n            }\n            wincommand += ' | select Name,Caption,Started,StartMode,ProcessId | fl';\n            util.powerShell(wincommand).then((stdout, error) => {\n              if (!error) {\n                let serviceSections = stdout.split(/\\n\\s*\\n/);\n                for (let i = 0; i < serviceSections.length; i++) {\n                  if (serviceSections[i].trim() !== '') {\n                    let lines = serviceSections[i].trim().split('\\r\\n');\n                    let srvName = util.getValue(lines, 'Name', ':', true).toLowerCase();\n                    let srvCaption = util.getValue(lines, 'Caption', ':', true).toLowerCase();\n                    let started = util.getValue(lines, 'Started', ':', true);\n                    let startMode = util.getValue(lines, 'StartMode', ':', true);\n                    let pid = util.getValue(lines, 'ProcessId', ':', true);\n                    if (srvString === '*' || srvs.indexOf(srvName) >= 0 || srvs.indexOf(srvCaption) >= 0) {\n                      result.push({\n                        name: srvName,\n                        running: (started.toLowerCase() === 'true'),\n                        startmode: startMode,\n                        pids: [pid],\n                        cpu: 0,\n                        mem: 0\n                      });\n                      dataSrv.push(srvName);\n                      dataSrv.push(srvCaption);\n                    }\n                  }\n                }\n                if (srvString !== '*') {\n                  let srvsMissing = srvs.filter(function (e) {\n                    return dataSrv.indexOf(e) === -1;\n                  });\n                  srvsMissing.forEach(function (srvName) {\n                    result.push({\n                      name: srvName,\n                      running: false,\n                      startmode: '',\n                      pids: [],\n                      cpu: 0,\n                      mem: 0\n                    });\n                  });\n                }\n                if (callback) { callback(result); }\n                resolve(result);\n              } else {\n                srvs.forEach(function (srvName) {\n                  result.push({\n                    name: srvName,\n                    running: false,\n                    startmode: '',\n                    cpu: 0,\n                    mem: 0\n                  });\n                });\n                if (callback) { callback(result); }\n                resolve(result);\n              }\n            });\n          } catch (e) {\n            if (callback) { callback(result); }\n            resolve(result);\n          }\n        }\n      } else {\n        if (callback) { callback([]); }\n        resolve([]);\n      }\n    });\n  });\n}\n\nexports.services = services;\n\nfunction parseProcStat(line) {\n  let parts = line.replace(/ +/g, ' ').split(' ');\n  let user = (parts.length >= 2 ? parseInt(parts[1]) : 0);\n  let nice = (parts.length >= 3 ? parseInt(parts[2]) : 0);\n  let system = (parts.length >= 4 ? parseInt(parts[3]) : 0);\n  let idle = (parts.length >= 5 ? parseInt(parts[4]) : 0);\n  let iowait = (parts.length >= 6 ? parseInt(parts[5]) : 0);\n  let irq = (parts.length >= 7 ? parseInt(parts[6]) : 0);\n  let softirq = (parts.length >= 8 ? parseInt(parts[7]) : 0);\n  let steal = (parts.length >= 9 ? parseInt(parts[8]) : 0);\n  let guest = (parts.length >= 10 ? parseInt(parts[9]) : 0);\n  let guest_nice = (parts.length >= 11 ? parseInt(parts[10]) : 0);\n  return user + nice + system + idle + iowait + irq + softirq + steal + guest + guest_nice;\n}\n\nfunction calcProcStatLinux(line, all, _cpu_old) {\n  let statparts = line.replace(/ +/g, ' ').split(')');\n  if (statparts.length >= 2) {\n    let parts = statparts[1].split(' ');\n    if (parts.length >= 16) {\n      let pid = parseInt(statparts[0].split(' ')[0]);\n      let utime = parseInt(parts[12]);\n      let stime = parseInt(parts[13]);\n      let cutime = parseInt(parts[14]);\n      let cstime = parseInt(parts[15]);\n\n      // calc\n      let cpuu = 0;\n      let cpus = 0;\n      if (_cpu_old.all > 0 && _cpu_old.list[pid]) {\n        cpuu = (utime + cutime - _cpu_old.list[pid].utime - _cpu_old.list[pid].cutime) / (all - _cpu_old.all) * 100; // user\n        cpus = (stime + cstime - _cpu_old.list[pid].stime - _cpu_old.list[pid].cstime) / (all - _cpu_old.all) * 100; // system\n      } else {\n        cpuu = (utime + cutime) / (all) * 100; // user\n        cpus = (stime + cstime) / (all) * 100; // system\n      }\n      return {\n        pid: pid,\n        utime: utime,\n        stime: stime,\n        cutime: cutime,\n        cstime: cstime,\n        cpuu: cpuu,\n        cpus: cpus\n      };\n    } else {\n      return {\n        pid: 0,\n        utime: 0,\n        stime: 0,\n        cutime: 0,\n        cstime: 0,\n        cpuu: 0,\n        cpus: 0\n      };\n    }\n  } else {\n    return {\n      pid: 0,\n      utime: 0,\n      stime: 0,\n      cutime: 0,\n      cstime: 0,\n      cpuu: 0,\n      cpus: 0\n    };\n  }\n}\n\nfunction calcProcStatWin(procStat, all, _cpu_old) {\n  // calc\n  let cpuu = 0;\n  let cpus = 0;\n  if (_cpu_old.all > 0 && _cpu_old.list[procStat.pid]) {\n    cpuu = (procStat.utime - _cpu_old.list[procStat.pid].utime) / (all - _cpu_old.all) * 100; // user\n    cpus = (procStat.stime - _cpu_old.list[procStat.pid].stime) / (all - _cpu_old.all) * 100; // system\n  } else {\n    cpuu = (procStat.utime) / (all) * 100; // user\n    cpus = (procStat.stime) / (all) * 100; // system\n  }\n  return {\n    pid: procStat.pid,\n    utime: cpuu > 0 ? procStat.utime : 0,\n    stime: cpus > 0 ? procStat.stime : 0,\n    cpuu: cpuu > 0 ? cpuu : 0,\n    cpus: cpus > 0 ? cpus : 0\n  };\n}\n\n\n\n// --------------------------\n// running processes\n\nfunction processes(callback) {\n\n  let parsedhead = [];\n\n  function getName(command) {\n    command = command || '';\n    let result = command.split(' ')[0];\n    if (result.substr(-1) === ':') {\n      result = result.substr(0, result.length - 1);\n    }\n    if (result.substr(0, 1) !== '[') {\n      let parts = result.split('/');\n      if (isNaN(parseInt(parts[parts.length - 1]))) {\n        result = parts[parts.length - 1];\n      } else {\n        result = parts[0];\n      }\n    }\n    return result;\n  }\n\n  function parseLine(line) {\n\n    let offset = 0;\n    let offset2 = 0;\n\n    function checkColumn(i) {\n      offset = offset2;\n      if (parsedhead[i]) {\n        offset2 = line.substring(parsedhead[i].to + offset, 10000).indexOf(' ');\n      } else {\n        offset2 = 10000;\n      }\n    }\n\n    checkColumn(0);\n    const pid = parseInt(line.substring(parsedhead[0].from + offset, parsedhead[0].to + offset2));\n    checkColumn(1);\n    const ppid = parseInt(line.substring(parsedhead[1].from + offset, parsedhead[1].to + offset2));\n    checkColumn(2);\n    const cpu = parseFloat(line.substring(parsedhead[2].from + offset, parsedhead[2].to + offset2).replace(/,/g, '.'));\n    checkColumn(3);\n    const mem = parseFloat(line.substring(parsedhead[3].from + offset, parsedhead[3].to + offset2).replace(/,/g, '.'));\n    checkColumn(4);\n    const priority = parseInt(line.substring(parsedhead[4].from + offset, parsedhead[4].to + offset2));\n    checkColumn(5);\n    const vsz = parseInt(line.substring(parsedhead[5].from + offset, parsedhead[5].to + offset2));\n    checkColumn(6);\n    const rss = parseInt(line.substring(parsedhead[6].from + offset, parsedhead[6].to + offset2));\n    checkColumn(7);\n    const nice = parseInt(line.substring(parsedhead[7].from + offset, parsedhead[7].to + offset2)) || 0;\n    checkColumn(8);\n    const started = !_sunos ? parseElapsedTime(line.substring(parsedhead[8].from + offset, parsedhead[8].to + offset2).trim()) : parseTimeUnix(line.substring(parsedhead[8].from + offset, parsedhead[8].to + offset2).trim());\n    checkColumn(9);\n    let state = line.substring(parsedhead[9].from + offset, parsedhead[9].to + offset2).trim();\n    state = (state[0] === 'R' ? 'running' : (state[0] === 'S' ? 'sleeping' : (state[0] === 'T' ? 'stopped' : (state[0] === 'W' ? 'paging' : (state[0] === 'X' ? 'dead' : (state[0] === 'Z' ? 'zombie' : ((state[0] === 'D' || state[0] === 'U') ? 'blocked' : 'unknown')))))));\n    checkColumn(10);\n    let tty = line.substring(parsedhead[10].from + offset, parsedhead[10].to + offset2).trim();\n    if (tty === '?' || tty === '??') { tty = ''; }\n    checkColumn(11);\n    const user = line.substring(parsedhead[11].from + offset, parsedhead[11].to + offset2).trim();\n    checkColumn(12);\n    let cmdPath = '';\n    let command = '';\n    let params = '';\n    let fullcommand = line.substring(parsedhead[12].from + offset, parsedhead[12].to + offset2).trim();\n    if (fullcommand.substr(fullcommand.length - 1) === ']') { fullcommand = fullcommand.slice(0, -1); }\n    if (fullcommand.substr(0, 1) === '[') { command = fullcommand.substring(1); }\n    else {\n      const p1 = fullcommand.indexOf('(');\n      const p2 = fullcommand.indexOf(')');\n      const p3 = fullcommand.indexOf('/');\n      const p4 = fullcommand.indexOf(':');\n      if (p1 < p2 && p1 < p3 && p3 < p2) {\n        command = fullcommand.split(' ')[0];\n        command = command.replace(/:/g, '');\n      } else {\n        if (p4 > 0 && (p3 === -1 || p3 > 3)) {\n          command = fullcommand.split(' ')[0];\n          command = command.replace(/:/g, '');\n        } else {\n          // try to figure out where parameter starts\n          let firstParamPos = fullcommand.indexOf(' -');\n          let firstParamPathPos = fullcommand.indexOf(' /');\n          firstParamPos = (firstParamPos >= 0 ? firstParamPos : 10000);\n          firstParamPathPos = (firstParamPathPos >= 0 ? firstParamPathPos : 10000);\n          const firstPos = Math.min(firstParamPos, firstParamPathPos);\n          let tmpCommand = fullcommand.substr(0, firstPos);\n          const tmpParams = fullcommand.substr(firstPos);\n          const lastSlashPos = tmpCommand.lastIndexOf('/');\n          if (lastSlashPos >= 0) {\n            cmdPath = tmpCommand.substr(0, lastSlashPos);\n            tmpCommand = tmpCommand.substr(lastSlashPos + 1);\n          }\n\n          if (firstPos === 10000 && tmpCommand.indexOf(' ') > -1) {\n            const parts = tmpCommand.split(' ');\n            if (fs.existsSync(path.join(cmdPath, parts[0]))) {\n              command = parts.shift();\n              params = (parts.join(' ') + ' ' + tmpParams).trim();\n            } else {\n              command = tmpCommand.trim();\n              params = tmpParams.trim();\n            }\n          } else {\n            command = tmpCommand.trim();\n            params = tmpParams.trim();\n          }\n        }\n      }\n\n    }\n\n    return ({\n      pid: pid,\n      parentPid: ppid,\n      name: _linux ? getName(command) : command,\n      cpu: cpu,\n      cpuu: 0,\n      cpus: 0,\n      mem: mem,\n      priority: priority,\n      memVsz: vsz,\n      memRss: rss,\n      nice: nice,\n      started: started,\n      state: state,\n      tty: tty,\n      user: user,\n      command: command,\n      params: params,\n      path: cmdPath\n    });\n  }\n\n  function parseProcesses(lines) {\n    let result = [];\n    if (lines.length > 1) {\n      let head = lines[0];\n      parsedhead = util.parseHead(head, 8);\n      lines.shift();\n      lines.forEach(function (line) {\n        if (line.trim() !== '') {\n          result.push(parseLine(line));\n        }\n      });\n    }\n    return result;\n  }\n  function parseProcesses2(lines) {\n\n    function formatDateTime(time) {\n      const month = ('0' + (time.getMonth() + 1).toString()).substr(-2);\n      const year = time.getFullYear().toString();\n      const day = ('0' + time.getDay().toString()).substr(-2);\n      const hours = time.getHours().toString();\n      const mins = time.getMinutes().toString();\n      const secs = ('0' + time.getSeconds().toString()).substr(-2);\n\n      return (year + '-' + month + '-' + day + ' ' + hours + ':' + mins + ':' + secs);\n    }\n\n    let result = [];\n    lines.forEach(function (line) {\n      if (line.trim() !== '') {\n        line = line.trim().replace(/ +/g, ' ').replace(/,+/g, '.');\n        const parts = line.split(' ');\n        const command = parts.slice(9).join(' ');\n        const pmem = parseFloat((1.0 * parseInt(parts[3]) * 1024 / os.totalmem()).toFixed(1));\n        const elapsed_parts = parts[5].split(':');\n        const started = formatDateTime(new Date(Date.now() - (elapsed_parts.length > 1 ? (elapsed_parts[0] * 60 + elapsed_parts[1]) * 1000 : elapsed_parts[0] * 1000)));\n\n        result.push({\n          pid: parseInt(parts[0]),\n          parentPid: parseInt(parts[1]),\n          name: getName(command),\n          cpu: 0,\n          cpuu: 0,\n          cpus: 0,\n          mem: pmem,\n          priority: 0,\n          memVsz: parseInt(parts[2]),\n          memRss: parseInt(parts[3]),\n          nice: parseInt(parts[4]),\n          started: started,\n          state: (parts[6] === 'R' ? 'running' : (parts[6] === 'S' ? 'sleeping' : (parts[6] === 'T' ? 'stopped' : (parts[6] === 'W' ? 'paging' : (parts[6] === 'X' ? 'dead' : (parts[6] === 'Z' ? 'zombie' : ((parts[6] === 'D' || parts[6] === 'U') ? 'blocked' : 'unknown'))))))),\n          tty: parts[7],\n          user: parts[8],\n          command: command\n        });\n      }\n    });\n    return result;\n  }\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      let result = {\n        all: 0,\n        running: 0,\n        blocked: 0,\n        sleeping: 0,\n        unknown: 0,\n        list: []\n      };\n\n      let cmd = '';\n\n      if ((_processes_cpu.ms && Date.now() - _processes_cpu.ms >= 500) || _processes_cpu.ms === 0) {\n        if (_linux || _freebsd || _openbsd || _netbsd || _darwin || _sunos) {\n          if (_linux) { cmd = 'export LC_ALL=C; ps -axo pid:11,ppid:11,pcpu:6,pmem:6,pri:5,vsz:11,rss:11,ni:5,etime:30,state:5,tty:15,user:20,command; unset LC_ALL'; }\n          if (_freebsd || _openbsd || _netbsd) { cmd = 'export LC_ALL=C; ps -axo pid,ppid,pcpu,pmem,pri,vsz,rss,ni,etime,state,tty,user,command; unset LC_ALL'; }\n          if (_darwin) { cmd = 'ps -axo pid,ppid,pcpu,pmem,pri,vsz=temp_title_1,rss=temp_title_2,nice,etime=temp_title_3,state,tty,user,command -r'; }\n          if (_sunos) { cmd = 'ps -Ao pid,ppid,pcpu,pmem,pri,vsz,rss,nice,stime,s,tty,user,comm'; }\n          exec(cmd, { maxBuffer: 1024 * 20000 }, function (error, stdout) {\n            if (!error && stdout.toString().trim()) {\n              result.list = (parseProcesses(stdout.toString().split('\\n'))).slice();\n              result.all = result.list.length;\n              result.running = result.list.filter(function (e) {\n                return e.state === 'running';\n              }).length;\n              result.blocked = result.list.filter(function (e) {\n                return e.state === 'blocked';\n              }).length;\n              result.sleeping = result.list.filter(function (e) {\n                return e.state === 'sleeping';\n              }).length;\n\n              if (_linux) {\n                // calc process_cpu - ps is not accurate in linux!\n                cmd = 'cat /proc/stat | grep \"cpu \"';\n                for (let i = 0; i < result.list.length; i++) {\n                  cmd += (';cat /proc/' + result.list[i].pid + '/stat');\n                }\n                exec(cmd, { maxBuffer: 1024 * 20000 }, function (error, stdout) {\n                  let curr_processes = stdout.toString().split('\\n');\n\n                  // first line (all - /proc/stat)\n                  let all = parseProcStat(curr_processes.shift());\n\n                  // process\n                  let list_new = {};\n                  let resultProcess = {};\n                  for (let i = 0; i < curr_processes.length; i++) {\n                    resultProcess = calcProcStatLinux(curr_processes[i], all, _processes_cpu);\n\n                    if (resultProcess.pid) {\n\n                      // store pcpu in outer array\n                      let listPos = result.list.map(function (e) { return e.pid; }).indexOf(resultProcess.pid);\n                      if (listPos >= 0) {\n                        result.list[listPos].cpu = resultProcess.cpuu + resultProcess.cpus;\n                        result.list[listPos].cpuu = resultProcess.cpuu;\n                        result.list[listPos].cpus = resultProcess.cpus;\n                      }\n\n                      // save new values\n                      list_new[resultProcess.pid] = {\n                        cpuu: resultProcess.cpuu,\n                        cpus: resultProcess.cpus,\n                        utime: resultProcess.utime,\n                        stime: resultProcess.stime,\n                        cutime: resultProcess.cutime,\n                        cstime: resultProcess.cstime\n                      };\n                    }\n                  }\n\n                  // store old values\n                  _processes_cpu.all = all;\n                  // _processes_cpu.list = list_new;\n                  _processes_cpu.list = Object.assign({}, list_new);\n                  _processes_cpu.ms = Date.now() - _processes_cpu.ms;\n                  // _processes_cpu.result = result;\n                  _processes_cpu.result = Object.assign({}, result);\n                  if (callback) { callback(result); }\n                  resolve(result);\n                });\n              } else {\n                if (callback) { callback(result); }\n                resolve(result);\n              }\n            } else {\n              cmd = 'ps -o pid,ppid,vsz,rss,nice,etime,stat,tty,user,comm';\n              if (_sunos) {\n                cmd = 'ps -o pid,ppid,vsz,rss,nice,etime,s,tty,user,comm';\n              }\n              exec(cmd, { maxBuffer: 1024 * 20000 }, function (error, stdout) {\n                if (!error) {\n                  let lines = stdout.toString().split('\\n');\n                  lines.shift();\n\n                  result.list = parseProcesses2(lines).slice();\n                  result.all = result.list.length;\n                  result.running = result.list.filter(function (e) {\n                    return e.state === 'running';\n                  }).length;\n                  result.blocked = result.list.filter(function (e) {\n                    return e.state === 'blocked';\n                  }).length;\n                  result.sleeping = result.list.filter(function (e) {\n                    return e.state === 'sleeping';\n                  }).length;\n                  if (callback) { callback(result); }\n                  resolve(result);\n                } else {\n                  if (callback) { callback(result); }\n                  resolve(result);\n                }\n              });\n            }\n          });\n        } else if (_windows) {\n          try {\n            util.powerShell('Get-WmiObject Win32_Process | select ProcessId,ParentProcessId,ExecutionState,Caption,CommandLine,ExecutablePath,UserModeTime,KernelModeTime,WorkingSetSize,Priority,PageFileUsage,CreationDate | fl').then((stdout, error) => {\n              if (!error) {\n                let processSections = stdout.split(/\\n\\s*\\n/);\n                let procs = [];\n                let procStats = [];\n                let list_new = {};\n                let allcpuu = 0;\n                let allcpus = 0;\n                // let allcpuu = _processes_cpu.all_utime;\n                // let allcpus = _processes_cpu.all_stime;\n                for (let i = 0; i < processSections.length; i++) {\n                  if (processSections[i].trim() !== '') {\n                    let lines = processSections[i].trim().split('\\r\\n');\n                    let pid = parseInt(util.getValue(lines, 'ProcessId', ':', true), 10);\n                    let parentPid = parseInt(util.getValue(lines, 'ParentProcessId', ':', true), 10);\n                    let statusValue = util.getValue(lines, 'ExecutionState', ':');\n                    let name = util.getValue(lines, 'Caption', ':', true);\n                    let commandLine = util.getValue(lines, 'CommandLine', ':', true);\n                    let commandPath = util.getValue(lines, 'ExecutablePath', ':', true);\n                    let utime = parseInt(util.getValue(lines, 'UserModeTime', ':', true), 10);\n                    let stime = parseInt(util.getValue(lines, 'KernelModeTime', ':', true), 10);\n                    let memw = parseInt(util.getValue(lines, 'WorkingSetSize', ':', true), 10);\n                    allcpuu = allcpuu + utime;\n                    allcpus = allcpus + stime;\n                    // allcpuu += utime - (_processes_cpu.list[pid] ? _processes_cpu.list[pid].utime : 0);\n                    // allcpus += stime - (_processes_cpu.list[pid] ? _processes_cpu.list[pid].stime : 0);\n                    result.all++;\n                    if (!statusValue) { result.unknown++; }\n                    if (statusValue === '3') { result.running++; }\n                    if (statusValue === '4' || statusValue === '5') { result.blocked++; }\n\n                    procStats.push({\n                      pid: pid,\n                      utime: utime,\n                      stime: stime,\n                      cpu: 0,\n                      cpuu: 0,\n                      cpus: 0,\n                    });\n                    procs.push({\n                      pid: pid,\n                      parentPid: parentPid,\n                      name: name,\n                      cpu: 0,\n                      cpuu: 0,\n                      cpus: 0,\n                      mem: memw / os.totalmem() * 100,\n                      priority: parseInt(util.getValue(lines, 'Priority', ':', true), 10),\n                      memVsz: parseInt(util.getValue(lines, 'PageFileUsage', ':', true), 10),\n                      memRss: Math.floor(parseInt(util.getValue(lines, 'WorkingSetSize', ':', true), 10) / 1024),\n                      nice: 0,\n                      started: parseTimeWin(util.getValue(lines, 'CreationDate', ':', true)),\n                      state: (!statusValue ? _winStatusValues[0] : _winStatusValues[statusValue]),\n                      tty: '',\n                      user: '',\n                      command: commandLine || name,\n                      path: commandPath,\n                      params: ''\n                    });\n                  }\n                }\n                result.sleeping = result.all - result.running - result.blocked - result.unknown;\n                result.list = procs;\n                for (let i = 0; i < procStats.length; i++) {\n                  let resultProcess = calcProcStatWin(procStats[i], allcpuu + allcpus, _processes_cpu);\n\n                  // store pcpu in outer array\n                  let listPos = result.list.map(function (e) { return e.pid; }).indexOf(resultProcess.pid);\n                  if (listPos >= 0) {\n                    result.list[listPos].cpu = resultProcess.cpuu + resultProcess.cpus;\n                    result.list[listPos].cpuu = resultProcess.cpuu;\n                    result.list[listPos].cpus = resultProcess.cpus;\n                  }\n\n                  // save new values\n                  list_new[resultProcess.pid] = {\n                    cpuu: resultProcess.cpuu,\n                    cpus: resultProcess.cpus,\n                    utime: resultProcess.utime,\n                    stime: resultProcess.stime\n                  };\n                }\n                // store old values\n                _processes_cpu.all = allcpuu + allcpus;\n                _processes_cpu.all_utime = allcpuu;\n                _processes_cpu.all_stime = allcpus;\n                // _processes_cpu.list = list_new;\n                _processes_cpu.list = Object.assign({}, list_new);\n                _processes_cpu.ms = Date.now() - _processes_cpu.ms;\n                // _processes_cpu.result = result;\n                _processes_cpu.result = Object.assign({}, result);\n              }\n              if (callback) {\n                callback(result);\n              }\n              resolve(result);\n            });\n          } catch (e) {\n            if (callback) { callback(result); }\n            resolve(result);\n          }\n        } else {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      } else {\n        if (callback) { callback(_processes_cpu.result); }\n        resolve(_processes_cpu.result);\n      }\n    });\n  });\n}\n\nexports.processes = processes;\n\n// --------------------------\n// PS - process load\n// get detailed information about a certain process\n// (PID, CPU-Usage %, Mem-Usage %)\n\nfunction processLoad(proc, callback) {\n\n  // fallback - if only callback is given\n  if (util.isFunction(proc) && !callback) {\n    callback = proc;\n    proc = '';\n  }\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n\n      proc = proc || '';\n\n      if (typeof proc !== 'string') {\n        if (callback) { callback([]); }\n        return resolve([]);\n      }\n\n      let processesString = '';\n      processesString.__proto__.toLowerCase = util.stringToLower;\n      processesString.__proto__.replace = util.stringReplace;\n      processesString.__proto__.trim = util.stringTrim;\n\n      const s = util.sanitizeShellString(proc);\n      for (let i = 0; i <= util.mathMin(s.length, 2000); i++) {\n        if (!(s[i] === undefined)) {\n          processesString = processesString + s[i];\n        }\n      }\n\n      processesString = processesString.trim().toLowerCase().replace(/, /g, '|').replace(/,+/g, '|');\n      if (processesString === '') {\n        processesString = '*';\n      }\n      if (util.isPrototypePolluted() && processesString !== '*') {\n        processesString = '------';\n      }\n      let processes = processesString.split('|');\n      let result = [];\n\n      const procSanitized = util.isPrototypePolluted() ? '' : util.sanitizeShellString(proc);\n\n      // from here new\n      // let result = {\n      //   'proc': procSanitized,\n      //   'pid': null,\n      //   'cpu': 0,\n      //   'mem': 0\n      // };\n      if (procSanitized && processes.length && processes[0] !== '------') {\n        if (_windows) {\n          try {\n            util.powerShell('Get-WmiObject Win32_Process | select ProcessId,Caption,UserModeTime,KernelModeTime,WorkingSetSize | fl').then((stdout, error) => {\n              if (!error) {\n                let processSections = stdout.split(/\\n\\s*\\n/);\n                let procStats = [];\n                let list_new = {};\n                let allcpuu = 0;\n                let allcpus = 0;\n                // let allcpuu = _process_cpu.all_utime;\n                // let allcpus = _process_cpu.all_stime;\n\n                // go through all processes\n                for (let i = 0; i < processSections.length; i++) {\n                  if (processSections[i].trim() !== '') {\n                    let lines = processSections[i].trim().split('\\r\\n');\n                    let pid = parseInt(util.getValue(lines, 'ProcessId', ':', true), 10);\n                    let name = util.getValue(lines, 'Caption', ':', true);\n                    let utime = parseInt(util.getValue(lines, 'UserModeTime', ':', true), 10);\n                    let stime = parseInt(util.getValue(lines, 'KernelModeTime', ':', true), 10);\n                    let mem = parseInt(util.getValue(lines, 'WorkingSetSize', ':', true), 10);\n                    allcpuu = allcpuu + utime;\n                    allcpus = allcpus + stime;\n                    // allcpuu += utime - (_process_cpu.list[pid] ? _process_cpu.list[pid].utime : 0);\n                    // allcpus += stime - (_process_cpu.list[pid] ? _process_cpu.list[pid].stime : 0);\n\n                    procStats.push({\n                      pid: pid,\n                      name,\n                      utime: utime,\n                      stime: stime,\n                      cpu: 0,\n                      cpuu: 0,\n                      cpus: 0,\n                      mem\n                    });\n                    let pname = '';\n                    let inList = false;\n                    processes.forEach(function (proc) {\n                      // console.log(proc)\n                      // console.log(item)\n                      // inList = inList || item.name.toLowerCase() === proc.toLowerCase();\n                      if (name.toLowerCase().indexOf(proc.toLowerCase()) >= 0 && !inList) {\n                        inList = true;\n                        pname = proc;\n                      }\n                    });\n\n                    if (processesString === '*' || inList) {\n                      let processFound = false;\n                      result.forEach(function (item) {\n                        if (item.proc.toLowerCase() === pname.toLowerCase()) {\n                          item.pids.push(pid);\n                          item.mem += mem / os.totalmem() * 100;\n                          processFound = true;\n                        }\n                      });\n                      if (!processFound) {\n                        result.push({\n                          proc: pname,\n                          pid: pid,\n                          pids: [pid],\n                          cpu: 0,\n                          mem: mem / os.totalmem() * 100\n                        });\n                      }\n                    }\n                  }\n                }\n                // add missing processes\n                if (processesString !== '*') {\n                  let processesMissing = processes.filter(function (name) {\n                    // return procStats.filter(function(item) { return item.name.toLowerCase() === name }).length === 0;\n                    return procStats.filter(function (item) { return item.name.toLowerCase().indexOf(name) >= 0; }).length === 0;\n\n                  });\n                  processesMissing.forEach(function (procName) {\n                    result.push({\n                      proc: procName,\n                      pid: null,\n                      pids: [],\n                      cpu: 0,\n                      mem: 0\n                    });\n                  });\n                }\n\n                // calculate proc stats for each proc\n                for (let i = 0; i < procStats.length; i++) {\n                  let resultProcess = calcProcStatWin(procStats[i], allcpuu + allcpus, _process_cpu);\n\n                  let listPos = -1;\n                  for (let j = 0; j < result.length; j++) {\n                    if (result[j].pid === resultProcess.pid || result[j].pids.indexOf(resultProcess.pid) >= 0) { listPos = j; }\n                  }\n                  if (listPos >= 0) {\n                    result[listPos].cpu += resultProcess.cpuu + resultProcess.cpus;\n                  }\n\n                  // save new values\n                  list_new[resultProcess.pid] = {\n                    cpuu: resultProcess.cpuu,\n                    cpus: resultProcess.cpus,\n                    utime: resultProcess.utime,\n                    stime: resultProcess.stime\n                  };\n                }\n                // store old values\n                _process_cpu.all = allcpuu + allcpus;\n                _process_cpu.all_utime = allcpuu;\n                _process_cpu.all_stime = allcpus;\n                // _process_cpu.list = list_new;\n                _process_cpu.list = Object.assign({}, list_new);\n                _process_cpu.ms = Date.now() - _process_cpu.ms;\n                _process_cpu.result = JSON.parse(JSON.stringify(result));\n                if (callback) {\n                  callback(result);\n                }\n                resolve(result);\n              }\n            });\n          } catch (e) {\n            if (callback) { callback(result); }\n            resolve(result);\n          }\n        }\n\n        if (_darwin || _linux || _freebsd || _openbsd || _netbsd) {\n          const params = ['-axo', 'pid,pcpu,pmem,comm'];\n          util.execSafe('ps', params).then((stdout) => {\n            if (stdout) {\n              let procStats = [];\n              let lines = stdout.toString().split('\\n').filter(function (line) {\n                if (processesString === '*') { return true; }\n                if (line.toLowerCase().indexOf('grep') !== -1) { return false; } // remove this??\n                let found = false;\n                processes.forEach(function (item) {\n                  found = found || (line.toLowerCase().indexOf(item.toLowerCase()) >= 0);\n                });\n                return found;\n              });\n\n              lines.forEach(function (line) {\n                let data = line.trim().replace(/ +/g, ' ').split(' ');\n                if (data.length > 3) {\n                  procStats.push({\n                    name: data[3].substring(data[3].lastIndexOf('/') + 1),\n                    pid: parseInt(data[0]) || 0,\n                    cpu: parseFloat(data[1].replace(',', '.')),\n                    mem: parseFloat(data[2].replace(',', '.'))\n                  });\n                }\n              });\n\n              procStats.forEach(function (item) {\n                let listPos = -1;\n                let inList = false;\n                let name = '';\n                for (let j = 0; j < result.length; j++) {\n                  // if (result[j].proc.toLowerCase() === item.name.toLowerCase()) {\n                  // if (result[j].proc.toLowerCase().indexOf(item.name.toLowerCase()) >= 0) {\n                  if (item.name.toLowerCase().indexOf(result[j].proc.toLowerCase()) >= 0) {\n                    listPos = j;\n                  }\n                }\n                // console.log(listPos);\n                processes.forEach(function (proc) {\n                  // console.log(proc)\n                  // console.log(item)\n                  // inList = inList || item.name.toLowerCase() === proc.toLowerCase();\n                  if (item.name.toLowerCase().indexOf(proc.toLowerCase()) >= 0 && !inList) {\n                    inList = true;\n                    name = proc;\n                  }\n                });\n                // console.log(item);\n                // console.log(listPos);\n                if ((processesString === '*') || inList) {\n                  if (listPos < 0) {\n                    result.push({\n                      proc: name,\n                      pid: item.pid,\n                      pids: [item.pid],\n                      cpu: item.cpu,\n                      mem: item.mem\n                    });\n                  } else {\n                    result[listPos].pids.push(item.pid);\n                    result[listPos].cpu += item.cpu;\n                    result[listPos].mem += item.mem;\n                  }\n                }\n              });\n\n              if (processesString !== '*') {\n                // add missing processes\n                let processesMissing = processes.filter(function (name) {\n                  return procStats.filter(function (item) { return item.name.toLowerCase().indexOf(name) >= 0; }).length === 0;\n                });\n                processesMissing.forEach(function (procName) {\n                  result.push({\n                    proc: procName,\n                    pid: null,\n                    pids: [],\n                    cpu: 0,\n                    mem: 0\n                  });\n                });\n              }\n              if (_linux) {\n                // calc process_cpu - ps is not accurate in linux!\n                result.forEach(function (item) {\n                  item.cpu = 0;\n                });\n                let cmd = 'cat /proc/stat | grep \"cpu \"';\n                for (let i in result) {\n                  for (let j in result[i].pids) {\n                    cmd += (';cat /proc/' + result[i].pids[j] + '/stat');\n                  }\n                }\n                exec(cmd, { maxBuffer: 1024 * 20000 }, function (error, stdout) {\n                  let curr_processes = stdout.toString().split('\\n');\n\n                  // first line (all - /proc/stat)\n                  let all = parseProcStat(curr_processes.shift());\n\n                  // process\n                  let list_new = {};\n                  let resultProcess = {};\n\n                  for (let i = 0; i < curr_processes.length; i++) {\n                    resultProcess = calcProcStatLinux(curr_processes[i], all, _process_cpu);\n\n                    if (resultProcess.pid) {\n\n                      // find result item\n                      let resultItemId = -1;\n                      for (let i in result) {\n                        if (result[i].pids.indexOf(resultProcess.pid) >= 0) {\n                          resultItemId = i;\n                        }\n                      }\n                      // store pcpu in outer result\n                      if (resultItemId >= 0) {\n                        result[resultItemId].cpu += resultProcess.cpuu + resultProcess.cpus;\n                      }\n\n                      // save new values\n                      list_new[resultProcess.pid] = {\n                        cpuu: resultProcess.cpuu,\n                        cpus: resultProcess.cpus,\n                        utime: resultProcess.utime,\n                        stime: resultProcess.stime,\n                        cutime: resultProcess.cutime,\n                        cstime: resultProcess.cstime\n                      };\n                    }\n                  }\n\n                  result.forEach(function (item) {\n                    item.cpu = Math.round(item.cpu * 100) / 100;\n                  });\n\n                  _process_cpu.all = all;\n                  // _process_cpu.list = list_new;\n                  _process_cpu.list = Object.assign({}, list_new);\n                  _process_cpu.ms = Date.now() - _process_cpu.ms;\n                  // _process_cpu.result = result;\n                  _process_cpu.result = Object.assign({}, result);\n                  if (callback) { callback(result); }\n                  resolve(result);\n                });\n              } else {\n                if (callback) { callback(result); }\n                resolve(result);\n              }\n            } else {\n              if (callback) { callback(result); }\n              resolve(result);\n            }\n          });\n        }\n      }\n    });\n  });\n}\n\nexports.processLoad = processLoad;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/systeminformation/lib/processes.js?")},"./node_modules/systeminformation/lib/system.js":
/*!******************************************************!*\
  !*** ./node_modules/systeminformation/lib/system.js ***!
  \******************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n// @ts-check\n// ==================================================================================\n// system.js\n// ----------------------------------------------------------------------------------\n// Description:   System Information - library\n//                for Node.js\n// Copyright:     (c) 2014 - 2022\n// Author:        Sebastian Hildebrandt\n// ----------------------------------------------------------------------------------\n// License:       MIT\n// ==================================================================================\n// 2. System (Hardware, BIOS, Base Board)\n// ----------------------------------------------------------------------------------\n\nconst fs = __webpack_require__(/*! fs */ \"fs\");\nconst os = __webpack_require__(/*! os */ \"os\");\nconst util = __webpack_require__(/*! ./util */ \"./node_modules/systeminformation/lib/util.js\");\nconst exec = (__webpack_require__(/*! child_process */ \"child_process\").exec);\nconst execSync = (__webpack_require__(/*! child_process */ \"child_process\").execSync);\nconst execPromise = util.promisify((__webpack_require__(/*! child_process */ \"child_process\").exec));\n\nlet _platform = process.platform;\n\nconst _linux = (_platform === 'linux' || _platform === 'android');\nconst _darwin = (_platform === 'darwin');\nconst _windows = (_platform === 'win32');\nconst _freebsd = (_platform === 'freebsd');\nconst _openbsd = (_platform === 'openbsd');\nconst _netbsd = (_platform === 'netbsd');\nconst _sunos = (_platform === 'sunos');\n\nfunction system(callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n\n      let result = {\n        manufacturer: '',\n        model: 'Computer',\n        version: '',\n        serial: '-',\n        uuid: '-',\n        sku: '-',\n        virtual: false\n      };\n\n      if (_linux || _freebsd || _openbsd || _netbsd) {\n        exec('export LC_ALL=C; dmidecode -t system 2>/dev/null; unset LC_ALL', function (error, stdout) {\n          // if (!error) {\n          let lines = stdout.toString().split('\\n');\n          result.manufacturer = util.getValue(lines, 'manufacturer');\n          result.model = util.getValue(lines, 'product name');\n          result.version = util.getValue(lines, 'version');\n          result.serial = util.getValue(lines, 'serial number');\n          result.uuid = util.getValue(lines, 'uuid').toLowerCase();\n          result.sku = util.getValue(lines, 'sku number');\n          // }\n          // Non-Root values\n          const cmd = `echo -n \"product_name: \"; cat /sys/devices/virtual/dmi/id/product_name 2>/dev/null; echo;\n            echo -n \"product_serial: \"; cat /sys/devices/virtual/dmi/id/product_serial 2>/dev/null; echo;\n            echo -n \"product_uuid: \"; cat /sys/devices/virtual/dmi/id/product_uuid 2>/dev/null; echo;\n            echo -n \"product_version: \"; cat /sys/devices/virtual/dmi/id/product_version 2>/dev/null; echo;\n            echo -n \"sys_vendor: \"; cat /sys/devices/virtual/dmi/id/sys_vendor 2>/dev/null; echo;`;\n          try {\n            lines = execSync(cmd).toString().split('\\n');\n            result.manufacturer = result.manufacturer === '' ? util.getValue(lines, 'sys_vendor') : result.manufacturer;\n            result.model = result.model === '' ? util.getValue(lines, 'product_name') : result.model;\n            result.version = result.version === '' ? util.getValue(lines, 'product_version') : result.version;\n            result.serial = result.serial === '' ? util.getValue(lines, 'product_serial') : result.serial;\n            result.uuid = result.uuid === '' ? util.getValue(lines, 'product_uuid').toLowerCase() : result.uuid;\n          } catch (e) {\n            util.noop();\n          }\n          if (!result.serial || result.serial.toLowerCase().indexOf('o.e.m.') !== -1) { result.serial = '-'; }\n          if (!result.manufacturer || result.manufacturer.toLowerCase().indexOf('o.e.m.') !== -1) { result.manufacturer = ''; }\n          if (!result.model || result.model.toLowerCase().indexOf('o.e.m.') !== -1) { result.model = 'Computer'; }\n          if (!result.version || result.version.toLowerCase().indexOf('o.e.m.') !== -1) { result.version = ''; }\n          if (!result.sku || result.sku.toLowerCase().indexOf('o.e.m.') !== -1) { result.sku = '-'; }\n\n          // detect virtual (1)\n          if (result.model.toLowerCase() === 'virtualbox' || result.model.toLowerCase() === 'kvm' || result.model.toLowerCase() === 'virtual machine' || result.model.toLowerCase() === 'bochs' || result.model.toLowerCase().startsWith('vmware') || result.model.toLowerCase().startsWith('droplet')) {\n            result.virtual = true;\n            switch (result.model.toLowerCase()) {\n              case 'virtualbox':\n                result.virtualHost = 'VirtualBox';\n                break;\n              case 'vmware':\n                result.virtualHost = 'VMware';\n                break;\n              case 'kvm':\n                result.virtualHost = 'KVM';\n                break;\n              case 'bochs':\n                result.virtualHost = 'bochs';\n                break;\n            }\n          }\n          if (result.manufacturer.toLowerCase().startsWith('vmware') || result.manufacturer.toLowerCase() === 'xen') {\n            result.virtual = true;\n            switch (result.manufacturer.toLowerCase()) {\n              case 'vmware':\n                result.virtualHost = 'VMware';\n                break;\n              case 'xen':\n                result.virtualHost = 'Xen';\n                break;\n            }\n          }\n          if (!result.virtual) {\n            try {\n              const disksById = execSync('ls -1 /dev/disk/by-id/ 2>/dev/null').toString();\n              if (disksById.indexOf('_QEMU_') >= 0) {\n                result.virtual = true;\n                result.virtualHost = 'QEMU';\n              }\n              if (disksById.indexOf('_VBOX_') >= 0) {\n                result.virtual = true;\n                result.virtualHost = 'VirtualBox';\n              }\n            } catch (e) {\n              util.noop();\n            }\n          }\n          if (!result.virtual && (os.release().toLowerCase().indexOf('microsoft') >= 0 || os.release().toLowerCase().endsWith('wsl2'))) {\n            const kernelVersion = parseFloat(os.release().toLowerCase());\n            result.virtual = true;\n            result.manufacturer = 'Microsoft';\n            result.model = 'WSL';\n            result.version = kernelVersion < 4.19 ? '1' : '2';\n          }\n          if ((_freebsd || _openbsd || _netbsd) && !result.virtualHost) {\n            try {\n              const procInfo = execSync('dmidecode -t 4');\n              const procLines = procInfo.toString().split('\\n');\n              const procManufacturer = util.getValue(procLines, 'manufacturer', ':', true);\n              switch (procManufacturer.toLowerCase()) {\n                case 'virtualbox':\n                  result.virtualHost = 'VirtualBox';\n                  break;\n                case 'vmware':\n                  result.virtualHost = 'VMware';\n                  break;\n                case 'kvm':\n                  result.virtualHost = 'KVM';\n                  break;\n                case 'bochs':\n                  result.virtualHost = 'bochs';\n                  break;\n              }\n            } catch (e) {\n              util.noop();\n            }\n          }\n          // detect docker\n          if (fs.existsSync('/.dockerenv') || fs.existsSync('/.dockerinit')) {\n            result.model = 'Docker Container';\n          }\n          try {\n            const stdout = execSync('dmesg 2>/dev/null | grep -iE \"virtual|hypervisor\" | grep -iE \"vmware|qemu|kvm|xen\" | grep -viE \"Nested Virtualization|/virtual/\"');\n            // detect virtual machines\n            let lines = stdout.toString().split('\\n');\n            if (lines.length > 0) {\n              if (result.model === 'Computer') { result.model = 'Virtual machine'; }\n              result.virtual = true;\n              if (stdout.toString().toLowerCase().indexOf('vmware') >= 0 && !result.virtualHost) {\n                result.virtualHost = 'VMware';\n              }\n              if (stdout.toString().toLowerCase().indexOf('qemu') >= 0 && !result.virtualHost) {\n                result.virtualHost = 'QEMU';\n              }\n              if (stdout.toString().toLowerCase().indexOf('xen') >= 0 && !result.virtualHost) {\n                result.virtualHost = 'Xen';\n              }\n              if (stdout.toString().toLowerCase().indexOf('kvm') >= 0 && !result.virtualHost) {\n                result.virtualHost = 'KVM';\n              }\n            }\n          } catch (e) {\n            util.noop();\n          }\n\n          if (result.manufacturer === '' && result.model === 'Computer' && result.version === '') {\n            // Check Raspberry Pi\n            fs.readFile('/proc/cpuinfo', function (error, stdout) {\n              if (!error) {\n                let lines = stdout.toString().split('\\n');\n                result.model = util.getValue(lines, 'hardware', ':', true).toUpperCase();\n                result.version = util.getValue(lines, 'revision', ':', true).toLowerCase();\n                result.serial = util.getValue(lines, 'serial', ':', true);\n                const model = util.getValue(lines, 'model:', ':', true);\n                // reference values: https://elinux.org/RPi_HardwareHistory\n                // https://www.raspberrypi.org/documentation/hardware/raspberrypi/revision-codes/README.md\n                if ((result.model === 'BCM2835' || result.model === 'BCM2708' || result.model === 'BCM2709' || result.model === 'BCM2710' || result.model === 'BCM2711' || result.model === 'BCM2836' || result.model === 'BCM2837') && model.toLowerCase().indexOf('raspberry') >= 0) {\n                  const rPIRevision = util.decodePiCpuinfo(lines);\n                  result.model = rPIRevision.model;\n                  result.version = rPIRevision.revisionCode;\n                  result.manufacturer = 'Raspberry Pi Foundation';\n                  result.raspberry = {\n                    manufacturer: rPIRevision.manufacturer,\n                    processor: rPIRevision.processor,\n                    type: rPIRevision.type,\n                    revision: rPIRevision.revision\n                  };\n                }\n\n                // if (result.model === 'BCM2835' || result.model === 'BCM2708' || result.model === 'BCM2709' || result.model === 'BCM2835' || result.model === 'BCM2837') {\n\n\n                //   // Pi 4\n                //   if (['d03114'].indexOf(result.version) >= 0) {\n                //     result.model = result.model + ' - Pi 4 Model B';\n                //     result.version = result.version + ' - Rev. 1.4';\n                //   }\n                //   if (['b03112', 'c03112'].indexOf(result.version) >= 0) {\n                //     result.model = result.model + ' - Pi 4 Model B';\n                //     result.version = result.version + ' - Rev. 1.2';\n                //   }\n                //   if (['a03111', 'b03111', 'c03111'].indexOf(result.version) >= 0) {\n                //     result.model = result.model + ' - Pi 4 Model B';\n                //     result.version = result.version + ' - Rev. 1.1';\n                //   }\n                //   // Pi 3\n                //   if (['a02082', 'a22082', 'a32082', 'a52082'].indexOf(result.version) >= 0) {\n                //     result.model = result.model + ' - Pi 3 Model B';\n                //     result.version = result.version + ' - Rev. 1.2';\n                //   }\n                //   if (['a22083'].indexOf(result.version) >= 0) {\n                //     result.model = result.model + ' - Pi 3 Model B';\n                //     result.version = result.version + ' - Rev. 1.3';\n                //   }\n                //   if (['a020d3'].indexOf(result.version) >= 0) {\n                //     result.model = result.model + ' - Pi 3 Model B+';\n                //     result.version = result.version + ' - Rev. 1.3';\n                //   }\n                //   if (['9020e0'].indexOf(result.version) >= 0) {\n                //     result.model = result.model + ' - Pi 3 Model A+';\n                //     result.version = result.version + ' - Rev. 1.3';\n                //   }\n                //   // Pi 2 Model B\n                //   if (['a01040'].indexOf(result.version) >= 0) {\n                //     result.model = result.model + ' - Pi 2 Model B';\n                //     result.version = result.version + ' - Rev. 1.0';\n                //   }\n                //   if (['a01041', 'a21041'].indexOf(result.version) >= 0) {\n                //     result.model = result.model + ' - Pi 2 Model B';\n                //     result.version = result.version + ' - Rev. 1.1';\n                //   }\n                //   if (['a22042', 'a02042'].indexOf(result.version) >= 0) {\n                //     result.model = result.model + ' - Pi 2 Model B';\n                //     result.version = result.version + ' - Rev. 1.2';\n                //   }\n\n                //   // Compute Model\n                //   if (['a02100'].indexOf(result.version) >= 0) {\n                //     result.model = result.model + ' - Pi CM3+';\n                //     result.version = result.version + ' - Rev 1.0';\n                //   }\n                //   if (['a020a0', 'a220a0'].indexOf(result.version) >= 0) {\n                //     result.model = result.model + ' - Pi CM3';\n                //     result.version = result.version + ' - Rev 1.0';\n                //   }\n                //   if (['900061'].indexOf(result.version) >= 0) {\n                //     result.model = result.model + ' - Pi CM';\n                //     result.version = result.version + ' - Rev 1.1';\n                //   }\n\n                //   // Pi Zero\n                //   if (['900092', '920092'].indexOf(result.version) >= 0) {\n                //     result.model = result.model + ' - Pi Zero';\n                //     result.version = result.version + ' - Rev 1.2';\n                //   }\n                //   if (['900093', '920093'].indexOf(result.version) >= 0) {\n                //     result.model = result.model + ' - Pi Zero';\n                //     result.version = result.version + ' - Rev 1.3';\n                //   }\n                //   if (['9000c1'].indexOf(result.version) >= 0) {\n                //     result.model = result.model + ' - Pi Zero W';\n                //     result.version = result.version + ' - Rev 1.1';\n                //   }\n\n                //   // A, B, A+ B+\n                //   if (['0002', '0003'].indexOf(result.version) >= 0) {\n                //     result.model = result.model + ' - Pi Model B';\n                //     result.version = result.version + ' - Rev 1.0';\n                //   }\n                //   if (['0004', '0005', '0006', '000d', '000e', '000f'].indexOf(result.version) >= 0) {\n                //     result.model = result.model + ' - Pi Model B';\n                //     result.version = result.version + ' - Rev 2.0';\n                //   }\n                //   if (['0007', '0008', '0009'].indexOf(result.version) >= 0) {\n                //     result.model = result.model + ' - Pi Model A';\n                //     result.version = result.version + ' - Rev 2.0';\n                //   }\n                //   if (['0010'].indexOf(result.version) >= 0) {\n                //     result.model = result.model + ' - Pi Model B+';\n                //     result.version = result.version + ' - Rev 1.0';\n                //   }\n                //   if (['0012'].indexOf(result.version) >= 0) {\n                //     result.model = result.model + ' - Pi Model A+';\n                //     result.version = result.version + ' - Rev 1.0';\n                //   }\n                //   if (['0013', '900032'].indexOf(result.version) >= 0) {\n                //     result.model = result.model + ' - Pi Model B+';\n                //     result.version = result.version + ' - Rev 1.2';\n                //   }\n                //   if (['0015', '900021'].indexOf(result.version) >= 0) {\n                //     result.model = result.model + ' - Pi Model A+';\n                //     result.version = result.version + ' - Rev 1.1';\n                //   }\n                //   if (result.model.indexOf('Pi') !== -1 && result.version) {  // Pi, Pi Zero\n                //     result.manufacturer = 'Raspberry Pi Foundation';\n                //   }\n                // }\n              }\n              if (callback) { callback(result); }\n              resolve(result);\n            });\n          } else {\n            if (callback) { callback(result); }\n            resolve(result);\n          }\n        });\n      }\n      if (_darwin) {\n        exec('ioreg -c IOPlatformExpertDevice -d 2', function (error, stdout) {\n          if (!error) {\n            let lines = stdout.toString().replace(/[<>\"]/g, '').split('\\n');\n            result.manufacturer = util.getValue(lines, 'manufacturer', '=', true);\n            result.model = util.getValue(lines, 'model', '=', true);\n            result.version = util.getValue(lines, 'version', '=', true);\n            result.serial = util.getValue(lines, 'ioplatformserialnumber', '=', true);\n            result.uuid = util.getValue(lines, 'ioplatformuuid', '=', true).toLowerCase();\n            result.sku = util.getValue(lines, 'board-id', '=', true);\n          }\n          if (callback) { callback(result); }\n          resolve(result);\n        });\n      }\n      if (_sunos) {\n        if (callback) { callback(result); }\n        resolve(result);\n      }\n      if (_windows) {\n        try {\n          util.powerShell('Get-WmiObject Win32_ComputerSystemProduct | select Name,Vendor,Version,IdentifyingNumber,UUID | fl').then((stdout, error) => {\n            if (!error) {\n              // let lines = stdout.split('\\r\\n').filter(line => line.trim() !== '').filter((line, idx) => idx > 0)[0].trim().split(/\\s\\s+/);\n              let lines = stdout.split('\\r\\n');\n              result.manufacturer = util.getValue(lines, 'vendor', ':');\n              result.model = util.getValue(lines, 'name', ':');\n              result.version = util.getValue(lines, 'version', ':');\n              result.serial = util.getValue(lines, 'identifyingnumber', ':');\n              result.uuid = util.getValue(lines, 'uuid', ':').toLowerCase();\n              // detect virtual (1)\n              const model = result.model.toLowerCase();\n              if (model === 'virtualbox' || model === 'kvm' || model === 'virtual machine' || model === 'bochs' || model.startsWith('vmware') || model.startsWith('qemu')) {\n                result.virtual = true;\n                if (model.startsWith('virtualbox')) { result.virtualHost = 'VirtualBox'; }\n                if (model.startsWith('vmware')) { result.virtualHost = 'VMware'; }\n                if (model.startsWith('kvm')) { result.virtualHost = 'KVM'; }\n                if (model.startsWith('bochs')) { result.virtualHost = 'bochs'; }\n                if (model.startsWith('qemu')) { result.virtualHost = 'KVM'; }\n              }\n              const manufacturer = result.manufacturer.toLowerCase();\n              if (manufacturer.startsWith('vmware') || manufacturer.startsWith('qemu') || manufacturer === 'xen') {\n                result.virtual = true;\n                if (manufacturer.startsWith('vmware')) { result.virtualHost = 'VMware'; }\n                if (manufacturer.startsWith('xen')) { result.virtualHost = 'Xen'; }\n                if (manufacturer.startsWith('qemu')) { result.virtualHost = 'KVM'; }\n              }\n              util.powerShell('Get-WmiObject MS_Systeminformation -Namespace \"root/wmi\" | select systemsku | fl ').then((stdout, error) => {\n                if (!error) {\n                  let lines = stdout.split('\\r\\n');\n                  result.sku = util.getValue(lines, 'systemsku', ':');\n                }\n                if (!result.virtual) {\n                  util.powerShell('Get-WmiObject Win32_bios | select Version, SerialNumber, SMBIOSBIOSVersion').then((stdout, error) => {\n                    if (!error) {\n                      let lines = stdout.toString();\n                      if (lines.indexOf('VRTUAL') >= 0 || lines.indexOf('A M I ') >= 0 || lines.indexOf('VirtualBox') >= 0 || lines.indexOf('VMWare') >= 0 || lines.indexOf('Xen') >= 0) {\n                        result.virtual = true;\n                        if (lines.indexOf('VirtualBox') >= 0 && !result.virtualHost) {\n                          result.virtualHost = 'VirtualBox';\n                        }\n                        if (lines.indexOf('VMware') >= 0 && !result.virtualHost) {\n                          result.virtualHost = 'VMware';\n                        }\n                        if (lines.indexOf('Xen') >= 0 && !result.virtualHost) {\n                          result.virtualHost = 'Xen';\n                        }\n                        if (lines.indexOf('VRTUAL') >= 0 && !result.virtualHost) {\n                          result.virtualHost = 'Hyper-V';\n                        }\n                        if (lines.indexOf('A M I') >= 0 && !result.virtualHost) {\n                          result.virtualHost = 'Virtual PC';\n                        }\n                      }\n                      if (callback) { callback(result); }\n                      resolve(result);\n                    } else {\n                      if (callback) { callback(result); }\n                      resolve(result);\n                    }\n                  });\n                } else {\n                  if (callback) { callback(result); }\n                  resolve(result);\n                }\n              });\n            } else {\n              if (callback) { callback(result); }\n              resolve(result);\n            }\n          });\n        } catch (e) {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      }\n    });\n  });\n}\n\nexports.system = system;\n\nfunction bios(callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n\n      let result = {\n        vendor: '',\n        version: '',\n        releaseDate: '',\n        revision: '',\n      };\n      let cmd = '';\n      if (_linux || _freebsd || _openbsd || _netbsd) {\n        if (process.arch === 'arm') {\n          cmd = 'cat /proc/cpuinfo | grep Serial';\n        } else {\n          cmd = 'export LC_ALL=C; dmidecode -t bios 2>/dev/null; unset LC_ALL';\n        }\n        exec(cmd, function (error, stdout) {\n          let lines = stdout.toString().split('\\n');\n          result.vendor = util.getValue(lines, 'Vendor');\n          result.version = util.getValue(lines, 'Version');\n          let datetime = util.getValue(lines, 'Release Date');\n          result.releaseDate = util.parseDateTime(datetime).date;\n          result.revision = util.getValue(lines, 'BIOS Revision');\n          result.serial = util.getValue(lines, 'SerialNumber');\n          let language = util.getValue(lines, 'Currently Installed Language').split('|')[0];\n          if (language) {\n            result.language = language;\n          }\n          if (lines.length && stdout.toString().indexOf('Characteristics:') >= 0) {\n            const features = [];\n            lines.forEach(line => {\n              if (line.indexOf(' is supported') >= 0) {\n                const feature = line.split(' is supported')[0].trim();\n                features.push(feature);\n              }\n            });\n            result.features = features;\n          }\n          // Non-Root values\n          const cmd = `echo -n \"bios_date: \"; cat /sys/devices/virtual/dmi/id/bios_date 2>/dev/null; echo;\n            echo -n \"bios_vendor: \"; cat /sys/devices/virtual/dmi/id/bios_vendor 2>/dev/null; echo;\n            echo -n \"bios_version: \"; cat /sys/devices/virtual/dmi/id/bios_version 2>/dev/null; echo;`;\n          try {\n            lines = execSync(cmd).toString().split('\\n');\n            result.vendor = !result.vendor ? util.getValue(lines, 'bios_vendor') : result.vendor;\n            result.version = !result.version ? util.getValue(lines, 'bios_version') : result.version;\n            datetime = util.getValue(lines, 'bios_date');\n            result.releaseDate = !result.releaseDate ? util.parseDateTime(datetime).date : result.releaseDate;\n          } catch (e) {\n            util.noop();\n          }\n          if (callback) { callback(result); }\n          resolve(result);\n        });\n      }\n      if (_darwin) {\n        result.vendor = 'Apple Inc.';\n        exec(\n          'system_profiler SPHardwareDataType -json', function (error, stdout) {\n            try {\n              const hardwareData = JSON.parse(stdout.toString());\n              if (hardwareData && hardwareData.SPHardwareDataType && hardwareData.SPHardwareDataType.length) {\n                let bootRomVersion = hardwareData.SPHardwareDataType[0].boot_rom_version;\n                bootRomVersion = bootRomVersion ? bootRomVersion.split('(')[0].trim() : null;\n                result.version = bootRomVersion;\n              }\n            } catch (e) {\n              util.noop();\n            }\n            if (callback) { callback(result); }\n            resolve(result);\n          });\n      }\n      if (_sunos) {\n        result.vendor = 'Sun Microsystems';\n        if (callback) { callback(result); }\n        resolve(result);\n      }\n      if (_windows) {\n        try {\n          util.powerShell('Get-WmiObject Win32_bios | select Description,Version,Manufacturer,ReleaseDate,BuildNumber,SerialNumber | fl').then((stdout, error) => {\n            if (!error) {\n              let lines = stdout.toString().split('\\r\\n');\n              const description = util.getValue(lines, 'description', ':');\n              if (description.indexOf(' Version ') !== -1) {\n                // ... Phoenix ROM BIOS PLUS Version 1.10 A04\n                result.vendor = description.split(' Version ')[0].trim();\n                result.version = description.split(' Version ')[1].trim();\n              } else if (description.indexOf(' Ver: ') !== -1) {\n                // ... BIOS Date: 06/27/16 17:50:16 Ver: 1.4.5\n                result.vendor = util.getValue(lines, 'manufacturer', ':');\n                result.version = description.split(' Ver: ')[1].trim();\n              } else {\n                result.vendor = util.getValue(lines, 'manufacturer', ':');\n                result.version = util.getValue(lines, 'version', ':');\n              }\n              result.releaseDate = util.getValue(lines, 'releasedate', ':');\n              if (result.releaseDate.length >= 10) {\n                result.releaseDate = result.releaseDate.substr(0, 4) + '-' + result.releaseDate.substr(4, 2) + '-' + result.releaseDate.substr(6, 2);\n              }\n              result.revision = util.getValue(lines, 'buildnumber', ':');\n              result.serial = util.getValue(lines, 'serialnumber', ':');\n            }\n\n            if (callback) { callback(result); }\n            resolve(result);\n          });\n        } catch (e) {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      }\n    });\n  });\n}\n\nexports.bios = bios;\n\nfunction baseboard(callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n\n      let result = {\n        manufacturer: '',\n        model: '',\n        version: '',\n        serial: '-',\n        assetTag: '-',\n        memMax: null,\n        memSlots: null\n      };\n      let cmd = '';\n      if (_linux || _freebsd || _openbsd || _netbsd) {\n        if (process.arch === 'arm') {\n          cmd = 'cat /proc/cpuinfo | grep Serial';\n          // 'BCM2709', 'BCM2835', 'BCM2708' --\x3e\n        } else {\n          cmd = 'export LC_ALL=C; dmidecode -t 2 2>/dev/null; unset LC_ALL';\n        }\n        const workload = [];\n        workload.push(execPromise(cmd));\n        workload.push(execPromise('export LC_ALL=C; dmidecode -t memory 2>/dev/null'));\n        util.promiseAll(\n          workload\n        ).then(data => {\n          let lines = data.results[0] ? data.results[0].toString().split('\\n') : [''];\n          result.manufacturer = util.getValue(lines, 'Manufacturer');\n          result.model = util.getValue(lines, 'Product Name');\n          result.version = util.getValue(lines, 'Version');\n          result.serial = util.getValue(lines, 'Serial Number');\n          result.assetTag = util.getValue(lines, 'Asset Tag');\n          // Non-Root values\n          const cmd = `echo -n \"board_asset_tag: \"; cat /sys/devices/virtual/dmi/id/board_asset_tag 2>/dev/null; echo;\n            echo -n \"board_name: \"; cat /sys/devices/virtual/dmi/id/board_name 2>/dev/null; echo;\n            echo -n \"board_serial: \"; cat /sys/devices/virtual/dmi/id/board_serial 2>/dev/null; echo;\n            echo -n \"board_vendor: \"; cat /sys/devices/virtual/dmi/id/board_vendor 2>/dev/null; echo;\n            echo -n \"board_version: \"; cat /sys/devices/virtual/dmi/id/board_version 2>/dev/null; echo;`;\n          try {\n            lines = execSync(cmd).toString().split('\\n');\n            result.manufacturer = !result.manufacturer ? util.getValue(lines, 'board_vendor') : result.manufacturer;\n            result.model = !result.model ? util.getValue(lines, 'board_name') : result.model;\n            result.version = !result.version ? util.getValue(lines, 'board_version') : result.version;\n            result.serial = !result.serial ? util.getValue(lines, 'board_serial') : result.serial;\n            result.assetTag = !result.assetTag ? util.getValue(lines, 'board_asset_tag') : result.assetTag;\n          } catch (e) {\n            util.noop();\n          }\n          if (result.serial.toLowerCase().indexOf('o.e.m.') !== -1) { result.serial = '-'; }\n          if (result.assetTag.toLowerCase().indexOf('o.e.m.') !== -1) { result.assetTag = '-'; }\n\n          // mem\n          lines = data.results[1] ? data.results[1].toString().split('\\n') : [''];\n          result.memMax = util.toInt(util.getValue(lines, 'Maximum Capacity')) * 1024 * 1024 * 1024 || null;\n          result.memSlots = util.toInt(util.getValue(lines, 'Number Of Devices')) || null;\n\n          // raspberry\n          let linesRpi = '';\n          try {\n            linesRpi = fs.readFileSync('/proc/cpuinfo').toString().split('\\n');\n          } catch (e) {\n            util.noop();\n          }\n          const hardware = util.getValue(linesRpi, 'hardware');\n          if (hardware.startsWith('BCM')) {\n            const rpi = util.decodePiCpuinfo(linesRpi);\n            result.manufacturer = rpi.manufacturer;\n            result.model = 'Raspberry Pi';\n            result.serial = rpi.serial;\n            result.version = rpi.type + ' - ' + rpi.revision;\n            result.memMax = os.totalmem();\n            result.memSlots = 0;\n          }\n\n          if (callback) { callback(result); }\n          resolve(result);\n        });\n      }\n      if (_darwin) {\n        const workload = [];\n        workload.push(execPromise('ioreg -c IOPlatformExpertDevice -d 2'));\n        workload.push(execPromise('system_profiler SPMemoryDataType'));\n        util.promiseAll(\n          workload\n        ).then(data => {\n          let lines = data.results[0] ? data.results[0].toString().replace(/[<>\"]/g, '').split('\\n') : [''];\n          result.manufacturer = util.getValue(lines, 'manufacturer', '=', true);\n          result.model = util.getValue(lines, 'model', '=', true);\n          result.version = util.getValue(lines, 'version', '=', true);\n          result.serial = util.getValue(lines, 'ioplatformserialnumber', '=', true);\n          result.assetTag = util.getValue(lines, 'board-id', '=', true);\n\n          // mem\n          let devices = data.results[1] ? data.results[1].toString().split('        BANK ') : [''];\n          if (devices.length === 1) {\n            devices = data.results[1] ? data.results[1].toString().split('        DIMM') : [''];\n          }\n          devices.shift();\n          result.memSlots = devices.length;\n\n          if (os.arch() === 'arm64') {\n            result.memSlots = 0;\n            result.memMax = os.totalmem();\n          }\n\n          if (callback) { callback(result); }\n          resolve(result);\n        });\n      }\n      if (_sunos) {\n        if (callback) { callback(result); }\n        resolve(result);\n      }\n      if (_windows) {\n        try {\n          const workload = [];\n          workload.push(util.powerShell('Get-WmiObject Win32_baseboard | select Model,Manufacturer,Product,Version,SerialNumber,PartNumber,SKU | fl'));\n          workload.push(util.powerShell('Get-WmiObject Win32_physicalmemoryarray | select MaxCapacity, MemoryDevices | fl'));\n          util.promiseAll(\n            workload\n          ).then(data => {\n            let lines = data.results[0] ? data.results[0].toString().split('\\r\\n') : [''];\n\n            result.manufacturer = util.getValue(lines, 'manufacturer', ':');\n            result.model = util.getValue(lines, 'model', ':');\n            if (!result.model) {\n              result.model = util.getValue(lines, 'product', ':');\n            }\n            result.version = util.getValue(lines, 'version', ':');\n            result.serial = util.getValue(lines, 'serialnumber', ':');\n            result.assetTag = util.getValue(lines, 'partnumber', ':');\n            if (!result.assetTag) {\n              result.assetTag = util.getValue(lines, 'sku', ':');\n            }\n\n            // memphysical\n            lines = data.results[1] ? data.results[1].toString().split('\\r\\n') : [''];\n            result.memMax = util.toInt(util.getValue(lines, 'MaxCapacity', ':')) || null;\n            result.memSlots = util.toInt(util.getValue(lines, 'MemoryDevices', ':')) || null;\n\n            if (callback) { callback(result); }\n            resolve(result);\n          });\n        } catch (e) {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      }\n    });\n  });\n}\n\nexports.baseboard = baseboard;\n\nfunction chassis(callback) {\n  const chassisTypes = ['Other',\n    'Unknown',\n    'Desktop',\n    'Low Profile Desktop',\n    'Pizza Box',\n    'Mini Tower',\n    'Tower',\n    'Portable',\n    'Laptop',\n    'Notebook',\n    'Hand Held',\n    'Docking Station',\n    'All in One',\n    'Sub Notebook',\n    'Space-Saving',\n    'Lunch Box',\n    'Main System Chassis',\n    'Expansion Chassis',\n    'SubChassis',\n    'Bus Expansion Chassis',\n    'Peripheral Chassis',\n    'Storage Chassis',\n    'Rack Mount Chassis',\n    'Sealed-Case PC',\n    'Multi-System Chassis',\n    'Compact PCI',\n    'Advanced TCA',\n    'Blade',\n    'Blade Enclosure',\n    'Tablet',\n    'Convertible',\n    'Detachable',\n    'IoT Gateway ',\n    'Embedded PC',\n    'Mini PC',\n    'Stick PC',\n  ];\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n\n      let result = {\n        manufacturer: '',\n        model: '',\n        type: '',\n        version: '',\n        serial: '-',\n        assetTag: '-',\n        sku: '',\n      };\n      if (_linux || _freebsd || _openbsd || _netbsd) {\n        const cmd = `echo -n \"chassis_asset_tag: \"; cat /sys/devices/virtual/dmi/id/chassis_asset_tag 2>/dev/null; echo;\n            echo -n \"chassis_serial: \"; cat /sys/devices/virtual/dmi/id/chassis_serial 2>/dev/null; echo;\n            echo -n \"chassis_type: \"; cat /sys/devices/virtual/dmi/id/chassis_type 2>/dev/null; echo;\n            echo -n \"chassis_vendor: \"; cat /sys/devices/virtual/dmi/id/chassis_vendor 2>/dev/null; echo;\n            echo -n \"chassis_version: \"; cat /sys/devices/virtual/dmi/id/chassis_version 2>/dev/null; echo;`;\n        exec(cmd, function (error, stdout) {\n          let lines = stdout.toString().split('\\n');\n          result.manufacturer = util.getValue(lines, 'chassis_vendor');\n          const ctype = parseInt(util.getValue(lines, 'chassis_type').replace(/\\D/g, ''));\n          result.type = (ctype && !isNaN(ctype) && ctype < chassisTypes.length) ? chassisTypes[ctype - 1] : '';\n          result.version = util.getValue(lines, 'chassis_version');\n          result.serial = util.getValue(lines, 'chassis_serial');\n          result.assetTag = util.getValue(lines, 'chassis_asset_tag');\n          if (result.manufacturer.toLowerCase().indexOf('o.e.m.') !== -1) { result.manufacturer = '-'; }\n          if (result.version.toLowerCase().indexOf('o.e.m.') !== -1) { result.version = '-'; }\n          if (result.serial.toLowerCase().indexOf('o.e.m.') !== -1) { result.serial = '-'; }\n          if (result.assetTag.toLowerCase().indexOf('o.e.m.') !== -1) { result.assetTag = '-'; }\n\n          if (callback) { callback(result); }\n          resolve(result);\n        });\n      }\n      if (_darwin) {\n        exec('ioreg -c IOPlatformExpertDevice -d 2', function (error, stdout) {\n          if (!error) {\n            let lines = stdout.toString().replace(/[<>\"]/g, '').split('\\n');\n            result.manufacturer = util.getValue(lines, 'manufacturer', '=', true);\n            result.model = util.getValue(lines, 'model', '=', true);\n            result.version = util.getValue(lines, 'version', '=', true);\n            result.serial = util.getValue(lines, 'ioplatformserialnumber', '=', true);\n            result.assetTag = util.getValue(lines, 'board-id', '=', true);\n          }\n\n          if (callback) { callback(result); }\n          resolve(result);\n        });\n      }\n      if (_sunos) {\n        if (callback) { callback(result); }\n        resolve(result);\n      }\n      if (_windows) {\n        try {\n          util.powerShell('Get-WmiObject Win32_SystemEnclosure | select Model,Manufacturer,ChassisTypes,Version,SerialNumber,PartNumber,SKU | fl').then((stdout, error) => {\n            if (!error) {\n              let lines = stdout.toString().split('\\r\\n');\n\n              result.manufacturer = util.getValue(lines, 'manufacturer', ':');\n              result.model = util.getValue(lines, 'model', ':');\n              const ctype = parseInt(util.getValue(lines, 'ChassisTypes', ':').replace(/\\D/g, ''));\n              result.type = (ctype && !isNaN(ctype) && ctype < chassisTypes.length) ? chassisTypes[ctype - 1] : '';\n              result.version = util.getValue(lines, 'version', ':');\n              result.serial = util.getValue(lines, 'serialnumber', ':');\n              result.assetTag = util.getValue(lines, 'partnumber', ':');\n              result.sku = util.getValue(lines, 'sku', ':');\n              if (result.manufacturer.toLowerCase().indexOf('o.e.m.') !== -1) { result.manufacturer = '-'; }\n              if (result.version.toLowerCase().indexOf('o.e.m.') !== -1) { result.version = '-'; }\n              if (result.serial.toLowerCase().indexOf('o.e.m.') !== -1) { result.serial = '-'; }\n              if (result.assetTag.toLowerCase().indexOf('o.e.m.') !== -1) { result.assetTag = '-'; }\n            }\n\n            if (callback) { callback(result); }\n            resolve(result);\n          });\n        } catch (e) {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      }\n    });\n  });\n}\n\nexports.chassis = chassis;\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/systeminformation/lib/system.js?")},"./node_modules/systeminformation/lib/usb.js":
/*!***************************************************!*\
  !*** ./node_modules/systeminformation/lib/usb.js ***!
  \***************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n// @ts-check\n// ==================================================================================\n// usb.js\n// ----------------------------------------------------------------------------------\n// Description:   System Information - library\n//                for Node.js\n// Copyright:     (c) 2014 - 2022\n// Author:        Sebastian Hildebrandt\n// ----------------------------------------------------------------------------------\n// License:       MIT\n// ==================================================================================\n// 16. usb\n// ----------------------------------------------------------------------------------\n\nconst exec = (__webpack_require__(/*! child_process */ \"child_process\").exec);\n// const execSync = require('child_process').execSync;\nconst util = __webpack_require__(/*! ./util */ \"./node_modules/systeminformation/lib/util.js\");\n// const fs = require('fs');\n\nlet _platform = process.platform;\n\nconst _linux = (_platform === 'linux' || _platform === 'android');\nconst _darwin = (_platform === 'darwin');\nconst _windows = (_platform === 'win32');\nconst _freebsd = (_platform === 'freebsd');\nconst _openbsd = (_platform === 'openbsd');\nconst _netbsd = (_platform === 'netbsd');\nconst _sunos = (_platform === 'sunos');\n\nfunction getLinuxUsbType(type, name) {\n  let result = type;\n  const str = (name + ' ' + type).toLowerCase();\n  if (str.indexOf('camera') >= 0) { result = 'Camera'; }\n  else if (str.indexOf('hub') >= 0) { result = 'Hub'; }\n  else if (str.indexOf('keybrd') >= 0) { result = 'Keyboard'; }\n  else if (str.indexOf('keyboard') >= 0) { result = 'Keyboard'; }\n  else if (str.indexOf('mouse') >= 0) { result = 'Mouse'; }\n  else if (str.indexOf('stora') >= 0) { result = 'Storage'; }\n  else if (str.indexOf('mic') >= 0) { result = 'Microphone'; }\n  else if (str.indexOf('headset') >= 0) { result = 'Audio'; }\n  else if (str.indexOf('audio') >= 0) { result = 'Audio'; }\n\n  return result;\n}\n\nfunction parseLinuxUsb(usb) {\n  const result = {};\n  const lines = usb.split('\\n');\n  if (lines && lines.length && lines[0].indexOf('Device') >= 0) {\n    const parts = lines[0].split(' ');\n    result.bus = parseInt(parts[0], 10);\n    if (parts[2]) {\n      result.deviceId = parseInt(parts[2], 10);\n    } else {\n      result.deviceId = null;\n    }\n  } else {\n    result.bus = null;\n    result.deviceId = null;\n  }\n  const idVendor = util.getValue(lines, 'idVendor', ' ', true).trim();\n  let vendorParts = idVendor.split(' ');\n  vendorParts.shift();\n  const vendor = vendorParts.join(' ');\n\n  const idProduct = util.getValue(lines, 'idProduct', ' ', true).trim();\n  let productParts = idProduct.split(' ');\n  productParts.shift();\n  const product = productParts.join(' ');\n\n  const interfaceClass = util.getValue(lines, 'bInterfaceClass', ' ', true).trim();\n  let interfaceClassParts = interfaceClass.split(' ');\n  interfaceClassParts.shift();\n  const usbType = interfaceClassParts.join(' ');\n\n  const iManufacturer = util.getValue(lines, 'iManufacturer', ' ', true).trim();\n  let iManufacturerParts = iManufacturer.split(' ');\n  iManufacturerParts.shift();\n  const manufacturer = iManufacturerParts.join(' ');\n\n  result.id = (idVendor.startsWith('0x') ? idVendor.split(' ')[0].substr(2, 10) : '') + ':' + (idProduct.startsWith('0x') ? idProduct.split(' ')[0].substr(2, 10) : '');\n  result.name = product;\n  result.type = getLinuxUsbType(usbType, product);\n  result.removable = null;\n  result.vendor = vendor;\n  result.manufacturer = manufacturer;\n  result.maxPower = util.getValue(lines, 'MaxPower', ' ', true);\n  result.serialNumber = null;\n\n  return result;\n}\n\n// bus\n// deviceId\n// id\n// name(product)\n// type(bInterfaceClass)\n// removable / hotplug\n// vendor\n// manufacturer\n// maxpower(linux)\n\nfunction getDarwinUsbType(name) {\n  let result = '';\n  if (name.indexOf('camera') >= 0) { result = 'Camera'; }\n  else if (name.indexOf('touch bar') >= 0) { result = 'Touch Bar'; }\n  else if (name.indexOf('controller') >= 0) { result = 'Controller'; }\n  else if (name.indexOf('headset') >= 0) { result = 'Audio'; }\n  else if (name.indexOf('keyboard') >= 0) { result = 'Keyboard'; }\n  else if (name.indexOf('trackpad') >= 0) { result = 'Trackpad'; }\n  else if (name.indexOf('sensor') >= 0) { result = 'Sensor'; }\n  else if (name.indexOf('bthusb') >= 0) { result = 'Bluetooth'; }\n  else if (name.indexOf('bth') >= 0) { result = 'Bluetooth'; }\n  else if (name.indexOf('rfcomm') >= 0) { result = 'Bluetooth'; }\n  else if (name.indexOf('usbhub') >= 0) { result = 'Hub'; }\n  else if (name.indexOf(' hub') >= 0) { result = 'Hub'; }\n  else if (name.indexOf('mouse') >= 0) { result = 'Mouse'; }\n  else if (name.indexOf('mic') >= 0) { result = 'Microphone'; }\n  else if (name.indexOf('removable') >= 0) { result = 'Storage'; }\n  return result;\n}\n\n\nfunction parseDarwinUsb(usb, id) {\n  const result = {};\n  result.id = id;\n\n  usb = usb.replace(/ \\|/g, '');\n  usb = usb.trim();\n  let lines = usb.split('\\n');\n  lines.shift();\n  try {\n    for (let i = 0; i < lines.length; i++) {\n      lines[i] = lines[i].trim();\n      lines[i] = lines[i].replace(/=/g, ':');\n      if (lines[i] !== '{' && lines[i] !== '}' && lines[i + 1] && lines[i + 1].trim() !== '}') {\n        lines[i] = lines[i] + ',';\n      }\n      lines[i] = lines[i].replace(': Yes,', ': \"Yes\",');\n      lines[i] = lines[i].replace(': No,', ': \"No\",');\n    }\n    const usbObj = JSON.parse(lines.join('\\n'));\n    const removableDrive = usbObj['Built-In'].toLowerCase() !== 'yes' && usbObj['non-removable'].toLowerCase() === 'no';\n\n    result.bus = null;\n    result.deviceId = null;\n    result.id = usbObj['USB Address'] || null;\n    result.name = usbObj['kUSBProductString'] || usbObj['USB Product Name'] || null;\n    result.type = getDarwinUsbType((usbObj['kUSBProductString'] || usbObj['USB Product Name'] || '').toLowerCase() + (removableDrive ? ' removable' : ''));\n    result.removable = usbObj['non-removable'].toLowerCase() === 'no';\n    result.vendor = usbObj['kUSBVendorString'] || usbObj['USB Vendor Name'] || null;\n    result.manufacturer = usbObj['kUSBVendorString'] || usbObj['USB Vendor Name'] || null;\n    result.maxPower = null;\n    result.serialNumber = usbObj['kUSBSerialNumberString'] || null;\n\n    if (result.name) {\n      return result;\n    } else {\n      return null;\n    }\n  } catch (e) {\n    return null;\n  }\n}\n\n// function getWindowsUsbType(service) {\n//   let result = ''\n//   if (service.indexOf('usbhub3') >= 0) { result = 'Hub'; }\n//   else if (service.indexOf('usbstor') >= 0) { result = 'Storage'; }\n//   else if (service.indexOf('hidusb') >= 0) { result = 'Input'; }\n//   else if (service.indexOf('usbccgp') >= 0) { result = 'Controller'; }\n//   else if (service.indexOf('usbxhci') >= 0) { result = 'Controller'; }\n//   else if (service.indexOf('usbehci') >= 0) { result = 'Controller'; }\n//   else if (service.indexOf('kbdhid') >= 0) { result = 'Keyboard'; }\n//   else if (service.indexOf('keyboard') >= 0) { result = 'Keyboard'; }\n//   else if (service.indexOf('pointing') >= 0) { result = 'Mouse'; }\n//   else if (service.indexOf('disk') >= 0) { result = 'Storage'; }\n//   else if (service.indexOf('usbhub') >= 0) { result = 'Hub'; }\n//   else if (service.indexOf('bthusb') >= 0) { result = ''; }\n//   else if (service.indexOf('bth') >= 0) { result = ''; }\n//   else if (service.indexOf('rfcomm') >= 0) { result = ''; }\n//   return result;\n// }\n\nfunction getWindowsUsbTypeCreation(creationclass, name) {\n  let result = '';\n  if (name.indexOf('storage') >= 0) { result = 'Storage'; }\n  else if (name.indexOf('speicher') >= 0) { result = 'Storage'; }\n  else if (creationclass.indexOf('usbhub') >= 0) { result = 'Hub'; }\n  else if (creationclass.indexOf('storage') >= 0) { result = 'Storage'; }\n  else if (creationclass.indexOf('usbcontroller') >= 0) { result = 'Controller'; }\n  else if (creationclass.indexOf('keyboard') >= 0) { result = 'Keyboard'; }\n  else if (creationclass.indexOf('pointing') >= 0) { result = 'Mouse'; }\n  else if (creationclass.indexOf('disk') >= 0) { result = 'Storage'; }\n  return result;\n}\n\nfunction parseWindowsUsb(lines, id) {\n  const usbType = getWindowsUsbTypeCreation(util.getValue(lines, 'CreationClassName', ':').toLowerCase(), util.getValue(lines, 'name', ':').toLowerCase());\n\n  if (usbType) {\n    const result = {};\n    result.bus = null;\n    result.deviceId = util.getValue(lines, 'deviceid', ':');\n    result.id = id;\n    result.name = util.getValue(lines, 'name', ':');\n    result.type = usbType;\n    result.removable = null;\n    result.vendor = null;\n    result.manufacturer = util.getValue(lines, 'Manufacturer', ':');\n    result.maxPower = null;\n    result.serialNumber = null;\n\n    return result;\n  } else {\n    return null;\n  }\n\n}\n\nfunction usb(callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      let result = [];\n      if (_linux) {\n        const cmd = 'export LC_ALL=C; lsusb -v 2>/dev/null; unset LC_ALL';\n        exec(cmd, { maxBuffer: 1024 * 1024 * 128 }, function (error, stdout) {\n          if (!error) {\n            const parts = ('\\n\\n' + stdout.toString()).split('\\n\\nBus ');\n            for (let i = 1; i < parts.length; i++) {\n              const usb = parseLinuxUsb(parts[i]);\n              result.push(usb);\n            }\n          }\n          if (callback) {\n            callback(result);\n          }\n          resolve(result);\n        });\n      }\n      if (_darwin) {\n        let cmd = 'ioreg -p IOUSB -c AppleUSBRootHubDevice -w0 -l';\n        exec(cmd, { maxBuffer: 1024 * 1024 * 128 }, function (error, stdout) {\n          if (!error) {\n            const parts = (stdout.toString()).split(' +-o ');\n            for (let i = 1; i < parts.length; i++) {\n              const usb = parseDarwinUsb(parts[i]);\n              if (usb) {\n                result.push(usb);\n              }\n            }\n            if (callback) {\n              callback(result);\n            }\n            resolve(result);\n          }\n          if (callback) {\n            callback(result);\n          }\n          resolve(result);\n        });\n      }\n      if (_windows) {\n        util.powerShell('Get-WmiObject CIM_LogicalDevice | where { $_.Description -match \"USB\"} | select Name,CreationClassName,DeviceId,Manufacturer | fl').then((stdout, error) => {\n          if (!error) {\n            const parts = stdout.toString().split(/\\n\\s*\\n/);\n            for (let i = 0; i < parts.length; i++) {\n              const usb = parseWindowsUsb(parts[i].split('\\n'), i);\n              if (usb) {\n                result.push(usb);\n              }\n            }\n          }\n          if (callback) {\n            callback(result);\n          }\n          resolve(result);\n        });\n\n        // util.powerShell(\"gwmi Win32_USBControllerDevice |\\%{[wmi]($_.Dependent)}\").then(data => {\n\n        //   const parts = data.toString().split(/\\n\\s*\\n/);\n        //   for (let i = 0; i < parts.length; i++) {\n        //     const usb = parseWindowsUsb(parts[i].split('\\n'), i)\n        //     if (usb) {\n        //       result.push(usb)\n        //     }\n        //   }\n        //   if (callback) {\n        //     callback(result);\n        //   }\n        //   resolve(result);\n        // });\n      }\n      if (_sunos || _freebsd || _openbsd || _netbsd) {\n        resolve(null);\n      }\n    });\n  });\n}\n\nexports.usb = usb;\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/systeminformation/lib/usb.js?")},"./node_modules/systeminformation/lib/users.js":
/*!*****************************************************!*\
  !*** ./node_modules/systeminformation/lib/users.js ***!
  \*****************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n// @ts-check\n// ==================================================================================\n// users.js\n// ----------------------------------------------------------------------------------\n// Description:   System Information - library\n//                for Node.js\n// Copyright:     (c) 2014 - 2022\n// Author:        Sebastian Hildebrandt\n// ----------------------------------------------------------------------------------\n// License:       MIT\n// ==================================================================================\n// 11. Users/Sessions\n// ----------------------------------------------------------------------------------\n\nconst exec = (__webpack_require__(/*! child_process */ \"child_process\").exec);\nconst util = __webpack_require__(/*! ./util */ \"./node_modules/systeminformation/lib/util.js\");\n\nlet _platform = process.platform;\n\nconst _linux = (_platform === 'linux' || _platform === 'android');\nconst _darwin = (_platform === 'darwin');\nconst _windows = (_platform === 'win32');\nconst _freebsd = (_platform === 'freebsd');\nconst _openbsd = (_platform === 'openbsd');\nconst _netbsd = (_platform === 'netbsd');\nconst _sunos = (_platform === 'sunos');\n\n// let _winDateFormat = {\n//   dateFormat: '',\n//   dateSeperator: '',\n//   timeFormat: '',\n//   timeSeperator: '',\n//   amDesignator: '',\n//   pmDesignator: ''\n// };\n\n// --------------------------\n// array of users online = sessions\n\n// function getWinCulture() {\n//   return new Promise((resolve) => {\n//     process.nextTick(() => {\n//       if (!_winDateFormat.dateFormat) {\n//         util.powerShell('(get-culture).DateTimeFormat')\n//           .then(data => {\n//             let lines = data.toString().split('\\r\\n');\n//             _winDateFormat.dateFormat = util.getValue(lines, 'ShortDatePattern', ':');\n//             _winDateFormat.dateSeperator = util.getValue(lines, 'DateSeparator', ':');\n//             _winDateFormat.timeFormat = util.getValue(lines, 'ShortTimePattern', ':');\n//             _winDateFormat.timeSeperator = util.getValue(lines, 'TimeSeparator', ':');\n//             _winDateFormat.amDesignator = util.getValue(lines, 'AMDesignator', ':');\n//             _winDateFormat.pmDesignator = util.getValue(lines, 'PMDesignator', ':');\n\n//             resolve(_winDateFormat);\n//           })\n//           .catch(() => {\n//             resolve(_winDateFormat);\n//           });\n//       } else {\n//         resolve(_winDateFormat);\n//       }\n//     });\n//   });\n// }\n\nfunction parseUsersLinux(lines, phase) {\n  let result = [];\n  let result_who = [];\n  let result_w = {};\n  let w_first = true;\n  let w_header = [];\n  let w_pos = [];\n  let who_line = {};\n\n  let is_whopart = true;\n  lines.forEach(function (line) {\n    if (line === '---') {\n      is_whopart = false;\n    } else {\n      let l = line.replace(/ +/g, ' ').split(' ');\n\n      // who part\n      if (is_whopart) {\n        result_who.push({\n          user: l[0],\n          tty: l[1],\n          date: l[2],\n          time: l[3],\n          ip: (l && l.length > 4) ? l[4].replace(/\\(/g, '').replace(/\\)/g, '') : ''\n        });\n      } else {\n        // w part\n        if (w_first) {    // header\n          w_header = l;\n          w_header.forEach(function (item) {\n            w_pos.push(line.indexOf(item));\n          });\n          w_first = false;\n        } else {\n          // split by w_pos\n          result_w.user = line.substring(w_pos[0], w_pos[1] - 1).trim();\n          result_w.tty = line.substring(w_pos[1], w_pos[2] - 1).trim();\n          result_w.ip = line.substring(w_pos[2], w_pos[3] - 1).replace(/\\(/g, '').replace(/\\)/g, '').trim();\n          result_w.command = line.substring(w_pos[7], 1000).trim();\n          // find corresponding 'who' line\n          who_line = result_who.filter(function (obj) {\n            return (obj.user.substring(0, 8).trim() === result_w.user && obj.tty === result_w.tty);\n          });\n          if (who_line.length === 1) {\n            result.push({\n              user: who_line[0].user,\n              tty: who_line[0].tty,\n              date: who_line[0].date,\n              time: who_line[0].time,\n              ip: who_line[0].ip,\n              command: result_w.command\n            });\n          }\n        }\n      }\n    }\n  });\n  if (result.length === 0 && phase === 2) {\n    return result_who;\n  } else {\n    return result;\n  }\n}\n\nfunction parseUsersDarwin(lines) {\n  let result = [];\n  let result_who = [];\n  let result_w = {};\n  let who_line = {};\n\n  let is_whopart = true;\n  lines.forEach(function (line) {\n    if (line === '---') {\n      is_whopart = false;\n    } else {\n      let l = line.replace(/ +/g, ' ').split(' ');\n\n      // who part\n      if (is_whopart) {\n        result_who.push({\n          user: l[0],\n          tty: l[1],\n          date: ('' + new Date().getFullYear()) + '-' + ('0' + ('JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC'.indexOf(l[2].toUpperCase()) / 3 + 1)).slice(-2) + '-' + ('0' + l[3]).slice(-2),\n          time: l[4],\n        });\n      } else {\n        // w part\n        // split by w_pos\n        result_w.user = l[0];\n        result_w.tty = l[1];\n        result_w.ip = (l[2] !== '-') ? l[2] : '';\n        result_w.command = l.slice(5, 1000).join(' ');\n        // find corresponding 'who' line\n        who_line = result_who.filter(function (obj) {\n          return (obj.user === result_w.user && (obj.tty.substring(3, 1000) === result_w.tty || obj.tty === result_w.tty));\n        });\n        if (who_line.length === 1) {\n          result.push({\n            user: who_line[0].user,\n            tty: who_line[0].tty,\n            date: who_line[0].date,\n            time: who_line[0].time,\n            ip: result_w.ip,\n            command: result_w.command\n          });\n        }\n      }\n    }\n  });\n  return result;\n}\n\nfunction users(callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      let result = [];\n\n      // linux\n      if (_linux) {\n        exec('who --ips; echo \"---\"; w | tail -n +2', function (error, stdout) {\n          if (!error) {\n            // lines / split\n            let lines = stdout.toString().split('\\n');\n            result = parseUsersLinux(lines, 1);\n            if (result.length === 0) {\n              exec('who; echo \"---\"; w | tail -n +2', function (error, stdout) {\n                if (!error) {\n                  // lines / split\n                  lines = stdout.toString().split('\\n');\n                  result = parseUsersLinux(lines, 2);\n                }\n                if (callback) { callback(result); }\n                resolve(result);\n              });\n            } else {\n              if (callback) { callback(result); }\n              resolve(result);\n            }\n          } else {\n            if (callback) { callback(result); }\n            resolve(result);\n          }\n        });\n      }\n      if (_freebsd || _openbsd || _netbsd) {\n        exec('who; echo \"---\"; w -ih', function (error, stdout) {\n          if (!error) {\n            // lines / split\n            let lines = stdout.toString().split('\\n');\n            result = parseUsersDarwin(lines);\n          }\n          if (callback) { callback(result); }\n          resolve(result);\n        });\n      }\n      if (_sunos) {\n        exec('who; echo \"---\"; w -h', function (error, stdout) {\n          if (!error) {\n            // lines / split\n            let lines = stdout.toString().split('\\n');\n            result = parseUsersDarwin(lines);\n          }\n          if (callback) { callback(result); }\n          resolve(result);\n        });\n      }\n\n      if (_darwin) {\n        exec('who; echo \"---\"; w -ih', function (error, stdout) {\n          if (!error) {\n            // lines / split\n            let lines = stdout.toString().split('\\n');\n            result = parseUsersDarwin(lines);\n          }\n          if (callback) { callback(result); }\n          resolve(result);\n        });\n      }\n      if (_windows) {\n        try {\n          // const workload = [];\n          // // workload.push(util.powerShell('Get-CimInstance -ClassName Win32_Account | fl *'));\n          // workload.push(util.powerShell('Get-WmiObject Win32_LogonSession | fl *'));\n          // workload.push(util.powerShell('Get-WmiObject Win32_LoggedOnUser | fl *'));\n          // workload.push(util.powerShell('Get-WmiObject Win32_Process -Filter \"name=\\'explorer.exe\\'\" | Select @{Name=\"domain\";Expression={$_.GetOwner().Domain}}, @{Name=\"username\";Expression={$_.GetOwner().User}} | fl'));\n          // Promise.all(\n          //   workload\n          // ).then(data => {\n          let cmd = 'Get-WmiObject Win32_LogonSession | select LogonId,StartTime | fl' + '; echo \\'#-#-#-#\\';';\n          cmd += 'Get-WmiObject Win32_LoggedOnUser | select antecedent,dependent | fl ' + '; echo \\'#-#-#-#\\';';\n          cmd += 'Get-WmiObject Win32_Process -Filter \"name=\\'explorer.exe\\'\" | Select @{Name=\"sessionid\";Expression={$_.SessionId}}, @{Name=\"domain\";Expression={$_.GetOwner().Domain}}, @{Name=\"username\";Expression={$_.GetOwner().User}} | fl' + '; echo \\'#-#-#-#\\';';\n          cmd += 'query user';\n          util.powerShell(cmd).then(data => {\n            // controller + vram\n            // let accounts = parseWinAccounts(data[0].split(/\\n\\s*\\n/));\n            if (data) {\n              data = data.split('#-#-#-#');\n              let sessions = parseWinSessions((data[0] || '').split(/\\n\\s*\\n/));\n              let loggedons = parseWinLoggedOn((data[1] || '').split(/\\n\\s*\\n/));\n              let queryUser = parseWinUsersQuery((data[3] || '').split('\\r\\n'));\n              let users = parseWinUsers((data[2] || '').split(/\\n\\s*\\n/), queryUser);\n              for (let id in loggedons) {\n                if ({}.hasOwnProperty.call(loggedons, id)) {\n                  loggedons[id].dateTime = {}.hasOwnProperty.call(sessions, id) ? sessions[id] : '';\n                }\n              }\n              users.forEach(user => {\n                let dateTime = '';\n                for (let id in loggedons) {\n                  if ({}.hasOwnProperty.call(loggedons, id)) {\n                    if (loggedons[id].user === user.user && (!dateTime || dateTime < loggedons[id].dateTime)) {\n                      dateTime = loggedons[id].dateTime;\n                    }\n                  }\n                }\n\n                result.push({\n                  user: user.user,\n                  tty: user.tty,\n                  date: `${dateTime.substr(0, 4)}-${dateTime.substr(4, 2)}-${dateTime.substr(6, 2)}`,\n                  time: `${dateTime.substr(8, 2)}:${dateTime.substr(10, 2)}`,\n                  ip: '',\n                  command: ''\n                });\n              });\n            }\n            if (callback) { callback(result); }\n            resolve(result);\n\n          });\n          // util.powerShell('query user').then(stdout => {\n          //   if (stdout) {\n          //     // lines / split\n          //     let lines = stdout.toString().split('\\r\\n');\n          //     getWinCulture()\n          //       .then(culture => {\n          //         result = parseUsersWin(lines, culture);\n          //         if (callback) { callback(result); }\n          //         resolve(result);\n          //       });\n          //   } else {\n          //     if (callback) { callback(result); }\n          //     resolve(result);\n          //   }\n          // });\n        } catch (e) {\n          if (callback) { callback(result); }\n          resolve(result);\n        }\n      }\n\n    });\n  });\n}\n\n// function parseWinAccounts(accountParts) {\n//   const accounts = [];\n//   accountParts.forEach(account => {\n//     const lines = account.split('\\r\\n');\n//     const name = util.getValue(lines, 'name', ':', true);\n//     const domain = util.getValue(lines, 'domain', ':', true);\n//     accounts.push(`${domain}\\${name}`);\n//   });\n//   return accounts;\n// }\n\nfunction parseWinSessions(sessionParts) {\n  const sessions = {};\n  sessionParts.forEach(session => {\n    const lines = session.split('\\r\\n');\n    const id = util.getValue(lines, 'LogonId');\n    const starttime = util.getValue(lines, 'starttime');\n    if (id) {\n      sessions[id] = starttime;\n    }\n  });\n  return sessions;\n}\n\nfunction fuzzyMatch(name1, name2) {\n  name1 = name1.toLowerCase();\n  name2 = name2.toLowerCase();\n  let eq = 0;\n  let len = name1.length;\n  if (name2.length > len) { len = name2.length; }\n\n  for (let i = 0; i < len; i++) {\n    const c1 = name1[i] || '';\n    const c2 = name2[i] || '';\n    if (c1 === c2) { eq++; }\n  }\n  return (len > 10 ? eq / len > 0.9 : (len > 0 ? eq / len > 0.8 : false));\n}\n\nfunction parseWinUsers(userParts, userQuery) {\n  const users = [];\n  userParts.forEach(user => {\n    const lines = user.split('\\r\\n');\n\n    const domain = util.getValue(lines, 'domain', ':', true);\n    const username = util.getValue(lines, 'username', ':', true);\n    const sessionid = util.getValue(lines, 'sessionid', ':', true);\n\n    if (username) {\n      const quser = userQuery.filter(item => fuzzyMatch(item.user, username));\n      users.push({\n        domain,\n        user: username,\n        tty: quser && quser[0] && quser[0].tty ? quser[0].tty : sessionid\n      });\n    }\n  });\n  return users;\n}\n\nfunction parseWinLoggedOn(loggedonParts) {\n  const loggedons = {};\n  loggedonParts.forEach(loggedon => {\n    const lines = loggedon.split('\\r\\n');\n\n    const antecendent = util.getValue(lines, 'antecedent', ':', true);\n    let parts = antecendent.split(',');\n    const domainParts = parts.length > 1 ? parts[0].split('=') : [];\n    const nameParts = parts.length > 1 ? parts[1].split('=') : [];\n    const domain = domainParts.length > 1 ? domainParts[1].replace(/\"/g, '') : '';\n    const name = nameParts.length > 1 ? nameParts[1].replace(/\"/g, '') : '';\n    const dependent = util.getValue(lines, 'dependent', ':', true);\n    parts = dependent.split('=');\n    const id = parts.length > 1 ? parts[1].replace(/\"/g, '') : '';\n    if (id) {\n      loggedons[id] = {\n        domain,\n        user: name\n      };\n    }\n  });\n  return loggedons;\n}\n\nfunction parseWinUsersQuery(lines) {\n  lines = lines.filter(item => item);\n  let result = [];\n  const header = lines[0];\n  const headerDelimiter = [];\n  if (header) {\n    const start = (header[0] === ' ') ? 1 : 0;\n    headerDelimiter.push(start - 1);\n    let nextSpace = 0;\n    for (let i = start + 1; i < header.length; i++) {\n      if (header[i] === ' ' && ((header[i - 1] === ' ') || (header[i - 1] === '.'))) {\n        nextSpace = i;\n      } else {\n        if (nextSpace) {\n          headerDelimiter.push(nextSpace);\n          nextSpace = 0;\n        }\n      }\n    }\n    for (let i = 1; i < lines.length; i++) {\n      if (lines[i].trim()) {\n        const user = lines[i].substring(headerDelimiter[0] + 1, headerDelimiter[1]).trim() || '';\n        const tty = lines[i].substring(headerDelimiter[1] + 1, headerDelimiter[2] - 2).trim() || '';\n        // const dateTime = util.parseDateTime(lines[i].substring(headerDelimiter[5] + 1, 2000).trim(), culture) || '';\n        result.push({\n          user: user,\n          tty: tty,\n        });\n      }\n    }\n  }\n  return result;\n}\n\nexports.users = users;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/systeminformation/lib/users.js?")},"./node_modules/systeminformation/lib/util.js":
/*!****************************************************!*\
  !*** ./node_modules/systeminformation/lib/util.js ***!
  \****************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n// @ts-check\n// ==================================================================================\n// utils.js\n// ----------------------------------------------------------------------------------\n// Description:   System Information - library\n//                for Node.js\n// Copyright:     (c) 2014 - 2022\n// Author:        Sebastian Hildebrandt\n// ----------------------------------------------------------------------------------\n// License:       MIT\n// ==================================================================================\n// 0. helper functions\n// ----------------------------------------------------------------------------------\n\nconst os = __webpack_require__(/*! os */ \"os\");\nconst fs = __webpack_require__(/*! fs */ \"fs\");\nconst path = __webpack_require__(/*! path */ \"path\");\nconst spawn = (__webpack_require__(/*! child_process */ \"child_process\").spawn);\nconst exec = (__webpack_require__(/*! child_process */ \"child_process\").exec);\nconst execSync = (__webpack_require__(/*! child_process */ \"child_process\").execSync);\nconst util = __webpack_require__(/*! util */ \"util\");\n\nlet _platform = process.platform;\nconst _linux = (_platform === 'linux' || _platform === 'android');\nconst _darwin = (_platform === 'darwin');\nconst _windows = (_platform === 'win32');\nconst _freebsd = (_platform === 'freebsd');\nconst _openbsd = (_platform === 'openbsd');\nconst _netbsd = (_platform === 'netbsd');\n// const _sunos = (_platform === 'sunos');\n\nlet _cores = 0;\nlet wmicPath = '';\nlet codepage = '';\nlet _smartMonToolsInstalled = null;\n\nconst WINDIR = ({\"APP_ENV\":\"webpack\"}).WINDIR || 'C:\\\\Windows';\n\n// powerShell\nlet _psChild;\nlet _psResult = '';\nlet _psCmds = [];\nlet _psPersistent = false;\nconst _psToUTF8 = '$OutputEncoding = [System.Console]::OutputEncoding = [System.Console]::InputEncoding = [System.Text.Encoding]::UTF8 ; ';\nconst _psCmdStart = '--###START###--';\nconst _psError = '--ERROR--';\nconst _psCmdSeperator = '--###ENDCMD###--';\nconst _psIdSeperator = '--##ID##--';\n\nconst execOptsWin = {\n  windowsHide: true,\n  maxBuffer: 1024 * 20000,\n  encoding: 'UTF-8',\n  env: util._extend({}, ({\"APP_ENV\":\"webpack\"}), { LANG: 'en_US.UTF-8' })\n};\n\nfunction toInt(value) {\n  let result = parseInt(value, 10);\n  if (isNaN(result)) {\n    result = 0;\n  }\n  return result;\n}\n\n\nconst stringReplace = new String().replace;\nconst stringToLower = new String().toLowerCase;\nconst stringToString = new String().toString;\nconst stringSubstr = new String().substr;\nconst stringTrim = new String().trim;\nconst stringStartWith = new String().startsWith;\nconst mathMin = Math.min;\n\nfunction isFunction(functionToCheck) {\n  let getType = {};\n  return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\nfunction unique(obj) {\n  let uniques = [];\n  let stringify = {};\n  for (let i = 0; i < obj.length; i++) {\n    let keys = Object.keys(obj[i]);\n    keys.sort(function (a, b) { return a - b; });\n    let str = '';\n    for (let j = 0; j < keys.length; j++) {\n      str += JSON.stringify(keys[j]);\n      str += JSON.stringify(obj[i][keys[j]]);\n    }\n    if (!{}.hasOwnProperty.call(stringify, str)) {\n      uniques.push(obj[i]);\n      stringify[str] = true;\n    }\n  }\n  return uniques;\n}\n\nfunction sortByKey(array, keys) {\n  return array.sort(function (a, b) {\n    let x = '';\n    let y = '';\n    keys.forEach(function (key) {\n      x = x + a[key]; y = y + b[key];\n    });\n    return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n  });\n}\n\nfunction cores() {\n  if (_cores === 0) {\n    _cores = os.cpus().length;\n  }\n  return _cores;\n}\n\nfunction getValue(lines, property, separator, trimmed, lineMatch) {\n  separator = separator || ':';\n  property = property.toLowerCase();\n  trimmed = trimmed || false;\n  lineMatch = lineMatch || false;\n  for (let i = 0; i < lines.length; i++) {\n    let line = lines[i].toLowerCase().replace(/\\t/g, '');\n    if (trimmed) {\n      line = line.trim();\n    }\n    if (line.startsWith(property) && (lineMatch ? (line.match(property + separator)) : true)) {\n      const parts = trimmed ? lines[i].trim().split(separator) : lines[i].split(separator);\n      if (parts.length >= 2) {\n        parts.shift();\n        return parts.join(separator).trim();\n      } else {\n        return '';\n      }\n    }\n  }\n  return '';\n}\n\nfunction decodeEscapeSequence(str, base) {\n  base = base || 16;\n  return str.replace(/\\\\x([0-9A-Fa-f]{2})/g, function () {\n    return String.fromCharCode(parseInt(arguments[1], base));\n  });\n}\n\nfunction detectSplit(str) {\n  let seperator = '';\n  let part = 0;\n  str.split('').forEach(element => {\n    if (element >= '0' && element <= '9') {\n      if (part === 1) { part++; }\n    } else {\n      if (part === 0) { part++; }\n      if (part === 1) {\n        seperator += element;\n      }\n    }\n  });\n  return seperator;\n}\n\nfunction parseTime(t, pmDesignator) {\n  pmDesignator = pmDesignator || '';\n  t = t.toUpperCase();\n  let hour = 0;\n  let min = 0;\n  let splitter = detectSplit(t);\n  let parts = t.split(splitter);\n  if (parts.length >= 2) {\n    if (parts[2]) {\n      parts[1] += parts[2];\n    }\n    let isPM = (parts[1] && (parts[1].toLowerCase().indexOf('pm') > -1) || (parts[1].toLowerCase().indexOf('p.m.') > -1) || (parts[1].toLowerCase().indexOf('p. m.') > -1) || (parts[1].toLowerCase().indexOf('n') > -1) || (parts[1].toLowerCase().indexOf('ch') > -1) || (parts[1].toLowerCase().indexOf('ös') > -1) || (pmDesignator && parts[1].toLowerCase().indexOf(pmDesignator) > -1));\n    hour = parseInt(parts[0], 10);\n    min = parseInt(parts[1], 10);\n    hour = isPM && hour < 12 ? hour + 12 : hour;\n    return ('0' + hour).substr(-2) + ':' + ('0' + min).substr(-2);\n  }\n}\n\nfunction parseDateTime(dt, culture) {\n  const result = {\n    date: '',\n    time: ''\n  };\n  culture = culture || {};\n  let dateFormat = (culture.dateFormat || '').toLowerCase();\n  let pmDesignator = (culture.pmDesignator || '');\n\n  const parts = dt.split(' ');\n  if (parts[0]) {\n    if (parts[0].indexOf('/') >= 0) {\n      // Dateformat: mm/dd/yyyy or dd/mm/yyyy or dd/mm/yy or yyyy/mm/dd\n      const dtparts = parts[0].split('/');\n      if (dtparts.length === 3) {\n        if (dtparts[0].length === 4) {\n          // Dateformat: yyyy/mm/dd\n          result.date = dtparts[0] + '-' + ('0' + dtparts[1]).substr(-2) + '-' + ('0' + dtparts[2]).substr(-2);\n        } else if (dtparts[2].length === 2) {\n          if ((dateFormat.indexOf('/d/') > -1 || dateFormat.indexOf('/dd/') > -1)) {\n            // Dateformat: mm/dd/yy\n            result.date = '20' + dtparts[2] + '-' + ('0' + dtparts[1]).substr(-2) + '-' + ('0' + dtparts[0]).substr(-2);\n          } else {\n            // Dateformat: dd/mm/yy\n            result.date = '20' + dtparts[2] + '-' + ('0' + dtparts[1]).substr(-2) + '-' + ('0' + dtparts[0]).substr(-2);\n          }\n        } else {\n          // Dateformat: mm/dd/yyyy or dd/mm/yyyy\n          const isEN = ((dt.toLowerCase().indexOf('pm') > -1) || (dt.toLowerCase().indexOf('p.m.') > -1) || (dt.toLowerCase().indexOf('p. m.') > -1) || (dt.toLowerCase().indexOf('am') > -1) || (dt.toLowerCase().indexOf('a.m.') > -1) || (dt.toLowerCase().indexOf('a. m.') > -1));\n          if ((isEN || dateFormat.indexOf('/d/') > -1 || dateFormat.indexOf('/dd/') > -1) && dateFormat.indexOf('dd/') !== 0) {\n            // Dateformat: mm/dd/yyyy\n            result.date = dtparts[2] + '-' + ('0' + dtparts[0]).substr(-2) + '-' + ('0' + dtparts[1]).substr(-2);\n          } else {\n            // Dateformat: dd/mm/yyyy\n            result.date = dtparts[2] + '-' + ('0' + dtparts[1]).substr(-2) + '-' + ('0' + dtparts[0]).substr(-2);\n          }\n        }\n      }\n    }\n    if (parts[0].indexOf('.') >= 0) {\n      const dtparts = parts[0].split('.');\n      if (dtparts.length === 3) {\n        if (dateFormat.indexOf('.d.') > -1 || dateFormat.indexOf('.dd.') > -1) {\n          // Dateformat: mm.dd.yyyy\n          result.date = dtparts[2] + '-' + ('0' + dtparts[0]).substr(-2) + '-' + ('0' + dtparts[1]).substr(-2);\n        } else {\n          // Dateformat: dd.mm.yyyy\n          result.date = dtparts[2] + '-' + ('0' + dtparts[1]).substr(-2) + '-' + ('0' + dtparts[0]).substr(-2);\n        }\n      }\n    }\n    if (parts[0].indexOf('-') >= 0) {\n      // Dateformat: yyyy-mm-dd\n      const dtparts = parts[0].split('-');\n      if (dtparts.length === 3) {\n        result.date = dtparts[0] + '-' + ('0' + dtparts[1]).substr(-2) + '-' + ('0' + dtparts[2]).substr(-2);\n      }\n    }\n  }\n  if (parts[1]) {\n    parts.shift();\n    let time = parts.join(' ');\n    result.time = parseTime(time, pmDesignator);\n  }\n  return result;\n}\n\nfunction parseHead(head, rights) {\n  let space = (rights > 0);\n  let count = 1;\n  let from = 0;\n  let to = 0;\n  let result = [];\n  for (let i = 0; i < head.length; i++) {\n    if (count <= rights) {\n      // if (head[i] === ' ' && !space) {\n      if (/\\s/.test(head[i]) && !space) {\n        to = i - 1;\n        result.push({\n          from: from,\n          to: to + 1,\n          cap: head.substring(from, to + 1)\n        });\n        from = to + 2;\n        count++;\n      }\n      space = head[i] === ' ';\n    } else {\n      if (!/\\s/.test(head[i]) && space) {\n        to = i - 1;\n        if (from < to) {\n          result.push({\n            from: from,\n            to: to,\n            cap: head.substring(from, to)\n          });\n        }\n        from = to + 1;\n        count++;\n      }\n      space = head[i] === ' ';\n    }\n  }\n  to = 1000;\n  result.push({\n    from: from,\n    to: to,\n    cap: head.substring(from, to)\n  });\n  let len = result.length;\n  for (var i = 0; i < len; i++) {\n    if (result[i].cap.replace(/\\s/g, '').length === 0) {\n      if (i + 1 < len) {\n        result[i].to = result[i + 1].to;\n        result[i].cap = result[i].cap + result[i + 1].cap;\n        result.splice(i + 1, 1);\n        len = len - 1;\n      }\n    }\n  }\n  return result;\n}\n\nfunction findObjectByKey(array, key, value) {\n  for (let i = 0; i < array.length; i++) {\n    if (array[i][key] === value) {\n      return i;\n    }\n  }\n  return -1;\n}\n\nfunction getWmic() {\n  if (os.type() === 'Windows_NT' && !wmicPath) {\n    wmicPath = WINDIR + '\\\\system32\\\\wbem\\\\wmic.exe';\n    if (!fs.existsSync(wmicPath)) {\n      try {\n        const wmicPathArray = execSync('WHERE WMIC', execOptsWin).toString().split('\\r\\n');\n        if (wmicPathArray && wmicPathArray.length) {\n          wmicPath = wmicPathArray[0];\n        } else {\n          wmicPath = 'wmic';\n        }\n      } catch (e) {\n        wmicPath = 'wmic';\n      }\n    }\n  }\n  return wmicPath;\n}\n\nfunction wmic(command) {\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      try {\n        powerShell(getWmic() + ' ' + command).then(stdout => {\n          resolve(stdout, '');\n        });\n      } catch (e) {\n        resolve('', e);\n      }\n    });\n  });\n}\n\n// function wmic(command, options) {\n//   options = options || execOptsWin;\n//   return new Promise((resolve) => {\n//     process.nextTick(() => {\n//       try {\n//         exec(WINDIR + '\\\\system32\\\\chcp.com 65001 | ' + getWmic() + ' ' + command, options, function (error, stdout) {\n//           resolve(stdout, error);\n//         }).stdin.end();\n//       } catch (e) {\n//         resolve('', e);\n//       }\n//     });\n//   });\n// }\n\nfunction getVboxmanage() {\n  return _windows ? `\"${({\"APP_ENV\":\"webpack\"}).VBOX_INSTALL_PATH || ({\"APP_ENV\":\"webpack\"}).VBOX_MSI_INSTALL_PATH}\\\\VBoxManage.exe\"` : 'vboxmanage';\n}\n\nfunction powerShellProceedResults(data) {\n  let id = '';\n  let parts;\n  let res = '';\n  // startID\n  if (data.indexOf(_psCmdStart) >= 0) {\n    parts = data.split(_psCmdStart);\n    const parts2 = parts[1].split(_psIdSeperator);\n    id = parts2[0];\n    if (parts2.length > 1) {\n      data = parts2.slice(1).join(_psIdSeperator);\n    }\n  }\n  // result;\n  if (data.indexOf(_psCmdSeperator) >= 0) {\n    parts = data.split(_psCmdSeperator);\n    res = parts[0];\n  }\n  let remove = -1;\n  for (let i = 0; i < _psCmds.length; i++) {\n    if (_psCmds[i].id === id) {\n      remove = i;\n      // console.log(`----- TIME  : ${(new Date() - _psCmds[i].start) * 0.001} s`);\n\n      _psCmds[i].callback(res);\n    }\n  }\n  if (remove >= 0) {\n    _psCmds.splice(remove, 1);\n  }\n}\n\nfunction powerShellStart() {\n  _psChild = spawn('powershell.exe', ['-NoLogo', '-InputFormat', 'Text', '-NoExit', '-Command', '-'], {\n    stdio: 'pipe',\n    windowsHide: true,\n    maxBuffer: 1024 * 20000,\n    encoding: 'UTF-8',\n    env: util._extend({}, ({\"APP_ENV\":\"webpack\"}), { LANG: 'en_US.UTF-8' })\n  });\n  if (_psChild && _psChild.pid) {\n    _psPersistent = true;\n    _psChild.stdout.on('data', function (data) {\n      _psResult = _psResult + data.toString('utf8');\n      if (data.indexOf(_psCmdSeperator) >= 0) {\n        powerShellProceedResults(_psResult);\n        _psResult = '';\n      }\n    });\n    _psChild.stderr.on('data', function () {\n      powerShellProceedResults(_psResult + _psError);\n    });\n    _psChild.on('error', function () {\n      powerShellProceedResults(_psResult + _psError);\n    });\n    _psChild.on('close', function () {\n      _psChild.kill();\n    });\n  }\n}\n\nfunction powerShellRelease() {\n  try {\n    _psChild.stdin.write('exit' + os.EOL);\n    _psChild.stdin.end();\n    _psPersistent = false;\n  } catch (e) {\n    _psChild.kill();\n  }\n}\n\nfunction powerShell(cmd) {\n\n  if (_psPersistent) {\n    const id = Math.random().toString(36).substr(2, 10);\n    return new Promise((resolve) => {\n      process.nextTick(() => {\n        function callback(data) {\n          resolve(data);\n        }\n        _psCmds.push({\n          id,\n          cmd,\n          callback,\n          start: new Date()\n        });\n        try {\n          if (_psChild && _psChild.pid) {\n            _psChild.stdin.write(_psToUTF8 + 'echo ' + _psCmdStart + id + _psIdSeperator + '; ' + os.EOL + cmd + os.EOL + 'echo ' + _psCmdSeperator + os.EOL);\n          }\n        } catch (e) {\n          resolve('');\n        }\n      });\n    });\n\n  } else {\n    let result = '';\n\n    return new Promise((resolve) => {\n      process.nextTick(() => {\n        try {\n          // const start = new Date();\n          const child = spawn('powershell.exe', ['-NoLogo', '-InputFormat', 'Text', '-NoExit', '-ExecutionPolicy', 'Unrestricted', '-Command', '-'], {\n            stdio: 'pipe',\n            windowsHide: true,\n            maxBuffer: 1024 * 20000,\n            encoding: 'UTF-8',\n            env: util._extend({}, ({\"APP_ENV\":\"webpack\"}), { LANG: 'en_US.UTF-8' })\n          });\n\n          if (child && !child.pid) {\n            child.on('error', function () {\n              resolve(result);\n            });\n          }\n          if (child && child.pid) {\n            child.stdout.on('data', function (data) {\n              result = result + data.toString('utf8');\n            });\n            child.stderr.on('data', function () {\n              child.kill();\n              resolve(result);\n            });\n            child.on('close', function () {\n              child.kill();\n              // console.log(`----- TIME  : ${(new Date() - start) * 0.001} s`);\n\n              resolve(result);\n            });\n            child.on('error', function () {\n              child.kill();\n              resolve(result);\n            });\n            try {\n              child.stdin.write(_psToUTF8 + cmd + os.EOL);\n              child.stdin.write('exit' + os.EOL);\n              child.stdin.end();\n            } catch (e) {\n              child.kill();\n              resolve(result);\n            }\n          } else {\n            resolve(result);\n          }\n        } catch (e) {\n          resolve(result);\n        }\n      });\n    });\n  }\n}\n\nfunction execSafe(cmd, args, options) {\n  let result = '';\n  options = options || {};\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      try {\n        const child = spawn(cmd, args, options);\n\n        if (child && !child.pid) {\n          child.on('error', function () {\n            resolve(result);\n          });\n        }\n        if (child && child.pid) {\n          child.stdout.on('data', function (data) {\n            result += data.toString();\n          });\n          child.on('close', function () {\n            child.kill();\n            resolve(result);\n          });\n          child.on('error', function () {\n            child.kill();\n            resolve(result);\n          });\n        } else {\n          resolve(result);\n        }\n      } catch (e) {\n        resolve(result);\n      }\n    });\n  });\n}\n\nfunction getCodepage() {\n  if (_windows) {\n    if (!codepage) {\n      try {\n        const stdout = execSync('chcp', execOptsWin);\n        const lines = stdout.toString().split('\\r\\n');\n        const parts = lines[0].split(':');\n        codepage = parts.length > 1 ? parts[1].replace('.', '') : '';\n      } catch (err) {\n        codepage = '437';\n      }\n    }\n    return codepage;\n  }\n  if (_linux || _darwin || _freebsd || _openbsd || _netbsd) {\n    if (!codepage) {\n      try {\n        const stdout = execSync('echo $LANG');\n        const lines = stdout.toString().split('\\r\\n');\n        const parts = lines[0].split('.');\n        codepage = parts.length > 1 ? parts[1].trim() : '';\n        if (!codepage) {\n          codepage = 'UTF-8';\n        }\n      } catch (err) {\n        codepage = 'UTF-8';\n      }\n    }\n    return codepage;\n  }\n}\n\nfunction smartMonToolsInstalled() {\n  if (_smartMonToolsInstalled !== null) {\n    return _smartMonToolsInstalled;\n  }\n  _smartMonToolsInstalled = false;\n  if (_windows) {\n    try {\n      const pathArray = execSync('WHERE smartctl 2>nul', execOptsWin).toString().split('\\r\\n');\n      if (pathArray && pathArray.length) {\n        _smartMonToolsInstalled = pathArray[0].indexOf(':\\\\') >= 0;\n      } else {\n        _smartMonToolsInstalled = false;\n      }\n    } catch (e) {\n      _smartMonToolsInstalled = false;\n    }\n  }\n  if (_linux || _darwin || _freebsd || _openbsd || _netbsd) {\n    const pathArray = execSync('which smartctl 2>/dev/null', execOptsWin).toString().split('\\r\\n');\n    _smartMonToolsInstalled = pathArray.length > 0;\n  }\n  return _smartMonToolsInstalled;\n}\n\nfunction isRaspberry() {\n  const PI_MODEL_NO = [\n    'BCM2708',\n    'BCM2709',\n    'BCM2710',\n    'BCM2711',\n    'BCM2835',\n    'BCM2836',\n    'BCM2837',\n    'BCM2837B0'\n  ];\n  let cpuinfo = [];\n  try {\n    cpuinfo = fs.readFileSync('/proc/cpuinfo', { encoding: 'utf8' }).toString().split('\\n');\n  } catch (e) {\n    return false;\n  }\n  const hardware = getValue(cpuinfo, 'hardware');\n  return (hardware && PI_MODEL_NO.indexOf(hardware) > -1);\n}\n\nfunction isRaspbian() {\n  let osrelease = [];\n  try {\n    osrelease = fs.readFileSync('/etc/os-release', { encoding: 'utf8' }).toString().split('\\n');\n  } catch (e) {\n    return false;\n  }\n  const id = getValue(osrelease, 'id', '=');\n  return (id && id.indexOf('raspbian') > -1);\n}\n\nfunction execWin(cmd, opts, callback) {\n  if (!callback) {\n    callback = opts;\n    opts = execOptsWin;\n  }\n  let newCmd = 'chcp 65001 > nul && cmd /C ' + cmd + ' && chcp ' + codepage + ' > nul';\n  exec(newCmd, opts, function (error, stdout) {\n    callback(error, stdout);\n  });\n}\n\nfunction darwinXcodeExists() {\n  const cmdLineToolsExists = fs.existsSync('/Library/Developer/CommandLineTools/usr/bin/');\n  const xcodeAppExists = fs.existsSync('/Applications/Xcode.app/Contents/Developer/Tools');\n  const xcodeExists = fs.existsSync('/Library/Developer/Xcode/');\n  return (cmdLineToolsExists || xcodeExists || xcodeAppExists);\n}\n\nfunction nanoSeconds() {\n  const time = process.hrtime();\n  if (!Array.isArray(time) || time.length !== 2) {\n    return 0;\n  }\n  return +time[0] * 1e9 + +time[1];\n}\n\nfunction countUniqueLines(lines, startingWith) {\n  startingWith = startingWith || '';\n  const uniqueLines = [];\n  lines.forEach(line => {\n    if (line.startsWith(startingWith)) {\n      if (uniqueLines.indexOf(line) === -1) {\n        uniqueLines.push(line);\n      }\n    }\n  });\n  return uniqueLines.length;\n}\n\nfunction countLines(lines, startingWith) {\n  startingWith = startingWith || '';\n  const uniqueLines = [];\n  lines.forEach(line => {\n    if (line.startsWith(startingWith)) {\n      uniqueLines.push(line);\n    }\n  });\n  return uniqueLines.length;\n}\n\nfunction sanitizeShellString(str, strict) {\n  if (typeof strict === 'undefined') { strict = false; }\n  const s = str || '';\n  let result = '';\n  for (let i = 0; i <= mathMin(s.length, 2000); i++) {\n    if (!(s[i] === undefined ||\n      s[i] === '>' ||\n      s[i] === '<' ||\n      s[i] === '*' ||\n      s[i] === '?' ||\n      s[i] === '[' ||\n      s[i] === ']' ||\n      s[i] === '|' ||\n      s[i] === '˚' ||\n      s[i] === '$' ||\n      s[i] === ';' ||\n      s[i] === '&' ||\n      s[i] === '(' ||\n      s[i] === ')' ||\n      s[i] === ']' ||\n      s[i] === '#' ||\n      s[i] === '\\\\' ||\n      s[i] === '\\t' ||\n      s[i] === '\\n' ||\n      s[i] === '\\'' ||\n      s[i] === '`' ||\n      s[i] === '\"' ||\n      s[i].length > 1 ||\n      (strict && s[i] === '@') ||\n      (strict && s[i] === ' ') ||\n      (strict && s[i] == '{') ||\n      (strict && s[i] == ')'))) {\n      result = result + s[i];\n    }\n  }\n  return result;\n}\n\nfunction isPrototypePolluted() {\n  const s = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n  let notPolluted = true;\n  let st = '';\n\n  st.__proto__.replace = stringReplace;\n  st.__proto__.toLowerCase = stringToLower;\n  st.__proto__.toString = stringToString;\n  st.__proto__.substr = stringSubstr;\n\n  notPolluted = notPolluted || !(s.length === 62);\n  const ms = Date.now();\n  if (typeof ms === 'number' && ms > 1600000000000) {\n    const l = ms % 100 + 15;\n    for (let i = 0; i < l; i++) {\n      const r = Math.random() * 61.99999999 + 1;\n      const rs = parseInt(Math.floor(r).toString(), 10);\n      const rs2 = parseInt(r.toString().split('.')[0], 10);\n      const q = Math.random() * 61.99999999 + 1;\n      const qs = parseInt(Math.floor(q).toString(), 10);\n      const qs2 = parseInt(q.toString().split('.')[0], 10);\n      notPolluted = notPolluted && !(r === q);\n      notPolluted = notPolluted && rs === rs2 && qs === qs2;\n      st += s[rs - 1];\n    }\n    notPolluted = notPolluted && st.length === l;\n    // string manipulation\n    let p = Math.random() * l * 0.9999999999;\n    let stm = st.substr(0, p) + ' ' + st.substr(p, 2000);\n    stm.__proto__.replace = stringReplace;\n    let sto = stm.replace(/ /g, '');\n    notPolluted = notPolluted && st === sto;\n    p = Math.random() * l * 0.9999999999;\n    stm = st.substr(0, p) + '{' + st.substr(p, 2000);\n    sto = stm.replace(/{/g, '');\n    notPolluted = notPolluted && st === sto;\n    p = Math.random() * l * 0.9999999999;\n    stm = st.substr(0, p) + '*' + st.substr(p, 2000);\n    sto = stm.replace(/\\*/g, '');\n    notPolluted = notPolluted && st === sto;\n    p = Math.random() * l * 0.9999999999;\n    stm = st.substr(0, p) + '$' + st.substr(p, 2000);\n    sto = stm.replace(/\\$/g, '');\n    notPolluted = notPolluted && st === sto;\n\n    // lower\n    const stl = st.toLowerCase();\n    notPolluted = notPolluted && (stl.length === l) && stl[l - 1] && !(stl[l]);\n    for (let i = 0; i < l; i++) {\n      const s1 = st[i];\n      s1.__proto__.toLowerCase = stringToLower;\n      const s2 = stl ? stl[i] : '';\n      const s1l = s1.toLowerCase();\n      notPolluted = notPolluted && s1l[0] === s2 && s1l[0] && !(s1l[1]);\n    }\n  }\n  return !notPolluted;\n}\n\nfunction hex2bin(hex) {\n  return ('00000000' + (parseInt(hex, 16)).toString(2)).substr(-8);\n}\n\nfunction getFilesInPath(source) {\n  const lstatSync = fs.lstatSync;\n  const readdirSync = fs.readdirSync;\n  const join = path.join;\n\n  function isDirectory(source) {\n    return lstatSync(source).isDirectory();\n  }\n  function isFile(source) { return lstatSync(source).isFile(); }\n\n  function getDirectories(source) {\n    return readdirSync(source).map(function (name) { return join(source, name); }).filter(isDirectory);\n  }\n  function getFiles(source) {\n    return readdirSync(source).map(function (name) { return join(source, name); }).filter(isFile);\n  }\n\n  function getFilesRecursively(source) {\n    try {\n      let dirs = getDirectories(source);\n      let files = dirs\n        .map(function (dir) { return getFilesRecursively(dir); })\n        .reduce(function (a, b) { return a.concat(b); }, []);\n      return files.concat(getFiles(source));\n    } catch (e) {\n      return [];\n    }\n  }\n\n  if (fs.existsSync(source)) {\n    return getFilesRecursively(source);\n  } else {\n    return [];\n  }\n}\n\nfunction decodePiCpuinfo(lines) {\n\n  // https://www.raspberrypi.org/documentation/hardware/raspberrypi/revision-codes/README.md\n\n  const oldRevisionCodes = {\n    '0002': {\n      type: 'B',\n      revision: '1.0',\n      memory: 256,\n      manufacturer: 'Egoman',\n      processor: 'BCM2835'\n    },\n    '0003': {\n      type: 'B',\n      revision: '1.0',\n      memory: 256,\n      manufacturer: 'Egoman',\n      processor: 'BCM2835'\n    },\n    '0004': {\n      type: 'B',\n      revision: '2.0',\n      memory: 256,\n      manufacturer: 'Sony UK',\n      processor: 'BCM2835'\n    },\n    '0005': {\n      type: 'B',\n      revision: '2.0',\n      memory: 256,\n      manufacturer: 'Qisda',\n      processor: 'BCM2835'\n    },\n    '0006': {\n      type: 'B',\n      revision: '2.0',\n      memory: 256,\n      manufacturer: 'Egoman',\n      processor: 'BCM2835'\n    },\n    '0007': {\n      type: 'A',\n      revision: '2.0',\n      memory: 256,\n      manufacturer: 'Egoman',\n      processor: 'BCM2835'\n    },\n    '0008': {\n      type: 'A',\n      revision: '2.0',\n      memory: 256,\n      manufacturer: 'Sony UK',\n      processor: 'BCM2835'\n    },\n    '0009': {\n      type: 'A',\n      revision: '2.0',\n      memory: 256,\n      manufacturer: 'Qisda',\n      processor: 'BCM2835'\n    },\n    '000d': {\n      type: 'B',\n      revision: '2.0',\n      memory: 512,\n      manufacturer: 'Egoman',\n      processor: 'BCM2835'\n    },\n    '000e': {\n      type: 'B',\n      revision: '2.0',\n      memory: 512,\n      manufacturer: 'Sony UK',\n      processor: 'BCM2835'\n    },\n    '000f': {\n      type: 'B',\n      revision: '2.0',\n      memory: 512,\n      manufacturer: 'Egoman',\n      processor: 'BCM2835'\n    },\n    '0010': {\n      type: 'B+',\n      revision: '1.2',\n      memory: 512,\n      manufacturer: 'Sony UK',\n      processor: 'BCM2835'\n    },\n    '0011': {\n      type: 'CM1',\n      revision: '1.0',\n      memory: 512,\n      manufacturer: 'Sony UK',\n      processor: 'BCM2835'\n    },\n    '0012': {\n      type: 'A+',\n      revision: '1.1',\n      memory: 256,\n      manufacturer: 'Sony UK',\n      processor: 'BCM2835'\n    },\n    '0013': {\n      type: 'B+',\n      revision: '1.2',\n      memory: 512,\n      manufacturer: 'Embest',\n      processor: 'BCM2835'\n    },\n    '0014': {\n      type: 'CM1',\n      revision: '1.0',\n      memory: 512,\n      manufacturer: 'Embest',\n      processor: 'BCM2835'\n    },\n    '0015': {\n      type: 'A+',\n      revision: '1.1',\n      memory: 256,\n      manufacturer: '512MB\tEmbest',\n      processor: 'BCM2835'\n    }\n  };\n\n  const processorList = [\n    'BCM2835',\n    'BCM2836',\n    'BCM2837',\n    'BCM2711',\n  ];\n  const manufacturerList = [\n    'Sony UK',\n    'Egoman',\n    'Embest',\n    'Sony Japan',\n    'Embest',\n    'Stadium'\n  ];\n  const typeList = {\n    '00': 'A',\n    '01': 'B',\n    '02': 'A+',\n    '03': 'B+',\n    '04': '2B',\n    '05': 'Alpha (early prototype)',\n    '06': 'CM1',\n    '08': '3B',\n    '09': 'Zero',\n    '0a': 'CM3',\n    '0c': 'Zero W',\n    '0d': '3B+',\n    '0e': '3A+',\n    '0f': 'Internal use only',\n    '10': 'CM3+',\n    '11': '4B',\n    '12': 'Zero 2 W',\n    '13': '400',\n    '14': 'CM4'\n  };\n\n  const revisionCode = getValue(lines, 'revision', ':', true);\n  const model = getValue(lines, 'model:', ':', true);\n  const serial = getValue(lines, 'serial', ':', true);\n\n  let result = {};\n  if ({}.hasOwnProperty.call(oldRevisionCodes, revisionCode)) {\n    // old revision codes\n    result = {\n      model,\n      serial,\n      revisionCode,\n      memory: oldRevisionCodes[revisionCode].memory,\n      manufacturer: oldRevisionCodes[revisionCode].manufacturer,\n      processor: oldRevisionCodes[revisionCode].processor,\n      type: oldRevisionCodes[revisionCode].type,\n      revision: oldRevisionCodes[revisionCode].revision,\n    };\n\n  } else {\n    // new revision code\n    const revision = ('00000000' + getValue(lines, 'revision', ':', true).toLowerCase()).substr(-8);\n    // const revisionStyleNew = hex2bin(revision.substr(2, 1)).substr(4, 1) === '1';\n    const memSizeCode = parseInt(hex2bin(revision.substr(2, 1)).substr(5, 3), 2) || 0;\n    const manufacturer = manufacturerList[parseInt(revision.substr(3, 1), 10)];\n    const processor = processorList[parseInt(revision.substr(4, 1), 10)];\n    const typeCode = revision.substr(5, 2);\n\n\n    result = {\n      model,\n      serial,\n      revisionCode,\n      memory: 256 * Math.pow(2, memSizeCode),\n      manufacturer,\n      processor,\n      type: {}.hasOwnProperty.call(typeList, typeCode) ? typeList[typeCode] : '',\n      revision: '1.' + revision.substr(7, 1),\n    };\n  }\n  return result;\n}\n\nfunction promiseAll(promises) {\n  const resolvingPromises = promises.map(function (promise) {\n    return new Promise(function (resolve) {\n      var payload = new Array(2);\n      promise.then(function (result) {\n        payload[0] = result;\n      })\n        .catch(function (error) {\n          payload[1] = error;\n        })\n        .then(function () {\n          // The wrapped Promise returns an array: 0 = result, 1 = error ... we resolve all\n          resolve(payload);\n        });\n    });\n  });\n  var errors = [];\n  var results = [];\n\n  // Execute all wrapped Promises\n  return Promise.all(resolvingPromises)\n    .then(function (items) {\n      items.forEach(function (payload) {\n        if (payload[1]) {\n          errors.push(payload[1]);\n          results.push(null);\n        } else {\n          errors.push(null);\n          results.push(payload[0]);\n        }\n      });\n\n      return {\n        errors: errors,\n        results: results\n      };\n    });\n}\n\nfunction promisify(nodeStyleFunction) {\n  return function () {\n    var args = Array.prototype.slice.call(arguments);\n    return new Promise(function (resolve, reject) {\n      args.push(function (err, data) {\n        if (err) {\n          reject(err);\n        } else {\n          resolve(data);\n        }\n      });\n      nodeStyleFunction.apply(null, args);\n    });\n  };\n}\n\nfunction promisifySave(nodeStyleFunction) {\n  return function () {\n    var args = Array.prototype.slice.call(arguments);\n    return new Promise(function (resolve) {\n      args.push(function (err, data) {\n        resolve(data);\n      });\n      nodeStyleFunction.apply(null, args);\n    });\n  };\n}\n\nfunction linuxVersion() {\n  let result = '';\n  if (_linux) {\n    try {\n      result = execSync('uname -v').toString();\n    } catch (e) {\n      result = '';\n    }\n  }\n  return result;\n}\n\nfunction plistParser(xmlStr) {\n  const tags = ['array', 'dict', 'key', 'string', 'integer', 'date', 'real', 'data', 'boolean', 'arrayEmpty'];\n  const startStr = '<plist version';\n\n  let pos = xmlStr.indexOf(startStr);\n  let len = xmlStr.length;\n  while (xmlStr[pos] !== '>' && pos < len) {\n    pos++;\n  }\n\n  let depth = 0;\n  let inTagStart = false;\n  let inTagContent = false;\n  let inTagEnd = false;\n  let metaData = [{ tagStart: '', tagEnd: '', tagContent: '', key: '', data: null }];\n  let c = '';\n  let cn = xmlStr[pos];\n\n  while (pos < len) {\n    c = cn;\n    if (pos + 1 < len) { cn = xmlStr[pos + 1]; }\n    if (c === '<') {\n      inTagContent = false;\n      if (cn === '/') { inTagEnd = true; }\n      else if (metaData[depth].tagStart) {\n        metaData[depth].tagContent = '';\n        if (!metaData[depth].data) { metaData[depth].data = metaData[depth].tagStart === 'array' ? [] : {}; }\n        depth++;\n        metaData.push({ tagStart: '', tagEnd: '', tagContent: '', key: null, data: null });\n        inTagStart = true;\n        inTagContent = false;\n      }\n      else if (!inTagStart) { inTagStart = true; }\n    } else if (c === '>') {\n      if (metaData[depth].tagStart === 'true/') { inTagStart = false; inTagEnd = true; metaData[depth].tagStart = ''; metaData[depth].tagEnd = '/boolean'; metaData[depth].data = true; }\n      if (metaData[depth].tagStart === 'false/') { inTagStart = false; inTagEnd = true; metaData[depth].tagStart = ''; metaData[depth].tagEnd = '/boolean'; metaData[depth].data = false; }\n      if (metaData[depth].tagStart === 'array/') { inTagStart = false; inTagEnd = true; metaData[depth].tagStart = ''; metaData[depth].tagEnd = '/arrayEmpty'; metaData[depth].data = []; }\n      if (inTagContent) { inTagContent = false; }\n      if (inTagStart) {\n        inTagStart = false;\n        inTagContent = true;\n        if (metaData[depth].tagStart === 'array') {\n          metaData[depth].data = [];\n        }\n        if (metaData[depth].tagStart === 'dict') {\n          metaData[depth].data = {};\n        }\n      }\n      if (inTagEnd) {\n        inTagEnd = false;\n        if (metaData[depth].tagEnd && tags.indexOf(metaData[depth].tagEnd.substr(1)) >= 0) {\n          if (metaData[depth].tagEnd === '/dict' || metaData[depth].tagEnd === '/array') {\n            if (depth > 1 && metaData[depth - 2].tagStart === 'array') {\n              metaData[depth - 2].data.push(metaData[depth - 1].data);\n            }\n            if (depth > 1 && metaData[depth - 2].tagStart === 'dict') {\n              metaData[depth - 2].data[metaData[depth - 1].key] = metaData[depth - 1].data;\n            }\n            depth--;\n            metaData.pop();\n            metaData[depth].tagContent = '';\n            metaData[depth].tagStart = '';\n            metaData[depth].tagEnd = '';\n          }\n          else {\n            if (metaData[depth].tagEnd === '/key' && metaData[depth].tagContent) {\n              metaData[depth].key = metaData[depth].tagContent;\n            } else {\n              if (metaData[depth].tagEnd === '/real' && metaData[depth].tagContent) { metaData[depth].data = parseFloat(metaData[depth].tagContent) || 0; }\n              if (metaData[depth].tagEnd === '/integer' && metaData[depth].tagContent) { metaData[depth].data = parseInt(metaData[depth].tagContent) || 0; }\n              if (metaData[depth].tagEnd === '/string' && metaData[depth].tagContent) { metaData[depth].data = metaData[depth].tagContent || ''; }\n              if (metaData[depth].tagEnd === '/boolean') { metaData[depth].data = metaData[depth].tagContent || false; }\n              if (metaData[depth].tagEnd === '/arrayEmpty') { metaData[depth].data = metaData[depth].tagContent || []; }\n              if (depth > 0 && metaData[depth - 1].tagStart === 'array') { metaData[depth - 1].data.push(metaData[depth].data); }\n              if (depth > 0 && metaData[depth - 1].tagStart === 'dict') { metaData[depth - 1].data[metaData[depth].key] = metaData[depth].data; }\n            }\n            metaData[depth].tagContent = '';\n            metaData[depth].tagStart = '';\n            metaData[depth].tagEnd = '';\n          }\n        }\n        metaData[depth].tagEnd = '';\n        inTagStart = false;\n        inTagContent = false;\n      }\n    } else {\n      if (inTagStart) { metaData[depth].tagStart += c; }\n      if (inTagEnd) { metaData[depth].tagEnd += c; }\n      if (inTagContent) { metaData[depth].tagContent += c; }\n    }\n    pos++;\n  }\n  return metaData[0].data;\n}\n\nfunction semverCompare(v1, v2) {\n  let res = 0;\n  const parts1 = v1.split('.');\n  const parts2 = v2.split('.');\n  if (parts1[0] < parts2[0]) { res = 1; }\n  else if (parts1[0] > parts2[0]) { res = -1; }\n  else if (parts1[0] === parts2[0] && parts1.length >= 2 && parts2.length >= 2) {\n    if (parts1[1] < parts2[1]) { res = 1; }\n    else if (parts1[1] > parts2[1]) { res = -1; }\n    else if (parts1[1] === parts2[1]) {\n      if (parts1.length >= 3 && parts2.length >= 3) {\n        if (parts1[2] < parts2[2]) { res = 1; }\n        else if (parts1[2] > parts2[2]) { res = -1; }\n      } else if (parts2.length >= 3) {\n        res = 1;\n      }\n    }\n  }\n  return res;\n}\n\nfunction noop() { }\n\nexports.toInt = toInt;\nexports.execOptsWin = execOptsWin;\nexports.getCodepage = getCodepage;\nexports.execWin = execWin;\nexports.isFunction = isFunction;\nexports.unique = unique;\nexports.sortByKey = sortByKey;\nexports.cores = cores;\nexports.getValue = getValue;\nexports.decodeEscapeSequence = decodeEscapeSequence;\nexports.parseDateTime = parseDateTime;\nexports.parseHead = parseHead;\nexports.findObjectByKey = findObjectByKey;\nexports.getWmic = getWmic;\nexports.wmic = wmic;\nexports.darwinXcodeExists = darwinXcodeExists;\nexports.getVboxmanage = getVboxmanage;\nexports.powerShell = powerShell;\nexports.powerShellStart = powerShellStart;\nexports.powerShellRelease = powerShellRelease;\nexports.execSafe = execSafe;\nexports.nanoSeconds = nanoSeconds;\nexports.countUniqueLines = countUniqueLines;\nexports.countLines = countLines;\nexports.noop = noop;\nexports.isRaspberry = isRaspberry;\nexports.isRaspbian = isRaspbian;\nexports.sanitizeShellString = sanitizeShellString;\nexports.isPrototypePolluted = isPrototypePolluted;\nexports.decodePiCpuinfo = decodePiCpuinfo;\nexports.promiseAll = promiseAll;\nexports.promisify = promisify;\nexports.promisifySave = promisifySave;\nexports.smartMonToolsInstalled = smartMonToolsInstalled;\nexports.linuxVersion = linuxVersion;\nexports.plistParser = plistParser;\nexports.stringReplace = stringReplace;\nexports.stringToLower = stringToLower;\nexports.stringToString = stringToString;\nexports.stringSubstr = stringSubstr;\nexports.stringTrim = stringTrim;\nexports.stringStartWith = stringStartWith;\nexports.mathMin = mathMin;\nexports.WINDIR = WINDIR;\nexports.getFilesInPath = getFilesInPath;\nexports.semverCompare = semverCompare;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/systeminformation/lib/util.js?")},"./node_modules/systeminformation/lib/virtualbox.js":
/*!**********************************************************!*\
  !*** ./node_modules/systeminformation/lib/virtualbox.js ***!
  \**********************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n// @ts-check\n// ==================================================================================\n// virtualbox.js\n// ----------------------------------------------------------------------------------\n// Description:   System Information - library\n//                for Node.js\n// Copyright:     (c) 2014 - 2022\n// Author:        Sebastian Hildebrandt\n// ----------------------------------------------------------------------------------\n// License:       MIT\n// ==================================================================================\n// 14. Docker\n// ----------------------------------------------------------------------------------\n\nconst os = __webpack_require__(/*! os */ \"os\");\nconst exec = (__webpack_require__(/*! child_process */ \"child_process\").exec);\nconst util = __webpack_require__(/*! ./util */ \"./node_modules/systeminformation/lib/util.js\");\n\nfunction vboxInfo(callback) {\n\n  // fallback - if only callback is given\n  let result = [];\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      try {\n        exec(util.getVboxmanage() + ' list vms --long', function (error, stdout) {\n          let parts = (os.EOL + stdout.toString()).split(os.EOL + 'Name:');\n          parts.shift();\n          parts.forEach(part => {\n            const lines = ('Name:' + part).split(os.EOL);\n            const state = util.getValue(lines, 'State');\n            const running = state.startsWith('running');\n            const runningSinceString = running ? state.replace('running (since ', '').replace(')', '').trim() : '';\n            let runningSince = 0;\n            try {\n              if (running) {\n                const sinceDateObj = new Date(runningSinceString);\n                const offset = sinceDateObj.getTimezoneOffset();\n                runningSince = Math.round((Date.now() - Date.parse(sinceDateObj)) / 1000) + offset * 60;\n              }\n            } catch (e) {\n              util.noop();\n            }\n            const stoppedSinceString = !running ? state.replace('powered off (since', '').replace(')', '').trim() : '';\n            let stoppedSince = 0;\n            try {\n              if (!running) {\n                const sinceDateObj = new Date(stoppedSinceString);\n                const offset = sinceDateObj.getTimezoneOffset();\n                stoppedSince = Math.round((Date.now() - Date.parse(sinceDateObj)) / 1000) + offset * 60;\n              }\n            } catch (e) {\n              util.noop();\n            }\n            result.push({\n              id: util.getValue(lines, 'UUID'),\n              name: util.getValue(lines, 'Name'),\n              running,\n              started: runningSinceString,\n              runningSince,\n              stopped: stoppedSinceString,\n              stoppedSince,\n              guestOS: util.getValue(lines, 'Guest OS'),\n              hardwareUUID: util.getValue(lines, 'Hardware UUID'),\n              memory: parseInt(util.getValue(lines, 'Memory size', '     '), 10),\n              vram: parseInt(util.getValue(lines, 'VRAM size'), 10),\n              cpus: parseInt(util.getValue(lines, 'Number of CPUs'), 10),\n              cpuExepCap: util.getValue(lines, 'CPU exec cap'),\n              cpuProfile: util.getValue(lines, 'CPUProfile'),\n              chipset: util.getValue(lines, 'Chipset'),\n              firmware: util.getValue(lines, 'Firmware'),\n              pageFusion: util.getValue(lines, 'Page Fusion') === 'enabled',\n              configFile: util.getValue(lines, 'Config file'),\n              snapshotFolder: util.getValue(lines, 'Snapshot folder'),\n              logFolder: util.getValue(lines, 'Log folder'),\n              hpet: util.getValue(lines, 'HPET') === 'enabled',\n              pae: util.getValue(lines, 'PAE') === 'enabled',\n              longMode: util.getValue(lines, 'Long Mode') === 'enabled',\n              tripleFaultReset: util.getValue(lines, 'Triple Fault Reset') === 'enabled',\n              apic: util.getValue(lines, 'APIC') === 'enabled',\n              x2Apic: util.getValue(lines, 'X2APIC') === 'enabled',\n              acpi: util.getValue(lines, 'ACPI') === 'enabled',\n              ioApic: util.getValue(lines, 'IOAPIC') === 'enabled',\n              biosApicMode: util.getValue(lines, 'BIOS APIC mode'),\n              bootMenuMode: util.getValue(lines, 'Boot menu mode'),\n              bootDevice1: util.getValue(lines, 'Boot Device 1'),\n              bootDevice2: util.getValue(lines, 'Boot Device 2'),\n              bootDevice3: util.getValue(lines, 'Boot Device 3'),\n              bootDevice4: util.getValue(lines, 'Boot Device 4'),\n              timeOffset: util.getValue(lines, 'Time offset'),\n              rtc: util.getValue(lines, 'RTC'),\n            });\n          });\n\n          if (callback) { callback(result); }\n          resolve(result);\n        });\n      } catch (e) {\n        if (callback) { callback(result); }\n        resolve(result);\n      }\n    });\n  });\n}\n\nexports.vboxInfo = vboxInfo;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/systeminformation/lib/virtualbox.js?")},"./node_modules/systeminformation/lib/wifi.js":
/*!****************************************************!*\
  !*** ./node_modules/systeminformation/lib/wifi.js ***!
  \****************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n// @ts-check\n// ==================================================================================\n// wifi.js\n// ----------------------------------------------------------------------------------\n// Description:   System Information - library\n//                for Node.js\n// Copyright:     (c) 2014 - 2022\n// Author:        Sebastian Hildebrandt\n// ----------------------------------------------------------------------------------\n// License:       MIT\n// ==================================================================================\n// 9. wifi\n// ----------------------------------------------------------------------------------\n\nconst os = __webpack_require__(/*! os */ \"os\");\nconst exec = (__webpack_require__(/*! child_process */ \"child_process\").exec);\nconst execSync = (__webpack_require__(/*! child_process */ \"child_process\").execSync);\nconst util = __webpack_require__(/*! ./util */ \"./node_modules/systeminformation/lib/util.js\");\n\nlet _platform = process.platform;\n\nconst _linux = (_platform === 'linux' || _platform === 'android');\nconst _darwin = (_platform === 'darwin');\nconst _windows = (_platform === 'win32');\n\nfunction wifiDBFromQuality(quality) {\n  return (parseFloat(quality) / 2 - 100);\n}\n\nfunction wifiQualityFromDB(db) {\n  const result = 2 * (parseFloat(db) + 100);\n  return result <= 100 ? result : 100;\n}\n\nconst _wifi_frequencies = {\n  1: 2412,\n  2: 2417,\n  3: 2422,\n  4: 2427,\n  5: 2432,\n  6: 2437,\n  7: 2442,\n  8: 2447,\n  9: 2452,\n  10: 2457,\n  11: 2462,\n  12: 2467,\n  13: 2472,\n  14: 2484,\n  32: 5160,\n  34: 5170,\n  36: 5180,\n  38: 5190,\n  40: 5200,\n  42: 5210,\n  44: 5220,\n  46: 5230,\n  48: 5240,\n  50: 5250,\n  52: 5260,\n  54: 5270,\n  56: 5280,\n  58: 5290,\n  60: 5300,\n  62: 5310,\n  64: 5320,\n  68: 5340,\n  96: 5480,\n  100: 5500,\n  102: 5510,\n  104: 5520,\n  106: 5530,\n  108: 5540,\n  110: 5550,\n  112: 5560,\n  114: 5570,\n  116: 5580,\n  118: 5590,\n  120: 5600,\n  122: 5610,\n  124: 5620,\n  126: 5630,\n  128: 5640,\n  132: 5660,\n  134: 5670,\n  136: 5680,\n  138: 5690,\n  140: 5700,\n  142: 5710,\n  144: 5720,\n  149: 5745,\n  151: 5755,\n  153: 5765,\n  155: 5775,\n  157: 5785,\n  159: 5795,\n  161: 5805,\n  165: 5825,\n  169: 5845,\n  173: 5865,\n  183: 4915,\n  184: 4920,\n  185: 4925,\n  187: 4935,\n  188: 4940,\n  189: 4945,\n  192: 4960,\n  196: 4980\n};\n\nfunction wifiFrequencyFromChannel(channel) {\n  return {}.hasOwnProperty.call(_wifi_frequencies, channel) ? _wifi_frequencies[channel] : null;\n}\n\nfunction wifiChannelFromFrequencs(frequency) {\n  let channel = 0;\n  for (let key in _wifi_frequencies) {\n    if ({}.hasOwnProperty.call(_wifi_frequencies, key)) {\n      if (_wifi_frequencies[key] === frequency) { channel = util.toInt(key); }\n    }\n  }\n  return channel;\n}\n\nfunction ifaceListLinux() {\n  const result = [];\n  const cmd = 'iw dev';\n  try {\n    const all = execSync(cmd).toString().split('\\n').map(line => line.trim()).join('\\n');\n    const parts = all.split('\\nInterface ');\n    parts.shift();\n    parts.forEach(ifaceDetails => {\n      const lines = ifaceDetails.split('\\n');\n      const iface = lines[0];\n      const id = util.toInt(util.getValue(lines, 'ifindex', ' '));\n      const mac = util.getValue(lines, 'addr', ' ');\n      const channel = util.toInt(util.getValue(lines, 'channel', ' '));\n      result.push({\n        id,\n        iface,\n        mac,\n        channel\n      });\n    });\n    return result;\n  } catch (e) {\n    return [];\n  }\n}\n\nfunction nmiDeviceLinux(iface) {\n  const cmd = `nmcli -t -f general,wifi-properties,capabilities,ip4,ip6 device show ${iface} 2>/dev/null`;\n  try {\n    const lines = execSync(cmd).toString().split('\\n');\n    const ssid = util.getValue(lines, 'GENERAL.CONNECTION');\n    return {\n      iface,\n      type: util.getValue(lines, 'GENERAL.TYPE'),\n      vendor: util.getValue(lines, 'GENERAL.VENDOR'),\n      product: util.getValue(lines, 'GENERAL.PRODUCT'),\n      mac: util.getValue(lines, 'GENERAL.HWADDR').toLowerCase(),\n      ssid: ssid !== '--' ? ssid : null\n    };\n  } catch (e) {\n    return {};\n  }\n}\n\nfunction nmiConnectionLinux(ssid) {\n  const cmd = `nmcli -t --show-secrets connection show ${ssid} 2>/dev/null`;\n  try {\n    const lines = execSync(cmd).toString().split('\\n');\n    const bssid = util.getValue(lines, '802-11-wireless.seen-bssids').toLowerCase();\n    return {\n      ssid: ssid !== '--' ? ssid : null,\n      uuid: util.getValue(lines, 'connection.uuid'),\n      type: util.getValue(lines, 'connection.type'),\n      autoconnect: util.getValue(lines, 'connection.autoconnect') === 'yes',\n      security: util.getValue(lines, '802-11-wireless-security.key-mgmt'),\n      bssid: bssid !== '--' ? bssid : null\n    };\n  } catch (e) {\n    return {};\n  }\n}\n\nfunction wpaConnectionLinux(iface) {\n  const cmd = `wpa_cli -i ${iface} status 2>&1`;\n  try {\n    const lines = execSync(cmd).toString().split('\\n');\n    const freq = util.toInt(util.getValue(lines, 'freq', '='));\n    return {\n      ssid: util.getValue(lines, 'ssid', '='),\n      uuid: util.getValue(lines, 'uuid', '='),\n      security: util.getValue(lines, 'key_mgmt', '='),\n      freq,\n      channel: wifiChannelFromFrequencs(freq),\n      bssid: util.getValue(lines, 'bssid', '=').toLowerCase()\n    };\n  } catch (e) {\n    return {};\n  }\n}\n\nfunction getWifiNetworkListNmi() {\n  const result = [];\n  const cmd = 'nmcli -t -m multiline --fields active,ssid,bssid,mode,chan,freq,signal,security,wpa-flags,rsn-flags device wifi list 2>/dev/null';\n  try {\n    const stdout = execSync(cmd, { maxBuffer: 1024 * 20000 });\n    const parts = stdout.toString().split('ACTIVE:');\n    parts.shift();\n    parts.forEach(part => {\n      part = 'ACTIVE:' + part;\n      const lines = part.split(os.EOL);\n      const channel = util.getValue(lines, 'CHAN');\n      const frequency = util.getValue(lines, 'FREQ').toLowerCase().replace('mhz', '').trim();\n      const security = util.getValue(lines, 'SECURITY').replace('(', '').replace(')', '');\n      const wpaFlags = util.getValue(lines, 'WPA-FLAGS').replace('(', '').replace(')', '');\n      const rsnFlags = util.getValue(lines, 'RSN-FLAGS').replace('(', '').replace(')', '');\n      result.push({\n        ssid: util.getValue(lines, 'SSID'),\n        bssid: util.getValue(lines, 'BSSID').toLowerCase(),\n        mode: util.getValue(lines, 'MODE'),\n        channel: channel ? parseInt(channel, 10) : null,\n        frequency: frequency ? parseInt(frequency, 10) : null,\n        signalLevel: wifiDBFromQuality(util.getValue(lines, 'SIGNAL')),\n        quality: parseFloat(util.getValue(lines, 'SIGNAL')),\n        security: security && security !== 'none' ? security.split(' ') : [],\n        wpaFlags: wpaFlags && wpaFlags !== 'none' ? wpaFlags.split(' ') : [],\n        rsnFlags: rsnFlags && rsnFlags !== 'none' ? rsnFlags.split(' ') : []\n      });\n    });\n    return result;\n  } catch (e) {\n    return [];\n  }\n}\n\nfunction getWifiNetworkListIw(iface) {\n  const result = [];\n  try {\n    let iwlistParts = execSync(`export LC_ALL=C; iwlist ${iface} scan 2>&1; unset LC_ALL`).toString().split('        Cell ');\n    if (iwlistParts[0].indexOf('resource busy') >= 0) { return -1; }\n    if (iwlistParts.length > 1) {\n      iwlistParts.shift();\n      for (let i = 0; i < iwlistParts.length; i++) {\n        const lines = iwlistParts[i].split('\\n');\n        const channel = util.getValue(lines, 'channel', ':', true);\n        const address = (lines && lines.length && lines[0].indexOf('Address:') >= 0 ? lines[0].split('Address:')[1].trim().toLowerCase() : '');\n        const mode = util.getValue(lines, 'mode', ':', true);\n        const frequency = util.getValue(lines, 'frequency', ':', true);\n        const qualityString = util.getValue(lines, 'Quality', '=', true);\n        const dbParts = qualityString.toLowerCase().split('signal level=');\n        const db = dbParts.length > 1 ? util.toInt(dbParts[1]) : 0;\n        const quality = db ? wifiQualityFromDB(db) : 0;\n        const ssid = util.getValue(lines, 'essid', ':', true);\n\n        // security and wpa-flags\n        const isWpa = iwlistParts[i].indexOf(' WPA ') >= 0;\n        const isWpa2 = iwlistParts[i].indexOf('WPA2 ') >= 0;\n        const security = [];\n        if (isWpa) { security.push('WPA'); }\n        if (isWpa2) { security.push('WPA2'); }\n        const wpaFlags = [];\n        let wpaFlag = '';\n        lines.forEach(function (line) {\n          const l = line.trim().toLowerCase();\n          if (l.indexOf('group cipher') >= 0) {\n            if (wpaFlag) {\n              wpaFlags.push(wpaFlag);\n            }\n            const parts = l.split(':');\n            if (parts.length > 1) {\n              wpaFlag = parts[1].trim().toUpperCase();\n            }\n          }\n          if (l.indexOf('pairwise cipher') >= 0) {\n            const parts = l.split(':');\n            if (parts.length > 1) {\n              if (parts[1].indexOf('tkip')) { wpaFlag = (wpaFlag ? 'TKIP/' + wpaFlag : 'TKIP'); }\n              else if (parts[1].indexOf('ccmp')) { wpaFlag = (wpaFlag ? 'CCMP/' + wpaFlag : 'CCMP'); }\n              else if (parts[1].indexOf('proprietary')) { wpaFlag = (wpaFlag ? 'PROP/' + wpaFlag : 'PROP'); }\n            }\n          }\n          if (l.indexOf('authentication suites') >= 0) {\n            const parts = l.split(':');\n            if (parts.length > 1) {\n              if (parts[1].indexOf('802.1x')) { wpaFlag = (wpaFlag ? '802.1x/' + wpaFlag : '802.1x'); }\n              else if (parts[1].indexOf('psk')) { wpaFlag = (wpaFlag ? 'PSK/' + wpaFlag : 'PSK'); }\n            }\n          }\n        });\n        if (wpaFlag) {\n          wpaFlags.push(wpaFlag);\n        }\n\n        result.push({\n          ssid,\n          bssid: address,\n          mode,\n          channel: channel ? util.toInt(channel) : null,\n          frequency: frequency ? util.toInt(frequency.replace('.', '')) : null,\n          signalLevel: db,\n          quality,\n          security,\n          wpaFlags,\n          rsnFlags: []\n        });\n      }\n    }\n    return result;\n  } catch (e) {\n    return -1;\n  }\n}\n\n/*\n                    ssid: line.substring(parsedhead[0].from, parsedhead[0].to).trim(),\n                    bssid: line.substring(parsedhead[1].from, parsedhead[1].to).trim().toLowerCase(),\n                    mode: '',\n                    channel,\n                    frequency: wifiFrequencyFromChannel(channel),\n                    signalLevel: signalLevel ? parseInt(signalLevel, 10) : null,\n                    quality: wifiQualityFromDB(signalLevel),\n                    security,\n                    wpaFlags,\n                    rsnFlags: []\n\n                  const securityAll = line.substring(parsedhead[6].from, 1000).trim().split(' ');\n                  let security = [];\n                  let wpaFlags = [];\n                  securityAll.forEach(securitySingle => {\n                    if (securitySingle.indexOf('(') > 0) {\n                      const parts = securitySingle.split('(');\n                      security.push(parts[0]);\n                      wpaFlags = wpaFlags.concat(parts[1].replace(')', '').split(','));\n                    }\n                  });\n\n*/\nfunction parseWifiDarwin(wifiObj) {\n  const result = [];\n  if (wifiObj) {\n    wifiObj.forEach(function (wifiItem) {\n      const signalLevel = wifiItem.RSSI;\n      let security = [];\n      let wpaFlags = [];\n      if (wifiItem.WPA_IE) {\n        security.push('WPA');\n        if (wifiItem.WPA_IE.IE_KEY_WPA_UCIPHERS) {\n          wifiItem.WPA_IE.IE_KEY_WPA_UCIPHERS.forEach(function (ciphers) {\n            if (ciphers === 0 && wpaFlags.indexOf('unknown/TKIP') === -1) { wpaFlags.push('unknown/TKIP'); }\n            if (ciphers === 2 && wpaFlags.indexOf('PSK/TKIP') === -1) { wpaFlags.push('PSK/TKIP'); }\n            if (ciphers === 4 && wpaFlags.indexOf('PSK/AES') === -1) { wpaFlags.push('PSK/AES'); }\n          });\n        }\n      }\n      if (wifiItem.RSN_IE) {\n        security.push('WPA2');\n        if (wifiItem.RSN_IE.IE_KEY_RSN_UCIPHERS) {\n          wifiItem.RSN_IE.IE_KEY_RSN_UCIPHERS.forEach(function (ciphers) {\n            if (ciphers === 0 && wpaFlags.indexOf('unknown/TKIP') === -1) { wpaFlags.push('unknown/TKIP'); }\n            if (ciphers === 2 && wpaFlags.indexOf('TKIP/TKIP') === -1) { wpaFlags.push('TKIP/TKIP'); }\n            if (ciphers === 4 && wpaFlags.indexOf('PSK/AES') === -1) { wpaFlags.push('PSK/AES'); }\n          });\n        }\n      }\n      result.push({\n        ssid: wifiItem.SSID_STR,\n        bssid: wifiItem.BSSID,\n        mode: '',\n        channel: wifiItem.CHANNEL,\n        frequency: wifiFrequencyFromChannel(wifiItem.CHANNEL),\n        signalLevel: signalLevel ? parseInt(signalLevel, 10) : null,\n        quality: wifiQualityFromDB(signalLevel),\n        security,\n        wpaFlags,\n        rsnFlags: []\n      });\n    });\n  }\n  return result;\n}\nfunction wifiNetworks(callback) {\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      let result = [];\n      if (_linux) {\n        result = getWifiNetworkListNmi();\n        if (result.length === 0) {\n          try {\n            const iwconfigParts = execSync('export LC_ALL=C; iwconfig 2>/dev/null; unset LC_ALL').toString().split('\\n\\n');\n            let iface = '';\n            for (let i = 0; i < iwconfigParts.length; i++) {\n              if (iwconfigParts[i].indexOf('no wireless') === -1 && iwconfigParts[i].trim() !== '') {\n                iface = iwconfigParts[i].split(' ')[0];\n              }\n            }\n            if (iface) {\n              const res = getWifiNetworkListIw(iface);\n              if (res === -1) {\n                // try again after 4 secs\n                setTimeout(function (iface) {\n                  const res = getWifiNetworkListIw(iface);\n                  if (res != -1) { result = res; }\n                  if (callback) {\n                    callback(result);\n                  }\n                  resolve(result);\n                }, 4000);\n              } else {\n                result = res;\n                if (callback) {\n                  callback(result);\n                }\n                resolve(result);\n              }\n            } else {\n              if (callback) {\n                callback(result);\n              }\n              resolve(result);\n            }\n          } catch (e) {\n            if (callback) {\n              callback(result);\n            }\n            resolve(result);\n          }\n        } else {\n          if (callback) {\n            callback(result);\n          }\n          resolve(result);\n        }\n      } else if (_darwin) {\n        let cmd = '/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -s -x';\n        exec(cmd, { maxBuffer: 1024 * 40000 }, function (error, stdout) {\n          const output = stdout.toString();\n          result = parseWifiDarwin(util.plistParser(output));\n          if (callback) {\n            callback(result);\n          }\n          resolve(result);\n        });\n      } else if (_windows) {\n        let cmd = 'netsh wlan show networks mode=Bssid';\n        util.powerShell(cmd).then((stdout) => {\n          const ssidParts = stdout.toString('utf8').split(os.EOL + os.EOL + 'SSID ');\n          ssidParts.shift();\n\n          ssidParts.forEach(ssidPart => {\n            const ssidLines = ssidPart.split(os.EOL);\n            if (ssidLines && ssidLines.length >= 8 && ssidLines[0].indexOf(':') >= 0) {\n              const bssidsParts = ssidPart.split(' BSSID');\n              bssidsParts.shift();\n\n              bssidsParts.forEach((bssidPart) => {\n                const bssidLines = bssidPart.split(os.EOL);\n                const bssidLine = bssidLines[0].split(':');\n                bssidLine.shift();\n                const bssid = bssidLine.join(':').trim().toLowerCase();\n                const channel = bssidLines[3].split(':').pop().trim();\n                const quality = bssidLines[1].split(':').pop().trim();\n\n                result.push({\n                  ssid: ssidLines[0].split(':').pop().trim(),\n                  bssid,\n                  mode: '',\n                  channel: channel ? parseInt(channel, 10) : null,\n                  frequency: wifiFrequencyFromChannel(channel),\n                  signalLevel: wifiDBFromQuality(quality),\n                  quality: quality ? parseInt(quality, 10) : null,\n                  security: [ssidLines[2].split(':').pop().trim()],\n                  wpaFlags: [ssidLines[3].split(':').pop().trim()],\n                  rsnFlags: []\n                });\n              });\n            }\n          });\n\n          if (callback) {\n            callback(result);\n          }\n          resolve(result);\n        });\n      } else {\n        if (callback) {\n          callback(result);\n        }\n        resolve(result);\n      }\n    });\n  });\n}\n\nexports.wifiNetworks = wifiNetworks;\n\nfunction getVendor(model) {\n  model = model.toLowerCase();\n  let result = '';\n  if (model.indexOf('intel') >= 0) { result = 'Intel'; }\n  else if (model.indexOf('realtek') >= 0) { result = 'Realtek'; }\n  else if (model.indexOf('qualcom') >= 0) { result = 'Qualcom'; }\n  else if (model.indexOf('broadcom') >= 0) { result = 'Broadcom'; }\n  else if (model.indexOf('cavium') >= 0) { result = 'Cavium'; }\n  else if (model.indexOf('cisco') >= 0) { result = 'Cisco'; }\n  else if (model.indexOf('marvel') >= 0) { result = 'Marvel'; }\n  else if (model.indexOf('zyxel') >= 0) { result = 'Zyxel'; }\n  else if (model.indexOf('melanox') >= 0) { result = 'Melanox'; }\n  else if (model.indexOf('d-link') >= 0) { result = 'D-Link'; }\n  else if (model.indexOf('tp-link') >= 0) { result = 'TP-Link'; }\n  else if (model.indexOf('asus') >= 0) { result = 'Asus'; }\n  else if (model.indexOf('linksys') >= 0) { result = 'Linksys'; }\n  return result;\n}\n\nfunction wifiConnections(callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      const result = [];\n\n      if (_linux) {\n        const ifaces = ifaceListLinux();\n        const networkList = getWifiNetworkListNmi();\n        ifaces.forEach(ifaceDetail => {\n          const nmiDetails = nmiDeviceLinux(ifaceDetail.iface);\n          const wpaDetails = wpaConnectionLinux(ifaceDetail.iface);\n          const ssid = nmiDetails.ssid || wpaDetails.ssid;\n          const network = networkList.filter(nw => nw.ssid === ssid);\n          const nmiConnection = nmiConnectionLinux(ssid);\n          const channel = network && network.length && network[0].channel ? network[0].channel : (wpaDetails.channel ? wpaDetails.channel : null);\n          const bssid = network && network.length && network[0].bssid ? network[0].bssid : (wpaDetails.bssid ? wpaDetails.bssid : null);\n          if (ssid && bssid) {\n            result.push({\n              id: ifaceDetail.id,\n              iface: ifaceDetail.iface,\n              model: nmiDetails.product,\n              ssid,\n              bssid: network && network.length && network[0].bssid ? network[0].bssid : (wpaDetails.bssid ? wpaDetails.bssid : null),\n              channel,\n              frequency: channel ? wifiFrequencyFromChannel(channel) : null,\n              type: nmiConnection.type ? nmiConnection.type : '802.11',\n              security: nmiConnection.security ? nmiConnection.security : (wpaDetails.security ? wpaDetails.security : null),\n              signalLevel: network && network.length && network[0].signalLevel ? network[0].signalLevel : null,\n              txRate: null\n            });\n          }\n        });\n        if (callback) {\n          callback(result);\n        }\n        resolve(result);\n      } else if (_darwin) {\n        let cmd = 'system_profiler SPNetworkDataType';\n        exec(cmd, function (error, stdout) {\n          const parts1 = stdout.toString().split('\\n\\n    Wi-Fi:\\n\\n');\n          if (parts1.length > 1) {\n            const lines = parts1[1].split('\\n\\n')[0].split('\\n');\n            const iface = util.getValue(lines, 'BSD Device Name', ':', true);\n            const model = util.getValue(lines, 'hardware', ':', true);\n            cmd = '/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I';\n            exec(cmd, function (error, stdout) {\n              const lines2 = stdout.toString().split('\\n');\n              if (lines.length > 10) {\n                const ssid = util.getValue(lines2, 'ssid', ':', true);\n                const bssid = util.getValue(lines2, 'bssid', ':', true);\n                const security = util.getValue(lines2, 'link auth', ':', true);\n                const txRate = util.getValue(lines2, 'lastTxRate', ':', true);\n                const channel = util.getValue(lines2, 'channel', ':', true).split(',')[0];\n                const type = '802.11';\n                const rssi = util.toInt(util.getValue(lines2, 'agrCtlRSSI', ':', true));\n                const noise = util.toInt(util.getValue(lines2, 'agrCtlNoise', ':', true));\n                const signalLevel = rssi - noise;\n                // const signal = wifiQualityFromDB(signalLevel);\n                if (ssid || bssid) {\n                  result.push({\n                    id: 'Wi-Fi',\n                    iface,\n                    model,\n                    ssid,\n                    bssid,\n                    channel: util.toInt(channel),\n                    frequency: channel ? wifiFrequencyFromChannel(channel) : null,\n                    type,\n                    security,\n                    signalLevel,\n                    txRate\n                  });\n\n                }\n              }\n              if (callback) {\n                callback(result);\n              }\n              resolve(result);\n            });\n          }\n        });\n      } else if (_windows) {\n        let cmd = 'netsh wlan show interfaces';\n        util.powerShell(cmd).then(function (stdout) {\n          const allLines = stdout.toString().split('\\r\\n');\n          for (let i = 0; i < allLines.length; i++) {\n            allLines[i] = allLines[i].trim();\n          }\n          const parts = allLines.join('\\r\\n').split(':\\r\\n\\r\\n');\n          parts.shift();\n          parts.forEach(part => {\n            const lines = part.split('\\r\\n');\n            if (lines.length >= 5) {\n              const iface = lines[0].indexOf(':') >= 0 ? lines[0].split(':')[1].trim() : '';\n              const model = lines[1].indexOf(':') >= 0 ? lines[1].split(':')[1].trim() : '';\n              const id = lines[2].indexOf(':') >= 0 ? lines[2].split(':')[1].trim() : '';\n              const ssid = util.getValue(lines, 'SSID', ':', true);\n              const bssid = util.getValue(lines, 'BSSID', ':', true);\n              const signalLevel = util.getValue(lines, 'Signal', ':', true);\n              const type = util.getValue(lines, 'Radio type', ':', true) || util.getValue(lines, 'Type de radio', ':', true) || util.getValue(lines, 'Funktyp', ':', true) || null;\n              const security = util.getValue(lines, 'authentication', ':', true) || util.getValue(lines, 'Authentification', ':', true) || util.getValue(lines, 'Authentifizierung', ':', true) || null;\n              const channel = util.getValue(lines, 'Channel', ':', true) || util.getValue(lines, 'Canal', ':', true) || util.getValue(lines, 'Kanal', ':', true) || null;\n              const txRate = util.getValue(lines, 'Transmit rate (mbps)', ':', true) || util.getValue(lines, 'Transmission (mbit/s)', ':', true) || util.getValue(lines, 'Empfangsrate (MBit/s)', ':', true) || null;\n              if (model && id && ssid && bssid) {\n                result.push({\n                  id,\n                  iface,\n                  model,\n                  ssid,\n                  bssid,\n                  channel: util.toInt(channel),\n                  frequency: channel ? wifiFrequencyFromChannel(channel) : null,\n                  type,\n                  security,\n                  signalLevel,\n                  txRate: util.toInt(txRate) || null\n                });\n              }\n            }\n          });\n          if (callback) {\n            callback(result);\n          }\n          resolve(result);\n        });\n      } else {\n        if (callback) {\n          callback(result);\n        }\n        resolve(result);\n      }\n    });\n  });\n}\n\nexports.wifiConnections = wifiConnections;\n\nfunction wifiInterfaces(callback) {\n\n  return new Promise((resolve) => {\n    process.nextTick(() => {\n      const result = [];\n\n      if (_linux) {\n        const ifaces = ifaceListLinux();\n        ifaces.forEach(ifaceDetail => {\n          const nmiDetails = nmiDeviceLinux(ifaceDetail.iface);\n          result.push({\n            id: ifaceDetail.id,\n            iface: ifaceDetail.iface,\n            model: nmiDetails.product ? nmiDetails.product : null,\n            vendor: nmiDetails.vendor ? nmiDetails.vendor : null,\n            mac: ifaceDetail.mac,\n          });\n        });\n        if (callback) {\n          callback(result);\n        }\n        resolve(result);\n      } else if (_darwin) {\n        let cmd = 'system_profiler SPNetworkDataType';\n        exec(cmd, function (error, stdout) {\n          const parts1 = stdout.toString().split('\\n\\n    Wi-Fi:\\n\\n');\n          if (parts1.length > 1) {\n            const lines = parts1[1].split('\\n\\n')[0].split('\\n');\n            const iface = util.getValue(lines, 'BSD Device Name', ':', true);\n            const mac = util.getValue(lines, 'MAC Address', ':', true);\n            const model = util.getValue(lines, 'hardware', ':', true);\n            result.push({\n              id: 'Wi-Fi',\n              iface,\n              model,\n              vendor: '',\n              mac\n            });\n          }\n          if (callback) {\n            callback(result);\n          }\n          resolve(result);\n        });\n      } else if (_windows) {\n        let cmd = 'netsh wlan show interfaces';\n        util.powerShell(cmd).then(function (stdout) {\n          const allLines = stdout.toString().split('\\r\\n');\n          for (let i = 0; i < allLines.length; i++) {\n            allLines[i] = allLines[i].trim();\n          }\n          const parts = allLines.join('\\r\\n').split(':\\r\\n\\r\\n');\n          parts.shift();\n          parts.forEach(part => {\n            const lines = part.split('\\r\\n');\n            if (lines.length >= 5) {\n              const iface = lines[0].indexOf(':') >= 0 ? lines[0].split(':')[1].trim() : '';\n              const model = lines[1].indexOf(':') >= 0 ? lines[1].split(':')[1].trim() : '';\n              const id = lines[2].indexOf(':') >= 0 ? lines[2].split(':')[1].trim() : '';\n              const macParts = lines[3].indexOf(':') >= 0 ? lines[3].split(':') : [];\n              macParts.shift();\n              const mac = macParts.join(':').trim();\n              const vendor = getVendor(model);\n              if (iface && model && id && mac) {\n                result.push({\n                  id,\n                  iface,\n                  model,\n                  vendor,\n                  mac,\n                });\n              }\n            }\n          });\n          if (callback) {\n            callback(result);\n          }\n          resolve(result);\n        });\n      } else {\n        if (callback) {\n          callback(result);\n        }\n        resolve(result);\n      }\n    });\n  });\n}\n\nexports.wifiInterfaces = wifiInterfaces;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/systeminformation/lib/wifi.js?")},"./node_modules/toidentifier/index.js":
/*!********************************************!*\
  !*** ./node_modules/toidentifier/index.js ***!
  \********************************************/module=>{eval("/*!\n * toidentifier\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = toIdentifier\n\n/**\n * Trasform the given string into a JavaScript identifier\n *\n * @param {string} str\n * @returns {string}\n * @public\n */\n\nfunction toIdentifier (str) {\n  return str\n    .split(' ')\n    .map(function (token) {\n      return token.slice(0, 1).toUpperCase() + token.slice(1)\n    })\n    .join('')\n    .replace(/[^ _0-9a-z]/gi, '')\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/toidentifier/index.js?")},"./node_modules/tr46/index.js":
/*!************************************!*\
  !*** ./node_modules/tr46/index.js ***!
  \************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nvar punycode = __webpack_require__(/*! punycode */ "punycode");\nvar mappingTable = __webpack_require__(/*! ./lib/mappingTable.json */ "./node_modules/tr46/lib/mappingTable.json");\n\nvar PROCESSING_OPTIONS = {\n  TRANSITIONAL: 0,\n  NONTRANSITIONAL: 1\n};\n\nfunction normalize(str) { // fix bug in v8\n  return str.split(\'\\u0000\').map(function (s) { return s.normalize(\'NFC\'); }).join(\'\\u0000\');\n}\n\nfunction findStatus(val) {\n  var start = 0;\n  var end = mappingTable.length - 1;\n\n  while (start <= end) {\n    var mid = Math.floor((start + end) / 2);\n\n    var target = mappingTable[mid];\n    if (target[0][0] <= val && target[0][1] >= val) {\n      return target;\n    } else if (target[0][0] > val) {\n      end = mid - 1;\n    } else {\n      start = mid + 1;\n    }\n  }\n\n  return null;\n}\n\nvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction countSymbols(string) {\n  return string\n    // replace every surrogate pair with a BMP symbol\n    .replace(regexAstralSymbols, \'_\')\n    // then get the length\n    .length;\n}\n\nfunction mapChars(domain_name, useSTD3, processing_option) {\n  var hasError = false;\n  var processed = "";\n\n  var len = countSymbols(domain_name);\n  for (var i = 0; i < len; ++i) {\n    var codePoint = domain_name.codePointAt(i);\n    var status = findStatus(codePoint);\n\n    switch (status[1]) {\n      case "disallowed":\n        hasError = true;\n        processed += String.fromCodePoint(codePoint);\n        break;\n      case "ignored":\n        break;\n      case "mapped":\n        processed += String.fromCodePoint.apply(String, status[2]);\n        break;\n      case "deviation":\n        if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {\n          processed += String.fromCodePoint.apply(String, status[2]);\n        } else {\n          processed += String.fromCodePoint(codePoint);\n        }\n        break;\n      case "valid":\n        processed += String.fromCodePoint(codePoint);\n        break;\n      case "disallowed_STD3_mapped":\n        if (useSTD3) {\n          hasError = true;\n          processed += String.fromCodePoint(codePoint);\n        } else {\n          processed += String.fromCodePoint.apply(String, status[2]);\n        }\n        break;\n      case "disallowed_STD3_valid":\n        if (useSTD3) {\n          hasError = true;\n        }\n\n        processed += String.fromCodePoint(codePoint);\n        break;\n    }\n  }\n\n  return {\n    string: processed,\n    error: hasError\n  };\n}\n\nvar combiningMarksRegex = /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFC-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2D]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD804[\\uDC00-\\uDC02\\uDC38-\\uDC46\\uDC7F-\\uDC82\\uDCB0-\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD34\\uDD73\\uDD80-\\uDD82\\uDDB3-\\uDDC0\\uDE2C-\\uDE37\\uDEDF-\\uDEEA\\uDF01-\\uDF03\\uDF3C\\uDF3E-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDCB0-\\uDCC3\\uDDAF-\\uDDB5\\uDDB8-\\uDDC0\\uDE30-\\uDE40\\uDEAB-\\uDEB7]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF51-\\uDF7E\\uDF8F-\\uDF92]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD83A[\\uDCD0-\\uDCD6]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nfunction validateLabel(label, processing_option) {\n  if (label.substr(0, 4) === "xn--") {\n    label = punycode.toUnicode(label);\n    processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;\n  }\n\n  var error = false;\n\n  if (normalize(label) !== label ||\n      (label[3] === "-" && label[4] === "-") ||\n      label[0] === "-" || label[label.length - 1] === "-" ||\n      label.indexOf(".") !== -1 ||\n      label.search(combiningMarksRegex) === 0) {\n    error = true;\n  }\n\n  var len = countSymbols(label);\n  for (var i = 0; i < len; ++i) {\n    var status = findStatus(label.codePointAt(i));\n    if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== "valid") ||\n        (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&\n         status[1] !== "valid" && status[1] !== "deviation")) {\n      error = true;\n      break;\n    }\n  }\n\n  return {\n    label: label,\n    error: error\n  };\n}\n\nfunction processing(domain_name, useSTD3, processing_option) {\n  var result = mapChars(domain_name, useSTD3, processing_option);\n  result.string = normalize(result.string);\n\n  var labels = result.string.split(".");\n  for (var i = 0; i < labels.length; ++i) {\n    try {\n      var validation = validateLabel(labels[i]);\n      labels[i] = validation.label;\n      result.error = result.error || validation.error;\n    } catch(e) {\n      result.error = true;\n    }\n  }\n\n  return {\n    string: labels.join("."),\n    error: result.error\n  };\n}\n\nmodule.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {\n  var result = processing(domain_name, useSTD3, processing_option);\n  var labels = result.string.split(".");\n  labels = labels.map(function(l) {\n    try {\n      return punycode.toASCII(l);\n    } catch(e) {\n      result.error = true;\n      return l;\n    }\n  });\n\n  if (verifyDnsLength) {\n    var total = labels.slice(0, labels.length - 1).join(".").length;\n    if (total.length > 253 || total.length === 0) {\n      result.error = true;\n    }\n\n    for (var i=0; i < labels.length; ++i) {\n      if (labels.length > 63 || labels.length === 0) {\n        result.error = true;\n        break;\n      }\n    }\n  }\n\n  if (result.error) return null;\n  return labels.join(".");\n};\n\nmodule.exports.toUnicode = function(domain_name, useSTD3) {\n  var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);\n\n  return {\n    domain: result.string,\n    error: result.error\n  };\n};\n\nmodule.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/tr46/index.js?')},"./node_modules/ts-mixer/dist/cjs/decorator.js":
/*!*****************************************************!*\
  !*** ./node_modules/ts-mixer/dist/cjs/decorator.js ***!
  \*****************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.decorate = exports.getDecoratorsForClass = exports.directDecoratorSearch = exports.deepDecoratorSearch = void 0;\nconst util_1 = __webpack_require__(/*! ./util */ \"./node_modules/ts-mixer/dist/cjs/util.js\");\nconst mixin_tracking_1 = __webpack_require__(/*! ./mixin-tracking */ \"./node_modules/ts-mixer/dist/cjs/mixin-tracking.js\");\nconst mergeObjectsOfDecorators = (o1, o2) => {\n    var _a, _b;\n    const allKeys = util_1.unique([...Object.getOwnPropertyNames(o1), ...Object.getOwnPropertyNames(o2)]);\n    const mergedObject = {};\n    for (let key of allKeys)\n        mergedObject[key] = util_1.unique([...((_a = o1 === null || o1 === void 0 ? void 0 : o1[key]) !== null && _a !== void 0 ? _a : []), ...((_b = o2 === null || o2 === void 0 ? void 0 : o2[key]) !== null && _b !== void 0 ? _b : [])]);\n    return mergedObject;\n};\nconst mergePropertyAndMethodDecorators = (d1, d2) => {\n    var _a, _b, _c, _d;\n    return ({\n        property: mergeObjectsOfDecorators((_a = d1 === null || d1 === void 0 ? void 0 : d1.property) !== null && _a !== void 0 ? _a : {}, (_b = d2 === null || d2 === void 0 ? void 0 : d2.property) !== null && _b !== void 0 ? _b : {}),\n        method: mergeObjectsOfDecorators((_c = d1 === null || d1 === void 0 ? void 0 : d1.method) !== null && _c !== void 0 ? _c : {}, (_d = d2 === null || d2 === void 0 ? void 0 : d2.method) !== null && _d !== void 0 ? _d : {}),\n    });\n};\nconst mergeDecorators = (d1, d2) => {\n    var _a, _b, _c, _d, _e, _f;\n    return ({\n        class: util_1.unique([...(_a = d1 === null || d1 === void 0 ? void 0 : d1.class) !== null && _a !== void 0 ? _a : [], ...(_b = d2 === null || d2 === void 0 ? void 0 : d2.class) !== null && _b !== void 0 ? _b : []]),\n        static: mergePropertyAndMethodDecorators((_c = d1 === null || d1 === void 0 ? void 0 : d1.static) !== null && _c !== void 0 ? _c : {}, (_d = d2 === null || d2 === void 0 ? void 0 : d2.static) !== null && _d !== void 0 ? _d : {}),\n        instance: mergePropertyAndMethodDecorators((_e = d1 === null || d1 === void 0 ? void 0 : d1.instance) !== null && _e !== void 0 ? _e : {}, (_f = d2 === null || d2 === void 0 ? void 0 : d2.instance) !== null && _f !== void 0 ? _f : {}),\n    });\n};\nconst decorators = new Map();\nconst findAllConstituentClasses = (...classes) => {\n    var _a;\n    const allClasses = new Set();\n    const frontier = new Set([...classes]);\n    while (frontier.size > 0) {\n        for (let clazz of frontier) {\n            const protoChainClasses = util_1.protoChain(clazz.prototype).map(proto => proto.constructor);\n            const mixinClasses = (_a = mixin_tracking_1.getMixinsForClass(clazz)) !== null && _a !== void 0 ? _a : [];\n            const potentiallyNewClasses = [...protoChainClasses, ...mixinClasses];\n            const newClasses = potentiallyNewClasses.filter(c => !allClasses.has(c));\n            for (let newClass of newClasses)\n                frontier.add(newClass);\n            allClasses.add(clazz);\n            frontier.delete(clazz);\n        }\n    }\n    return [...allClasses];\n};\nconst deepDecoratorSearch = (...classes) => {\n    const decoratorsForClassChain = findAllConstituentClasses(...classes)\n        .map(clazz => decorators.get(clazz))\n        .filter(decorators => !!decorators);\n    if (decoratorsForClassChain.length == 0)\n        return {};\n    if (decoratorsForClassChain.length == 1)\n        return decoratorsForClassChain[0];\n    return decoratorsForClassChain.reduce((d1, d2) => mergeDecorators(d1, d2));\n};\nexports.deepDecoratorSearch = deepDecoratorSearch;\nconst directDecoratorSearch = (...classes) => {\n    const classDecorators = classes.map(clazz => exports.getDecoratorsForClass(clazz));\n    if (classDecorators.length === 0)\n        return {};\n    if (classDecorators.length === 1)\n        return classDecorators[0];\n    return classDecorators.reduce((d1, d2) => mergeDecorators(d1, d2));\n};\nexports.directDecoratorSearch = directDecoratorSearch;\nconst getDecoratorsForClass = (clazz) => {\n    let decoratorsForClass = decorators.get(clazz);\n    if (!decoratorsForClass) {\n        decoratorsForClass = {};\n        decorators.set(clazz, decoratorsForClass);\n    }\n    return decoratorsForClass;\n};\nexports.getDecoratorsForClass = getDecoratorsForClass;\nconst decorateClass = (decorator) => ((clazz) => {\n    const decoratorsForClass = exports.getDecoratorsForClass(clazz);\n    let classDecorators = decoratorsForClass.class;\n    if (!classDecorators) {\n        classDecorators = [];\n        decoratorsForClass.class = classDecorators;\n    }\n    classDecorators.push(decorator);\n    return decorator(clazz);\n});\nconst decorateMember = (decorator) => ((object, key, ...otherArgs) => {\n    const decoratorTargetType = typeof object === 'function' ? 'static' : 'instance';\n    const decoratorType = typeof object[key] === 'function' ? 'method' : 'property';\n    const clazz = decoratorTargetType === 'static' ? object : object.constructor;\n    const decoratorsForClass = exports.getDecoratorsForClass(clazz);\n    let decoratorsForTargetType = decoratorsForClass === null || decoratorsForClass === void 0 ? void 0 : decoratorsForClass[decoratorTargetType];\n    if (!decoratorsForTargetType) {\n        decoratorsForTargetType = {};\n        decoratorsForClass[decoratorTargetType] = decoratorsForTargetType;\n    }\n    let decoratorsForType = decoratorsForTargetType === null || decoratorsForTargetType === void 0 ? void 0 : decoratorsForTargetType[decoratorType];\n    if (!decoratorsForType) {\n        decoratorsForType = {};\n        decoratorsForTargetType[decoratorType] = decoratorsForType;\n    }\n    let decoratorsForKey = decoratorsForType === null || decoratorsForType === void 0 ? void 0 : decoratorsForType[key];\n    if (!decoratorsForKey) {\n        decoratorsForKey = [];\n        decoratorsForType[key] = decoratorsForKey;\n    }\n    decoratorsForKey.push(decorator);\n    // @ts-ignore\n    return decorator(object, key, ...otherArgs);\n});\nconst decorate = (decorator) => ((...args) => {\n    if (args.length === 1)\n        return decorateClass(decorator)(args[0]);\n    return decorateMember(decorator)(...args);\n});\nexports.decorate = decorate;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ts-mixer/dist/cjs/decorator.js?")},"./node_modules/ts-mixer/dist/cjs/index.js":
/*!*************************************************!*\
  !*** ./node_modules/ts-mixer/dist/cjs/index.js ***!
  \*************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.hasMixin = exports.decorate = exports.settings = exports.mix = exports.Mixin = void 0;\nvar mixins_1 = __webpack_require__(/*! ./mixins */ "./node_modules/ts-mixer/dist/cjs/mixins.js");\nObject.defineProperty(exports, "Mixin", ({ enumerable: true, get: function () { return mixins_1.Mixin; } }));\nObject.defineProperty(exports, "mix", ({ enumerable: true, get: function () { return mixins_1.mix; } }));\nvar settings_1 = __webpack_require__(/*! ./settings */ "./node_modules/ts-mixer/dist/cjs/settings.js");\nObject.defineProperty(exports, "settings", ({ enumerable: true, get: function () { return settings_1.settings; } }));\nvar decorator_1 = __webpack_require__(/*! ./decorator */ "./node_modules/ts-mixer/dist/cjs/decorator.js");\nObject.defineProperty(exports, "decorate", ({ enumerable: true, get: function () { return decorator_1.decorate; } }));\nvar mixin_tracking_1 = __webpack_require__(/*! ./mixin-tracking */ "./node_modules/ts-mixer/dist/cjs/mixin-tracking.js");\nObject.defineProperty(exports, "hasMixin", ({ enumerable: true, get: function () { return mixin_tracking_1.hasMixin; } }));\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ts-mixer/dist/cjs/index.js?')},"./node_modules/ts-mixer/dist/cjs/mixin-tracking.js":
/*!**********************************************************!*\
  !*** ./node_modules/ts-mixer/dist/cjs/mixin-tracking.js ***!
  \**********************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.hasMixin = exports.registerMixins = exports.getMixinsForClass = void 0;\nconst util_1 = __webpack_require__(/*! ./util */ "./node_modules/ts-mixer/dist/cjs/util.js");\n// Keeps track of constituent classes for every mixin class created by ts-mixer.\nconst mixins = new Map();\nconst getMixinsForClass = (clazz) => mixins.get(clazz);\nexports.getMixinsForClass = getMixinsForClass;\nconst registerMixins = (mixedClass, constituents) => mixins.set(mixedClass, constituents);\nexports.registerMixins = registerMixins;\nconst hasMixin = (instance, mixin) => {\n    if (instance instanceof mixin)\n        return true;\n    const constructor = instance.constructor;\n    const visited = new Set();\n    let frontier = new Set();\n    frontier.add(constructor);\n    while (frontier.size > 0) {\n        // check if the frontier has the mixin we\'re looking for.  if not, we can say we visited every item in the frontier\n        if (frontier.has(mixin))\n            return true;\n        frontier.forEach(item => visited.add(item));\n        // build a new frontier based on the associated mixin classes and prototype chains of each frontier item\n        const newFrontier = new Set();\n        frontier.forEach(item => {\n            var _a;\n            const itemConstituents = (_a = mixins.get(item)) !== null && _a !== void 0 ? _a : util_1.protoChain(item.prototype).map(proto => proto.constructor).filter(item => item !== null);\n            if (itemConstituents)\n                itemConstituents.forEach(constituent => {\n                    if (!visited.has(constituent) && !frontier.has(constituent))\n                        newFrontier.add(constituent);\n                });\n        });\n        // we have a new frontier, now search again\n        frontier = newFrontier;\n    }\n    // if we get here, we couldn\'t find the mixin anywhere in the prototype chain or associated mixin classes\n    return false;\n};\nexports.hasMixin = hasMixin;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ts-mixer/dist/cjs/mixin-tracking.js?')},"./node_modules/ts-mixer/dist/cjs/mixins.js":
/*!**************************************************!*\
  !*** ./node_modules/ts-mixer/dist/cjs/mixins.js ***!
  \**************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.mix = exports.Mixin = void 0;\nconst proxy_1 = __webpack_require__(/*! ./proxy */ \"./node_modules/ts-mixer/dist/cjs/proxy.js\");\nconst settings_1 = __webpack_require__(/*! ./settings */ \"./node_modules/ts-mixer/dist/cjs/settings.js\");\nconst util_1 = __webpack_require__(/*! ./util */ \"./node_modules/ts-mixer/dist/cjs/util.js\");\nconst decorator_1 = __webpack_require__(/*! ./decorator */ \"./node_modules/ts-mixer/dist/cjs/decorator.js\");\nconst mixin_tracking_1 = __webpack_require__(/*! ./mixin-tracking */ \"./node_modules/ts-mixer/dist/cjs/mixin-tracking.js\");\nfunction Mixin(...constructors) {\n    var _a, _b, _c;\n    const prototypes = constructors.map(constructor => constructor.prototype);\n    // Here we gather up the init functions of the ingredient prototypes, combine them into one init function, and\n    // attach it to the mixed class prototype.  The reason we do this is because we want the init functions to mix\n    // similarly to constructors -- not methods, which simply override each other.\n    const initFunctionName = settings_1.settings.initFunction;\n    if (initFunctionName !== null) {\n        const initFunctions = prototypes\n            .map(proto => proto[initFunctionName])\n            .filter(func => typeof func === 'function');\n        const combinedInitFunction = function (...args) {\n            for (let initFunction of initFunctions)\n                initFunction.apply(this, args);\n        };\n        const extraProto = { [initFunctionName]: combinedInitFunction };\n        prototypes.push(extraProto);\n    }\n    function MixedClass(...args) {\n        for (const constructor of constructors)\n            // @ts-ignore: potentially abstract class\n            util_1.copyProps(this, new constructor(...args));\n        if (initFunctionName !== null && typeof this[initFunctionName] === 'function')\n            this[initFunctionName].apply(this, args);\n    }\n    MixedClass.prototype = settings_1.settings.prototypeStrategy === 'copy'\n        ? util_1.hardMixProtos(prototypes, MixedClass)\n        : proxy_1.softMixProtos(prototypes, MixedClass);\n    Object.setPrototypeOf(MixedClass, settings_1.settings.staticsStrategy === 'copy'\n        ? util_1.hardMixProtos(constructors, null, ['prototype'])\n        : proxy_1.proxyMix(constructors, Function.prototype));\n    let DecoratedMixedClass = MixedClass;\n    if (settings_1.settings.decoratorInheritance !== 'none') {\n        const classDecorators = settings_1.settings.decoratorInheritance === 'deep'\n            ? decorator_1.deepDecoratorSearch(...constructors)\n            : decorator_1.directDecoratorSearch(...constructors);\n        for (let decorator of (_a = classDecorators === null || classDecorators === void 0 ? void 0 : classDecorators.class) !== null && _a !== void 0 ? _a : [])\n            DecoratedMixedClass = decorator(DecoratedMixedClass);\n        applyPropAndMethodDecorators((_b = classDecorators === null || classDecorators === void 0 ? void 0 : classDecorators.static) !== null && _b !== void 0 ? _b : {}, DecoratedMixedClass);\n        applyPropAndMethodDecorators((_c = classDecorators === null || classDecorators === void 0 ? void 0 : classDecorators.instance) !== null && _c !== void 0 ? _c : {}, DecoratedMixedClass.prototype);\n    }\n    mixin_tracking_1.registerMixins(DecoratedMixedClass, constructors);\n    return DecoratedMixedClass;\n}\nexports.Mixin = Mixin;\nconst applyPropAndMethodDecorators = (propAndMethodDecorators, target) => {\n    const propDecorators = propAndMethodDecorators.property;\n    const methodDecorators = propAndMethodDecorators.method;\n    if (propDecorators)\n        for (let key in propDecorators)\n            for (let decorator of propDecorators[key])\n                decorator(target, key);\n    if (methodDecorators)\n        for (let key in methodDecorators)\n            for (let decorator of methodDecorators[key])\n                decorator(target, key, Object.getOwnPropertyDescriptor(target, key));\n};\n/**\n * A decorator version of the `Mixin` function.  You'll want to use this instead of `Mixin` for mixing generic classes.\n */\nconst mix = (...ingredients) => decoratedClass => {\n    // @ts-ignore\n    const mixedClass = Mixin(...ingredients.concat([decoratedClass]));\n    Object.defineProperty(mixedClass, 'name', {\n        value: decoratedClass.name,\n        writable: false,\n    });\n    return mixedClass;\n};\nexports.mix = mix;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ts-mixer/dist/cjs/mixins.js?")},"./node_modules/ts-mixer/dist/cjs/proxy.js":
/*!*************************************************!*\
  !*** ./node_modules/ts-mixer/dist/cjs/proxy.js ***!
  \*************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.softMixProtos = exports.proxyMix = exports.getIngredientWithProp = void 0;\nconst util_1 = __webpack_require__(/*! ./util */ \"./node_modules/ts-mixer/dist/cjs/util.js\");\n/**\n * Finds the ingredient with the given prop, searching in reverse order and breadth-first if searching ingredient\n * prototypes is required.\n */\nconst getIngredientWithProp = (prop, ingredients) => {\n    const protoChains = ingredients.map(ingredient => util_1.protoChain(ingredient));\n    // since we search breadth-first, we need to keep track of our depth in the prototype chains\n    let protoDepth = 0;\n    // not all prototype chains are the same depth, so this remains true as long as at least one of the ingredients'\n    // prototype chains has an object at this depth\n    let protosAreLeftToSearch = true;\n    while (protosAreLeftToSearch) {\n        // with the start of each horizontal slice, we assume this is the one that's deeper than any of the proto chains\n        protosAreLeftToSearch = false;\n        // scan through the ingredients right to left\n        for (let i = ingredients.length - 1; i >= 0; i--) {\n            const searchTarget = protoChains[i][protoDepth];\n            if (searchTarget !== undefined && searchTarget !== null) {\n                // if we find something, this is proof that this horizontal slice potentially more objects to search\n                protosAreLeftToSearch = true;\n                // eureka, we found it\n                if (Object.getOwnPropertyDescriptor(searchTarget, prop) != undefined) {\n                    return protoChains[i][0];\n                }\n            }\n        }\n        protoDepth++;\n    }\n    return undefined;\n};\nexports.getIngredientWithProp = getIngredientWithProp;\n/**\n * \"Mixes\" ingredients by wrapping them in a Proxy.  The optional prototype argument allows the mixed object to sit\n * downstream of an existing prototype chain.  Note that \"properties\" cannot be added, deleted, or modified.\n */\nconst proxyMix = (ingredients, prototype = Object.prototype) => new Proxy({}, {\n    getPrototypeOf() {\n        return prototype;\n    },\n    setPrototypeOf() {\n        throw Error('Cannot set prototype of Proxies created by ts-mixer');\n    },\n    getOwnPropertyDescriptor(_, prop) {\n        return Object.getOwnPropertyDescriptor(exports.getIngredientWithProp(prop, ingredients) || {}, prop);\n    },\n    defineProperty() {\n        throw new Error('Cannot define new properties on Proxies created by ts-mixer');\n    },\n    has(_, prop) {\n        return exports.getIngredientWithProp(prop, ingredients) !== undefined || prototype[prop] !== undefined;\n    },\n    get(_, prop) {\n        return (exports.getIngredientWithProp(prop, ingredients) || prototype)[prop];\n    },\n    set(_, prop, val) {\n        const ingredientWithProp = exports.getIngredientWithProp(prop, ingredients);\n        if (ingredientWithProp === undefined)\n            throw new Error('Cannot set new properties on Proxies created by ts-mixer');\n        ingredientWithProp[prop] = val;\n        return true;\n    },\n    deleteProperty() {\n        throw new Error('Cannot delete properties on Proxies created by ts-mixer');\n    },\n    ownKeys() {\n        return ingredients\n            .map(Object.getOwnPropertyNames)\n            .reduce((prev, curr) => curr.concat(prev.filter(key => curr.indexOf(key) < 0)));\n    },\n});\nexports.proxyMix = proxyMix;\n/**\n * Creates a new proxy-prototype object that is a \"soft\" mixture of the given prototypes.  The mixing is achieved by\n * proxying all property access to the ingredients.  This is not ES5 compatible and less performant.  However, any\n * changes made to the source prototypes will be reflected in the proxy-prototype, which may be desirable.\n */\nconst softMixProtos = (ingredients, constructor) => exports.proxyMix([...ingredients, { constructor }]);\nexports.softMixProtos = softMixProtos;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ts-mixer/dist/cjs/proxy.js?")},"./node_modules/ts-mixer/dist/cjs/settings.js":
/*!****************************************************!*\
  !*** ./node_modules/ts-mixer/dist/cjs/settings.js ***!
  \****************************************************/(__unused_webpack_module,exports)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.settings = void 0;\nexports.settings = {\n    initFunction: null,\n    staticsStrategy: 'copy',\n    prototypeStrategy: 'copy',\n    decoratorInheritance: 'deep',\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ts-mixer/dist/cjs/settings.js?")},"./node_modules/ts-mixer/dist/cjs/util.js":
/*!************************************************!*\
  !*** ./node_modules/ts-mixer/dist/cjs/util.js ***!
  \************************************************/(__unused_webpack_module,exports)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.flatten = exports.unique = exports.hardMixProtos = exports.nearestCommonProto = exports.protoChain = exports.copyProps = void 0;\n/**\n * Utility function that works like `Object.apply`, but copies getters and setters properly as well.  Additionally gives\n * the option to exclude properties by name.\n */\nconst copyProps = (dest, src, exclude = []) => {\n    const props = Object.getOwnPropertyDescriptors(src);\n    for (let prop of exclude)\n        delete props[prop];\n    Object.defineProperties(dest, props);\n};\nexports.copyProps = copyProps;\n/**\n * Returns the full chain of prototypes up until Object.prototype given a starting object.  The order of prototypes will\n * be closest to farthest in the chain.\n */\nconst protoChain = (obj, currentChain = [obj]) => {\n    const proto = Object.getPrototypeOf(obj);\n    if (proto === null)\n        return currentChain;\n    return exports.protoChain(proto, [...currentChain, proto]);\n};\nexports.protoChain = protoChain;\n/**\n * Identifies the nearest ancestor common to all the given objects in their prototype chains.  For most unrelated\n * objects, this function should return Object.prototype.\n */\nconst nearestCommonProto = (...objs) => {\n    if (objs.length === 0)\n        return undefined;\n    let commonProto = undefined;\n    const protoChains = objs.map(obj => exports.protoChain(obj));\n    while (protoChains.every(protoChain => protoChain.length > 0)) {\n        const protos = protoChains.map(protoChain => protoChain.pop());\n        const potentialCommonProto = protos[0];\n        if (protos.every(proto => proto === potentialCommonProto))\n            commonProto = potentialCommonProto;\n        else\n            break;\n    }\n    return commonProto;\n};\nexports.nearestCommonProto = nearestCommonProto;\n/**\n * Creates a new prototype object that is a mixture of the given prototypes.  The mixing is achieved by first\n * identifying the nearest common ancestor and using it as the prototype for a new object.  Then all properties/methods\n * downstream of this prototype (ONLY downstream) are copied into the new object.\n *\n * The resulting prototype is more performant than softMixProtos(...), as well as ES5 compatible.  However, it's not as\n * flexible as updates to the source prototypes aren't captured by the mixed result.  See softMixProtos for why you may\n * want to use that instead.\n */\nconst hardMixProtos = (ingredients, constructor, exclude = []) => {\n    var _a;\n    const base = (_a = exports.nearestCommonProto(...ingredients)) !== null && _a !== void 0 ? _a : Object.prototype;\n    const mixedProto = Object.create(base);\n    // Keeps track of prototypes we've already visited to avoid copying the same properties multiple times.  We init the\n    // list with the proto chain below the nearest common ancestor because we don't want any of those methods mixed in\n    // when they will already be accessible via prototype access.\n    const visitedProtos = exports.protoChain(base);\n    for (let prototype of ingredients) {\n        let protos = exports.protoChain(prototype);\n        // Apply the prototype chain in reverse order so that old methods don't override newer ones.\n        for (let i = protos.length - 1; i >= 0; i--) {\n            let newProto = protos[i];\n            if (visitedProtos.indexOf(newProto) === -1) {\n                exports.copyProps(mixedProto, newProto, ['constructor', ...exclude]);\n                visitedProtos.push(newProto);\n            }\n        }\n    }\n    mixedProto.constructor = constructor;\n    return mixedProto;\n};\nexports.hardMixProtos = hardMixProtos;\nconst unique = (arr) => arr.filter((e, i) => arr.indexOf(e) == i);\nexports.unique = unique;\nconst flatten = (arr) => arr.length === 0\n    ? []\n    : arr.length === 1\n        ? arr[0]\n        : arr.reduce((a1, a2) => [...a1, ...a2]);\nexports.flatten = flatten;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ts-mixer/dist/cjs/util.js?")},"./node_modules/tsscmp/lib/index.js":
/*!******************************************!*\
  !*** ./node_modules/tsscmp/lib/index.js ***!
  \******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\r\n\r\n// Implements Brad Hill's Double HMAC pattern from\r\n// https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2011/february/double-hmac-verification/.\r\n// The approach is similar to the node's native implementation of timing safe buffer comparison that will be available on v6+.\r\n// https://github.com/nodejs/node/issues/3043\r\n// https://github.com/nodejs/node/pull/3073\r\n\r\nvar crypto = __webpack_require__(/*! crypto */ \"crypto\");\r\n\r\nfunction bufferEqual(a, b) {\r\n  if (a.length !== b.length) {\r\n    return false;\r\n  }\r\n  // `crypto.timingSafeEqual` was introduced in Node v6.6.0\r\n  // <https://github.com/jshttp/basic-auth/issues/39>\r\n  if (crypto.timingSafeEqual) {\r\n    return crypto.timingSafeEqual(a, b);\r\n  }\r\n  for (var i = 0; i < a.length; i++) {\r\n    if (a[i] !== b[i]) {\r\n      return false;\r\n    }\r\n  }\r\n  return true;\r\n}\r\n\r\nfunction timeSafeCompare(a, b) {\r\n  var sa = String(a);\r\n  var sb = String(b);\r\n  var key = crypto.pseudoRandomBytes(32);\r\n  var ah = crypto.createHmac('sha256', key).update(sa).digest();\r\n  var bh = crypto.createHmac('sha256', key).update(sb).digest();\r\n\r\n  return bufferEqual(ah, bh) && a === b;\r\n}\r\n\r\nmodule.exports = timeSafeCompare;\r\n\n\n//# sourceURL=webpack://txadmin/./node_modules/tsscmp/lib/index.js?")},"./node_modules/type-is/index.js":
/*!***************************************!*\
  !*** ./node_modules/type-is/index.js ***!
  \***************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("/*!\n * type-is\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar typer = __webpack_require__(/*! media-typer */ \"./node_modules/media-typer/index.js\")\nvar mime = __webpack_require__(/*! mime-types */ \"./node_modules/mime-types/index.js\")\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = typeofrequest\nmodule.exports.is = typeis\nmodule.exports.hasBody = hasbody\nmodule.exports.normalize = normalize\nmodule.exports.match = mimeMatch\n\n/**\n * Compare a `value` content-type with `types`.\n * Each `type` can be an extension like `html`,\n * a special shortcut like `multipart` or `urlencoded`,\n * or a mime type.\n *\n * If no types match, `false` is returned.\n * Otherwise, the first `type` that matches is returned.\n *\n * @param {String} value\n * @param {Array} types\n * @public\n */\n\nfunction typeis (value, types_) {\n  var i\n  var types = types_\n\n  // remove parameters and normalize\n  var val = tryNormalizeType(value)\n\n  // no type or invalid\n  if (!val) {\n    return false\n  }\n\n  // support flattened arguments\n  if (types && !Array.isArray(types)) {\n    types = new Array(arguments.length - 1)\n    for (i = 0; i < types.length; i++) {\n      types[i] = arguments[i + 1]\n    }\n  }\n\n  // no types, return the content type\n  if (!types || !types.length) {\n    return val\n  }\n\n  var type\n  for (i = 0; i < types.length; i++) {\n    if (mimeMatch(normalize(type = types[i]), val)) {\n      return type[0] === '+' || type.indexOf('*') !== -1\n        ? val\n        : type\n    }\n  }\n\n  // no matches\n  return false\n}\n\n/**\n * Check if a request has a request body.\n * A request with a body __must__ either have `transfer-encoding`\n * or `content-length` headers set.\n * http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.3\n *\n * @param {Object} request\n * @return {Boolean}\n * @public\n */\n\nfunction hasbody (req) {\n  return req.headers['transfer-encoding'] !== undefined ||\n    !isNaN(req.headers['content-length'])\n}\n\n/**\n * Check if the incoming request contains the \"Content-Type\"\n * header field, and it contains any of the give mime `type`s.\n * If there is no request body, `null` is returned.\n * If there is no content type, `false` is returned.\n * Otherwise, it returns the first `type` that matches.\n *\n * Examples:\n *\n *     // With Content-Type: text/html; charset=utf-8\n *     this.is('html'); // => 'html'\n *     this.is('text/html'); // => 'text/html'\n *     this.is('text/*', 'application/json'); // => 'text/html'\n *\n *     // When Content-Type is application/json\n *     this.is('json', 'urlencoded'); // => 'json'\n *     this.is('application/json'); // => 'application/json'\n *     this.is('html', 'application/*'); // => 'application/json'\n *\n *     this.is('html'); // => false\n *\n * @param {String|Array} types...\n * @return {String|false|null}\n * @public\n */\n\nfunction typeofrequest (req, types_) {\n  var types = types_\n\n  // no body\n  if (!hasbody(req)) {\n    return null\n  }\n\n  // support flattened arguments\n  if (arguments.length > 2) {\n    types = new Array(arguments.length - 1)\n    for (var i = 0; i < types.length; i++) {\n      types[i] = arguments[i + 1]\n    }\n  }\n\n  // request content type\n  var value = req.headers['content-type']\n\n  return typeis(value, types)\n}\n\n/**\n * Normalize a mime type.\n * If it's a shorthand, expand it to a valid mime type.\n *\n * In general, you probably want:\n *\n *   var type = is(req, ['urlencoded', 'json', 'multipart']);\n *\n * Then use the appropriate body parsers.\n * These three are the most common request body types\n * and are thus ensured to work.\n *\n * @param {String} type\n * @private\n */\n\nfunction normalize (type) {\n  if (typeof type !== 'string') {\n    // invalid type\n    return false\n  }\n\n  switch (type) {\n    case 'urlencoded':\n      return 'application/x-www-form-urlencoded'\n    case 'multipart':\n      return 'multipart/*'\n  }\n\n  if (type[0] === '+') {\n    // \"+json\" -> \"*/*+json\" expando\n    return '*/*' + type\n  }\n\n  return type.indexOf('/') === -1\n    ? mime.lookup(type)\n    : type\n}\n\n/**\n * Check if `expected` mime type\n * matches `actual` mime type with\n * wildcard and +suffix support.\n *\n * @param {String} expected\n * @param {String} actual\n * @return {Boolean}\n * @private\n */\n\nfunction mimeMatch (expected, actual) {\n  // invalid type\n  if (expected === false) {\n    return false\n  }\n\n  // split types\n  var actualParts = actual.split('/')\n  var expectedParts = expected.split('/')\n\n  // invalid format\n  if (actualParts.length !== 2 || expectedParts.length !== 2) {\n    return false\n  }\n\n  // validate type\n  if (expectedParts[0] !== '*' && expectedParts[0] !== actualParts[0]) {\n    return false\n  }\n\n  // validate suffix wildcard\n  if (expectedParts[1].substr(0, 2) === '*+') {\n    return expectedParts[1].length <= actualParts[1].length + 1 &&\n      expectedParts[1].substr(1) === actualParts[1].substr(1 - expectedParts[1].length)\n  }\n\n  // validate subtype\n  if (expectedParts[1] !== '*' && expectedParts[1] !== actualParts[1]) {\n    return false\n  }\n\n  return true\n}\n\n/**\n * Normalize a type and remove parameters.\n *\n * @param {string} value\n * @return {string}\n * @private\n */\n\nfunction normalizeType (value) {\n  // parse the type\n  var type = typer.parse(value)\n\n  // remove the parameters\n  type.parameters = undefined\n\n  // reformat it\n  return typer.format(type)\n}\n\n/**\n * Try to normalize a type and remove parameters.\n *\n * @param {string} value\n * @return {string}\n * @private\n */\n\nfunction tryNormalizeType (value) {\n  if (!value) {\n    return null\n  }\n\n  try {\n    return normalizeType(value)\n  } catch (err) {\n    return null\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/type-is/index.js?")},"./node_modules/universalify/index.js":
/*!********************************************!*\
  !*** ./node_modules/universalify/index.js ***!
  \********************************************/(__unused_webpack_module,exports)=>{"use strict";eval("\n\nexports.fromCallback = function (fn) {\n  return Object.defineProperty(function (...args) {\n    if (typeof args[args.length - 1] === 'function') fn.apply(this, args)\n    else {\n      return new Promise((resolve, reject) => {\n        fn.call(\n          this,\n          ...args,\n          (err, res) => (err != null) ? reject(err) : resolve(res)\n        )\n      })\n    }\n  }, 'name', { value: fn.name })\n}\n\nexports.fromPromise = function (fn) {\n  return Object.defineProperty(function (...args) {\n    const cb = args[args.length - 1]\n    if (typeof cb !== 'function') return fn.apply(this, args)\n    else fn.apply(this, args.slice(0, -1)).then(r => cb(null, r), cb)\n  }, 'name', { value: fn.name })\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/universalify/index.js?")},"./node_modules/unpipe/index.js":
/*!**************************************!*\
  !*** ./node_modules/unpipe/index.js ***!
  \**************************************/module=>{"use strict";eval("/*!\n * unpipe\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = unpipe\n\n/**\n * Determine if there are Node.js pipe-like data listeners.\n * @private\n */\n\nfunction hasPipeDataListeners(stream) {\n  var listeners = stream.listeners('data')\n\n  for (var i = 0; i < listeners.length; i++) {\n    if (listeners[i].name === 'ondata') {\n      return true\n    }\n  }\n\n  return false\n}\n\n/**\n * Unpipe a stream from all destinations.\n *\n * @param {object} stream\n * @public\n */\n\nfunction unpipe(stream) {\n  if (!stream) {\n    throw new TypeError('argument stream is required')\n  }\n\n  if (typeof stream.unpipe === 'function') {\n    // new-style\n    stream.unpipe()\n    return\n  }\n\n  // Node.js 0.8 hack\n  if (!hasPipeDataListeners(stream)) {\n    return\n  }\n\n  var listener\n  var listeners = stream.listeners('close')\n\n  for (var i = 0; i < listeners.length; i++) {\n    listener = listeners[i]\n\n    if (listener.name !== 'cleanup' && listener.name !== 'onclose') {\n      continue\n    }\n\n    // invoke the listener\n    listener.call(stream)\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/unpipe/index.js?")},"./node_modules/uuid/lib/bytesToUuid.js":
/*!**********************************************!*\
  !*** ./node_modules/uuid/lib/bytesToUuid.js ***!
  \**********************************************/module=>{eval("/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n  byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n  var i = offset || 0;\n  var bth = byteToHex;\n  // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n  return ([\n    bth[buf[i++]], bth[buf[i++]],\n    bth[buf[i++]], bth[buf[i++]], '-',\n    bth[buf[i++]], bth[buf[i++]], '-',\n    bth[buf[i++]], bth[buf[i++]], '-',\n    bth[buf[i++]], bth[buf[i++]], '-',\n    bth[buf[i++]], bth[buf[i++]],\n    bth[buf[i++]], bth[buf[i++]],\n    bth[buf[i++]], bth[buf[i++]]\n  ]).join('');\n}\n\nmodule.exports = bytesToUuid;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/uuid/lib/bytesToUuid.js?")},"./node_modules/uuid/lib/rng.js":
/*!**************************************!*\
  !*** ./node_modules/uuid/lib/rng.js ***!
  \**************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('// Unique ID creation requires a high quality random # generator.  In node.js\n// this is pretty straight-forward - we use the crypto API.\n\nvar crypto = __webpack_require__(/*! crypto */ "crypto");\n\nmodule.exports = function nodeRNG() {\n  return crypto.randomBytes(16);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/uuid/lib/rng.js?')},"./node_modules/uuid/v4.js":
/*!*********************************!*\
  !*** ./node_modules/uuid/v4.js ***!
  \*********************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("var rng = __webpack_require__(/*! ./lib/rng */ \"./node_modules/uuid/lib/rng.js\");\nvar bytesToUuid = __webpack_require__(/*! ./lib/bytesToUuid */ \"./node_modules/uuid/lib/bytesToUuid.js\");\n\nfunction v4(options, buf, offset) {\n  var i = buf && offset || 0;\n\n  if (typeof(options) == 'string') {\n    buf = options === 'binary' ? new Array(16) : null;\n    options = null;\n  }\n  options = options || {};\n\n  var rnds = options.random || (options.rng || rng)();\n\n  // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n  rnds[6] = (rnds[6] & 0x0f) | 0x40;\n  rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n  // Copy bytes to buffer, if provided\n  if (buf) {\n    for (var ii = 0; ii < 16; ++ii) {\n      buf[i + ii] = rnds[ii];\n    }\n  }\n\n  return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/uuid/v4.js?")},"./node_modules/vary/index.js":
/*!************************************!*\
  !*** ./node_modules/vary/index.js ***!
  \************************************/module=>{"use strict";eval("/*!\n * vary\n * Copyright(c) 2014-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\n/**\n * Module exports.\n */\n\nmodule.exports = vary\nmodule.exports.append = append\n\n/**\n * RegExp to match field-name in RFC 7230 sec 3.2\n *\n * field-name    = token\n * token         = 1*tchar\n * tchar         = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\"\n *               / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n *               / DIGIT / ALPHA\n *               ; any VCHAR, except delimiters\n */\n\nvar FIELD_NAME_REGEXP = /^[!#$%&'*+\\-.^_`|~0-9A-Za-z]+$/\n\n/**\n * Append a field to a vary header.\n *\n * @param {String} header\n * @param {String|Array} field\n * @return {String}\n * @public\n */\n\nfunction append (header, field) {\n  if (typeof header !== 'string') {\n    throw new TypeError('header argument is required')\n  }\n\n  if (!field) {\n    throw new TypeError('field argument is required')\n  }\n\n  // get fields array\n  var fields = !Array.isArray(field)\n    ? parse(String(field))\n    : field\n\n  // assert on invalid field names\n  for (var j = 0; j < fields.length; j++) {\n    if (!FIELD_NAME_REGEXP.test(fields[j])) {\n      throw new TypeError('field argument contains an invalid header name')\n    }\n  }\n\n  // existing, unspecified vary\n  if (header === '*') {\n    return header\n  }\n\n  // enumerate current values\n  var val = header\n  var vals = parse(header.toLowerCase())\n\n  // unspecified vary\n  if (fields.indexOf('*') !== -1 || vals.indexOf('*') !== -1) {\n    return '*'\n  }\n\n  for (var i = 0; i < fields.length; i++) {\n    var fld = fields[i].toLowerCase()\n\n    // append value (case-preserving)\n    if (vals.indexOf(fld) === -1) {\n      vals.push(fld)\n      val = val\n        ? val + ', ' + fields[i]\n        : fields[i]\n    }\n  }\n\n  return val\n}\n\n/**\n * Parse a vary header into an array.\n *\n * @param {String} header\n * @return {Array}\n * @private\n */\n\nfunction parse (header) {\n  var end = 0\n  var list = []\n  var start = 0\n\n  // gather tokens\n  for (var i = 0, len = header.length; i < len; i++) {\n    switch (header.charCodeAt(i)) {\n      case 0x20: /*   */\n        if (start === end) {\n          start = end = i + 1\n        }\n        break\n      case 0x2c: /* , */\n        list.push(header.substring(start, end))\n        start = end = i + 1\n        break\n      default:\n        end = i + 1\n        break\n    }\n  }\n\n  // final token\n  list.push(header.substring(start, end))\n\n  return list\n}\n\n/**\n * Mark that a request is varied on a header field.\n *\n * @param {Object} res\n * @param {String|Array} field\n * @public\n */\n\nfunction vary (res, field) {\n  if (!res || !res.getHeader || !res.setHeader) {\n    // quack quack\n    throw new TypeError('res argument is required')\n  }\n\n  // get existing header\n  var val = res.getHeader('Vary') || ''\n  var header = Array.isArray(val)\n    ? val.join(', ')\n    : String(val)\n\n  // set new header\n  if ((val = append(header, field))) {\n    res.setHeader('Vary', val)\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/vary/index.js?")},"./node_modules/warning/warning.js":
/*!*****************************************!*\
  !*** ./node_modules/warning/warning.js ***!
  \*****************************************/module=>{"use strict";eval("/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = \"development\" !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n  var printWarning = function printWarning(format, args) {\n    var len = arguments.length;\n    args = new Array(len > 1 ? len - 1 : 0);\n    for (var key = 1; key < len; key++) {\n      args[key - 1] = arguments[key];\n    }\n    var argIndex = 0;\n    var message = 'Warning: ' +\n      format.replace(/%s/g, function() {\n        return args[argIndex++];\n      });\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  }\n\n  warning = function(condition, format, args) {\n    var len = arguments.length;\n    args = new Array(len > 2 ? len - 2 : 0);\n    for (var key = 2; key < len; key++) {\n      args[key - 2] = arguments[key];\n    }\n    if (format === undefined) {\n      throw new Error(\n          '`warning(condition, format, ...args)` requires a warning ' +\n          'message argument'\n      );\n    }\n    if (!condition) {\n      printWarning.apply(null, [format].concat(args));\n    }\n  };\n}\n\nmodule.exports = warning;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/warning/warning.js?")},"./node_modules/webidl-conversions/lib/index.js":
/*!******************************************************!*\
  !*** ./node_modules/webidl-conversions/lib/index.js ***!
  \******************************************************/module=>{"use strict";eval('\n\nvar conversions = {};\nmodule.exports = conversions;\n\nfunction sign(x) {\n    return x < 0 ? -1 : 1;\n}\n\nfunction evenRound(x) {\n    // Round x to the nearest integer, choosing the even integer if it lies halfway between two.\n    if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)\n        return Math.floor(x);\n    } else {\n        return Math.round(x);\n    }\n}\n\nfunction createNumberConversion(bitLength, typeOpts) {\n    if (!typeOpts.unsigned) {\n        --bitLength;\n    }\n    const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);\n    const upperBound = Math.pow(2, bitLength) - 1;\n\n    const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);\n    const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);\n\n    return function(V, opts) {\n        if (!opts) opts = {};\n\n        let x = +V;\n\n        if (opts.enforceRange) {\n            if (!Number.isFinite(x)) {\n                throw new TypeError("Argument is not a finite number");\n            }\n\n            x = sign(x) * Math.floor(Math.abs(x));\n            if (x < lowerBound || x > upperBound) {\n                throw new TypeError("Argument is not in byte range");\n            }\n\n            return x;\n        }\n\n        if (!isNaN(x) && opts.clamp) {\n            x = evenRound(x);\n\n            if (x < lowerBound) x = lowerBound;\n            if (x > upperBound) x = upperBound;\n            return x;\n        }\n\n        if (!Number.isFinite(x) || x === 0) {\n            return 0;\n        }\n\n        x = sign(x) * Math.floor(Math.abs(x));\n        x = x % moduloVal;\n\n        if (!typeOpts.unsigned && x >= moduloBound) {\n            return x - moduloVal;\n        } else if (typeOpts.unsigned) {\n            if (x < 0) {\n              x += moduloVal;\n            } else if (x === -0) { // don\'t return negative zero\n              return 0;\n            }\n        }\n\n        return x;\n    }\n}\n\nconversions["void"] = function () {\n    return undefined;\n};\n\nconversions["boolean"] = function (val) {\n    return !!val;\n};\n\nconversions["byte"] = createNumberConversion(8, { unsigned: false });\nconversions["octet"] = createNumberConversion(8, { unsigned: true });\n\nconversions["short"] = createNumberConversion(16, { unsigned: false });\nconversions["unsigned short"] = createNumberConversion(16, { unsigned: true });\n\nconversions["long"] = createNumberConversion(32, { unsigned: false });\nconversions["unsigned long"] = createNumberConversion(32, { unsigned: true });\n\nconversions["long long"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });\nconversions["unsigned long long"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });\n\nconversions["double"] = function (V) {\n    const x = +V;\n\n    if (!Number.isFinite(x)) {\n        throw new TypeError("Argument is not a finite floating-point value");\n    }\n\n    return x;\n};\n\nconversions["unrestricted double"] = function (V) {\n    const x = +V;\n\n    if (isNaN(x)) {\n        throw new TypeError("Argument is NaN");\n    }\n\n    return x;\n};\n\n// not quite valid, but good enough for JS\nconversions["float"] = conversions["double"];\nconversions["unrestricted float"] = conversions["unrestricted double"];\n\nconversions["DOMString"] = function (V, opts) {\n    if (!opts) opts = {};\n\n    if (opts.treatNullAsEmptyString && V === null) {\n        return "";\n    }\n\n    return String(V);\n};\n\nconversions["ByteString"] = function (V, opts) {\n    const x = String(V);\n    let c = undefined;\n    for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n        if (c > 255) {\n            throw new TypeError("Argument is not a valid bytestring");\n        }\n    }\n\n    return x;\n};\n\nconversions["USVString"] = function (V) {\n    const S = String(V);\n    const n = S.length;\n    const U = [];\n    for (let i = 0; i < n; ++i) {\n        const c = S.charCodeAt(i);\n        if (c < 0xD800 || c > 0xDFFF) {\n            U.push(String.fromCodePoint(c));\n        } else if (0xDC00 <= c && c <= 0xDFFF) {\n            U.push(String.fromCodePoint(0xFFFD));\n        } else {\n            if (i === n - 1) {\n                U.push(String.fromCodePoint(0xFFFD));\n            } else {\n                const d = S.charCodeAt(i + 1);\n                if (0xDC00 <= d && d <= 0xDFFF) {\n                    const a = c & 0x3FF;\n                    const b = d & 0x3FF;\n                    U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));\n                    ++i;\n                } else {\n                    U.push(String.fromCodePoint(0xFFFD));\n                }\n            }\n        }\n    }\n\n    return U.join(\'\');\n};\n\nconversions["Date"] = function (V, opts) {\n    if (!(V instanceof Date)) {\n        throw new TypeError("Argument is not a Date object");\n    }\n    if (isNaN(V)) {\n        return undefined;\n    }\n\n    return V;\n};\n\nconversions["RegExp"] = function (V, opts) {\n    if (!(V instanceof RegExp)) {\n        V = new RegExp(V);\n    }\n\n    return V;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/webidl-conversions/lib/index.js?')},"./node_modules/whatwg-url/lib/URL-impl.js":
/*!*************************************************!*\
  !*** ./node_modules/whatwg-url/lib/URL-impl.js ***!
  \*************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nconst usm = __webpack_require__(/*! ./url-state-machine */ "./node_modules/whatwg-url/lib/url-state-machine.js");\n\nexports.implementation = class URLImpl {\n  constructor(constructorArgs) {\n    const url = constructorArgs[0];\n    const base = constructorArgs[1];\n\n    let parsedBase = null;\n    if (base !== undefined) {\n      parsedBase = usm.basicURLParse(base);\n      if (parsedBase === "failure") {\n        throw new TypeError("Invalid base URL");\n      }\n    }\n\n    const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n    if (parsedURL === "failure") {\n      throw new TypeError("Invalid URL");\n    }\n\n    this._url = parsedURL;\n\n    // TODO: query stuff\n  }\n\n  get href() {\n    return usm.serializeURL(this._url);\n  }\n\n  set href(v) {\n    const parsedURL = usm.basicURLParse(v);\n    if (parsedURL === "failure") {\n      throw new TypeError("Invalid URL");\n    }\n\n    this._url = parsedURL;\n  }\n\n  get origin() {\n    return usm.serializeURLOrigin(this._url);\n  }\n\n  get protocol() {\n    return this._url.scheme + ":";\n  }\n\n  set protocol(v) {\n    usm.basicURLParse(v + ":", { url: this._url, stateOverride: "scheme start" });\n  }\n\n  get username() {\n    return this._url.username;\n  }\n\n  set username(v) {\n    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n      return;\n    }\n\n    usm.setTheUsername(this._url, v);\n  }\n\n  get password() {\n    return this._url.password;\n  }\n\n  set password(v) {\n    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n      return;\n    }\n\n    usm.setThePassword(this._url, v);\n  }\n\n  get host() {\n    const url = this._url;\n\n    if (url.host === null) {\n      return "";\n    }\n\n    if (url.port === null) {\n      return usm.serializeHost(url.host);\n    }\n\n    return usm.serializeHost(url.host) + ":" + usm.serializeInteger(url.port);\n  }\n\n  set host(v) {\n    if (this._url.cannotBeABaseURL) {\n      return;\n    }\n\n    usm.basicURLParse(v, { url: this._url, stateOverride: "host" });\n  }\n\n  get hostname() {\n    if (this._url.host === null) {\n      return "";\n    }\n\n    return usm.serializeHost(this._url.host);\n  }\n\n  set hostname(v) {\n    if (this._url.cannotBeABaseURL) {\n      return;\n    }\n\n    usm.basicURLParse(v, { url: this._url, stateOverride: "hostname" });\n  }\n\n  get port() {\n    if (this._url.port === null) {\n      return "";\n    }\n\n    return usm.serializeInteger(this._url.port);\n  }\n\n  set port(v) {\n    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n      return;\n    }\n\n    if (v === "") {\n      this._url.port = null;\n    } else {\n      usm.basicURLParse(v, { url: this._url, stateOverride: "port" });\n    }\n  }\n\n  get pathname() {\n    if (this._url.cannotBeABaseURL) {\n      return this._url.path[0];\n    }\n\n    if (this._url.path.length === 0) {\n      return "";\n    }\n\n    return "/" + this._url.path.join("/");\n  }\n\n  set pathname(v) {\n    if (this._url.cannotBeABaseURL) {\n      return;\n    }\n\n    this._url.path = [];\n    usm.basicURLParse(v, { url: this._url, stateOverride: "path start" });\n  }\n\n  get search() {\n    if (this._url.query === null || this._url.query === "") {\n      return "";\n    }\n\n    return "?" + this._url.query;\n  }\n\n  set search(v) {\n    // TODO: query stuff\n\n    const url = this._url;\n\n    if (v === "") {\n      url.query = null;\n      return;\n    }\n\n    const input = v[0] === "?" ? v.substring(1) : v;\n    url.query = "";\n    usm.basicURLParse(input, { url, stateOverride: "query" });\n  }\n\n  get hash() {\n    if (this._url.fragment === null || this._url.fragment === "") {\n      return "";\n    }\n\n    return "#" + this._url.fragment;\n  }\n\n  set hash(v) {\n    if (v === "") {\n      this._url.fragment = null;\n      return;\n    }\n\n    const input = v[0] === "#" ? v.substring(1) : v;\n    this._url.fragment = "";\n    usm.basicURLParse(input, { url: this._url, stateOverride: "fragment" });\n  }\n\n  toJSON() {\n    return this.href;\n  }\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/whatwg-url/lib/URL-impl.js?')},"./node_modules/whatwg-url/lib/URL.js":
/*!********************************************!*\
  !*** ./node_modules/whatwg-url/lib/URL.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst conversions = __webpack_require__(/*! webidl-conversions */ "./node_modules/webidl-conversions/lib/index.js");\nconst utils = __webpack_require__(/*! ./utils.js */ "./node_modules/whatwg-url/lib/utils.js");\nconst Impl = __webpack_require__(/*! .//URL-impl.js */ "./node_modules/whatwg-url/lib/URL-impl.js");\n\nconst impl = utils.implSymbol;\n\nfunction URL(url) {\n  if (!this || this[impl] || !(this instanceof URL)) {\n    throw new TypeError("Failed to construct \'URL\': Please use the \'new\' operator, this DOM object constructor cannot be called as a function.");\n  }\n  if (arguments.length < 1) {\n    throw new TypeError("Failed to construct \'URL\': 1 argument required, but only " + arguments.length + " present.");\n  }\n  const args = [];\n  for (let i = 0; i < arguments.length && i < 2; ++i) {\n    args[i] = arguments[i];\n  }\n  args[0] = conversions["USVString"](args[0]);\n  if (args[1] !== undefined) {\n  args[1] = conversions["USVString"](args[1]);\n  }\n\n  module.exports.setup(this, args);\n}\n\nURL.prototype.toJSON = function toJSON() {\n  if (!this || !module.exports.is(this)) {\n    throw new TypeError("Illegal invocation");\n  }\n  const args = [];\n  for (let i = 0; i < arguments.length && i < 0; ++i) {\n    args[i] = arguments[i];\n  }\n  return this[impl].toJSON.apply(this[impl], args);\n};\nObject.defineProperty(URL.prototype, "href", {\n  get() {\n    return this[impl].href;\n  },\n  set(V) {\n    V = conversions["USVString"](V);\n    this[impl].href = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nURL.prototype.toString = function () {\n  if (!this || !module.exports.is(this)) {\n    throw new TypeError("Illegal invocation");\n  }\n  return this.href;\n};\n\nObject.defineProperty(URL.prototype, "origin", {\n  get() {\n    return this[impl].origin;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nObject.defineProperty(URL.prototype, "protocol", {\n  get() {\n    return this[impl].protocol;\n  },\n  set(V) {\n    V = conversions["USVString"](V);\n    this[impl].protocol = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nObject.defineProperty(URL.prototype, "username", {\n  get() {\n    return this[impl].username;\n  },\n  set(V) {\n    V = conversions["USVString"](V);\n    this[impl].username = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nObject.defineProperty(URL.prototype, "password", {\n  get() {\n    return this[impl].password;\n  },\n  set(V) {\n    V = conversions["USVString"](V);\n    this[impl].password = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nObject.defineProperty(URL.prototype, "host", {\n  get() {\n    return this[impl].host;\n  },\n  set(V) {\n    V = conversions["USVString"](V);\n    this[impl].host = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nObject.defineProperty(URL.prototype, "hostname", {\n  get() {\n    return this[impl].hostname;\n  },\n  set(V) {\n    V = conversions["USVString"](V);\n    this[impl].hostname = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nObject.defineProperty(URL.prototype, "port", {\n  get() {\n    return this[impl].port;\n  },\n  set(V) {\n    V = conversions["USVString"](V);\n    this[impl].port = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nObject.defineProperty(URL.prototype, "pathname", {\n  get() {\n    return this[impl].pathname;\n  },\n  set(V) {\n    V = conversions["USVString"](V);\n    this[impl].pathname = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nObject.defineProperty(URL.prototype, "search", {\n  get() {\n    return this[impl].search;\n  },\n  set(V) {\n    V = conversions["USVString"](V);\n    this[impl].search = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nObject.defineProperty(URL.prototype, "hash", {\n  get() {\n    return this[impl].hash;\n  },\n  set(V) {\n    V = conversions["USVString"](V);\n    this[impl].hash = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\n\nmodule.exports = {\n  is(obj) {\n    return !!obj && obj[impl] instanceof Impl.implementation;\n  },\n  create(constructorArgs, privateData) {\n    let obj = Object.create(URL.prototype);\n    this.setup(obj, constructorArgs, privateData);\n    return obj;\n  },\n  setup(obj, constructorArgs, privateData) {\n    if (!privateData) privateData = {};\n    privateData.wrapper = obj;\n\n    obj[impl] = new Impl.implementation(constructorArgs, privateData);\n    obj[impl][utils.wrapperSymbol] = obj;\n  },\n  interface: URL,\n  expose: {\n    Window: { URL: URL },\n    Worker: { URL: URL }\n  }\n};\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/whatwg-url/lib/URL.js?')},"./node_modules/whatwg-url/lib/public-api.js":
/*!***************************************************!*\
  !*** ./node_modules/whatwg-url/lib/public-api.js ***!
  \***************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n\nexports.URL = __webpack_require__(/*! ./URL */ "./node_modules/whatwg-url/lib/URL.js")["interface"];\nexports.serializeURL = __webpack_require__(/*! ./url-state-machine */ "./node_modules/whatwg-url/lib/url-state-machine.js").serializeURL;\nexports.serializeURLOrigin = __webpack_require__(/*! ./url-state-machine */ "./node_modules/whatwg-url/lib/url-state-machine.js").serializeURLOrigin;\nexports.basicURLParse = __webpack_require__(/*! ./url-state-machine */ "./node_modules/whatwg-url/lib/url-state-machine.js").basicURLParse;\nexports.setTheUsername = __webpack_require__(/*! ./url-state-machine */ "./node_modules/whatwg-url/lib/url-state-machine.js").setTheUsername;\nexports.setThePassword = __webpack_require__(/*! ./url-state-machine */ "./node_modules/whatwg-url/lib/url-state-machine.js").setThePassword;\nexports.serializeHost = __webpack_require__(/*! ./url-state-machine */ "./node_modules/whatwg-url/lib/url-state-machine.js").serializeHost;\nexports.serializeInteger = __webpack_require__(/*! ./url-state-machine */ "./node_modules/whatwg-url/lib/url-state-machine.js").serializeInteger;\nexports.parseURL = __webpack_require__(/*! ./url-state-machine */ "./node_modules/whatwg-url/lib/url-state-machine.js").parseURL;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/whatwg-url/lib/public-api.js?')},"./node_modules/whatwg-url/lib/url-state-machine.js":
/*!**********************************************************!*\
  !*** ./node_modules/whatwg-url/lib/url-state-machine.js ***!
  \**********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\r\nconst punycode = __webpack_require__(/*! punycode */ "punycode");\r\nconst tr46 = __webpack_require__(/*! tr46 */ "./node_modules/tr46/index.js");\r\n\r\nconst specialSchemes = {\r\n  ftp: 21,\r\n  file: null,\r\n  gopher: 70,\r\n  http: 80,\r\n  https: 443,\r\n  ws: 80,\r\n  wss: 443\r\n};\r\n\r\nconst failure = Symbol("failure");\r\n\r\nfunction countSymbols(str) {\r\n  return punycode.ucs2.decode(str).length;\r\n}\r\n\r\nfunction at(input, idx) {\r\n  const c = input[idx];\r\n  return isNaN(c) ? undefined : String.fromCodePoint(c);\r\n}\r\n\r\nfunction isASCIIDigit(c) {\r\n  return c >= 0x30 && c <= 0x39;\r\n}\r\n\r\nfunction isASCIIAlpha(c) {\r\n  return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\r\n}\r\n\r\nfunction isASCIIAlphanumeric(c) {\r\n  return isASCIIAlpha(c) || isASCIIDigit(c);\r\n}\r\n\r\nfunction isASCIIHex(c) {\r\n  return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\r\n}\r\n\r\nfunction isSingleDot(buffer) {\r\n  return buffer === "." || buffer.toLowerCase() === "%2e";\r\n}\r\n\r\nfunction isDoubleDot(buffer) {\r\n  buffer = buffer.toLowerCase();\r\n  return buffer === ".." || buffer === "%2e." || buffer === ".%2e" || buffer === "%2e%2e";\r\n}\r\n\r\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\r\n  return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);\r\n}\r\n\r\nfunction isWindowsDriveLetterString(string) {\r\n  return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === ":" || string[1] === "|");\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetterString(string) {\r\n  return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === ":";\r\n}\r\n\r\nfunction containsForbiddenHostCodePoint(string) {\r\n  return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|%|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction containsForbiddenHostCodePointExcludingPercent(string) {\r\n  return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction isSpecialScheme(scheme) {\r\n  return specialSchemes[scheme] !== undefined;\r\n}\r\n\r\nfunction isSpecial(url) {\r\n  return isSpecialScheme(url.scheme);\r\n}\r\n\r\nfunction defaultPort(scheme) {\r\n  return specialSchemes[scheme];\r\n}\r\n\r\nfunction percentEncode(c) {\r\n  let hex = c.toString(16).toUpperCase();\r\n  if (hex.length === 1) {\r\n    hex = "0" + hex;\r\n  }\r\n\r\n  return "%" + hex;\r\n}\r\n\r\nfunction utf8PercentEncode(c) {\r\n  const buf = new Buffer(c);\r\n\r\n  let str = "";\r\n\r\n  for (let i = 0; i < buf.length; ++i) {\r\n    str += percentEncode(buf[i]);\r\n  }\r\n\r\n  return str;\r\n}\r\n\r\nfunction utf8PercentDecode(str) {\r\n  const input = new Buffer(str);\r\n  const output = [];\r\n  for (let i = 0; i < input.length; ++i) {\r\n    if (input[i] !== 37) {\r\n      output.push(input[i]);\r\n    } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {\r\n      output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));\r\n      i += 2;\r\n    } else {\r\n      output.push(input[i]);\r\n    }\r\n  }\r\n  return new Buffer(output).toString();\r\n}\r\n\r\nfunction isC0ControlPercentEncode(c) {\r\n  return c <= 0x1F || c > 0x7E;\r\n}\r\n\r\nconst extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);\r\nfunction isPathPercentEncode(c) {\r\n  return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);\r\n}\r\n\r\nconst extraUserinfoPercentEncodeSet =\r\n  new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);\r\nfunction isUserinfoPercentEncode(c) {\r\n  return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\r\n}\r\n\r\nfunction percentEncodeChar(c, encodeSetPredicate) {\r\n  const cStr = String.fromCodePoint(c);\r\n\r\n  if (encodeSetPredicate(c)) {\r\n    return utf8PercentEncode(cStr);\r\n  }\r\n\r\n  return cStr;\r\n}\r\n\r\nfunction parseIPv4Number(input) {\r\n  let R = 10;\r\n\r\n  if (input.length >= 2 && input.charAt(0) === "0" && input.charAt(1).toLowerCase() === "x") {\r\n    input = input.substring(2);\r\n    R = 16;\r\n  } else if (input.length >= 2 && input.charAt(0) === "0") {\r\n    input = input.substring(1);\r\n    R = 8;\r\n  }\r\n\r\n  if (input === "") {\r\n    return 0;\r\n  }\r\n\r\n  const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);\r\n  if (regex.test(input)) {\r\n    return failure;\r\n  }\r\n\r\n  return parseInt(input, R);\r\n}\r\n\r\nfunction parseIPv4(input) {\r\n  const parts = input.split(".");\r\n  if (parts[parts.length - 1] === "") {\r\n    if (parts.length > 1) {\r\n      parts.pop();\r\n    }\r\n  }\r\n\r\n  if (parts.length > 4) {\r\n    return input;\r\n  }\r\n\r\n  const numbers = [];\r\n  for (const part of parts) {\r\n    if (part === "") {\r\n      return input;\r\n    }\r\n    const n = parseIPv4Number(part);\r\n    if (n === failure) {\r\n      return input;\r\n    }\r\n\r\n    numbers.push(n);\r\n  }\r\n\r\n  for (let i = 0; i < numbers.length - 1; ++i) {\r\n    if (numbers[i] > 255) {\r\n      return failure;\r\n    }\r\n  }\r\n  if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {\r\n    return failure;\r\n  }\r\n\r\n  let ipv4 = numbers.pop();\r\n  let counter = 0;\r\n\r\n  for (const n of numbers) {\r\n    ipv4 += n * Math.pow(256, 3 - counter);\r\n    ++counter;\r\n  }\r\n\r\n  return ipv4;\r\n}\r\n\r\nfunction serializeIPv4(address) {\r\n  let output = "";\r\n  let n = address;\r\n\r\n  for (let i = 1; i <= 4; ++i) {\r\n    output = String(n % 256) + output;\r\n    if (i !== 4) {\r\n      output = "." + output;\r\n    }\r\n    n = Math.floor(n / 256);\r\n  }\r\n\r\n  return output;\r\n}\r\n\r\nfunction parseIPv6(input) {\r\n  const address = [0, 0, 0, 0, 0, 0, 0, 0];\r\n  let pieceIndex = 0;\r\n  let compress = null;\r\n  let pointer = 0;\r\n\r\n  input = punycode.ucs2.decode(input);\r\n\r\n  if (input[pointer] === 58) {\r\n    if (input[pointer + 1] !== 58) {\r\n      return failure;\r\n    }\r\n\r\n    pointer += 2;\r\n    ++pieceIndex;\r\n    compress = pieceIndex;\r\n  }\r\n\r\n  while (pointer < input.length) {\r\n    if (pieceIndex === 8) {\r\n      return failure;\r\n    }\r\n\r\n    if (input[pointer] === 58) {\r\n      if (compress !== null) {\r\n        return failure;\r\n      }\r\n      ++pointer;\r\n      ++pieceIndex;\r\n      compress = pieceIndex;\r\n      continue;\r\n    }\r\n\r\n    let value = 0;\r\n    let length = 0;\r\n\r\n    while (length < 4 && isASCIIHex(input[pointer])) {\r\n      value = value * 0x10 + parseInt(at(input, pointer), 16);\r\n      ++pointer;\r\n      ++length;\r\n    }\r\n\r\n    if (input[pointer] === 46) {\r\n      if (length === 0) {\r\n        return failure;\r\n      }\r\n\r\n      pointer -= length;\r\n\r\n      if (pieceIndex > 6) {\r\n        return failure;\r\n      }\r\n\r\n      let numbersSeen = 0;\r\n\r\n      while (input[pointer] !== undefined) {\r\n        let ipv4Piece = null;\r\n\r\n        if (numbersSeen > 0) {\r\n          if (input[pointer] === 46 && numbersSeen < 4) {\r\n            ++pointer;\r\n          } else {\r\n            return failure;\r\n          }\r\n        }\r\n\r\n        if (!isASCIIDigit(input[pointer])) {\r\n          return failure;\r\n        }\r\n\r\n        while (isASCIIDigit(input[pointer])) {\r\n          const number = parseInt(at(input, pointer));\r\n          if (ipv4Piece === null) {\r\n            ipv4Piece = number;\r\n          } else if (ipv4Piece === 0) {\r\n            return failure;\r\n          } else {\r\n            ipv4Piece = ipv4Piece * 10 + number;\r\n          }\r\n          if (ipv4Piece > 255) {\r\n            return failure;\r\n          }\r\n          ++pointer;\r\n        }\r\n\r\n        address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\r\n\r\n        ++numbersSeen;\r\n\r\n        if (numbersSeen === 2 || numbersSeen === 4) {\r\n          ++pieceIndex;\r\n        }\r\n      }\r\n\r\n      if (numbersSeen !== 4) {\r\n        return failure;\r\n      }\r\n\r\n      break;\r\n    } else if (input[pointer] === 58) {\r\n      ++pointer;\r\n      if (input[pointer] === undefined) {\r\n        return failure;\r\n      }\r\n    } else if (input[pointer] !== undefined) {\r\n      return failure;\r\n    }\r\n\r\n    address[pieceIndex] = value;\r\n    ++pieceIndex;\r\n  }\r\n\r\n  if (compress !== null) {\r\n    let swaps = pieceIndex - compress;\r\n    pieceIndex = 7;\r\n    while (pieceIndex !== 0 && swaps > 0) {\r\n      const temp = address[compress + swaps - 1];\r\n      address[compress + swaps - 1] = address[pieceIndex];\r\n      address[pieceIndex] = temp;\r\n      --pieceIndex;\r\n      --swaps;\r\n    }\r\n  } else if (compress === null && pieceIndex !== 8) {\r\n    return failure;\r\n  }\r\n\r\n  return address;\r\n}\r\n\r\nfunction serializeIPv6(address) {\r\n  let output = "";\r\n  const seqResult = findLongestZeroSequence(address);\r\n  const compress = seqResult.idx;\r\n  let ignore0 = false;\r\n\r\n  for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\r\n    if (ignore0 && address[pieceIndex] === 0) {\r\n      continue;\r\n    } else if (ignore0) {\r\n      ignore0 = false;\r\n    }\r\n\r\n    if (compress === pieceIndex) {\r\n      const separator = pieceIndex === 0 ? "::" : ":";\r\n      output += separator;\r\n      ignore0 = true;\r\n      continue;\r\n    }\r\n\r\n    output += address[pieceIndex].toString(16);\r\n\r\n    if (pieceIndex !== 7) {\r\n      output += ":";\r\n    }\r\n  }\r\n\r\n  return output;\r\n}\r\n\r\nfunction parseHost(input, isSpecialArg) {\r\n  if (input[0] === "[") {\r\n    if (input[input.length - 1] !== "]") {\r\n      return failure;\r\n    }\r\n\r\n    return parseIPv6(input.substring(1, input.length - 1));\r\n  }\r\n\r\n  if (!isSpecialArg) {\r\n    return parseOpaqueHost(input);\r\n  }\r\n\r\n  const domain = utf8PercentDecode(input);\r\n  const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);\r\n  if (asciiDomain === null) {\r\n    return failure;\r\n  }\r\n\r\n  if (containsForbiddenHostCodePoint(asciiDomain)) {\r\n    return failure;\r\n  }\r\n\r\n  const ipv4Host = parseIPv4(asciiDomain);\r\n  if (typeof ipv4Host === "number" || ipv4Host === failure) {\r\n    return ipv4Host;\r\n  }\r\n\r\n  return asciiDomain;\r\n}\r\n\r\nfunction parseOpaqueHost(input) {\r\n  if (containsForbiddenHostCodePointExcludingPercent(input)) {\r\n    return failure;\r\n  }\r\n\r\n  let output = "";\r\n  const decoded = punycode.ucs2.decode(input);\r\n  for (let i = 0; i < decoded.length; ++i) {\r\n    output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);\r\n  }\r\n  return output;\r\n}\r\n\r\nfunction findLongestZeroSequence(arr) {\r\n  let maxIdx = null;\r\n  let maxLen = 1; // only find elements > 1\r\n  let currStart = null;\r\n  let currLen = 0;\r\n\r\n  for (let i = 0; i < arr.length; ++i) {\r\n    if (arr[i] !== 0) {\r\n      if (currLen > maxLen) {\r\n        maxIdx = currStart;\r\n        maxLen = currLen;\r\n      }\r\n\r\n      currStart = null;\r\n      currLen = 0;\r\n    } else {\r\n      if (currStart === null) {\r\n        currStart = i;\r\n      }\r\n      ++currLen;\r\n    }\r\n  }\r\n\r\n  // if trailing zeros\r\n  if (currLen > maxLen) {\r\n    maxIdx = currStart;\r\n    maxLen = currLen;\r\n  }\r\n\r\n  return {\r\n    idx: maxIdx,\r\n    len: maxLen\r\n  };\r\n}\r\n\r\nfunction serializeHost(host) {\r\n  if (typeof host === "number") {\r\n    return serializeIPv4(host);\r\n  }\r\n\r\n  // IPv6 serializer\r\n  if (host instanceof Array) {\r\n    return "[" + serializeIPv6(host) + "]";\r\n  }\r\n\r\n  return host;\r\n}\r\n\r\nfunction trimControlChars(url) {\r\n  return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/g, "");\r\n}\r\n\r\nfunction trimTabAndNewline(url) {\r\n  return url.replace(/\\u0009|\\u000A|\\u000D/g, "");\r\n}\r\n\r\nfunction shortenPath(url) {\r\n  const path = url.path;\r\n  if (path.length === 0) {\r\n    return;\r\n  }\r\n  if (url.scheme === "file" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\r\n    return;\r\n  }\r\n\r\n  path.pop();\r\n}\r\n\r\nfunction includesCredentials(url) {\r\n  return url.username !== "" || url.password !== "";\r\n}\r\n\r\nfunction cannotHaveAUsernamePasswordPort(url) {\r\n  return url.host === null || url.host === "" || url.cannotBeABaseURL || url.scheme === "file";\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetter(string) {\r\n  return /^[A-Za-z]:$/.test(string);\r\n}\r\n\r\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\r\n  this.pointer = 0;\r\n  this.input = input;\r\n  this.base = base || null;\r\n  this.encodingOverride = encodingOverride || "utf-8";\r\n  this.stateOverride = stateOverride;\r\n  this.url = url;\r\n  this.failure = false;\r\n  this.parseError = false;\r\n\r\n  if (!this.url) {\r\n    this.url = {\r\n      scheme: "",\r\n      username: "",\r\n      password: "",\r\n      host: null,\r\n      port: null,\r\n      path: [],\r\n      query: null,\r\n      fragment: null,\r\n\r\n      cannotBeABaseURL: false\r\n    };\r\n\r\n    const res = trimControlChars(this.input);\r\n    if (res !== this.input) {\r\n      this.parseError = true;\r\n    }\r\n    this.input = res;\r\n  }\r\n\r\n  const res = trimTabAndNewline(this.input);\r\n  if (res !== this.input) {\r\n    this.parseError = true;\r\n  }\r\n  this.input = res;\r\n\r\n  this.state = stateOverride || "scheme start";\r\n\r\n  this.buffer = "";\r\n  this.atFlag = false;\r\n  this.arrFlag = false;\r\n  this.passwordTokenSeenFlag = false;\r\n\r\n  this.input = punycode.ucs2.decode(this.input);\r\n\r\n  for (; this.pointer <= this.input.length; ++this.pointer) {\r\n    const c = this.input[this.pointer];\r\n    const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\r\n\r\n    // exec state machine\r\n    const ret = this["parse " + this.state](c, cStr);\r\n    if (!ret) {\r\n      break; // terminate algorithm\r\n    } else if (ret === failure) {\r\n      this.failure = true;\r\n      break;\r\n    }\r\n  }\r\n}\r\n\r\nURLStateMachine.prototype["parse scheme start"] = function parseSchemeStart(c, cStr) {\r\n  if (isASCIIAlpha(c)) {\r\n    this.buffer += cStr.toLowerCase();\r\n    this.state = "scheme";\r\n  } else if (!this.stateOverride) {\r\n    this.state = "no scheme";\r\n    --this.pointer;\r\n  } else {\r\n    this.parseError = true;\r\n    return failure;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype["parse scheme"] = function parseScheme(c, cStr) {\r\n  if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {\r\n    this.buffer += cStr.toLowerCase();\r\n  } else if (c === 58) {\r\n    if (this.stateOverride) {\r\n      if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\r\n        return false;\r\n      }\r\n\r\n      if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\r\n        return false;\r\n      }\r\n\r\n      if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === "file") {\r\n        return false;\r\n      }\r\n\r\n      if (this.url.scheme === "file" && (this.url.host === "" || this.url.host === null)) {\r\n        return false;\r\n      }\r\n    }\r\n    this.url.scheme = this.buffer;\r\n    this.buffer = "";\r\n    if (this.stateOverride) {\r\n      return false;\r\n    }\r\n    if (this.url.scheme === "file") {\r\n      if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {\r\n        this.parseError = true;\r\n      }\r\n      this.state = "file";\r\n    } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\r\n      this.state = "special relative or authority";\r\n    } else if (isSpecial(this.url)) {\r\n      this.state = "special authority slashes";\r\n    } else if (this.input[this.pointer + 1] === 47) {\r\n      this.state = "path or authority";\r\n      ++this.pointer;\r\n    } else {\r\n      this.url.cannotBeABaseURL = true;\r\n      this.url.path.push("");\r\n      this.state = "cannot-be-a-base-URL path";\r\n    }\r\n  } else if (!this.stateOverride) {\r\n    this.buffer = "";\r\n    this.state = "no scheme";\r\n    this.pointer = -1;\r\n  } else {\r\n    this.parseError = true;\r\n    return failure;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype["parse no scheme"] = function parseNoScheme(c) {\r\n  if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {\r\n    return failure;\r\n  } else if (this.base.cannotBeABaseURL && c === 35) {\r\n    this.url.scheme = this.base.scheme;\r\n    this.url.path = this.base.path.slice();\r\n    this.url.query = this.base.query;\r\n    this.url.fragment = "";\r\n    this.url.cannotBeABaseURL = true;\r\n    this.state = "fragment";\r\n  } else if (this.base.scheme === "file") {\r\n    this.state = "file";\r\n    --this.pointer;\r\n  } else {\r\n    this.state = "relative";\r\n    --this.pointer;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype["parse special relative or authority"] = function parseSpecialRelativeOrAuthority(c) {\r\n  if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n    this.state = "special authority ignore slashes";\r\n    ++this.pointer;\r\n  } else {\r\n    this.parseError = true;\r\n    this.state = "relative";\r\n    --this.pointer;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype["parse path or authority"] = function parsePathOrAuthority(c) {\r\n  if (c === 47) {\r\n    this.state = "authority";\r\n  } else {\r\n    this.state = "path";\r\n    --this.pointer;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype["parse relative"] = function parseRelative(c) {\r\n  this.url.scheme = this.base.scheme;\r\n  if (isNaN(c)) {\r\n    this.url.username = this.base.username;\r\n    this.url.password = this.base.password;\r\n    this.url.host = this.base.host;\r\n    this.url.port = this.base.port;\r\n    this.url.path = this.base.path.slice();\r\n    this.url.query = this.base.query;\r\n  } else if (c === 47) {\r\n    this.state = "relative slash";\r\n  } else if (c === 63) {\r\n    this.url.username = this.base.username;\r\n    this.url.password = this.base.password;\r\n    this.url.host = this.base.host;\r\n    this.url.port = this.base.port;\r\n    this.url.path = this.base.path.slice();\r\n    this.url.query = "";\r\n    this.state = "query";\r\n  } else if (c === 35) {\r\n    this.url.username = this.base.username;\r\n    this.url.password = this.base.password;\r\n    this.url.host = this.base.host;\r\n    this.url.port = this.base.port;\r\n    this.url.path = this.base.path.slice();\r\n    this.url.query = this.base.query;\r\n    this.url.fragment = "";\r\n    this.state = "fragment";\r\n  } else if (isSpecial(this.url) && c === 92) {\r\n    this.parseError = true;\r\n    this.state = "relative slash";\r\n  } else {\r\n    this.url.username = this.base.username;\r\n    this.url.password = this.base.password;\r\n    this.url.host = this.base.host;\r\n    this.url.port = this.base.port;\r\n    this.url.path = this.base.path.slice(0, this.base.path.length - 1);\r\n\r\n    this.state = "path";\r\n    --this.pointer;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype["parse relative slash"] = function parseRelativeSlash(c) {\r\n  if (isSpecial(this.url) && (c === 47 || c === 92)) {\r\n    if (c === 92) {\r\n      this.parseError = true;\r\n    }\r\n    this.state = "special authority ignore slashes";\r\n  } else if (c === 47) {\r\n    this.state = "authority";\r\n  } else {\r\n    this.url.username = this.base.username;\r\n    this.url.password = this.base.password;\r\n    this.url.host = this.base.host;\r\n    this.url.port = this.base.port;\r\n    this.state = "path";\r\n    --this.pointer;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype["parse special authority slashes"] = function parseSpecialAuthoritySlashes(c) {\r\n  if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n    this.state = "special authority ignore slashes";\r\n    ++this.pointer;\r\n  } else {\r\n    this.parseError = true;\r\n    this.state = "special authority ignore slashes";\r\n    --this.pointer;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype["parse special authority ignore slashes"] = function parseSpecialAuthorityIgnoreSlashes(c) {\r\n  if (c !== 47 && c !== 92) {\r\n    this.state = "authority";\r\n    --this.pointer;\r\n  } else {\r\n    this.parseError = true;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype["parse authority"] = function parseAuthority(c, cStr) {\r\n  if (c === 64) {\r\n    this.parseError = true;\r\n    if (this.atFlag) {\r\n      this.buffer = "%40" + this.buffer;\r\n    }\r\n    this.atFlag = true;\r\n\r\n    // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\r\n    const len = countSymbols(this.buffer);\r\n    for (let pointer = 0; pointer < len; ++pointer) {\r\n      const codePoint = this.buffer.codePointAt(pointer);\r\n\r\n      if (codePoint === 58 && !this.passwordTokenSeenFlag) {\r\n        this.passwordTokenSeenFlag = true;\r\n        continue;\r\n      }\r\n      const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);\r\n      if (this.passwordTokenSeenFlag) {\r\n        this.url.password += encodedCodePoints;\r\n      } else {\r\n        this.url.username += encodedCodePoints;\r\n      }\r\n    }\r\n    this.buffer = "";\r\n  } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n             (isSpecial(this.url) && c === 92)) {\r\n    if (this.atFlag && this.buffer === "") {\r\n      this.parseError = true;\r\n      return failure;\r\n    }\r\n    this.pointer -= countSymbols(this.buffer) + 1;\r\n    this.buffer = "";\r\n    this.state = "host";\r\n  } else {\r\n    this.buffer += cStr;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype["parse hostname"] =\r\nURLStateMachine.prototype["parse host"] = function parseHostName(c, cStr) {\r\n  if (this.stateOverride && this.url.scheme === "file") {\r\n    --this.pointer;\r\n    this.state = "file host";\r\n  } else if (c === 58 && !this.arrFlag) {\r\n    if (this.buffer === "") {\r\n      this.parseError = true;\r\n      return failure;\r\n    }\r\n\r\n    const host = parseHost(this.buffer, isSpecial(this.url));\r\n    if (host === failure) {\r\n      return failure;\r\n    }\r\n\r\n    this.url.host = host;\r\n    this.buffer = "";\r\n    this.state = "port";\r\n    if (this.stateOverride === "hostname") {\r\n      return false;\r\n    }\r\n  } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n             (isSpecial(this.url) && c === 92)) {\r\n    --this.pointer;\r\n    if (isSpecial(this.url) && this.buffer === "") {\r\n      this.parseError = true;\r\n      return failure;\r\n    } else if (this.stateOverride && this.buffer === "" &&\r\n               (includesCredentials(this.url) || this.url.port !== null)) {\r\n      this.parseError = true;\r\n      return false;\r\n    }\r\n\r\n    const host = parseHost(this.buffer, isSpecial(this.url));\r\n    if (host === failure) {\r\n      return failure;\r\n    }\r\n\r\n    this.url.host = host;\r\n    this.buffer = "";\r\n    this.state = "path start";\r\n    if (this.stateOverride) {\r\n      return false;\r\n    }\r\n  } else {\r\n    if (c === 91) {\r\n      this.arrFlag = true;\r\n    } else if (c === 93) {\r\n      this.arrFlag = false;\r\n    }\r\n    this.buffer += cStr;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype["parse port"] = function parsePort(c, cStr) {\r\n  if (isASCIIDigit(c)) {\r\n    this.buffer += cStr;\r\n  } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n             (isSpecial(this.url) && c === 92) ||\r\n             this.stateOverride) {\r\n    if (this.buffer !== "") {\r\n      const port = parseInt(this.buffer);\r\n      if (port > Math.pow(2, 16) - 1) {\r\n        this.parseError = true;\r\n        return failure;\r\n      }\r\n      this.url.port = port === defaultPort(this.url.scheme) ? null : port;\r\n      this.buffer = "";\r\n    }\r\n    if (this.stateOverride) {\r\n      return false;\r\n    }\r\n    this.state = "path start";\r\n    --this.pointer;\r\n  } else {\r\n    this.parseError = true;\r\n    return failure;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nconst fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);\r\n\r\nURLStateMachine.prototype["parse file"] = function parseFile(c) {\r\n  this.url.scheme = "file";\r\n\r\n  if (c === 47 || c === 92) {\r\n    if (c === 92) {\r\n      this.parseError = true;\r\n    }\r\n    this.state = "file slash";\r\n  } else if (this.base !== null && this.base.scheme === "file") {\r\n    if (isNaN(c)) {\r\n      this.url.host = this.base.host;\r\n      this.url.path = this.base.path.slice();\r\n      this.url.query = this.base.query;\r\n    } else if (c === 63) {\r\n      this.url.host = this.base.host;\r\n      this.url.path = this.base.path.slice();\r\n      this.url.query = "";\r\n      this.state = "query";\r\n    } else if (c === 35) {\r\n      this.url.host = this.base.host;\r\n      this.url.path = this.base.path.slice();\r\n      this.url.query = this.base.query;\r\n      this.url.fragment = "";\r\n      this.state = "fragment";\r\n    } else {\r\n      if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points\r\n          !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||\r\n          (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points\r\n           !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {\r\n        this.url.host = this.base.host;\r\n        this.url.path = this.base.path.slice();\r\n        shortenPath(this.url);\r\n      } else {\r\n        this.parseError = true;\r\n      }\r\n\r\n      this.state = "path";\r\n      --this.pointer;\r\n    }\r\n  } else {\r\n    this.state = "path";\r\n    --this.pointer;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype["parse file slash"] = function parseFileSlash(c) {\r\n  if (c === 47 || c === 92) {\r\n    if (c === 92) {\r\n      this.parseError = true;\r\n    }\r\n    this.state = "file host";\r\n  } else {\r\n    if (this.base !== null && this.base.scheme === "file") {\r\n      if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {\r\n        this.url.path.push(this.base.path[0]);\r\n      } else {\r\n        this.url.host = this.base.host;\r\n      }\r\n    }\r\n    this.state = "path";\r\n    --this.pointer;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype["parse file host"] = function parseFileHost(c, cStr) {\r\n  if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {\r\n    --this.pointer;\r\n    if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\r\n      this.parseError = true;\r\n      this.state = "path";\r\n    } else if (this.buffer === "") {\r\n      this.url.host = "";\r\n      if (this.stateOverride) {\r\n        return false;\r\n      }\r\n      this.state = "path start";\r\n    } else {\r\n      let host = parseHost(this.buffer, isSpecial(this.url));\r\n      if (host === failure) {\r\n        return failure;\r\n      }\r\n      if (host === "localhost") {\r\n        host = "";\r\n      }\r\n      this.url.host = host;\r\n\r\n      if (this.stateOverride) {\r\n        return false;\r\n      }\r\n\r\n      this.buffer = "";\r\n      this.state = "path start";\r\n    }\r\n  } else {\r\n    this.buffer += cStr;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype["parse path start"] = function parsePathStart(c) {\r\n  if (isSpecial(this.url)) {\r\n    if (c === 92) {\r\n      this.parseError = true;\r\n    }\r\n    this.state = "path";\r\n\r\n    if (c !== 47 && c !== 92) {\r\n      --this.pointer;\r\n    }\r\n  } else if (!this.stateOverride && c === 63) {\r\n    this.url.query = "";\r\n    this.state = "query";\r\n  } else if (!this.stateOverride && c === 35) {\r\n    this.url.fragment = "";\r\n    this.state = "fragment";\r\n  } else if (c !== undefined) {\r\n    this.state = "path";\r\n    if (c !== 47) {\r\n      --this.pointer;\r\n    }\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype["parse path"] = function parsePath(c) {\r\n  if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||\r\n      (!this.stateOverride && (c === 63 || c === 35))) {\r\n    if (isSpecial(this.url) && c === 92) {\r\n      this.parseError = true;\r\n    }\r\n\r\n    if (isDoubleDot(this.buffer)) {\r\n      shortenPath(this.url);\r\n      if (c !== 47 && !(isSpecial(this.url) && c === 92)) {\r\n        this.url.path.push("");\r\n      }\r\n    } else if (isSingleDot(this.buffer) && c !== 47 &&\r\n               !(isSpecial(this.url) && c === 92)) {\r\n      this.url.path.push("");\r\n    } else if (!isSingleDot(this.buffer)) {\r\n      if (this.url.scheme === "file" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\r\n        if (this.url.host !== "" && this.url.host !== null) {\r\n          this.parseError = true;\r\n          this.url.host = "";\r\n        }\r\n        this.buffer = this.buffer[0] + ":";\r\n      }\r\n      this.url.path.push(this.buffer);\r\n    }\r\n    this.buffer = "";\r\n    if (this.url.scheme === "file" && (c === undefined || c === 63 || c === 35)) {\r\n      while (this.url.path.length > 1 && this.url.path[0] === "") {\r\n        this.parseError = true;\r\n        this.url.path.shift();\r\n      }\r\n    }\r\n    if (c === 63) {\r\n      this.url.query = "";\r\n      this.state = "query";\r\n    }\r\n    if (c === 35) {\r\n      this.url.fragment = "";\r\n      this.state = "fragment";\r\n    }\r\n  } else {\r\n    // TODO: If c is not a URL code point and not "%", parse error.\r\n\r\n    if (c === 37 &&\r\n      (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n        !isASCIIHex(this.input[this.pointer + 2]))) {\r\n      this.parseError = true;\r\n    }\r\n\r\n    this.buffer += percentEncodeChar(c, isPathPercentEncode);\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype["parse cannot-be-a-base-URL path"] = function parseCannotBeABaseURLPath(c) {\r\n  if (c === 63) {\r\n    this.url.query = "";\r\n    this.state = "query";\r\n  } else if (c === 35) {\r\n    this.url.fragment = "";\r\n    this.state = "fragment";\r\n  } else {\r\n    // TODO: Add: not a URL code point\r\n    if (!isNaN(c) && c !== 37) {\r\n      this.parseError = true;\r\n    }\r\n\r\n    if (c === 37 &&\r\n        (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n         !isASCIIHex(this.input[this.pointer + 2]))) {\r\n      this.parseError = true;\r\n    }\r\n\r\n    if (!isNaN(c)) {\r\n      this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);\r\n    }\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype["parse query"] = function parseQuery(c, cStr) {\r\n  if (isNaN(c) || (!this.stateOverride && c === 35)) {\r\n    if (!isSpecial(this.url) || this.url.scheme === "ws" || this.url.scheme === "wss") {\r\n      this.encodingOverride = "utf-8";\r\n    }\r\n\r\n    const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead\r\n    for (let i = 0; i < buffer.length; ++i) {\r\n      if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||\r\n          buffer[i] === 0x3C || buffer[i] === 0x3E) {\r\n        this.url.query += percentEncode(buffer[i]);\r\n      } else {\r\n        this.url.query += String.fromCodePoint(buffer[i]);\r\n      }\r\n    }\r\n\r\n    this.buffer = "";\r\n    if (c === 35) {\r\n      this.url.fragment = "";\r\n      this.state = "fragment";\r\n    }\r\n  } else {\r\n    // TODO: If c is not a URL code point and not "%", parse error.\r\n    if (c === 37 &&\r\n      (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n        !isASCIIHex(this.input[this.pointer + 2]))) {\r\n      this.parseError = true;\r\n    }\r\n\r\n    this.buffer += cStr;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype["parse fragment"] = function parseFragment(c) {\r\n  if (isNaN(c)) { // do nothing\r\n  } else if (c === 0x0) {\r\n    this.parseError = true;\r\n  } else {\r\n    // TODO: If c is not a URL code point and not "%", parse error.\r\n    if (c === 37 &&\r\n      (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n        !isASCIIHex(this.input[this.pointer + 2]))) {\r\n      this.parseError = true;\r\n    }\r\n\r\n    this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nfunction serializeURL(url, excludeFragment) {\r\n  let output = url.scheme + ":";\r\n  if (url.host !== null) {\r\n    output += "//";\r\n\r\n    if (url.username !== "" || url.password !== "") {\r\n      output += url.username;\r\n      if (url.password !== "") {\r\n        output += ":" + url.password;\r\n      }\r\n      output += "@";\r\n    }\r\n\r\n    output += serializeHost(url.host);\r\n\r\n    if (url.port !== null) {\r\n      output += ":" + url.port;\r\n    }\r\n  } else if (url.host === null && url.scheme === "file") {\r\n    output += "//";\r\n  }\r\n\r\n  if (url.cannotBeABaseURL) {\r\n    output += url.path[0];\r\n  } else {\r\n    for (const string of url.path) {\r\n      output += "/" + string;\r\n    }\r\n  }\r\n\r\n  if (url.query !== null) {\r\n    output += "?" + url.query;\r\n  }\r\n\r\n  if (!excludeFragment && url.fragment !== null) {\r\n    output += "#" + url.fragment;\r\n  }\r\n\r\n  return output;\r\n}\r\n\r\nfunction serializeOrigin(tuple) {\r\n  let result = tuple.scheme + "://";\r\n  result += serializeHost(tuple.host);\r\n\r\n  if (tuple.port !== null) {\r\n    result += ":" + tuple.port;\r\n  }\r\n\r\n  return result;\r\n}\r\n\r\nmodule.exports.serializeURL = serializeURL;\r\n\r\nmodule.exports.serializeURLOrigin = function (url) {\r\n  // https://url.spec.whatwg.org/#concept-url-origin\r\n  switch (url.scheme) {\r\n    case "blob":\r\n      try {\r\n        return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));\r\n      } catch (e) {\r\n        // serializing an opaque origin returns "null"\r\n        return "null";\r\n      }\r\n    case "ftp":\r\n    case "gopher":\r\n    case "http":\r\n    case "https":\r\n    case "ws":\r\n    case "wss":\r\n      return serializeOrigin({\r\n        scheme: url.scheme,\r\n        host: url.host,\r\n        port: url.port\r\n      });\r\n    case "file":\r\n      // spec says "exercise to the reader", chrome says "file://"\r\n      return "file://";\r\n    default:\r\n      // serializing an opaque origin returns "null"\r\n      return "null";\r\n  }\r\n};\r\n\r\nmodule.exports.basicURLParse = function (input, options) {\r\n  if (options === undefined) {\r\n    options = {};\r\n  }\r\n\r\n  const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\r\n  if (usm.failure) {\r\n    return "failure";\r\n  }\r\n\r\n  return usm.url;\r\n};\r\n\r\nmodule.exports.setTheUsername = function (url, username) {\r\n  url.username = "";\r\n  const decoded = punycode.ucs2.decode(username);\r\n  for (let i = 0; i < decoded.length; ++i) {\r\n    url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n  }\r\n};\r\n\r\nmodule.exports.setThePassword = function (url, password) {\r\n  url.password = "";\r\n  const decoded = punycode.ucs2.decode(password);\r\n  for (let i = 0; i < decoded.length; ++i) {\r\n    url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n  }\r\n};\r\n\r\nmodule.exports.serializeHost = serializeHost;\r\n\r\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\r\n\r\nmodule.exports.serializeInteger = function (integer) {\r\n  return String(integer);\r\n};\r\n\r\nmodule.exports.parseURL = function (input, options) {\r\n  if (options === undefined) {\r\n    options = {};\r\n  }\r\n\r\n  // We don\'t handle blobs, so this just delegates:\r\n  return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./node_modules/whatwg-url/lib/url-state-machine.js?')},"./node_modules/whatwg-url/lib/utils.js":
/*!**********************************************!*\
  !*** ./node_modules/whatwg-url/lib/utils.js ***!
  \**********************************************/module=>{"use strict";eval('\n\nmodule.exports.mixin = function mixin(target, source) {\n  const keys = Object.getOwnPropertyNames(source);\n  for (let i = 0; i < keys.length; ++i) {\n    Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));\n  }\n};\n\nmodule.exports.wrapperSymbol = Symbol("wrapper");\nmodule.exports.implSymbol = Symbol("impl");\n\nmodule.exports.wrapperForImpl = function (impl) {\n  return impl[module.exports.wrapperSymbol];\n};\n\nmodule.exports.implForWrapper = function (wrapper) {\n  return wrapper[module.exports.implSymbol];\n};\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/whatwg-url/lib/utils.js?')},"./node_modules/which/which.js":
/*!*************************************!*\
  !*** ./node_modules/which/which.js ***!
  \*************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const isWindows = process.platform === 'win32' ||\n    ({\"APP_ENV\":\"webpack\"}).OSTYPE === 'cygwin' ||\n    ({\"APP_ENV\":\"webpack\"}).OSTYPE === 'msys'\n\nconst path = __webpack_require__(/*! path */ \"path\")\nconst COLON = isWindows ? ';' : ':'\nconst isexe = __webpack_require__(/*! isexe */ \"./node_modules/isexe/index.js\")\n\nconst getNotFoundError = (cmd) =>\n  Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n  const colon = opt.colon || COLON\n\n  // If it has a slash, then we don't bother searching the pathenv.\n  // just check the file itself, and that's it.\n  const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n    : (\n      [\n        // windows always checks the cwd first\n        ...(isWindows ? [process.cwd()] : []),\n        ...(opt.path || ({\"APP_ENV\":\"webpack\"}).PATH ||\n          /* istanbul ignore next: very unusual */ '').split(colon),\n      ]\n    )\n  const pathExtExe = isWindows\n    ? opt.pathExt || ({\"APP_ENV\":\"webpack\"}).PATHEXT || '.EXE;.CMD;.BAT;.COM'\n    : ''\n  const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n  if (isWindows) {\n    if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n      pathExt.unshift('')\n  }\n\n  return {\n    pathEnv,\n    pathExt,\n    pathExtExe,\n  }\n}\n\nconst which = (cmd, opt, cb) => {\n  if (typeof opt === 'function') {\n    cb = opt\n    opt = {}\n  }\n  if (!opt)\n    opt = {}\n\n  const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n  const found = []\n\n  const step = i => new Promise((resolve, reject) => {\n    if (i === pathEnv.length)\n      return opt.all && found.length ? resolve(found)\n        : reject(getNotFoundError(cmd))\n\n    const ppRaw = pathEnv[i]\n    const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n    const pCmd = path.join(pathPart, cmd)\n    const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n      : pCmd\n\n    resolve(subStep(p, i, 0))\n  })\n\n  const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n    if (ii === pathExt.length)\n      return resolve(step(i + 1))\n    const ext = pathExt[ii]\n    isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n      if (!er && is) {\n        if (opt.all)\n          found.push(p + ext)\n        else\n          return resolve(p + ext)\n      }\n      return resolve(subStep(p, i, ii + 1))\n    })\n  })\n\n  return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n  opt = opt || {}\n\n  const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n  const found = []\n\n  for (let i = 0; i < pathEnv.length; i ++) {\n    const ppRaw = pathEnv[i]\n    const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n    const pCmd = path.join(pathPart, cmd)\n    const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n      : pCmd\n\n    for (let j = 0; j < pathExt.length; j ++) {\n      const cur = p + pathExt[j]\n      try {\n        const is = isexe.sync(cur, { pathExt: pathExtExe })\n        if (is) {\n          if (opt.all)\n            found.push(cur)\n          else\n            return cur\n        }\n      } catch (ex) {}\n    }\n  }\n\n  if (opt.all && found.length)\n    return found\n\n  if (opt.nothrow)\n    return null\n\n  throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n\n\n//# sourceURL=webpack://txadmin/./node_modules/which/which.js?")},"./node_modules/widest-line/index.js":
/*!*******************************************!*\
  !*** ./node_modules/widest-line/index.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\nconst stringWidth = __webpack_require__(/*! string-width */ "./node_modules/string-width/index.js");\n\nconst widestLine = input => {\n\tlet max = 0;\n\n\tfor (const line of input.split(\'\\n\')) {\n\t\tmax = Math.max(max, stringWidth(line));\n\t}\n\n\treturn max;\n};\n\nmodule.exports = widestLine;\n// TODO: remove this in the next major version\nmodule.exports["default"] = widestLine;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/widest-line/index.js?')},"./node_modules/wrap-ansi/index.js":
/*!*****************************************!*\
  !*** ./node_modules/wrap-ansi/index.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nconst stringWidth = __webpack_require__(/*! string-width */ \"./node_modules/string-width/index.js\");\nconst stripAnsi = __webpack_require__(/*! strip-ansi */ \"./node_modules/strip-ansi/index.js\");\nconst ansiStyles = __webpack_require__(/*! ansi-styles */ \"./node_modules/ansi-styles/index.js\");\n\nconst ESCAPES = new Set([\n\t'\\u001B',\n\t'\\u009B'\n]);\n\nconst END_CODE = 39;\n\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\n\nconst wrapAnsi = code => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = uri => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${uri}${ANSI_ESCAPE_BELL}`;\n\n// Calculate the length of words split on ' ', ignoring\n// the extra characters added by ansi escape codes\nconst wordLengths = string => string.split(' ').map(character => stringWidth(character));\n\n// Wrap a long word across multiple rows\n// Ansi escape codes do not count towards length\nconst wrapWord = (rows, word, columns) => {\n\tconst characters = [...word];\n\n\tlet isInsideEscape = false;\n\tlet isInsideLinkEscape = false;\n\tlet visible = stringWidth(stripAnsi(rows[rows.length - 1]));\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tconst characterLength = stringWidth(character);\n\n\t\tif (visible + characterLength <= columns) {\n\t\t\trows[rows.length - 1] += character;\n\t\t} else {\n\t\t\trows.push(character);\n\t\t\tvisible = 0;\n\t\t}\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tisInsideEscape = true;\n\t\t\tisInsideLinkEscape = characters.slice(index + 1).join('').startsWith(ANSI_ESCAPE_LINK);\n\t\t}\n\n\t\tif (isInsideEscape) {\n\t\t\tif (isInsideLinkEscape) {\n\t\t\t\tif (character === ANSI_ESCAPE_BELL) {\n\t\t\t\t\tisInsideEscape = false;\n\t\t\t\t\tisInsideLinkEscape = false;\n\t\t\t\t}\n\t\t\t} else if (character === ANSI_SGR_TERMINATOR) {\n\t\t\t\tisInsideEscape = false;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvisible += characterLength;\n\n\t\tif (visible === columns && index < characters.length - 1) {\n\t\t\trows.push('');\n\t\t\tvisible = 0;\n\t\t}\n\t}\n\n\t// It's possible that the last row we copy over is only\n\t// ansi escape characters, handle this edge-case\n\tif (!visible && rows[rows.length - 1].length > 0 && rows.length > 1) {\n\t\trows[rows.length - 2] += rows.pop();\n\t}\n};\n\n// Trims spaces from a string ignoring invisible sequences\nconst stringVisibleTrimSpacesRight = string => {\n\tconst words = string.split(' ');\n\tlet last = words.length;\n\n\twhile (last > 0) {\n\t\tif (stringWidth(words[last - 1]) > 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tlast--;\n\t}\n\n\tif (last === words.length) {\n\t\treturn string;\n\t}\n\n\treturn words.slice(0, last).join(' ') + words.slice(last).join('');\n};\n\n// The wrap-ansi module can be invoked in either 'hard' or 'soft' wrap mode\n//\n// 'hard' will never allow a string to take up more than columns characters\n//\n// 'soft' allows long words to expand past the column length\nconst exec = (string, columns, options = {}) => {\n\tif (options.trim !== false && string.trim() === '') {\n\t\treturn '';\n\t}\n\n\tlet returnValue = '';\n\tlet escapeCode;\n\tlet escapeUrl;\n\n\tconst lengths = wordLengths(string);\n\tlet rows = [''];\n\n\tfor (const [index, word] of string.split(' ').entries()) {\n\t\tif (options.trim !== false) {\n\t\t\trows[rows.length - 1] = rows[rows.length - 1].trimStart();\n\t\t}\n\n\t\tlet rowLength = stringWidth(rows[rows.length - 1]);\n\n\t\tif (index !== 0) {\n\t\t\tif (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {\n\t\t\t\t// If we start with a new word but the current row length equals the length of the columns, add a new row\n\t\t\t\trows.push('');\n\t\t\t\trowLength = 0;\n\t\t\t}\n\n\t\t\tif (rowLength > 0 || options.trim === false) {\n\t\t\t\trows[rows.length - 1] += ' ';\n\t\t\t\trowLength++;\n\t\t\t}\n\t\t}\n\n\t\t// In 'hard' wrap mode, the length of a line is never allowed to extend past 'columns'\n\t\tif (options.hard && lengths[index] > columns) {\n\t\t\tconst remainingColumns = (columns - rowLength);\n\t\t\tconst breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);\n\t\t\tconst breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns);\n\t\t\tif (breaksStartingNextLine < breaksStartingThisLine) {\n\t\t\t\trows.push('');\n\t\t\t}\n\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {\n\t\t\tif (options.wordWrap === false && rowLength < columns) {\n\t\t\t\twrapWord(rows, word, columns);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\trows.push('');\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && options.wordWrap === false) {\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\trows[rows.length - 1] += word;\n\t}\n\n\tif (options.trim !== false) {\n\t\trows = rows.map(stringVisibleTrimSpacesRight);\n\t}\n\n\tconst pre = [...rows.join('\\n')];\n\n\tfor (const [index, character] of pre.entries()) {\n\t\treturnValue += character;\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tconst {groups} = new RegExp(`(?:\\\\${ANSI_CSI}(?<code>\\\\d+)m|\\\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`).exec(pre.slice(index).join('')) || {groups: {}};\n\t\t\tif (groups.code !== undefined) {\n\t\t\t\tconst code = Number.parseFloat(groups.code);\n\t\t\t\tescapeCode = code === END_CODE ? undefined : code;\n\t\t\t} else if (groups.uri !== undefined) {\n\t\t\t\tescapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n\t\t\t}\n\t\t}\n\n\t\tconst code = ansiStyles.codes.get(Number(escapeCode));\n\n\t\tif (pre[index + 1] === '\\n') {\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink('');\n\t\t\t}\n\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsi(code);\n\t\t\t}\n\t\t} else if (character === '\\n') {\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsi(escapeCode);\n\t\t\t}\n\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink(escapeUrl);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn returnValue;\n};\n\n// For each newline, invoke the method separately\nmodule.exports = (string, columns, options) => {\n\treturn String(string)\n\t\t.normalize()\n\t\t.replace(/\\r\\n/g, '\\n')\n\t\t.split('\\n')\n\t\t.map(line => exec(line, columns, options))\n\t\t.join('\\n');\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/wrap-ansi/index.js?")},"./node_modules/wrappy/wrappy.js":
/*!***************************************!*\
  !*** ./node_modules/wrappy/wrappy.js ***!
  \***************************************/module=>{eval("// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n  if (fn && cb) return wrappy(fn)(cb)\n\n  if (typeof fn !== 'function')\n    throw new TypeError('need wrapper function')\n\n  Object.keys(fn).forEach(function (k) {\n    wrapper[k] = fn[k]\n  })\n\n  return wrapper\n\n  function wrapper() {\n    var args = new Array(arguments.length)\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i]\n    }\n    var ret = fn.apply(this, args)\n    var cb = args[args.length-1]\n    if (typeof ret === 'function' && ret !== cb) {\n      Object.keys(cb).forEach(function (k) {\n        ret[k] = cb[k]\n      })\n    }\n    return ret\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/wrappy/wrappy.js?")},"./node_modules/ws/index.js":
/*!**********************************!*\
  !*** ./node_modules/ws/index.js ***!
  \**********************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst WebSocket = __webpack_require__(/*! ./lib/websocket */ "./node_modules/ws/lib/websocket.js");\n\nWebSocket.createWebSocketStream = __webpack_require__(/*! ./lib/stream */ "./node_modules/ws/lib/stream.js");\nWebSocket.Server = __webpack_require__(/*! ./lib/websocket-server */ "./node_modules/ws/lib/websocket-server.js");\nWebSocket.Receiver = __webpack_require__(/*! ./lib/receiver */ "./node_modules/ws/lib/receiver.js");\nWebSocket.Sender = __webpack_require__(/*! ./lib/sender */ "./node_modules/ws/lib/sender.js");\n\nWebSocket.WebSocket = WebSocket;\nWebSocket.WebSocketServer = WebSocket.Server;\n\nmodule.exports = WebSocket;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ws/index.js?')},"./node_modules/ws/lib/buffer-util.js":
/*!********************************************!*\
  !*** ./node_modules/ws/lib/buffer-util.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nconst { EMPTY_BUFFER } = __webpack_require__(/*! ./constants */ "./node_modules/ws/lib/constants.js");\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n  if (list.length === 0) return EMPTY_BUFFER;\n  if (list.length === 1) return list[0];\n\n  const target = Buffer.allocUnsafe(totalLength);\n  let offset = 0;\n\n  for (let i = 0; i < list.length; i++) {\n    const buf = list[i];\n    target.set(buf, offset);\n    offset += buf.length;\n  }\n\n  if (offset < totalLength) return target.slice(0, offset);\n\n  return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n  for (let i = 0; i < length; i++) {\n    output[offset + i] = source[i] ^ mask[i & 3];\n  }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n  for (let i = 0; i < buffer.length; i++) {\n    buffer[i] ^= mask[i & 3];\n  }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n  if (buf.byteLength === buf.buffer.byteLength) {\n    return buf.buffer;\n  }\n\n  return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n  toBuffer.readOnly = true;\n\n  if (Buffer.isBuffer(data)) return data;\n\n  let buf;\n\n  if (data instanceof ArrayBuffer) {\n    buf = Buffer.from(data);\n  } else if (ArrayBuffer.isView(data)) {\n    buf = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n  } else {\n    buf = Buffer.from(data);\n    toBuffer.readOnly = false;\n  }\n\n  return buf;\n}\n\ntry {\n  const bufferUtil = __webpack_require__(/*! bufferutil */ "./node_modules/bufferutil/index.js");\n\n  module.exports = {\n    concat,\n    mask(source, mask, output, offset, length) {\n      if (length < 48) _mask(source, mask, output, offset, length);\n      else bufferUtil.mask(source, mask, output, offset, length);\n    },\n    toArrayBuffer,\n    toBuffer,\n    unmask(buffer, mask) {\n      if (buffer.length < 32) _unmask(buffer, mask);\n      else bufferUtil.unmask(buffer, mask);\n    }\n  };\n} catch (e) /* istanbul ignore next */ {\n  module.exports = {\n    concat,\n    mask: _mask,\n    toArrayBuffer,\n    toBuffer,\n    unmask: _unmask\n  };\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ws/lib/buffer-util.js?')},"./node_modules/ws/lib/constants.js":
/*!******************************************!*\
  !*** ./node_modules/ws/lib/constants.js ***!
  \******************************************/module=>{"use strict";eval("\n\nmodule.exports = {\n  BINARY_TYPES: ['nodebuffer', 'arraybuffer', 'fragments'],\n  EMPTY_BUFFER: Buffer.alloc(0),\n  GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n  kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),\n  kListener: Symbol('kListener'),\n  kStatusCode: Symbol('status-code'),\n  kWebSocket: Symbol('websocket'),\n  NOOP: () => {}\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ws/lib/constants.js?")},"./node_modules/ws/lib/event-target.js":
/*!*********************************************!*\
  !*** ./node_modules/ws/lib/event-target.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { kForOnEventAttribute, kListener } = __webpack_require__(/*! ./constants */ \"./node_modules/ws/lib/constants.js\");\n\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n  /**\n   * Create a new `Event`.\n   *\n   * @param {String} type The name of the event\n   * @throws {TypeError} If the `type` argument is not specified\n   */\n  constructor(type) {\n    this[kTarget] = null;\n    this[kType] = type;\n  }\n\n  /**\n   * @type {*}\n   */\n  get target() {\n    return this[kTarget];\n  }\n\n  /**\n   * @type {String}\n   */\n  get type() {\n    return this[kType];\n  }\n}\n\nObject.defineProperty(Event.prototype, 'target', { enumerable: true });\nObject.defineProperty(Event.prototype, 'type', { enumerable: true });\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n  /**\n   * Create a new `CloseEvent`.\n   *\n   * @param {String} type The name of the event\n   * @param {Object} [options] A dictionary object that allows for setting\n   *     attributes via object members of the same name\n   * @param {Number} [options.code=0] The status code explaining why the\n   *     connection was closed\n   * @param {String} [options.reason=''] A human-readable string explaining why\n   *     the connection was closed\n   * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n   *     connection was cleanly closed\n   */\n  constructor(type, options = {}) {\n    super(type);\n\n    this[kCode] = options.code === undefined ? 0 : options.code;\n    this[kReason] = options.reason === undefined ? '' : options.reason;\n    this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n  }\n\n  /**\n   * @type {Number}\n   */\n  get code() {\n    return this[kCode];\n  }\n\n  /**\n   * @type {String}\n   */\n  get reason() {\n    return this[kReason];\n  }\n\n  /**\n   * @type {Boolean}\n   */\n  get wasClean() {\n    return this[kWasClean];\n  }\n}\n\nObject.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n  /**\n   * Create a new `ErrorEvent`.\n   *\n   * @param {String} type The name of the event\n   * @param {Object} [options] A dictionary object that allows for setting\n   *     attributes via object members of the same name\n   * @param {*} [options.error=null] The error that generated this event\n   * @param {String} [options.message=''] The error message\n   */\n  constructor(type, options = {}) {\n    super(type);\n\n    this[kError] = options.error === undefined ? null : options.error;\n    this[kMessage] = options.message === undefined ? '' : options.message;\n  }\n\n  /**\n   * @type {*}\n   */\n  get error() {\n    return this[kError];\n  }\n\n  /**\n   * @type {String}\n   */\n  get message() {\n    return this[kMessage];\n  }\n}\n\nObject.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });\nObject.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n  /**\n   * Create a new `MessageEvent`.\n   *\n   * @param {String} type The name of the event\n   * @param {Object} [options] A dictionary object that allows for setting\n   *     attributes via object members of the same name\n   * @param {*} [options.data=null] The message content\n   */\n  constructor(type, options = {}) {\n    super(type);\n\n    this[kData] = options.data === undefined ? null : options.data;\n  }\n\n  /**\n   * @type {*}\n   */\n  get data() {\n    return this[kData];\n  }\n}\n\nObject.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n  /**\n   * Register an event listener.\n   *\n   * @param {String} type A string representing the event type to listen for\n   * @param {Function} listener The listener to add\n   * @param {Object} [options] An options object specifies characteristics about\n   *     the event listener\n   * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n   *     listener should be invoked at most once after being added. If `true`,\n   *     the listener would be automatically removed when invoked.\n   * @public\n   */\n  addEventListener(type, listener, options = {}) {\n    let wrapper;\n\n    if (type === 'message') {\n      wrapper = function onMessage(data, isBinary) {\n        const event = new MessageEvent('message', {\n          data: isBinary ? data : data.toString()\n        });\n\n        event[kTarget] = this;\n        listener.call(this, event);\n      };\n    } else if (type === 'close') {\n      wrapper = function onClose(code, message) {\n        const event = new CloseEvent('close', {\n          code,\n          reason: message.toString(),\n          wasClean: this._closeFrameReceived && this._closeFrameSent\n        });\n\n        event[kTarget] = this;\n        listener.call(this, event);\n      };\n    } else if (type === 'error') {\n      wrapper = function onError(error) {\n        const event = new ErrorEvent('error', {\n          error,\n          message: error.message\n        });\n\n        event[kTarget] = this;\n        listener.call(this, event);\n      };\n    } else if (type === 'open') {\n      wrapper = function onOpen() {\n        const event = new Event('open');\n\n        event[kTarget] = this;\n        listener.call(this, event);\n      };\n    } else {\n      return;\n    }\n\n    wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n    wrapper[kListener] = listener;\n\n    if (options.once) {\n      this.once(type, wrapper);\n    } else {\n      this.on(type, wrapper);\n    }\n  },\n\n  /**\n   * Remove an event listener.\n   *\n   * @param {String} type A string representing the event type to remove\n   * @param {Function} handler The listener to remove\n   * @public\n   */\n  removeEventListener(type, handler) {\n    for (const listener of this.listeners(type)) {\n      if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n        this.removeListener(type, listener);\n        break;\n      }\n    }\n  }\n};\n\nmodule.exports = {\n  CloseEvent,\n  ErrorEvent,\n  Event,\n  EventTarget,\n  MessageEvent\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ws/lib/event-target.js?")},"./node_modules/ws/lib/extension.js":
/*!******************************************!*\
  !*** ./node_modules/ws/lib/extension.js ***!
  \******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { tokenChars } = __webpack_require__(/*! ./validation */ \"./node_modules/ws/lib/validation.js\");\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n *     parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n  if (dest[name] === undefined) dest[name] = [elem];\n  else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n  const offers = Object.create(null);\n  let params = Object.create(null);\n  let mustUnescape = false;\n  let isEscaping = false;\n  let inQuotes = false;\n  let extensionName;\n  let paramName;\n  let start = -1;\n  let code = -1;\n  let end = -1;\n  let i = 0;\n\n  for (; i < header.length; i++) {\n    code = header.charCodeAt(i);\n\n    if (extensionName === undefined) {\n      if (end === -1 && tokenChars[code] === 1) {\n        if (start === -1) start = i;\n      } else if (\n        i !== 0 &&\n        (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n      ) {\n        if (end === -1 && start !== -1) end = i;\n      } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n        if (start === -1) {\n          throw new SyntaxError(`Unexpected character at index ${i}`);\n        }\n\n        if (end === -1) end = i;\n        const name = header.slice(start, end);\n        if (code === 0x2c) {\n          push(offers, name, params);\n          params = Object.create(null);\n        } else {\n          extensionName = name;\n        }\n\n        start = end = -1;\n      } else {\n        throw new SyntaxError(`Unexpected character at index ${i}`);\n      }\n    } else if (paramName === undefined) {\n      if (end === -1 && tokenChars[code] === 1) {\n        if (start === -1) start = i;\n      } else if (code === 0x20 || code === 0x09) {\n        if (end === -1 && start !== -1) end = i;\n      } else if (code === 0x3b || code === 0x2c) {\n        if (start === -1) {\n          throw new SyntaxError(`Unexpected character at index ${i}`);\n        }\n\n        if (end === -1) end = i;\n        push(params, header.slice(start, end), true);\n        if (code === 0x2c) {\n          push(offers, extensionName, params);\n          params = Object.create(null);\n          extensionName = undefined;\n        }\n\n        start = end = -1;\n      } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n        paramName = header.slice(start, i);\n        start = end = -1;\n      } else {\n        throw new SyntaxError(`Unexpected character at index ${i}`);\n      }\n    } else {\n      //\n      // The value of a quoted-string after unescaping must conform to the\n      // token ABNF, so only token characters are valid.\n      // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n      //\n      if (isEscaping) {\n        if (tokenChars[code] !== 1) {\n          throw new SyntaxError(`Unexpected character at index ${i}`);\n        }\n        if (start === -1) start = i;\n        else if (!mustUnescape) mustUnescape = true;\n        isEscaping = false;\n      } else if (inQuotes) {\n        if (tokenChars[code] === 1) {\n          if (start === -1) start = i;\n        } else if (code === 0x22 /* '\"' */ && start !== -1) {\n          inQuotes = false;\n          end = i;\n        } else if (code === 0x5c /* '\\' */) {\n          isEscaping = true;\n        } else {\n          throw new SyntaxError(`Unexpected character at index ${i}`);\n        }\n      } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n        inQuotes = true;\n      } else if (end === -1 && tokenChars[code] === 1) {\n        if (start === -1) start = i;\n      } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n        if (end === -1) end = i;\n      } else if (code === 0x3b || code === 0x2c) {\n        if (start === -1) {\n          throw new SyntaxError(`Unexpected character at index ${i}`);\n        }\n\n        if (end === -1) end = i;\n        let value = header.slice(start, end);\n        if (mustUnescape) {\n          value = value.replace(/\\\\/g, '');\n          mustUnescape = false;\n        }\n        push(params, paramName, value);\n        if (code === 0x2c) {\n          push(offers, extensionName, params);\n          params = Object.create(null);\n          extensionName = undefined;\n        }\n\n        paramName = undefined;\n        start = end = -1;\n      } else {\n        throw new SyntaxError(`Unexpected character at index ${i}`);\n      }\n    }\n  }\n\n  if (start === -1 || inQuotes || code === 0x20 || code === 0x09) {\n    throw new SyntaxError('Unexpected end of input');\n  }\n\n  if (end === -1) end = i;\n  const token = header.slice(start, end);\n  if (extensionName === undefined) {\n    push(offers, token, params);\n  } else {\n    if (paramName === undefined) {\n      push(params, token, true);\n    } else if (mustUnescape) {\n      push(params, paramName, token.replace(/\\\\/g, ''));\n    } else {\n      push(params, paramName, token);\n    }\n    push(offers, extensionName, params);\n  }\n\n  return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n  return Object.keys(extensions)\n    .map((extension) => {\n      let configurations = extensions[extension];\n      if (!Array.isArray(configurations)) configurations = [configurations];\n      return configurations\n        .map((params) => {\n          return [extension]\n            .concat(\n              Object.keys(params).map((k) => {\n                let values = params[k];\n                if (!Array.isArray(values)) values = [values];\n                return values\n                  .map((v) => (v === true ? k : `${k}=${v}`))\n                  .join('; ');\n              })\n            )\n            .join('; ');\n        })\n        .join(', ');\n    })\n    .join(', ');\n}\n\nmodule.exports = { format, parse };\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ws/lib/extension.js?")},"./node_modules/ws/lib/limiter.js":
/*!****************************************!*\
  !*** ./node_modules/ws/lib/limiter.js ***!
  \****************************************/module=>{"use strict";eval("\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n  /**\n   * Creates a new `Limiter`.\n   *\n   * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n   *     to run concurrently\n   */\n  constructor(concurrency) {\n    this[kDone] = () => {\n      this.pending--;\n      this[kRun]();\n    };\n    this.concurrency = concurrency || Infinity;\n    this.jobs = [];\n    this.pending = 0;\n  }\n\n  /**\n   * Adds a job to the queue.\n   *\n   * @param {Function} job The job to run\n   * @public\n   */\n  add(job) {\n    this.jobs.push(job);\n    this[kRun]();\n  }\n\n  /**\n   * Removes a job from the queue and runs it if possible.\n   *\n   * @private\n   */\n  [kRun]() {\n    if (this.pending === this.concurrency) return;\n\n    if (this.jobs.length) {\n      const job = this.jobs.shift();\n\n      this.pending++;\n      job(this[kDone]);\n    }\n  }\n}\n\nmodule.exports = Limiter;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ws/lib/limiter.js?")},"./node_modules/ws/lib/permessage-deflate.js":
/*!***************************************************!*\
  !*** ./node_modules/ws/lib/permessage-deflate.js ***!
  \***************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst zlib = __webpack_require__(/*! zlib */ \"zlib\");\n\nconst bufferUtil = __webpack_require__(/*! ./buffer-util */ \"./node_modules/ws/lib/buffer-util.js\");\nconst Limiter = __webpack_require__(/*! ./limiter */ \"./node_modules/ws/lib/limiter.js\");\nconst { kStatusCode } = __webpack_require__(/*! ./constants */ \"./node_modules/ws/lib/constants.js\");\n\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n  /**\n   * Creates a PerMessageDeflate instance.\n   *\n   * @param {Object} [options] Configuration options\n   * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n   *     for, or request, a custom client window size\n   * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n   *     acknowledge disabling of client context takeover\n   * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n   *     calls to zlib\n   * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n   *     use of a custom server window size\n   * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n   *     disabling of server context takeover\n   * @param {Number} [options.threshold=1024] Size (in bytes) below which\n   *     messages should not be compressed if context takeover is disabled\n   * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n   *     deflate\n   * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n   *     inflate\n   * @param {Boolean} [isServer=false] Create the instance in either server or\n   *     client mode\n   * @param {Number} [maxPayload=0] The maximum allowed message length\n   */\n  constructor(options, isServer, maxPayload) {\n    this._maxPayload = maxPayload | 0;\n    this._options = options || {};\n    this._threshold =\n      this._options.threshold !== undefined ? this._options.threshold : 1024;\n    this._isServer = !!isServer;\n    this._deflate = null;\n    this._inflate = null;\n\n    this.params = null;\n\n    if (!zlibLimiter) {\n      const concurrency =\n        this._options.concurrencyLimit !== undefined\n          ? this._options.concurrencyLimit\n          : 10;\n      zlibLimiter = new Limiter(concurrency);\n    }\n  }\n\n  /**\n   * @type {String}\n   */\n  static get extensionName() {\n    return 'permessage-deflate';\n  }\n\n  /**\n   * Create an extension negotiation offer.\n   *\n   * @return {Object} Extension parameters\n   * @public\n   */\n  offer() {\n    const params = {};\n\n    if (this._options.serverNoContextTakeover) {\n      params.server_no_context_takeover = true;\n    }\n    if (this._options.clientNoContextTakeover) {\n      params.client_no_context_takeover = true;\n    }\n    if (this._options.serverMaxWindowBits) {\n      params.server_max_window_bits = this._options.serverMaxWindowBits;\n    }\n    if (this._options.clientMaxWindowBits) {\n      params.client_max_window_bits = this._options.clientMaxWindowBits;\n    } else if (this._options.clientMaxWindowBits == null) {\n      params.client_max_window_bits = true;\n    }\n\n    return params;\n  }\n\n  /**\n   * Accept an extension negotiation offer/response.\n   *\n   * @param {Array} configurations The extension negotiation offers/reponse\n   * @return {Object} Accepted configuration\n   * @public\n   */\n  accept(configurations) {\n    configurations = this.normalizeParams(configurations);\n\n    this.params = this._isServer\n      ? this.acceptAsServer(configurations)\n      : this.acceptAsClient(configurations);\n\n    return this.params;\n  }\n\n  /**\n   * Releases all resources used by the extension.\n   *\n   * @public\n   */\n  cleanup() {\n    if (this._inflate) {\n      this._inflate.close();\n      this._inflate = null;\n    }\n\n    if (this._deflate) {\n      const callback = this._deflate[kCallback];\n\n      this._deflate.close();\n      this._deflate = null;\n\n      if (callback) {\n        callback(\n          new Error(\n            'The deflate stream was closed while data was being processed'\n          )\n        );\n      }\n    }\n  }\n\n  /**\n   *  Accept an extension negotiation offer.\n   *\n   * @param {Array} offers The extension negotiation offers\n   * @return {Object} Accepted configuration\n   * @private\n   */\n  acceptAsServer(offers) {\n    const opts = this._options;\n    const accepted = offers.find((params) => {\n      if (\n        (opts.serverNoContextTakeover === false &&\n          params.server_no_context_takeover) ||\n        (params.server_max_window_bits &&\n          (opts.serverMaxWindowBits === false ||\n            (typeof opts.serverMaxWindowBits === 'number' &&\n              opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n        (typeof opts.clientMaxWindowBits === 'number' &&\n          !params.client_max_window_bits)\n      ) {\n        return false;\n      }\n\n      return true;\n    });\n\n    if (!accepted) {\n      throw new Error('None of the extension offers can be accepted');\n    }\n\n    if (opts.serverNoContextTakeover) {\n      accepted.server_no_context_takeover = true;\n    }\n    if (opts.clientNoContextTakeover) {\n      accepted.client_no_context_takeover = true;\n    }\n    if (typeof opts.serverMaxWindowBits === 'number') {\n      accepted.server_max_window_bits = opts.serverMaxWindowBits;\n    }\n    if (typeof opts.clientMaxWindowBits === 'number') {\n      accepted.client_max_window_bits = opts.clientMaxWindowBits;\n    } else if (\n      accepted.client_max_window_bits === true ||\n      opts.clientMaxWindowBits === false\n    ) {\n      delete accepted.client_max_window_bits;\n    }\n\n    return accepted;\n  }\n\n  /**\n   * Accept the extension negotiation response.\n   *\n   * @param {Array} response The extension negotiation response\n   * @return {Object} Accepted configuration\n   * @private\n   */\n  acceptAsClient(response) {\n    const params = response[0];\n\n    if (\n      this._options.clientNoContextTakeover === false &&\n      params.client_no_context_takeover\n    ) {\n      throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n    }\n\n    if (!params.client_max_window_bits) {\n      if (typeof this._options.clientMaxWindowBits === 'number') {\n        params.client_max_window_bits = this._options.clientMaxWindowBits;\n      }\n    } else if (\n      this._options.clientMaxWindowBits === false ||\n      (typeof this._options.clientMaxWindowBits === 'number' &&\n        params.client_max_window_bits > this._options.clientMaxWindowBits)\n    ) {\n      throw new Error(\n        'Unexpected or invalid parameter \"client_max_window_bits\"'\n      );\n    }\n\n    return params;\n  }\n\n  /**\n   * Normalize parameters.\n   *\n   * @param {Array} configurations The extension negotiation offers/reponse\n   * @return {Array} The offers/response with normalized parameters\n   * @private\n   */\n  normalizeParams(configurations) {\n    configurations.forEach((params) => {\n      Object.keys(params).forEach((key) => {\n        let value = params[key];\n\n        if (value.length > 1) {\n          throw new Error(`Parameter \"${key}\" must have only a single value`);\n        }\n\n        value = value[0];\n\n        if (key === 'client_max_window_bits') {\n          if (value !== true) {\n            const num = +value;\n            if (!Number.isInteger(num) || num < 8 || num > 15) {\n              throw new TypeError(\n                `Invalid value for parameter \"${key}\": ${value}`\n              );\n            }\n            value = num;\n          } else if (!this._isServer) {\n            throw new TypeError(\n              `Invalid value for parameter \"${key}\": ${value}`\n            );\n          }\n        } else if (key === 'server_max_window_bits') {\n          const num = +value;\n          if (!Number.isInteger(num) || num < 8 || num > 15) {\n            throw new TypeError(\n              `Invalid value for parameter \"${key}\": ${value}`\n            );\n          }\n          value = num;\n        } else if (\n          key === 'client_no_context_takeover' ||\n          key === 'server_no_context_takeover'\n        ) {\n          if (value !== true) {\n            throw new TypeError(\n              `Invalid value for parameter \"${key}\": ${value}`\n            );\n          }\n        } else {\n          throw new Error(`Unknown parameter \"${key}\"`);\n        }\n\n        params[key] = value;\n      });\n    });\n\n    return configurations;\n  }\n\n  /**\n   * Decompress data. Concurrency limited.\n   *\n   * @param {Buffer} data Compressed data\n   * @param {Boolean} fin Specifies whether or not this is the last fragment\n   * @param {Function} callback Callback\n   * @public\n   */\n  decompress(data, fin, callback) {\n    zlibLimiter.add((done) => {\n      this._decompress(data, fin, (err, result) => {\n        done();\n        callback(err, result);\n      });\n    });\n  }\n\n  /**\n   * Compress data. Concurrency limited.\n   *\n   * @param {(Buffer|String)} data Data to compress\n   * @param {Boolean} fin Specifies whether or not this is the last fragment\n   * @param {Function} callback Callback\n   * @public\n   */\n  compress(data, fin, callback) {\n    zlibLimiter.add((done) => {\n      this._compress(data, fin, (err, result) => {\n        done();\n        callback(err, result);\n      });\n    });\n  }\n\n  /**\n   * Decompress data.\n   *\n   * @param {Buffer} data Compressed data\n   * @param {Boolean} fin Specifies whether or not this is the last fragment\n   * @param {Function} callback Callback\n   * @private\n   */\n  _decompress(data, fin, callback) {\n    const endpoint = this._isServer ? 'client' : 'server';\n\n    if (!this._inflate) {\n      const key = `${endpoint}_max_window_bits`;\n      const windowBits =\n        typeof this.params[key] !== 'number'\n          ? zlib.Z_DEFAULT_WINDOWBITS\n          : this.params[key];\n\n      this._inflate = zlib.createInflateRaw({\n        ...this._options.zlibInflateOptions,\n        windowBits\n      });\n      this._inflate[kPerMessageDeflate] = this;\n      this._inflate[kTotalLength] = 0;\n      this._inflate[kBuffers] = [];\n      this._inflate.on('error', inflateOnError);\n      this._inflate.on('data', inflateOnData);\n    }\n\n    this._inflate[kCallback] = callback;\n\n    this._inflate.write(data);\n    if (fin) this._inflate.write(TRAILER);\n\n    this._inflate.flush(() => {\n      const err = this._inflate[kError];\n\n      if (err) {\n        this._inflate.close();\n        this._inflate = null;\n        callback(err);\n        return;\n      }\n\n      const data = bufferUtil.concat(\n        this._inflate[kBuffers],\n        this._inflate[kTotalLength]\n      );\n\n      if (this._inflate._readableState.endEmitted) {\n        this._inflate.close();\n        this._inflate = null;\n      } else {\n        this._inflate[kTotalLength] = 0;\n        this._inflate[kBuffers] = [];\n\n        if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n          this._inflate.reset();\n        }\n      }\n\n      callback(null, data);\n    });\n  }\n\n  /**\n   * Compress data.\n   *\n   * @param {(Buffer|String)} data Data to compress\n   * @param {Boolean} fin Specifies whether or not this is the last fragment\n   * @param {Function} callback Callback\n   * @private\n   */\n  _compress(data, fin, callback) {\n    const endpoint = this._isServer ? 'server' : 'client';\n\n    if (!this._deflate) {\n      const key = `${endpoint}_max_window_bits`;\n      const windowBits =\n        typeof this.params[key] !== 'number'\n          ? zlib.Z_DEFAULT_WINDOWBITS\n          : this.params[key];\n\n      this._deflate = zlib.createDeflateRaw({\n        ...this._options.zlibDeflateOptions,\n        windowBits\n      });\n\n      this._deflate[kTotalLength] = 0;\n      this._deflate[kBuffers] = [];\n\n      this._deflate.on('data', deflateOnData);\n    }\n\n    this._deflate[kCallback] = callback;\n\n    this._deflate.write(data);\n    this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n      if (!this._deflate) {\n        //\n        // The deflate stream was closed while data was being processed.\n        //\n        return;\n      }\n\n      let data = bufferUtil.concat(\n        this._deflate[kBuffers],\n        this._deflate[kTotalLength]\n      );\n\n      if (fin) data = data.slice(0, data.length - 4);\n\n      //\n      // Ensure that the callback will not be called again in\n      // `PerMessageDeflate#cleanup()`.\n      //\n      this._deflate[kCallback] = null;\n\n      this._deflate[kTotalLength] = 0;\n      this._deflate[kBuffers] = [];\n\n      if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n        this._deflate.reset();\n      }\n\n      callback(null, data);\n    });\n  }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n  this[kBuffers].push(chunk);\n  this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n  this[kTotalLength] += chunk.length;\n\n  if (\n    this[kPerMessageDeflate]._maxPayload < 1 ||\n    this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n  ) {\n    this[kBuffers].push(chunk);\n    return;\n  }\n\n  this[kError] = new RangeError('Max payload size exceeded');\n  this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n  this[kError][kStatusCode] = 1009;\n  this.removeListener('data', inflateOnData);\n  this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n  //\n  // There is no need to call `Zlib#close()` as the handle is automatically\n  // closed when an error is emitted.\n  //\n  this[kPerMessageDeflate]._inflate = null;\n  err[kStatusCode] = 1007;\n  this[kCallback](err);\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ws/lib/permessage-deflate.js?")},"./node_modules/ws/lib/receiver.js":
/*!*****************************************!*\
  !*** ./node_modules/ws/lib/receiver.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Writable } = __webpack_require__(/*! stream */ \"stream\");\n\nconst PerMessageDeflate = __webpack_require__(/*! ./permessage-deflate */ \"./node_modules/ws/lib/permessage-deflate.js\");\nconst {\n  BINARY_TYPES,\n  EMPTY_BUFFER,\n  kStatusCode,\n  kWebSocket\n} = __webpack_require__(/*! ./constants */ \"./node_modules/ws/lib/constants.js\");\nconst { concat, toArrayBuffer, unmask } = __webpack_require__(/*! ./buffer-util */ \"./node_modules/ws/lib/buffer-util.js\");\nconst { isValidStatusCode, isValidUTF8 } = __webpack_require__(/*! ./validation */ \"./node_modules/ws/lib/validation.js\");\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n  /**\n   * Creates a Receiver instance.\n   *\n   * @param {Object} [options] Options object\n   * @param {String} [options.binaryType=nodebuffer] The type for binary data\n   * @param {Object} [options.extensions] An object containing the negotiated\n   *     extensions\n   * @param {Boolean} [options.isServer=false] Specifies whether to operate in\n   *     client or server mode\n   * @param {Number} [options.maxPayload=0] The maximum allowed message length\n   * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n   *     not to skip UTF-8 validation for text and close messages\n   */\n  constructor(options = {}) {\n    super();\n\n    this._binaryType = options.binaryType || BINARY_TYPES[0];\n    this._extensions = options.extensions || {};\n    this._isServer = !!options.isServer;\n    this._maxPayload = options.maxPayload | 0;\n    this._skipUTF8Validation = !!options.skipUTF8Validation;\n    this[kWebSocket] = undefined;\n\n    this._bufferedBytes = 0;\n    this._buffers = [];\n\n    this._compressed = false;\n    this._payloadLength = 0;\n    this._mask = undefined;\n    this._fragmented = 0;\n    this._masked = false;\n    this._fin = false;\n    this._opcode = 0;\n\n    this._totalPayloadLength = 0;\n    this._messageLength = 0;\n    this._fragments = [];\n\n    this._state = GET_INFO;\n    this._loop = false;\n  }\n\n  /**\n   * Implements `Writable.prototype._write()`.\n   *\n   * @param {Buffer} chunk The chunk of data to write\n   * @param {String} encoding The character encoding of `chunk`\n   * @param {Function} cb Callback\n   * @private\n   */\n  _write(chunk, encoding, cb) {\n    if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n    this._bufferedBytes += chunk.length;\n    this._buffers.push(chunk);\n    this.startLoop(cb);\n  }\n\n  /**\n   * Consumes `n` bytes from the buffered data.\n   *\n   * @param {Number} n The number of bytes to consume\n   * @return {Buffer} The consumed bytes\n   * @private\n   */\n  consume(n) {\n    this._bufferedBytes -= n;\n\n    if (n === this._buffers[0].length) return this._buffers.shift();\n\n    if (n < this._buffers[0].length) {\n      const buf = this._buffers[0];\n      this._buffers[0] = buf.slice(n);\n      return buf.slice(0, n);\n    }\n\n    const dst = Buffer.allocUnsafe(n);\n\n    do {\n      const buf = this._buffers[0];\n      const offset = dst.length - n;\n\n      if (n >= buf.length) {\n        dst.set(this._buffers.shift(), offset);\n      } else {\n        dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n        this._buffers[0] = buf.slice(n);\n      }\n\n      n -= buf.length;\n    } while (n > 0);\n\n    return dst;\n  }\n\n  /**\n   * Starts the parsing loop.\n   *\n   * @param {Function} cb Callback\n   * @private\n   */\n  startLoop(cb) {\n    let err;\n    this._loop = true;\n\n    do {\n      switch (this._state) {\n        case GET_INFO:\n          err = this.getInfo();\n          break;\n        case GET_PAYLOAD_LENGTH_16:\n          err = this.getPayloadLength16();\n          break;\n        case GET_PAYLOAD_LENGTH_64:\n          err = this.getPayloadLength64();\n          break;\n        case GET_MASK:\n          this.getMask();\n          break;\n        case GET_DATA:\n          err = this.getData(cb);\n          break;\n        default:\n          // `INFLATING`\n          this._loop = false;\n          return;\n      }\n    } while (this._loop);\n\n    cb(err);\n  }\n\n  /**\n   * Reads the first two bytes of a frame.\n   *\n   * @return {(RangeError|undefined)} A possible error\n   * @private\n   */\n  getInfo() {\n    if (this._bufferedBytes < 2) {\n      this._loop = false;\n      return;\n    }\n\n    const buf = this.consume(2);\n\n    if ((buf[0] & 0x30) !== 0x00) {\n      this._loop = false;\n      return error(\n        RangeError,\n        'RSV2 and RSV3 must be clear',\n        true,\n        1002,\n        'WS_ERR_UNEXPECTED_RSV_2_3'\n      );\n    }\n\n    const compressed = (buf[0] & 0x40) === 0x40;\n\n    if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n      this._loop = false;\n      return error(\n        RangeError,\n        'RSV1 must be clear',\n        true,\n        1002,\n        'WS_ERR_UNEXPECTED_RSV_1'\n      );\n    }\n\n    this._fin = (buf[0] & 0x80) === 0x80;\n    this._opcode = buf[0] & 0x0f;\n    this._payloadLength = buf[1] & 0x7f;\n\n    if (this._opcode === 0x00) {\n      if (compressed) {\n        this._loop = false;\n        return error(\n          RangeError,\n          'RSV1 must be clear',\n          true,\n          1002,\n          'WS_ERR_UNEXPECTED_RSV_1'\n        );\n      }\n\n      if (!this._fragmented) {\n        this._loop = false;\n        return error(\n          RangeError,\n          'invalid opcode 0',\n          true,\n          1002,\n          'WS_ERR_INVALID_OPCODE'\n        );\n      }\n\n      this._opcode = this._fragmented;\n    } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n      if (this._fragmented) {\n        this._loop = false;\n        return error(\n          RangeError,\n          `invalid opcode ${this._opcode}`,\n          true,\n          1002,\n          'WS_ERR_INVALID_OPCODE'\n        );\n      }\n\n      this._compressed = compressed;\n    } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n      if (!this._fin) {\n        this._loop = false;\n        return error(\n          RangeError,\n          'FIN must be set',\n          true,\n          1002,\n          'WS_ERR_EXPECTED_FIN'\n        );\n      }\n\n      if (compressed) {\n        this._loop = false;\n        return error(\n          RangeError,\n          'RSV1 must be clear',\n          true,\n          1002,\n          'WS_ERR_UNEXPECTED_RSV_1'\n        );\n      }\n\n      if (this._payloadLength > 0x7d) {\n        this._loop = false;\n        return error(\n          RangeError,\n          `invalid payload length ${this._payloadLength}`,\n          true,\n          1002,\n          'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n        );\n      }\n    } else {\n      this._loop = false;\n      return error(\n        RangeError,\n        `invalid opcode ${this._opcode}`,\n        true,\n        1002,\n        'WS_ERR_INVALID_OPCODE'\n      );\n    }\n\n    if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n    this._masked = (buf[1] & 0x80) === 0x80;\n\n    if (this._isServer) {\n      if (!this._masked) {\n        this._loop = false;\n        return error(\n          RangeError,\n          'MASK must be set',\n          true,\n          1002,\n          'WS_ERR_EXPECTED_MASK'\n        );\n      }\n    } else if (this._masked) {\n      this._loop = false;\n      return error(\n        RangeError,\n        'MASK must be clear',\n        true,\n        1002,\n        'WS_ERR_UNEXPECTED_MASK'\n      );\n    }\n\n    if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n    else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n    else return this.haveLength();\n  }\n\n  /**\n   * Gets extended payload length (7+16).\n   *\n   * @return {(RangeError|undefined)} A possible error\n   * @private\n   */\n  getPayloadLength16() {\n    if (this._bufferedBytes < 2) {\n      this._loop = false;\n      return;\n    }\n\n    this._payloadLength = this.consume(2).readUInt16BE(0);\n    return this.haveLength();\n  }\n\n  /**\n   * Gets extended payload length (7+64).\n   *\n   * @return {(RangeError|undefined)} A possible error\n   * @private\n   */\n  getPayloadLength64() {\n    if (this._bufferedBytes < 8) {\n      this._loop = false;\n      return;\n    }\n\n    const buf = this.consume(8);\n    const num = buf.readUInt32BE(0);\n\n    //\n    // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n    // if payload length is greater than this number.\n    //\n    if (num > Math.pow(2, 53 - 32) - 1) {\n      this._loop = false;\n      return error(\n        RangeError,\n        'Unsupported WebSocket frame: payload length > 2^53 - 1',\n        false,\n        1009,\n        'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n      );\n    }\n\n    this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n    return this.haveLength();\n  }\n\n  /**\n   * Payload length has been read.\n   *\n   * @return {(RangeError|undefined)} A possible error\n   * @private\n   */\n  haveLength() {\n    if (this._payloadLength && this._opcode < 0x08) {\n      this._totalPayloadLength += this._payloadLength;\n      if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n        this._loop = false;\n        return error(\n          RangeError,\n          'Max payload size exceeded',\n          false,\n          1009,\n          'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n        );\n      }\n    }\n\n    if (this._masked) this._state = GET_MASK;\n    else this._state = GET_DATA;\n  }\n\n  /**\n   * Reads mask bytes.\n   *\n   * @private\n   */\n  getMask() {\n    if (this._bufferedBytes < 4) {\n      this._loop = false;\n      return;\n    }\n\n    this._mask = this.consume(4);\n    this._state = GET_DATA;\n  }\n\n  /**\n   * Reads data bytes.\n   *\n   * @param {Function} cb Callback\n   * @return {(Error|RangeError|undefined)} A possible error\n   * @private\n   */\n  getData(cb) {\n    let data = EMPTY_BUFFER;\n\n    if (this._payloadLength) {\n      if (this._bufferedBytes < this._payloadLength) {\n        this._loop = false;\n        return;\n      }\n\n      data = this.consume(this._payloadLength);\n\n      if (\n        this._masked &&\n        (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0\n      ) {\n        unmask(data, this._mask);\n      }\n    }\n\n    if (this._opcode > 0x07) return this.controlMessage(data);\n\n    if (this._compressed) {\n      this._state = INFLATING;\n      this.decompress(data, cb);\n      return;\n    }\n\n    if (data.length) {\n      //\n      // This message is not compressed so its length is the sum of the payload\n      // length of all fragments.\n      //\n      this._messageLength = this._totalPayloadLength;\n      this._fragments.push(data);\n    }\n\n    return this.dataMessage();\n  }\n\n  /**\n   * Decompresses data.\n   *\n   * @param {Buffer} data Compressed data\n   * @param {Function} cb Callback\n   * @private\n   */\n  decompress(data, cb) {\n    const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n    perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n      if (err) return cb(err);\n\n      if (buf.length) {\n        this._messageLength += buf.length;\n        if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n          return cb(\n            error(\n              RangeError,\n              'Max payload size exceeded',\n              false,\n              1009,\n              'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n            )\n          );\n        }\n\n        this._fragments.push(buf);\n      }\n\n      const er = this.dataMessage();\n      if (er) return cb(er);\n\n      this.startLoop(cb);\n    });\n  }\n\n  /**\n   * Handles a data message.\n   *\n   * @return {(Error|undefined)} A possible error\n   * @private\n   */\n  dataMessage() {\n    if (this._fin) {\n      const messageLength = this._messageLength;\n      const fragments = this._fragments;\n\n      this._totalPayloadLength = 0;\n      this._messageLength = 0;\n      this._fragmented = 0;\n      this._fragments = [];\n\n      if (this._opcode === 2) {\n        let data;\n\n        if (this._binaryType === 'nodebuffer') {\n          data = concat(fragments, messageLength);\n        } else if (this._binaryType === 'arraybuffer') {\n          data = toArrayBuffer(concat(fragments, messageLength));\n        } else {\n          data = fragments;\n        }\n\n        this.emit('message', data, true);\n      } else {\n        const buf = concat(fragments, messageLength);\n\n        if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n          this._loop = false;\n          return error(\n            Error,\n            'invalid UTF-8 sequence',\n            true,\n            1007,\n            'WS_ERR_INVALID_UTF8'\n          );\n        }\n\n        this.emit('message', buf, false);\n      }\n    }\n\n    this._state = GET_INFO;\n  }\n\n  /**\n   * Handles a control message.\n   *\n   * @param {Buffer} data Data to handle\n   * @return {(Error|RangeError|undefined)} A possible error\n   * @private\n   */\n  controlMessage(data) {\n    if (this._opcode === 0x08) {\n      this._loop = false;\n\n      if (data.length === 0) {\n        this.emit('conclude', 1005, EMPTY_BUFFER);\n        this.end();\n      } else if (data.length === 1) {\n        return error(\n          RangeError,\n          'invalid payload length 1',\n          true,\n          1002,\n          'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n        );\n      } else {\n        const code = data.readUInt16BE(0);\n\n        if (!isValidStatusCode(code)) {\n          return error(\n            RangeError,\n            `invalid status code ${code}`,\n            true,\n            1002,\n            'WS_ERR_INVALID_CLOSE_CODE'\n          );\n        }\n\n        const buf = data.slice(2);\n\n        if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n          return error(\n            Error,\n            'invalid UTF-8 sequence',\n            true,\n            1007,\n            'WS_ERR_INVALID_UTF8'\n          );\n        }\n\n        this.emit('conclude', code, buf);\n        this.end();\n      }\n    } else if (this._opcode === 0x09) {\n      this.emit('ping', data);\n    } else {\n      this.emit('pong', data);\n    }\n\n    this._state = GET_INFO;\n  }\n}\n\nmodule.exports = Receiver;\n\n/**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n *     `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\nfunction error(ErrorCtor, message, prefix, statusCode, errorCode) {\n  const err = new ErrorCtor(\n    prefix ? `Invalid WebSocket frame: ${message}` : message\n  );\n\n  Error.captureStackTrace(err, error);\n  err.code = errorCode;\n  err[kStatusCode] = statusCode;\n  return err;\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ws/lib/receiver.js?")},"./node_modules/ws/lib/sender.js":
/*!***************************************!*\
  !*** ./node_modules/ws/lib/sender.js ***!
  \***************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^net|tls$\" }] */\n\n\n\nconst net = __webpack_require__(/*! net */ \"net\");\nconst tls = __webpack_require__(/*! tls */ \"tls\");\nconst { randomFillSync } = __webpack_require__(/*! crypto */ \"crypto\");\n\nconst PerMessageDeflate = __webpack_require__(/*! ./permessage-deflate */ \"./node_modules/ws/lib/permessage-deflate.js\");\nconst { EMPTY_BUFFER } = __webpack_require__(/*! ./constants */ \"./node_modules/ws/lib/constants.js\");\nconst { isValidStatusCode } = __webpack_require__(/*! ./validation */ \"./node_modules/ws/lib/validation.js\");\nconst { mask: applyMask, toBuffer } = __webpack_require__(/*! ./buffer-util */ \"./node_modules/ws/lib/buffer-util.js\");\n\nconst kByteLength = Symbol('kByteLength');\nconst maskBuffer = Buffer.alloc(4);\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n  /**\n   * Creates a Sender instance.\n   *\n   * @param {(net.Socket|tls.Socket)} socket The connection socket\n   * @param {Object} [extensions] An object containing the negotiated extensions\n   * @param {Function} [generateMask] The function used to generate the masking\n   *     key\n   */\n  constructor(socket, extensions, generateMask) {\n    this._extensions = extensions || {};\n\n    if (generateMask) {\n      this._generateMask = generateMask;\n      this._maskBuffer = Buffer.alloc(4);\n    }\n\n    this._socket = socket;\n\n    this._firstFragment = true;\n    this._compress = false;\n\n    this._bufferedBytes = 0;\n    this._deflating = false;\n    this._queue = [];\n  }\n\n  /**\n   * Frames a piece of data according to the HyBi WebSocket protocol.\n   *\n   * @param {(Buffer|String)} data The data to frame\n   * @param {Object} options Options object\n   * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n   *     FIN bit\n   * @param {Function} [options.generateMask] The function used to generate the\n   *     masking key\n   * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n   *     `data`\n   * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n   *     key\n   * @param {Number} options.opcode The opcode\n   * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n   *     modified\n   * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n   *     RSV1 bit\n   * @return {(Buffer|String)[]} The framed data\n   * @public\n   */\n  static frame(data, options) {\n    let mask;\n    let merge = false;\n    let offset = 2;\n    let skipMasking = false;\n\n    if (options.mask) {\n      mask = options.maskBuffer || maskBuffer;\n\n      if (options.generateMask) {\n        options.generateMask(mask);\n      } else {\n        randomFillSync(mask, 0, 4);\n      }\n\n      skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;\n      offset = 6;\n    }\n\n    let dataLength;\n\n    if (typeof data === 'string') {\n      if (\n        (!options.mask || skipMasking) &&\n        options[kByteLength] !== undefined\n      ) {\n        dataLength = options[kByteLength];\n      } else {\n        data = Buffer.from(data);\n        dataLength = data.length;\n      }\n    } else {\n      dataLength = data.length;\n      merge = options.mask && options.readOnly && !skipMasking;\n    }\n\n    let payloadLength = dataLength;\n\n    if (dataLength >= 65536) {\n      offset += 8;\n      payloadLength = 127;\n    } else if (dataLength > 125) {\n      offset += 2;\n      payloadLength = 126;\n    }\n\n    const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset);\n\n    target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n    if (options.rsv1) target[0] |= 0x40;\n\n    target[1] = payloadLength;\n\n    if (payloadLength === 126) {\n      target.writeUInt16BE(dataLength, 2);\n    } else if (payloadLength === 127) {\n      target[2] = target[3] = 0;\n      target.writeUIntBE(dataLength, 4, 6);\n    }\n\n    if (!options.mask) return [target, data];\n\n    target[1] |= 0x80;\n    target[offset - 4] = mask[0];\n    target[offset - 3] = mask[1];\n    target[offset - 2] = mask[2];\n    target[offset - 1] = mask[3];\n\n    if (skipMasking) return [target, data];\n\n    if (merge) {\n      applyMask(data, mask, target, offset, dataLength);\n      return [target];\n    }\n\n    applyMask(data, mask, data, 0, dataLength);\n    return [target, data];\n  }\n\n  /**\n   * Sends a close message to the other peer.\n   *\n   * @param {Number} [code] The status code component of the body\n   * @param {(String|Buffer)} [data] The message component of the body\n   * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n   * @param {Function} [cb] Callback\n   * @public\n   */\n  close(code, data, mask, cb) {\n    let buf;\n\n    if (code === undefined) {\n      buf = EMPTY_BUFFER;\n    } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n      throw new TypeError('First argument must be a valid error code number');\n    } else if (data === undefined || !data.length) {\n      buf = Buffer.allocUnsafe(2);\n      buf.writeUInt16BE(code, 0);\n    } else {\n      const length = Buffer.byteLength(data);\n\n      if (length > 123) {\n        throw new RangeError('The message must not be greater than 123 bytes');\n      }\n\n      buf = Buffer.allocUnsafe(2 + length);\n      buf.writeUInt16BE(code, 0);\n\n      if (typeof data === 'string') {\n        buf.write(data, 2);\n      } else {\n        buf.set(data, 2);\n      }\n    }\n\n    const options = {\n      [kByteLength]: buf.length,\n      fin: true,\n      generateMask: this._generateMask,\n      mask,\n      maskBuffer: this._maskBuffer,\n      opcode: 0x08,\n      readOnly: false,\n      rsv1: false\n    };\n\n    if (this._deflating) {\n      this.enqueue([this.dispatch, buf, false, options, cb]);\n    } else {\n      this.sendFrame(Sender.frame(buf, options), cb);\n    }\n  }\n\n  /**\n   * Sends a ping message to the other peer.\n   *\n   * @param {*} data The message to send\n   * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n   * @param {Function} [cb] Callback\n   * @public\n   */\n  ping(data, mask, cb) {\n    let byteLength;\n    let readOnly;\n\n    if (typeof data === 'string') {\n      byteLength = Buffer.byteLength(data);\n      readOnly = false;\n    } else {\n      data = toBuffer(data);\n      byteLength = data.length;\n      readOnly = toBuffer.readOnly;\n    }\n\n    if (byteLength > 125) {\n      throw new RangeError('The data size must not be greater than 125 bytes');\n    }\n\n    const options = {\n      [kByteLength]: byteLength,\n      fin: true,\n      generateMask: this._generateMask,\n      mask,\n      maskBuffer: this._maskBuffer,\n      opcode: 0x09,\n      readOnly,\n      rsv1: false\n    };\n\n    if (this._deflating) {\n      this.enqueue([this.dispatch, data, false, options, cb]);\n    } else {\n      this.sendFrame(Sender.frame(data, options), cb);\n    }\n  }\n\n  /**\n   * Sends a pong message to the other peer.\n   *\n   * @param {*} data The message to send\n   * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n   * @param {Function} [cb] Callback\n   * @public\n   */\n  pong(data, mask, cb) {\n    let byteLength;\n    let readOnly;\n\n    if (typeof data === 'string') {\n      byteLength = Buffer.byteLength(data);\n      readOnly = false;\n    } else {\n      data = toBuffer(data);\n      byteLength = data.length;\n      readOnly = toBuffer.readOnly;\n    }\n\n    if (byteLength > 125) {\n      throw new RangeError('The data size must not be greater than 125 bytes');\n    }\n\n    const options = {\n      [kByteLength]: byteLength,\n      fin: true,\n      generateMask: this._generateMask,\n      mask,\n      maskBuffer: this._maskBuffer,\n      opcode: 0x0a,\n      readOnly,\n      rsv1: false\n    };\n\n    if (this._deflating) {\n      this.enqueue([this.dispatch, data, false, options, cb]);\n    } else {\n      this.sendFrame(Sender.frame(data, options), cb);\n    }\n  }\n\n  /**\n   * Sends a data message to the other peer.\n   *\n   * @param {*} data The message to send\n   * @param {Object} options Options object\n   * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n   *     or text\n   * @param {Boolean} [options.compress=false] Specifies whether or not to\n   *     compress `data`\n   * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n   *     last one\n   * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n   *     `data`\n   * @param {Function} [cb] Callback\n   * @public\n   */\n  send(data, options, cb) {\n    const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n    let opcode = options.binary ? 2 : 1;\n    let rsv1 = options.compress;\n\n    let byteLength;\n    let readOnly;\n\n    if (typeof data === 'string') {\n      byteLength = Buffer.byteLength(data);\n      readOnly = false;\n    } else {\n      data = toBuffer(data);\n      byteLength = data.length;\n      readOnly = toBuffer.readOnly;\n    }\n\n    if (this._firstFragment) {\n      this._firstFragment = false;\n      if (\n        rsv1 &&\n        perMessageDeflate &&\n        perMessageDeflate.params[\n          perMessageDeflate._isServer\n            ? 'server_no_context_takeover'\n            : 'client_no_context_takeover'\n        ]\n      ) {\n        rsv1 = byteLength >= perMessageDeflate._threshold;\n      }\n      this._compress = rsv1;\n    } else {\n      rsv1 = false;\n      opcode = 0;\n    }\n\n    if (options.fin) this._firstFragment = true;\n\n    if (perMessageDeflate) {\n      const opts = {\n        [kByteLength]: byteLength,\n        fin: options.fin,\n        generateMask: this._generateMask,\n        mask: options.mask,\n        maskBuffer: this._maskBuffer,\n        opcode,\n        readOnly,\n        rsv1\n      };\n\n      if (this._deflating) {\n        this.enqueue([this.dispatch, data, this._compress, opts, cb]);\n      } else {\n        this.dispatch(data, this._compress, opts, cb);\n      }\n    } else {\n      this.sendFrame(\n        Sender.frame(data, {\n          [kByteLength]: byteLength,\n          fin: options.fin,\n          generateMask: this._generateMask,\n          mask: options.mask,\n          maskBuffer: this._maskBuffer,\n          opcode,\n          readOnly,\n          rsv1: false\n        }),\n        cb\n      );\n    }\n  }\n\n  /**\n   * Dispatches a message.\n   *\n   * @param {(Buffer|String)} data The message to send\n   * @param {Boolean} [compress=false] Specifies whether or not to compress\n   *     `data`\n   * @param {Object} options Options object\n   * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n   *     FIN bit\n   * @param {Function} [options.generateMask] The function used to generate the\n   *     masking key\n   * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n   *     `data`\n   * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n   *     key\n   * @param {Number} options.opcode The opcode\n   * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n   *     modified\n   * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n   *     RSV1 bit\n   * @param {Function} [cb] Callback\n   * @private\n   */\n  dispatch(data, compress, options, cb) {\n    if (!compress) {\n      this.sendFrame(Sender.frame(data, options), cb);\n      return;\n    }\n\n    const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n    this._bufferedBytes += options[kByteLength];\n    this._deflating = true;\n    perMessageDeflate.compress(data, options.fin, (_, buf) => {\n      if (this._socket.destroyed) {\n        const err = new Error(\n          'The socket was closed while data was being compressed'\n        );\n\n        if (typeof cb === 'function') cb(err);\n\n        for (let i = 0; i < this._queue.length; i++) {\n          const params = this._queue[i];\n          const callback = params[params.length - 1];\n\n          if (typeof callback === 'function') callback(err);\n        }\n\n        return;\n      }\n\n      this._bufferedBytes -= options[kByteLength];\n      this._deflating = false;\n      options.readOnly = false;\n      this.sendFrame(Sender.frame(buf, options), cb);\n      this.dequeue();\n    });\n  }\n\n  /**\n   * Executes queued send operations.\n   *\n   * @private\n   */\n  dequeue() {\n    while (!this._deflating && this._queue.length) {\n      const params = this._queue.shift();\n\n      this._bufferedBytes -= params[3][kByteLength];\n      Reflect.apply(params[0], this, params.slice(1));\n    }\n  }\n\n  /**\n   * Enqueues a send operation.\n   *\n   * @param {Array} params Send operation parameters.\n   * @private\n   */\n  enqueue(params) {\n    this._bufferedBytes += params[3][kByteLength];\n    this._queue.push(params);\n  }\n\n  /**\n   * Sends a frame.\n   *\n   * @param {Buffer[]} list The frame to send\n   * @param {Function} [cb] Callback\n   * @private\n   */\n  sendFrame(list, cb) {\n    if (list.length === 2) {\n      this._socket.cork();\n      this._socket.write(list[0]);\n      this._socket.write(list[1], cb);\n      this._socket.uncork();\n    } else {\n      this._socket.write(list[0], cb);\n    }\n  }\n}\n\nmodule.exports = Sender;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ws/lib/sender.js?")},"./node_modules/ws/lib/stream.js":
/*!***************************************!*\
  !*** ./node_modules/ws/lib/stream.js ***!
  \***************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { Duplex } = __webpack_require__(/*! stream */ \"stream\");\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n  stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n  if (!this.destroyed && this._writableState.finished) {\n    this.destroy();\n  }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n  this.removeListener('error', duplexOnError);\n  this.destroy();\n  if (this.listenerCount('error') === 0) {\n    // Do not suppress the throwing behavior.\n    this.emit('error', err);\n  }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n  let terminateOnDestroy = true;\n\n  const duplex = new Duplex({\n    ...options,\n    autoDestroy: false,\n    emitClose: false,\n    objectMode: false,\n    writableObjectMode: false\n  });\n\n  ws.on('message', function message(msg, isBinary) {\n    const data =\n      !isBinary && duplex._readableState.objectMode ? msg.toString() : msg;\n\n    if (!duplex.push(data)) ws.pause();\n  });\n\n  ws.once('error', function error(err) {\n    if (duplex.destroyed) return;\n\n    // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n    //\n    // - If the `'error'` event is emitted before the `'open'` event, then\n    //   `ws.terminate()` is a noop as no socket is assigned.\n    // - Otherwise, the error is re-emitted by the listener of the `'error'`\n    //   event of the `Receiver` object. The listener already closes the\n    //   connection by calling `ws.close()`. This allows a close frame to be\n    //   sent to the other peer. If `ws.terminate()` is called right after this,\n    //   then the close frame might not be sent.\n    terminateOnDestroy = false;\n    duplex.destroy(err);\n  });\n\n  ws.once('close', function close() {\n    if (duplex.destroyed) return;\n\n    duplex.push(null);\n  });\n\n  duplex._destroy = function (err, callback) {\n    if (ws.readyState === ws.CLOSED) {\n      callback(err);\n      process.nextTick(emitClose, duplex);\n      return;\n    }\n\n    let called = false;\n\n    ws.once('error', function error(err) {\n      called = true;\n      callback(err);\n    });\n\n    ws.once('close', function close() {\n      if (!called) callback(err);\n      process.nextTick(emitClose, duplex);\n    });\n\n    if (terminateOnDestroy) ws.terminate();\n  };\n\n  duplex._final = function (callback) {\n    if (ws.readyState === ws.CONNECTING) {\n      ws.once('open', function open() {\n        duplex._final(callback);\n      });\n      return;\n    }\n\n    // If the value of the `_socket` property is `null` it means that `ws` is a\n    // client websocket and the handshake failed. In fact, when this happens, a\n    // socket is never assigned to the websocket. Wait for the `'error'` event\n    // that will be emitted by the websocket.\n    if (ws._socket === null) return;\n\n    if (ws._socket._writableState.finished) {\n      callback();\n      if (duplex._readableState.endEmitted) duplex.destroy();\n    } else {\n      ws._socket.once('finish', function finish() {\n        // `duplex` is not destroyed here because the `'end'` event will be\n        // emitted on `duplex` after this `'finish'` event. The EOF signaling\n        // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n        callback();\n      });\n      ws.close();\n    }\n  };\n\n  duplex._read = function () {\n    if (ws.isPaused) ws.resume();\n  };\n\n  duplex._write = function (chunk, encoding, callback) {\n    if (ws.readyState === ws.CONNECTING) {\n      ws.once('open', function open() {\n        duplex._write(chunk, encoding, callback);\n      });\n      return;\n    }\n\n    ws.send(chunk, callback);\n  };\n\n  duplex.on('end', duplexOnEnd);\n  duplex.on('error', duplexOnError);\n  return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ws/lib/stream.js?")},"./node_modules/ws/lib/subprotocol.js":
/*!********************************************!*\
  !*** ./node_modules/ws/lib/subprotocol.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst { tokenChars } = __webpack_require__(/*! ./validation */ \"./node_modules/ws/lib/validation.js\");\n\n/**\n * Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.\n *\n * @param {String} header The field value of the header\n * @return {Set} The subprotocol names\n * @public\n */\nfunction parse(header) {\n  const protocols = new Set();\n  let start = -1;\n  let end = -1;\n  let i = 0;\n\n  for (i; i < header.length; i++) {\n    const code = header.charCodeAt(i);\n\n    if (end === -1 && tokenChars[code] === 1) {\n      if (start === -1) start = i;\n    } else if (\n      i !== 0 &&\n      (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n    ) {\n      if (end === -1 && start !== -1) end = i;\n    } else if (code === 0x2c /* ',' */) {\n      if (start === -1) {\n        throw new SyntaxError(`Unexpected character at index ${i}`);\n      }\n\n      if (end === -1) end = i;\n\n      const protocol = header.slice(start, end);\n\n      if (protocols.has(protocol)) {\n        throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n      }\n\n      protocols.add(protocol);\n      start = end = -1;\n    } else {\n      throw new SyntaxError(`Unexpected character at index ${i}`);\n    }\n  }\n\n  if (start === -1 || end !== -1) {\n    throw new SyntaxError('Unexpected end of input');\n  }\n\n  const protocol = header.slice(start, i);\n\n  if (protocols.has(protocol)) {\n    throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n  }\n\n  protocols.add(protocol);\n  return protocols;\n}\n\nmodule.exports = { parse };\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ws/lib/subprotocol.js?")},"./node_modules/ws/lib/validation.js":
/*!*******************************************!*\
  !*** ./node_modules/ws/lib/validation.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n  0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n  return (\n    (code >= 1000 &&\n      code <= 1014 &&\n      code !== 1004 &&\n      code !== 1005 &&\n      code !== 1006) ||\n    (code >= 3000 && code <= 4999)\n  );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n  const len = buf.length;\n  let i = 0;\n\n  while (i < len) {\n    if ((buf[i] & 0x80) === 0) {\n      // 0xxxxxxx\n      i++;\n    } else if ((buf[i] & 0xe0) === 0xc0) {\n      // 110xxxxx 10xxxxxx\n      if (\n        i + 1 === len ||\n        (buf[i + 1] & 0xc0) !== 0x80 ||\n        (buf[i] & 0xfe) === 0xc0 // Overlong\n      ) {\n        return false;\n      }\n\n      i += 2;\n    } else if ((buf[i] & 0xf0) === 0xe0) {\n      // 1110xxxx 10xxxxxx 10xxxxxx\n      if (\n        i + 2 >= len ||\n        (buf[i + 1] & 0xc0) !== 0x80 ||\n        (buf[i + 2] & 0xc0) !== 0x80 ||\n        (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n        (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n      ) {\n        return false;\n      }\n\n      i += 3;\n    } else if ((buf[i] & 0xf8) === 0xf0) {\n      // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n      if (\n        i + 3 >= len ||\n        (buf[i + 1] & 0xc0) !== 0x80 ||\n        (buf[i + 2] & 0xc0) !== 0x80 ||\n        (buf[i + 3] & 0xc0) !== 0x80 ||\n        (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n        (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n        buf[i] > 0xf4 // > U+10FFFF\n      ) {\n        return false;\n      }\n\n      i += 4;\n    } else {\n      return false;\n    }\n  }\n\n  return true;\n}\n\ntry {\n  const isValidUTF8 = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'utf-8-validate'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\n\n  module.exports = {\n    isValidStatusCode,\n    isValidUTF8(buf) {\n      return buf.length < 150 ? _isValidUTF8(buf) : isValidUTF8(buf);\n    },\n    tokenChars\n  };\n} catch (e) /* istanbul ignore next */ {\n  module.exports = {\n    isValidStatusCode,\n    isValidUTF8: _isValidUTF8,\n    tokenChars\n  };\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ws/lib/validation.js?")},"./node_modules/ws/lib/websocket-server.js":
/*!*************************************************!*\
  !*** ./node_modules/ws/lib/websocket-server.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^net|tls|https$\" }] */\n\n\n\nconst EventEmitter = __webpack_require__(/*! events */ \"events\");\nconst http = __webpack_require__(/*! http */ \"http\");\nconst https = __webpack_require__(/*! https */ \"https\");\nconst net = __webpack_require__(/*! net */ \"net\");\nconst tls = __webpack_require__(/*! tls */ \"tls\");\nconst { createHash } = __webpack_require__(/*! crypto */ \"crypto\");\n\nconst extension = __webpack_require__(/*! ./extension */ \"./node_modules/ws/lib/extension.js\");\nconst PerMessageDeflate = __webpack_require__(/*! ./permessage-deflate */ \"./node_modules/ws/lib/permessage-deflate.js\");\nconst subprotocol = __webpack_require__(/*! ./subprotocol */ \"./node_modules/ws/lib/subprotocol.js\");\nconst WebSocket = __webpack_require__(/*! ./websocket */ \"./node_modules/ws/lib/websocket.js\");\nconst { GUID, kWebSocket } = __webpack_require__(/*! ./constants */ \"./node_modules/ws/lib/constants.js\");\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n  /**\n   * Create a `WebSocketServer` instance.\n   *\n   * @param {Object} options Configuration options\n   * @param {Number} [options.backlog=511] The maximum length of the queue of\n   *     pending connections\n   * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n   *     track clients\n   * @param {Function} [options.handleProtocols] A hook to handle protocols\n   * @param {String} [options.host] The hostname where to bind the server\n   * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n   *     size\n   * @param {Boolean} [options.noServer=false] Enable no server mode\n   * @param {String} [options.path] Accept only connections matching this path\n   * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n   *     permessage-deflate\n   * @param {Number} [options.port] The port where to bind the server\n   * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n   *     server to use\n   * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n   *     not to skip UTF-8 validation for text and close messages\n   * @param {Function} [options.verifyClient] A hook to reject connections\n   * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket`\n   *     class to use. It must be the `WebSocket` class or class that extends it\n   * @param {Function} [callback] A listener for the `listening` event\n   */\n  constructor(options, callback) {\n    super();\n\n    options = {\n      maxPayload: 100 * 1024 * 1024,\n      skipUTF8Validation: false,\n      perMessageDeflate: false,\n      handleProtocols: null,\n      clientTracking: true,\n      verifyClient: null,\n      noServer: false,\n      backlog: null, // use default (511 as implemented in net.js)\n      server: null,\n      host: null,\n      path: null,\n      port: null,\n      WebSocket,\n      ...options\n    };\n\n    if (\n      (options.port == null && !options.server && !options.noServer) ||\n      (options.port != null && (options.server || options.noServer)) ||\n      (options.server && options.noServer)\n    ) {\n      throw new TypeError(\n        'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n          'must be specified'\n      );\n    }\n\n    if (options.port != null) {\n      this._server = http.createServer((req, res) => {\n        const body = http.STATUS_CODES[426];\n\n        res.writeHead(426, {\n          'Content-Length': body.length,\n          'Content-Type': 'text/plain'\n        });\n        res.end(body);\n      });\n      this._server.listen(\n        options.port,\n        options.host,\n        options.backlog,\n        callback\n      );\n    } else if (options.server) {\n      this._server = options.server;\n    }\n\n    if (this._server) {\n      const emitConnection = this.emit.bind(this, 'connection');\n\n      this._removeListeners = addListeners(this._server, {\n        listening: this.emit.bind(this, 'listening'),\n        error: this.emit.bind(this, 'error'),\n        upgrade: (req, socket, head) => {\n          this.handleUpgrade(req, socket, head, emitConnection);\n        }\n      });\n    }\n\n    if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n    if (options.clientTracking) {\n      this.clients = new Set();\n      this._shouldEmitClose = false;\n    }\n\n    this.options = options;\n    this._state = RUNNING;\n  }\n\n  /**\n   * Returns the bound address, the address family name, and port of the server\n   * as reported by the operating system if listening on an IP socket.\n   * If the server is listening on a pipe or UNIX domain socket, the name is\n   * returned as a string.\n   *\n   * @return {(Object|String|null)} The address of the server\n   * @public\n   */\n  address() {\n    if (this.options.noServer) {\n      throw new Error('The server is operating in \"noServer\" mode');\n    }\n\n    if (!this._server) return null;\n    return this._server.address();\n  }\n\n  /**\n   * Stop the server from accepting new connections and emit the `'close'` event\n   * when all existing connections are closed.\n   *\n   * @param {Function} [cb] A one-time listener for the `'close'` event\n   * @public\n   */\n  close(cb) {\n    if (this._state === CLOSED) {\n      if (cb) {\n        this.once('close', () => {\n          cb(new Error('The server is not running'));\n        });\n      }\n\n      process.nextTick(emitClose, this);\n      return;\n    }\n\n    if (cb) this.once('close', cb);\n\n    if (this._state === CLOSING) return;\n    this._state = CLOSING;\n\n    if (this.options.noServer || this.options.server) {\n      if (this._server) {\n        this._removeListeners();\n        this._removeListeners = this._server = null;\n      }\n\n      if (this.clients) {\n        if (!this.clients.size) {\n          process.nextTick(emitClose, this);\n        } else {\n          this._shouldEmitClose = true;\n        }\n      } else {\n        process.nextTick(emitClose, this);\n      }\n    } else {\n      const server = this._server;\n\n      this._removeListeners();\n      this._removeListeners = this._server = null;\n\n      //\n      // The HTTP/S server was created internally. Close it, and rely on its\n      // `'close'` event.\n      //\n      server.close(() => {\n        emitClose(this);\n      });\n    }\n  }\n\n  /**\n   * See if a given request should be handled by this server instance.\n   *\n   * @param {http.IncomingMessage} req Request object to inspect\n   * @return {Boolean} `true` if the request is valid, else `false`\n   * @public\n   */\n  shouldHandle(req) {\n    if (this.options.path) {\n      const index = req.url.indexOf('?');\n      const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n      if (pathname !== this.options.path) return false;\n    }\n\n    return true;\n  }\n\n  /**\n   * Handle a HTTP Upgrade request.\n   *\n   * @param {http.IncomingMessage} req The request object\n   * @param {(net.Socket|tls.Socket)} socket The network socket between the\n   *     server and client\n   * @param {Buffer} head The first packet of the upgraded stream\n   * @param {Function} cb Callback\n   * @public\n   */\n  handleUpgrade(req, socket, head, cb) {\n    socket.on('error', socketOnError);\n\n    const key =\n      req.headers['sec-websocket-key'] !== undefined\n        ? req.headers['sec-websocket-key']\n        : false;\n    const version = +req.headers['sec-websocket-version'];\n\n    if (\n      req.method !== 'GET' ||\n      req.headers.upgrade.toLowerCase() !== 'websocket' ||\n      !key ||\n      !keyRegex.test(key) ||\n      (version !== 8 && version !== 13) ||\n      !this.shouldHandle(req)\n    ) {\n      return abortHandshake(socket, 400);\n    }\n\n    const secWebSocketProtocol = req.headers['sec-websocket-protocol'];\n    let protocols = new Set();\n\n    if (secWebSocketProtocol !== undefined) {\n      try {\n        protocols = subprotocol.parse(secWebSocketProtocol);\n      } catch (err) {\n        return abortHandshake(socket, 400);\n      }\n    }\n\n    const secWebSocketExtensions = req.headers['sec-websocket-extensions'];\n    const extensions = {};\n\n    if (\n      this.options.perMessageDeflate &&\n      secWebSocketExtensions !== undefined\n    ) {\n      const perMessageDeflate = new PerMessageDeflate(\n        this.options.perMessageDeflate,\n        true,\n        this.options.maxPayload\n      );\n\n      try {\n        const offers = extension.parse(secWebSocketExtensions);\n\n        if (offers[PerMessageDeflate.extensionName]) {\n          perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n          extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n        }\n      } catch (err) {\n        return abortHandshake(socket, 400);\n      }\n    }\n\n    //\n    // Optionally call external client verification handler.\n    //\n    if (this.options.verifyClient) {\n      const info = {\n        origin:\n          req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n        secure: !!(req.socket.authorized || req.socket.encrypted),\n        req\n      };\n\n      if (this.options.verifyClient.length === 2) {\n        this.options.verifyClient(info, (verified, code, message, headers) => {\n          if (!verified) {\n            return abortHandshake(socket, code || 401, message, headers);\n          }\n\n          this.completeUpgrade(\n            extensions,\n            key,\n            protocols,\n            req,\n            socket,\n            head,\n            cb\n          );\n        });\n        return;\n      }\n\n      if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n    }\n\n    this.completeUpgrade(extensions, key, protocols, req, socket, head, cb);\n  }\n\n  /**\n   * Upgrade the connection to WebSocket.\n   *\n   * @param {Object} extensions The accepted extensions\n   * @param {String} key The value of the `Sec-WebSocket-Key` header\n   * @param {Set} protocols The subprotocols\n   * @param {http.IncomingMessage} req The request object\n   * @param {(net.Socket|tls.Socket)} socket The network socket between the\n   *     server and client\n   * @param {Buffer} head The first packet of the upgraded stream\n   * @param {Function} cb Callback\n   * @throws {Error} If called more than once with the same socket\n   * @private\n   */\n  completeUpgrade(extensions, key, protocols, req, socket, head, cb) {\n    //\n    // Destroy the socket if the client has already sent a FIN packet.\n    //\n    if (!socket.readable || !socket.writable) return socket.destroy();\n\n    if (socket[kWebSocket]) {\n      throw new Error(\n        'server.handleUpgrade() was called more than once with the same ' +\n          'socket, possibly due to a misconfiguration'\n      );\n    }\n\n    if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n    const digest = createHash('sha1')\n      .update(key + GUID)\n      .digest('base64');\n\n    const headers = [\n      'HTTP/1.1 101 Switching Protocols',\n      'Upgrade: websocket',\n      'Connection: Upgrade',\n      `Sec-WebSocket-Accept: ${digest}`\n    ];\n\n    const ws = new this.options.WebSocket(null);\n\n    if (protocols.size) {\n      //\n      // Optionally call external protocol selection handler.\n      //\n      const protocol = this.options.handleProtocols\n        ? this.options.handleProtocols(protocols, req)\n        : protocols.values().next().value;\n\n      if (protocol) {\n        headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n        ws._protocol = protocol;\n      }\n    }\n\n    if (extensions[PerMessageDeflate.extensionName]) {\n      const params = extensions[PerMessageDeflate.extensionName].params;\n      const value = extension.format({\n        [PerMessageDeflate.extensionName]: [params]\n      });\n      headers.push(`Sec-WebSocket-Extensions: ${value}`);\n      ws._extensions = extensions;\n    }\n\n    //\n    // Allow external modification/inspection of handshake headers.\n    //\n    this.emit('headers', headers, req);\n\n    socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n    socket.removeListener('error', socketOnError);\n\n    ws.setSocket(socket, head, {\n      maxPayload: this.options.maxPayload,\n      skipUTF8Validation: this.options.skipUTF8Validation\n    });\n\n    if (this.clients) {\n      this.clients.add(ws);\n      ws.on('close', () => {\n        this.clients.delete(ws);\n\n        if (this._shouldEmitClose && !this.clients.size) {\n          process.nextTick(emitClose, this);\n        }\n      });\n    }\n\n    cb(ws, req);\n  }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of <event, listener>\n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.<String, Function>} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n *     called\n * @private\n */\nfunction addListeners(server, map) {\n  for (const event of Object.keys(map)) server.on(event, map[event]);\n\n  return function removeListeners() {\n    for (const event of Object.keys(map)) {\n      server.removeListener(event, map[event]);\n    }\n  };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n  server._state = CLOSED;\n  server.emit('close');\n}\n\n/**\n * Handle premature socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n  this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {(net.Socket|tls.Socket)} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n  if (socket.writable) {\n    message = message || http.STATUS_CODES[code];\n    headers = {\n      Connection: 'close',\n      'Content-Type': 'text/html',\n      'Content-Length': Buffer.byteLength(message),\n      ...headers\n    };\n\n    socket.write(\n      `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n        Object.keys(headers)\n          .map((h) => `${h}: ${headers[h]}`)\n          .join('\\r\\n') +\n        '\\r\\n\\r\\n' +\n        message\n    );\n  }\n\n  socket.removeListener('error', socketOnError);\n  socket.destroy();\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ws/lib/websocket-server.js?")},"./node_modules/ws/lib/websocket.js":
/*!******************************************!*\
  !*** ./node_modules/ws/lib/websocket.js ***!
  \******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Readable$\" }] */\n\n\n\nconst EventEmitter = __webpack_require__(/*! events */ \"events\");\nconst https = __webpack_require__(/*! https */ \"https\");\nconst http = __webpack_require__(/*! http */ \"http\");\nconst net = __webpack_require__(/*! net */ \"net\");\nconst tls = __webpack_require__(/*! tls */ \"tls\");\nconst { randomBytes, createHash } = __webpack_require__(/*! crypto */ \"crypto\");\nconst { Readable } = __webpack_require__(/*! stream */ \"stream\");\nconst { URL } = __webpack_require__(/*! url */ \"url\");\n\nconst PerMessageDeflate = __webpack_require__(/*! ./permessage-deflate */ \"./node_modules/ws/lib/permessage-deflate.js\");\nconst Receiver = __webpack_require__(/*! ./receiver */ \"./node_modules/ws/lib/receiver.js\");\nconst Sender = __webpack_require__(/*! ./sender */ \"./node_modules/ws/lib/sender.js\");\nconst {\n  BINARY_TYPES,\n  EMPTY_BUFFER,\n  GUID,\n  kForOnEventAttribute,\n  kListener,\n  kStatusCode,\n  kWebSocket,\n  NOOP\n} = __webpack_require__(/*! ./constants */ \"./node_modules/ws/lib/constants.js\");\nconst {\n  EventTarget: { addEventListener, removeEventListener }\n} = __webpack_require__(/*! ./event-target */ \"./node_modules/ws/lib/event-target.js\");\nconst { format, parse } = __webpack_require__(/*! ./extension */ \"./node_modules/ws/lib/extension.js\");\nconst { toBuffer } = __webpack_require__(/*! ./buffer-util */ \"./node_modules/ws/lib/buffer-util.js\");\n\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst subprotocolRegex = /^[!#$%&'*+\\-.0-9A-Z^_`|a-z~]+$/;\nconst protocolVersions = [8, 13];\nconst closeTimeout = 30 * 1000;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n  /**\n   * Create a new `WebSocket`.\n   *\n   * @param {(String|URL)} address The URL to which to connect\n   * @param {(String|String[])} [protocols] The subprotocols\n   * @param {Object} [options] Connection options\n   */\n  constructor(address, protocols, options) {\n    super();\n\n    this._binaryType = BINARY_TYPES[0];\n    this._closeCode = 1006;\n    this._closeFrameReceived = false;\n    this._closeFrameSent = false;\n    this._closeMessage = EMPTY_BUFFER;\n    this._closeTimer = null;\n    this._extensions = {};\n    this._paused = false;\n    this._protocol = '';\n    this._readyState = WebSocket.CONNECTING;\n    this._receiver = null;\n    this._sender = null;\n    this._socket = null;\n\n    if (address !== null) {\n      this._bufferedAmount = 0;\n      this._isServer = false;\n      this._redirects = 0;\n\n      if (protocols === undefined) {\n        protocols = [];\n      } else if (!Array.isArray(protocols)) {\n        if (typeof protocols === 'object' && protocols !== null) {\n          options = protocols;\n          protocols = [];\n        } else {\n          protocols = [protocols];\n        }\n      }\n\n      initAsClient(this, address, protocols, options);\n    } else {\n      this._isServer = true;\n    }\n  }\n\n  /**\n   * This deviates from the WHATWG interface since ws doesn't support the\n   * required default \"blob\" type (instead we define a custom \"nodebuffer\"\n   * type).\n   *\n   * @type {String}\n   */\n  get binaryType() {\n    return this._binaryType;\n  }\n\n  set binaryType(type) {\n    if (!BINARY_TYPES.includes(type)) return;\n\n    this._binaryType = type;\n\n    //\n    // Allow to change `binaryType` on the fly.\n    //\n    if (this._receiver) this._receiver._binaryType = type;\n  }\n\n  /**\n   * @type {Number}\n   */\n  get bufferedAmount() {\n    if (!this._socket) return this._bufferedAmount;\n\n    return this._socket._writableState.length + this._sender._bufferedBytes;\n  }\n\n  /**\n   * @type {String}\n   */\n  get extensions() {\n    return Object.keys(this._extensions).join();\n  }\n\n  /**\n   * @type {Boolean}\n   */\n  get isPaused() {\n    return this._paused;\n  }\n\n  /**\n   * @type {Function}\n   */\n  /* istanbul ignore next */\n  get onclose() {\n    return null;\n  }\n\n  /**\n   * @type {Function}\n   */\n  /* istanbul ignore next */\n  get onerror() {\n    return null;\n  }\n\n  /**\n   * @type {Function}\n   */\n  /* istanbul ignore next */\n  get onopen() {\n    return null;\n  }\n\n  /**\n   * @type {Function}\n   */\n  /* istanbul ignore next */\n  get onmessage() {\n    return null;\n  }\n\n  /**\n   * @type {String}\n   */\n  get protocol() {\n    return this._protocol;\n  }\n\n  /**\n   * @type {Number}\n   */\n  get readyState() {\n    return this._readyState;\n  }\n\n  /**\n   * @type {String}\n   */\n  get url() {\n    return this._url;\n  }\n\n  /**\n   * Set up the socket and the internal resources.\n   *\n   * @param {(net.Socket|tls.Socket)} socket The network socket between the\n   *     server and client\n   * @param {Buffer} head The first packet of the upgraded stream\n   * @param {Object} options Options object\n   * @param {Function} [options.generateMask] The function used to generate the\n   *     masking key\n   * @param {Number} [options.maxPayload=0] The maximum allowed message size\n   * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n   *     not to skip UTF-8 validation for text and close messages\n   * @private\n   */\n  setSocket(socket, head, options) {\n    const receiver = new Receiver({\n      binaryType: this.binaryType,\n      extensions: this._extensions,\n      isServer: this._isServer,\n      maxPayload: options.maxPayload,\n      skipUTF8Validation: options.skipUTF8Validation\n    });\n\n    this._sender = new Sender(socket, this._extensions, options.generateMask);\n    this._receiver = receiver;\n    this._socket = socket;\n\n    receiver[kWebSocket] = this;\n    socket[kWebSocket] = this;\n\n    receiver.on('conclude', receiverOnConclude);\n    receiver.on('drain', receiverOnDrain);\n    receiver.on('error', receiverOnError);\n    receiver.on('message', receiverOnMessage);\n    receiver.on('ping', receiverOnPing);\n    receiver.on('pong', receiverOnPong);\n\n    socket.setTimeout(0);\n    socket.setNoDelay();\n\n    if (head.length > 0) socket.unshift(head);\n\n    socket.on('close', socketOnClose);\n    socket.on('data', socketOnData);\n    socket.on('end', socketOnEnd);\n    socket.on('error', socketOnError);\n\n    this._readyState = WebSocket.OPEN;\n    this.emit('open');\n  }\n\n  /**\n   * Emit the `'close'` event.\n   *\n   * @private\n   */\n  emitClose() {\n    if (!this._socket) {\n      this._readyState = WebSocket.CLOSED;\n      this.emit('close', this._closeCode, this._closeMessage);\n      return;\n    }\n\n    if (this._extensions[PerMessageDeflate.extensionName]) {\n      this._extensions[PerMessageDeflate.extensionName].cleanup();\n    }\n\n    this._receiver.removeAllListeners();\n    this._readyState = WebSocket.CLOSED;\n    this.emit('close', this._closeCode, this._closeMessage);\n  }\n\n  /**\n   * Start a closing handshake.\n   *\n   *          +----------+   +-----------+   +----------+\n   *     - - -|ws.close()|--\x3e|close frame|--\x3e|ws.close()|- - -\n   *    |     +----------+   +-----------+   +----------+     |\n   *          +----------+   +-----------+         |\n   * CLOSING  |ws.close()|<--|close frame|<--+-----+       CLOSING\n   *          +----------+   +-----------+   |\n   *    |           |                        |   +---+        |\n   *                +------------------------+--\x3e|fin| - - - -\n   *    |         +---+                      |   +---+\n   *     - - - - -|fin|<---------------------+\n   *              +---+\n   *\n   * @param {Number} [code] Status code explaining why the connection is closing\n   * @param {(String|Buffer)} [data] The reason why the connection is\n   *     closing\n   * @public\n   */\n  close(code, data) {\n    if (this.readyState === WebSocket.CLOSED) return;\n    if (this.readyState === WebSocket.CONNECTING) {\n      const msg = 'WebSocket was closed before the connection was established';\n      return abortHandshake(this, this._req, msg);\n    }\n\n    if (this.readyState === WebSocket.CLOSING) {\n      if (\n        this._closeFrameSent &&\n        (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n      ) {\n        this._socket.end();\n      }\n\n      return;\n    }\n\n    this._readyState = WebSocket.CLOSING;\n    this._sender.close(code, data, !this._isServer, (err) => {\n      //\n      // This error is handled by the `'error'` listener on the socket. We only\n      // want to know if the close frame has been sent here.\n      //\n      if (err) return;\n\n      this._closeFrameSent = true;\n\n      if (\n        this._closeFrameReceived ||\n        this._receiver._writableState.errorEmitted\n      ) {\n        this._socket.end();\n      }\n    });\n\n    //\n    // Specify a timeout for the closing handshake to complete.\n    //\n    this._closeTimer = setTimeout(\n      this._socket.destroy.bind(this._socket),\n      closeTimeout\n    );\n  }\n\n  /**\n   * Pause the socket.\n   *\n   * @public\n   */\n  pause() {\n    if (\n      this.readyState === WebSocket.CONNECTING ||\n      this.readyState === WebSocket.CLOSED\n    ) {\n      return;\n    }\n\n    this._paused = true;\n    this._socket.pause();\n  }\n\n  /**\n   * Send a ping.\n   *\n   * @param {*} [data] The data to send\n   * @param {Boolean} [mask] Indicates whether or not to mask `data`\n   * @param {Function} [cb] Callback which is executed when the ping is sent\n   * @public\n   */\n  ping(data, mask, cb) {\n    if (this.readyState === WebSocket.CONNECTING) {\n      throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n    }\n\n    if (typeof data === 'function') {\n      cb = data;\n      data = mask = undefined;\n    } else if (typeof mask === 'function') {\n      cb = mask;\n      mask = undefined;\n    }\n\n    if (typeof data === 'number') data = data.toString();\n\n    if (this.readyState !== WebSocket.OPEN) {\n      sendAfterClose(this, data, cb);\n      return;\n    }\n\n    if (mask === undefined) mask = !this._isServer;\n    this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n  }\n\n  /**\n   * Send a pong.\n   *\n   * @param {*} [data] The data to send\n   * @param {Boolean} [mask] Indicates whether or not to mask `data`\n   * @param {Function} [cb] Callback which is executed when the pong is sent\n   * @public\n   */\n  pong(data, mask, cb) {\n    if (this.readyState === WebSocket.CONNECTING) {\n      throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n    }\n\n    if (typeof data === 'function') {\n      cb = data;\n      data = mask = undefined;\n    } else if (typeof mask === 'function') {\n      cb = mask;\n      mask = undefined;\n    }\n\n    if (typeof data === 'number') data = data.toString();\n\n    if (this.readyState !== WebSocket.OPEN) {\n      sendAfterClose(this, data, cb);\n      return;\n    }\n\n    if (mask === undefined) mask = !this._isServer;\n    this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n  }\n\n  /**\n   * Resume the socket.\n   *\n   * @public\n   */\n  resume() {\n    if (\n      this.readyState === WebSocket.CONNECTING ||\n      this.readyState === WebSocket.CLOSED\n    ) {\n      return;\n    }\n\n    this._paused = false;\n    if (!this._receiver._writableState.needDrain) this._socket.resume();\n  }\n\n  /**\n   * Send a data message.\n   *\n   * @param {*} data The message to send\n   * @param {Object} [options] Options object\n   * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n   *     text\n   * @param {Boolean} [options.compress] Specifies whether or not to compress\n   *     `data`\n   * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n   *     last one\n   * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n   * @param {Function} [cb] Callback which is executed when data is written out\n   * @public\n   */\n  send(data, options, cb) {\n    if (this.readyState === WebSocket.CONNECTING) {\n      throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n    }\n\n    if (typeof options === 'function') {\n      cb = options;\n      options = {};\n    }\n\n    if (typeof data === 'number') data = data.toString();\n\n    if (this.readyState !== WebSocket.OPEN) {\n      sendAfterClose(this, data, cb);\n      return;\n    }\n\n    const opts = {\n      binary: typeof data !== 'string',\n      mask: !this._isServer,\n      compress: true,\n      fin: true,\n      ...options\n    };\n\n    if (!this._extensions[PerMessageDeflate.extensionName]) {\n      opts.compress = false;\n    }\n\n    this._sender.send(data || EMPTY_BUFFER, opts, cb);\n  }\n\n  /**\n   * Forcibly close the connection.\n   *\n   * @public\n   */\n  terminate() {\n    if (this.readyState === WebSocket.CLOSED) return;\n    if (this.readyState === WebSocket.CONNECTING) {\n      const msg = 'WebSocket was closed before the connection was established';\n      return abortHandshake(this, this._req, msg);\n    }\n\n    if (this._socket) {\n      this._readyState = WebSocket.CLOSING;\n      this._socket.destroy();\n    }\n  }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n  enumerable: true,\n  value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n  enumerable: true,\n  value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n  enumerable: true,\n  value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n  enumerable: true,\n  value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n  enumerable: true,\n  value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n  enumerable: true,\n  value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n  enumerable: true,\n  value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n  enumerable: true,\n  value: readyStates.indexOf('CLOSED')\n});\n\n[\n  'binaryType',\n  'bufferedAmount',\n  'extensions',\n  'isPaused',\n  'protocol',\n  'readyState',\n  'url'\n].forEach((property) => {\n  Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n  Object.defineProperty(WebSocket.prototype, `on${method}`, {\n    enumerable: true,\n    get() {\n      for (const listener of this.listeners(method)) {\n        if (listener[kForOnEventAttribute]) return listener[kListener];\n      }\n\n      return null;\n    },\n    set(handler) {\n      for (const listener of this.listeners(method)) {\n        if (listener[kForOnEventAttribute]) {\n          this.removeListener(method, listener);\n          break;\n        }\n      }\n\n      if (typeof handler !== 'function') return;\n\n      this.addEventListener(method, handler, {\n        [kForOnEventAttribute]: true\n      });\n    }\n  });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {Array} protocols The subprotocols\n * @param {Object} [options] Connection options\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n *     redirects\n * @param {Function} [options.generateMask] The function used to generate the\n *     masking key\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n *     handshake request\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n *     size\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n *     allowed\n * @param {String} [options.origin] Value of the `Origin` or\n *     `Sec-WebSocket-Origin` header\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n *     permessage-deflate\n * @param {Number} [options.protocolVersion=13] Value of the\n *     `Sec-WebSocket-Version` header\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n *     not to skip UTF-8 validation for text and close messages\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n  const opts = {\n    protocolVersion: protocolVersions[1],\n    maxPayload: 100 * 1024 * 1024,\n    skipUTF8Validation: false,\n    perMessageDeflate: true,\n    followRedirects: false,\n    maxRedirects: 10,\n    ...options,\n    createConnection: undefined,\n    socketPath: undefined,\n    hostname: undefined,\n    protocol: undefined,\n    timeout: undefined,\n    method: undefined,\n    host: undefined,\n    path: undefined,\n    port: undefined\n  };\n\n  if (!protocolVersions.includes(opts.protocolVersion)) {\n    throw new RangeError(\n      `Unsupported protocol version: ${opts.protocolVersion} ` +\n        `(supported versions: ${protocolVersions.join(', ')})`\n    );\n  }\n\n  let parsedUrl;\n\n  if (address instanceof URL) {\n    parsedUrl = address;\n    websocket._url = address.href;\n  } else {\n    try {\n      parsedUrl = new URL(address);\n    } catch (e) {\n      throw new SyntaxError(`Invalid URL: ${address}`);\n    }\n\n    websocket._url = address;\n  }\n\n  const isSecure = parsedUrl.protocol === 'wss:';\n  const isUnixSocket = parsedUrl.protocol === 'ws+unix:';\n  let invalidURLMessage;\n\n  if (parsedUrl.protocol !== 'ws:' && !isSecure && !isUnixSocket) {\n    invalidURLMessage =\n      'The URL\\'s protocol must be one of \"ws:\", \"wss:\", or \"ws+unix:\"';\n  } else if (isUnixSocket && !parsedUrl.pathname) {\n    invalidURLMessage = \"The URL's pathname is empty\";\n  } else if (parsedUrl.hash) {\n    invalidURLMessage = 'The URL contains a fragment identifier';\n  }\n\n  if (invalidURLMessage) {\n    const err = new SyntaxError(invalidURLMessage);\n\n    if (websocket._redirects === 0) {\n      throw err;\n    } else {\n      emitErrorAndClose(websocket, err);\n      return;\n    }\n  }\n\n  const defaultPort = isSecure ? 443 : 80;\n  const key = randomBytes(16).toString('base64');\n  const get = isSecure ? https.get : http.get;\n  const protocolSet = new Set();\n  let perMessageDeflate;\n\n  opts.createConnection = isSecure ? tlsConnect : netConnect;\n  opts.defaultPort = opts.defaultPort || defaultPort;\n  opts.port = parsedUrl.port || defaultPort;\n  opts.host = parsedUrl.hostname.startsWith('[')\n    ? parsedUrl.hostname.slice(1, -1)\n    : parsedUrl.hostname;\n  opts.headers = {\n    'Sec-WebSocket-Version': opts.protocolVersion,\n    'Sec-WebSocket-Key': key,\n    Connection: 'Upgrade',\n    Upgrade: 'websocket',\n    ...opts.headers\n  };\n  opts.path = parsedUrl.pathname + parsedUrl.search;\n  opts.timeout = opts.handshakeTimeout;\n\n  if (opts.perMessageDeflate) {\n    perMessageDeflate = new PerMessageDeflate(\n      opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},\n      false,\n      opts.maxPayload\n    );\n    opts.headers['Sec-WebSocket-Extensions'] = format({\n      [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n    });\n  }\n  if (protocols.length) {\n    for (const protocol of protocols) {\n      if (\n        typeof protocol !== 'string' ||\n        !subprotocolRegex.test(protocol) ||\n        protocolSet.has(protocol)\n      ) {\n        throw new SyntaxError(\n          'An invalid or duplicated subprotocol was specified'\n        );\n      }\n\n      protocolSet.add(protocol);\n    }\n\n    opts.headers['Sec-WebSocket-Protocol'] = protocols.join(',');\n  }\n  if (opts.origin) {\n    if (opts.protocolVersion < 13) {\n      opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n    } else {\n      opts.headers.Origin = opts.origin;\n    }\n  }\n  if (parsedUrl.username || parsedUrl.password) {\n    opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n  }\n\n  if (isUnixSocket) {\n    const parts = opts.path.split(':');\n\n    opts.socketPath = parts[0];\n    opts.path = parts[1];\n  }\n\n  if (opts.followRedirects) {\n    if (websocket._redirects === 0) {\n      websocket._originalHost = parsedUrl.host;\n\n      const headers = options && options.headers;\n\n      //\n      // Shallow copy the user provided options so that headers can be changed\n      // without mutating the original object.\n      //\n      options = { ...options, headers: {} };\n\n      if (headers) {\n        for (const [key, value] of Object.entries(headers)) {\n          options.headers[key.toLowerCase()] = value;\n        }\n      }\n    } else if (parsedUrl.host !== websocket._originalHost) {\n      //\n      // Match curl 7.77.0 behavior and drop the following headers. These\n      // headers are also dropped when following a redirect to a subdomain.\n      //\n      delete opts.headers.authorization;\n      delete opts.headers.cookie;\n      delete opts.headers.host;\n      opts.auth = undefined;\n    }\n\n    //\n    // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n    // If the `Authorization` header is set, then there is nothing to do as it\n    // will take precedence.\n    //\n    if (opts.auth && !options.headers.authorization) {\n      options.headers.authorization =\n        'Basic ' + Buffer.from(opts.auth).toString('base64');\n    }\n  }\n\n  let req = (websocket._req = get(opts));\n\n  if (opts.timeout) {\n    req.on('timeout', () => {\n      abortHandshake(websocket, req, 'Opening handshake has timed out');\n    });\n  }\n\n  req.on('error', (err) => {\n    if (req === null || req.aborted) return;\n\n    req = websocket._req = null;\n    emitErrorAndClose(websocket, err);\n  });\n\n  req.on('response', (res) => {\n    const location = res.headers.location;\n    const statusCode = res.statusCode;\n\n    if (\n      location &&\n      opts.followRedirects &&\n      statusCode >= 300 &&\n      statusCode < 400\n    ) {\n      if (++websocket._redirects > opts.maxRedirects) {\n        abortHandshake(websocket, req, 'Maximum redirects exceeded');\n        return;\n      }\n\n      req.abort();\n\n      let addr;\n\n      try {\n        addr = new URL(location, address);\n      } catch (e) {\n        const err = new SyntaxError(`Invalid URL: ${location}`);\n        emitErrorAndClose(websocket, err);\n        return;\n      }\n\n      initAsClient(websocket, addr, protocols, options);\n    } else if (!websocket.emit('unexpected-response', req, res)) {\n      abortHandshake(\n        websocket,\n        req,\n        `Unexpected server response: ${res.statusCode}`\n      );\n    }\n  });\n\n  req.on('upgrade', (res, socket, head) => {\n    websocket.emit('upgrade', res);\n\n    //\n    // The user may have closed the connection from a listener of the `upgrade`\n    // event.\n    //\n    if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n    req = websocket._req = null;\n\n    const digest = createHash('sha1')\n      .update(key + GUID)\n      .digest('base64');\n\n    if (res.headers['sec-websocket-accept'] !== digest) {\n      abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n      return;\n    }\n\n    const serverProt = res.headers['sec-websocket-protocol'];\n    let protError;\n\n    if (serverProt !== undefined) {\n      if (!protocolSet.size) {\n        protError = 'Server sent a subprotocol but none was requested';\n      } else if (!protocolSet.has(serverProt)) {\n        protError = 'Server sent an invalid subprotocol';\n      }\n    } else if (protocolSet.size) {\n      protError = 'Server sent no subprotocol';\n    }\n\n    if (protError) {\n      abortHandshake(websocket, socket, protError);\n      return;\n    }\n\n    if (serverProt) websocket._protocol = serverProt;\n\n    const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n    if (secWebSocketExtensions !== undefined) {\n      if (!perMessageDeflate) {\n        const message =\n          'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n          'was requested';\n        abortHandshake(websocket, socket, message);\n        return;\n      }\n\n      let extensions;\n\n      try {\n        extensions = parse(secWebSocketExtensions);\n      } catch (err) {\n        const message = 'Invalid Sec-WebSocket-Extensions header';\n        abortHandshake(websocket, socket, message);\n        return;\n      }\n\n      const extensionNames = Object.keys(extensions);\n\n      if (\n        extensionNames.length !== 1 ||\n        extensionNames[0] !== PerMessageDeflate.extensionName\n      ) {\n        const message = 'Server indicated an extension that was not requested';\n        abortHandshake(websocket, socket, message);\n        return;\n      }\n\n      try {\n        perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n      } catch (err) {\n        const message = 'Invalid Sec-WebSocket-Extensions header';\n        abortHandshake(websocket, socket, message);\n        return;\n      }\n\n      websocket._extensions[PerMessageDeflate.extensionName] =\n        perMessageDeflate;\n    }\n\n    websocket.setSocket(socket, head, {\n      generateMask: opts.generateMask,\n      maxPayload: opts.maxPayload,\n      skipUTF8Validation: opts.skipUTF8Validation\n    });\n  });\n}\n\n/**\n * Emit the `'error'` and `'close'` event.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n  websocket._readyState = WebSocket.CLOSING;\n  websocket.emit('error', err);\n  websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n  options.path = options.socketPath;\n  return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n  options.path = undefined;\n\n  if (!options.servername && options.servername !== '') {\n    options.servername = net.isIP(options.host) ? '' : options.host;\n  }\n\n  return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n *     abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n  websocket._readyState = WebSocket.CLOSING;\n\n  const err = new Error(message);\n  Error.captureStackTrace(err, abortHandshake);\n\n  if (stream.setHeader) {\n    stream.abort();\n\n    if (stream.socket && !stream.socket.destroyed) {\n      //\n      // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n      // called after the request completed. See\n      // https://github.com/websockets/ws/issues/1869.\n      //\n      stream.socket.destroy();\n    }\n\n    stream.once('abort', websocket.emitClose.bind(websocket));\n    websocket.emit('error', err);\n  } else {\n    stream.destroy(err);\n    stream.once('error', websocket.emit.bind(websocket, 'error'));\n    stream.once('close', websocket.emitClose.bind(websocket));\n  }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n  if (data) {\n    const length = toBuffer(data).length;\n\n    //\n    // The `_bufferedAmount` property is used only when the peer is a client and\n    // the opening handshake fails. Under these circumstances, in fact, the\n    // `setSocket()` method is not called, so the `_socket` and `_sender`\n    // properties are set to `null`.\n    //\n    if (websocket._socket) websocket._sender._bufferedBytes += length;\n    else websocket._bufferedAmount += length;\n  }\n\n  if (cb) {\n    const err = new Error(\n      `WebSocket is not open: readyState ${websocket.readyState} ` +\n        `(${readyStates[websocket.readyState]})`\n    );\n    cb(err);\n  }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {Buffer} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n  const websocket = this[kWebSocket];\n\n  websocket._closeFrameReceived = true;\n  websocket._closeMessage = reason;\n  websocket._closeCode = code;\n\n  if (websocket._socket[kWebSocket] === undefined) return;\n\n  websocket._socket.removeListener('data', socketOnData);\n  process.nextTick(resume, websocket._socket);\n\n  if (code === 1005) websocket.close();\n  else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n  const websocket = this[kWebSocket];\n\n  if (!websocket.isPaused) websocket._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n  const websocket = this[kWebSocket];\n\n  if (websocket._socket[kWebSocket] !== undefined) {\n    websocket._socket.removeListener('data', socketOnData);\n\n    //\n    // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n    // https://github.com/websockets/ws/issues/1940.\n    //\n    process.nextTick(resume, websocket._socket);\n\n    websocket.close(err[kStatusCode]);\n  }\n\n  websocket.emit('error', err);\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n  this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {Buffer|ArrayBuffer|Buffer[])} data The message\n * @param {Boolean} isBinary Specifies whether the message is binary or not\n * @private\n */\nfunction receiverOnMessage(data, isBinary) {\n  this[kWebSocket].emit('message', data, isBinary);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n  const websocket = this[kWebSocket];\n\n  websocket.pong(data, !websocket._isServer, NOOP);\n  websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n  this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n  stream.resume();\n}\n\n/**\n * The listener of the `net.Socket` `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n  const websocket = this[kWebSocket];\n\n  this.removeListener('close', socketOnClose);\n  this.removeListener('data', socketOnData);\n  this.removeListener('end', socketOnEnd);\n\n  websocket._readyState = WebSocket.CLOSING;\n\n  let chunk;\n\n  //\n  // The close frame might not have been received or the `'end'` event emitted,\n  // for example, if the socket was destroyed due to an error. Ensure that the\n  // `receiver` stream is closed after writing any remaining buffered data to\n  // it. If the readable side of the socket is in flowing mode then there is no\n  // buffered data as everything has been already written and `readable.read()`\n  // will return `null`. If instead, the socket is paused, any possible buffered\n  // data will be read as a single chunk.\n  //\n  if (\n    !this._readableState.endEmitted &&\n    !websocket._closeFrameReceived &&\n    !websocket._receiver._writableState.errorEmitted &&\n    (chunk = websocket._socket.read()) !== null\n  ) {\n    websocket._receiver.write(chunk);\n  }\n\n  websocket._receiver.end();\n\n  this[kWebSocket] = undefined;\n\n  clearTimeout(websocket._closeTimer);\n\n  if (\n    websocket._receiver._writableState.finished ||\n    websocket._receiver._writableState.errorEmitted\n  ) {\n    websocket.emitClose();\n  } else {\n    websocket._receiver.on('error', receiverOnFinish);\n    websocket._receiver.on('finish', receiverOnFinish);\n  }\n}\n\n/**\n * The listener of the `net.Socket` `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n  if (!this[kWebSocket]._receiver.write(chunk)) {\n    this.pause();\n  }\n}\n\n/**\n * The listener of the `net.Socket` `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n  const websocket = this[kWebSocket];\n\n  websocket._readyState = WebSocket.CLOSING;\n  websocket._receiver.end();\n  this.end();\n}\n\n/**\n * The listener of the `net.Socket` `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n  const websocket = this[kWebSocket];\n\n  this.removeListener('error', socketOnError);\n  this.on('error', NOOP);\n\n  if (websocket) {\n    websocket._readyState = WebSocket.CLOSING;\n    this.destroy();\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ws/lib/websocket.js?")},"./node_modules/xss/lib/default.js":
/*!*****************************************!*\
  !*** ./node_modules/xss/lib/default.js ***!
  \*****************************************/(__unused_webpack_module,exports,__webpack_require__)=>{eval('/**\n * default settings\n *\n * @author Zongmin Lei<leizongmin@gmail.com>\n */\n\nvar FilterCSS = (__webpack_require__(/*! cssfilter */ "./node_modules/cssfilter/lib/index.js").FilterCSS);\nvar getDefaultCSSWhiteList = (__webpack_require__(/*! cssfilter */ "./node_modules/cssfilter/lib/index.js").getDefaultWhiteList);\nvar _ = __webpack_require__(/*! ./util */ "./node_modules/xss/lib/util.js");\n\nfunction getDefaultWhiteList() {\n  return {\n    a: ["target", "href", "title"],\n    abbr: ["title"],\n    address: [],\n    area: ["shape", "coords", "href", "alt"],\n    article: [],\n    aside: [],\n    audio: [\n      "autoplay",\n      "controls",\n      "crossorigin",\n      "loop",\n      "muted",\n      "preload",\n      "src",\n    ],\n    b: [],\n    bdi: ["dir"],\n    bdo: ["dir"],\n    big: [],\n    blockquote: ["cite"],\n    br: [],\n    caption: [],\n    center: [],\n    cite: [],\n    code: [],\n    col: ["align", "valign", "span", "width"],\n    colgroup: ["align", "valign", "span", "width"],\n    dd: [],\n    del: ["datetime"],\n    details: ["open"],\n    div: [],\n    dl: [],\n    dt: [],\n    em: [],\n    figcaption: [],\n    figure: [],\n    font: ["color", "size", "face"],\n    footer: [],\n    h1: [],\n    h2: [],\n    h3: [],\n    h4: [],\n    h5: [],\n    h6: [],\n    header: [],\n    hr: [],\n    i: [],\n    img: ["src", "alt", "title", "width", "height"],\n    ins: ["datetime"],\n    li: [],\n    mark: [],\n    nav: [],\n    ol: [],\n    p: [],\n    pre: [],\n    s: [],\n    section: [],\n    small: [],\n    span: [],\n    sub: [],\n    summary: [],\n    sup: [],\n    strong: [],\n    strike: [],\n    table: ["width", "border", "align", "valign"],\n    tbody: ["align", "valign"],\n    td: ["width", "rowspan", "colspan", "align", "valign"],\n    tfoot: ["align", "valign"],\n    th: ["width", "rowspan", "colspan", "align", "valign"],\n    thead: ["align", "valign"],\n    tr: ["rowspan", "align", "valign"],\n    tt: [],\n    u: [],\n    ul: [],\n    video: [\n      "autoplay",\n      "controls",\n      "crossorigin",\n      "loop",\n      "muted",\n      "playsinline",\n      "poster",\n      "preload",\n      "src",\n      "height",\n      "width",\n    ],\n  };\n}\n\nvar defaultCSSFilter = new FilterCSS();\n\n/**\n * default onTag function\n *\n * @param {String} tag\n * @param {String} html\n * @param {Object} options\n * @return {String}\n */\nfunction onTag(tag, html, options) {\n  // do nothing\n}\n\n/**\n * default onIgnoreTag function\n *\n * @param {String} tag\n * @param {String} html\n * @param {Object} options\n * @return {String}\n */\nfunction onIgnoreTag(tag, html, options) {\n  // do nothing\n}\n\n/**\n * default onTagAttr function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction onTagAttr(tag, name, value) {\n  // do nothing\n}\n\n/**\n * default onIgnoreTagAttr function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction onIgnoreTagAttr(tag, name, value) {\n  // do nothing\n}\n\n/**\n * default escapeHtml function\n *\n * @param {String} html\n */\nfunction escapeHtml(html) {\n  return html.replace(REGEXP_LT, "&lt;").replace(REGEXP_GT, "&gt;");\n}\n\n/**\n * default safeAttrValue function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @param {Object} cssFilter\n * @return {String}\n */\nfunction safeAttrValue(tag, name, value, cssFilter) {\n  // unescape attribute value firstly\n  value = friendlyAttrValue(value);\n\n  if (name === "href" || name === "src") {\n    // filter `href` and `src` attribute\n    // only allow the value that starts with `http://` | `https://` | `mailto:` | `/` | `#`\n    value = _.trim(value);\n    if (value === "#") return "#";\n    if (\n      !(\n        value.substr(0, 7) === "http://" ||\n        value.substr(0, 8) === "https://" ||\n        value.substr(0, 7) === "mailto:" ||\n        value.substr(0, 4) === "tel:" ||\n        value.substr(0, 11) === "data:image/" ||\n        value.substr(0, 6) === "ftp://" ||\n        value.substr(0, 2) === "./" ||\n        value.substr(0, 3) === "../" ||\n        value[0] === "#" ||\n        value[0] === "/"\n      )\n    ) {\n      return "";\n    }\n  } else if (name === "background") {\n    // filter `background` attribute (maybe no use)\n    // `javascript:`\n    REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;\n    if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {\n      return "";\n    }\n  } else if (name === "style") {\n    // `expression()`\n    REGEXP_DEFAULT_ON_TAG_ATTR_7.lastIndex = 0;\n    if (REGEXP_DEFAULT_ON_TAG_ATTR_7.test(value)) {\n      return "";\n    }\n    // `url()`\n    REGEXP_DEFAULT_ON_TAG_ATTR_8.lastIndex = 0;\n    if (REGEXP_DEFAULT_ON_TAG_ATTR_8.test(value)) {\n      REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;\n      if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {\n        return "";\n      }\n    }\n    if (cssFilter !== false) {\n      cssFilter = cssFilter || defaultCSSFilter;\n      value = cssFilter.process(value);\n    }\n  }\n\n  // escape `<>"` before returns\n  value = escapeAttrValue(value);\n  return value;\n}\n\n// RegExp list\nvar REGEXP_LT = /</g;\nvar REGEXP_GT = />/g;\nvar REGEXP_QUOTE = /"/g;\nvar REGEXP_QUOTE_2 = /&quot;/g;\nvar REGEXP_ATTR_VALUE_1 = /&#([a-zA-Z0-9]*);?/gim;\nvar REGEXP_ATTR_VALUE_COLON = /&colon;?/gim;\nvar REGEXP_ATTR_VALUE_NEWLINE = /&newline;?/gim;\n// var REGEXP_DEFAULT_ON_TAG_ATTR_3 = /\\/\\*|\\*\\//gm;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_4 =\n  /((j\\s*a\\s*v\\s*a|v\\s*b|l\\s*i\\s*v\\s*e)\\s*s\\s*c\\s*r\\s*i\\s*p\\s*t\\s*|m\\s*o\\s*c\\s*h\\s*a):/gi;\n// var REGEXP_DEFAULT_ON_TAG_ATTR_5 = /^[\\s"\'`]*(d\\s*a\\s*t\\s*a\\s*)\\:/gi;\n// var REGEXP_DEFAULT_ON_TAG_ATTR_6 = /^[\\s"\'`]*(d\\s*a\\s*t\\s*a\\s*)\\:\\s*image\\//gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_7 =\n  /e\\s*x\\s*p\\s*r\\s*e\\s*s\\s*s\\s*i\\s*o\\s*n\\s*\\(.*/gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_8 = /u\\s*r\\s*l\\s*\\(.*/gi;\n\n/**\n * escape double quote\n *\n * @param {String} str\n * @return {String} str\n */\nfunction escapeQuote(str) {\n  return str.replace(REGEXP_QUOTE, "&quot;");\n}\n\n/**\n * unescape double quote\n *\n * @param {String} str\n * @return {String} str\n */\nfunction unescapeQuote(str) {\n  return str.replace(REGEXP_QUOTE_2, \'"\');\n}\n\n/**\n * escape html entities\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeHtmlEntities(str) {\n  return str.replace(REGEXP_ATTR_VALUE_1, function replaceUnicode(str, code) {\n    return code[0] === "x" || code[0] === "X"\n      ? String.fromCharCode(parseInt(code.substr(1), 16))\n      : String.fromCharCode(parseInt(code, 10));\n  });\n}\n\n/**\n * escape html5 new danger entities\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeDangerHtml5Entities(str) {\n  return str\n    .replace(REGEXP_ATTR_VALUE_COLON, ":")\n    .replace(REGEXP_ATTR_VALUE_NEWLINE, " ");\n}\n\n/**\n * clear nonprintable characters\n *\n * @param {String} str\n * @return {String}\n */\nfunction clearNonPrintableCharacter(str) {\n  var str2 = "";\n  for (var i = 0, len = str.length; i < len; i++) {\n    str2 += str.charCodeAt(i) < 32 ? " " : str.charAt(i);\n  }\n  return _.trim(str2);\n}\n\n/**\n * get friendly attribute value\n *\n * @param {String} str\n * @return {String}\n */\nfunction friendlyAttrValue(str) {\n  str = unescapeQuote(str);\n  str = escapeHtmlEntities(str);\n  str = escapeDangerHtml5Entities(str);\n  str = clearNonPrintableCharacter(str);\n  return str;\n}\n\n/**\n * unescape attribute value\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeAttrValue(str) {\n  str = escapeQuote(str);\n  str = escapeHtml(str);\n  return str;\n}\n\n/**\n * `onIgnoreTag` function for removing all the tags that are not in whitelist\n */\nfunction onIgnoreTagStripAll() {\n  return "";\n}\n\n/**\n * remove tag body\n * specify a `tags` list, if the tag is not in the `tags` list then process by the specify function (optional)\n *\n * @param {array} tags\n * @param {function} next\n */\nfunction StripTagBody(tags, next) {\n  if (typeof next !== "function") {\n    next = function () {};\n  }\n\n  var isRemoveAllTag = !Array.isArray(tags);\n  function isRemoveTag(tag) {\n    if (isRemoveAllTag) return true;\n    return _.indexOf(tags, tag) !== -1;\n  }\n\n  var removeList = [];\n  var posStart = false;\n\n  return {\n    onIgnoreTag: function (tag, html, options) {\n      if (isRemoveTag(tag)) {\n        if (options.isClosing) {\n          var ret = "[/removed]";\n          var end = options.position + ret.length;\n          removeList.push([\n            posStart !== false ? posStart : options.position,\n            end,\n          ]);\n          posStart = false;\n          return ret;\n        } else {\n          if (!posStart) {\n            posStart = options.position;\n          }\n          return "[removed]";\n        }\n      } else {\n        return next(tag, html, options);\n      }\n    },\n    remove: function (html) {\n      var rethtml = "";\n      var lastPos = 0;\n      _.forEach(removeList, function (pos) {\n        rethtml += html.slice(lastPos, pos[0]);\n        lastPos = pos[1];\n      });\n      rethtml += html.slice(lastPos);\n      return rethtml;\n    },\n  };\n}\n\n/**\n * remove html comments\n *\n * @param {String} html\n * @return {String}\n */\nfunction stripCommentTag(html) {\n  var retHtml = "";\n  var lastPos = 0;\n  while (lastPos < html.length) {\n    var i = html.indexOf("\x3c!--", lastPos);\n    if (i === -1) {\n      retHtml += html.slice(lastPos);\n      break;\n    }\n    retHtml += html.slice(lastPos, i);\n    var j = html.indexOf("--\x3e", i);\n    if (j === -1) {\n      break;\n    }\n    lastPos = j + 3;\n  }\n  return retHtml;\n}\n\n/**\n * remove invisible characters\n *\n * @param {String} html\n * @return {String}\n */\nfunction stripBlankChar(html) {\n  var chars = html.split("");\n  chars = chars.filter(function (char) {\n    var c = char.charCodeAt(0);\n    if (c === 127) return false;\n    if (c <= 31) {\n      if (c === 10 || c === 13) return true;\n      return false;\n    }\n    return true;\n  });\n  return chars.join("");\n}\n\nexports.whiteList = getDefaultWhiteList();\nexports.getDefaultWhiteList = getDefaultWhiteList;\nexports.onTag = onTag;\nexports.onIgnoreTag = onIgnoreTag;\nexports.onTagAttr = onTagAttr;\nexports.onIgnoreTagAttr = onIgnoreTagAttr;\nexports.safeAttrValue = safeAttrValue;\nexports.escapeHtml = escapeHtml;\nexports.escapeQuote = escapeQuote;\nexports.unescapeQuote = unescapeQuote;\nexports.escapeHtmlEntities = escapeHtmlEntities;\nexports.escapeDangerHtml5Entities = escapeDangerHtml5Entities;\nexports.clearNonPrintableCharacter = clearNonPrintableCharacter;\nexports.friendlyAttrValue = friendlyAttrValue;\nexports.escapeAttrValue = escapeAttrValue;\nexports.onIgnoreTagStripAll = onIgnoreTagStripAll;\nexports.StripTagBody = StripTagBody;\nexports.stripCommentTag = stripCommentTag;\nexports.stripBlankChar = stripBlankChar;\nexports.cssFilter = defaultCSSFilter;\nexports.getDefaultCSSWhiteList = getDefaultCSSWhiteList;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/xss/lib/default.js?')},"./node_modules/xss/lib/index.js":
/*!***************************************!*\
  !*** ./node_modules/xss/lib/index.js ***!
  \***************************************/(module,exports,__webpack_require__)=>{eval('/**\n * xss\n *\n * @author Zongmin Lei<leizongmin@gmail.com>\n */\n\nvar DEFAULT = __webpack_require__(/*! ./default */ "./node_modules/xss/lib/default.js");\nvar parser = __webpack_require__(/*! ./parser */ "./node_modules/xss/lib/parser.js");\nvar FilterXSS = __webpack_require__(/*! ./xss */ "./node_modules/xss/lib/xss.js");\n\n/**\n * filter xss function\n *\n * @param {String} html\n * @param {Object} options { whiteList, onTag, onTagAttr, onIgnoreTag, onIgnoreTagAttr, safeAttrValue, escapeHtml }\n * @return {String}\n */\nfunction filterXSS(html, options) {\n  var xss = new FilterXSS(options);\n  return xss.process(html);\n}\n\nexports = module.exports = filterXSS;\nexports.filterXSS = filterXSS;\nexports.FilterXSS = FilterXSS;\n\n(function () {\n  for (var i in DEFAULT) {\n    exports[i] = DEFAULT[i];\n  }\n  for (var j in parser) {\n    exports[j] = parser[j];\n  }\n})();\n\n// using `xss` on the browser, output `filterXSS` to the globals\nif (typeof window !== "undefined") {\n  window.filterXSS = module.exports;\n}\n\n// using `xss` on the WebWorker, output `filterXSS` to the globals\nfunction isWorkerEnv() {\n  return (\n    typeof self !== "undefined" &&\n    typeof DedicatedWorkerGlobalScope !== "undefined" &&\n    self instanceof DedicatedWorkerGlobalScope\n  );\n}\nif (isWorkerEnv()) {\n  self.filterXSS = module.exports;\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/xss/lib/index.js?')},"./node_modules/xss/lib/parser.js":
/*!****************************************!*\
  !*** ./node_modules/xss/lib/parser.js ***!
  \****************************************/(__unused_webpack_module,exports,__webpack_require__)=>{eval('/**\n * Simple HTML Parser\n *\n * @author Zongmin Lei<leizongmin@gmail.com>\n */\n\nvar _ = __webpack_require__(/*! ./util */ "./node_modules/xss/lib/util.js");\n\n/**\n * get tag name\n *\n * @param {String} html e.g. \'<a hef="#">\'\n * @return {String}\n */\nfunction getTagName(html) {\n  var i = _.spaceIndex(html);\n  var tagName;\n  if (i === -1) {\n    tagName = html.slice(1, -1);\n  } else {\n    tagName = html.slice(1, i + 1);\n  }\n  tagName = _.trim(tagName).toLowerCase();\n  if (tagName.slice(0, 1) === "/") tagName = tagName.slice(1);\n  if (tagName.slice(-1) === "/") tagName = tagName.slice(0, -1);\n  return tagName;\n}\n\n/**\n * is close tag?\n *\n * @param {String} html 如：\'<a hef="#">\'\n * @return {Boolean}\n */\nfunction isClosing(html) {\n  return html.slice(0, 2) === "</";\n}\n\n/**\n * parse input html and returns processed html\n *\n * @param {String} html\n * @param {Function} onTag e.g. function (sourcePosition, position, tag, html, isClosing)\n * @param {Function} escapeHtml\n * @return {String}\n */\nfunction parseTag(html, onTag, escapeHtml) {\n  "use strict";\n\n  var rethtml = "";\n  var lastPos = 0;\n  var tagStart = false;\n  var quoteStart = false;\n  var currentPos = 0;\n  var len = html.length;\n  var currentTagName = "";\n  var currentHtml = "";\n\n  chariterator: for (currentPos = 0; currentPos < len; currentPos++) {\n    var c = html.charAt(currentPos);\n    if (tagStart === false) {\n      if (c === "<") {\n        tagStart = currentPos;\n        continue;\n      }\n    } else {\n      if (quoteStart === false) {\n        if (c === "<") {\n          rethtml += escapeHtml(html.slice(lastPos, currentPos));\n          tagStart = currentPos;\n          lastPos = currentPos;\n          continue;\n        }\n        if (c === ">") {\n          rethtml += escapeHtml(html.slice(lastPos, tagStart));\n          currentHtml = html.slice(tagStart, currentPos + 1);\n          currentTagName = getTagName(currentHtml);\n          rethtml += onTag(\n            tagStart,\n            rethtml.length,\n            currentTagName,\n            currentHtml,\n            isClosing(currentHtml)\n          );\n          lastPos = currentPos + 1;\n          tagStart = false;\n          continue;\n        }\n        if (c === \'"\' || c === "\'") {\n          var i = 1;\n          var ic = html.charAt(currentPos - i);\n\n          while (ic.trim() === "" || ic === "=") {\n            if (ic === "=") {\n              quoteStart = c;\n              continue chariterator;\n            }\n            ic = html.charAt(currentPos - ++i);\n          }\n        }\n      } else {\n        if (c === quoteStart) {\n          quoteStart = false;\n          continue;\n        }\n      }\n    }\n  }\n  if (lastPos < html.length) {\n    rethtml += escapeHtml(html.substr(lastPos));\n  }\n\n  return rethtml;\n}\n\nvar REGEXP_ILLEGAL_ATTR_NAME = /[^a-zA-Z0-9\\\\_:.-]/gim;\n\n/**\n * parse input attributes and returns processed attributes\n *\n * @param {String} html e.g. `href="#" target="_blank"`\n * @param {Function} onAttr e.g. `function (name, value)`\n * @return {String}\n */\nfunction parseAttr(html, onAttr) {\n  "use strict";\n\n  var lastPos = 0;\n  var lastMarkPos = 0;\n  var retAttrs = [];\n  var tmpName = false;\n  var len = html.length;\n\n  function addAttr(name, value) {\n    name = _.trim(name);\n    name = name.replace(REGEXP_ILLEGAL_ATTR_NAME, "").toLowerCase();\n    if (name.length < 1) return;\n    var ret = onAttr(name, value || "");\n    if (ret) retAttrs.push(ret);\n  }\n\n  // 逐个分析字符\n  for (var i = 0; i < len; i++) {\n    var c = html.charAt(i);\n    var v, j;\n    if (tmpName === false && c === "=") {\n      tmpName = html.slice(lastPos, i);\n      lastPos = i + 1;\n      lastMarkPos = html.charAt(lastPos) === \'"\' || html.charAt(lastPos) === "\'" ? lastPos : findNextQuotationMark(html, i + 1);\n      continue;\n    }\n    if (tmpName !== false) {\n      if (\n        i === lastMarkPos\n      ) {\n        j = html.indexOf(c, i + 1);\n        if (j === -1) {\n          break;\n        } else {\n          v = _.trim(html.slice(lastMarkPos + 1, j));\n          addAttr(tmpName, v);\n          tmpName = false;\n          i = j;\n          lastPos = i + 1;\n          continue;\n        }\n      }\n    }\n    if (/\\s|\\n|\\t/.test(c)) {\n      html = html.replace(/\\s|\\n|\\t/g, " ");\n      if (tmpName === false) {\n        j = findNextEqual(html, i);\n        if (j === -1) {\n          v = _.trim(html.slice(lastPos, i));\n          addAttr(v);\n          tmpName = false;\n          lastPos = i + 1;\n          continue;\n        } else {\n          i = j - 1;\n          continue;\n        }\n      } else {\n        j = findBeforeEqual(html, i - 1);\n        if (j === -1) {\n          v = _.trim(html.slice(lastPos, i));\n          v = stripQuoteWrap(v);\n          addAttr(tmpName, v);\n          tmpName = false;\n          lastPos = i + 1;\n          continue;\n        } else {\n          continue;\n        }\n      }\n    }\n  }\n\n  if (lastPos < html.length) {\n    if (tmpName === false) {\n      addAttr(html.slice(lastPos));\n    } else {\n      addAttr(tmpName, stripQuoteWrap(_.trim(html.slice(lastPos))));\n    }\n  }\n\n  return _.trim(retAttrs.join(" "));\n}\n\nfunction findNextEqual(str, i) {\n  for (; i < str.length; i++) {\n    var c = str[i];\n    if (c === " ") continue;\n    if (c === "=") return i;\n    return -1;\n  }\n}\n\nfunction findNextQuotationMark(str, i) {\n  for (; i < str.length; i++) {\n    var c = str[i];\n    if (c === " ") continue;\n    if (c === "\'" || c === \'"\') return i;\n    return -1;\n  }\n}\n\nfunction findBeforeEqual(str, i) {\n  for (; i > 0; i--) {\n    var c = str[i];\n    if (c === " ") continue;\n    if (c === "=") return i;\n    return -1;\n  }\n}\n\nfunction isQuoteWrapString(text) {\n  if (\n    (text[0] === \'"\' && text[text.length - 1] === \'"\') ||\n    (text[0] === "\'" && text[text.length - 1] === "\'")\n  ) {\n    return true;\n  } else {\n    return false;\n  }\n}\n\nfunction stripQuoteWrap(text) {\n  if (isQuoteWrapString(text)) {\n    return text.substr(1, text.length - 2);\n  } else {\n    return text;\n  }\n}\n\nexports.parseTag = parseTag;\nexports.parseAttr = parseAttr;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/xss/lib/parser.js?')},"./node_modules/xss/lib/util.js":
/*!**************************************!*\
  !*** ./node_modules/xss/lib/util.js ***!
  \**************************************/module=>{eval('module.exports = {\n  indexOf: function (arr, item) {\n    var i, j;\n    if (Array.prototype.indexOf) {\n      return arr.indexOf(item);\n    }\n    for (i = 0, j = arr.length; i < j; i++) {\n      if (arr[i] === item) {\n        return i;\n      }\n    }\n    return -1;\n  },\n  forEach: function (arr, fn, scope) {\n    var i, j;\n    if (Array.prototype.forEach) {\n      return arr.forEach(fn, scope);\n    }\n    for (i = 0, j = arr.length; i < j; i++) {\n      fn.call(scope, arr[i], i, arr);\n    }\n  },\n  trim: function (str) {\n    if (String.prototype.trim) {\n      return str.trim();\n    }\n    return str.replace(/(^\\s*)|(\\s*$)/g, "");\n  },\n  spaceIndex: function (str) {\n    var reg = /\\s|\\n|\\t/;\n    var match = reg.exec(str);\n    return match ? match.index : -1;\n  },\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/xss/lib/util.js?')},"./node_modules/xss/lib/xss.js":
/*!*************************************!*\
  !*** ./node_modules/xss/lib/xss.js ***!
  \*************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('/**\n * filter xss\n *\n * @author Zongmin Lei<leizongmin@gmail.com>\n */\n\nvar FilterCSS = (__webpack_require__(/*! cssfilter */ "./node_modules/cssfilter/lib/index.js").FilterCSS);\nvar DEFAULT = __webpack_require__(/*! ./default */ "./node_modules/xss/lib/default.js");\nvar parser = __webpack_require__(/*! ./parser */ "./node_modules/xss/lib/parser.js");\nvar parseTag = parser.parseTag;\nvar parseAttr = parser.parseAttr;\nvar _ = __webpack_require__(/*! ./util */ "./node_modules/xss/lib/util.js");\n\n/**\n * returns `true` if the input value is `undefined` or `null`\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull(obj) {\n  return obj === undefined || obj === null;\n}\n\n/**\n * get attributes for a tag\n *\n * @param {String} html\n * @return {Object}\n *   - {String} html\n *   - {Boolean} closing\n */\nfunction getAttrs(html) {\n  var i = _.spaceIndex(html);\n  if (i === -1) {\n    return {\n      html: "",\n      closing: html[html.length - 2] === "/",\n    };\n  }\n  html = _.trim(html.slice(i + 1, -1));\n  var isClosing = html[html.length - 1] === "/";\n  if (isClosing) html = _.trim(html.slice(0, -1));\n  return {\n    html: html,\n    closing: isClosing,\n  };\n}\n\n/**\n * shallow copy\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction shallowCopyObject(obj) {\n  var ret = {};\n  for (var i in obj) {\n    ret[i] = obj[i];\n  }\n  return ret;\n}\n\nfunction keysToLowerCase(obj) {\n  var ret = {};\n  for (var i in obj) {\n    if (Array.isArray(obj[i])) {\n      ret[i.toLowerCase()] = obj[i].map(function (item) {\n        return item.toLowerCase();\n      });\n    } else {\n      ret[i.toLowerCase()] = obj[i];\n    }\n  }\n  return ret;\n}\n\n/**\n * FilterXSS class\n *\n * @param {Object} options\n *        whiteList (or allowList), onTag, onTagAttr, onIgnoreTag,\n *        onIgnoreTagAttr, safeAttrValue, escapeHtml\n *        stripIgnoreTagBody, allowCommentTag, stripBlankChar\n *        css{whiteList, onAttr, onIgnoreAttr} `css=false` means don\'t use `cssfilter`\n */\nfunction FilterXSS(options) {\n  options = shallowCopyObject(options || {});\n\n  if (options.stripIgnoreTag) {\n    if (options.onIgnoreTag) {\n      console.error(\n        \'Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time\'\n      );\n    }\n    options.onIgnoreTag = DEFAULT.onIgnoreTagStripAll;\n  }\n  if (options.whiteList || options.allowList) {\n    options.whiteList = keysToLowerCase(options.whiteList || options.allowList);\n  } else {\n    options.whiteList = DEFAULT.whiteList;\n  }\n\n  options.onTag = options.onTag || DEFAULT.onTag;\n  options.onTagAttr = options.onTagAttr || DEFAULT.onTagAttr;\n  options.onIgnoreTag = options.onIgnoreTag || DEFAULT.onIgnoreTag;\n  options.onIgnoreTagAttr = options.onIgnoreTagAttr || DEFAULT.onIgnoreTagAttr;\n  options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;\n  options.escapeHtml = options.escapeHtml || DEFAULT.escapeHtml;\n  this.options = options;\n\n  if (options.css === false) {\n    this.cssFilter = false;\n  } else {\n    options.css = options.css || {};\n    this.cssFilter = new FilterCSS(options.css);\n  }\n}\n\n/**\n * start process and returns result\n *\n * @param {String} html\n * @return {String}\n */\nFilterXSS.prototype.process = function (html) {\n  // compatible with the input\n  html = html || "";\n  html = html.toString();\n  if (!html) return "";\n\n  var me = this;\n  var options = me.options;\n  var whiteList = options.whiteList;\n  var onTag = options.onTag;\n  var onIgnoreTag = options.onIgnoreTag;\n  var onTagAttr = options.onTagAttr;\n  var onIgnoreTagAttr = options.onIgnoreTagAttr;\n  var safeAttrValue = options.safeAttrValue;\n  var escapeHtml = options.escapeHtml;\n  var cssFilter = me.cssFilter;\n\n  // remove invisible characters\n  if (options.stripBlankChar) {\n    html = DEFAULT.stripBlankChar(html);\n  }\n\n  // remove html comments\n  if (!options.allowCommentTag) {\n    html = DEFAULT.stripCommentTag(html);\n  }\n\n  // if enable stripIgnoreTagBody\n  var stripIgnoreTagBody = false;\n  if (options.stripIgnoreTagBody) {\n    stripIgnoreTagBody = DEFAULT.StripTagBody(\n      options.stripIgnoreTagBody,\n      onIgnoreTag\n    );\n    onIgnoreTag = stripIgnoreTagBody.onIgnoreTag;\n  }\n\n  var retHtml = parseTag(\n    html,\n    function (sourcePosition, position, tag, html, isClosing) {\n      var info = {\n        sourcePosition: sourcePosition,\n        position: position,\n        isClosing: isClosing,\n        isWhite: Object.prototype.hasOwnProperty.call(whiteList, tag),\n      };\n\n      // call `onTag()`\n      var ret = onTag(tag, html, info);\n      if (!isNull(ret)) return ret;\n\n      if (info.isWhite) {\n        if (info.isClosing) {\n          return "</" + tag + ">";\n        }\n\n        var attrs = getAttrs(html);\n        var whiteAttrList = whiteList[tag];\n        var attrsHtml = parseAttr(attrs.html, function (name, value) {\n          // call `onTagAttr()`\n          var isWhiteAttr = _.indexOf(whiteAttrList, name) !== -1;\n          var ret = onTagAttr(tag, name, value, isWhiteAttr);\n          if (!isNull(ret)) return ret;\n\n          if (isWhiteAttr) {\n            // call `safeAttrValue()`\n            value = safeAttrValue(tag, name, value, cssFilter);\n            if (value) {\n              return name + \'="\' + value + \'"\';\n            } else {\n              return name;\n            }\n          } else {\n            // call `onIgnoreTagAttr()`\n            ret = onIgnoreTagAttr(tag, name, value, isWhiteAttr);\n            if (!isNull(ret)) return ret;\n            return;\n          }\n        });\n\n        // build new tag html\n        html = "<" + tag;\n        if (attrsHtml) html += " " + attrsHtml;\n        if (attrs.closing) html += " /";\n        html += ">";\n        return html;\n      } else {\n        // call `onIgnoreTag()`\n        ret = onIgnoreTag(tag, html, info);\n        if (!isNull(ret)) return ret;\n        return escapeHtml(html);\n      }\n    },\n    escapeHtml\n  );\n\n  // if enable stripIgnoreTagBody\n  if (stripIgnoreTagBody) {\n    retHtml = stripIgnoreTagBody.remove(retHtml);\n  }\n\n  return retHtml;\n};\n\nmodule.exports = FilterXSS;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/xss/lib/xss.js?')},"./node_modules/yallist/iterator.js":
/*!******************************************!*\
  !*** ./node_modules/yallist/iterator.js ***!
  \******************************************/module=>{"use strict";eval("\nmodule.exports = function (Yallist) {\n  Yallist.prototype[Symbol.iterator] = function* () {\n    for (let walker = this.head; walker; walker = walker.next) {\n      yield walker.value\n    }\n  }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/yallist/iterator.js?")},"./node_modules/yallist/yallist.js":
/*!*****************************************!*\
  !*** ./node_modules/yallist/yallist.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n  var self = this\n  if (!(self instanceof Yallist)) {\n    self = new Yallist()\n  }\n\n  self.tail = null\n  self.head = null\n  self.length = 0\n\n  if (list && typeof list.forEach === 'function') {\n    list.forEach(function (item) {\n      self.push(item)\n    })\n  } else if (arguments.length > 0) {\n    for (var i = 0, l = arguments.length; i < l; i++) {\n      self.push(arguments[i])\n    }\n  }\n\n  return self\n}\n\nYallist.prototype.removeNode = function (node) {\n  if (node.list !== this) {\n    throw new Error('removing node which does not belong to this list')\n  }\n\n  var next = node.next\n  var prev = node.prev\n\n  if (next) {\n    next.prev = prev\n  }\n\n  if (prev) {\n    prev.next = next\n  }\n\n  if (node === this.head) {\n    this.head = next\n  }\n  if (node === this.tail) {\n    this.tail = prev\n  }\n\n  node.list.length--\n  node.next = null\n  node.prev = null\n  node.list = null\n\n  return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n  if (node === this.head) {\n    return\n  }\n\n  if (node.list) {\n    node.list.removeNode(node)\n  }\n\n  var head = this.head\n  node.list = this\n  node.next = head\n  if (head) {\n    head.prev = node\n  }\n\n  this.head = node\n  if (!this.tail) {\n    this.tail = node\n  }\n  this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n  if (node === this.tail) {\n    return\n  }\n\n  if (node.list) {\n    node.list.removeNode(node)\n  }\n\n  var tail = this.tail\n  node.list = this\n  node.prev = tail\n  if (tail) {\n    tail.next = node\n  }\n\n  this.tail = node\n  if (!this.head) {\n    this.head = node\n  }\n  this.length++\n}\n\nYallist.prototype.push = function () {\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    push(this, arguments[i])\n  }\n  return this.length\n}\n\nYallist.prototype.unshift = function () {\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    unshift(this, arguments[i])\n  }\n  return this.length\n}\n\nYallist.prototype.pop = function () {\n  if (!this.tail) {\n    return undefined\n  }\n\n  var res = this.tail.value\n  this.tail = this.tail.prev\n  if (this.tail) {\n    this.tail.next = null\n  } else {\n    this.head = null\n  }\n  this.length--\n  return res\n}\n\nYallist.prototype.shift = function () {\n  if (!this.head) {\n    return undefined\n  }\n\n  var res = this.head.value\n  this.head = this.head.next\n  if (this.head) {\n    this.head.prev = null\n  } else {\n    this.tail = null\n  }\n  this.length--\n  return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n  thisp = thisp || this\n  for (var walker = this.head, i = 0; walker !== null; i++) {\n    fn.call(thisp, walker.value, i, this)\n    walker = walker.next\n  }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n  thisp = thisp || this\n  for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n    fn.call(thisp, walker.value, i, this)\n    walker = walker.prev\n  }\n}\n\nYallist.prototype.get = function (n) {\n  for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n    // abort out of the list early if we hit a cycle\n    walker = walker.next\n  }\n  if (i === n && walker !== null) {\n    return walker.value\n  }\n}\n\nYallist.prototype.getReverse = function (n) {\n  for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n    // abort out of the list early if we hit a cycle\n    walker = walker.prev\n  }\n  if (i === n && walker !== null) {\n    return walker.value\n  }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n  thisp = thisp || this\n  var res = new Yallist()\n  for (var walker = this.head; walker !== null;) {\n    res.push(fn.call(thisp, walker.value, this))\n    walker = walker.next\n  }\n  return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n  thisp = thisp || this\n  var res = new Yallist()\n  for (var walker = this.tail; walker !== null;) {\n    res.push(fn.call(thisp, walker.value, this))\n    walker = walker.prev\n  }\n  return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n  var acc\n  var walker = this.head\n  if (arguments.length > 1) {\n    acc = initial\n  } else if (this.head) {\n    walker = this.head.next\n    acc = this.head.value\n  } else {\n    throw new TypeError('Reduce of empty list with no initial value')\n  }\n\n  for (var i = 0; walker !== null; i++) {\n    acc = fn(acc, walker.value, i)\n    walker = walker.next\n  }\n\n  return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n  var acc\n  var walker = this.tail\n  if (arguments.length > 1) {\n    acc = initial\n  } else if (this.tail) {\n    walker = this.tail.prev\n    acc = this.tail.value\n  } else {\n    throw new TypeError('Reduce of empty list with no initial value')\n  }\n\n  for (var i = this.length - 1; walker !== null; i--) {\n    acc = fn(acc, walker.value, i)\n    walker = walker.prev\n  }\n\n  return acc\n}\n\nYallist.prototype.toArray = function () {\n  var arr = new Array(this.length)\n  for (var i = 0, walker = this.head; walker !== null; i++) {\n    arr[i] = walker.value\n    walker = walker.next\n  }\n  return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n  var arr = new Array(this.length)\n  for (var i = 0, walker = this.tail; walker !== null; i++) {\n    arr[i] = walker.value\n    walker = walker.prev\n  }\n  return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n  to = to || this.length\n  if (to < 0) {\n    to += this.length\n  }\n  from = from || 0\n  if (from < 0) {\n    from += this.length\n  }\n  var ret = new Yallist()\n  if (to < from || to < 0) {\n    return ret\n  }\n  if (from < 0) {\n    from = 0\n  }\n  if (to > this.length) {\n    to = this.length\n  }\n  for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n    walker = walker.next\n  }\n  for (; walker !== null && i < to; i++, walker = walker.next) {\n    ret.push(walker.value)\n  }\n  return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n  to = to || this.length\n  if (to < 0) {\n    to += this.length\n  }\n  from = from || 0\n  if (from < 0) {\n    from += this.length\n  }\n  var ret = new Yallist()\n  if (to < from || to < 0) {\n    return ret\n  }\n  if (from < 0) {\n    from = 0\n  }\n  if (to > this.length) {\n    to = this.length\n  }\n  for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n    walker = walker.prev\n  }\n  for (; walker !== null && i > from; i--, walker = walker.prev) {\n    ret.push(walker.value)\n  }\n  return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n  if (start > this.length) {\n    start = this.length - 1\n  }\n  if (start < 0) {\n    start = this.length + start;\n  }\n\n  for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n    walker = walker.next\n  }\n\n  var ret = []\n  for (var i = 0; walker && i < deleteCount; i++) {\n    ret.push(walker.value)\n    walker = this.removeNode(walker)\n  }\n  if (walker === null) {\n    walker = this.tail\n  }\n\n  if (walker !== this.head && walker !== this.tail) {\n    walker = walker.prev\n  }\n\n  for (var i = 0; i < nodes.length; i++) {\n    walker = insert(this, walker, nodes[i])\n  }\n  return ret;\n}\n\nYallist.prototype.reverse = function () {\n  var head = this.head\n  var tail = this.tail\n  for (var walker = head; walker !== null; walker = walker.prev) {\n    var p = walker.prev\n    walker.prev = walker.next\n    walker.next = p\n  }\n  this.head = tail\n  this.tail = head\n  return this\n}\n\nfunction insert (self, node, value) {\n  var inserted = node === self.head ?\n    new Node(value, null, node, self) :\n    new Node(value, node, node.next, self)\n\n  if (inserted.next === null) {\n    self.tail = inserted\n  }\n  if (inserted.prev === null) {\n    self.head = inserted\n  }\n\n  self.length++\n\n  return inserted\n}\n\nfunction push (self, item) {\n  self.tail = new Node(item, self.tail, null, self)\n  if (!self.head) {\n    self.head = self.tail\n  }\n  self.length++\n}\n\nfunction unshift (self, item) {\n  self.head = new Node(item, null, self.head, self)\n  if (!self.tail) {\n    self.tail = self.head\n  }\n  self.length++\n}\n\nfunction Node (value, prev, next, list) {\n  if (!(this instanceof Node)) {\n    return new Node(value, prev, next, list)\n  }\n\n  this.list = list\n  this.value = value\n\n  if (prev) {\n    prev.next = this\n    this.prev = prev\n  } else {\n    this.prev = null\n  }\n\n  if (next) {\n    next.prev = this\n    this.next = next\n  } else {\n    this.next = null\n  }\n}\n\ntry {\n  // add if support for Symbol.iterator is present\n  __webpack_require__(/*! ./iterator.js */ \"./node_modules/yallist/iterator.js\")(Yallist)\n} catch (er) {}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/yallist/yallist.js?")},"./node_modules/ylru/index.js":
/*!************************************!*\
  !*** ./node_modules/ylru/index.js ***!
  \************************************/module=>{"use strict";eval("\n\nclass LRU {\n  constructor(max) {\n    this.max = max;\n    this.size = 0;\n    this.cache = new Map();\n    this._cache = new Map();\n  }\n\n  get(key, options) {\n    let item = this.cache.get(key);\n    const maxAge = options && options.maxAge;\n    // only call Date.now() when necessary\n    let now;\n    function getNow() {\n      now = now || Date.now();\n      return now;\n    }\n    if (item) {\n      // check expired\n      if (item.expired && getNow() > item.expired) {\n        item.expired = 0;\n        item.value = undefined;\n      } else {\n        // update expired in get\n        if (maxAge !== undefined) {\n          const expired = maxAge ? getNow() + maxAge : 0;\n          item.expired = expired;\n        }\n      }\n      return item.value;\n    }\n\n    // try to read from _cache\n    item = this._cache.get(key);\n    if (item) {\n      // check expired\n      if (item.expired && getNow() > item.expired) {\n        item.expired = 0;\n        item.value = undefined;\n      } else {\n        // not expired, save to cache\n        this._update(key, item);\n        // update expired in get\n        if (maxAge !== undefined) {\n          const expired = maxAge ? getNow() + maxAge : 0;\n          item.expired = expired;\n        }\n      }\n      return item.value;\n    }\n  }\n\n  set(key, value, options) {\n    const maxAge = options && options.maxAge;\n    const expired = maxAge ? Date.now() + maxAge : 0;\n    let item = this.cache.get(key);\n    if (item) {\n      item.expired = expired;\n      item.value = value;\n    } else {\n      item = {\n        value,\n        expired,\n      };\n      this._update(key, item);\n    }\n  }\n\n  keys() {\n    const cacheKeys = new Set();\n    const now = Date.now();\n\n    for (const entry of this.cache.entries()) {\n      checkEntry(entry);\n    }\n\n    for (const entry of this._cache.entries()) {\n      checkEntry(entry);\n    }\n\n    function checkEntry(entry) {\n      const key = entry[0];\n      const item = entry[1];\n      if (entry[1].value && (!entry[1].expired) || item.expired >= now) {\n        cacheKeys.add(key);\n      }\n    }\n\n    return Array.from(cacheKeys.keys());\n  }\n\n  _update(key, item) {\n    this.cache.set(key, item);\n    this.size++;\n    if (this.size >= this.max) {\n      this.size = 0;\n      this._cache = this.cache;\n      this.cache = new Map();\n    }\n  }\n}\n\nmodule.exports = LRU;\n\n\n\n//# sourceURL=webpack://txadmin/./node_modules/ylru/index.js?")},"./node_modules/zod/lib/ZodError.js":
/*!******************************************!*\
  !*** ./node_modules/zod/lib/ZodError.js ***!
  \******************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.setErrorMap = exports.overrideErrorMap = exports.defaultErrorMap = exports.ZodError = exports.quotelessJson = exports.ZodIssueCode = void 0;\nconst util_1 = __webpack_require__(/*! ./helpers/util */ "./node_modules/zod/lib/helpers/util.js");\nexports.ZodIssueCode = util_1.util.arrayToEnum([\n    "invalid_type",\n    "invalid_literal",\n    "custom",\n    "invalid_union",\n    "invalid_union_discriminator",\n    "invalid_enum_value",\n    "unrecognized_keys",\n    "invalid_arguments",\n    "invalid_return_type",\n    "invalid_date",\n    "invalid_string",\n    "too_small",\n    "too_big",\n    "invalid_intersection_types",\n    "not_multiple_of",\n]);\nconst quotelessJson = (obj) => {\n    const json = JSON.stringify(obj, null, 2);\n    return json.replace(/"([^"]+)":/g, "$1:");\n};\nexports.quotelessJson = quotelessJson;\nclass ZodError extends Error {\n    constructor(issues) {\n        super();\n        this.issues = [];\n        this.format = () => {\n            const fieldErrors = { _errors: [] };\n            const processError = (error) => {\n                for (const issue of error.issues) {\n                    if (issue.code === "invalid_union") {\n                        issue.unionErrors.map(processError);\n                    }\n                    else if (issue.code === "invalid_return_type") {\n                        processError(issue.returnTypeError);\n                    }\n                    else if (issue.code === "invalid_arguments") {\n                        processError(issue.argumentsError);\n                    }\n                    else if (issue.path.length === 0) {\n                        fieldErrors._errors.push(issue.message);\n                    }\n                    else {\n                        let curr = fieldErrors;\n                        let i = 0;\n                        while (i < issue.path.length) {\n                            const el = issue.path[i];\n                            const terminal = i === issue.path.length - 1;\n                            if (!terminal) {\n                                if (typeof el === "string") {\n                                    curr[el] = curr[el] || { _errors: [] };\n                                }\n                                else if (typeof el === "number") {\n                                    const errorArray = [];\n                                    errorArray._errors = [];\n                                    curr[el] = curr[el] || errorArray;\n                                }\n                            }\n                            else {\n                                curr[el] = curr[el] || { _errors: [] };\n                                curr[el]._errors.push(issue.message);\n                            }\n                            curr = curr[el];\n                            i++;\n                        }\n                    }\n                }\n            };\n            processError(this);\n            return fieldErrors;\n        };\n        this.addIssue = (sub) => {\n            this.issues = [...this.issues, sub];\n        };\n        this.addIssues = (subs = []) => {\n            this.issues = [...this.issues, ...subs];\n        };\n        const actualProto = new.target.prototype;\n        if (Object.setPrototypeOf) {\n            // eslint-disable-next-line ban/ban\n            Object.setPrototypeOf(this, actualProto);\n        }\n        else {\n            this.__proto__ = actualProto;\n        }\n        this.name = "ZodError";\n        this.issues = issues;\n    }\n    get errors() {\n        return this.issues;\n    }\n    toString() {\n        return this.message;\n    }\n    get message() {\n        return JSON.stringify(this.issues, null, 2);\n    }\n    get isEmpty() {\n        return this.issues.length === 0;\n    }\n    flatten(mapper = (issue) => issue.message) {\n        const fieldErrors = {};\n        const formErrors = [];\n        for (const sub of this.issues) {\n            if (sub.path.length > 0) {\n                fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n                fieldErrors[sub.path[0]].push(mapper(sub));\n            }\n            else {\n                formErrors.push(mapper(sub));\n            }\n        }\n        return { formErrors, fieldErrors };\n    }\n    get formErrors() {\n        return this.flatten();\n    }\n}\nexports.ZodError = ZodError;\nZodError.create = (issues) => {\n    const error = new ZodError(issues);\n    return error;\n};\nconst defaultErrorMap = (issue, _ctx) => {\n    let message;\n    switch (issue.code) {\n        case exports.ZodIssueCode.invalid_type:\n            if (issue.received === "undefined") {\n                message = "Required";\n            }\n            else {\n                message = `Expected ${issue.expected}, received ${issue.received}`;\n            }\n            break;\n        case exports.ZodIssueCode.invalid_literal:\n            message = `Invalid literal value, expected ${JSON.stringify(issue.expected)}`;\n            break;\n        case exports.ZodIssueCode.unrecognized_keys:\n            message = `Unrecognized key(s) in object: ${issue.keys\n                .map((k) => `\'${k}\'`)\n                .join(", ")}`;\n            break;\n        case exports.ZodIssueCode.invalid_union:\n            message = `Invalid input`;\n            break;\n        case exports.ZodIssueCode.invalid_union_discriminator:\n            message = `Invalid discriminator value. Expected ${issue.options\n                .map((val) => (typeof val === "string" ? `\'${val}\'` : val))\n                .join(" | ")}`;\n            break;\n        case exports.ZodIssueCode.invalid_enum_value:\n            message = `Invalid enum value. Expected ${issue.options\n                .map((val) => (typeof val === "string" ? `\'${val}\'` : val))\n                .join(" | ")}`;\n            break;\n        case exports.ZodIssueCode.invalid_arguments:\n            message = `Invalid function arguments`;\n            break;\n        case exports.ZodIssueCode.invalid_return_type:\n            message = `Invalid function return type`;\n            break;\n        case exports.ZodIssueCode.invalid_date:\n            message = `Invalid date`;\n            break;\n        case exports.ZodIssueCode.invalid_string:\n            if (issue.validation !== "regex")\n                message = `Invalid ${issue.validation}`;\n            else\n                message = "Invalid";\n            break;\n        case exports.ZodIssueCode.too_small:\n            if (issue.type === "array")\n                message = `Array must contain ${issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n            else if (issue.type === "string")\n                message = `String must contain ${issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n            else if (issue.type === "number")\n                message = `Number must be greater than ${issue.inclusive ? `or equal to ` : ``}${issue.minimum}`;\n            else\n                message = "Invalid input";\n            break;\n        case exports.ZodIssueCode.too_big:\n            if (issue.type === "array")\n                message = `Array must contain ${issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n            else if (issue.type === "string")\n                message = `String must contain ${issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n            else if (issue.type === "number")\n                message = `Number must be less than ${issue.inclusive ? `or equal to ` : ``}${issue.maximum}`;\n            else\n                message = "Invalid input";\n            break;\n        case exports.ZodIssueCode.custom:\n            message = `Invalid input`;\n            break;\n        case exports.ZodIssueCode.invalid_intersection_types:\n            message = `Intersection results could not be merged`;\n            break;\n        case exports.ZodIssueCode.not_multiple_of:\n            message = `Number must be a multiple of ${issue.multipleOf}`;\n            break;\n        default:\n            message = _ctx.defaultError;\n            util_1.util.assertNever(issue);\n    }\n    return { message };\n};\nexports.defaultErrorMap = defaultErrorMap;\nexports.overrideErrorMap = exports.defaultErrorMap;\nconst setErrorMap = (map) => {\n    exports.overrideErrorMap = map;\n};\nexports.setErrorMap = setErrorMap;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/zod/lib/ZodError.js?')},"./node_modules/zod/lib/external.js":
/*!******************************************!*\
  !*** ./node_modules/zod/lib/external.js ***!
  \******************************************/function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\n__exportStar(__webpack_require__(/*! ./helpers/parseUtil */ "./node_modules/zod/lib/helpers/parseUtil.js"), exports);\n__exportStar(__webpack_require__(/*! ./helpers/typeAliases */ "./node_modules/zod/lib/helpers/typeAliases.js"), exports);\n__exportStar(__webpack_require__(/*! ./types */ "./node_modules/zod/lib/types.js"), exports);\n__exportStar(__webpack_require__(/*! ./ZodError */ "./node_modules/zod/lib/ZodError.js"), exports);\n\n\n//# sourceURL=webpack://txadmin/./node_modules/zod/lib/external.js?')},"./node_modules/zod/lib/helpers/errorUtil.js":
/*!***************************************************!*\
  !*** ./node_modules/zod/lib/helpers/errorUtil.js ***!
  \***************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.errorUtil = void 0;\nvar errorUtil;\n(function (errorUtil) {\n    errorUtil.errToObj = (message) => typeof message === "string" ? { message } : message || {};\n    errorUtil.toString = (message) => typeof message === "string" ? message : message === null || message === void 0 ? void 0 : message.message;\n})(errorUtil = exports.errorUtil || (exports.errorUtil = {}));\n\n\n//# sourceURL=webpack://txadmin/./node_modules/zod/lib/helpers/errorUtil.js?')},"./node_modules/zod/lib/helpers/parseUtil.js":
/*!***************************************************!*\
  !*** ./node_modules/zod/lib/helpers/parseUtil.js ***!
  \***************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.isAsync = exports.isValid = exports.isDirty = exports.isAborted = exports.OK = exports.DIRTY = exports.INVALID = exports.ParseStatus = exports.addIssueToContext = exports.EMPTY_PATH = exports.makeIssue = exports.getParsedType = exports.ZodParsedType = void 0;\nconst ZodError_1 = __webpack_require__(/*! ../ZodError */ "./node_modules/zod/lib/ZodError.js");\nconst util_1 = __webpack_require__(/*! ./util */ "./node_modules/zod/lib/helpers/util.js");\nexports.ZodParsedType = util_1.util.arrayToEnum([\n    "string",\n    "nan",\n    "number",\n    "integer",\n    "float",\n    "boolean",\n    "date",\n    "bigint",\n    "symbol",\n    "function",\n    "undefined",\n    "null",\n    "array",\n    "object",\n    "unknown",\n    "promise",\n    "void",\n    "never",\n    "map",\n    "set",\n]);\nconst getParsedType = (data) => {\n    const t = typeof data;\n    switch (t) {\n        case "undefined":\n            return exports.ZodParsedType.undefined;\n        case "string":\n            return exports.ZodParsedType.string;\n        case "number":\n            return isNaN(data) ? exports.ZodParsedType.nan : exports.ZodParsedType.number;\n        case "boolean":\n            return exports.ZodParsedType.boolean;\n        case "function":\n            return exports.ZodParsedType.function;\n        case "bigint":\n            return exports.ZodParsedType.bigint;\n        case "object":\n            if (Array.isArray(data)) {\n                return exports.ZodParsedType.array;\n            }\n            if (data === null) {\n                return exports.ZodParsedType.null;\n            }\n            if (data.then &&\n                typeof data.then === "function" &&\n                data.catch &&\n                typeof data.catch === "function") {\n                return exports.ZodParsedType.promise;\n            }\n            if (typeof Map !== "undefined" && data instanceof Map) {\n                return exports.ZodParsedType.map;\n            }\n            if (typeof Set !== "undefined" && data instanceof Set) {\n                return exports.ZodParsedType.set;\n            }\n            if (typeof Date !== "undefined" && data instanceof Date) {\n                return exports.ZodParsedType.date;\n            }\n            return exports.ZodParsedType.object;\n        default:\n            return exports.ZodParsedType.unknown;\n    }\n};\nexports.getParsedType = getParsedType;\nconst makeIssue = (params) => {\n    const { data, path, errorMaps, issueData } = params;\n    const fullPath = [...path, ...(issueData.path || [])];\n    const fullIssue = {\n        ...issueData,\n        path: fullPath,\n    };\n    let errorMessage = "";\n    const maps = errorMaps\n        .filter((m) => !!m)\n        .slice()\n        .reverse();\n    for (const map of maps) {\n        errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n    }\n    return {\n        ...issueData,\n        path: fullPath,\n        message: issueData.message || errorMessage,\n    };\n};\nexports.makeIssue = makeIssue;\nexports.EMPTY_PATH = [];\nfunction addIssueToContext(ctx, issueData) {\n    const issue = (0, exports.makeIssue)({\n        issueData: issueData,\n        data: ctx.data,\n        path: ctx.path,\n        errorMaps: [\n            ctx.common.contextualErrorMap,\n            ctx.schemaErrorMap,\n            ZodError_1.overrideErrorMap,\n            ZodError_1.defaultErrorMap, // then global default map\n        ].filter((x) => !!x),\n    });\n    ctx.common.issues.push(issue);\n}\nexports.addIssueToContext = addIssueToContext;\nclass ParseStatus {\n    constructor() {\n        this.value = "valid";\n    }\n    dirty() {\n        if (this.value === "valid")\n            this.value = "dirty";\n    }\n    abort() {\n        if (this.value !== "aborted")\n            this.value = "aborted";\n    }\n    static mergeArray(status, results) {\n        const arrayValue = [];\n        for (const s of results) {\n            if (s.status === "aborted")\n                return exports.INVALID;\n            if (s.status === "dirty")\n                status.dirty();\n            arrayValue.push(s.value);\n        }\n        return { status: status.value, value: arrayValue };\n    }\n    static async mergeObjectAsync(status, pairs) {\n        const syncPairs = [];\n        for (const pair of pairs) {\n            syncPairs.push({\n                key: await pair.key,\n                value: await pair.value,\n            });\n        }\n        return ParseStatus.mergeObjectSync(status, syncPairs);\n    }\n    static mergeObjectSync(status, pairs) {\n        const finalObject = {};\n        for (const pair of pairs) {\n            const { key, value } = pair;\n            if (key.status === "aborted")\n                return exports.INVALID;\n            if (value.status === "aborted")\n                return exports.INVALID;\n            if (key.status === "dirty")\n                status.dirty();\n            if (value.status === "dirty")\n                status.dirty();\n            if (typeof value.value !== "undefined" || pair.alwaysSet) {\n                finalObject[key.value] = value.value;\n            }\n        }\n        return { status: status.value, value: finalObject };\n    }\n}\nexports.ParseStatus = ParseStatus;\nexports.INVALID = Object.freeze({\n    status: "aborted",\n});\nconst DIRTY = (value) => ({ status: "dirty", value });\nexports.DIRTY = DIRTY;\nconst OK = (value) => ({ status: "valid", value });\nexports.OK = OK;\nconst isAborted = (x) => x.status === "aborted";\nexports.isAborted = isAborted;\nconst isDirty = (x) => x.status === "dirty";\nexports.isDirty = isDirty;\nconst isValid = (x) => x.status === "valid";\nexports.isValid = isValid;\nconst isAsync = (x) => typeof Promise !== undefined && x instanceof Promise;\nexports.isAsync = isAsync;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/zod/lib/helpers/parseUtil.js?')},"./node_modules/zod/lib/helpers/typeAliases.js":
/*!*****************************************************!*\
  !*** ./node_modules/zod/lib/helpers/typeAliases.js ***!
  \*****************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\n\n\n//# sourceURL=webpack://txadmin/./node_modules/zod/lib/helpers/typeAliases.js?')},"./node_modules/zod/lib/helpers/util.js":
/*!**********************************************!*\
  !*** ./node_modules/zod/lib/helpers/util.js ***!
  \**********************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.util = void 0;\nvar util;\n(function (util) {\n    function assertNever(_x) {\n        throw new Error();\n    }\n    util.assertNever = assertNever;\n    util.arrayToEnum = (items) => {\n        const obj = {};\n        for (const item of items) {\n            obj[item] = item;\n        }\n        return obj;\n    };\n    util.getValidEnumValues = (obj) => {\n        const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== "number");\n        const filtered = {};\n        for (const k of validKeys) {\n            filtered[k] = obj[k];\n        }\n        return util.objectValues(filtered);\n    };\n    util.objectValues = (obj) => {\n        return util.objectKeys(obj).map(function (e) {\n            return obj[e];\n        });\n    };\n    util.objectKeys = typeof Object.keys === "function" // eslint-disable-line ban/ban\n        ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n        : (object) => {\n            const keys = [];\n            for (const key in object) {\n                if (Object.prototype.hasOwnProperty.call(object, key)) {\n                    keys.push(key);\n                }\n            }\n            return keys;\n        };\n    util.find = (arr, checker) => {\n        for (const item of arr) {\n            if (checker(item))\n                return item;\n        }\n        return undefined;\n    };\n    util.isInteger = typeof Number.isInteger === "function"\n        ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n        : (val) => typeof val === "number" && isFinite(val) && Math.floor(val) === val;\n})(util = exports.util || (exports.util = {}));\n\n\n//# sourceURL=webpack://txadmin/./node_modules/zod/lib/helpers/util.js?')},"./node_modules/zod/lib/index.js":
/*!***************************************!*\
  !*** ./node_modules/zod/lib/index.js ***!
  \***************************************/function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, "default", { enumerable: true, value: v });\n}) : function(o, v) {\n    o["default"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.z = void 0;\nconst mod = __importStar(__webpack_require__(/*! ./external */ "./node_modules/zod/lib/external.js"));\nexports.z = mod;\n__exportStar(__webpack_require__(/*! ./external */ "./node_modules/zod/lib/external.js"), exports);\nexports["default"] = mod;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/zod/lib/index.js?')},"./node_modules/zod/lib/types.js":
/*!***************************************!*\
  !*** ./node_modules/zod/lib/types.js ***!
  \***************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.intersection = exports["instanceof"] = exports["function"] = exports["enum"] = exports.effect = exports.discriminatedUnion = exports.date = exports.boolean = exports.bigint = exports.array = exports.any = exports.ZodFirstPartyTypeKind = exports.late = exports.ZodSchema = exports.Schema = exports.custom = exports.ZodNaN = exports.ZodDefault = exports.ZodNullable = exports.ZodOptional = exports.ZodTransformer = exports.ZodEffects = exports.ZodPromise = exports.ZodNativeEnum = exports.ZodEnum = exports.ZodLiteral = exports.ZodLazy = exports.ZodFunction = exports.ZodSet = exports.ZodMap = exports.ZodRecord = exports.ZodTuple = exports.ZodIntersection = exports.ZodDiscriminatedUnion = exports.ZodUnion = exports.ZodObject = exports.objectUtil = exports.ZodArray = exports.ZodVoid = exports.ZodNever = exports.ZodUnknown = exports.ZodAny = exports.ZodNull = exports.ZodUndefined = exports.ZodDate = exports.ZodBoolean = exports.ZodBigInt = exports.ZodNumber = exports.ZodString = exports.ZodType = void 0;\nexports["void"] = exports.unknown = exports.union = exports.undefined = exports.tuple = exports.transformer = exports.string = exports.strictObject = exports.set = exports.record = exports.promise = exports.preprocess = exports.ostring = exports.optional = exports.onumber = exports.oboolean = exports.object = exports.number = exports.nullable = exports["null"] = exports.never = exports.nativeEnum = exports.nan = exports.map = exports.literal = exports.lazy = void 0;\nconst errorUtil_1 = __webpack_require__(/*! ./helpers/errorUtil */ "./node_modules/zod/lib/helpers/errorUtil.js");\nconst parseUtil_1 = __webpack_require__(/*! ./helpers/parseUtil */ "./node_modules/zod/lib/helpers/parseUtil.js");\nconst util_1 = __webpack_require__(/*! ./helpers/util */ "./node_modules/zod/lib/helpers/util.js");\nconst ZodError_1 = __webpack_require__(/*! ./ZodError */ "./node_modules/zod/lib/ZodError.js");\nclass ParseInputLazyPath {\n    constructor(parent, value, path, key) {\n        this.parent = parent;\n        this.data = value;\n        this._path = path;\n        this._key = key;\n    }\n    get path() {\n        return this._path.concat(this._key);\n    }\n}\nconst handleResult = (ctx, result) => {\n    if ((0, parseUtil_1.isValid)(result)) {\n        return { success: true, data: result.value };\n    }\n    else {\n        if (!ctx.common.issues.length) {\n            throw new Error("Validation failed but no issues detected.");\n        }\n        const error = new ZodError_1.ZodError(ctx.common.issues);\n        return { success: false, error };\n    }\n};\nfunction processCreateParams(params) {\n    if (!params)\n        return {};\n    const { errorMap, invalid_type_error, required_error, description } = params;\n    if (errorMap && (invalid_type_error || required_error)) {\n        throw new Error(`Can\'t use "invalid" or "required" in conjunction with custom error map.`);\n    }\n    if (errorMap)\n        return { errorMap: errorMap, description };\n    const customMap = (iss, ctx) => {\n        if (iss.code !== "invalid_type")\n            return { message: ctx.defaultError };\n        if (typeof ctx.data === "undefined" && required_error)\n            return { message: required_error };\n        if (params.invalid_type_error)\n            return { message: params.invalid_type_error };\n        return { message: ctx.defaultError };\n    };\n    return { errorMap: customMap, description };\n}\nclass ZodType {\n    constructor(def) {\n        /** Alias of safeParseAsync */\n        this.spa = this.safeParseAsync;\n        this.superRefine = this._refinement;\n        this._def = def;\n        this.parse = this.parse.bind(this);\n        this.safeParse = this.safeParse.bind(this);\n        this.parseAsync = this.parseAsync.bind(this);\n        this.safeParseAsync = this.safeParseAsync.bind(this);\n        this.spa = this.spa.bind(this);\n        this.refine = this.refine.bind(this);\n        this.refinement = this.refinement.bind(this);\n        this.superRefine = this.superRefine.bind(this);\n        this.optional = this.optional.bind(this);\n        this.nullable = this.nullable.bind(this);\n        this.nullish = this.nullish.bind(this);\n        this.array = this.array.bind(this);\n        this.promise = this.promise.bind(this);\n        this.or = this.or.bind(this);\n        this.and = this.and.bind(this);\n        this.transform = this.transform.bind(this);\n        this.default = this.default.bind(this);\n        this.describe = this.describe.bind(this);\n        this.isNullable = this.isNullable.bind(this);\n        this.isOptional = this.isOptional.bind(this);\n    }\n    get description() {\n        return this._def.description;\n    }\n    _getType(input) {\n        return (0, parseUtil_1.getParsedType)(input.data);\n    }\n    _getOrReturnCtx(input, ctx) {\n        return (ctx || {\n            common: input.parent.common,\n            data: input.data,\n            parsedType: (0, parseUtil_1.getParsedType)(input.data),\n            schemaErrorMap: this._def.errorMap,\n            path: input.path,\n            parent: input.parent,\n        });\n    }\n    _processInputParams(input) {\n        return {\n            status: new parseUtil_1.ParseStatus(),\n            ctx: {\n                common: input.parent.common,\n                data: input.data,\n                parsedType: (0, parseUtil_1.getParsedType)(input.data),\n                schemaErrorMap: this._def.errorMap,\n                path: input.path,\n                parent: input.parent,\n            },\n        };\n    }\n    _parseSync(input) {\n        const result = this._parse(input);\n        if ((0, parseUtil_1.isAsync)(result)) {\n            throw new Error("Synchronous parse encountered promise.");\n        }\n        return result;\n    }\n    _parseAsync(input) {\n        const result = this._parse(input);\n        return Promise.resolve(result);\n    }\n    parse(data, params) {\n        const result = this.safeParse(data, params);\n        if (result.success)\n            return result.data;\n        throw result.error;\n    }\n    safeParse(data, params) {\n        var _a;\n        const ctx = {\n            common: {\n                issues: [],\n                async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false,\n                contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n            },\n            path: (params === null || params === void 0 ? void 0 : params.path) || [],\n            schemaErrorMap: this._def.errorMap,\n            parent: null,\n            data,\n            parsedType: (0, parseUtil_1.getParsedType)(data),\n        };\n        const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n        return handleResult(ctx, result);\n    }\n    async parseAsync(data, params) {\n        const result = await this.safeParseAsync(data, params);\n        if (result.success)\n            return result.data;\n        throw result.error;\n    }\n    async safeParseAsync(data, params) {\n        const ctx = {\n            common: {\n                issues: [],\n                contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n                async: true,\n            },\n            path: (params === null || params === void 0 ? void 0 : params.path) || [],\n            schemaErrorMap: this._def.errorMap,\n            parent: null,\n            data,\n            parsedType: (0, parseUtil_1.getParsedType)(data),\n        };\n        const maybeAsyncResult = this._parse({ data, path: [], parent: ctx });\n        const result = await ((0, parseUtil_1.isAsync)(maybeAsyncResult)\n            ? maybeAsyncResult\n            : Promise.resolve(maybeAsyncResult));\n        return handleResult(ctx, result);\n    }\n    refine(check, message) {\n        const getIssueProperties = (val) => {\n            if (typeof message === "string" || typeof message === "undefined") {\n                return { message };\n            }\n            else if (typeof message === "function") {\n                return message(val);\n            }\n            else {\n                return message;\n            }\n        };\n        return this._refinement((val, ctx) => {\n            const result = check(val);\n            const setError = () => ctx.addIssue({\n                code: ZodError_1.ZodIssueCode.custom,\n                ...getIssueProperties(val),\n            });\n            if (typeof Promise !== "undefined" && result instanceof Promise) {\n                return result.then((data) => {\n                    if (!data) {\n                        setError();\n                        return false;\n                    }\n                    else {\n                        return true;\n                    }\n                });\n            }\n            if (!result) {\n                setError();\n                return false;\n            }\n            else {\n                return true;\n            }\n        });\n    }\n    refinement(check, refinementData) {\n        return this._refinement((val, ctx) => {\n            if (!check(val)) {\n                ctx.addIssue(typeof refinementData === "function"\n                    ? refinementData(val, ctx)\n                    : refinementData);\n                return false;\n            }\n            else {\n                return true;\n            }\n        });\n    }\n    _refinement(refinement) {\n        return new ZodEffects({\n            schema: this,\n            typeName: ZodFirstPartyTypeKind.ZodEffects,\n            effect: { type: "refinement", refinement },\n        });\n    }\n    optional() {\n        ("");\n        ("asdf");\n        return ZodOptional.create(this);\n    }\n    nullable() {\n        return ZodNullable.create(this);\n    }\n    nullish() {\n        return this.optional().nullable();\n    }\n    array() {\n        return ZodArray.create(this);\n    }\n    promise() {\n        return ZodPromise.create(this);\n    }\n    or(option) {\n        return ZodUnion.create([this, option]);\n    }\n    and(incoming) {\n        return ZodIntersection.create(this, incoming);\n    }\n    transform(transform) {\n        return new ZodEffects({\n            schema: this,\n            typeName: ZodFirstPartyTypeKind.ZodEffects,\n            effect: { type: "transform", transform },\n        });\n    }\n    default(def) {\n        const defaultValueFunc = typeof def === "function" ? def : () => def;\n        return new ZodDefault({\n            innerType: this,\n            defaultValue: defaultValueFunc,\n            typeName: ZodFirstPartyTypeKind.ZodDefault,\n        });\n    }\n    describe(description) {\n        const This = this.constructor;\n        return new This({\n            ...this._def,\n            description,\n        });\n    }\n    isOptional() {\n        return this.safeParse(undefined).success;\n    }\n    isNullable() {\n        return this.safeParse(null).success;\n    }\n}\nexports.ZodType = ZodType;\nexports.Schema = ZodType;\nexports.ZodSchema = ZodType;\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst uuidRegex = /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn\'t support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&\'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&\'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n// eslint-disable-next-line\nconst emailRegex = /^(([^<>()[\\]\\.,;:\\s@\\"]+(\\.[^<>()[\\]\\.,;:\\s@\\"]+)*)|(\\".+\\"))@(([^<>()[\\]\\.,;:\\s@\\"]+\\.)+[^<>()[\\]\\.,;:\\s@\\"]{2,})$/i;\nclass ZodString extends ZodType {\n    constructor() {\n        super(...arguments);\n        this._regex = (regex, validation, message) => this.refinement((data) => regex.test(data), {\n            validation,\n            code: ZodError_1.ZodIssueCode.invalid_string,\n            ...errorUtil_1.errorUtil.errToObj(message),\n        });\n        /**\n         * Deprecated.\n         * Use z.string().min(1) instead.\n         */\n        this.nonempty = (message) => this.min(1, errorUtil_1.errorUtil.errToObj(message));\n    }\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== parseUtil_1.ZodParsedType.string) {\n            const ctx = this._getOrReturnCtx(input);\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: parseUtil_1.ZodParsedType.string,\n                received: ctx.parsedType,\n            }\n            //\n            );\n            return parseUtil_1.INVALID;\n        }\n        const status = new parseUtil_1.ParseStatus();\n        let ctx = undefined;\n        for (const check of this._def.checks) {\n            if (check.kind === "min") {\n                if (input.data.length < check.value) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        code: ZodError_1.ZodIssueCode.too_small,\n                        minimum: check.value,\n                        type: "string",\n                        inclusive: true,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === "max") {\n                if (input.data.length > check.value) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        code: ZodError_1.ZodIssueCode.too_big,\n                        maximum: check.value,\n                        type: "string",\n                        inclusive: true,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === "email") {\n                if (!emailRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        validation: "email",\n                        code: ZodError_1.ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === "uuid") {\n                if (!uuidRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        validation: "uuid",\n                        code: ZodError_1.ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === "cuid") {\n                if (!cuidRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        validation: "cuid",\n                        code: ZodError_1.ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === "url") {\n                try {\n                    new URL(input.data);\n                }\n                catch (_a) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        validation: "url",\n                        code: ZodError_1.ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === "regex") {\n                check.regex.lastIndex = 0;\n                const testResult = check.regex.test(input.data);\n                if (!testResult) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        validation: "regex",\n                        code: ZodError_1.ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n        }\n        return { status: status.value, value: input.data };\n    }\n    _addCheck(check) {\n        return new ZodString({\n            ...this._def,\n            checks: [...this._def.checks, check],\n        });\n    }\n    email(message) {\n        return this._addCheck({ kind: "email", ...errorUtil_1.errorUtil.errToObj(message) });\n    }\n    url(message) {\n        return this._addCheck({ kind: "url", ...errorUtil_1.errorUtil.errToObj(message) });\n    }\n    uuid(message) {\n        return this._addCheck({ kind: "uuid", ...errorUtil_1.errorUtil.errToObj(message) });\n    }\n    cuid(message) {\n        return this._addCheck({ kind: "cuid", ...errorUtil_1.errorUtil.errToObj(message) });\n    }\n    regex(regex, message) {\n        return this._addCheck({\n            kind: "regex",\n            regex: regex,\n            ...errorUtil_1.errorUtil.errToObj(message),\n        });\n    }\n    min(minLength, message) {\n        return this._addCheck({\n            kind: "min",\n            value: minLength,\n            ...errorUtil_1.errorUtil.errToObj(message),\n        });\n    }\n    max(maxLength, message) {\n        return this._addCheck({\n            kind: "max",\n            value: maxLength,\n            ...errorUtil_1.errorUtil.errToObj(message),\n        });\n    }\n    length(len, message) {\n        return this.min(len, message).max(len, message);\n    }\n    get isEmail() {\n        return !!this._def.checks.find((ch) => ch.kind === "email");\n    }\n    get isURL() {\n        return !!this._def.checks.find((ch) => ch.kind === "url");\n    }\n    get isUUID() {\n        return !!this._def.checks.find((ch) => ch.kind === "uuid");\n    }\n    get isCUID() {\n        return !!this._def.checks.find((ch) => ch.kind === "cuid");\n    }\n    get minLength() {\n        let min = -Infinity;\n        this._def.checks.map((ch) => {\n            if (ch.kind === "min") {\n                if (min === null || ch.value > min) {\n                    min = ch.value;\n                }\n            }\n        });\n        return min;\n    }\n    get maxLength() {\n        let max = null;\n        this._def.checks.map((ch) => {\n            if (ch.kind === "max") {\n                if (max === null || ch.value < max) {\n                    max = ch.value;\n                }\n            }\n        });\n        return max;\n    }\n}\nexports.ZodString = ZodString;\nZodString.create = (params) => {\n    return new ZodString({\n        checks: [],\n        typeName: ZodFirstPartyTypeKind.ZodString,\n        ...processCreateParams(params),\n    });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n    const valDecCount = (val.toString().split(".")[1] || "").length;\n    const stepDecCount = (step.toString().split(".")[1] || "").length;\n    const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n    const valInt = parseInt(val.toFixed(decCount).replace(".", ""));\n    const stepInt = parseInt(step.toFixed(decCount).replace(".", ""));\n    return (valInt % stepInt) / Math.pow(10, decCount);\n}\nclass ZodNumber extends ZodType {\n    constructor() {\n        super(...arguments);\n        this.min = this.gte;\n        this.max = this.lte;\n        this.step = this.multipleOf;\n    }\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== parseUtil_1.ZodParsedType.number) {\n            const ctx = this._getOrReturnCtx(input);\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: parseUtil_1.ZodParsedType.number,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        let ctx = undefined;\n        const status = new parseUtil_1.ParseStatus();\n        for (const check of this._def.checks) {\n            if (check.kind === "int") {\n                if (!util_1.util.isInteger(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        code: ZodError_1.ZodIssueCode.invalid_type,\n                        expected: "integer",\n                        received: "float",\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === "min") {\n                const tooSmall = check.inclusive\n                    ? input.data < check.value\n                    : input.data <= check.value;\n                if (tooSmall) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        code: ZodError_1.ZodIssueCode.too_small,\n                        minimum: check.value,\n                        type: "number",\n                        inclusive: check.inclusive,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === "max") {\n                const tooBig = check.inclusive\n                    ? input.data > check.value\n                    : input.data >= check.value;\n                if (tooBig) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        code: ZodError_1.ZodIssueCode.too_big,\n                        maximum: check.value,\n                        type: "number",\n                        inclusive: check.inclusive,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === "multipleOf") {\n                if (floatSafeRemainder(input.data, check.value) !== 0) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        code: ZodError_1.ZodIssueCode.not_multiple_of,\n                        multipleOf: check.value,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else {\n                util_1.util.assertNever(check);\n            }\n        }\n        return { status: status.value, value: input.data };\n    }\n    gte(value, message) {\n        return this.setLimit("min", value, true, errorUtil_1.errorUtil.toString(message));\n    }\n    gt(value, message) {\n        return this.setLimit("min", value, false, errorUtil_1.errorUtil.toString(message));\n    }\n    lte(value, message) {\n        return this.setLimit("max", value, true, errorUtil_1.errorUtil.toString(message));\n    }\n    lt(value, message) {\n        return this.setLimit("max", value, false, errorUtil_1.errorUtil.toString(message));\n    }\n    setLimit(kind, value, inclusive, message) {\n        return new ZodNumber({\n            ...this._def,\n            checks: [\n                ...this._def.checks,\n                {\n                    kind,\n                    value,\n                    inclusive,\n                    message: errorUtil_1.errorUtil.toString(message),\n                },\n            ],\n        });\n    }\n    _addCheck(check) {\n        return new ZodNumber({\n            ...this._def,\n            checks: [...this._def.checks, check],\n        });\n    }\n    int(message) {\n        return this._addCheck({\n            kind: "int",\n            message: errorUtil_1.errorUtil.toString(message),\n        });\n    }\n    positive(message) {\n        return this._addCheck({\n            kind: "min",\n            value: 0,\n            inclusive: false,\n            message: errorUtil_1.errorUtil.toString(message),\n        });\n    }\n    negative(message) {\n        return this._addCheck({\n            kind: "max",\n            value: 0,\n            inclusive: false,\n            message: errorUtil_1.errorUtil.toString(message),\n        });\n    }\n    nonpositive(message) {\n        return this._addCheck({\n            kind: "max",\n            value: 0,\n            inclusive: true,\n            message: errorUtil_1.errorUtil.toString(message),\n        });\n    }\n    nonnegative(message) {\n        return this._addCheck({\n            kind: "min",\n            value: 0,\n            inclusive: true,\n            message: errorUtil_1.errorUtil.toString(message),\n        });\n    }\n    multipleOf(value, message) {\n        return this._addCheck({\n            kind: "multipleOf",\n            value: value,\n            message: errorUtil_1.errorUtil.toString(message),\n        });\n    }\n    get minValue() {\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === "min") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n        }\n        return min;\n    }\n    get maxValue() {\n        let max = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === "max") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return max;\n    }\n    get isInt() {\n        return !!this._def.checks.find((ch) => ch.kind === "int");\n    }\n}\nexports.ZodNumber = ZodNumber;\nZodNumber.create = (params) => {\n    return new ZodNumber({\n        checks: [],\n        typeName: ZodFirstPartyTypeKind.ZodNumber,\n        ...processCreateParams(params),\n    });\n};\nclass ZodBigInt extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== parseUtil_1.ZodParsedType.bigint) {\n            const ctx = this._getOrReturnCtx(input);\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: parseUtil_1.ZodParsedType.bigint,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        return (0, parseUtil_1.OK)(input.data);\n    }\n}\nexports.ZodBigInt = ZodBigInt;\nZodBigInt.create = (params) => {\n    return new ZodBigInt({\n        typeName: ZodFirstPartyTypeKind.ZodBigInt,\n        ...processCreateParams(params),\n    });\n};\nclass ZodBoolean extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== parseUtil_1.ZodParsedType.boolean) {\n            const ctx = this._getOrReturnCtx(input);\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: parseUtil_1.ZodParsedType.boolean,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        return (0, parseUtil_1.OK)(input.data);\n    }\n}\nexports.ZodBoolean = ZodBoolean;\nZodBoolean.create = (params) => {\n    return new ZodBoolean({\n        typeName: ZodFirstPartyTypeKind.ZodBoolean,\n        ...processCreateParams(params),\n    });\n};\nclass ZodDate extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== parseUtil_1.ZodParsedType.date) {\n            const ctx = this._getOrReturnCtx(input);\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: parseUtil_1.ZodParsedType.date,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        if (isNaN(input.data.getTime())) {\n            const ctx = this._getOrReturnCtx(input);\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_date,\n            });\n            return parseUtil_1.INVALID;\n        }\n        return {\n            status: "valid",\n            value: new Date(input.data.getTime()),\n        };\n    }\n}\nexports.ZodDate = ZodDate;\nZodDate.create = (params) => {\n    return new ZodDate({\n        typeName: ZodFirstPartyTypeKind.ZodDate,\n        ...processCreateParams(params),\n    });\n};\nclass ZodUndefined extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== parseUtil_1.ZodParsedType.undefined) {\n            const ctx = this._getOrReturnCtx(input);\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: parseUtil_1.ZodParsedType.undefined,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        return (0, parseUtil_1.OK)(input.data);\n    }\n}\nexports.ZodUndefined = ZodUndefined;\nZodUndefined.create = (params) => {\n    return new ZodUndefined({\n        typeName: ZodFirstPartyTypeKind.ZodUndefined,\n        ...processCreateParams(params),\n    });\n};\nclass ZodNull extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== parseUtil_1.ZodParsedType.null) {\n            const ctx = this._getOrReturnCtx(input);\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: parseUtil_1.ZodParsedType.null,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        return (0, parseUtil_1.OK)(input.data);\n    }\n}\nexports.ZodNull = ZodNull;\nZodNull.create = (params) => {\n    return new ZodNull({\n        typeName: ZodFirstPartyTypeKind.ZodNull,\n        ...processCreateParams(params),\n    });\n};\nclass ZodAny extends ZodType {\n    constructor() {\n        super(...arguments);\n        // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n        this._any = true;\n    }\n    _parse(input) {\n        return (0, parseUtil_1.OK)(input.data);\n    }\n}\nexports.ZodAny = ZodAny;\nZodAny.create = (params) => {\n    return new ZodAny({\n        typeName: ZodFirstPartyTypeKind.ZodAny,\n        ...processCreateParams(params),\n    });\n};\nclass ZodUnknown extends ZodType {\n    constructor() {\n        super(...arguments);\n        // required\n        this._unknown = true;\n    }\n    _parse(input) {\n        return (0, parseUtil_1.OK)(input.data);\n    }\n}\nexports.ZodUnknown = ZodUnknown;\nZodUnknown.create = (params) => {\n    return new ZodUnknown({\n        typeName: ZodFirstPartyTypeKind.ZodUnknown,\n        ...processCreateParams(params),\n    });\n};\nclass ZodNever extends ZodType {\n    _parse(input) {\n        const ctx = this._getOrReturnCtx(input);\n        (0, parseUtil_1.addIssueToContext)(ctx, {\n            code: ZodError_1.ZodIssueCode.invalid_type,\n            expected: parseUtil_1.ZodParsedType.never,\n            received: ctx.parsedType,\n        });\n        return parseUtil_1.INVALID;\n    }\n}\nexports.ZodNever = ZodNever;\nZodNever.create = (params) => {\n    return new ZodNever({\n        typeName: ZodFirstPartyTypeKind.ZodNever,\n        ...processCreateParams(params),\n    });\n};\nclass ZodVoid extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== parseUtil_1.ZodParsedType.undefined) {\n            const ctx = this._getOrReturnCtx(input);\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: parseUtil_1.ZodParsedType.void,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        return (0, parseUtil_1.OK)(input.data);\n    }\n}\nexports.ZodVoid = ZodVoid;\nZodVoid.create = (params) => {\n    return new ZodVoid({\n        typeName: ZodFirstPartyTypeKind.ZodVoid,\n        ...processCreateParams(params),\n    });\n};\nclass ZodArray extends ZodType {\n    _parse(input) {\n        const { ctx, status } = this._processInputParams(input);\n        const def = this._def;\n        if (ctx.parsedType !== parseUtil_1.ZodParsedType.array) {\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: parseUtil_1.ZodParsedType.array,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        if (def.minLength !== null) {\n            if (ctx.data.length < def.minLength.value) {\n                (0, parseUtil_1.addIssueToContext)(ctx, {\n                    code: ZodError_1.ZodIssueCode.too_small,\n                    minimum: def.minLength.value,\n                    type: "array",\n                    inclusive: true,\n                    message: def.minLength.message,\n                });\n                status.dirty();\n            }\n        }\n        if (def.maxLength !== null) {\n            if (ctx.data.length > def.maxLength.value) {\n                (0, parseUtil_1.addIssueToContext)(ctx, {\n                    code: ZodError_1.ZodIssueCode.too_big,\n                    maximum: def.maxLength.value,\n                    type: "array",\n                    inclusive: true,\n                    message: def.maxLength.message,\n                });\n                status.dirty();\n            }\n        }\n        if (ctx.common.async) {\n            return Promise.all(ctx.data.map((item, i) => {\n                return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n            })).then((result) => {\n                return parseUtil_1.ParseStatus.mergeArray(status, result);\n            });\n        }\n        const result = ctx.data.map((item, i) => {\n            return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n        });\n        return parseUtil_1.ParseStatus.mergeArray(status, result);\n    }\n    get element() {\n        return this._def.type;\n    }\n    min(minLength, message) {\n        return new ZodArray({\n            ...this._def,\n            minLength: { value: minLength, message: errorUtil_1.errorUtil.toString(message) },\n        });\n    }\n    max(maxLength, message) {\n        return new ZodArray({\n            ...this._def,\n            maxLength: { value: maxLength, message: errorUtil_1.errorUtil.toString(message) },\n        });\n    }\n    length(len, message) {\n        return this.min(len, message).max(len, message);\n    }\n    nonempty(message) {\n        return this.min(1, message);\n    }\n}\nexports.ZodArray = ZodArray;\nZodArray.create = (schema, params) => {\n    return new ZodArray({\n        type: schema,\n        minLength: null,\n        maxLength: null,\n        typeName: ZodFirstPartyTypeKind.ZodArray,\n        ...processCreateParams(params),\n    });\n};\n/////////////////////////////////////////\n/////////////////////////////////////////\n//////////                     //////////\n//////////      ZodObject      //////////\n//////////                     //////////\n/////////////////////////////////////////\n/////////////////////////////////////////\nvar objectUtil;\n(function (objectUtil) {\n    objectUtil.mergeShapes = (first, second) => {\n        return {\n            ...first,\n            ...second, // second overwrites first\n        };\n    };\n})(objectUtil = exports.objectUtil || (exports.objectUtil = {}));\nconst AugmentFactory = (def) => (augmentation) => {\n    return new ZodObject({\n        ...def,\n        shape: () => ({\n            ...def.shape(),\n            ...augmentation,\n        }),\n    });\n};\nfunction deepPartialify(schema) {\n    if (schema instanceof ZodObject) {\n        const newShape = {};\n        for (const key in schema.shape) {\n            const fieldSchema = schema.shape[key];\n            newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n        }\n        return new ZodObject({\n            ...schema._def,\n            shape: () => newShape,\n        });\n    }\n    else if (schema instanceof ZodArray) {\n        return ZodArray.create(deepPartialify(schema.element));\n    }\n    else if (schema instanceof ZodOptional) {\n        return ZodOptional.create(deepPartialify(schema.unwrap()));\n    }\n    else if (schema instanceof ZodNullable) {\n        return ZodNullable.create(deepPartialify(schema.unwrap()));\n    }\n    else if (schema instanceof ZodTuple) {\n        return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n    }\n    else {\n        return schema;\n    }\n}\nclass ZodObject extends ZodType {\n    constructor() {\n        super(...arguments);\n        this._cached = null;\n        /**\n         * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n         * If you want to pass through unknown properties, use `.passthrough()` instead.\n         */\n        this.nonstrict = this.passthrough;\n        this.augment = AugmentFactory(this._def);\n        this.extend = AugmentFactory(this._def);\n    }\n    _getCached() {\n        if (this._cached !== null)\n            return this._cached;\n        const shape = this._def.shape();\n        const keys = util_1.util.objectKeys(shape);\n        return (this._cached = { shape, keys });\n    }\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== parseUtil_1.ZodParsedType.object) {\n            const ctx = this._getOrReturnCtx(input);\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: parseUtil_1.ZodParsedType.object,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        const { status, ctx } = this._processInputParams(input);\n        const { shape, keys: shapeKeys } = this._getCached();\n        const extraKeys = [];\n        for (const key in ctx.data) {\n            if (!shapeKeys.includes(key)) {\n                extraKeys.push(key);\n            }\n        }\n        const pairs = [];\n        for (const key of shapeKeys) {\n            const keyValidator = shape[key];\n            const value = ctx.data[key];\n            pairs.push({\n                key: { status: "valid", value: key },\n                value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n                alwaysSet: key in ctx.data,\n            });\n        }\n        if (this._def.catchall instanceof ZodNever) {\n            const unknownKeys = this._def.unknownKeys;\n            if (unknownKeys === "passthrough") {\n                for (const key of extraKeys) {\n                    pairs.push({\n                        key: { status: "valid", value: key },\n                        value: { status: "valid", value: ctx.data[key] },\n                    });\n                }\n            }\n            else if (unknownKeys === "strict") {\n                if (extraKeys.length > 0) {\n                    (0, parseUtil_1.addIssueToContext)(ctx, {\n                        code: ZodError_1.ZodIssueCode.unrecognized_keys,\n                        keys: extraKeys,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (unknownKeys === "strip") {\n            }\n            else {\n                throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n            }\n        }\n        else {\n            // run catchall validation\n            const catchall = this._def.catchall;\n            for (const key of extraKeys) {\n                const value = ctx.data[key];\n                pairs.push({\n                    key: { status: "valid", value: key },\n                    value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n                    ),\n                    alwaysSet: key in ctx.data,\n                });\n            }\n        }\n        if (ctx.common.async) {\n            return Promise.resolve()\n                .then(async () => {\n                const syncPairs = [];\n                for (const pair of pairs) {\n                    const key = await pair.key;\n                    syncPairs.push({\n                        key,\n                        value: await pair.value,\n                        alwaysSet: pair.alwaysSet,\n                    });\n                }\n                return syncPairs;\n            })\n                .then((syncPairs) => {\n                return parseUtil_1.ParseStatus.mergeObjectSync(status, syncPairs);\n            });\n        }\n        else {\n            return parseUtil_1.ParseStatus.mergeObjectSync(status, pairs);\n        }\n    }\n    get shape() {\n        return this._def.shape();\n    }\n    strict(message) {\n        errorUtil_1.errorUtil.errToObj;\n        return new ZodObject({\n            ...this._def,\n            unknownKeys: "strict",\n            ...(message !== undefined\n                ? {\n                    errorMap: (issue, ctx) => {\n                        var _a, _b, _c, _d;\n                        const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError;\n                        if (issue.code === "unrecognized_keys")\n                            return {\n                                message: (_d = errorUtil_1.errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : defaultError,\n                            };\n                        return {\n                            message: defaultError,\n                        };\n                    },\n                }\n                : {}),\n        });\n    }\n    strip() {\n        return new ZodObject({\n            ...this._def,\n            unknownKeys: "strip",\n        });\n    }\n    passthrough() {\n        return new ZodObject({\n            ...this._def,\n            unknownKeys: "passthrough",\n        });\n    }\n    setKey(key, schema) {\n        return this.augment({ [key]: schema });\n    }\n    /**\n     * Prior to zod@1.0.12 there was a bug in the\n     * inferred type of merged objects. Please\n     * upgrade if you are experiencing issues.\n     */\n    merge(merging) {\n        // const mergedShape = objectUtil.mergeShapes(\n        //   this._def.shape(),\n        //   merging._def.shape()\n        // );\n        const merged = new ZodObject({\n            unknownKeys: merging._def.unknownKeys,\n            catchall: merging._def.catchall,\n            shape: () => objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n            typeName: ZodFirstPartyTypeKind.ZodObject,\n        });\n        return merged;\n    }\n    catchall(index) {\n        return new ZodObject({\n            ...this._def,\n            catchall: index,\n        });\n    }\n    pick(mask) {\n        const shape = {};\n        util_1.util.objectKeys(mask).map((key) => {\n            shape[key] = this.shape[key];\n        });\n        return new ZodObject({\n            ...this._def,\n            shape: () => shape,\n        });\n    }\n    omit(mask) {\n        const shape = {};\n        util_1.util.objectKeys(this.shape).map((key) => {\n            if (util_1.util.objectKeys(mask).indexOf(key) === -1) {\n                shape[key] = this.shape[key];\n            }\n        });\n        return new ZodObject({\n            ...this._def,\n            shape: () => shape,\n        });\n    }\n    deepPartial() {\n        return deepPartialify(this);\n    }\n    partial(mask) {\n        const newShape = {};\n        if (mask) {\n            util_1.util.objectKeys(this.shape).map((key) => {\n                if (util_1.util.objectKeys(mask).indexOf(key) === -1) {\n                    newShape[key] = this.shape[key];\n                }\n                else {\n                    newShape[key] = this.shape[key].optional();\n                }\n            });\n            return new ZodObject({\n                ...this._def,\n                shape: () => newShape,\n            });\n        }\n        else {\n            for (const key in this.shape) {\n                const fieldSchema = this.shape[key];\n                newShape[key] = fieldSchema.optional();\n            }\n        }\n        return new ZodObject({\n            ...this._def,\n            shape: () => newShape,\n        });\n    }\n    required() {\n        const newShape = {};\n        for (const key in this.shape) {\n            const fieldSchema = this.shape[key];\n            let newField = fieldSchema;\n            while (newField instanceof ZodOptional) {\n                newField = newField._def.innerType;\n            }\n            newShape[key] = newField;\n        }\n        return new ZodObject({\n            ...this._def,\n            shape: () => newShape,\n        });\n    }\n}\nexports.ZodObject = ZodObject;\nZodObject.create = (shape, params) => {\n    return new ZodObject({\n        shape: () => shape,\n        unknownKeys: "strip",\n        catchall: ZodNever.create(),\n        typeName: ZodFirstPartyTypeKind.ZodObject,\n        ...processCreateParams(params),\n    });\n};\nZodObject.strictCreate = (shape, params) => {\n    return new ZodObject({\n        shape: () => shape,\n        unknownKeys: "strict",\n        catchall: ZodNever.create(),\n        typeName: ZodFirstPartyTypeKind.ZodObject,\n        ...processCreateParams(params),\n    });\n};\nZodObject.lazycreate = (shape, params) => {\n    return new ZodObject({\n        shape,\n        unknownKeys: "strip",\n        catchall: ZodNever.create(),\n        typeName: ZodFirstPartyTypeKind.ZodObject,\n        ...processCreateParams(params),\n    });\n};\nclass ZodUnion extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        const options = this._def.options;\n        function handleResults(results) {\n            // return first issue-free validation if it exists\n            for (const result of results) {\n                if (result.result.status === "valid") {\n                    return result.result;\n                }\n            }\n            for (const result of results) {\n                if (result.result.status === "dirty") {\n                    // add issues from dirty option\n                    ctx.common.issues.push(...result.ctx.common.issues);\n                    return result.result;\n                }\n            }\n            // return invalid\n            const unionErrors = results.map((result) => new ZodError_1.ZodError(result.ctx.common.issues));\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_union,\n                unionErrors,\n            });\n            return parseUtil_1.INVALID;\n        }\n        if (ctx.common.async) {\n            return Promise.all(options.map(async (option) => {\n                const childCtx = {\n                    ...ctx,\n                    common: {\n                        ...ctx.common,\n                        issues: [],\n                    },\n                    parent: null,\n                };\n                return {\n                    result: await option._parseAsync({\n                        data: ctx.data,\n                        path: ctx.path,\n                        parent: childCtx,\n                    }),\n                    ctx: childCtx,\n                };\n            })).then(handleResults);\n        }\n        else {\n            let dirty = undefined;\n            const issues = [];\n            for (const option of options) {\n                const childCtx = {\n                    ...ctx,\n                    common: {\n                        ...ctx.common,\n                        issues: [],\n                    },\n                    parent: null,\n                };\n                const result = option._parseSync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: childCtx,\n                });\n                if (result.status === "valid") {\n                    return result;\n                }\n                else if (result.status === "dirty" && !dirty) {\n                    dirty = { result, ctx: childCtx };\n                }\n                if (childCtx.common.issues.length) {\n                    issues.push(childCtx.common.issues);\n                }\n            }\n            if (dirty) {\n                ctx.common.issues.push(...dirty.ctx.common.issues);\n                return dirty.result;\n            }\n            const unionErrors = issues.map((issues) => new ZodError_1.ZodError(issues));\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_union,\n                unionErrors,\n            });\n            return parseUtil_1.INVALID;\n        }\n    }\n    get options() {\n        return this._def.options;\n    }\n}\nexports.ZodUnion = ZodUnion;\nZodUnion.create = (types, params) => {\n    return new ZodUnion({\n        options: types,\n        typeName: ZodFirstPartyTypeKind.ZodUnion,\n        ...processCreateParams(params),\n    });\n};\nclass ZodDiscriminatedUnion extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== parseUtil_1.ZodParsedType.object) {\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: parseUtil_1.ZodParsedType.object,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        const discriminator = this.discriminator;\n        const discriminatorValue = ctx.data[discriminator];\n        const option = this.options.get(discriminatorValue);\n        if (!option) {\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_union_discriminator,\n                options: this.validDiscriminatorValues,\n                path: [discriminator],\n            });\n            return parseUtil_1.INVALID;\n        }\n        if (ctx.common.async) {\n            return option._parseAsync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            });\n        }\n        else {\n            return option._parseSync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            });\n        }\n    }\n    get discriminator() {\n        return this._def.discriminator;\n    }\n    get validDiscriminatorValues() {\n        return Array.from(this.options.keys());\n    }\n    get options() {\n        return this._def.options;\n    }\n    /**\n     * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n     * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n     * have a different value for each object in the union.\n     * @param discriminator the name of the discriminator property\n     * @param types an array of object schemas\n     * @param params\n     */\n    static create(discriminator, types, params) {\n        // Get all the valid discriminator values\n        const options = new Map();\n        try {\n            types.forEach((type) => {\n                const discriminatorValue = type.shape[discriminator].value;\n                options.set(discriminatorValue, type);\n            });\n        }\n        catch (e) {\n            throw new Error("The discriminator value could not be extracted from all the provided schemas");\n        }\n        // Assert that all the discriminator values are unique\n        if (options.size !== types.length) {\n            throw new Error("Some of the discriminator values are not unique");\n        }\n        return new ZodDiscriminatedUnion({\n            typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n            discriminator,\n            options,\n            ...processCreateParams(params),\n        });\n    }\n}\nexports.ZodDiscriminatedUnion = ZodDiscriminatedUnion;\nfunction mergeValues(a, b) {\n    const aType = (0, parseUtil_1.getParsedType)(a);\n    const bType = (0, parseUtil_1.getParsedType)(b);\n    if (a === b) {\n        return { valid: true, data: a };\n    }\n    else if (aType === parseUtil_1.ZodParsedType.object && bType === parseUtil_1.ZodParsedType.object) {\n        const bKeys = util_1.util.objectKeys(b);\n        const sharedKeys = util_1.util\n            .objectKeys(a)\n            .filter((key) => bKeys.indexOf(key) !== -1);\n        const newObj = { ...a, ...b };\n        for (const key of sharedKeys) {\n            const sharedValue = mergeValues(a[key], b[key]);\n            if (!sharedValue.valid) {\n                return { valid: false };\n            }\n            newObj[key] = sharedValue.data;\n        }\n        return { valid: true, data: newObj };\n    }\n    else if (aType === parseUtil_1.ZodParsedType.array && bType === parseUtil_1.ZodParsedType.array) {\n        if (a.length !== b.length) {\n            return { valid: false };\n        }\n        const newArray = [];\n        for (let index = 0; index < a.length; index++) {\n            const itemA = a[index];\n            const itemB = b[index];\n            const sharedValue = mergeValues(itemA, itemB);\n            if (!sharedValue.valid) {\n                return { valid: false };\n            }\n            newArray.push(sharedValue.data);\n        }\n        return { valid: true, data: newArray };\n    }\n    else if (aType === parseUtil_1.ZodParsedType.date &&\n        bType === parseUtil_1.ZodParsedType.date &&\n        +a === +b) {\n        return { valid: true, data: a };\n    }\n    else {\n        return { valid: false };\n    }\n}\nclass ZodIntersection extends ZodType {\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        const handleParsed = (parsedLeft, parsedRight) => {\n            if ((0, parseUtil_1.isAborted)(parsedLeft) || (0, parseUtil_1.isAborted)(parsedRight)) {\n                return parseUtil_1.INVALID;\n            }\n            const merged = mergeValues(parsedLeft.value, parsedRight.value);\n            if (!merged.valid) {\n                (0, parseUtil_1.addIssueToContext)(ctx, {\n                    code: ZodError_1.ZodIssueCode.invalid_intersection_types,\n                });\n                return parseUtil_1.INVALID;\n            }\n            if ((0, parseUtil_1.isDirty)(parsedLeft) || (0, parseUtil_1.isDirty)(parsedRight)) {\n                status.dirty();\n            }\n            return { status: status.value, value: merged.data };\n        };\n        if (ctx.common.async) {\n            return Promise.all([\n                this._def.left._parseAsync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                }),\n                this._def.right._parseAsync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                }),\n            ]).then(([left, right]) => handleParsed(left, right));\n        }\n        else {\n            return handleParsed(this._def.left._parseSync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            }), this._def.right._parseSync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            }));\n        }\n    }\n}\nexports.ZodIntersection = ZodIntersection;\nZodIntersection.create = (left, right, params) => {\n    return new ZodIntersection({\n        left: left,\n        right: right,\n        typeName: ZodFirstPartyTypeKind.ZodIntersection,\n        ...processCreateParams(params),\n    });\n};\nclass ZodTuple extends ZodType {\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== parseUtil_1.ZodParsedType.array) {\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: parseUtil_1.ZodParsedType.array,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        if (ctx.data.length < this._def.items.length) {\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.too_small,\n                minimum: this._def.items.length,\n                inclusive: true,\n                type: "array",\n            });\n            return parseUtil_1.INVALID;\n        }\n        const rest = this._def.rest;\n        if (!rest && ctx.data.length > this._def.items.length) {\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.too_big,\n                maximum: this._def.items.length,\n                inclusive: true,\n                type: "array",\n            });\n            status.dirty();\n        }\n        const items = ctx.data\n            .map((item, itemIndex) => {\n            const schema = this._def.items[itemIndex] || this._def.rest;\n            if (!schema)\n                return null;\n            return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n        })\n            .filter((x) => !!x); // filter nulls\n        if (ctx.common.async) {\n            return Promise.all(items).then((results) => {\n                return parseUtil_1.ParseStatus.mergeArray(status, results);\n            });\n        }\n        else {\n            return parseUtil_1.ParseStatus.mergeArray(status, items);\n        }\n    }\n    get items() {\n        return this._def.items;\n    }\n    rest(rest) {\n        return new ZodTuple({\n            ...this._def,\n            rest,\n        });\n    }\n}\nexports.ZodTuple = ZodTuple;\nZodTuple.create = (schemas, params) => {\n    return new ZodTuple({\n        items: schemas,\n        typeName: ZodFirstPartyTypeKind.ZodTuple,\n        rest: null,\n        ...processCreateParams(params),\n    });\n};\nclass ZodRecord extends ZodType {\n    get keySchema() {\n        return this._def.keyType;\n    }\n    get valueSchema() {\n        return this._def.valueType;\n    }\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== parseUtil_1.ZodParsedType.object) {\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: parseUtil_1.ZodParsedType.object,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        const pairs = [];\n        const keyType = this._def.keyType;\n        const valueType = this._def.valueType;\n        for (const key in ctx.data) {\n            pairs.push({\n                key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n                value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n            });\n        }\n        if (ctx.common.async) {\n            return parseUtil_1.ParseStatus.mergeObjectAsync(status, pairs);\n        }\n        else {\n            return parseUtil_1.ParseStatus.mergeObjectSync(status, pairs);\n        }\n    }\n    get element() {\n        return this._def.valueType;\n    }\n    static create(first, second, third) {\n        if (second instanceof ZodType) {\n            return new ZodRecord({\n                keyType: first,\n                valueType: second,\n                typeName: ZodFirstPartyTypeKind.ZodRecord,\n                ...processCreateParams(third),\n            });\n        }\n        return new ZodRecord({\n            keyType: ZodString.create(),\n            valueType: first,\n            typeName: ZodFirstPartyTypeKind.ZodRecord,\n            ...processCreateParams(second),\n        });\n    }\n}\nexports.ZodRecord = ZodRecord;\nclass ZodMap extends ZodType {\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== parseUtil_1.ZodParsedType.map) {\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: parseUtil_1.ZodParsedType.map,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        const keyType = this._def.keyType;\n        const valueType = this._def.valueType;\n        const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n            return {\n                key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, "key"])),\n                value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, "value"])),\n            };\n        });\n        if (ctx.common.async) {\n            const finalMap = new Map();\n            return Promise.resolve().then(async () => {\n                for (const pair of pairs) {\n                    const key = await pair.key;\n                    const value = await pair.value;\n                    if (key.status === "aborted" || value.status === "aborted") {\n                        return parseUtil_1.INVALID;\n                    }\n                    if (key.status === "dirty" || value.status === "dirty") {\n                        status.dirty();\n                    }\n                    finalMap.set(key.value, value.value);\n                }\n                return { status: status.value, value: finalMap };\n            });\n        }\n        else {\n            const finalMap = new Map();\n            for (const pair of pairs) {\n                const key = pair.key;\n                const value = pair.value;\n                if (key.status === "aborted" || value.status === "aborted") {\n                    return parseUtil_1.INVALID;\n                }\n                if (key.status === "dirty" || value.status === "dirty") {\n                    status.dirty();\n                }\n                finalMap.set(key.value, value.value);\n            }\n            return { status: status.value, value: finalMap };\n        }\n    }\n}\nexports.ZodMap = ZodMap;\nZodMap.create = (keyType, valueType, params) => {\n    return new ZodMap({\n        valueType,\n        keyType,\n        typeName: ZodFirstPartyTypeKind.ZodMap,\n        ...processCreateParams(params),\n    });\n};\nclass ZodSet extends ZodType {\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== parseUtil_1.ZodParsedType.set) {\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: parseUtil_1.ZodParsedType.set,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        const def = this._def;\n        if (def.minSize !== null) {\n            if (ctx.data.size < def.minSize.value) {\n                (0, parseUtil_1.addIssueToContext)(ctx, {\n                    code: ZodError_1.ZodIssueCode.too_small,\n                    minimum: def.minSize.value,\n                    type: "set",\n                    inclusive: true,\n                    message: def.minSize.message,\n                });\n                status.dirty();\n            }\n        }\n        if (def.maxSize !== null) {\n            if (ctx.data.size > def.maxSize.value) {\n                (0, parseUtil_1.addIssueToContext)(ctx, {\n                    code: ZodError_1.ZodIssueCode.too_big,\n                    maximum: def.maxSize.value,\n                    type: "set",\n                    inclusive: true,\n                    message: def.maxSize.message,\n                });\n                status.dirty();\n            }\n        }\n        const valueType = this._def.valueType;\n        function finalizeSet(elements) {\n            const parsedSet = new Set();\n            for (const element of elements) {\n                if (element.status === "aborted")\n                    return parseUtil_1.INVALID;\n                if (element.status === "dirty")\n                    status.dirty();\n                parsedSet.add(element.value);\n            }\n            return { status: status.value, value: parsedSet };\n        }\n        const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n        if (ctx.common.async) {\n            return Promise.all(elements).then((elements) => finalizeSet(elements));\n        }\n        else {\n            return finalizeSet(elements);\n        }\n    }\n    min(minSize, message) {\n        return new ZodSet({\n            ...this._def,\n            minSize: { value: minSize, message: errorUtil_1.errorUtil.toString(message) },\n        });\n    }\n    max(maxSize, message) {\n        return new ZodSet({\n            ...this._def,\n            maxSize: { value: maxSize, message: errorUtil_1.errorUtil.toString(message) },\n        });\n    }\n    size(size, message) {\n        return this.min(size, message).max(size, message);\n    }\n    nonempty(message) {\n        return this.min(1, message);\n    }\n}\nexports.ZodSet = ZodSet;\nZodSet.create = (valueType, params) => {\n    return new ZodSet({\n        valueType,\n        minSize: null,\n        maxSize: null,\n        typeName: ZodFirstPartyTypeKind.ZodSet,\n        ...processCreateParams(params),\n    });\n};\nclass ZodFunction extends ZodType {\n    constructor() {\n        super(...arguments);\n        this.validate = this.implement;\n    }\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== parseUtil_1.ZodParsedType.function) {\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: parseUtil_1.ZodParsedType.function,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        function makeArgsIssue(args, error) {\n            return (0, parseUtil_1.makeIssue)({\n                data: args,\n                path: ctx.path,\n                errorMaps: [\n                    ctx.common.contextualErrorMap,\n                    ctx.schemaErrorMap,\n                    ZodError_1.overrideErrorMap,\n                    ZodError_1.defaultErrorMap,\n                ].filter((x) => !!x),\n                issueData: {\n                    code: ZodError_1.ZodIssueCode.invalid_arguments,\n                    argumentsError: error,\n                },\n            });\n        }\n        function makeReturnsIssue(returns, error) {\n            return (0, parseUtil_1.makeIssue)({\n                data: returns,\n                path: ctx.path,\n                errorMaps: [\n                    ctx.common.contextualErrorMap,\n                    ctx.schemaErrorMap,\n                    ZodError_1.overrideErrorMap,\n                    ZodError_1.defaultErrorMap,\n                ].filter((x) => !!x),\n                issueData: {\n                    code: ZodError_1.ZodIssueCode.invalid_return_type,\n                    returnTypeError: error,\n                },\n            });\n        }\n        const params = { errorMap: ctx.common.contextualErrorMap };\n        const fn = ctx.data;\n        if (this._def.returns instanceof ZodPromise) {\n            return (0, parseUtil_1.OK)(async (...args) => {\n                const error = new ZodError_1.ZodError([]);\n                const parsedArgs = await this._def.args\n                    .parseAsync(args, params)\n                    .catch((e) => {\n                    error.addIssue(makeArgsIssue(args, e));\n                    throw error;\n                });\n                const result = await fn(...parsedArgs);\n                const parsedReturns = await this._def.returns._def.type\n                    .parseAsync(result, params)\n                    .catch((e) => {\n                    error.addIssue(makeReturnsIssue(result, e));\n                    throw error;\n                });\n                return parsedReturns;\n            });\n        }\n        else {\n            return (0, parseUtil_1.OK)((...args) => {\n                const parsedArgs = this._def.args.safeParse(args, params);\n                if (!parsedArgs.success) {\n                    throw new ZodError_1.ZodError([makeArgsIssue(args, parsedArgs.error)]);\n                }\n                const result = fn(...parsedArgs.data);\n                const parsedReturns = this._def.returns.safeParse(result, params);\n                if (!parsedReturns.success) {\n                    throw new ZodError_1.ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n                }\n                return parsedReturns.data;\n            });\n        }\n    }\n    parameters() {\n        return this._def.args;\n    }\n    returnType() {\n        return this._def.returns;\n    }\n    args(...items) {\n        return new ZodFunction({\n            ...this._def,\n            args: ZodTuple.create(items).rest(ZodUnknown.create()),\n        });\n    }\n    returns(returnType) {\n        return new ZodFunction({\n            ...this._def,\n            returns: returnType,\n        });\n    }\n    implement(func) {\n        const validatedFunc = this.parse(func);\n        return validatedFunc;\n    }\n    strictImplement(func) {\n        const validatedFunc = this.parse(func);\n        return validatedFunc;\n    }\n}\nexports.ZodFunction = ZodFunction;\nZodFunction.create = (args, returns, params) => {\n    return new ZodFunction({\n        args: (args\n            ? args.rest(ZodUnknown.create())\n            : ZodTuple.create([]).rest(ZodUnknown.create())),\n        returns: returns || ZodUnknown.create(),\n        typeName: ZodFirstPartyTypeKind.ZodFunction,\n        ...processCreateParams(params),\n    });\n};\nclass ZodLazy extends ZodType {\n    get schema() {\n        return this._def.getter();\n    }\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        const lazySchema = this._def.getter();\n        return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n    }\n}\nexports.ZodLazy = ZodLazy;\nZodLazy.create = (getter, params) => {\n    return new ZodLazy({\n        getter: getter,\n        typeName: ZodFirstPartyTypeKind.ZodLazy,\n        ...processCreateParams(params),\n    });\n};\nclass ZodLiteral extends ZodType {\n    _parse(input) {\n        if (input.data !== this._def.value) {\n            const ctx = this._getOrReturnCtx(input);\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_literal,\n                expected: this._def.value,\n            });\n            return parseUtil_1.INVALID;\n        }\n        return { status: "valid", value: input.data };\n    }\n    get value() {\n        return this._def.value;\n    }\n}\nexports.ZodLiteral = ZodLiteral;\nZodLiteral.create = (value, params) => {\n    return new ZodLiteral({\n        value: value,\n        typeName: ZodFirstPartyTypeKind.ZodLiteral,\n        ...processCreateParams(params),\n    });\n};\nfunction createZodEnum(values) {\n    return new ZodEnum({\n        values: values,\n        typeName: ZodFirstPartyTypeKind.ZodEnum,\n    });\n}\nclass ZodEnum extends ZodType {\n    _parse(input) {\n        if (this._def.values.indexOf(input.data) === -1) {\n            const ctx = this._getOrReturnCtx(input);\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_enum_value,\n                options: this._def.values,\n            });\n            return parseUtil_1.INVALID;\n        }\n        return (0, parseUtil_1.OK)(input.data);\n    }\n    get options() {\n        return this._def.values;\n    }\n    get enum() {\n        const enumValues = {};\n        for (const val of this._def.values) {\n            enumValues[val] = val;\n        }\n        return enumValues;\n    }\n    get Values() {\n        const enumValues = {};\n        for (const val of this._def.values) {\n            enumValues[val] = val;\n        }\n        return enumValues;\n    }\n    get Enum() {\n        const enumValues = {};\n        for (const val of this._def.values) {\n            enumValues[val] = val;\n        }\n        return enumValues;\n    }\n}\nexports.ZodEnum = ZodEnum;\nZodEnum.create = createZodEnum;\nclass ZodNativeEnum extends ZodType {\n    _parse(input) {\n        const nativeEnumValues = util_1.util.getValidEnumValues(this._def.values);\n        if (nativeEnumValues.indexOf(input.data) === -1) {\n            const ctx = this._getOrReturnCtx(input);\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_enum_value,\n                options: util_1.util.objectValues(nativeEnumValues),\n            });\n            return parseUtil_1.INVALID;\n        }\n        return (0, parseUtil_1.OK)(input.data);\n    }\n    get enum() {\n        return this._def.values;\n    }\n}\nexports.ZodNativeEnum = ZodNativeEnum;\nZodNativeEnum.create = (values, params) => {\n    return new ZodNativeEnum({\n        values: values,\n        typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n        ...processCreateParams(params),\n    });\n};\nclass ZodPromise extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== parseUtil_1.ZodParsedType.promise &&\n            ctx.common.async === false) {\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: parseUtil_1.ZodParsedType.promise,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        const promisified = ctx.parsedType === parseUtil_1.ZodParsedType.promise\n            ? ctx.data\n            : Promise.resolve(ctx.data);\n        return (0, parseUtil_1.OK)(promisified.then((data) => {\n            return this._def.type.parseAsync(data, {\n                path: ctx.path,\n                errorMap: ctx.common.contextualErrorMap,\n            });\n        }));\n    }\n}\nexports.ZodPromise = ZodPromise;\nZodPromise.create = (schema, params) => {\n    return new ZodPromise({\n        type: schema,\n        typeName: ZodFirstPartyTypeKind.ZodPromise,\n        ...processCreateParams(params),\n    });\n};\nclass ZodEffects extends ZodType {\n    innerType() {\n        return this._def.schema;\n    }\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        const effect = this._def.effect || null;\n        if (effect.type === "preprocess") {\n            const processed = effect.transform(ctx.data);\n            if (ctx.common.async) {\n                return Promise.resolve(processed).then((processed) => {\n                    return this._def.schema._parseAsync({\n                        data: processed,\n                        path: ctx.path,\n                        parent: ctx,\n                    });\n                });\n            }\n            else {\n                return this._def.schema._parseSync({\n                    data: processed,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n            }\n        }\n        if (effect.type === "refinement") {\n            const checkCtx = {\n                addIssue: (arg) => {\n                    (0, parseUtil_1.addIssueToContext)(ctx, arg);\n                    if (arg.fatal) {\n                        status.abort();\n                    }\n                    else {\n                        status.dirty();\n                    }\n                },\n                get path() {\n                    return ctx.path;\n                },\n            };\n            checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n            const executeRefinement = (acc\n            // effect: RefinementEffect<any>\n            ) => {\n                const result = effect.refinement(acc, checkCtx);\n                if (ctx.common.async) {\n                    return Promise.resolve(result);\n                }\n                if (result instanceof Promise) {\n                    throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");\n                }\n                return acc;\n            };\n            if (ctx.common.async === false) {\n                const inner = this._def.schema._parseSync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n                if (inner.status === "aborted")\n                    return parseUtil_1.INVALID;\n                if (inner.status === "dirty")\n                    status.dirty();\n                // return value is ignored\n                executeRefinement(inner.value);\n                return { status: status.value, value: inner.value };\n            }\n            else {\n                return this._def.schema\n                    ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n                    .then((inner) => {\n                    if (inner.status === "aborted")\n                        return parseUtil_1.INVALID;\n                    if (inner.status === "dirty")\n                        status.dirty();\n                    return executeRefinement(inner.value).then(() => {\n                        return { status: status.value, value: inner.value };\n                    });\n                });\n            }\n        }\n        if (effect.type === "transform") {\n            if (ctx.common.async === false) {\n                const base = this._def.schema._parseSync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n                // if (base.status === "aborted") return INVALID;\n                // if (base.status === "dirty") {\n                //   return { status: "dirty", value: base.value };\n                // }\n                if (!(0, parseUtil_1.isValid)(base))\n                    return base;\n                const result = effect.transform(base.value);\n                if (result instanceof Promise) {\n                    throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n                }\n                return (0, parseUtil_1.OK)(result);\n            }\n            else {\n                return this._def.schema\n                    ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n                    .then((base) => {\n                    if (!(0, parseUtil_1.isValid)(base))\n                        return base;\n                    // if (base.status === "aborted") return INVALID;\n                    // if (base.status === "dirty") {\n                    //   return { status: "dirty", value: base.value };\n                    // }\n                    return Promise.resolve(effect.transform(base.value)).then(parseUtil_1.OK);\n                });\n            }\n        }\n        util_1.util.assertNever(effect);\n    }\n}\nexports.ZodEffects = ZodEffects;\nexports.ZodTransformer = ZodEffects;\nZodEffects.create = (schema, effect, params) => {\n    return new ZodEffects({\n        schema,\n        typeName: ZodFirstPartyTypeKind.ZodEffects,\n        effect,\n        ...processCreateParams(params),\n    });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n    return new ZodEffects({\n        schema,\n        effect: { type: "preprocess", transform: preprocess },\n        typeName: ZodFirstPartyTypeKind.ZodEffects,\n        ...processCreateParams(params),\n    });\n};\nclass ZodOptional extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType === parseUtil_1.ZodParsedType.undefined) {\n            return (0, parseUtil_1.OK)(undefined);\n        }\n        return this._def.innerType._parse(input);\n    }\n    unwrap() {\n        return this._def.innerType;\n    }\n}\nexports.ZodOptional = ZodOptional;\nZodOptional.create = (type, params) => {\n    return new ZodOptional({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodOptional,\n        ...processCreateParams(params),\n    });\n};\nclass ZodNullable extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType === parseUtil_1.ZodParsedType.null) {\n            return (0, parseUtil_1.OK)(null);\n        }\n        return this._def.innerType._parse(input);\n    }\n    unwrap() {\n        return this._def.innerType;\n    }\n}\nexports.ZodNullable = ZodNullable;\nZodNullable.create = (type, params) => {\n    return new ZodNullable({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodNullable,\n        ...processCreateParams(params),\n    });\n};\nclass ZodDefault extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        let data = ctx.data;\n        if (ctx.parsedType === parseUtil_1.ZodParsedType.undefined) {\n            data = this._def.defaultValue();\n        }\n        return this._def.innerType._parse({\n            data,\n            path: ctx.path,\n            parent: ctx,\n        });\n    }\n    removeDefault() {\n        return this._def.innerType;\n    }\n}\nexports.ZodDefault = ZodDefault;\nZodDefault.create = (type, params) => {\n    return new ZodOptional({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodOptional,\n        ...processCreateParams(params),\n    });\n};\nclass ZodNaN extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== parseUtil_1.ZodParsedType.nan) {\n            const ctx = this._getOrReturnCtx(input);\n            (0, parseUtil_1.addIssueToContext)(ctx, {\n                code: ZodError_1.ZodIssueCode.invalid_type,\n                expected: parseUtil_1.ZodParsedType.nan,\n                received: ctx.parsedType,\n            });\n            return parseUtil_1.INVALID;\n        }\n        return { status: "valid", value: input.data };\n    }\n}\nexports.ZodNaN = ZodNaN;\nZodNaN.create = (params) => {\n    return new ZodNaN({\n        typeName: ZodFirstPartyTypeKind.ZodNaN,\n        ...processCreateParams(params),\n    });\n};\nconst custom = (check, params) => {\n    if (check)\n        return ZodAny.create().refine(check, params);\n    return ZodAny.create();\n};\nexports.custom = custom;\nexports.late = {\n    object: ZodObject.lazycreate,\n};\nvar ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n    ZodFirstPartyTypeKind["ZodString"] = "ZodString";\n    ZodFirstPartyTypeKind["ZodNumber"] = "ZodNumber";\n    ZodFirstPartyTypeKind["ZodNaN"] = "ZodNaN";\n    ZodFirstPartyTypeKind["ZodBigInt"] = "ZodBigInt";\n    ZodFirstPartyTypeKind["ZodBoolean"] = "ZodBoolean";\n    ZodFirstPartyTypeKind["ZodDate"] = "ZodDate";\n    ZodFirstPartyTypeKind["ZodUndefined"] = "ZodUndefined";\n    ZodFirstPartyTypeKind["ZodNull"] = "ZodNull";\n    ZodFirstPartyTypeKind["ZodAny"] = "ZodAny";\n    ZodFirstPartyTypeKind["ZodUnknown"] = "ZodUnknown";\n    ZodFirstPartyTypeKind["ZodNever"] = "ZodNever";\n    ZodFirstPartyTypeKind["ZodVoid"] = "ZodVoid";\n    ZodFirstPartyTypeKind["ZodArray"] = "ZodArray";\n    ZodFirstPartyTypeKind["ZodObject"] = "ZodObject";\n    ZodFirstPartyTypeKind["ZodUnion"] = "ZodUnion";\n    ZodFirstPartyTypeKind["ZodDiscriminatedUnion"] = "ZodDiscriminatedUnion";\n    ZodFirstPartyTypeKind["ZodIntersection"] = "ZodIntersection";\n    ZodFirstPartyTypeKind["ZodTuple"] = "ZodTuple";\n    ZodFirstPartyTypeKind["ZodRecord"] = "ZodRecord";\n    ZodFirstPartyTypeKind["ZodMap"] = "ZodMap";\n    ZodFirstPartyTypeKind["ZodSet"] = "ZodSet";\n    ZodFirstPartyTypeKind["ZodFunction"] = "ZodFunction";\n    ZodFirstPartyTypeKind["ZodLazy"] = "ZodLazy";\n    ZodFirstPartyTypeKind["ZodLiteral"] = "ZodLiteral";\n    ZodFirstPartyTypeKind["ZodEnum"] = "ZodEnum";\n    ZodFirstPartyTypeKind["ZodEffects"] = "ZodEffects";\n    ZodFirstPartyTypeKind["ZodNativeEnum"] = "ZodNativeEnum";\n    ZodFirstPartyTypeKind["ZodOptional"] = "ZodOptional";\n    ZodFirstPartyTypeKind["ZodNullable"] = "ZodNullable";\n    ZodFirstPartyTypeKind["ZodDefault"] = "ZodDefault";\n    ZodFirstPartyTypeKind["ZodPromise"] = "ZodPromise";\n})(ZodFirstPartyTypeKind = exports.ZodFirstPartyTypeKind || (exports.ZodFirstPartyTypeKind = {}));\nconst instanceOfType = (cls, params = {\n    message: `Input not instance of ${cls.name}`,\n}) => (0, exports.custom)((data) => data instanceof cls, params);\nexports["instanceof"] = instanceOfType;\nconst stringType = ZodString.create;\nexports.string = stringType;\nconst numberType = ZodNumber.create;\nexports.number = numberType;\nconst nanType = ZodNaN.create;\nexports.nan = nanType;\nconst bigIntType = ZodBigInt.create;\nexports.bigint = bigIntType;\nconst booleanType = ZodBoolean.create;\nexports.boolean = booleanType;\nconst dateType = ZodDate.create;\nexports.date = dateType;\nconst undefinedType = ZodUndefined.create;\nexports.undefined = undefinedType;\nconst nullType = ZodNull.create;\nexports["null"] = nullType;\nconst anyType = ZodAny.create;\nexports.any = anyType;\nconst unknownType = ZodUnknown.create;\nexports.unknown = unknownType;\nconst neverType = ZodNever.create;\nexports.never = neverType;\nconst voidType = ZodVoid.create;\nexports["void"] = voidType;\nconst arrayType = ZodArray.create;\nexports.array = arrayType;\nconst objectType = ZodObject.create;\nexports.object = objectType;\nconst strictObjectType = ZodObject.strictCreate;\nexports.strictObject = strictObjectType;\nconst unionType = ZodUnion.create;\nexports.union = unionType;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nexports.discriminatedUnion = discriminatedUnionType;\nconst intersectionType = ZodIntersection.create;\nexports.intersection = intersectionType;\nconst tupleType = ZodTuple.create;\nexports.tuple = tupleType;\nconst recordType = ZodRecord.create;\nexports.record = recordType;\nconst mapType = ZodMap.create;\nexports.map = mapType;\nconst setType = ZodSet.create;\nexports.set = setType;\nconst functionType = ZodFunction.create;\nexports["function"] = functionType;\nconst lazyType = ZodLazy.create;\nexports.lazy = lazyType;\nconst literalType = ZodLiteral.create;\nexports.literal = literalType;\nconst enumType = ZodEnum.create;\nexports["enum"] = enumType;\nconst nativeEnumType = ZodNativeEnum.create;\nexports.nativeEnum = nativeEnumType;\nconst promiseType = ZodPromise.create;\nexports.promise = promiseType;\nconst effectsType = ZodEffects.create;\nexports.effect = effectsType;\nexports.transformer = effectsType;\nconst optionalType = ZodOptional.create;\nexports.optional = optionalType;\nconst nullableType = ZodNullable.create;\nexports.nullable = nullableType;\nconst preprocessType = ZodEffects.createWithPreprocess;\nexports.preprocess = preprocessType;\nconst ostring = () => stringType().optional();\nexports.ostring = ostring;\nconst onumber = () => numberType().optional();\nexports.onumber = onumber;\nconst oboolean = () => booleanType().optional();\nexports.oboolean = oboolean;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/zod/lib/types.js?')},"./src/components/adminVault/index.js":
/*!********************************************!*\
  !*** ./src/components/adminVault/index.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'AdminVault';\r\nconst fs = __webpack_require__(/*! fs-extra */ \"./node_modules/fs-extra/lib/index.js\");\r\nconst cloneDeep = __webpack_require__(/*! lodash/cloneDeep */ \"./node_modules/lodash/cloneDeep.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\nconst CitizenFXProvider = __webpack_require__(/*! ./providers/CitizenFX */ \"./src/components/adminVault/providers/CitizenFX.js\");\r\n\r\n//Helpers\r\nconst migrateProviderIdentifiers = (providerName, providerData) => {\r\n    if (providerName === 'citizenfx') {\r\n        // data may be empty, or nameid may be invalid\r\n        try {\r\n            const res = /\\/user\\/(\\d{1,8})/.exec(providerData.data.nameid);\r\n            providerData.identifier = `fivem:${res[1]}`;\r\n        } catch (error) {\r\n            providerData.identifier = 'fivem:00000000';\r\n        }\r\n    } else if (providerName === 'discord') {\r\n        providerData.identifier = `discord:${providerData.id}`;\r\n    }\r\n};\r\n\r\n\r\nmodule.exports = class AdminVault {\r\n    constructor() {\r\n        this.adminsFile = `${GlobalData.dataPath}/admins.json`;\r\n        this.admins = null;\r\n        this.refreshRoutine = null;\r\n        this.lastAdminFile = '';\r\n\r\n        //Not alphabetical order, but that's fine\r\n        this.registeredPermissions = {\r\n            'all_permissions': 'All Permissions',\r\n            'manage.admins': 'Manage Admins', //will enable the \"set admin\" button in the player modal\r\n            'settings.view': 'Settings: View (no tokens)',\r\n            'settings.write': 'Settings: Change',\r\n            'console.view': 'Console: View',\r\n            'console.write': 'Console: Write',\r\n            'control.server': 'Start/Stop Server',\r\n            'commands.resources': 'Start/Stop Resources',\r\n            'server.cfg.editor': 'Read/Write server.cfg',\r\n            'txadmin.log.view': 'View txAdmin Log',\r\n\r\n            'menu.vehicle': 'Spawn / Fix Vehicles',\r\n            'menu.clear_area': 'Reset world area',\r\n            'players.message': 'Announcement / DM', //enable/disable the dm button on modal as well\r\n            'players.whitelist': 'Whitelist',\r\n            'players.warn': 'Warn',\r\n            'players.kick': 'Kick',\r\n            'players.ban': 'Ban',\r\n            'players.freeze': 'Freeze Players',\r\n            'players.heal': 'Heal', //self, everyone, and the \"heal\" button in player modal\r\n            'players.playermode': 'NoClip / God Mode', //self playermode, and also the player spectate option\r\n            'players.spectate': 'Spectate', //self playermode, and also the player spectate option\r\n            'players.teleport': 'Teleport', //self teleport, and the bring/go to on player modal\r\n            'players.troll': 'Troll Actions', //all the troll options in the player modal\r\n        };\r\n        this.hardConfigs = {\r\n            refreshInterval: 15e3,\r\n        };\r\n\r\n\r\n        //Load providers\r\n        try {\r\n            this.providers = {\r\n                discord: false,\r\n                citizenfx: new CitizenFXProvider(null),\r\n            };\r\n        } catch (error) {\r\n            throw new Error(`Failed to load providers with error: ${error.message}`);\r\n        }\r\n\r\n        //Check if admins file exists\r\n        let adminFileExists;\r\n        try {\r\n            adminFileExists = fs.existsSync(this.adminsFile);\r\n        } catch (error) {\r\n            throw new Error(`Failed to check presence of admin file with error: ${error.message}`);\r\n        }\r\n\r\n        //Printing PIN or starting loop\r\n        if (!adminFileExists) {\r\n            if (!GlobalData.defaultMasterAccount) {\r\n                this.addMasterPin = (Math.random() * 10000).toFixed().padStart(4, '0');\r\n                this.admins = false;\r\n            } else {\r\n                log(`Setting up master account '${GlobalData.defaultMasterAccount.name}'. The password is the same as in zap-hosting.com.`);\r\n                this.createAdminsFile(GlobalData.defaultMasterAccount.name, false, false, GlobalData.defaultMasterAccount.password_hash, false);\r\n            }\r\n        } else {\r\n            this.refreshAdmins(true);\r\n            this.setupRefreshRoutine();\r\n        }\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * sets the admins file refresh routine\r\n     */\r\n    setupRefreshRoutine() {\r\n        this.refreshRoutine = setInterval(() => {\r\n            this.refreshAdmins();\r\n        }, this.hardConfigs.refreshInterval);\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Creates a admins.json file based on the first account\r\n     * @param {string} username\r\n     * @param {string} identifier\r\n     * @param {object} provider_data\r\n     * @param {string} password backup password\r\n     * @param {boolean} isPlainText\r\n     * @returns {(boolean)} true or throws an error\r\n     */\r\n    createAdminsFile(username, identifier, provider_data, password, isPlainText) {\r\n        //Sanity check\r\n        if (this.admins !== false && this.admins !== null) throw new Error('Admins file already exists.');\r\n        if (typeof username !== 'string' || username.length < 3) throw new Error('Invalid username parameter.');\r\n        if (typeof password !== 'string' || password.length < 6) throw new Error('Invalid password parameter.');\r\n\r\n        //Creating admin array\r\n        let providers = {};\r\n        if (identifier && provider_data) {\r\n            providers.citizenfx = {\r\n                id: username,\r\n                identifier,\r\n                data: provider_data,\r\n            };\r\n        }\r\n        this.admins = [{\r\n            name: username,\r\n            master: true,\r\n            password_hash: (isPlainText) ? GetPasswordHash(password) : password,\r\n            providers,\r\n            permissions: [],\r\n        }];\r\n\r\n        //Saving admin file\r\n        try {\r\n            const json = JSON.stringify(this.admins, null, 2);\r\n            fs.writeFileSync(this.adminsFile, json, {encoding: 'utf8', flag: 'wx'});\r\n            this.setupRefreshRoutine();\r\n            return true;\r\n        } catch (error) {\r\n            let message = `Failed to create '${this.adminsFile}' with error: ${error.message}`;\r\n            if (GlobalData.verbose) logError(message);\r\n            throw new Error(message);\r\n        }\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Returns a list of admins and permissions\r\n     */\r\n    getAdminsList() {\r\n        if (this.admins == false) return [];\r\n        return this.admins.map((user) => {\r\n            let out = {\r\n                name: user.name,\r\n                master: user.master,\r\n                providers: Object.keys(user.providers),\r\n                permissions: user.permissions,\r\n            };\r\n            return out;\r\n        });\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Returns all data from an admin by provider user id (ex discord id), or false\r\n     * @param {string} uid\r\n     */\r\n    getAdminByProviderUID(uid) {\r\n        if (this.admins == false) return false;\r\n        let id = uid.trim().toLowerCase();\r\n        let admin = this.admins.find((user) => {\r\n            return Object.keys(user.providers).find((provider) => {\r\n                return (id === user.providers[provider].id.toLowerCase());\r\n            });\r\n        });\r\n        return (admin) ? cloneDeep(admin) : false;\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Returns all data from an admin by their name, or false\r\n     * @param {string} uname\r\n     */\r\n    getAdminByName(uname) {\r\n        if (!this.admins) return false;\r\n        const username = uname.trim().toLowerCase();\r\n        if (!username.length) return false;\r\n        const admin = this.admins.find((user) => {\r\n            return (username === user.name.toLowerCase());\r\n        });\r\n        return (admin) ? cloneDeep(admin) : false;\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Returns all data from an admin by game identifier, or false\r\n     * @param {string[]} identifiers\r\n     */\r\n    getAdminByIdentifiers(identifiers) {\r\n        if (!this.admins) return false;\r\n        identifiers = identifiers\r\n            .map((i) => i.trim().toLowerCase())\r\n            .filter((i) => i.length);\r\n        if (!identifiers.length) return false;\r\n        const admin = this.admins.find((user) =>\r\n            identifiers.find((identifier) =>\r\n                Object.keys(user.providers).find((provider) =>\r\n                    (identifier === user.providers[provider].identifier.toLowerCase()))));\r\n        return (admin) ? cloneDeep(admin) : false;\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Returns a list with all registered permissions\r\n     */\r\n    getPermissionsList() {\r\n        return cloneDeep(this.registeredPermissions);\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Add a new admin to the admins file\r\n     * NOTE: I'm fully aware this coud be optimized. Leaving this way to improve readability and error verbosity\r\n     * @param {string} name\r\n     * @param {object} citizenfxData or false\r\n     * @param {object} discordData or false\r\n     * @param {string} password\r\n     * @param {array} permissions\r\n     */\r\n    async addAdmin(name, citizenfxData, discordData, password, permissions) {\r\n        if (this.admins == false) throw new Error('Admins not set');\r\n\r\n        //Check if username is already taken\r\n        if (this.getAdminByName(name)) throw new Error('Username already taken');\r\n\r\n        //Preparing admin\r\n        const admin = {\r\n            name: name,\r\n            master: false,\r\n            password_hash: GetPasswordHash(password),\r\n            password_temporary: true,\r\n            providers: {},\r\n            permissions: permissions,\r\n        };\r\n\r\n        //Check if provider uid already taken and inserting into admin object\r\n        if (citizenfxData) {\r\n            const existingCitizenFX = this.getAdminByProviderUID(citizenfxData.id);\r\n            if (existingCitizenFX) throw new Error('CitizenFX ID already taken');\r\n            admin.providers.citizenfx = {\r\n                id: citizenfxData.id,\r\n                identifier: citizenfxData.identifier,\r\n                data: {},\r\n            };\r\n        }\r\n        if (discordData) {\r\n            const existingDiscord = this.getAdminByProviderUID(discordData.id);\r\n            if (existingDiscord) throw new Error('Discord ID already taken');\r\n            admin.providers.discord = {\r\n                id: discordData.id,\r\n                identifier: discordData.identifier,\r\n                data: {},\r\n            };\r\n        }\r\n\r\n        //Saving admin file\r\n        this.admins.push(admin);\r\n        this.refreshOnlineAdmins().catch((e) => {});\r\n        try {\r\n            await fs.writeFile(this.adminsFile, JSON.stringify(this.admins, null, 2), 'utf8');\r\n            return true;\r\n        } catch (error) {\r\n            if (GlobalData.verbose) logError(error.message);\r\n            throw new Error(`Failed to save '${this.adminsFile}'`);\r\n        }\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Edit admin and save to the admins file\r\n     * @param {string} name\r\n     * @param {string} password\r\n     * @param {object} citizenfxData or false\r\n     * @param {object} discordData or false\r\n     * @param {array} permissions\r\n     */\r\n    async editAdmin(name, password, citizenfxData, discordData, permissions) {\r\n        if (this.admins == false) throw new Error('Admins not set');\r\n\r\n        //Find admin index\r\n        let username = name.toLowerCase();\r\n        let adminIndex = this.admins.findIndex((user) => {\r\n            return (username === user.name.toLowerCase());\r\n        });\r\n        if (adminIndex == -1) throw new Error('Admin not found');\r\n\r\n        //Editing admin\r\n        if (password !== null) {\r\n            this.admins[adminIndex].password_hash = GetPasswordHash(password);\r\n            delete this.admins[adminIndex].password_temporary;\r\n        }\r\n        if (typeof citizenfxData !== 'undefined') {\r\n            if (!citizenfxData) {\r\n                delete this.admins[adminIndex].providers.citizenfx;\r\n            } else {\r\n                this.admins[adminIndex].providers.citizenfx = {\r\n                    id: citizenfxData.id,\r\n                    identifier: citizenfxData.identifier,\r\n                    data: {},\r\n                };\r\n            }\r\n        }\r\n        if (typeof discordData !== 'undefined') {\r\n            if (!discordData) {\r\n                delete this.admins[adminIndex].providers.discord;\r\n            } else {\r\n                this.admins[adminIndex].providers.discord = {\r\n                    id: discordData.id,\r\n                    identifier: discordData.identifier,\r\n                    data: {},\r\n                };\r\n            }\r\n        }\r\n        if (typeof permissions !== 'undefined') this.admins[adminIndex].permissions = permissions;\r\n\r\n        //Saving admin file\r\n        this.refreshOnlineAdmins().catch((e) => {});\r\n        try {\r\n            await fs.writeFile(this.adminsFile, JSON.stringify(this.admins, null, 2), 'utf8');\r\n            return (password !== null) ? this.admins[adminIndex].password_hash : true;\r\n        } catch (error) {\r\n            if (GlobalData.verbose) logError(error.message);\r\n            throw new Error(`Failed to save '${this.adminsFile}'`);\r\n        }\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Refreshes admin's social login data\r\n     * @param {string} name\r\n     * @param {string} provider\r\n     * @param {string} identifier\r\n     * @param {object} providerData\r\n     */\r\n    async refreshAdminSocialData(name, provider, identifier, providerData) {\r\n        if (this.admins == false) throw new Error('Admins not set');\r\n\r\n        //Find admin index\r\n        const username = name.toLowerCase();\r\n        const adminIndex = this.admins.findIndex((user) => {\r\n            return (username === user.name.toLowerCase());\r\n        });\r\n        if (adminIndex == -1) throw new Error('Admin not found');\r\n\r\n        //Refresh admin data\r\n        if (!this.admins[adminIndex].providers[provider]) throw new Error('Provider not available for this admin');\r\n        this.admins[adminIndex].providers[provider].identifier = identifier;\r\n        this.admins[adminIndex].providers[provider].data = providerData;\r\n\r\n        //Saving admin file\r\n        this.refreshOnlineAdmins().catch((e) => {});\r\n        try {\r\n            await fs.writeFile(this.adminsFile, JSON.stringify(this.admins, null, 2), 'utf8');\r\n        } catch (error) {\r\n            if (GlobalData.verbose) logError(error.message);\r\n            throw new Error(`Failed to save '${this.adminsFile}'`);\r\n        }\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Delete admin and save to the admins file\r\n     * @param {string} name\r\n     */\r\n    async deleteAdmin(name) {\r\n        if (this.admins == false) throw new Error('Admins not set');\r\n\r\n        //Delete admin\r\n        let username = name.toLowerCase();\r\n        let found = false;\r\n        this.admins = this.admins.filter((user) => {\r\n            if (username !== user.name.toLowerCase()) {\r\n                return true;\r\n            } else {\r\n                found = true;\r\n                return false;\r\n            }\r\n        });\r\n        if (!found) throw new Error('Admin not found');\r\n\r\n        //Saving admin file\r\n        this.refreshOnlineAdmins().catch((e) => {});\r\n        try {\r\n            await fs.writeFile(this.adminsFile, JSON.stringify(this.admins, null, 2), 'utf8');\r\n            return true;\r\n        } catch (error) {\r\n            if (GlobalData.verbose) logError(error.message);\r\n            throw new Error(`Failed to save '${this.adminsFile}'`);\r\n        }\r\n    }\r\n\r\n    //================================================================\r\n    /**\r\n     * Refreshes the admins list\r\n     * NOTE: The verbosity here is driving me insane.\r\n     *       But still seems not to be enough for people that don't read the README.\r\n     */\r\n    async refreshAdmins(isFirstTime = false) {\r\n        let raw = null;\r\n        let jsonData = null;\r\n        let migrated = false;\r\n\r\n        const callError = (x) => {\r\n            logError(`Unable to load admins. (${x}, please read the documentation)`);\r\n            if (isFirstTime) process.exit();\r\n            this.admins = [];\r\n            return false;\r\n        };\r\n\r\n        try {\r\n            raw = await fs.readFile(this.adminsFile, 'utf8');\r\n            if (raw === this.lastAdminFile) {\r\n                if (GlobalData.verbose) log('Admin file didn\\'t change, skipping.');\r\n                return;\r\n            }\r\n            this.lastAdminFile = raw;\r\n        } catch (error) {\r\n            return callError('cannot read file');\r\n        }\r\n\r\n        try {\r\n            jsonData = JSON.parse(raw);\r\n        } catch (error) {\r\n            return callError('json parse error');\r\n        }\r\n\r\n        if (!Array.isArray(jsonData)) {\r\n            return callError('not an array');\r\n        }\r\n\r\n        const structureIntegrityTest = jsonData.some((x) => {\r\n            if (typeof x.name !== 'string' || x.name.length < 3) return true;\r\n            if (typeof x.master !== 'boolean') return true;\r\n            if (typeof x.password_hash !== 'string' || !x.password_hash.startsWith('$2')) return true;\r\n            if (typeof x.providers !== 'object') return true;\r\n            const providersTest = Object.keys(x.providers).some((y) => {\r\n                if (!Object.keys(this.providers).includes(y)) return true;\r\n                if (typeof x.providers[y].id !== 'string' || x.providers[y].id.length < 3) return true;\r\n                if (typeof x.providers[y].data !== 'object') return true;\r\n                if (typeof x.providers[y].identifier === 'string') {\r\n                    if (x.providers[y].identifier.length < 3) return true;\r\n                } else {\r\n                    migrateProviderIdentifiers(y, x.providers[y]);\r\n                    migrated = true;\r\n                }\r\n            });\r\n            if (providersTest) return true;\r\n            if (!Array.isArray(x.permissions)) return true;\r\n            return false;\r\n        });\r\n        if (structureIntegrityTest) {\r\n            return callError('invalid data in the admins file');\r\n        }\r\n\r\n        const masters = jsonData.filter((x) => { return x.master; });\r\n        if (masters.length !== 1) {\r\n            return callError('must have exactly 1 master account');\r\n        }\r\n\r\n        if (!jsonData.length) {\r\n            return callError('no entries');\r\n        }\r\n\r\n        this.admins = jsonData;\r\n        this.refreshOnlineAdmins().catch((e) => {});\r\n        if (migrated) {\r\n            try {\r\n                await fs.writeFile(this.adminsFile, JSON.stringify(this.admins, null, 2), 'utf8');\r\n                logOk('The admins.json file was migrated to a new version.');\r\n            } catch (error) {\r\n                logError(`Failed to migrate admins.json with error: ${error.message}`);\r\n            }\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Notify game server about admin changes\r\n     */\r\n    async refreshOnlineAdmins() {\r\n        if (globals.playerController === null) return;\r\n\r\n        try {\r\n            //Getting all admin identifiers\r\n            const adminIDs = this.admins.reduce((ids, adm) => {\r\n                const adminIDs = Object.keys(adm.providers).map((pName) => adm.providers[pName].identifier);\r\n                return ids.concat(adminIDs);\r\n            }, []);\r\n\r\n            //Finding online admins\r\n            const playerList = globals.playerController.getPlayerList();\r\n            const onlineIDs = playerList.filter((p) => {\r\n                return p.identifiers.some((i) => adminIDs.includes(i));\r\n            }).map((p) => p.id);\r\n\r\n            return globals.fxRunner.sendEvent('adminsUpdated', onlineIDs);\r\n        } catch (error) {\r\n            if (GlobalData.verbose) {\r\n                logError('Failed to refreshOnlineAdmins() with error:');\r\n                dir(error);\r\n            }\r\n        }\r\n    }\r\n}; //Fim AdminVault()\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/adminVault/index.js?")},"./src/components/adminVault/providers/CitizenFX.js":
/*!**********************************************************!*\
  !*** ./src/components/adminVault/providers/CitizenFX.js ***!
  \**********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'AdminVault:CitizenFXProvider';\r\nconst crypto  = __webpack_require__(/*! crypto */ \"crypto\");\r\nconst { Issuer, custom } = __webpack_require__(/*! openid-client */ \"./node_modules/openid-client/lib/index.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n\r\nmodule.exports = class CitizenFXProvider {\r\n    constructor(config) {\r\n        this.config = config;\r\n        this.client = null;\r\n        this.ready = false;\r\n\r\n        this.setClient();\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Do OpenID Connect auto-discover on CitizenFX endpoint\r\n     */\r\n    async setClient() {\r\n        try {\r\n            //NOTE: using static config due to performance concerns\r\n            // const fivemIssuer = await Issuer.discover('https://idms.fivem.net/.well-known/openid-configuration');\r\n            const fivemIssuer = new Issuer({'issuer':'https://idms.fivem.net', 'jwks_uri':'https://idms.fivem.net/.well-known/openid-configuration/jwks', 'authorization_endpoint':'https://idms.fivem.net/connect/authorize', 'token_endpoint':'https://idms.fivem.net/connect/token', 'userinfo_endpoint':'https://idms.fivem.net/connect/userinfo', 'end_session_endpoint':'https://idms.fivem.net/connect/endsession', 'check_session_iframe':'https://idms.fivem.net/connect/checksession', 'revocation_endpoint':'https://idms.fivem.net/connect/revocation', 'introspection_endpoint':'https://idms.fivem.net/connect/introspect', 'device_authorization_endpoint':'https://idms.fivem.net/connect/deviceauthorization', 'frontchannel_logout_supported':true, 'frontchannel_logout_session_supported':true, 'backchannel_logout_supported':true, 'backchannel_logout_session_supported':true, 'scopes_supported':['openid', 'email', 'identify', 'offline_access'], 'claims_supported':['sub', 'email', 'email_verified', 'nameid', 'name', 'picture', 'profile'], 'grant_types_supported':['authorization_code', 'client_credentials', 'refresh_token', 'implicit', 'urn:ietf:params:oauth:grant-type:device_code'], 'response_types_supported':['code', 'token', 'id_token', 'id_token token', 'code id_token', 'code token', 'code id_token token'], 'response_modes_supported':['form_post', 'query', 'fragment'], 'token_endpoint_auth_methods_supported':['client_secret_basic', 'client_secret_post'], 'subject_types_supported':['public'], 'id_token_signing_alg_values_supported':['RS256'], 'code_challenge_methods_supported':['plain', 'S256'], 'request_parameter_supported':true});\r\n\r\n            this.client = new fivemIssuer.Client({\r\n                client_id: 'txadmin_test',\r\n                client_secret: 'txadmin_test',\r\n                response_types: ['openid'],\r\n            });\r\n            this.client[custom.clock_tolerance] = 2 * 60 * 60; //Two hours due to the DST change. Reduce to 300s.\r\n            custom.setHttpOptionsDefaults({\r\n                timeout: 4500,\r\n            });\r\n            if (GlobalData.verbose) log('CitizenFX Provider configured.');\r\n            this.ready = true;\r\n        } catch (error) {\r\n            logError(`Failed to create client with error: ${error.message}`);\r\n        }\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Returns the Provider Auth URL\r\n     * @param {string} state\r\n     * @param {string} redirectUri\r\n     * @returns {(string)} the auth url or throws an error\r\n     */\r\n    async getAuthURL(redirectUri, stateKern) {\r\n        if (!this.ready) throw new Error(`${modulename} is not ready`);\r\n\r\n        const stateSeed = `txAdmin:${stateKern}`;\r\n        const state = crypto.createHash('SHA1').update(stateSeed).digest('hex');\r\n        const url = await this.client.authorizationUrl({\r\n            redirect_uri: redirectUri,\r\n            state: state,\r\n            response_type: 'code',\r\n            scope: 'openid identify',\r\n        });\r\n        if (typeof url !== 'string') throw new Error('url is not string');\r\n        return url;\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Processes the callback and returns the tokenSet\r\n     * @param {object} ctx\r\n     * @param {string} redirectUri the redirect uri originally used\r\n     * @param {string} stateKern\r\n     * @returns {(object)} tokenSet or throws an error\r\n     */\r\n    async processCallback(ctx, redirectUri, stateKern) {\r\n        if (!this.ready) throw new Error(`${modulename} is not ready`);\r\n\r\n        //Process the request\r\n        const params = this.client.callbackParams(ctx);\r\n        if (typeof params.code == 'undefined') throw new Error('code not present');\r\n\r\n        //Check the state\r\n        const stateSeed = `txAdmin:${stateKern}`;\r\n        const stateExpected = crypto.createHash('SHA1').update(stateSeed).digest('hex');\r\n\r\n        //Exchange code for token\r\n        const tokenSet = await this.client.callback(redirectUri, params, {state: stateExpected});\r\n        if (typeof tokenSet !== 'object') throw new Error('tokenSet is not an object');\r\n        if (typeof tokenSet.access_token == 'undefined') throw new Error('access_token not present');\r\n        if (typeof tokenSet.expires_at == 'undefined') throw new Error('expires_at not present');\r\n        return tokenSet;\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Gets user info via access token\r\n     * @param {string} accessToken\r\n     * @returns {(string)} userInfo or throws an error\r\n     */\r\n    async getUserInfo(accessToken) {\r\n        if (!this.ready) throw new Error(`${modulename} is not ready`);\r\n\r\n        //Perform introspection\r\n        const userInfo = await this.client.userinfo(accessToken);\r\n        if (typeof userInfo !== 'object') throw new Error('userInfo is not an object');\r\n        if (typeof userInfo.name != 'string' || !userInfo.name.length) throw new Error('name not present');\r\n        if (typeof userInfo.profile != 'string' || !userInfo.profile.length) throw new Error('profile not present');\r\n        if (typeof userInfo.nameid != 'string' || !userInfo.nameid.length) throw new Error('nameid not present');\r\n        if (typeof userInfo.picture != 'string' || !userInfo.picture.length) userInfo.picture = null;\r\n        return userInfo;\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Returns the session auth object\r\n     * NOTE: increasing session duration to 24 hours since we do not have refresh tokens\r\n     *\r\n     * @param {object} tokenSet\r\n     * @param {object} userInfo\r\n     * @returns {(object)}\r\n     */\r\n    async getUserSession(tokenSet, userInfo) {\r\n        return {\r\n            provider: 'citizenfx',\r\n            provider_uid: userInfo.name,\r\n            // expires_at: tokenSet.expires_at,\r\n            expires_at: Math.round(Date.now() / 1000) + 86400,\r\n            picture: userInfo.picture,\r\n        };\r\n    }\r\n}; //Fim CitizenFXProvider()\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/adminVault/providers/CitizenFX.js?")},"./src/components/configVault.js":
/*!***************************************!*\
  !*** ./src/components/configVault.js ***!
  \***************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'ConfigVault';\r\nconst fs = __webpack_require__(/*! fs */ \"fs\");\r\nconst cloneDeep = __webpack_require__(/*! lodash/cloneDeep */ \"./node_modules/lodash/cloneDeep.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n//Helper functions\r\nconst isUndefined = (x) => { return (typeof x === 'undefined'); };\r\nconst toDefault = (input, defVal) => { return (isUndefined(input)) ? defVal : input; };\r\nconst removeNulls = (obj) => {\r\n    const isArray = obj instanceof Array;\r\n    for (let k in obj) {\r\n        if (obj[k] === null) isArray ? obj.splice(k, 1) : delete obj[k];\r\n        else if (typeof obj[k] == 'object') removeNulls(obj[k]);\r\n        if (isArray && obj.length == k) removeNulls(obj);\r\n    }\r\n    return obj;\r\n};\r\nconst deepFreeze = (obj) => {\r\n    Object.freeze(obj);\r\n    Object.getOwnPropertyNames(obj).forEach(function (prop) {\r\n        if (obj.hasOwnProperty(prop)\r\n            && obj[prop] !== null\r\n            && (typeof obj[prop] === 'object' || typeof obj[prop] === 'function')\r\n            && !Object.isFrozen(obj[prop])\r\n        ) {\r\n            deepFreeze(obj[prop]);\r\n        }\r\n    });\r\n    return obj;\r\n};\r\n\r\nmodule.exports = class ConfigVault {\r\n    constructor(profilePath, serverProfile) {\r\n        this.serverProfile = serverProfile;\r\n        this.serverProfilePath = profilePath;\r\n        this.configFilePath = `${this.serverProfilePath}/config.json`;\r\n        this.configFile = null;\r\n        this.config = null;\r\n\r\n        this.setupVault();\r\n        // logOk('Started');\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Setup Vault\r\n     */\r\n    setupVault() {\r\n        try {\r\n            let cfgData = this.getConfigFromFile();\r\n            this.configFile = this.setupConfigStructure(cfgData);\r\n            this.config = this.setupConfigDefaults(this.configFile);\r\n            this.setupFolderStructure();\r\n        } catch (error) {\r\n            logError(error.message);\r\n            process.exit(0);\r\n        }\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Returns the config file data\r\n     */\r\n    getConfigFromFile() {\r\n        //Try to load config file\r\n        //TODO: create a lock file to prevent starting twice the same config file?\r\n        let rawFile = null;\r\n        try {\r\n            rawFile = fs.readFileSync(this.configFilePath, 'utf8');\r\n        } catch (error) {\r\n            throw new Error(`Unable to load configuration file '${this.configFilePath}'. (cannot read file, please read the documentation)\\nOriginal error: ${error.message}`);\r\n        }\r\n\r\n        //Try to parse config file\r\n        let cfgData = null;\r\n        try {\r\n            cfgData = JSON.parse(rawFile);\r\n        } catch (error) {\r\n            if (rawFile.includes('\\\\')) logError(`Note: your 'txData/${this.serverProfile}/config.json' file contains '\\\\', make sure all your paths use only '/'.`);\r\n            throw new Error(`Unable to load configuration file '${this.configFilePath}'. \\nOriginal error: ${error.message}`);\r\n        }\r\n\r\n        return cfgData;\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * ????????????\r\n     * @param {object} cfgData\r\n     */\r\n    setupConfigStructure(cfgData) {\r\n        let cfg = cloneDeep(cfgData);\r\n        let out = {\r\n            global: null,\r\n            logger: null,\r\n            monitor: null,\r\n            playerController: null,\r\n            webServer: null,\r\n            discordBot: null,\r\n            fxRunner: null,\r\n        };\r\n\r\n        //NOTE: this shit is ugly, but I wont bother fixing it.\r\n        //      this entire config vault is stupid.\r\n        //      use convict, lodash defaults or something like that\r\n        if (isUndefined(cfg.playerController)) cfg.playerController = {};\r\n\r\n        try {\r\n            out.global = {\r\n                serverName: toDefault(cfg.global.serverName, null),\r\n                language: toDefault(cfg.global.language, null),\r\n                menuEnabled: toDefault(cfg.global.menuEnabled, true),\r\n                menuAlignRight: toDefault(cfg.global.menuAlignRight, false),\r\n                menuPageKey: toDefault(cfg.global.menuPageKey, 'Tab'),\r\n            };\r\n            out.logger = toDefault(cfg.logger, {}); //not in template\r\n            out.monitor = {\r\n                restarterSchedule: toDefault(cfg.monitor.restarterSchedule, null),\r\n                restarterScheduleWarnings: toDefault(cfg.monitor.restarterScheduleWarnings, [30, 15, 10, 5, 4, 3, 2, 1]), //not in template\r\n                cooldown: toDefault(cfg.monitor.cooldown, null), //not in template\r\n                disableChatWarnings: toDefault(cfg.monitor.disableChatWarnings, null), //not in template\r\n            };\r\n            out.playerController = {\r\n                onJoinCheckBan: toDefault(cfg.playerController.onJoinCheckBan, true),\r\n                onJoinCheckWhitelist: toDefault(cfg.playerController.onJoinCheckWhitelist, false),\r\n                minSessionTime: toDefault(cfg.playerController.minSessionTime, 15),\r\n                whitelistRejectionMessage: toDefault(\r\n                    cfg.playerController.whitelistRejectionMessage,\r\n                    'You are not yet whitelisted in this server.\\nPlease join http://discord.gg/example.\\nYour Request ID: <id>',\r\n                ),\r\n                wipePendingWLOnStart: toDefault(cfg.playerController.wipePendingWLOnStart, true),\r\n            };\r\n            out.webServer = {\r\n                bufferTime: toDefault(cfg.webServer.bufferTime, null), //not in template - deprecate?\r\n                limiterMinutes: toDefault(cfg.webServer.limiterMinutes, null), //not in template\r\n                limiterAttempts: toDefault(cfg.webServer.limiterAttempts, null), //not in template\r\n            };\r\n            out.discordBot = {\r\n                enabled: toDefault(cfg.discordBot.enabled, null),\r\n                token: toDefault(cfg.discordBot.token, null),\r\n                announceChannel: toDefault(cfg.discordBot.announceChannel, null),\r\n                prefix: toDefault(cfg.discordBot.prefix, '/'),\r\n                statusMessage: toDefault(\r\n                    cfg.discordBot.statusMessage,\r\n                    '**IP:** `change-me:<port>`\\n**Players:** <players>\\n**Uptime:** <uptime>',\r\n                ),\r\n                commandCooldown: toDefault(cfg.discordBot.commandCooldown, null), //not in template\r\n            };\r\n            out.fxRunner = {\r\n                serverDataPath: toDefault(cfg.fxRunner.serverDataPath, null),\r\n                cfgPath: toDefault(cfg.fxRunner.cfgPath, null),\r\n                commandLine: toDefault(cfg.fxRunner.commandLine, null),\r\n                logPath: toDefault(cfg.fxRunner.logPath, null), //not in template\r\n                onesync: toDefault(cfg.fxRunner.onesync, null),\r\n                autostart: toDefault(cfg.fxRunner.autostart, null),\r\n                restartDelay: toDefault(cfg.fxRunner.restartDelay, null), //not in template\r\n                quiet: toDefault(cfg.fxRunner.quiet, null),\r\n            };\r\n\r\n            //Migrations\r\n            //Removing menu beta convar (v4.9)\r\n            out.fxRunner.commandLine = out.fxRunner.commandLine?.replace(/\\+?setr? txEnableMenuBeta true\\s?/gi, '');\r\n\r\n            //Merging portuguese\r\n            if (out.global.language === 'pt_PT' || out.global.language === 'pt_BR'){\r\n                out.global.language = 'pt';\r\n            }\r\n        } catch (error) {\r\n            if (GlobalData.verbose) dir(error);\r\n            throw new Error(`Malformed configuration file! Make sure your txAdmin is updated!\\nOriginal error: ${error.message}`);\r\n        }\r\n\r\n        return out;\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Setup the this.config variable based on the config file data\r\n     * FIXME: rename this function\r\n     * @param {object} cfgData\r\n     */\r\n    setupConfigDefaults(cfgData) {\r\n        let cfg = cloneDeep(cfgData);\r\n        //NOTE: the bool trick in fxRunner.autostart won't work if we want the default to be true\r\n        try {\r\n            //Global\r\n            cfg.global.serverName = cfg.global.serverName || 'change-me';\r\n            cfg.global.language = cfg.global.language || 'en'; //TODO: move to GlobalData\r\n            cfg.global.menuEnabled = (cfg.global.menuEnabled === 'true' || cfg.global.menuEnabled === true);\r\n            cfg.global.menuAlignRight = (cfg.global.menuAlignRight === 'true' || cfg.global.menuAlignRight === true);\r\n            cfg.global.menuPageKey = cfg.global.menuPageKey || 'Tab';\r\n\r\n            //Logger - NOTE: this one default's i'm doing directly into the class\r\n            cfg.logger.fxserver = toDefault(cfg.logger.fxserver, {});\r\n            cfg.logger.server = toDefault(cfg.logger.server, {});\r\n            cfg.logger.admin = toDefault(cfg.logger.admin, {});\r\n            cfg.logger.console = toDefault(cfg.logger.console, {});\r\n\r\n            //Monitor\r\n            cfg.monitor.restarterSchedule = cfg.monitor.restarterSchedule || [];\r\n            cfg.monitor.restarterScheduleWarnings = cfg.monitor.restarterScheduleWarnings || [30, 15, 10, 5, 4, 3, 2, 1];\r\n            cfg.monitor.cooldown = parseInt(cfg.monitor.cooldown) || 60; //not in template - 45 > 60 > 90 -> 60 after fixing the \"extra time\" logic\r\n            cfg.monitor.disableChatWarnings = (cfg.monitor.disableChatWarnings === 'true' || cfg.monitor.disableChatWarnings === true);\r\n\r\n            //Player Controller\r\n            cfg.playerController.onJoinCheckBan = (cfg.playerController.onJoinCheckBan === null) ? true : (cfg.playerController.onJoinCheckBan === 'true' || cfg.playerController.onJoinCheckBan === true);\r\n            cfg.playerController.onJoinCheckWhitelist = (cfg.playerController.onJoinCheckWhitelist === null) ? false : (cfg.playerController.onJoinCheckWhitelist === 'true' || cfg.playerController.onJoinCheckWhitelist === true);\r\n            cfg.playerController.minSessionTime = parseInt(cfg.playerController.minSessionTime) || 15;\r\n            cfg.playerController.whitelistRejectionMessage = cfg.playerController.whitelistRejectionMessage || 'You are not yet whitelisted in this server.\\nPlease join http://discord.gg/example.\\nYour Request ID: <id>';\r\n            cfg.playerController.wipePendingWLOnStart = (cfg.playerController.wipePendingWLOnStart === null) ? true : (cfg.playerController.wipePendingWLOnStart === 'true' || cfg.playerController.wipePendingWLOnStart === true);\r\n\r\n            //WebServer\r\n            cfg.webServer.bufferTime = parseInt(cfg.webServer.bufferTime) || 1500; //not in template - deprecate?\r\n            cfg.webServer.limiterMinutes = parseInt(cfg.webServer.limiterMinutes) || 15; //not in template\r\n            cfg.webServer.limiterAttempts = parseInt(cfg.webServer.limiterAttempts) || 10; //not in template\r\n\r\n            //DiscordBot\r\n            cfg.discordBot.enabled = (cfg.discordBot.enabled === 'true' || cfg.discordBot.enabled === true);\r\n            cfg.discordBot.prefix = cfg.discordBot.prefix || '/';\r\n            cfg.discordBot.statusMessage = cfg.discordBot.statusMessage || '**Join:** `change-me:<port>`\\n**Players:** <players>\\n**Uptime:** <uptime>';\r\n            cfg.discordBot.commandCooldown = parseInt(cfg.discordBot.commandCooldown) || 30; //not in template\r\n\r\n            //FXRunner\r\n            cfg.fxRunner.logPath = cfg.fxRunner.logPath || `${this.serverProfilePath}/logs/fxserver.log`; //not in template\r\n            cfg.fxRunner.autostart = (cfg.fxRunner.autostart === 'true' || cfg.fxRunner.autostart === true);\r\n            cfg.fxRunner.restartDelay = parseInt(cfg.fxRunner.restartDelay) || 1250; //not in templater\r\n            cfg.fxRunner.quiet = (cfg.fxRunner.quiet === 'true' || cfg.fxRunner.quiet === true);\r\n        } catch (error) {\r\n            if (GlobalData.verbose) dir(error);\r\n            throw new Error(`Malformed configuration file! Make sure your txAdmin is updated.\\nOriginal error: ${error.message}`);\r\n        }\r\n\r\n        return cfg;\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Create server profile folder structure if doesn't exist\r\n     */\r\n    setupFolderStructure() {\r\n        try {\r\n            let dataPath = `${this.serverProfilePath}/data/`;\r\n            if (!fs.existsSync(dataPath)) {\r\n                fs.mkdirSync(dataPath);\r\n            }\r\n\r\n            let logsPath = `${this.serverProfilePath}/logs/`;\r\n            if (!fs.existsSync(logsPath)) {\r\n                fs.mkdirSync(logsPath);\r\n            }\r\n        } catch (error) {\r\n            logError(`Failed to set up folder structure in '${this.serverProfilePath}/' with error: ${error.message}`);\r\n            process.exit();\r\n        }\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Return configs for a specific scope (reconstructed and freezed)\r\n     */\r\n    getScoped(scope) {\r\n        return cloneDeep(this.config[scope]);\r\n    }\r\n\r\n    //================================================================\r\n    /**\r\n     * Return configs for a specific scope (reconstructed and freezed)\r\n     */\r\n    getScopedStructure(scope) {\r\n        return cloneDeep(this.configFile[scope]);\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Return all configs individually reconstructed and freezed\r\n     */\r\n    getAll() {\r\n        let cfg = cloneDeep(this.config);\r\n        return deepFreeze({\r\n            global: cfg.global,\r\n            logger: cfg.logger,\r\n            monitor: cfg.monitor,\r\n            playerController: cfg.playerController,\r\n            webServer: cfg.webServer,\r\n            discordBot: cfg.discordBot,\r\n            fxRunner: cfg.fxRunner,\r\n        });\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Save the new scope to this context, then saves it to the configFile\r\n     * @param {string} scope\r\n     * @param {string} newConfig\r\n     */\r\n    saveProfile(scope, newConfig) {\r\n        try {\r\n            let toSave = cloneDeep(this.configFile);\r\n            toSave[scope] = newConfig;\r\n            toSave = removeNulls(toSave);\r\n            fs.writeFileSync(this.configFilePath, JSON.stringify(toSave, null, 2), 'utf8');\r\n            this.configFile = toSave;\r\n            this.config = this.setupConfigDefaults(this.configFile);\r\n            return true;\r\n        } catch (error) {\r\n            dir(error);\r\n            return false;\r\n        }\r\n    }\r\n}; //Fim ConfigVault()\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/configVault.js?")},"./src/components/discordBot/commands/addwl.js":
/*!*****************************************************!*\
  !*** ./src/components/discordBot/commands/addwl.js ***!
  \*****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'DiscordBot:cmd:addwl';\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n/**\r\n * Usage options:\r\n *  /addwl <wl req id>\r\n *  /addwl <license>\r\n *  /addwl <mention> ???\r\n */\r\nmodule.exports = {\r\n    description: 'Adds a players to the whitelist',\r\n    cooldown: 5,\r\n    async execute(message, args) {\r\n        //Check permissions\r\n        //TODO: generalize this to other commands?\r\n        const admin = globals.adminVault.getAdminByProviderUID(message.author.id);\r\n        if (!admin) {\r\n            return await message.reply('your Discord ID is not registered in txAdmin :face_with_monocle:');\r\n        }\r\n        if (\r\n            admin.master !== true\r\n            && !admin.permissions.includes('all_permissions')\r\n            && !admin.permissions.includes('players.whitelist')\r\n        ) {\r\n            return await message.reply('you do not have whitelist permissions :face_with_raised_eyebrow:');\r\n        }\r\n\r\n        //Check if whitelist is enabled\r\n        if (!globals.playerController.config.onJoinCheckWhitelist) {\r\n            return await message.reply('**txAdmin** whitelist is disabled :man_facepalming:\\nGo to the settings and enable it first.');\r\n        }\r\n\r\n        //Check usage\r\n        if (args.length !== 1) {\r\n            const msgLines = [\r\n                'Type in the whitelist Request ID (R####) or License Identifier.',\r\n                'Example:',\r\n                `\\`${globals.discordBot.config.prefix}addwl R1234\\``,\r\n                `\\`${globals.discordBot.config.prefix}addwl license:65a97df7ab8208b531f5b7a9cb91c3b853095f1d\\``,\r\n                'An option to whitelist using other identifiers will soon be available.',\r\n            ];\r\n            return await message.reply(msgLines.join('\\n'));\r\n        }\r\n\r\n        //Treat input to improve UX\r\n        let reference = args[0];\r\n        if (reference.length == 5) {\r\n            reference = reference.toUpperCase();\r\n        } else if (reference.length == 40) {\r\n            reference = reference.toLowerCase();\r\n        } else if (reference.length == 48) {\r\n            reference = reference.substring(8).toLowerCase();\r\n        }\r\n\r\n        //Check input validity\r\n        if (\r\n            !GlobalData.regexWhitelistReqID.test(reference)\r\n            && !/[0-9A-Fa-f]{40}/.test(reference)\r\n        ) {\r\n            return await message.reply('The value inserted is not a valid Whitelist Request ID (R####) nor a license identifier.');\r\n        }\r\n\r\n        //Whitelist reference\r\n        try {\r\n            await globals.playerController.approveWhitelist(reference, admin.name);\r\n        } catch (error) {\r\n            return await message.reply(`**Error:** ${error.message}`);\r\n        }\r\n\r\n        const logMessage = `[DISCORD][${admin.name}] Whitelisted ${reference}`;\r\n        globals.logger.admin.write(logMessage);\r\n        logOk(logMessage);\r\n        return await message.reply('Player added to the whitelist :white_check_mark:');\r\n    },\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/discordBot/commands/addwl.js?")},"./src/components/discordBot/commands/help.js":
/*!****************************************************!*\
  !*** ./src/components/discordBot/commands/help.js ***!
  \****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'DiscordBot:cmd:help';\r\nconst { MessageEmbed } = __webpack_require__(/*! @citizenfx/discord.js */ \"./node_modules/@citizenfx/discord.js/src/index.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\nmodule.exports = {\r\n    description: 'Prints a list of commands',\r\n    async execute(message, args) {\r\n        //Prepare description\r\n        let cmdDescs = [];\r\n        globals.discordBot.commands.forEach((cmd, name) => {\r\n            cmdDescs.push(`${globals.discordBot.config.prefix}${name}: ${cmd.description}`);\r\n        });\r\n        const descLines = [\r\n            ':game_die: **Available commands:**',\r\n            '```',\r\n            ...cmdDescs,\r\n            '...more commands to come soon 😮',\r\n            '```',\r\n        ];\r\n        const outMsg = new MessageEmbed({\r\n            color: 0x4287F5,\r\n            description: descLines.join('\\n'),\r\n        });\r\n        return await message.reply({embeds: [outMsg]});\r\n    },\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/discordBot/commands/help.js?")},"./src/components/discordBot/commands/status.js":
/*!******************************************************!*\
  !*** ./src/components/discordBot/commands/status.js ***!
  \******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'DiscordBot:cmd:status';\r\nconst humanizeDuration = __webpack_require__(/*! humanize-duration */ \"./node_modules/humanize-duration/humanize-duration.js\");\r\nconst { MessageEmbed } = __webpack_require__(/*! @citizenfx/discord.js */ \"./node_modules/@citizenfx/discord.js/src/index.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\nmodule.exports = {\r\n    description: 'Prints the server status',\r\n    cooldown: 60,\r\n    async execute(message, args) {\r\n        //Prepare message's MessageEmbed + template variables\r\n        let replaces = {};\r\n        let cardColor, cardTitle;\r\n        if (globals.monitor.currentStatus == 'ONLINE' || globals.monitor.currentStatus == 'PARTIAL') {\r\n            cardColor = 0x74EE15;\r\n            cardTitle = globals.translator.t('discord.status_online', {servername: globals.config.serverName});\r\n            replaces.players = (Array.isArray(globals.playerController.activePlayers))\r\n                ? globals.playerController.activePlayers.length\r\n                : '--';\r\n            if (globals.fxRunner.fxServerHost) {\r\n                const hostParts = globals.fxRunner.fxServerHost.split(':');\r\n                if (hostParts.length >= 2) {\r\n                    replaces.port = hostParts[hostParts.length - 1];\r\n                } else {\r\n                    replaces.port = '--';\r\n                }\r\n            } else {\r\n                replaces.port = '--';\r\n            }\r\n        } else {\r\n            cardColor = 0xFF001E;\r\n            cardTitle = globals.translator.t('discord.status_offline', {servername: globals.config.serverName});\r\n            replaces.players = '--';\r\n            replaces.port = '--';\r\n        }\r\n        let humanizeOptions = {\r\n            language: globals.translator.t('$meta.humanizer_language'),\r\n            round: true,\r\n            units: ['d', 'h', 'm', 's'],\r\n            fallbacks: ['en'],\r\n        };\r\n        replaces.uptime = humanizeDuration(globals.fxRunner.getUptime() * 1000, humanizeOptions);\r\n\r\n        //Replacing text\r\n        let desc = globals.discordBot.config.statusMessage;\r\n        Object.entries(replaces).forEach(([key, value]) => {\r\n            desc = desc.replace(`<${key}>`, value);\r\n        });\r\n\r\n        //Prepare object\r\n        const outMsg = new MessageEmbed({\r\n            color: cardColor,\r\n            title: cardTitle,\r\n            description: desc,\r\n            footer: `Powered by txAdmin v${GlobalData.txAdminVersion}.`,\r\n        });\r\n        return await message.reply({embeds: [outMsg]});\r\n    },\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/discordBot/commands/status.js?")},"./src/components/discordBot/commands/txadmin.js":
/*!*******************************************************!*\
  !*** ./src/components/discordBot/commands/txadmin.js ***!
  \*******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'DiscordBot:cmd:txadmin';\r\nconst { MessageEmbed } = __webpack_require__(/*! @citizenfx/discord.js */ \"./node_modules/@citizenfx/discord.js/src/index.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\nmodule.exports = {\r\n    description: 'Prints the current txAdmin version',\r\n    async execute(message, args) {\r\n        const outMsg = new MessageEmbed({\r\n            color: 0x4DEEEA,\r\n            title: `${globals.config.serverName} uses txAdmin v${GlobalData.txAdminVersion} :smiley:`,\r\n            description: 'Checkout the project:\\n GitHub: https://github.com/tabarra/txAdmin\\n Discord: https://discord.gg/f3TsfvD',\r\n        });\r\n        return await message.reply({embeds: [outMsg]});\r\n    },\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/discordBot/commands/txadmin.js?")},"./src/components/discordBot/index.js":
/*!********************************************!*\
  !*** ./src/components/discordBot/index.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'DiscordBot';\r\nconst Discord = __webpack_require__(/*! @citizenfx/discord.js */ \"./node_modules/@citizenfx/discord.js/src/index.js\");\r\nconst { dir, log, logOk, logWarn, logError, logDebug } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n//NOTE: fix for the fact that fxserver (as of 2627) does not have URLSearchParams as part of the global scope\r\nif (typeof URLSearchParams === 'undefined') {\r\n    global.URLSearchParams = (__webpack_require__(/*! url */ \"url\").URLSearchParams);\r\n}\r\n\r\n//Helpers\r\nconst now = () => { return Math.round(Date.now() / 1000); };\r\n\r\n\r\nmodule.exports = class DiscordBot {\r\n    constructor(config) {\r\n        this.config = config;\r\n        this.client = null;\r\n        this.announceChannel = null;\r\n        this.latestMutex = null;\r\n        this.usageStats = {\r\n            addwl: 0,\r\n            help: 0,\r\n            status: 0,\r\n            txadmin: 0,\r\n        };\r\n\r\n        //NOTE: setting them up statically due to webpack requirements\r\n        this.commands = new Map([\r\n            ['addwl', __webpack_require__(/*! ./commands/addwl.js */ \"./src/components/discordBot/commands/addwl.js\")],\r\n            ['help', __webpack_require__(/*! ./commands/help.js */ \"./src/components/discordBot/commands/help.js\")],\r\n            ['status', __webpack_require__(/*! ./commands/status.js */ \"./src/components/discordBot/commands/status.js\")],\r\n            ['txadmin', __webpack_require__(/*! ./commands/txadmin.js */ \"./src/components/discordBot/commands/txadmin.js\")],\r\n\r\n            //FIXME: first we need to have player ids in the players db\r\n            // ['info', require('./commands/info.js')],\r\n        ]);\r\n        this.cooldowns = new Map();\r\n\r\n        if (!this.config.enabled) {\r\n            // logOk('Disabled by the config file.');\r\n        } else {\r\n            this.startBot();\r\n        }\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Refresh discordBot configurations\r\n     */\r\n    refreshConfig() {\r\n        this.config = globals.configVault.getScoped('discordBot');\r\n        if (this.client !== null) {\r\n            logWarn('Stopping Discord Bot');\r\n            this.client.destroy();\r\n            setTimeout(() => {\r\n                if (this.config.enabled == false) this.client = null;\r\n            }, 1000);\r\n        }\r\n        if (this.config.enabled) {\r\n            this.startBot();\r\n        }\r\n    }//Final refreshConfig()\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Send an announcement to the configured channel\r\n     * @param {string} message\r\n     */\r\n    async sendAnnouncement(message) {\r\n        if (\r\n            !this.config.announceChannel\r\n            || !this.client\r\n            || this.client.status\r\n            || !this.announceChannel\r\n        ) {\r\n            if (GlobalData.verbose) logWarn('returning false, not ready yet', 'sendAnnouncement');\r\n            return false;\r\n        }\r\n\r\n        try {\r\n            await this.announceChannel.send(message);\r\n        } catch (error) {\r\n            logError(`Error sending Discord announcement: ${error.message}`);\r\n        }\r\n    }//Final sendAnnouncement()\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Starts the discord client\r\n     */\r\n    async startBot() {\r\n        //State check\r\n        if (this.client !== null && this.client.status !== 5) {\r\n            logWarn('Client not yet destroyed, awaiting destruction.');\r\n            await this.client.destroy();\r\n        }\r\n\r\n        //Setup client\r\n        this.client = new Discord.Client({\r\n            intents: [Discord.Intents.FLAGS.GUILDS, Discord.Intents.FLAGS.GUILD_MESSAGES],\r\n            autoReconnect: true,\r\n        });\r\n\r\n        //Set mutex to prevent spamming /help on reconnections\r\n        const currentMutex = Math.random();\r\n\r\n        //Setup Ready listener\r\n        this.client.on('ready', async () => {\r\n            logOk(`Started and logged in as '${this.client.user.tag}'`);\r\n            this.client.user.setActivity(globals.config.serverName, { type: 'WATCHING' });\r\n            this.announceChannel = this.client.channels.cache.find((x) => x.id === this.config.announceChannel);\r\n            if (!this.announceChannel) {\r\n                logError(`The announcements channel could not be found. Check the channel ID ${this.config.announceChannel}, or the bot permissions.`);\r\n            } else if (currentMutex !== this.latestMutex) {\r\n                let cmdDescs = [];\r\n                this.commands.forEach((cmd, name) => {\r\n                    cmdDescs.push(`${this.config.prefix}${name}: ${cmd.description}`);\r\n                });\r\n                const descLines = [\r\n                    `:rocket: **txAdmin** v${GlobalData.txAdminVersion} bot started!`,\r\n                    ':game_die: **Commands:**',\r\n                    '```',\r\n                    ...cmdDescs,\r\n                    '...more commands to come soon 😮',\r\n                    '```',\r\n                ];\r\n                const msg = new Discord.MessageEmbed({\r\n                    color: 0x4287F5,\r\n                    description: descLines.join('\\n'),\r\n                });\r\n                this.announceChannel.send({ embeds: [msg] });\r\n                this.latestMutex = currentMutex;\r\n            }\r\n        });\r\n\r\n        //Setup remaining event listeners\r\n        this.client.on('messageCreate', this.handleMessage.bind(this));\r\n        this.client.on('error', (error) => {\r\n            logError(`Error from Discord.js client: ${error.message}`);\r\n        });\r\n        this.client.on('resume', () => {\r\n            if (GlobalData.verbose) logOk('Connection with Discord API server resumed');\r\n            this.client.user.setActivity(globals.config.serverName, { type: 'WATCHING' });\r\n        });\r\n        this.client.on('debug', logDebug);\r\n\r\n        //Start bot\r\n        try {\r\n            await this.client.login(this.config.token);\r\n        } catch (error) {\r\n            logError(`Discord login failed with error: ${error.message}`);\r\n            //TODO: colocar aqui mensagem de erro pra aparecer no dashboard\r\n        }\r\n    }\r\n\r\n    //================================================================\r\n    async handleMessage(message) {\r\n        //Ignoring bots and DMs\r\n        if (message.author.bot) return;\r\n        if (!message.content.startsWith(this.config.prefix)) return;\r\n\r\n        //Parse message\r\n        const args = message.content.slice(this.config.prefix.length).split(/\\s+/);\r\n        const commandName = args.shift().toLowerCase();\r\n\r\n        //Check if its a recognized command\r\n        const command = this.commands.get(commandName);\r\n        if (!command) return;\r\n\r\n        //Check spam limiter\r\n        if (!this.cooldowns.has(commandName)) {\r\n            this.cooldowns.set(commandName, now());\r\n        } else {\r\n            const cooldownTime = command.cooldown || 30;\r\n            const expirationTime = this.cooldowns.get(commandName) + cooldownTime;\r\n            const ts = now();\r\n            if (ts < expirationTime) {\r\n                const timeLeft = expirationTime - ts;\r\n                if (GlobalData.verbose) log(`Spam prevented for command \"${commandName}\".`);\r\n                return message.reply(`please wait ${timeLeft.toFixed(1)} more second(s) before reusing the \\`${commandName}\\` command again.`);\r\n            }\r\n        }\r\n\r\n        //Increment usage stats\r\n        this.usageStats[commandName] = (typeof this.usageStats[commandName] == 'undefined') ? 1 : this.usageStats[commandName] + 1;\r\n\r\n        //Executing command\r\n        try {\r\n            await command.execute(message, args);\r\n        } catch (error) {\r\n            logError(`Failed to execute ${commandName}: ${error.message}`);\r\n        }\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * DEBUG: fetch user data\r\n     * @param {string} uid\r\n     */\r\n    // async testFetchUser(uid){\r\n    //     let testUser = await this.client.fetchUser('272800190639898628');\r\n    //     dir(testUser)\r\n    //     dir(testUser.avatarURL)\r\n    // }\r\n}; //Fim DiscordBot()\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/discordBot/index.js?")},"./src/components/dynamicAds.js":
/*!**************************************!*\
  !*** ./src/components/dynamicAds.js ***!
  \**************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'DynamicAds';\r\nconst xss = __webpack_require__(/*! xss */ \"./node_modules/xss/lib/index.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../extras/console */ \"./src/extras/console.js\")(modulename);\r\nconst got = __webpack_require__(/*! ../extras/got */ \"./src/extras/got.js\");\r\nconst defaultAds = __webpack_require__(/*! ../../dynamicAds.json */ \"./dynamicAds.json\");\r\n\r\n//Helper\r\nconst cleanAds = (ads) => {\r\n    return ads.map((ad) => {\r\n        if (ad.text) ad.text = xss(ad.text);\r\n        return ad;\r\n    });\r\n};\r\n\r\n\r\nmodule.exports = class DynamicAds {\r\n    constructor() {\r\n        this.adIndex = {\r\n            login: 0,\r\n            main: 0,\r\n        };\r\n        this.adOptions = false;\r\n\r\n        //Set default ads\r\n        if (Array.isArray(defaultAds.login) && Array.isArray(defaultAds.main)) {\r\n            this.adOptions = {\r\n                login: cleanAds(defaultAds.login),\r\n                main: cleanAds(defaultAds.main),\r\n            };\r\n        }\r\n\r\n        //Update with the ads from the interweebs\r\n        this.update();\r\n\r\n        //Cron Function\r\n        setInterval(() => {\r\n            this.rotate();\r\n        }, 60 * 1000);\r\n    }\r\n\r\n\r\n    //================================================================\r\n    async update() {\r\n        const indexURL = 'https://raw.githubusercontent.com/tabarra/txAdmin/master/dynamicAds.json';\r\n        try {\r\n            const res = await got(indexURL).json();\r\n            if (Array.isArray(defaultAds.login) && Array.isArray(defaultAds.main)) {\r\n                this.adOptions = {\r\n                    login: cleanAds(res.login),\r\n                    main: cleanAds(res.main),\r\n                };\r\n                this.adIndex = {\r\n                    login: 0,\r\n                    main: 0,\r\n                };\r\n            }\r\n        } catch (error) {\r\n            if (GlobalData.verbose) logWarn(`Failed to retrieve dynamic ads with error: ${error.message}`);\r\n        }\r\n    }\r\n\r\n\r\n    //================================================================\r\n    rotate() {\r\n        if (!this.adOptions) return;\r\n        this.adIndex.login = (this.adIndex.login + 1) % this.adOptions.login.length;\r\n        this.adIndex.main = (this.adIndex.main + 1) % this.adOptions.main.length;\r\n    }\r\n\r\n\r\n    //================================================================\r\n    pick(spot) {\r\n        if (!this.adOptions) {\r\n            return false;\r\n        } else if (spot === 'login') {\r\n            return (this.adOptions.login && this.adOptions.login.length)\r\n                ? this.adOptions.login[this.adIndex.login]\r\n                : false;\r\n        } else if (spot === 'main') {\r\n            return (this.adOptions.main && this.adOptions.main.length)\r\n                ? this.adOptions.main[this.adIndex.main]\r\n                : false;\r\n        } else {\r\n            throw new Error('unknown spot type');\r\n        }\r\n    }\r\n}; //Fim DynamicAds()\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/dynamicAds.js?")},"./src/components/fxRunner/index.js":
/*!******************************************!*\
  !*** ./src/components/fxRunner/index.js ***!
  \******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'FXRunner';\r\nconst { spawn } = __webpack_require__(/*! child_process */ \"child_process\");\r\nconst path = __webpack_require__(/*! path */ \"path\");\r\nconst chalk = __webpack_require__(/*! chalk */ \"./node_modules/chalk/source/index.js\");\r\nconst sleep = (__webpack_require__(/*! util */ \"util\").promisify)((a, f) => setTimeout(f, a));\r\nconst { parseArgsStringToArgv } = __webpack_require__(/*! string-argv */ \"./node_modules/string-argv/index.js\");\r\nconst StreamValues = __webpack_require__(/*! stream-json/streamers/StreamValues */ \"./node_modules/stream-json/streamers/StreamValues.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\nconst { validateFixServerConfig } = __webpack_require__(/*! ../../extras/fxsConfigHelper */ \"./src/extras/fxsConfigHelper.js\");\r\nconst OutputHandler = __webpack_require__(/*! ./outputHandler */ \"./src/components/fxRunner/outputHandler.js\");\r\n\r\nconst { customAlphabet } = __webpack_require__(/*! nanoid/non-secure */ \"./node_modules/nanoid/non-secure/index.cjs\");\r\nconst dict51 = __webpack_require__(/*! nanoid-dictionary/nolookalikes */ \"./node_modules/nanoid-dictionary/nolookalikes.js\");\r\nconst genMutex = customAlphabet(dict51, 5);\r\n\r\n\r\n//Helpers\r\nconst now = () => { return Math.round(Date.now() / 1000); };\r\nconst escape = (x) => { return x.toString().replace(/\"/g, '\\uff02'); };\r\nconst formatCommand = (cmd, ...params) => {\r\n    return `${cmd} \"` + [...params].map(escape).join('\" \"') + '\"';\r\n};\r\nconst getMutableConvars = (isCmdLine = false) => {\r\n    const p = isCmdLine ? '+' : '';\r\n    const controllerConfigs = globals.playerController.config;\r\n    const checkPlayerJoin = (controllerConfigs.onJoinCheckBan || controllerConfigs.onJoinCheckWhitelist);\r\n\r\n    return [\r\n        //type, name, value\r\n        [`${p}setr`, 'txAdmin-locale', globals.translator.language ?? 'en'],\r\n        [`${p}set`, 'txAdmin-localeFile', globals.translator.customLocalePath ?? 'false'],\r\n        [`${p}setr`, 'txAdmin-verbose', GlobalData.verbose],\r\n        [`${p}set`, 'txAdmin-checkPlayerJoin', checkPlayerJoin],\r\n        [`${p}set`, 'txAdmin-menuAlignRight', globals.config.menuAlignRight],\r\n        [`${p}set`, 'txAdmin-menuPageKey', globals.config.menuPageKey],\r\n    ];\r\n};\r\nconst SHUTDOWN_NOTICE_DELAY = 5000;\r\n\r\n\r\nmodule.exports = class FXRunner {\r\n    constructor(config) {\r\n        // logOk('Started');\r\n        this.config = config;\r\n        this.spawnVariables = null;\r\n        this.fxChild = null;\r\n        this.restartDelayOverride == false;\r\n        this.history = [];\r\n        this.lastKillRequest = 0;\r\n        this.fxServerPort = null;\r\n        this.fxServerHost = null;\r\n        this.currentMutex = null;\r\n        this.outputHandler = new OutputHandler();\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Refresh fxRunner configurations\r\n     */\r\n    refreshConfig() {\r\n        this.config = globals.configVault.getScoped('fxRunner');\r\n    }//Final refreshConfig()\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Receives the signal that all the start banner was already printed and other modules loaded\r\n     */\r\n    signalStartReady() {\r\n        if (!this.config.autostart) return;\r\n\r\n        if (this.config.serverDataPath === null || this.config.cfgPath === null) {\r\n            return logWarn('Please open txAdmin on the browser to configure your server.');\r\n        }\r\n\r\n        if (!globals.adminVault || !globals.adminVault.admins) {\r\n            return logWarn('The server will not auto start because there are no admins configured.');\r\n        }\r\n\r\n        this.spawnServer(true);\r\n    }//Final signalStartReady()\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Setup the spawn parameters\r\n     */\r\n    setupVariables() {\r\n        // Prepare extra args\r\n        let extraArgs = [];\r\n        if (typeof this.config.commandLine === 'string' && this.config.commandLine.length) {\r\n            extraArgs = parseArgsStringToArgv(this.config.commandLine);\r\n        }\r\n\r\n        // Prepare default args (these convars can't change without restart)\r\n        const txAdminInterface = (GlobalData.forceInterface)\r\n            ? `${GlobalData.forceInterface}:${GlobalData.txAdminPort}`\r\n            : `127.0.0.1:${GlobalData.txAdminPort}`;\r\n        const cmdArgs = [\r\n            getMutableConvars(true),\r\n            extraArgs,\r\n            '+set', 'onesync', this.config.onesync,\r\n            '+sets', 'txAdmin-version', GlobalData.txAdminVersion,\r\n            '+setr', 'txAdmin-menuEnabled', globals.config.menuEnabled,\r\n            '+set', 'txAdmin-luaComHost', txAdminInterface,\r\n            '+set', 'txAdmin-luaComToken', globals.webServer.luaComToken,\r\n            '+set', 'txAdminServerMode', 'true', //Can't change this one due to fxserver code compatibility\r\n            '+exec', this.config.cfgPath,\r\n        ].flat(2);\r\n\r\n        // Configure spawn parameters according to the environment\r\n        if (GlobalData.osType === 'linux') {\r\n            const alpinePath = path.resolve(GlobalData.fxServerPath, '../../');\r\n            this.spawnVariables = {\r\n                command: `${alpinePath}/opt/cfx-server/ld-musl-x86_64.so.1`,\r\n                args: [\r\n                    '--library-path', `${alpinePath}/usr/lib/v8/:${alpinePath}/lib/:${alpinePath}/usr/lib/`,\r\n                    '--',\r\n                    `${alpinePath}/opt/cfx-server/FXServer`,\r\n                    '+set', 'citizen_dir', `${alpinePath}/opt/cfx-server/citizen/`,\r\n                    ...cmdArgs,\r\n                ],\r\n            };\r\n        } else if (GlobalData.osType === 'windows') {\r\n            this.spawnVariables = {\r\n                command: `${GlobalData.fxServerPath}/FXServer.exe`,\r\n                args: cmdArgs,\r\n            };\r\n        } else {\r\n            logError(`OS type not supported: ${GlobalData.osType}`);\r\n            process.exit();\r\n        }\r\n    }//Final setupVariables()\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Spawns the FXServer and sets up all the event handlers\r\n     * @param {boolean} announce\r\n     * @returns {string} null or error message\r\n     */\r\n    async spawnServer(announce) {\r\n        //If the server is already alive\r\n        if (this.fxChild !== null) {\r\n            return logError('The server is already started.');\r\n        }\r\n\r\n        //Setup variables\r\n        globals.webServer.resetToken();\r\n        this.currentMutex = genMutex();\r\n        this.setupVariables();\r\n        if (GlobalData.verbose) {\r\n            log('Spawn Variables: ' + this.spawnVariables.args.join(' '));\r\n        }\r\n        //Sanity Check\r\n        if (\r\n            this.spawnVariables == null\r\n            || typeof this.spawnVariables.command == 'undefined'\r\n            || typeof this.spawnVariables.args == 'undefined'\r\n        ) {\r\n            return logError('this.spawnVariables is not set.');\r\n        }\r\n        //If there is any FXServer configuration missing\r\n        if (this.config.serverDataPath === null || this.config.cfgPath === null) {\r\n            return logError('Cannot start the server with missing configuration (serverDataPath || cfgPath).');\r\n        }\r\n\r\n        //Validating server.cfg & configuration\r\n        try {\r\n            const result = await validateFixServerConfig(this.config.cfgPath, this.config.serverDataPath);\r\n            if (result.errors) {\r\n                const msg = `**Unable to start the server due to error(s) in your config file(s):**\\n${result.errors}`;\r\n                logError(msg);\r\n                return msg;\r\n            }\r\n            if (result.warnings) {\r\n                const msg = `**Warning regarding your configuration file(s):**\\n${result.warnings}`;\r\n                logWarn(msg);\r\n            }\r\n\r\n            this.fxServerHost = result.connectEndpoint;\r\n        } catch (error) {\r\n            const errMsg = logError(`server.cfg error: ${error.message}`);\r\n            if (error.message.includes('unreadable')) {\r\n                logError('That is the file where you configure your server and start resources.');\r\n                logError('You likely moved/deleted your server files or copied the txData folder from another server.');\r\n                logError('To fix this issue, open the txAdmin web interface then go to \"Settings > FXServer\" and fix the \"Server Data Folder\" and \"CFX File Path\".');\r\n            }\r\n            return errMsg;\r\n        }\r\n\r\n        //Reseting monitor stats\r\n        globals.monitor.resetMonitorStats();\r\n\r\n        //Announcing\r\n        if (announce === 'true' || announce === true) {\r\n            let discordMessage = globals.translator.t('server_actions.spawning_discord', { servername: globals.config.serverName });\r\n            globals.discordBot.sendAnnouncement(discordMessage);\r\n        }\r\n\r\n        //Starting server\r\n        let pid;\r\n        let historyIndex;\r\n        try {\r\n            this.fxChild = spawn(\r\n                this.spawnVariables.command,\r\n                this.spawnVariables.args,\r\n                {\r\n                    cwd: this.config.serverDataPath,\r\n                    stdio: ['pipe', 'pipe', 'pipe', 'pipe'],\r\n                },\r\n            );\r\n            if (typeof this.fxChild.pid === 'undefined') {\r\n                throw new Error(`Executon of \"${this.spawnVariables.command}\" failed.`);\r\n            }\r\n            pid = this.fxChild.pid.toString();\r\n            logOk(`>> [${pid}] FXServer Started!`);\r\n            globals.logger.fxserver.writeMarker('starting');\r\n            this.history.push({\r\n                pid: pid,\r\n                timestamps: {\r\n                    start: now(),\r\n                    kill: false,\r\n                    exit: false,\r\n                    close: false,\r\n                },\r\n            });\r\n            historyIndex = this.history.length - 1;\r\n        } catch (error) {\r\n            logError('Failed to start FXServer with the following error:');\r\n            dir(error);\r\n            process.exit(0);\r\n        }\r\n\r\n        //Setting up stream handlers\r\n        this.fxChild.stdout.setEncoding('utf8');\r\n\r\n        //Setting up event handlers\r\n        this.fxChild.on('close', function (code) {\r\n            logWarn(`>> [${pid}] FXServer Closed. (code ${code})`);\r\n            this.history[historyIndex].timestamps.close = now();\r\n        }.bind(this));\r\n        this.fxChild.on('disconnect', function () {\r\n            logWarn(`>> [${pid}] FXServer Disconnected.`);\r\n        }.bind(this));\r\n        this.fxChild.on('error', function (err) {\r\n            logWarn(`>> [${pid}] FXServer Errored:`);\r\n            dir(err);\r\n        }.bind(this));\r\n        this.fxChild.on('exit', function () {\r\n            process.stdout.write('\\n'); //Make sure this isn't concatenated with the last line\r\n            logWarn(`>> [${pid}] FXServer Exited.`);\r\n            this.history[historyIndex].timestamps.exit = now();\r\n            if (this.history[historyIndex].timestamps.exit - this.history[historyIndex].timestamps.start <= 5) {\r\n                setTimeout(() => {\r\n                    logWarn('FXServer didn\\'t start. This is not an issue with txAdmin.');\r\n                }, 500);\r\n            }\r\n        }.bind(this));\r\n\r\n        this.fxChild.stdin.on('error', () => { });\r\n        this.fxChild.stdin.on('data', () => { });\r\n\r\n        this.fxChild.stdout.on('error', () => { });\r\n        this.fxChild.stdout.on('data', this.outputHandler.write.bind(this.outputHandler, 'stdout', this.currentMutex));\r\n\r\n        this.fxChild.stderr.on('error', () => { });\r\n        this.fxChild.stderr.on('data', this.outputHandler.write.bind(this.outputHandler, 'stderr', this.currentMutex));\r\n\r\n        const tracePipe = this.fxChild.stdio[3].pipe(StreamValues.withParser());\r\n        tracePipe.on('error', (data) => {\r\n            if (GlobalData.verbose) logWarn(`FD3 decode error: ${data.message}`);\r\n            globals.databus.txStatsData.lastFD3Error = data.message;\r\n        });\r\n        tracePipe.on('data', this.outputHandler.trace.bind(this.outputHandler, this.currentMutex));\r\n\r\n        return null;\r\n    }//Final spawnServer()\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Restarts the FXServer\r\n     * @param {string} reason\r\n     * @param {string} author\r\n     */\r\n    async restartServer(reason = null, author = null) {\r\n        try {\r\n            //Restart server\r\n            const killError = await this.killServer(reason, author, true);\r\n            if (killError) return killError;\r\n\r\n            //If delay override\r\n            if (this.restartDelayOverride) {\r\n                logWarn(`Restarting the fxserver with delay override ${this.restartDelayOverride}`);\r\n                await sleep(this.restartDelayOverride);\r\n            } else {\r\n                await sleep(this.config.restartDelay);\r\n            }\r\n\r\n            //Start server again :)\r\n            return this.spawnServer();\r\n        } catch (error) {\r\n            const errMsg = logError(\"Couldn't restart the server.\");\r\n            if (GlobalData.verbose) dir(error);\r\n            return errMsg;\r\n        }\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Kills the FXServer\r\n     * @param {string} reason\r\n     * @param {string} author\r\n     * @param {boolean} isRestarting\r\n     */\r\n    async killServer(reason = null, author = null, isRestarting = false) {\r\n        try {\r\n            //Prevent concurrent restart request\r\n            const msTimestamp = Date.now();\r\n            if (msTimestamp - this.lastKillRequest < SHUTDOWN_NOTICE_DELAY) {\r\n                return 'Restart already in progress.';\r\n            } else {\r\n                this.lastKillRequest = msTimestamp;\r\n            }\r\n\r\n            // Send warningngs\r\n            const messageType = isRestarting ? 'restarting' : 'stopping';\r\n            const tOptions = {\r\n                servername: globals.config.serverName,\r\n                reason: reason ?? 'no reason provided',\r\n            };\r\n            this.sendEvent('serverShuttingDown', {\r\n                delay: SHUTDOWN_NOTICE_DELAY,\r\n                author: author ?? 'txAdmin',\r\n                message: globals.translator.t(`server_actions.${messageType}`, tOptions),\r\n            });\r\n            globals.discordBot.sendAnnouncement(\r\n                globals.translator.t(`server_actions.${messageType}_discord`, tOptions),\r\n            );\r\n\r\n            //Awaiting restart delay\r\n            await sleep(SHUTDOWN_NOTICE_DELAY);\r\n\r\n            //Stopping server\r\n            if (this.fxChild !== null) {\r\n                this.fxChild.kill();\r\n                this.fxChild = null;\r\n                this.history[this.history.length - 1].timestamps.kill = now();\r\n            }\r\n            return true;\r\n        } catch (error) {\r\n            logError(\"Couldn't kill the server. Perhaps What Is Dead May Never Die.\");\r\n            if (GlobalData.verbose) dir(error);\r\n            this.fxChild = null;\r\n            return false;\r\n        }\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Resets the convars in the server.\r\n     * Useful for when we change txAdmin settings and want it to reflect on the server.\r\n     * This will also fire the `txAdmin:event:configChanged`\r\n     */\r\n    resetConvars() {\r\n        log('Refreshing fxserver convars.');\r\n        try {\r\n            const convarList = getMutableConvars(false);\r\n            if (GlobalData.verbose) dir(convarList);\r\n            convarList.forEach(([type, name, value]) => {\r\n                this.srvCmd(formatCommand(type, name, value));\r\n            });\r\n            return this.sendEvent('configChanged');\r\n        } catch (error) {\r\n            if (GlobalData.verbose) {\r\n                logError('Error resetting server convars');\r\n                dir(error);\r\n            }\r\n            return false;\r\n        }\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Fires an `txAdmin:event` inside the server via srvCmd > stdin > command > lua broadcaster.\r\n     * @param {string} eventType\r\n     * @param {object} data\r\n     */\r\n    sendEvent(eventType, data = {}) {\r\n        if (typeof eventType !== 'string') throw new Error('Expected eventType as String!');\r\n        try {\r\n            const eventCommand = formatCommand(\r\n                'txaEvent',\r\n                eventType,\r\n                JSON.stringify(data),\r\n            );\r\n            return this.srvCmd(eventCommand);\r\n        } catch (error) {\r\n            if (GlobalData.verbose) {\r\n                logError(`Error writing firing server event ${eventType}`);\r\n                dir(error);\r\n            }\r\n            return false;\r\n        }\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Pipe a string into FXServer's stdin (aka executes a cfx's command)\r\n     * TODO: make this method accept an array and apply the formatCommand() logic\r\n     * @param {string} command\r\n     */\r\n    srvCmd(command) {\r\n        if (typeof command !== 'string') throw new Error('Expected String!');\r\n        if (this.fxChild === null) return false;\r\n        const sanitized = command.replaceAll(/\\n/g, ' ');\r\n        try {\r\n            const success = this.fxChild.stdin.write(sanitized + '\\n');\r\n            globals.logger.fxserver.writeMarker('command', sanitized);\r\n            return success;\r\n        } catch (error) {\r\n            if (GlobalData.verbose) {\r\n                logError('Error writing to fxChild.stdin');\r\n                dir(error);\r\n            }\r\n            return false;\r\n        }\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Handles a live console command input\r\n     * @param {object} session\r\n     * @param {string} command\r\n     */\r\n    liveConsoleCmdHandler(session, command) {\r\n        log(`${session.auth.username} executing ` + chalk.inverse(' ' + command + ' '), 'SocketIO');\r\n        globals.logger.admin.write(`[${session.auth.username}] ${command}`);\r\n        globals.fxRunner.srvCmd(command);\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Pipe a string into FXServer's stdin (aka executes a cfx's command) and returns the stdout output.\r\n     * NOTE: used only in webroutes\\fxserver\\commands.js and webroutes\\player\\actions.js\r\n     * FIXME: deprecate this with a promise that resolves or rejects.\r\n     * we can create a promise with settimeout to reject, and create a function that resolves it\r\n     * and set this function in a map with the cmd id, and the resolve function as value\r\n     * the internal functions should fd3 {id, message?} and outputhandler do Map.get(id)(message)\r\n     * @param {*} command\r\n     * @param {*} bufferTime the size of the buffer in milliseconds\r\n     * @returns {string} buffer\r\n     */\r\n    async srvCmdBuffer(command, bufferTime = 1500) {\r\n        if (typeof command !== 'string') throw new Error('Expected String!');\r\n        if (this.fxChild === null) return false;\r\n        this.outputHandler.cmdBuffer = '';\r\n        this.outputHandler.enableCmdBuffer = true;\r\n        const result = this.srvCmd(command);\r\n        if (!result) return false;\r\n        await sleep(bufferTime);\r\n        this.outputHandler.enableCmdBuffer = false;\r\n        return this.outputHandler.cmdBuffer.replace(/\\x1b\\[\\d+(;\\d)?m/g, '');\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Returns the status of the server, with the states being:\r\n     *  - not started\r\n     *  - spawn ready\r\n     *  - spawn awaiting last: <list of pending status of last instance>\r\n     *  - kill pending: <list of pending events from current instance>\r\n     *  - killed\r\n     *  - closing\r\n     *  - closed\r\n     *  - spawned\r\n     * @returns {string} status\r\n     */\r\n    getStatus() {\r\n        if (!this.history.length) return 'not started';\r\n        let curr = this.history[this.history.length - 1];\r\n\r\n        if (!curr.timestamps.start && this.history.length == 1) {\r\n            throw new Error('This should NOT happen. Let\\'s see how long people will take to find this...');\r\n        } else if (!curr.timestamps.start) {\r\n            let last = this.history[this.history.length - 2];\r\n            let pending = Object.keys(last.timestamps).filter((k) => !curr.timestamps[k]);\r\n            if (!pending.length) {\r\n                return 'spawn ready';\r\n            } else {\r\n                return 'spawn awaiting last: ' + pending.join(', ');\r\n            }\r\n        } else if (curr.timestamps.kill) {\r\n            let pending = Object.keys(curr.timestamps).filter((k) => !curr.timestamps[k]);\r\n            if (pending.length) {\r\n                return 'kill pending: ' + pending.join(', ');\r\n            } else {\r\n                return 'killed';\r\n            }\r\n        } else if (curr.timestamps.exit && !curr.timestamps.close) {\r\n            return 'closing';\r\n        } else if (curr.timestamps.exit && curr.timestamps.close) {\r\n            return 'closed';\r\n        } else {\r\n            return 'spawned';\r\n        }\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Returns the current fxserver uptime in seconds\r\n     * @returns {numeric} buffer\r\n     */\r\n    getUptime() {\r\n        if (!this.history.length) return 0;\r\n        let curr = this.history[this.history.length - 1];\r\n\r\n        return now() - curr.timestamps.start;\r\n    }\r\n}; //Fim FXRunner()\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/fxRunner/index.js?")},"./src/components/fxRunner/outputHandler.js":
/*!**************************************************!*\
  !*** ./src/components/fxRunner/outputHandler.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'OutputHandler';\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n//Helpers\r\nconst anyUndefined = (...args) => { return [...args].some((x) => (typeof x === 'undefined')); };\r\nconst deferError = (m, t = 500) => {\r\n    setTimeout(() => {\r\n        logError(m);\r\n    }, t);\r\n};\r\n\r\n\r\n/**\r\n * FXServer output helper that mostly relays to other components.\r\n */\r\nmodule.exports = class OutputHandler {\r\n    constructor() {\r\n        this.enableCmdBuffer = false;\r\n        this.cmdBuffer = '';\r\n    }\r\n\r\n\r\n    /**\r\n     * Processes FD3 traces\r\n     *\r\n     * Mapped straces:\r\n     *   nucleus_connected\r\n     *   watchdog_bark\r\n     *   bind_error\r\n     *   script_log\r\n     *   script_structured_trace (handled by server logger)\r\n     *\r\n     * @param {String} mutex\r\n     * @param {Object} data\r\n     */\r\n    trace(mutex, trace) {\r\n        try {\r\n            //Filter valid and fresh packages\r\n            if (mutex !== globals.fxRunner.currentMutex) return;\r\n            if (anyUndefined(trace, trace.value, trace.value.data, trace.value.channel)) return;\r\n            const {channel, data} = trace.value;\r\n            // dir({channel, data});\r\n\r\n            //Handle bind errors\r\n            if (channel == 'citizen-server-impl' && data.type == 'bind_error') {\r\n                try {\r\n                    if (!globals.fxRunner.restartDelayOverride) {\r\n                        globals.fxRunner.restartDelayOverride = 10000;\r\n                    } else if (globals.fxRunner.restartDelayOverride <= 45000) {\r\n                        globals.fxRunner.restartDelayOverride += 5000;\r\n                    }\r\n                    const [_ip, port] = data.address.split(':');\r\n                    deferError(`Detected FXServer error: Port ${port} is busy! Increasing restart delay to ${globals.fxRunner.restartDelayOverride}.`);\r\n                } catch (e) {}\r\n                return;\r\n            }\r\n\r\n            //Handle watchdog\r\n            if (channel == 'citizen-server-impl' && data.type == 'watchdog_bark') {\r\n                try {\r\n                    deferError(`Detected FXServer thread ${data.thread} hung with stack:`);\r\n                    deferError(`\\t${data.stack}`); //TODO: add to diagnostics page\r\n                    deferError('Please check the resource above to prevent further hangs.');\r\n                } catch (e) {}\r\n                return;\r\n            }\r\n\r\n            //Handle script traces\r\n            if (channel == 'citizen-server-impl' && data.type == 'script_structured_trace' && data.resource === 'monitor') {\r\n                if (data.payload.type === 'txAdminHeartBeat') {\r\n                    globals.monitor.handleHeartBeat('fd3');\r\n                } else if (data.payload.type === 'txAdminLogData') {\r\n                    globals.logger.server.write(mutex, data.payload.logs);\r\n                }\r\n            }\r\n        } catch (error) {\r\n            if (GlobalData.verbose) {\r\n                logError('Error processing FD3 stream output:');\r\n                dir(error);\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * handles stdout and stderr from child fxserver and send to be processed by the logger\r\n     * @param {String} source\r\n     * @param {String} mutex\r\n     * @param {String|Buffer} data likely string\r\n     */\r\n    write(source, mutex, data) {\r\n        data = data.toString();\r\n        globals.logger.fxserver.writeStdIO(source, data);\r\n\r\n        //FIXME: deprecate this whenever\r\n        if (this.enableCmdBuffer) this.cmdBuffer += data.replace(/\\u001b[^m]*?m/g, '');\r\n    }\r\n}; //Fim OutputHandler()\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/fxRunner/outputHandler.js?")},"./src/components/logger/handlers/admin.js":
/*!*************************************************!*\
  !*** ./src/components/logger/handlers/admin.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'Logger:Admin';\r\nconst fsp = (__webpack_require__(/*! fs */ \"fs\").promises);\r\nconst path = __webpack_require__(/*! path */ \"path\");\r\nconst dateFormat = __webpack_require__(/*! dateformat */ \"./node_modules/dateformat/lib/dateformat.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../../extras/console */ \"./src/extras/console.js\")(modulename);\r\nconst { LoggerBase, separator } = __webpack_require__(/*! ../loggerUtils */ \"./src/components/logger/loggerUtils.js\");\r\n\r\n\r\nmodule.exports = class AdminLogger extends LoggerBase {\r\n    constructor(basePath, lrProfileConfig) {\r\n        const lrDefaultOptions = {\r\n            path: basePath,\r\n            intervalBoundary: true,\r\n            initialRotation: true,\r\n            history: 'admin.history',\r\n            interval: '7d',\r\n\r\n        };\r\n        super(basePath, 'admin', lrDefaultOptions, lrProfileConfig);\r\n        this.lrStream.write(`\\n${separator('txAdmin Starting')}\\n`);\r\n        this.lrStream.on('rotated', (filename) => {\r\n            this.lrStream.write(`\\n${separator('Log Rotated')}\\n`);\r\n            if (GlobalData.verbose) log(`Rotated file ${filename}`);\r\n        });\r\n\r\n        this.writeCounter = 0;\r\n    }\r\n\r\n    /**\r\n     * Returns a string with short usage stats\r\n     */\r\n    getUsageStats() {\r\n        return `Writes: ${this.writeCounter}, lrErrors: ${this.lrErrors}`;\r\n    }\r\n\r\n    /**\r\n     * Returns an string with everything in admin.log (the active log rotate file)\r\n     */\r\n    getRecentBuffer() {\r\n        try {\r\n            return fsp.readFile(path.join(this.basePath, 'admin.log'), 'utf8');\r\n        } catch (error) {\r\n            return false;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Handles the input of log data\r\n     * @param {string} data\r\n     */\r\n    write(data) {\r\n        const timestamp = dateFormat(new Date(), 'HH:MM:ss');\r\n        this.lrStream.write(`[${timestamp}] ${data}\\n`);\r\n        this.writeCounter++;\r\n    }\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/logger/handlers/admin.js?")},"./src/components/logger/handlers/fxserver.js":
/*!****************************************************!*\
  !*** ./src/components/logger/handlers/fxserver.js ***!
  \****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'Logger:FXServer';\r\nconst bytes = __webpack_require__(/*! bytes */ \"./node_modules/bytes/index.js\");\r\nconst chalk = __webpack_require__(/*! chalk */ \"./node_modules/chalk/source/index.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../../extras/console */ \"./src/extras/console.js\")(modulename);\r\nconst { LoggerBase, separator } = __webpack_require__(/*! ../loggerUtils */ \"./src/components/logger/loggerUtils.js\");\r\n\r\n\r\n//NOTE: There used to be a rule \"\\x0B-\\x1F\" that was replaced with \"x0B-\\x1A\\x1C-\\x1F\" to allow the \\x1B terminal escape character.\r\n//This is neccessary for the terminal to have color, but beware of side effects.\r\n//This regex was done in the first place to prevent fxserver output to be interpreted as txAdmin output by the host terminal\r\n//IIRC the issue was that one user with a TM on their nick was making txAdmin's console to close or freeze. I couldn't reproduce the issue.\r\n// \\x00-\\x08 control chars\r\n// allow \\r and \\t\r\n// \\x0B-\\x1A control chars\r\n// allow \\e (escape for colors)\r\n// \\x1C-\\x1F control chars\r\n// allow all printable\r\n// \\x7F-\\x9F ??????\r\n// \\u2122 trademark symbol\r\nconst regexConsole = /[\\x00-\\x08\\x0B-\\x1A\\x1C-\\x1F\\x7F-\\x9F\\x80-\\x9F\\u2122]/g;\r\nconst regexEscape = /\\u001b[^m]*?m/g;\r\n\r\nconst markLines = (msg, type) => {\r\n    return msg.trim().split('\\n').map((l) => `{txMarker-${type}}${l}{/txMarker}`).join('\\n') + '\\n';\r\n};\r\n\r\n\r\nmodule.exports = class FXServerLogger extends LoggerBase {\r\n    constructor(basePath, lrProfileConfig) {\r\n        const lrDefaultOptions = {\r\n            path: basePath,\r\n            intervalBoundary: true,\r\n            initialRotation: true,\r\n            history: 'fxserver.history',\r\n            // compress: 'gzip',\r\n            interval: '1d',\r\n            maxFiles: 7,\r\n            maxSize: '5G',\r\n\r\n        };\r\n        super(basePath, 'fxserver', lrDefaultOptions, lrProfileConfig);\r\n        this.lrStream.on('rotated', (filename) => {\r\n            this.lrStream.write(`\\n${separator('Log Rotated')}\\n`);\r\n            if (GlobalData.verbose) log(`Rotated file ${filename}`);\r\n        });\r\n\r\n\r\n        this.recentBuffer = '';\r\n        this.recentBufferMaxSize = 128 * 1024; //128kb\r\n    }\r\n\r\n\r\n    /**\r\n     * Returns a string with short usage stats\r\n     */\r\n    getUsageStats() {\r\n        return `Buffer: ${bytes(this.recentBuffer.length)}, lrErrors: ${this.lrErrors}`;\r\n    }\r\n\r\n\r\n    /***\r\n     * Returns the recent fxserver buffer containing HTML markers, and not XSS escaped.\r\n     * The size of this buffer is usually above 64kb, never above 128kb.\r\n     */\r\n    getRecentBuffer() {\r\n        return this.recentBuffer;\r\n    }\r\n\r\n\r\n    /**\r\n     * Writes a marker text to the logger (file, websocket, buffer, stdout)\r\n     * @param {String} type\r\n     * @param {String} data\r\n     */\r\n    writeMarker(type, data) {\r\n        if (type === 'starting') {\r\n            const msg = separator('FXServer Starting');\r\n            this.lrStream.write(`\\n${msg}\\n`);\r\n            if (!globals.fxRunner.config.quiet) {\r\n                process.stdout.write(`\\n${chalk.bgBlue(msg)}\\n`);\r\n            }\r\n            const coloredMarkData = `\\n\\n${markLines(msg, 'info')}\\n`;\r\n            globals.webServer.webSocket.buffer('liveconsole', coloredMarkData);\r\n            this.appendRecent(coloredMarkData);\r\n        } else if (type === 'command') {\r\n            const msg = `> ${data}`;\r\n            this.lrStream.write(`${msg}\\n`);\r\n            const coloredMarkData = markLines(msg, 'cmd');\r\n            globals.webServer.webSocket.buffer('liveconsole', coloredMarkData);\r\n            this.appendRecent(coloredMarkData);\r\n        } else {\r\n            throw new Error('Unknown write type');\r\n        }\r\n    }\r\n\r\n\r\n    /**\r\n     * Handles all stdio data.\r\n     * NOTE: XSS is NOT handled here, the frontend is responsible for it!\r\n     *\r\n     * @param {String} type\r\n     * @param {String} data\r\n     */\r\n    writeStdIO(type, data) {\r\n        //To file\r\n        this.lrStream.write(data.replace(regexEscape, ''));\r\n\r\n        //Clean data\r\n        const consoleData = data\r\n            .replace(regexConsole, '') //removing console-breaking chars\r\n            .replace(/txMarker/g, 'tx\\u200BMarker'); //just to prevent resources from injecting markers\r\n\r\n        //For the terminal\r\n        if (!globals.fxRunner.config.quiet) {\r\n            const coloredAnsiData = (type === 'stdout') ? consoleData : chalk.redBright(consoleData);\r\n            process.stdout.write(coloredAnsiData);\r\n        }\r\n\r\n        //For the live console\r\n        const coloredMarkData = (type === 'stdout') ? consoleData : markLines(consoleData, 'error');\r\n        globals.webServer.webSocket.buffer('liveconsole', coloredMarkData);\r\n        this.appendRecent(coloredMarkData);\r\n    }\r\n\r\n\r\n    /**\r\n     * Appends data to the recent buffer and recycles it when necessary\r\n     * @param {String} data\r\n     */\r\n    appendRecent(data) {\r\n        this.recentBuffer += data;\r\n        if (this.recentBuffer.length > this.recentBufferMaxSize) {\r\n            this.recentBuffer = this.recentBuffer.slice(-0.5 * this.recentBufferMaxSize);\r\n            this.recentBuffer = this.recentBuffer.substr(this.recentBuffer.indexOf('\\n'));\r\n        }\r\n    }\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/logger/handlers/fxserver.js?")},"./src/components/logger/handlers/server.js":
/*!**************************************************!*\
  !*** ./src/components/logger/handlers/server.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("/* eslint-disable padded-blocks */\r\n//Requires\r\nconst modulename = 'Logger:Server';\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../../extras/console */ \"./src/extras/console.js\")(modulename);\r\nconst { LoggerBase, separator } = __webpack_require__(/*! ../loggerUtils */ \"./src/components/logger/loggerUtils.js\");\r\n\r\n/*\r\nNOTE: Expected time cap based on log size cap to prevent memory leak\r\nBig server: 300 events/min (freeroam/dm with 100+ players)\r\nMedium servers: 30 events/min (rp with up to 64 players)\r\n\r\n64k cap: 3.5h big, 35.5h medium, 24mb, 620ms/1000 seek time\r\n32k cap: 1.7h big, 17.7h medium, 12mb, 307ms/1000 seek time\r\n16k cap: 0.9h big, 9h medium, 6mb, 150ms/1000 seek time\r\n\r\n> Seek time based on getting 500 items older than cap - 1000 (so near the end of the array) run 1k times\r\n> Memory calculated with process.memoryUsage().heapTotal considering every event about 300 bytes\r\n\r\nNOTE: Although we could comfortably do 64k cap, even if showing 500 lines per page, nobody would\r\nnavigate through 128 pages, so let's do 16k cap since there is not even a way for the admin to skip\r\npages since it's all relative (older/newer) just like github's tags/releases page.\r\n\r\nNOTE: Final code after 2.5h at 2400 events/min with websocket client the memory usage was 135mb\r\n\r\n\r\nTODO: maybe a way to let big servers filter what is logged or not? That would be an export in fxs,\r\nbefore sending it to fd3\r\n*/\r\n\r\n//DEBUG testing stuff\r\n// let cnt = 0;\r\n// setInterval(() => {\r\n//     cnt++;\r\n//     if (cnt > 84) cnt = 1;\r\n//     const mtx = globals.fxRunner.currentMutex || 'lmao';\r\n//     const payload = [\r\n//         {\r\n//             src: 'tx',\r\n//             ts: Date.now(),\r\n//             type: 'DebugMessage',\r\n//             data: cnt + '='.repeat(cnt),\r\n//         },\r\n//     ];\r\n//     globals.logger.server.write(mtx, payload);\r\n// }, 750);\r\n\r\n\r\nmodule.exports = class ServerLogger extends LoggerBase {\r\n    constructor(basePath, lrProfileConfig) {\r\n        const lrDefaultOptions = {\r\n            path: basePath,\r\n            intervalBoundary: true,\r\n            initialRotation: true,\r\n            history: 'server.history',\r\n            // compress: 'gzip',\r\n            interval: '1d',\r\n            maxFiles: 7,\r\n            maxSize: '10G',\r\n\r\n        };\r\n        super(basePath, 'server', lrDefaultOptions, lrProfileConfig);\r\n        this.lrStream.write(`\\n${separator('txAdmin Starting')}\\n`);\r\n        this.lrStream.on('rotated', (filename) => {\r\n            this.lrStream.write(`\\n${separator('Log Rotated')}\\n`);\r\n            if (GlobalData.verbose) log(`Rotated file ${filename}`);\r\n        });\r\n\r\n        this.recentBuffer = [];\r\n        this.recentBufferMaxSize = 32e3;\r\n\r\n        //TODO: maybe move to playerController in the future\r\n        //FIXME: memory leak\r\n        this.cachedPlayers = new Map();\r\n    }\r\n\r\n\r\n    /**\r\n     * Returns a string with short usage stats\r\n     * TODO: calculate events per minute moving average 10 && peak\r\n     */\r\n    getUsageStats() {\r\n        return `Buffer: ${this.recentBuffer.length}, cachedPlayers: ${this.cachedPlayers.size},  lrErrors: ${this.lrErrors}`;\r\n    }\r\n\r\n\r\n    /***\r\n     * Returns the recent fxserver buffer containing HTML markers, and not XSS escaped.\r\n     * The size of this buffer is usually above 64kb, never above 128kb.\r\n     * @param {Number} lastN\r\n     * @returns the recent buffer, optionally only the last N elements\r\n     */\r\n    getRecentBuffer(lastN) {\r\n        return (lastN) ? this.recentBuffer.slice(-lastN) : this.recentBuffer;\r\n    }\r\n\r\n\r\n    /**\r\n     * Processes the FD3 log array\r\n     * @param {String} mutex\r\n     * @param {Array} data\r\n     */\r\n    write(mutex, data) {\r\n        if (!Array.isArray(data)) {\r\n            if (GlobalData.verbose) logWarn(`write() expected array, got ${typeof data}`);\r\n            return false;\r\n        }\r\n\r\n        //Processing events\r\n        for (let i = 0; i < data.length; i++) {\r\n            // logError(`loop ${i}:`); dir(data[i]); //DEBUG\r\n            try {\r\n                const {eventObject, eventString} = this.processEvent(mutex, data[i]);\r\n                // dir({eventObject, eventString});\r\n                if (!eventObject || !eventString) {\r\n                    if (GlobalData.verbose) {\r\n                        logWarn('Failed to parse event:');\r\n                        dir(data[i]);\r\n                    }\r\n                    continue;\r\n                }\r\n\r\n                //Add to recent buffer\r\n                this.recentBuffer.push(eventObject);\r\n                if (this.recentBuffer.length > this.recentBufferMaxSize) this.recentBuffer.shift();\r\n\r\n                //Send to websocket\r\n                globals.webServer.webSocket.buffer('serverlog', eventObject);\r\n\r\n                //Write to file\r\n                this.lrStream.write(`${eventString}\\n`);\r\n            } catch (error) {\r\n                if (GlobalData.verbose) {\r\n                    logError('Error processing FD3 txAdminLogData:');\r\n                    dir(error);\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Processes an event and returns both the string for log file, and object for the web ui\r\n     * @param {String} mutex\r\n     * @param {Object} eventData\r\n     */\r\n    processEvent(mutex, eventData) {\r\n        //Get source + handle playerJoining\r\n        let srcObject, srcString, eventMessage;\r\n        if (eventData.src === 'tx') {\r\n            srcObject = {id: false, name: 'txAdmin'};\r\n            srcString = 'txAdmin';\r\n\r\n        } else if (typeof eventData.src === 0) {\r\n            srcObject = {id: false, name: 'CONSOLE'};\r\n            srcString = 'CONSOLE';\r\n\r\n        } else if (typeof eventData.src === 'number' && eventData.src > 0) {\r\n            const playerID = `${mutex}#${eventData.src}`;\r\n            let playerData = this.cachedPlayers.get(playerID);\r\n            if (playerData) {\r\n                srcObject = {id: playerID, name: playerData.name};\r\n                srcString = `[${playerID}] ${playerData.name}`;\r\n            } else {\r\n                if (eventData.type === 'playerJoining') {\r\n                    if (eventData.data.name && Array.isArray(eventData.data.ids)) {\r\n                        playerData = eventData.data;\r\n                        playerData.ids = playerData.ids.filter((id) => !id.startsWith('ip:'));\r\n                        this.cachedPlayers.set(playerID, playerData);\r\n                        srcObject = {id: playerID, name: playerData.name};\r\n                        srcString = `[${playerID}] ${playerData.name}`;\r\n                        eventMessage = `joined with identifiers [${playerData.ids.join('; ')}]`;\r\n                    } else {\r\n                        srcObject = {id: false, name: 'UNKNOWN PLAYER'};\r\n                        srcString = 'UNKNOWN PLAYER';\r\n                        eventMessage = 'joined with unknown identifiers.';\r\n                        if (GlobalData.verbose) {\r\n                            logWarn('playerJoining: Unknown numeric event source from object:');\r\n                            dir(eventData);\r\n                        }\r\n                    }\r\n                } else {\r\n                    srcObject = {id: false, name: 'UNKNOWN PLAYER'};\r\n                    srcString = 'UNKNOWN PLAYER';\r\n                    if (GlobalData.verbose) {\r\n                        logWarn('Unknown numeric event source from object:');\r\n                        dir(eventData);\r\n                    }\r\n                }\r\n            }\r\n\r\n        } else {\r\n            srcObject = {id: false, name: 'UNKNOWN'};\r\n            srcString = 'UNKNOWN';\r\n        }\r\n\r\n\r\n        //Process event types (except playerJoining)\r\n        //TODO: normalize/padronize actions\r\n        if (eventData.type === 'playerDropped') {\r\n            const reason = eventData.data.reason || 'UNKNOWN REASON';\r\n            eventMessage = `disconnected (${reason})`;\r\n\r\n        } else if (eventData.type === 'ChatMessage') {\r\n            const text = (typeof eventData.data.text === 'string') ? eventData.data.text.replace(/\\^([0-9])/g, '') : 'unknown message';\r\n            eventMessage = (typeof eventData.data.author === 'string' && eventData.data.author !== srcObject.name)\r\n                ? `(${eventData.data.author}): said \"${text}\"`\r\n                : `said \"${text}\"`;\r\n\r\n        } else if (eventData.type === 'DeathNotice') {\r\n            const cause = eventData.data.cause || 'unknown';\r\n            if (typeof eventData.data.killer === 'number' && eventData.data.killer > 0) {\r\n                const killer = this.cachedPlayers.get(`${mutex}#${eventData.data.killer}`);\r\n                if (killer) {\r\n                    eventMessage = `died from ${cause} by ${killer.name}`;\r\n                } else {\r\n                    eventMessage = `died from ${cause} by unknown killer`;\r\n                }\r\n            } else {\r\n                eventMessage = `died from ${cause}`;\r\n            }\r\n\r\n        } else if (eventData.type === 'explosionEvent') {\r\n            const expType = eventData.data.explosionType || 'UNKNOWN';\r\n            eventMessage = `caused an explosion (${expType})`;\r\n\r\n        } else if (eventData.type === 'CommandExecuted') {\r\n            const command = eventData.data || 'unknown';\r\n            eventMessage = `executed: /${command}`;\r\n\r\n        } else if (eventData.type === 'LoggerStarted') {\r\n            eventMessage = 'Logger started';\r\n\r\n        } else if (eventData.type === 'DebugMessage') {\r\n            eventMessage = (typeof eventData.data === 'string')\r\n                ? `Debug Message: ${eventData.data}`\r\n                : 'Debug Message: unknown';\r\n\r\n        } else if (eventData.type === 'MenuEvent') {\r\n            eventMessage = (typeof eventData.data === 'string')\r\n                ? `${eventData.data}`\r\n                : 'did unknown action';\r\n\r\n        } else if (eventData.type !== 'playerJoining') {\r\n            if (GlobalData.verbose) {\r\n                logWarn(`Unrecognized event: ${eventData.type}`);\r\n                dir(eventData);\r\n            }\r\n            eventMessage = eventData.type;\r\n        }\r\n\r\n\r\n        //Prepare output\r\n        const localeTime = new Date(eventData.ts).toLocaleTimeString();\r\n        eventMessage = eventMessage.replace(/\\n/g, '\\t'); //Just to make sure no event is injecting line breaks\r\n        return {\r\n            eventObject: {\r\n                ts: eventData.ts,\r\n                type: eventData.type,\r\n                src: srcObject,\r\n                msg: eventMessage,\r\n            },\r\n            eventString: `[${localeTime}] ${srcString}: ${eventMessage}`,\r\n        };\r\n    }\r\n\r\n\r\n    /**\r\n     * Returns a slice of the recent buffer OLDER than a reference timestamp.\r\n     * @param {Number} timestamp\r\n     * @param {Number} sliceLength\r\n     */\r\n    readPartialNewer(timestamp, sliceLength) {\r\n        const limitIndex = this.recentBuffer.findIndex((x) => x.ts > timestamp);\r\n        return this.recentBuffer.slice(limitIndex, limitIndex + sliceLength);\r\n    }\r\n\r\n\r\n    /**\r\n     * Returns a slice of the recent buffer NEWER than a reference timestamp.\r\n     * @param {Number} timestamp\r\n     * @param {Number} sliceLength\r\n     */\r\n    readPartialOlder(timestamp, sliceLength) {\r\n        const limitIndex = this.recentBuffer.findIndex((x) => x.ts >= timestamp);\r\n\r\n        //everything is older, return last few\r\n        if (limitIndex === -1) {\r\n            return this.recentBuffer.slice(-sliceLength);\r\n        //not everything is older\r\n        } else {\r\n            return this.recentBuffer.slice(Math.max(0, limitIndex - sliceLength), limitIndex);\r\n        }\r\n    }\r\n\r\n\r\n    /**\r\n     * TODO: filter function, so we can search for all log from a specific player\r\n     */\r\n    readFiltered() {\r\n        throw new Error('Not yet implemented.');\r\n    }\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/logger/handlers/server.js?")},"./src/components/logger/index.js":
/*!****************************************!*\
  !*** ./src/components/logger/index.js ***!
  \****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('//Requires\r\nconst modulename = \'Logger\';\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ "./src/extras/console.js")(modulename);\r\nconst AdminLogger = __webpack_require__(/*! ./handlers/admin */ "./src/components/logger/handlers/admin.js");\r\nconst FXServerLogger = __webpack_require__(/*! ./handlers/fxserver */ "./src/components/logger/handlers/fxserver.js");\r\nconst ServerLogger = __webpack_require__(/*! ./handlers/server */ "./src/components/logger/handlers/server.js");\r\nconst { getLogSizes } = __webpack_require__(/*! ./loggerUtils */ "./src/components/logger/loggerUtils.js");\r\n\r\n// NOTE: to turn this into an universal class outside txAdmin() instance\r\n// when a txAdmin profile starts, it does universal.logger.start(profilename)\r\n// and then the logger can be called as universal.logger.profiles[profilename].fxserver\r\nmodule.exports = class Logger {\r\n    constructor(config) {\r\n        //FIXME: move these to class fields as soon as eslint v8 drops\r\n        this.admin = null;\r\n        this.fxserver = null;\r\n        this.server = null;\r\n        this.console = null;\r\n        this.config = null;\r\n\r\n        //Config stuff\r\n        this.config = config;\r\n        this.basePath = `${globals.info.serverProfilePath}/logs/`;\r\n\r\n        //Starting handlers\r\n        this.admin = new AdminLogger(this.basePath, this.config.admin);\r\n        this.fxserver = new FXServerLogger(this.basePath, this.config.fxserver);\r\n        this.server = new ServerLogger(this.basePath, this.config.server);\r\n        // this.console = null;\r\n    }\r\n\r\n\r\n    //================================================================\r\n    getUsageStats() {\r\n        //{loggerName: statsString}\r\n        throw new Error(\'Not yet implemented.\');\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Return the total size of the log files used.\r\n     * FIXME: this regex is kinda redundant with the one from loggerUtils.js\r\n     */\r\n    async getStorageSize() {\r\n        return await getLogSizes(\r\n            this.basePath,\r\n            /^(admin|fxserver|server)(_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}(_\\d+)?)?.log$/,\r\n        );\r\n    }\r\n}; //Fim Logger()\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/logger/index.js?')},"./src/components/logger/loggerUtils.js":
/*!**********************************************!*\
  !*** ./src/components/logger/loggerUtils.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("// Requires\r\nconst modulename = 'Logger:Utils';\r\nconst fsp = (__webpack_require__(/*! fs */ \"fs\").promises);\r\nconst path = __webpack_require__(/*! path */ \"path\");\r\nconst bytes = __webpack_require__(/*! bytes */ \"./node_modules/bytes/index.js\");\r\nconst dateFormat = __webpack_require__(/*! dateformat */ \"./node_modules/dateformat/lib/dateformat.js\");\r\nconst rfs = __webpack_require__(/*! rotating-file-stream */ \"./node_modules/rotating-file-stream/dist/cjs/index.js\");\r\nconst { defaultsDeep, cloneDeep } = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n\r\n/**\r\n * Returns an associative array of files in the log folder and it's sizes (human readable)\r\n * @param {String} basePath\r\n * @param {RegExp} filterRegex\r\n */\r\nmodule.exports.getLogSizes = async (basePath, filterRegex) => {\r\n    //Reading path\r\n    const files = await fsp.readdir(basePath, {withFileTypes: true});\r\n    const statOps = [];\r\n    const statNames = [];\r\n    for (let i = 0; i < files.length; i++) {\r\n        const file = files[i];\r\n        const filePath = path.join(basePath, file.name);\r\n        if (!filterRegex.test(file.name) || !file.isFile()) continue;\r\n        statNames.push(file.name);\r\n        statOps.push(fsp.stat(filePath));\r\n    }\r\n\r\n    //Processing files\r\n    let totalBytes = 0;\r\n    const fileStatsSizes = await Promise.allSettled(statOps);\r\n    const fileStatsArray = fileStatsSizes.map((op, index) => {\r\n        totalBytes += op.value.size;\r\n        return (op.status === 'fulfilled')\r\n            ? [statNames[index], bytes(op.value.size)]\r\n            : [statNames[index], false];\r\n    });\r\n    return {\r\n        total: bytes(totalBytes),\r\n        files: Object.fromEntries(fileStatsArray),\r\n    };\r\n};\r\n\r\n\r\n/**\r\n * Default class for logger instances.\r\n * Implements log-rotate, listLogFiles() and getLogFile()\r\n */\r\nmodule.exports.LoggerBase = class LoggerBase {\r\n    constructor(basePath, logName, lrDefaultOptions, lrProfileConfig = false) {\r\n        //FIXME: move these to private class fields as soon as eslint v8 drops\r\n        this.lrStream = null;\r\n        this.lrErrors = 0;\r\n        this.lrLastError = null;\r\n        this.basePath = null;\r\n\r\n        //Sanity check\r\n        if (!basePath || !logName) throw new Error('Missing LoggerBase constructor parameters');\r\n        this.basePath = basePath;\r\n        this.logNameRegex = new RegExp(`^${logName}(_\\\\d{4}-\\\\d{2}-\\\\d{2}_\\\\d{2}-\\\\d{2}-\\\\d{2}(_\\\\d+)?)?.log$`);\r\n\r\n        //If disabled\r\n        if (lrProfileConfig === false) {\r\n            logWarn(`${logName} persistent logging disabled.`, logName);\r\n            this.lrStream = {\r\n                write: () => {},\r\n            };\r\n            return;\r\n        }\r\n\r\n        //Setting log rotate up\r\n        const lrOptions = cloneDeep(lrProfileConfig);\r\n        if (typeof lrProfileConfig === 'object') {\r\n            defaultsDeep(lrOptions, lrDefaultOptions);\r\n        }\r\n\r\n        const filenameGenerator = (time, index) => {\r\n            return time\r\n                ? `${logName}_${dateFormat(time, 'yyyy-mm-dd_HH-MM-ss')}_${index}.log`\r\n                : `${logName}.log`;\r\n        };\r\n\r\n        this.lrStream = rfs.createStream(filenameGenerator, lrOptions);\r\n        this.lrStream.on('error', (error) => {\r\n            if (error.code !== 'ERR_STREAM_DESTROYED') {\r\n                if (GlobalData.verbose) logError(error, logName);\r\n                this.lrErrors++;\r\n                this.lrLastError = error.message;\r\n            }\r\n        });\r\n    }\r\n\r\n    listLogFiles() {\r\n        //FIXME: provavelmente mudar como isso de regex funfa\r\n        return module.exports.getLogSizes(this.basePath, this.logNameRegex);\r\n    }\r\n\r\n    getLogFile(fileName) {\r\n        if (!this.logNameRegex.test(fileName)) throw new Error('fileName doesn\\'t match regex');\r\n        return fs.createReadStream(path.join(this.basePath, fileName));\r\n    }\r\n};\r\n\r\n\r\n/**\r\n * Generates a multiline separator string\r\n */\r\nmodule.exports.separator = (msg) => {\r\n    const sepLine = '='.repeat(64);\r\n    const timestamp = new Date().toLocaleString();\r\n    return lines = [\r\n        sepLine,\r\n        `======== ${msg} - ${timestamp}`.padEnd(64, ' '),\r\n        sepLine,\r\n    ].join('\\n');\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/logger/loggerUtils.js?")},"./src/components/monitor/getHostStats.js":
/*!************************************************!*\
  !*** ./src/components/monitor/getHostStats.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'Monitor:HostStatus';\r\nconst os = __webpack_require__(/*! os */ \"os\");\r\nconst si = __webpack_require__(/*! systeminformation */ \"./node_modules/systeminformation/lib/index.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n//Const -hopefully\r\nconst giga = 1024 * 1024 * 1024;\r\nconst cpus = os.cpus();\r\n\r\nmodule.exports = getHostStats = async () => {\r\n    const out = {\r\n        memory: {usage: 0, used: 0, total: 0},\r\n        cpu: {\r\n            count: cpus.length,\r\n            speed: cpus[0].speed,\r\n            usage: 0,\r\n        },\r\n    };\r\n\r\n    //Getting memory usage\r\n    try {\r\n        let free, total, used;\r\n        if (GlobalData.osType === 'linux') {\r\n            const memoryData = await si.mem();\r\n            free = memoryData.available / giga;\r\n            total = memoryData.total / giga;\r\n            used = memoryData.active / giga;\r\n        } else {\r\n            free = os.freemem() / giga;\r\n            total = os.totalmem() / giga;\r\n            used = total - free;\r\n        }\r\n        out.memory = {\r\n            used,\r\n            total,\r\n            usage: Math.round((used / total) * 100),\r\n        };\r\n    } catch (error) {\r\n        if (GlobalData.verbose) {\r\n            logError('Failed to get memory usage.');\r\n            dir(error);\r\n        }\r\n    }\r\n\r\n    //Getting CPU usage\r\n    try {\r\n        const loads = await si.currentLoad();\r\n        out.cpu.usage = Math.round(loads.currentLoad);\r\n    } catch (error) {\r\n        if (GlobalData.verbose) {\r\n            logError('Failed to get CPU usage.');\r\n            dir(error);\r\n        }\r\n    }\r\n\r\n    return out;\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/monitor/getHostStats.js?")},"./src/components/monitor/index.js":
/*!*****************************************!*\
  !*** ./src/components/monitor/index.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'Monitor';\r\nconst got = __webpack_require__(/*! ../../extras/got */ \"./src/extras/got.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\nconst helpers = __webpack_require__(/*! ../../extras/helpers */ \"./src/extras/helpers.js\");\r\nconst getHostStats = __webpack_require__(/*! ./getHostStats */ \"./src/components/monitor/getHostStats.js\");\r\n\r\n//Helper functions\r\nconst now = () => { return Math.round(Date.now() / 1000); };\r\nconst isUndefined = (x) => { return (typeof x === 'undefined'); };\r\n\r\nmodule.exports = class Monitor {\r\n    constructor(config) {\r\n        this.config = config;\r\n\r\n        //Checking config validity\r\n        if (this.config.cooldown < 15) throw new Error('The monitor.cooldown setting must be 15 seconds or higher.');\r\n        if (!Array.isArray(this.config.restarterScheduleWarnings)) throw new Error('The monitor.restarterScheduleWarnings must be an array.');\r\n\r\n        //Hardcoded Configs\r\n        //NOTE: done mainly because the timeout/limit was never useful, and makes things more complicated\r\n        this.hardConfigs = {\r\n            timeout: 1500,\r\n            defaultWarningTimes: [30, 15, 10, 5, 4, 3, 2, 1],\r\n            maxHBCooldownTolerance: 300,\r\n            healthCheck: {\r\n                failThreshold: 15,\r\n                failLimit: 300,\r\n            },\r\n            heartBeat: {\r\n                failThreshold: 15,\r\n                failLimit: 60,\r\n            },\r\n        };\r\n\r\n        //Setting up\r\n        this.hostStats = null;\r\n        this.schedule = null;\r\n        this.resetMonitorStats();\r\n        this.buildSchedule();\r\n\r\n        //Cron functions\r\n        setInterval(() => {\r\n            this.sendHealthCheck();\r\n            this.refreshServerStatus();\r\n        }, 1000);\r\n        setInterval(async () => {\r\n            this.hostStats = await getHostStats();\r\n        }, 5000);\r\n        setInterval(() => {\r\n            this.checkRestartSchedule();\r\n        }, 60 * 1000);\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Refresh Monitor configurations\r\n     */\r\n    refreshConfig() {\r\n        this.config = globals.configVault.getScoped('monitor');\r\n        this.buildSchedule();\r\n    }//Final refreshConfig()\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Build schedule\r\n     */\r\n    buildSchedule() {\r\n        if (!Array.isArray(this.config.restarterSchedule) || !this.config.restarterSchedule.length) {\r\n            this.schedule = false;\r\n            return;\r\n        }\r\n\r\n        let getScheduleObj = (hour, minute, sub, sendMessage = false) => {\r\n            const time = new Date();\r\n            time.setHours(hour);\r\n            time.setMinutes(minute - sub);\r\n\r\n            const tOptions = {\r\n                smart_count: sub,\r\n                servername: globals.config.serverName,\r\n            };\r\n            return {\r\n                hour: time.getHours(),\r\n                minute: time.getMinutes(),\r\n                remaining: sub,\r\n                restart: false,\r\n                messages: (!sendMessage) ? false : {\r\n                    chat: globals.translator.t('restarter.schedule_warn', tOptions),\r\n                    discord: globals.translator.t('restarter.schedule_warn_discord', tOptions),\r\n                },\r\n            };\r\n        };\r\n\r\n        const times = helpers.parseSchedule(this.config.restarterSchedule);\r\n        const warnTimes = this.hardConfigs.defaultWarningTimes.concat(\r\n            this.config.restarterScheduleWarnings.filter(\r\n                (item) => this.hardConfigs.defaultWarningTimes.indexOf(item) < 0,\r\n            ),\r\n        ).sort((a, b) => b - a);\r\n\r\n        const schedule = [];\r\n        times.forEach((time) => {\r\n            try {\r\n                warnTimes.forEach((mins) => {\r\n                    schedule.push(getScheduleObj(time.hour, time.minute, mins, this.config.restarterScheduleWarnings.includes(mins)));\r\n                });\r\n                schedule.push({\r\n                    hour: time.hour,\r\n                    minute: time.minute,\r\n                    remaining: 0,\r\n                    restart: true,\r\n                    messages: false,\r\n                });\r\n            } catch (error) {\r\n                const timeJSON = JSON.stringify(time);\r\n                if (GlobalData.verbose) logWarn(`Error building restart schedule for time '${timeJSON}':\\n ${error.message}`);\r\n            }\r\n        });\r\n\r\n        if (GlobalData.verbose) dir(schedule.map((el) => { return el.messages; }));\r\n        this.schedule = (schedule.length) ? schedule : false;\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Check the restart schedule\r\n     */\r\n    checkRestartSchedule() {\r\n        if (!Array.isArray(this.schedule)) return;\r\n        if (globals.fxRunner.fxChild === null) return;\r\n\r\n        try {\r\n            //Check schedule for current time\r\n            //NOTE: returns only the first result, not necessarily the most important\r\n            // eg, when a restart message comes before a restart command\r\n            const currTime = new Date;\r\n            const action = this.schedule.find((time) => {\r\n                return (time.hour == currTime.getHours() && time.minute == currTime.getMinutes());\r\n            });\r\n            if (!action) return;\r\n\r\n            // Dispatch `txAdmin:events:scheduledRestart`\r\n            globals.fxRunner.sendEvent('scheduledRestart', {\r\n                secondsRemaining: action.remaining * 60,\r\n            });\r\n\r\n            //Perform scheduled action\r\n            if (action.restart === true) {\r\n                const currTimestamp = currTime.getHours().toString().padStart(2, '0') + ':' + currTime.getMinutes().toString().padStart(2, '0');\r\n                this.restartFXServer(\r\n                    `scheduled restart at ${currTimestamp}`,\r\n                    globals.translator.t('restarter.schedule_reason', {time: currTimestamp}),\r\n                );\r\n            } else if (action.messages) {\r\n                globals.discordBot.sendAnnouncement(action.messages.discord);\r\n                if (!this.config.disableChatWarnings) {\r\n                    // Dispatch `txAdmin:events:announcement`\r\n                    const cmdOk = globals.fxRunner.sendEvent('announcement', {\r\n                        author: 'txAdmin',\r\n                        message: action.messages.chat,\r\n                    });\r\n                }\r\n            }\r\n        } catch (error) {\r\n            if (GlobalData.verbose) dir(error);\r\n        }\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Restart the FXServer and logs everything\r\n     * @param {string} reasonInternal\r\n     * @param {string} reasonTranslated\r\n     */\r\n    async restartFXServer(reasonInternal, reasonTranslated) {\r\n        //sanity check\r\n        if (globals.fxRunner.fxChild === null) {\r\n            logWarn('Server not started, no need to restart');\r\n            return false;\r\n        }\r\n\r\n        //Restart server\r\n        const logMessage = `Restarting server (${reasonInternal}).`;\r\n        globals.logger.admin.write(`[MONITOR] ${logMessage}`);\r\n        logWarn(logMessage);\r\n        globals.fxRunner.restartServer(reasonTranslated, null);\r\n    }\r\n\r\n\r\n    //================================================================\r\n    resetMonitorStats() {\r\n        this.currentStatus = 'OFFLINE'; // options: OFFLINE, ONLINE, PARTIAL\r\n        this.lastRefreshStatus = null; //to prevent DDoS crash false positive\r\n        this.lastSuccessfulHealthCheck = null; //to see if its above limit\r\n        this.lastStatusWarningMessage = null; //to prevent spamming\r\n        this.lastHealthCheckErrorMessage = null; //to print warning\r\n        this.healthCheckRestartWarningIssued = false; //to prevent spamming\r\n\r\n        //to track http vs fd3\r\n        //to see if its above limit\r\n        this.lastSuccessfulFD3HeartBeat = null;\r\n        this.lastSuccessfulHTTPHeartBeat = null;\r\n        //to collect statistics\r\n        this.hasServerStartedYet = false;\r\n\r\n        //to reset active player list (if module is already loaded)\r\n        if (globals.playerController) globals.playerController.processHeartBeat([]);\r\n    }\r\n\r\n\r\n    //================================================================\r\n    async sendHealthCheck() {\r\n        //Check if the server is supposed to be offline\r\n        if (globals.fxRunner.fxChild === null || globals.fxRunner.fxServerHost === null) return;\r\n\r\n        //Make request\r\n        let dynamicResp;\r\n        const requestOptions = {\r\n            url: `http://${globals.fxRunner.fxServerHost}/dynamic.json`,\r\n            timeout: this.hardConfigs.timeout,\r\n            maxRedirects: 0,\r\n            retry: {limit: 0},\r\n        };\r\n        try {\r\n            const data = await got.get(requestOptions).json();\r\n            if (typeof data !== 'object') throw new Error(\"FXServer's dynamic endpoint didn't return a JSON object.\");\r\n            if (isUndefined(data.hostname) || isUndefined(data.clients)) throw new Error(\"FXServer's dynamic endpoint didn't return complete data.\");\r\n            dynamicResp = data;\r\n        } catch (error) {\r\n            this.lastHealthCheckErrorMessage = error.message;\r\n            return;\r\n        }\r\n\r\n        //Checking for the maxClients\r\n        if (\r\n            GlobalData.deployerDefaults\r\n            && GlobalData.deployerDefaults.maxClients\r\n            && dynamicResp\r\n            && dynamicResp.sv_maxclients\r\n        ) {\r\n            const maxClients = parseInt(dynamicResp.sv_maxclients);\r\n            if (!isNaN(maxClients) && maxClients > GlobalData.deployerDefaults.maxClients) {\r\n                globals.fxRunner.srvCmd(`sv_maxclients ${GlobalData.deployerDefaults.maxClients} ##ZAP-Hosting: please don't modify`);\r\n                logError(`ZAP-Hosting: Detected that the server has sv_maxclients above the limit (${GlobalData.deployerDefaults.maxClients}). Changing back to the limit.`);\r\n                globals.logger.admin.write(`[SYSTEM] changing sv_maxclients back to ${GlobalData.deployerDefaults.maxClients}`);\r\n            }\r\n        }\r\n\r\n        //Set variables\r\n        this.healthCheckRestartWarningIssued = false;\r\n        this.lastHealthCheckErrorMessage = false;\r\n        this.lastSuccessfulHealthCheck = now();\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Refreshes the Server Status and calls for a restart if neccessary.\r\n     *  - HealthCheck: performing an GET to the /dynamic.json file\r\n     *  - HeartBeat: receiving an intercom POST from txAdminClient containing playerlist\r\n     */\r\n    refreshServerStatus() {\r\n        //Check if the server is supposed to be offline\r\n        if (globals.fxRunner.fxChild === null) return this.resetMonitorStats();\r\n\r\n        //Helper func\r\n        const cleanET = (et) => {return (et > 99999) ? '--' : et;};\r\n\r\n        //Check if process was frozen\r\n        const currTimestamp = now();\r\n        const elapsedRefreshStatus = currTimestamp - this.lastRefreshStatus;\r\n        if (this.lastRefreshStatus !== null && elapsedRefreshStatus > 10) {\r\n            globals.databus.txStatsData.monitorStats.freezeSeconds.push(elapsedRefreshStatus - 1);\r\n            if (globals.databus.txStatsData.monitorStats.freezeSeconds.length > 30) globals.databus.txStatsData.monitorStats.freezeSeconds.shift();\r\n            logError(`FXServer was frozen for ${elapsedRefreshStatus - 1} seconds for unknown reason (random issue, VPS Lag, DDoS, etc).`);\r\n            logError('Don\\'t worry, txAdmin is preventing the server from being restarted.');\r\n            this.lastRefreshStatus = currTimestamp;\r\n            return;\r\n        }\r\n        this.lastRefreshStatus = currTimestamp;\r\n\r\n        //Get elapsed times & process status\r\n        const elapsedHealthCheck = currTimestamp - this.lastSuccessfulHealthCheck;\r\n        const healthCheckFailed = (elapsedHealthCheck > this.hardConfigs.healthCheck.failThreshold);\r\n        const anySuccessfulHeartBeat = (this.lastSuccessfulFD3HeartBeat !== null || this.lastSuccessfulHTTPHeartBeat !== null);\r\n        const elapsedHeartBeat = currTimestamp - Math.max(this.lastSuccessfulFD3HeartBeat, this.lastSuccessfulHTTPHeartBeat);\r\n        const heartBeatFailed = (elapsedHeartBeat > this.hardConfigs.heartBeat.failThreshold);\r\n        const processUptime = globals.fxRunner.getUptime();\r\n\r\n        //Check if its online and return\r\n        if (\r\n            this.lastSuccessfulHealthCheck\r\n            && !healthCheckFailed\r\n            && anySuccessfulHeartBeat\r\n            && !heartBeatFailed\r\n        ) {\r\n            this.currentStatus = 'ONLINE';\r\n            if (this.hasServerStartedYet == false) {\r\n                this.hasServerStartedYet = true;\r\n                globals.databus.txStatsData.monitorStats.bootSeconds.push(processUptime);\r\n            }\r\n            return;\r\n        }\r\n\r\n        //Now to the (un)fun part: if the status != healthy\r\n        this.currentStatus = (healthCheckFailed && heartBeatFailed) ? 'OFFLINE' : 'PARTIAL';\r\n        const timesPrefix = `(HB:${cleanET(elapsedHeartBeat)}|HC:${cleanET(elapsedHealthCheck)})`;\r\n        const elapsedLastWarning = currTimestamp - this.lastStatusWarningMessage;\r\n\r\n        //Check if still in cooldown\r\n        if (processUptime < this.config.cooldown) {\r\n            if (GlobalData.verbose && processUptime > 10 && elapsedLastWarning > 10) {\r\n                logWarn(`${timesPrefix} FXServer is not responding. Still in cooldown of ${this.config.cooldown}s.`);\r\n                this.lastStatusWarningMessage = currTimestamp;\r\n            }\r\n            return;\r\n        }\r\n\r\n        //Log failure message\r\n        if (elapsedLastWarning >= 15) {\r\n            const msg = (healthCheckFailed)\r\n                ? `${timesPrefix} FXServer is not responding. (${this.lastHealthCheckErrorMessage})`\r\n                : `${timesPrefix} FXServer is not responding. (HB Failed)`;\r\n            this.lastStatusWarningMessage = currTimestamp;\r\n            logWarn(msg);\r\n        }\r\n\r\n        //Check if fxChild is closed, in this case no need to wait the failure count\r\n        const processStatus = globals.fxRunner.getStatus();\r\n        if (processStatus == 'closed') {\r\n            globals.databus.txStatsData.monitorStats.restartReasons.close++;\r\n            this.restartFXServer(\r\n                'server close detected',\r\n                globals.translator.t('restarter.crash_detected'),\r\n            );\r\n            return;\r\n        }\r\n\r\n        //If http partial crash, warn 1 minute before\r\n        if (\r\n            !(elapsedHeartBeat > this.hardConfigs.heartBeat.failLimit)\r\n            && !this.healthCheckRestartWarningIssued\r\n            && elapsedHealthCheck > (this.hardConfigs.healthCheck.failLimit - 60)\r\n        ) {\r\n            globals.discordBot.sendAnnouncement(globals.translator.t(\r\n                'restarter.partial_hang_warn_discord',\r\n                {servername: globals.config.serverName},\r\n            ));\r\n            // Dispatch `txAdmin:events:announcement`\r\n            const cmdOk = globals.fxRunner.sendEvent('announcement', {\r\n                author: 'txAdmin',\r\n                message: globals.translator.t('restarter.partial_hang_warn'),\r\n            });\r\n\r\n            this.healthCheckRestartWarningIssued = currTimestamp;\r\n        }\r\n\r\n        //Give a bit more time to the very very slow servers to come up\r\n        //They usually start replying to healthchecks way before sending heartbeats\r\n        if (\r\n            anySuccessfulHeartBeat === false\r\n            && processUptime < this.hardConfigs.maxHBCooldownTolerance\r\n            && elapsedHealthCheck < this.hardConfigs.healthCheck.failLimit\r\n        ) {\r\n            if (processUptime % 15 == 0) logWarn(`Still waiting for the first HeartBeat. Process started ${processUptime}s ago.`);\r\n            return;\r\n        }\r\n\r\n        //Check if already over the limit\r\n        if (\r\n            elapsedHealthCheck > this.hardConfigs.healthCheck.failLimit\r\n            || elapsedHeartBeat > this.hardConfigs.heartBeat.failLimit\r\n        ) {\r\n            if (anySuccessfulHeartBeat === false) {\r\n                globals.databus.txStatsData.monitorStats.bootSeconds.push(false);\r\n                this.restartFXServer(\r\n                    `server failed to start within ${this.hardConfigs.maxHBCooldownTolerance} seconds`,\r\n                    globals.translator.t('restarter.start_timeout'),\r\n                );\r\n            } else if (elapsedHealthCheck > this.hardConfigs.healthCheck.failLimit) {\r\n                globals.databus.txStatsData.monitorStats.restartReasons.healthCheck++;\r\n                this.restartFXServer(\r\n                    'server partial hang detected',\r\n                    globals.translator.t('restarter.hang_detected'),\r\n                );\r\n            } else {\r\n                globals.databus.txStatsData.monitorStats.restartReasons.heartBeat++;\r\n                this.restartFXServer(\r\n                    'server hang detected',\r\n                    globals.translator.t('restarter.hang_detected'),\r\n                );\r\n            }\r\n        }\r\n    }\r\n\r\n\r\n    //================================================================\r\n    handleHeartBeat(source, postData) {\r\n        const tsNow = now();\r\n        if (source === 'fd3') {\r\n            //Processing stats\r\n            if (\r\n                this.lastSuccessfulHTTPHeartBeat\r\n                && tsNow - this.lastSuccessfulHTTPHeartBeat > 15\r\n                && tsNow - this.lastSuccessfulFD3HeartBeat < 5\r\n            ) {\r\n                globals.databus.txStatsData.monitorStats.heartBeatStats.httpFailed++;\r\n            }\r\n            this.lastSuccessfulFD3HeartBeat = tsNow;\r\n        } else if (source === 'http') {\r\n            //Sanity Check\r\n            if (!Array.isArray(postData.players)) {\r\n                if (GlobalData.verbose) logWarn('Received an invalid HeartBeat.');\r\n                return;\r\n            }\r\n\r\n            //Processing playerlist\r\n            const playerList = postData.players.map((player) => {\r\n                player.id = parseInt(player.id);\r\n                return player;\r\n            });\r\n            globals.playerController.processHeartBeat(playerList);\r\n\r\n            //Processing stats\r\n            if (\r\n                this.lastSuccessfulFD3HeartBeat\r\n                && tsNow - this.lastSuccessfulFD3HeartBeat > 15\r\n                && tsNow - this.lastSuccessfulHTTPHeartBeat < 5\r\n            ) {\r\n                globals.databus.txStatsData.monitorStats.heartBeatStats.fd3Failed++;\r\n            }\r\n            this.lastSuccessfulHTTPHeartBeat = tsNow;\r\n        }\r\n    }\r\n}; //Fim Monitor()\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/monitor/index.js?")},"./src/components/playerController/database.js":
/*!*****************************************************!*\
  !*** ./src/components/playerController/database.js ***!
  \*****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'Database';\r\nconst fs = (__webpack_require__(/*! fs */ \"fs\").promises);\r\nconst low = __webpack_require__(/*! lowdb */ \"./node_modules/lowdb/lib/main.js\");\r\nconst FileAsync = __webpack_require__(/*! lowdb/adapters/FileAsync */ \"./node_modules/lowdb/adapters/FileAsync.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\nconst idGen = __webpack_require__(/*! ./idGenerator.js */ \"./src/components/playerController/idGenerator.js\");\r\n\r\n\r\n//Consts\r\nconst BACKUP_INTERVAL = 300e3;\r\nconst SAVE_STANDBY = 0;\r\nconst SAVE_PRIORITY_LOW = 1;\r\nconst SAVE_PRIORITY_MEDIUM = 2;\r\nconst SAVE_PRIORITY_HIGH = 3;\r\nconst DATABASE_VERSION = 2;\r\nconst SAVE_TIMES = [300e3, 58e3, 28e3, 13e3];\r\n// considering a 2 sec skew for the setInterval\r\n// saving every 5 minutes even if nothing changed\r\n\r\n//LowDB prod serializer\r\nconst ldbProdSerializer = {\r\n    defaultValue: {},\r\n    serialize: JSON.stringify,\r\n    deserialize: JSON.parse,\r\n};\r\nconst ldbSerializer = ( true) ? ldbProdSerializer : 0;\r\n\r\n\r\n/**\r\n * FIXME: Optimization:\r\n * https://www.npmjs.com/package/bfj\r\n * https://www.npmjs.com/package/JSONStream\r\n * https://www.npmjs.com/package/json-stream-stringify\r\n *\r\n * Test:\r\n * - write a players.json simulating 300k players array\r\n * - write a standalone code to load lowdb file, filter it once, then write it\r\n * - execute `/usr/bin/time -v node test.js`\r\n * - do that with variation of updated lowdb and then using a json stream\r\n */\r\nclass Database {\r\n    constructor(wipePendingWLOnStart) {\r\n        this.dbPath = `${globals.info.serverProfilePath}/data/playersDB.json`;\r\n        this.backupPath = `${globals.info.serverProfilePath}/data/playersDB.backup.json`;\r\n        this.writePending = SAVE_STANDBY;\r\n        this.lastWrite = 0;\r\n        this.obj = null;\r\n\r\n        //Start database instance\r\n        this.setupDatabase(wipePendingWLOnStart);\r\n\r\n        //Cron functions\r\n        setInterval(() => {\r\n            this.writeDatabase();\r\n        }, SAVE_TIMES[SAVE_PRIORITY_HIGH]);\r\n        setInterval(() => {\r\n            this.backupDatabase();\r\n        }, BACKUP_INTERVAL);\r\n    }\r\n\r\n\r\n    /**\r\n     * Start lowdb instance and set defaults\r\n     */\r\n    async setupDatabase(wipePendingWLOnStart) {\r\n        //Tries to load the database\r\n        let dbo;\r\n        try {\r\n            const adapterAsync = new FileAsync(this.dbPath, ldbSerializer);\r\n            dbo = await low(adapterAsync);\r\n        } catch (errorMain) {\r\n            logError('Your txAdmin player/actions database could not be loaded.');\r\n            try {\r\n                await fs.copyFile(this.backupPath, this.dbPath);\r\n                const adapterAsync = new FileAsync(this.dbPath, ldbSerializer);\r\n                dbo = await low(adapterAsync);\r\n                logWarn('The database file was restored with the automatic backup file.');\r\n                logWarn('A five minute rollback is expected.');\r\n            } catch (errorBackup) {\r\n                logError('It was also not possible to load the automatic backup file.');\r\n                logError(`Main error: '${errorMain.message}'`);\r\n                logError(`Backup error: '${errorBackup.message}'`);\r\n                logError(`Database path: '${this.dbPath}'`);\r\n                logError('If there is a file in that location, you may try to delete or restore it manually.');\r\n                process.exit();\r\n            }\r\n        }\r\n\r\n        //Setting up loaded database\r\n        try {\r\n            await dbo.defaults({\r\n                version: DATABASE_VERSION,\r\n                players: [],\r\n                actions: [],\r\n                pendingWL: [],\r\n            }).write();\r\n\r\n            const importedVersion = await dbo.get('version').value();\r\n            if (importedVersion !== DATABASE_VERSION) {\r\n                this.obj = await this.migrateDB(dbo, importedVersion);\r\n            } else {\r\n                this.obj = dbo;\r\n            }\r\n\r\n            // await this.obj.set('players', []).write(); //Wipe players\r\n            if (wipePendingWLOnStart) await this.obj.set('pendingWL', []).write();\r\n            this.lastWrite = Date.now();\r\n        } catch (error) {\r\n            logError('Failed to setup database object.');\r\n            dir(error);\r\n            process.exit();\r\n        }\r\n    }\r\n\r\n\r\n    /**\r\n     * Handles the migration of the database\r\n     * @param {object} dbo\r\n     * @param {string} oldVersion\r\n     * @returns {object} lodash database\r\n     */\r\n    async migrateDB(dbo, currVersion) {\r\n        if (currVersion === DATABASE_VERSION) {\r\n            return dbo;\r\n        }\r\n        if (typeof currVersion !== 'number') {\r\n            logError('Your players database version is not a number!');\r\n            process.exit();\r\n        }\r\n        if (currVersion > DATABASE_VERSION) {\r\n            logError(`Your players database is on v${currVersion}, and this txAdmin supports up to v${DATABASE_VERSION}.`);\r\n            logError('This means you likely downgraded your txAdmin version. Please update txAdmin.');\r\n            process.exit(1);\r\n        }\r\n\r\n        //Migrate database\r\n        if (currVersion < 1) {\r\n            logWarn(`Migrating your players database from v${currVersion} to v1. Wiping all the data.`);\r\n            await dbo.set('version', 1)\r\n                .set('players', [])\r\n                .set('actions', [])\r\n                .set('pendingWL', [])\r\n                .write();\r\n            currVersion = 1;\r\n        }\r\n\r\n        if (currVersion == 1) {\r\n            logWarn('Migrating your players database from v1 to v2.');\r\n            logWarn('This process will change any duplicated action ID and wipe pending whitelist.');\r\n            const actionIDStore = new Set();\r\n            const actionsToFix = [];\r\n            await dbo.get('actions').forEach((a) => {\r\n                if (!actionIDStore.has(a.id)) {\r\n                    actionIDStore.add(a.id);\r\n                } else {\r\n                    actionsToFix.push(a);\r\n                }\r\n            }).value();\r\n            logWarn(`Actions to fix: ${actionsToFix.length}`);\r\n            for (let i = 0; i < actionsToFix.length; i++) {\r\n                const action = actionsToFix[i];\r\n                action.id = await idGen.genActionID(actionIDStore, action.type);\r\n                actionIDStore.add(action.id);\r\n            }\r\n            await dbo.set('version', 2)\r\n                .set('pendingWL', [])\r\n                .write();\r\n            currVersion = 2;\r\n        }\r\n\r\n        if (currVersion !== DATABASE_VERSION) {\r\n            logError(`Your players database is on v${currVersion}, which is different from this version of txAdmin (v${DATABASE_VERSION}).`);\r\n            logError('Since there is currently no migration method ready for the migration, txAdmin will attempt to use it anyways.');\r\n            logError('Please make sure your txAdmin is on the most updated version!');\r\n            process.exit(1);\r\n        }\r\n        return dbo;\r\n    }\r\n\r\n\r\n    /**\r\n     * Creates a copy of the database file\r\n     */\r\n    async backupDatabase() {\r\n        try {\r\n            await fs.copyFile(this.dbPath, this.backupPath);\r\n            if (GlobalData.verbose) logOk('Database file backed up.');\r\n        } catch (error) {\r\n            logError(`Failed to backup database file '${this.dbPath}'`);\r\n            if (GlobalData.verbose) dir(error);\r\n        }\r\n    }\r\n\r\n\r\n    /**\r\n     * Set write pending flag\r\n     * @param {int} flag\r\n     */\r\n    writeFlag(flag = SAVE_PRIORITY_MEDIUM) {\r\n        if (![SAVE_PRIORITY_LOW, SAVE_PRIORITY_MEDIUM, SAVE_PRIORITY_HIGH].includes(flag)) {\r\n            throw new Error('unknown priority flag!');\r\n        }\r\n        if (flag > this.writePending) {\r\n            if (GlobalData.verbose) log(`writeFlag > ${['no', 'low', 'med', 'high'][flag]}`);\r\n            this.writePending = flag;\r\n        }\r\n    }\r\n\r\n\r\n    /**\r\n     * Writes the database to the disk, taking in consideration the priority flag\r\n     */\r\n    async writeDatabase() {\r\n        //Check if the database is ready\r\n        if (this.obj === null) return;\r\n\r\n        const timeStart = Date.now();\r\n        const sinceLastWrite = timeStart - this.lastWrite;\r\n\r\n        if (this.writePending === SAVE_PRIORITY_HIGH || sinceLastWrite > SAVE_TIMES[this.writePending]) {\r\n            try {\r\n                await this.obj.write();\r\n                const timeElapsed = Date.now() - timeStart;\r\n                this.writePending = SAVE_STANDBY;\r\n                this.lastWrite = timeStart;\r\n                if (GlobalData.verbose) logOk(`DB file saved, took ${timeElapsed}ms.`);\r\n            } catch (error) {\r\n                logError(`Failed to save players database with error: ${error.message}`);\r\n                if (GlobalData.verbose) dir(error);\r\n            }\r\n        } else {\r\n            if (GlobalData.verbose) logOk('Skipping DB file save.');\r\n        }\r\n    }\r\n} //Fim Database()\r\n\r\n\r\nmodule.exports = {\r\n    SAVE_PRIORITY_LOW,\r\n    SAVE_PRIORITY_MEDIUM,\r\n    SAVE_PRIORITY_HIGH,\r\n    Database,\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/playerController/database.js?")},"./src/components/playerController/idGenerator.js":
/*!********************************************************!*\
  !*** ./src/components/playerController/idGenerator.js ***!
  \********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'IDGen';\r\nconst fs = (__webpack_require__(/*! fs */ \"fs\").promises);\r\nconst humanizeDuration = __webpack_require__(/*! humanize-duration */ \"./node_modules/humanize-duration/humanize-duration.js\");\r\nconst nanoidSecure = __webpack_require__(/*! nanoid */ \"./node_modules/nanoid/index.cjs\");\r\nconst nanoidNonSecure = __webpack_require__(/*! nanoid/non-secure */ \"./node_modules/nanoid/non-secure/index.cjs\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n//Consts\r\nconst maxAttempts = 10;\r\nconst noIdErrorMessage = 'Unnable to generate new Random ID possibly due to the decreased available entropy. Please send a screenshot of the detailed information in the terminal for the txAdmin devs.';\r\n\r\n\r\n/**\r\n * Prints a diagnostics message to the console that should help us identify what is the problem and the potential solution\r\n */\r\nconst printDiagnostics = async () => {\r\n    const humanizeOptions = {\r\n        round: true,\r\n        units: ['d', 'h', 'm'],\r\n    };\r\n    let uptime;\r\n    let entropy;\r\n    try {\r\n        uptime = humanizeDuration(process.uptime() * 1000, humanizeOptions);\r\n        entropy = (await fs.readFile('/proc/sys/kernel/random/entropy_avail', 'utf8')).trim();\r\n    } catch (error) {\r\n        entropy = error.message;\r\n    }\r\n\r\n    const secureStorage = new Set();\r\n    for (let i = 0; i < 100; i++) {\r\n        const randID = nanoidSecure.customAlphabet(GlobalData.noLookAlikesAlphabet, 4)();\r\n        if (!secureStorage.has(randID)) secureStorage.add(randID);\r\n    }\r\n\r\n    const nonsecureStorage = new Set();\r\n    for (let i = 0; i < 100; i++) {\r\n        const randID = nanoidNonSecure.customAlphabet(GlobalData.noLookAlikesAlphabet, 4)();\r\n        if (!nonsecureStorage.has(randID)) nonsecureStorage.add(randID);\r\n    }\r\n\r\n    logError(noIdErrorMessage);\r\n    logError(`Uptime: ${uptime}`);\r\n    logError(`Entropy: ${entropy}`);\r\n    logError(`Distro: ${GlobalData.osDistro}`);\r\n    logError(`OS Type: ${GlobalData.osType}`);\r\n    logError(`txAdmin: ${GlobalData.txAdminVersion}`);\r\n    logError(`FXServer: ${GlobalData.fxServerVersion}`);\r\n    logError(`ZAP: ${GlobalData.isZapHosting}`);\r\n    logError(`Unique Test: secure ${secureStorage.size}/100, non-secure ${nonsecureStorage.size}/100`);\r\n};\r\n\r\n/**\r\n * Check in a storage weather the ID is unique or not.\r\n * @param {Set|Object} storage the Set or lowdb instance\r\n * @param {String} id\r\n * @param {String} lowdbTable\r\n * @returns {Boolean} if is unique\r\n */\r\nconst checkUniqueness = async (storage, id, lowdbTable) => {\r\n    if (storage instanceof Set) {\r\n        return !storage.has(id);\r\n    } else {\r\n        return !storage.get(lowdbTable).find({ id }).value();\r\n    }\r\n};\r\n\r\n/**\r\n * Generates an unique whitelist ID, or throws an error\r\n * @param {Set|Object} storage set or lowdb instance\r\n * @returns {String} id\r\n */\r\nmodule.exports.genWhitelistID = async (storage) => {\r\n    let attempts = 0;\r\n    while (attempts < maxAttempts) {\r\n        attempts++;\r\n        if (attempts > 5) globals.databus.txStatsData.randIDFailures++;\r\n        const randFunc = (attempts <= 5) ? nanoidSecure : nanoidNonSecure;\r\n        const id = 'R' + randFunc.customAlphabet(GlobalData.noLookAlikesAlphabet, 4)();\r\n        if (await checkUniqueness(storage, id, 'pendingWL')) {\r\n            return id;\r\n        }\r\n    }\r\n\r\n    await printDiagnostics();\r\n    throw new Error(noIdErrorMessage);\r\n};\r\n\r\n/**\r\n * Generates an unique action ID, or throws an error\r\n * @param {Set|Object} storage set or lowdb instance\r\n * @param {String} actionType [warn, ban, whitelist]\r\n * @returns {String} id\r\n */\r\nmodule.exports.genActionID = async (storage, actionType) => {\r\n    const actionPrefix = ((actionType == 'warn') ? 'a' : actionType[0]).toUpperCase();\r\n    let attempts = 0;\r\n    while (attempts < maxAttempts) {\r\n        attempts++;\r\n        if (attempts > 5) globals.databus.txStatsData.randIDFailures++;\r\n        const randFunc = (attempts <= 5) ? nanoidSecure : nanoidNonSecure;\r\n        const id = actionPrefix\r\n            + randFunc.customAlphabet(GlobalData.noLookAlikesAlphabet, 3)()\r\n            + '-'\r\n            + randFunc.customAlphabet(GlobalData.noLookAlikesAlphabet, 4)();\r\n        if (await checkUniqueness(storage, id, 'actions')) {\r\n            return id;\r\n        }\r\n    }\r\n\r\n    await printDiagnostics();\r\n    throw new Error(noIdErrorMessage);\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/playerController/idGenerator.js?")},"./src/components/playerController/index.js":
/*!**************************************************!*\
  !*** ./src/components/playerController/index.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'PlayerController';\r\nconst humanizeDuration = __webpack_require__(/*! humanize-duration */ \"./node_modules/humanize-duration/humanize-duration.js\"); //FIXME: remove, this controller is not the right place for interface stuff\r\nconst xss = __webpack_require__(/*! ../../extras/xss */ \"./src/extras/xss.js\")(); //FIXME: same as above\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n// eslint-disable-next-line no-unused-vars\r\nconst { SAVE_PRIORITY_LOW, SAVE_PRIORITY_MEDIUM, SAVE_PRIORITY_HIGH, Database } = __webpack_require__(/*! ./database.js */ \"./src/components/playerController/database.js\");\r\nconst idGen = __webpack_require__(/*! ./idGenerator.js */ \"./src/components/playerController/idGenerator.js\");\r\n\r\n\r\n//Helpers\r\nconst now = () => { return Math.round(Date.now() / 1000); };\r\n\r\n//Consts\r\nconst validActions = ['ban', 'warn', 'whitelist'];\r\n\r\n\r\n/*\r\n    TODO:\r\n    Move the following to another file:\r\n    - getRegisteredActions\r\n    - registerAction\r\n    - revokeAction\r\n    - approveWhitelist\r\n    - checkPlayerJoin\r\n*/\r\n\r\n/**\r\n * Provide a central database for players, as well as assist with access control.\r\n *\r\n * FIXME: separate the player calls to another file somehow\r\n *\r\n * Database Structurure:\r\n *  - `players` table: index by license ID\r\n *      - license\r\n *      - name (overwrite on every update)\r\n *      - tsLastConnection  - Timestamp of the last connection\r\n *      - playTime - Online time counter in minutes\r\n *      - notes {\r\n *          text: string de tamanho máximo a ser definido,\r\n *          lastAdmin: username,\r\n *          tsLastEdit: timestamp,\r\n *      }\r\n *  - `actions`\r\n *      - id [X???-????]\r\n *      - identifiers [array]\r\n *      - playerName (player name, or false to imply it was performed on the identifiers only)\r\n *      - type [ban|warn|whitelist]\r\n *      - author (the admin name)\r\n *      - reason\r\n *      - timestamp\r\n *      - revocation: {\r\n *          timestamp: null,\r\n *          author: null,\r\n *      }\r\n *  - `pendingWL`\r\n *      - id [R####]\r\n *      - license\r\n *      - name\r\n *      - tsLastAttempt\r\n */\r\nmodule.exports = class PlayerController {\r\n    constructor(config) {\r\n        this.config = config;\r\n        this.activePlayers = [];\r\n        this.db = new Database(config.wipePendingWLOnStart);\r\n\r\n        //Config check\r\n        if (this.config.minSessionTime < 1 || this.config.minSessionTime > 60) throw new Error('The playerController.minSessionTime setting must be between 1 and 60 minutes.');\r\n\r\n        //Running playerlist generator\r\n        if (false) {}\r\n\r\n        //Cron functions\r\n        setInterval(() => {\r\n            //Check if the database is ready\r\n            if (this.db.obj === null) {\r\n                if (GlobalData.verbose) logWarn('Database still not ready for processing.');\r\n                return;\r\n            }\r\n            this.processActive();\r\n        }, 15 * 1000);\r\n    }\r\n\r\n\r\n    /**\r\n     * Refresh PlayerController configurations\r\n     */\r\n    refreshConfig() {\r\n        this.config = globals.configVault.getScoped('playerController');\r\n        const cmd = 'txAdmin-checkPlayerJoin ' + (this.config.onJoinCheckBan || this.config.onJoinCheckWhitelist).toString();\r\n        try {\r\n            globals.fxRunner.srvCmd(cmd);\r\n        } catch (error) {\r\n            if (GlobalData.verbose) dir(error);\r\n        }\r\n    }\r\n\r\n\r\n    /**\r\n     * Returns the entire lowdb object. Please be careful with it :)\r\n     *\r\n     * TODO: perhaps add a .cloneDeep()? Mighe cause some performance issues tho\r\n     *\r\n     * @returns {object} lodash database\r\n     */\r\n    getDB() {\r\n        return this.db.obj;\r\n    }\r\n\r\n\r\n    /**\r\n     * Processes the active players for playtime/sessiontime and sets to the database\r\n     *\r\n     * TODO: If this function is called multiple times within the first 15 seconds of an sessionTime minute,\r\n     *          it will keep adding playTime\r\n     *       Solution: keep an property for tsLastTimeIncremment, and wait for it to be >=60 before playtime++ and reset the ts\r\n     * NOTE: I'm only saving notes every  15 seconds or when the player disconnects.\r\n     */\r\n    async processActive() {\r\n        const checkMinuteElapsed = (time) => {\r\n            return time > 15 && time % 60 < 15;\r\n        };\r\n\r\n        try {\r\n            this.activePlayers.forEach(async (p) => {\r\n                const sessionTime = now() - p.tsConnected;\r\n\r\n                //If its time to add this player to the database\r\n                if (p.isTmp && sessionTime >= this.config.minSessionTime) {\r\n                    if (p.license == '3333333333333333333333deadbeef0000nosave') return; //DEBUG\r\n\r\n                    this.db.writeFlag(SAVE_PRIORITY_LOW);\r\n                    p.isTmp = false;\r\n                    p.playTime = Math.round(sessionTime / 60);\r\n                    p.notes = {\r\n                        text: '',\r\n                        lastAdmin: null,\r\n                        tsLastEdit: null,\r\n                    };\r\n                    const toDB = {\r\n                        license: p.license,\r\n                        name: p.name,\r\n                        playTime: p.playTime,\r\n                        tsJoined: p.tsJoined,\r\n                        tsLastConnection: p.tsConnected,\r\n                        notes: p.notes,\r\n                    };\r\n                    await this.db.obj.get('players')\r\n                        .push(toDB)\r\n                        .value();\r\n                    if (GlobalData.verbose) logOk(`Adding '${p.name}' to players database.`);\r\n\r\n                //If it's time to update this player's play time\r\n                } else if (!p.isTmp && checkMinuteElapsed(sessionTime)) {\r\n                    this.db.writeFlag(SAVE_PRIORITY_LOW);\r\n                    p.playTime += 1;\r\n                    await this.db.obj.get('players')\r\n                        .find({ license: p.license })\r\n                        .assign({\r\n                            name: p.name,\r\n                            playTime: p.playTime,\r\n                            notes: p.notes,\r\n                            tsLastConnection: p.tsConnected,\r\n                        })\r\n                        .value();\r\n                    // logOk(`Updating '${p.name}' in players database.`); //DEBUG\r\n                }\r\n            });\r\n        } catch (error) {\r\n            logError(`Failed to process active players array with error: ${error.message}`);\r\n            if (GlobalData.verbose) dir(error);\r\n        }\r\n    }\r\n\r\n\r\n    /**\r\n     * Searches for a player in the database by the license or id\r\n     * @param {string} reference\r\n     * @returns {object|null|false} object if player is found, null if not found, false if error occurs\r\n     */\r\n    async getPlayer(reference) {\r\n        //Infering filter type\r\n        let filter;\r\n        if (/[0-9A-Fa-f]{40}/.test(reference)) {\r\n            filter = { license: reference };\r\n        } else if (/\\d{1,6}/.test(reference)) {\r\n            filter = { id: parseInt(reference, 10) };\r\n        } else {\r\n            throw new Error('Invalid reference type');\r\n        }\r\n\r\n        //Performing search\r\n        try {\r\n            const p = await this.db.obj.get('players').find(filter).cloneDeep().value();\r\n            return (typeof p === 'undefined') ? null : p;\r\n        } catch (error) {\r\n            if (GlobalData.verbose) logError(`Failed to search for a player in the database with error: ${error.message}`);\r\n            return false;\r\n        }\r\n    }\r\n\r\n\r\n    /**\r\n     * Searches for a registered action in the database by a list of identifiers and optional filters\r\n     * Usage example: getRegisteredActions(['license:xxx'], {type: 'ban', revocation.timestamp: null})\r\n     *\r\n     * NOTE: I haven't actually benchmarked to make sure passing the filter first increases the performance\r\n     *\r\n     * @param {array} idArray identifiers array\r\n     * @param {object} filter lodash-compatible filter object\r\n     * @returns {array|error} array of actions, or, throws on error\r\n     */\r\n    async getRegisteredActions(idArray, filter = {}) {\r\n        if (!Array.isArray(idArray)) throw new Error('Identifiers should be an array');\r\n        try {\r\n            return await this.db.obj.get('actions')\r\n                .filter(filter)\r\n                .filter((a) => idArray.some((fi) => a.identifiers.includes(fi)))\r\n                .cloneDeep()\r\n                .value();\r\n        } catch (error) {\r\n            const msg = `Failed to search for a registered action database with error: ${error.message}`;\r\n            if (GlobalData.verbose) logError(msg);\r\n            throw new Error(msg);\r\n        }\r\n    }\r\n\r\n\r\n    /**\r\n     * Processes an playerConnecting validation request\r\n     *\r\n     * TODO: improve ban message to be more verbose\r\n     *\r\n     * FIXME: this probably shouldn't be inside playerController\r\n     *\r\n     * @param {array} idArray identifiers array\r\n     * @param {string} name player name\r\n     * @returns {object} {allow: bool, reason: string}, or throws on error\r\n     */\r\n    async checkPlayerJoin(idArray, playerName) {\r\n        //Check if required\r\n        if (!this.config.onJoinCheckBan && !this.config.onJoinCheckWhitelist) {\r\n            return { allow: true, reason: 'checks disabled' };\r\n        }\r\n\r\n        //DEBUG: save join log\r\n        const toLog = {\r\n            ts: Date.now(),\r\n            playerName,\r\n            idArray,\r\n        };\r\n        globals.databus.joinCheckHistory.push(toLog);\r\n        if (globals.databus.joinCheckHistory.length > 25) globals.databus.joinCheckHistory.shift();\r\n\r\n        //Sanity checks\r\n        if (typeof playerName !== 'string') throw new Error('playerName should be an string.');\r\n        if (!Array.isArray(idArray)) throw new Error('Identifiers should be an array.');\r\n        idArray = idArray.filter((id) => {\r\n            return Object.values(GlobalData.validIdentifiers).some((vf) => vf.test(id));\r\n        });\r\n        if (idArray.length < 1) throw new Error('Identifiers array must contain at least 1 valid identifier.');\r\n\r\n        try {\r\n            //Prepare & query\r\n            const ts = now();\r\n            const filter = (x) => {\r\n                return (\r\n                    (x.type == 'ban' || x.type == 'whitelist')\r\n                    && (!x.expiration || x.expiration > ts)\r\n                    && (!x.revocation.timestamp)\r\n                );\r\n            };\r\n            const hist = await this.getRegisteredActions(idArray, filter);\r\n\r\n            //Check ban\r\n            if (this.config.onJoinCheckBan) {\r\n                const ban = hist.find((a) => a.type == 'ban');\r\n                if (ban) {\r\n                    let msg;\r\n                    const tOptions = {\r\n                        id: ban.id,\r\n                        reason: xss(ban.reason),\r\n                        author: xss(ban.author),\r\n                    };\r\n                    if (ban.expiration) {\r\n                        const humanizeOptions = {\r\n                            language: globals.translator.t('$meta.humanizer_language'),\r\n                            round: true,\r\n                            units: ['d', 'h'],\r\n                        };\r\n                        tOptions.expiration = humanizeDuration((ban.expiration - ts) * 1000, humanizeOptions);\r\n                        msg = globals.translator.t('ban_messages.reject_temporary', tOptions);\r\n                    } else {\r\n                        msg = globals.translator.t('ban_messages.reject_permanent', tOptions);\r\n                    }\r\n\r\n                    return { allow: false, reason: msg };\r\n                }\r\n            }\r\n\r\n            //Check whitelist\r\n            if (this.config.onJoinCheckWhitelist) {\r\n                const wl = hist.find((a) => a.type == 'whitelist');\r\n                if (!wl) {\r\n                    //Get license\r\n                    let license = idArray.find((id) => id.substring(0, 8) == 'license:');\r\n                    if (!license) return { allow: false, reason: 'the whitelist module requires a license identifier.' };\r\n                    license = license.substring(8);\r\n                    //Check for pending WL requests\r\n                    const pending = await this.db.obj.get('pendingWL').find({ license: license }).value();\r\n                    let whitelistID;\r\n                    if (pending) {\r\n                        pending.name = playerName;\r\n                        pending.tsLastAttempt = now();\r\n                        whitelistID = pending.id;\r\n                    } else {\r\n                        whitelistID = await idGen.genWhitelistID(this.db.obj);\r\n                        const toDB = {\r\n                            id: whitelistID,\r\n                            name: playerName,\r\n                            license: license,\r\n                            tsLastAttempt: now(),\r\n                        };\r\n                        await this.db.obj.get('pendingWL').push(toDB).value();\r\n                    }\r\n                    this.db.writeFlag(SAVE_PRIORITY_LOW);\r\n\r\n                    //Clean rejection message\r\n                    const xssRejectMessage = __webpack_require__(/*! ../../extras/xss */ \"./src/extras/xss.js\")({\r\n                        strong: [],\r\n                        id: [],\r\n                    });\r\n                    const reason = xssRejectMessage(this.config.whitelistRejectionMessage)\r\n                        .replace(/<\\/?strong>/g, '')\r\n                        .replace(/<id>/g, whitelistID);\r\n                    return { allow: false, reason };\r\n                }\r\n            }\r\n\r\n            return { allow: true, reason: null };\r\n        } catch (error) {\r\n            const msg = `Failed to check whitelist/blacklist: ${error.message}`;\r\n            logError(msg);\r\n            if (GlobalData.verbose) dir(error);\r\n            return { allow: false, reason: msg };\r\n        }\r\n    }\r\n\r\n\r\n    /**\r\n     * Registers an action (ban, warn, whitelist)\r\n     * @param {array|number} reference identifiers array or server id\r\n     * @param {string} type [ban|warn|whitelist]\r\n     * @param {string} author admin name\r\n     * @param {string} reason reason\r\n     * @param {number|false} expiration reason\r\n     * @param {string|false} playerName the name of the player (for UX purposes only)\r\n     * @returns {string} action ID, or throws if on error or ID not found\r\n     */\r\n    async registerAction(reference, type, author, reason = null, expiration = false, playerName = false) {\r\n        //Sanity check\r\n        const timestamp = now();\r\n        if (!validActions.includes(type)) throw new Error('Invalid action type.');\r\n        if (typeof author !== 'string' || !author.length) throw new Error('Invalid author.');\r\n        if (reason !== null && (typeof reason !== 'string' || !reason.length)) throw new Error('Invalid reason.');\r\n        if (expiration !== false && (typeof expiration !== 'number')) throw new Error('Invalid expiration.');\r\n        if (playerName !== false && (typeof playerName !== 'string' || !playerName.length)) throw new Error('Invalid playerName.');\r\n\r\n        //Processes target reference\r\n        let identifiers;\r\n        if (Array.isArray(reference)) {\r\n            if (!reference.length) throw new Error('You must send at least one identifier');\r\n            const invalids = reference.filter((id) => {\r\n                return (typeof id !== 'string') || !Object.values(GlobalData.validIdentifiers).some((vf) => vf.test(id));\r\n            });\r\n            if (invalids.length) {\r\n                throw new Error('Invalid identifiers: ' + invalids.join(', '));\r\n            } else {\r\n                identifiers = reference;\r\n            }\r\n        } else if (typeof reference == 'number') {\r\n            const player = this.activePlayers.find((p) => p.id === reference);\r\n            if (!player) throw new Error('Player disconnected.');\r\n            if (!player.identifiers.length) throw new Error('Player has no identifiers.'); //sanity check\r\n            identifiers = player.identifiers;\r\n            playerName = player.name;\r\n        } else {\r\n            throw new Error(`Reference expected to be an array of strings or ID int. Received '${typeof target}'.`);\r\n        }\r\n\r\n        //Saves it to the database\r\n        try {\r\n            const actionID = await idGen.genActionID(this.db.obj, type);\r\n            const toDB = {\r\n                id: actionID,\r\n                type,\r\n                author,\r\n                reason,\r\n                expiration,\r\n                timestamp,\r\n                playerName,\r\n                identifiers,\r\n                revocation: {\r\n                    timestamp: null,\r\n                    author: null,\r\n                },\r\n            };\r\n            await this.db.obj.get('actions')\r\n                .push(toDB)\r\n                .value();\r\n            this.db.writeFlag(SAVE_PRIORITY_HIGH);\r\n            return actionID;\r\n        } catch (error) {\r\n            let msg = `Failed to register event to database with message: ${error.message}`;\r\n            logError(msg);\r\n            if (GlobalData.verbose) dir(error);\r\n            throw new Error(msg);\r\n        }\r\n    }\r\n\r\n\r\n    /**\r\n     * Revoke an action (ban, warn, whitelist)\r\n     * @param {string} action_id action id\r\n     * @param {string} author admin name\r\n     * @param {array} allowedTypes array containing the types of actions this admin can revoke\r\n     * @returns {string} null, error message string, or throws if something goes wrong\r\n     */\r\n    async revokeAction(action_id, author, allowedTypes = true) {\r\n        if (typeof action_id !== 'string' || !action_id.length) throw new Error('Invalid action_id.');\r\n        if (typeof author !== 'string' || !author.length) throw new Error('Invalid author.');\r\n        if (allowedTypes !== true && !Array.isArray(allowedTypes)) throw new Error('Invalid allowedTypes.');\r\n        try {\r\n            const action = await this.db.obj.get('actions')\r\n                .find({ id: action_id })\r\n                .value();\r\n            if (action) {\r\n                if (allowedTypes !== true && !allowedTypes.includes(action.type)) {\r\n                    return 'you do not have permission to revoke this action';\r\n                }\r\n                action.revocation = {\r\n                    timestamp: now(),\r\n                    author,\r\n                };\r\n                this.db.writeFlag(SAVE_PRIORITY_HIGH);\r\n                return null;\r\n            } else {\r\n                return 'action not found';\r\n            }\r\n        } catch (error) {\r\n            const msg = `Failed to revoke action with message: ${error.message}`;\r\n            logError(msg);\r\n            if (GlobalData.verbose) dir(error);\r\n            throw new Error(msg);\r\n        }\r\n    }\r\n\r\n\r\n    /**\r\n     * Whitelists a player from it's license or wl pending id\r\n     *\r\n     * NOTE: I'm only getting the first matched pending, but removing all matching\r\n     * NOTE: maybe I should add a trycatch inside here\r\n     *\r\n     * @param {string} reference \"license:\" prefixed license or pending id\r\n     * @param {string} author admin name\r\n     * @returns {string} action ID, or throws if ID not found or error\r\n     */\r\n    async approveWhitelist(reference, author) {\r\n        //Sanity check & validation\r\n        if (typeof reference !== 'string' || typeof author !== 'string') {\r\n            throw new Error('Reference and Author should be strings');\r\n        }\r\n\r\n        //Localizing pending request\r\n        let pendingFilter;\r\n        let saveReference;\r\n        let playerName = false;\r\n        if (/[0-9A-Fa-f]{40}/.test(reference)) {\r\n            pendingFilter = { license: reference };\r\n            saveReference = [`license:${reference}`];\r\n            const pending = await this.db.obj.get('pendingWL').find(pendingFilter).value();\r\n            if (pending) playerName = pending.name;\r\n        } else if (GlobalData.regexWhitelistReqID.test(reference)) {\r\n            pendingFilter = { id: reference };\r\n            const pending = await this.db.obj.get('pendingWL').find(pendingFilter).value();\r\n            if (!pending) throw new Error('Pending ID not found in database');\r\n            saveReference = [`license:${pending.license}`];\r\n            playerName = pending.name;\r\n        } else {\r\n            throw new Error('Invalid reference type');\r\n        }\r\n\r\n        //Register whitelist\r\n        const actionID = await this.registerAction(saveReference, 'whitelist', author, null, false, playerName);\r\n        if (!actionID) throw new Error('Failed to whitelist player');\r\n        this.db.writeFlag(SAVE_PRIORITY_HIGH);\r\n\r\n        //Remove from the pending list\r\n        if (playerName) {\r\n            await this.db.obj.get('pendingWL').remove(pendingFilter).value();\r\n        }\r\n\r\n        return actionID;\r\n    }\r\n\r\n\r\n    /**\r\n     * Saves a player notes and returns true/false\r\n     * Usage example: setPlayerNote('xxx', 'super awesome player', 'tabarra')\r\n     *\r\n     * NOTE: Setting writePending here won't do anything. Don't try it...\r\n     *\r\n     * @param {string} license\r\n     * @param {string} note\r\n     * @param {string} author\r\n     * @returns {boolean}\r\n     */\r\n    async setPlayerNote(license, note, author) {\r\n        try {\r\n            //Search player\r\n            let target;\r\n            let ap = this.activePlayers.find((p) => p.license === license);\r\n            if (ap) {\r\n                target = ap;\r\n            } else {\r\n                let dbp = await this.db.obj.get('players').find({ license: license }).value();\r\n                if (!dbp) return false;\r\n                target = dbp;\r\n            }\r\n\r\n            //Add note and set pending flag\r\n            target.notes = {\r\n                text: note,\r\n                lastAdmin: author,\r\n                tsLastEdit: now(),\r\n            };\r\n\r\n            return true;\r\n        } catch (error) {\r\n            if (GlobalData.verbose) logError(`Failed to search for a registered action database with error: ${error.message}`);\r\n            return false;\r\n        }\r\n    }\r\n\r\n\r\n    /**\r\n     * Cleans the database by removing every entry that matches the provided filter function.\r\n     *\r\n     * @param {String} table identifiers array\r\n     * @param {function} filter lodash-compatible filter function\r\n     * @returns {number|error} number of removed items\r\n     */\r\n    async cleanDatabase(tableName, filterFunc) {\r\n        if (tableName !== 'players' && tableName !== 'actions') throw new Error('Unknown tableName.');\r\n        if (typeof filterFunc !== 'function') throw new Error('filterFunc must be a function.');\r\n\r\n        try {\r\n            const removed = await this.db.obj.get(tableName)\r\n                .remove(filterFunc)\r\n                .value();\r\n            return removed.length;\r\n        } catch (error) {\r\n            const msg = `Failed to clean database with error: ${error.message}`;\r\n            if (GlobalData.verbose) logError(msg);\r\n            throw new Error(msg);\r\n        }\r\n    }\r\n\r\n\r\n    /**\r\n     * Returns a mostly /players.json compatible playerlist based on the activePlayers\r\n     *\r\n     * NOTE: ATM only used by the /status endpoint.\r\n     *       Let's try to use just clone(globals.playerController.activePlayers)\r\n     *\r\n     * @returns {array} array of player objects\r\n     */\r\n    getPlayerList() {\r\n        try {\r\n            return this.activePlayers.map((p) => {\r\n                return {\r\n                    license: p.license,\r\n                    id: p.id,\r\n                    name: p.name,\r\n                    ping: p.ping,\r\n                    identifiers: p.identifiers,\r\n                };\r\n            });\r\n        } catch (error) {\r\n            if (GlobalData.verbose) logError(`Failed to generate playerlist with error: ${error.message}`);\r\n            return false;\r\n        }\r\n    }\r\n\r\n\r\n    /**\r\n     * Processes the monitor heartbeat to update internal active playerlist.\r\n     * Macro view of this function:\r\n     *  -For all removed players = remove from this.activePlayers\r\n     *  -For all new players:\r\n     *      - search for them in the db\r\n     *      - add them to the active players containing:\r\n     *          - some prop to indicate if it's present in the database\r\n     *          - tsConnected\r\n     *\r\n     * NOTE:  This code was written this way to improve performance in exchange of readability\r\n     *           the ES6 gods might not like this..\r\n     * TODO: To prevent retaliation from the gods, consider making the activePlayers a Map instead of an Array.\r\n     *\r\n     * FIXME: I'm guaranteeing there are not two players with the same License, but not ID.\r\n     *\r\n     * NOTE: currently being called every 3 seconds\r\n     *\r\n     * @param {array} players\r\n     */\r\n    async processHeartBeat(players) {\r\n        //DEBUG: in case the player generator is enabled\r\n        if (this.playerlistGenerator) players = this.playerlistGenerator.playerlist;\r\n\r\n        try {\r\n            //Sanity check\r\n            if (!Array.isArray(players)) throw new Error('expected array');\r\n\r\n            //Validate & filter players then extract ids and license\r\n            const hbPlayers = new Map();\r\n            let invalids = 0;\r\n            let duplicated = 0;\r\n            for (let i = 0; i < players.length; i++) {\r\n                const p = Object.assign({}, players[i]);\r\n\r\n                //Basic struct\r\n                if (\r\n                    typeof p !== 'object'\r\n                    || typeof p.name !== 'string'\r\n                    || typeof p.id !== 'number'\r\n                    || typeof p.license !== 'undefined'\r\n                    || !Array.isArray(p.identifiers)\r\n                    || !p.identifiers.length\r\n                ) {\r\n                    invalids++;\r\n                    continue;\r\n                }\r\n\r\n                //Extract license\r\n                for (let j = 0; j < p.identifiers.length; j++) {\r\n                    if (p.identifiers[j].length == 48 && p.identifiers[j].substring(0, 8) == 'license:') {\r\n                        p.license = p.identifiers[j].substring(8);\r\n                        break;\r\n                    }\r\n                }\r\n\r\n                //Check if license id exist and is not duplicated\r\n                if (typeof p.license !== 'string') {\r\n                    invalids++;\r\n                    continue;\r\n                }\r\n                if (hbPlayers.has(p.license)) {\r\n                    duplicated++;\r\n                    continue;\r\n                }\r\n\r\n                //Add to licenses list\r\n                delete p.endpoint;\r\n                hbPlayers.set(p.license, p);\r\n            }\r\n            if (GlobalData.verbose && invalids) logWarn(`HeartBeat playerlist contained ${invalids} invalid players that were removed.`);\r\n            if (GlobalData.verbose && duplicated) logWarn(`HeartBeat playerlist contained ${duplicated} duplicated players that were removed.`);\r\n\r\n\r\n            //Processing active players list, creating the removed list, creating new active list without removed players\r\n            const disconnectedPlayers = [];\r\n            const activePlayerLicenses = []; //Optimization only\r\n            const newActivePlayers = [];\r\n            for (let i = 0; i < this.activePlayers.length; i++) {\r\n                const hbPlayerData = hbPlayers.get(this.activePlayers[i].license);\r\n                if (hbPlayerData) {\r\n                    const updatedPlayer = Object.assign(\r\n                        this.activePlayers[i],\r\n                        {\r\n                            id: hbPlayerData.id, //NOTE: possibly the solution to the double player issue?\r\n                            ping: hbPlayerData.ping,\r\n                            // extraData: hbPlayerData.extraData //NOTE: reserve for RolePlay data from frameworks\r\n                        },\r\n                    );\r\n                    newActivePlayers.push(updatedPlayer);\r\n                    activePlayerLicenses.push(this.activePlayers[i].license);\r\n                } else {\r\n                    disconnectedPlayers.push(this.activePlayers[i]);\r\n                }\r\n            }\r\n\r\n            //Processing the new players\r\n            for (const [license, player] of hbPlayers) {\r\n                //Make sure we are not adding the same user twice\r\n                if (!activePlayerLicenses.includes(player.license)) {\r\n                    //Filter to only valid identifiers\r\n                    player.identifiers = player.identifiers.filter((id) => {\r\n                        return Object.values(GlobalData.validIdentifiers).some((vf) => vf.test(id));\r\n                    });\r\n                    //Check if he is already on the database\r\n                    const dbPlayer = await this.getPlayer(license);\r\n                    if (dbPlayer) {\r\n                        //TODO: create a AllAssocIds for the players, containing all intersecting identifiers\r\n                        const newPlayer = Object.assign({}, player, {\r\n                            tsJoined: dbPlayer.tsJoined,\r\n                            playTime: dbPlayer.playTime,\r\n                            tsConnected: now(),\r\n                            isTmp: false,\r\n                            notes: dbPlayer.notes,\r\n                        });\r\n                        newActivePlayers.push(newPlayer);\r\n                    } else {\r\n                        const tsNow = now(); //FIXME: pra fora do loop?\r\n                        player.tsJoined = tsNow;\r\n                        player.tsConnected = tsNow;\r\n                        player.isTmp = true;\r\n                        newActivePlayers.push(player);\r\n                    }\r\n                }\r\n            }\r\n\r\n            //Committing disconnected players data\r\n            //NOTE: I'm only assigning the notes because that's currently the only thing that can change between saves.\r\n            if (disconnectedPlayers.length) this.db.writeFlag(SAVE_PRIORITY_LOW);\r\n            disconnectedPlayers.forEach(async (p) => {\r\n                try {\r\n                    //p.sessions.push({ts: now(), time: p.playTime})\r\n                    // some code here to save the p.playTime\r\n                    await this.db.obj.get('players')\r\n                        .find({ license: p.license })\r\n                        .assign({\r\n                            notes: p.notes,\r\n                        })\r\n                        .value();\r\n                } catch (error) {\r\n                    logError(`Failed to save the the following disconnected player to the database with error: ${error.message}`);\r\n                    dir(p);\r\n                }\r\n            });\r\n\r\n            //Replacing the active playerlist\r\n            this.activePlayers = newActivePlayers;\r\n        } catch (error) {\r\n            if (GlobalData.verbose) {\r\n                logError(`PlayerController failed to process HeartBeat with error: ${error.message}`);\r\n                dir(error);\r\n            }\r\n        }\r\n    }//Fim processHeartBeat()\r\n}; //Fim PlayerController()\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/playerController/index.js?")},"./src/components/statsCollector/index.js":
/*!************************************************!*\
  !*** ./src/components/statsCollector/index.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'StatsCollector';\r\nconst fs = __webpack_require__(/*! fs-extra */ \"./node_modules/fs-extra/lib/index.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\nconst got = __webpack_require__(/*! ../../extras/got */ \"./src/extras/got.js\");\r\nconst { parsePerf, diffPerfs, validatePerfThreadData, validatePerfCacheData } = __webpack_require__(/*! ./statsUtils.js */ \"./src/components/statsCollector/statsUtils.js\");\r\n// const TimeSeries = require('./timeSeries'); //NOTE: may still use for the player counter\r\n\r\n//Helper functions\r\nconst getEpoch = (mod, ts = false) => {\r\n    const time = ts ? new Date(ts) : new Date();\r\n    const minutes = Math.floor(time.getMinutes() / mod) * mod;\r\n    return String(time.getHours()).padStart(2, '0') + String(minutes).padStart(2, '0');\r\n};\r\n\r\n\r\nmodule.exports = class StatsCollector {\r\n    constructor() {\r\n        // this.playersTimeSeries = new TimeSeries(`${globals.info.serverProfilePath}/data/players.json`, 10, 60*60*24);\r\n        this.hardConfigs = {\r\n            heatmapDataFile: `${globals.info.serverProfilePath}/data/stats_heatmapData_v1.json`,\r\n            playerCountFile: `${globals.info.serverProfilePath}/data/stats_playerCount_v1.json`,\r\n            performance: {\r\n                resolution: 5,\r\n                // lenthCap: 288, //5*288 = 1440 = 1 day\r\n                lenthCap: 360, //5*360 = 30 hours\r\n            },\r\n        };\r\n        // this.playersBuffer = [];\r\n        // this.playersSeries = [];\r\n        this.perfSeries = null;\r\n        this.loadPerformanceHistory();\r\n\r\n        //Cron functions\r\n        setInterval(async () => {\r\n            try {\r\n                await this.collectPerformance();\r\n            } catch (error) {\r\n                if (GlobalData.verbose) {\r\n                    logError('Error while collecting fxserver performance data');\r\n                    dir(error);\r\n                }\r\n            }\r\n        }, 60 * 1000);\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Loads the database/cache/history for the performance heatmap\r\n     */\r\n    async loadPerformanceHistory() {\r\n        let rawFile = null;\r\n        try {\r\n            rawFile = await fs.readFile(this.hardConfigs.heatmapDataFile, 'utf8');\r\n        } catch (error) {}\r\n\r\n        const setFile = async () => {\r\n            try {\r\n                await fs.writeFile(this.hardConfigs.heatmapDataFile, '[]');\r\n                this.perfSeries = [];\r\n            } catch (error) {\r\n                logError(`Unable to create stats_heatmapData_v1 with error: ${error.message}`);\r\n                process.exit();\r\n            }\r\n        };\r\n\r\n        if (rawFile !== null) {\r\n            try {\r\n                const heatmapData = JSON.parse(rawFile);\r\n                if (!Array.isArray(heatmapData)) throw new Error('data is not an array');\r\n                if (!validatePerfCacheData(heatmapData)) throw new Error('invalid data in cache');\r\n                this.perfSeries = heatmapData;\r\n            } catch (error) {\r\n                logError(`Failed to load stats_heatmapData_v1 with message: ${error.message}`);\r\n                logError('Since this is not a critical file, it will be reset.');\r\n                await setFile();\r\n            }\r\n        } else {\r\n            await setFile();\r\n        }\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * TODO:\r\n     * Cron function to collect the player count from fxserver.\r\n     * The objective is to collect 1 week of data with 1 minute resolution.\r\n     */\r\n    collectPlayers() {\r\n        return 'not implemented yet';\r\n\r\n        // check if server is offline\r\n        // const epoch = getEpoch(1);\r\n        // const lastReg = this.playersSeries.length ? this.playersSeries[this.playersSeries.length-1] : false;\r\n        // if(lastReg && lastReg.epoch !== epoch){\r\n        //     this.playersSeries = this.playersSeries.map(e => {\r\n\r\n        //     })\r\n        // }\r\n        // const playerlist = globals.playerController.getPlayerList();\r\n        // this.playersTimeSeries.add(playerlist.length);\r\n        // dir(playerlist.length)\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Cron function to collect the performance data from fxserver.\r\n     * This function will also collect player count and process the perf history.\r\n     *\r\n     * NOTE:\r\n     * a cada 1 minuto coleta:\r\n     *     - se o último epoch = epoch atual, ignora\r\n     *     - coleta perf\r\n     *     - coleta players count\r\n     *\r\n     * dessa forma:\r\n     *     - em vai ter 5 chances de se coletar cada epoch\r\n     *     - normalmente o timestamp do coletado vai ser com o epoch correto\r\n     *     - não estamos fazendo média de players\r\n     */\r\n    async collectPerformance() {\r\n        //Check pre-condition\r\n        if (this.perfSeries === null) return;\r\n        if (globals.fxRunner.fxChild === null) return;\r\n\r\n        //Commom vars\r\n        const now = Date.now();\r\n        const cfg = this.hardConfigs.performance; //Shorthand only\r\n        const lastSnap = this.perfSeries.length ? this.perfSeries[this.perfSeries.length - 1] : false;\r\n\r\n        //Check skip rules\r\n        if (\r\n            lastSnap\r\n            && getEpoch(cfg.resolution, lastSnap.ts) == getEpoch(cfg.resolution)\r\n            && now - lastSnap.ts < cfg.resolution * 60 * 1000\r\n        ) {\r\n            if (GlobalData.verbose) log('Skipping perf collection due to resolution');\r\n            return;\r\n        }\r\n\r\n        //Get performance data\r\n        const sourceURL = (GlobalData.debugExternalSource) ? GlobalData.debugExternalSource : globals.fxRunner.fxServerHost;\r\n        const currPerfRaw = await got(`http://${sourceURL}/perf/`).text();\r\n        const currPerfData = parsePerf(currPerfRaw);\r\n        if (\r\n            !validatePerfThreadData(currPerfData.svSync)\r\n            || !validatePerfThreadData(currPerfData.svNetwork)\r\n            || !validatePerfThreadData(currPerfData.svMain)\r\n        ) {\r\n            throw new Error('invalid or incomplete /perf/ response');\r\n        }\r\n\r\n        //Process performance data\r\n        const islinear = (\r\n            lastSnap\r\n            && now - lastSnap.ts <= cfg.resolution * 60 * 1000 * 4 //resolution time in ms * 4 -- just in case there is some lag\r\n            && lastSnap.mainTickCounter < currPerfData.svMain.count\r\n        );\r\n        const currPerfDiff = diffPerfs(currPerfData, (islinear) ? lastSnap.perfSrc : false);\r\n        Object.keys(currPerfDiff).forEach((thread) => {\r\n            const bucketsFrequencies = [];\r\n            currPerfDiff[thread].buckets.forEach((b, bIndex) => {\r\n                const prevBucket = (bIndex) ? currPerfDiff[thread].buckets[bIndex - 1] : 0;\r\n                const freq = (b - prevBucket) / currPerfDiff[thread].count;\r\n                bucketsFrequencies.push(freq);\r\n            });\r\n            currPerfDiff[thread].buckets = bucketsFrequencies;\r\n        });\r\n        const currSnapshot = {\r\n            ts: now,\r\n            skipped: !islinear,\r\n            mainTickCounter: currPerfData.svMain.count,\r\n            clients: globals.playerController.getPlayerList().length,\r\n            perfSrc: currPerfData,\r\n            perf: currPerfDiff,\r\n        };\r\n\r\n        //Push to cache and save it\r\n        this.perfSeries.push(currSnapshot);\r\n        try {\r\n            await fs.outputJSON(this.hardConfigs.heatmapDataFile, this.perfSeries);\r\n            if (GlobalData.verbose) {\r\n                logOk(`Collected performance snapshot #${this.perfSeries.length}`);\r\n            }\r\n        } catch (error) {\r\n            if (GlobalData.verbose) {\r\n                logWarn('Failed to write the performance history log file with error:');\r\n                dir(error);\r\n            }\r\n        }\r\n    }\r\n}; //Fim StatsCollector()\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/statsCollector/index.js?")},"./src/components/statsCollector/statsUtils.js":
/*!*****************************************************!*\
  !*** ./src/components/statsCollector/statsUtils.js ***!
  \*****************************************************/module=>{eval("//Constants\r\nconst refBuckets = [0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10, '+Inf'];\r\nconst perfLineRegex = /tickTime_(count|sum|bucket)\\{name=\"(svSync|svNetwork|svMain)\"(,le=\"(\\d+(\\.\\d+)?|\\+Inf)\")?\\}\\s(\\S+)/;\r\n\r\n\r\n/**\r\n * Parses the FXServer /perf/ output in the proteus scrape text format\r\n * @param {string} raw\r\n */\r\nconst parsePerf = (raw) => {\r\n    if (typeof raw !== 'string') throw new Error('string expected');\r\n\r\n    //Vars\r\n    const lines = raw.trim().split('\\n');\r\n    const metrics = {\r\n        svSync: {\r\n            buckets: [],\r\n        },\r\n        svNetwork: {\r\n            buckets: [],\r\n        },\r\n        svMain: {\r\n            buckets: [],\r\n        },\r\n    };\r\n\r\n    //Parse lines\r\n    for (let i = 0; i < lines.length; i++) {\r\n        const parsed = lines[i].match(perfLineRegex);\r\n        if (parsed == null) continue;\r\n        const regType = parsed[1];\r\n        const thread = parsed[2];\r\n        const bucket = parsed[4];\r\n        const value = parsed[6];\r\n\r\n        if (regType == 'count') {\r\n            const count = parseInt(value);\r\n            if (!isNaN(count)) metrics[thread].count = count;\r\n        } else if (regType == 'sum') {\r\n            const sum = parseFloat(value);\r\n            if (!isNaN(sum)) metrics[thread].sum = sum;\r\n        } else if (regType == 'bucket') {\r\n            const bucketIndex = metrics[thread].buckets.length;\r\n            if (bucketIndex === 14 && bucket !== refBuckets[14]) {\r\n                throw new Error(`unexpected bucket ${refBuckets[14]} at index 14 and got ${bucket}`);\r\n            } else if (bucketIndex !== 14 && parseFloat(bucket) !== refBuckets[bucketIndex]) {\r\n                throw new Error(`unexpected bucket ${bucket} at position ${bucketIndex}`);\r\n            }\r\n            metrics[thread].buckets.push(parseInt(value));\r\n        }\r\n    }\r\n\r\n    //Check perf validity\r\n    const invalid = Object.values(metrics).some((thread) => {\r\n        return (\r\n            !Number.isInteger(thread.count)\r\n            || !Number.isFinite(thread.sum)\r\n            || thread.buckets.length !== refBuckets.length - 1\r\n        );\r\n    });\r\n    if (invalid.length) throw new Error(`there are ${invalid.length} invalid threads in /perf/ data`);\r\n\r\n    return metrics;\r\n};\r\n\r\n\r\n/**\r\n * Compares a perf snapshot with the one that came before\r\n * @param {object} newPerf\r\n * @param {object} oldPerf\r\n */\r\nconst diffPerfs = (newPerf, oldPerf = false) => {\r\n    if (oldPerf === false) {\r\n        const zeros = {\r\n            count: 0,\r\n            sum: 0,\r\n            buckets: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\r\n        };\r\n        oldPerf = {\r\n            svSync: zeros,\r\n            svNetwork: zeros,\r\n            svMain: zeros,\r\n        };\r\n    }\r\n    return {\r\n        svSync: {\r\n            count: newPerf.svSync.count - oldPerf.svSync.count,\r\n            sum: newPerf.svSync.sum - oldPerf.svSync.sum,\r\n            buckets: newPerf.svSync.buckets.map((bucket, i) => bucket - oldPerf.svSync.buckets[i]),\r\n        },\r\n        svNetwork: {\r\n            count: newPerf.svNetwork.count - oldPerf.svNetwork.count,\r\n            sum: newPerf.svNetwork.sum - oldPerf.svNetwork.sum,\r\n            buckets: newPerf.svNetwork.buckets.map((bucket, i) => bucket - oldPerf.svNetwork.buckets[i]),\r\n        },\r\n        svMain: {\r\n            count: newPerf.svMain.count - oldPerf.svMain.count,\r\n            sum: newPerf.svMain.sum - oldPerf.svMain.sum,\r\n            buckets: newPerf.svMain.buckets.map((bucket, i) => bucket - oldPerf.svMain.buckets[i]),\r\n        },\r\n    };\r\n};\r\n\r\n\r\n/**\r\n * Validates a perf thread object validity\r\n * @param {object} threadData\r\n */\r\nconst validatePerfThreadData = (threadData) => {\r\n    return (\r\n        threadData\r\n        && typeof threadData == 'object'\r\n        && typeof threadData.count == 'number'\r\n        && typeof threadData.sum == 'number'\r\n        && Array.isArray(threadData.buckets)\r\n        && threadData.buckets.length == 15\r\n        && threadData.buckets.every((b) => typeof b == 'number')\r\n    );\r\n};\r\n\r\n\r\n/**\r\n * Returns true if all data inside performance history file is valid\r\n * @param {array} perfCache\r\n */\r\nconst validatePerfCacheData = (perfCache) => {\r\n    return perfCache.every((s) => {\r\n        return (\r\n            typeof s.ts == 'number'\r\n            && typeof s.mainTickCounter == 'number'\r\n            && typeof s.clients == 'number'\r\n            && validatePerfThreadData(s.perfSrc.svSync)\r\n            && validatePerfThreadData(s.perfSrc.svNetwork)\r\n            && validatePerfThreadData(s.perfSrc.svMain)\r\n            && validatePerfThreadData(s.perf.svSync)\r\n            && validatePerfThreadData(s.perf.svNetwork)\r\n            && validatePerfThreadData(s.perf.svMain)\r\n        );\r\n    });\r\n};\r\n\r\n\r\nmodule.exports = {\r\n    refBuckets,\r\n    parsePerf,\r\n    diffPerfs,\r\n    validatePerfThreadData,\r\n    validatePerfCacheData,\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/statsCollector/statsUtils.js?")},"./src/components/translator.js":
/*!**************************************!*\
  !*** ./src/components/translator.js ***!
  \**************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('//Requires\r\nconst modulename = \'Translator\';\r\nconst fs = __webpack_require__(/*! fs */ "fs");\r\nconst path = __webpack_require__(/*! path */ "path");\r\nconst Polyglot = __webpack_require__(/*! node-polyglot */ "./node_modules/node-polyglot/index.js");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../extras/console */ "./src/extras/console.js")(modulename);\r\n\r\n//Statically requiring languages because of webpack\r\nconst languages = {\r\n    ar: __webpack_require__(/*! ../../locale/ar.json */ "./locale/ar.json"),\r\n    bs: __webpack_require__(/*! ../../locale/bs.json */ "./locale/bs.json"),\r\n    cs: __webpack_require__(/*! ../../locale/cs.json */ "./locale/cs.json"),\r\n    da: __webpack_require__(/*! ../../locale/da.json */ "./locale/da.json"),\r\n    de: __webpack_require__(/*! ../../locale/de.json */ "./locale/de.json"),\r\n    el: __webpack_require__(/*! ../../locale/el.json */ "./locale/el.json"),\r\n    en: __webpack_require__(/*! ../../locale/en.json */ "./locale/en.json"),\r\n    es: __webpack_require__(/*! ../../locale/es.json */ "./locale/es.json"),\r\n    et: __webpack_require__(/*! ../../locale/et.json */ "./locale/et.json"),\r\n    fa: __webpack_require__(/*! ../../locale/fa.json */ "./locale/fa.json"),\r\n    fi: __webpack_require__(/*! ../../locale/fi.json */ "./locale/fi.json"),\r\n    fr: __webpack_require__(/*! ../../locale/fr.json */ "./locale/fr.json"),\r\n    hu: __webpack_require__(/*! ../../locale/hu.json */ "./locale/hu.json"),\r\n    it: __webpack_require__(/*! ../../locale/it.json */ "./locale/it.json"),\r\n    lt: __webpack_require__(/*! ../../locale/lt.json */ "./locale/lt.json"),\r\n    lv: __webpack_require__(/*! ../../locale/lv.json */ "./locale/lv.json"),\r\n    nl: __webpack_require__(/*! ../../locale/nl.json */ "./locale/nl.json"),\r\n    no: __webpack_require__(/*! ../../locale/no.json */ "./locale/no.json"),\r\n    pl: __webpack_require__(/*! ../../locale/pl.json */ "./locale/pl.json"),\r\n    pt: __webpack_require__(/*! ../../locale/pt.json */ "./locale/pt.json"),\r\n    ro: __webpack_require__(/*! ../../locale/ro.json */ "./locale/ro.json"),\r\n    ru: __webpack_require__(/*! ../../locale/ru.json */ "./locale/ru.json"),\r\n    sl: __webpack_require__(/*! ../../locale/sl.json */ "./locale/sl.json"),\r\n    sv: __webpack_require__(/*! ../../locale/sv.json */ "./locale/sv.json"),\r\n    th: __webpack_require__(/*! ../../locale/th.json */ "./locale/th.json"),\r\n    tr: __webpack_require__(/*! ../../locale/tr.json */ "./locale/tr.json"),\r\n    zh: __webpack_require__(/*! ../../locale/zh.json */ "./locale/zh.json"),\r\n};\r\n\r\n/**\r\n * Small translation module built around Polyglot.js.\r\n * For the future, its probably a good idea to upgrade to i18next\r\n */\r\nmodule.exports = class Translator {\r\n    constructor() {\r\n        // logOk(\'Started\');\r\n        this.language = globals.config.language;\r\n        this.polyglot = null;\r\n        this.customLocalePath = path.join(GlobalData.dataPath, \'locale.json\');\r\n\r\n        //Load language\r\n        this.setupTranslator(true);\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Setup polyglot instance\r\n     */\r\n    setupTranslator(isFirstTime = false) {\r\n        try {\r\n            const phrases = this.getLanguagePhrases(this.language);\r\n            const polyglotOptions = {\r\n                allowMissing: false,\r\n                onMissingKey: (key) => {\r\n                    logError(`Missing key \'${key}\' from translation file.`, \'Translator\');\r\n                    return key;\r\n                },\r\n                phrases,\r\n            };\r\n            this.polyglot = new Polyglot(polyglotOptions);\r\n        } catch (error) {\r\n            logError(error.message);\r\n            if (isFirstTime) process.exit();\r\n        }\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Refresh translator configurations\r\n     */\r\n    refreshConfig() {\r\n        //Change config and restart polyglot\r\n        this.language = globals.config.language;\r\n        this.setupTranslator(false);\r\n\r\n        //Rebuild Monitor\'s schedule with new text and refreshes fxserver convars\r\n        try {\r\n            globals.monitor.buildSchedule();\r\n            globals.fxRunner.resetConvars();\r\n        } catch (error) {}\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Loads a language file or throws Error.\r\n     * @param {string} lang\r\n     */\r\n    getLanguagePhrases(lang) {\r\n        //If its a known language\r\n        if (typeof languages[lang] === \'object\') {\r\n            return languages[lang];\r\n\r\n        //If its a custom language\r\n        } else if (lang === \'custom\') {\r\n            try {\r\n                return JSON.parse(fs.readFileSync(\r\n                    this.customLocalePath,\r\n                    \'utf8\',\r\n                ));\r\n            } catch (error) {\r\n                throw new Error(`Failed to load \'${this.customLocalePath}\'. (${error.message})`);\r\n            }\r\n\r\n        //If its an invalid language\r\n        } else {\r\n            throw new Error(\'Language not found.\');\r\n        }\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Perform a translation (polyglot.t)\r\n     * @param {string} key\r\n     * @param {object} options\r\n     */\r\n    t(key, options) {\r\n        if (typeof options === \'undefined\') options = {};\r\n        try {\r\n            return this.polyglot.t(key, options);\r\n        } catch (error) {\r\n            logError(`Error performing a translation with key \'${key}\'`);\r\n            return key;\r\n        }\r\n    }\r\n}; //Fim Translator()\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/translator.js?')},"./src/components/webServer/ctxUtils.js":
/*!**********************************************!*\
  !*** ./src/components/webServer/ctxUtils.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebCtxUtils';\r\nconst fs = __webpack_require__(/*! fs-extra */ \"./node_modules/fs-extra/lib/index.js\");\r\nconst ejs = __webpack_require__(/*! ejs */ \"./node_modules/ejs/lib/ejs.js\");\r\nconst path = __webpack_require__(/*! path */ \"path\");\r\nconst chalk = __webpack_require__(/*! chalk */ \"./node_modules/chalk/source/index.js\");\r\nconst helpers = __webpack_require__(/*! ../../extras/helpers */ \"./src/extras/helpers.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n\r\n//Helper functions\r\nconst isUndefined = (x) => { return (typeof x === 'undefined'); };\r\nconst getRenderErrorText = (view, error, data) => {\r\n    logError(`Error rendering ${view}.`);\r\n    if (GlobalData.verbose) dir(error);\r\n    if (!isUndefined(data.discord) && !isUndefined(data.discord.token)) data.discord.token = '[redacted]';\r\n    let out = '<pre>\\n';\r\n    out += `Error rendering '${view}'.\\n`;\r\n    out += `Message: ${error.message}\\n`;\r\n    out += 'The data provided was:\\n';\r\n    out += '================\\n';\r\n    out += JSON.stringify(data, null, 2);\r\n    out += '</pre>\\n';\r\n    return out;\r\n};\r\nconst getWebViewPath = (view) => {\r\n    if (view.includes('..')) throw new Error('Path Traversal?');\r\n    return path.join(GlobalData.txAdminResourcePath, 'web', view + '.ejs');\r\n};\r\nconst getJavascriptConsts = (allConsts = []) => {\r\n    return Object.entries(allConsts)\r\n        .map(([name, val]) => `const ${name} = ${JSON.stringify(val)};`)\r\n        .join(' ');\r\n};\r\n\r\n//Consts\r\nconst templateCache = new Map();\r\nconst WEBPIPE_PATH = 'https://monitor/WebPipe/';\r\nconst RESOURCE_PATH = 'nui://monitor/web/public/';\r\nconst THEME_DARK = 'theme--dark';\r\nconst DEFAULT_AVATAR = 'img/default_avatar.png';\r\n\r\nfunction getEjsOptions(filePath) {\r\n    const webTemplateRoot = path.resolve(GlobalData.txAdminResourcePath, 'web')\r\n    const webCacheDir = path.resolve(GlobalData.txAdminResourcePath, 'web-cache', filePath)\r\n    return {\r\n        cache: true,\r\n        filename: webCacheDir,\r\n        root: webTemplateRoot,\r\n        views: [webTemplateRoot],\r\n        rmWhitespace: true,\r\n        async: true,\r\n    }\r\n}\r\n\r\n//================================================================\r\n\r\n/**\r\n * Loads re-usable base templates\r\n * @param {String} name\r\n * @returns {Promise<void>}\r\n */\r\nasync function loadWebTemplate(name) {\r\n    if (GlobalData.isDeveloperMode || !templateCache.has(name)) {\r\n        try {\r\n            const rawTemplate = await fs.readFile(getWebViewPath(name), 'utf-8');\r\n            const compiled = ejs.compile(rawTemplate, getEjsOptions(name + '.ejs'));\r\n            templateCache.set(name, compiled);\r\n        } catch (e) {\r\n            if (e.code == 'ENOENT') {\r\n                e = new Error(`The '${name}' template was not found:\\n` +\r\n                    `You probably deleted the 'citizen/system_resources/monitor/web/${name}.ejs' file, or the folders above it.`, undefined, e)\r\n            }\r\n            logError(e)\r\n        }\r\n    }\r\n\r\n    return templateCache.get(name);\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Renders normal views.\r\n * Footer and header are configured inside the view template itself.\r\n * @param {string} view\r\n * @param {string} data\r\n */\r\nasync function renderView(view, reqSess, data, txVars) {\r\n    data.headerTitle = (!isUndefined(data.headerTitle)) ? `${data.headerTitle} - txAdmin` : 'txAdmin';\r\n    data.adminIsMaster = (reqSess && reqSess.auth && reqSess.auth.username && reqSess.auth.master === true);\r\n    data.adminUsername = (reqSess && reqSess.auth && reqSess.auth.username) ? reqSess.auth.username : 'unknown user';\r\n    data.profilePicture = (reqSess && reqSess.auth && reqSess.auth.picture) ? reqSess.auth.picture : DEFAULT_AVATAR;\r\n    data.isTempPassword = (reqSess && reqSess.auth && reqSess.auth.isTempPassword);\r\n    data.isLinux = (GlobalData.osType == 'linux');\r\n    data.showAdvanced = (GlobalData.isDeveloperMode || GlobalData.verbose);\r\n    data.dynamicAd = txVars.isWebInterface && globals.dynamicAds.pick('main');\r\n\r\n    let out;\r\n    try {\r\n        out = await loadWebTemplate(view).then(template => template(data))\r\n    } catch (error) {\r\n        out = getRenderErrorText(view, error, data);\r\n    }\r\n\r\n    return out;\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Renders the login page.\r\n * @param {string} message\r\n */\r\nasync function renderLoginView(data, txVars) {\r\n    data.logoURL = GlobalData.loginPageLogo || 'img/txadmin.png';\r\n    data.isMatrix = (Math.random() <= 0.05);\r\n    data.ascii = helpers.txAdminASCII();\r\n    data.message = data.message || '';\r\n    data.errorTitle = data.errorTitle || 'Warning:';\r\n    data.errorMessage = data.errorMessage || '';\r\n    data.template = data.template || 'normal';\r\n    data.dynamicAd = txVars.isWebInterface && globals.dynamicAds.pick('login');\r\n\r\n    let out;\r\n    try {\r\n        out = await loadWebTemplate('standalone/login').then(template => template(data))\r\n    } catch (error) {\r\n        logError(error)\r\n        out = getRenderErrorText('Login', error, data);\r\n    }\r\n\r\n    return out;\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Logs a command to the console and the action logger\r\n * @param {object} ctx\r\n * @param {string} data\r\n */\r\nfunction logCommand(ctx, data) {\r\n    log(`${ctx.session.auth.username} executing: ` + chalk.inverse(' ' + data + ' '));\r\n    globals.logger.admin.write(`[${ctx.session.auth.username}] ${data}`);\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Logs an action to the console and the action logger\r\n * @param {object} ctx\r\n * @param {string} data\r\n */\r\nfunction logAction(ctx, data) {\r\n    const sess = ctx.nuiSession ?? ctx.session;\r\n    log(`[${sess.auth.username}] ${data}`);\r\n    globals.logger.admin.write(`[${sess.auth.username}] ${data}`);\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Check for a permission\r\n * @param {object} ctx\r\n * @param {string} perm\r\n * @param {string} fromCtx\r\n * @param {boolean} printWarn\r\n */\r\nfunction checkPermission(ctx, perm, fromCtx, printWarn = true) {\r\n    try {\r\n        const sess = ctx.nuiSession ?? ctx.session;\r\n\r\n        //For master permission\r\n        if (perm === 'master' && sess.auth.master !== true) {\r\n            if (GlobalData.verbose && printWarn) logWarn(`[${sess.auth.username}] Permission '${perm}' denied.`, fromCtx);\r\n            return false;\r\n        }\r\n\r\n        //For all other permissions\r\n        if (\r\n            sess.auth.master === true\r\n            || sess.auth.permissions.includes('all_permissions')\r\n            || sess.auth.permissions.includes(perm)\r\n        ) {\r\n            return true;\r\n        } else {\r\n            if (GlobalData.verbose && printWarn) logWarn(`[${sess.auth.username}] Permission '${perm}' denied.`, fromCtx);\r\n            return false;\r\n        }\r\n    } catch (error) {\r\n        if (GlobalData.verbose && typeof fromCtx === 'string') logWarn(`Error validating permission '${perm}' denied.`, fromCtx);\r\n        return false;\r\n    }\r\n}\r\n\r\n//================================================================\r\n//================================================================\r\n//================================================================\r\nmodule.exports = async function WebCtxUtils(ctx, next) {\r\n    //Prepare variables\r\n    const isWebInterface = (typeof ctx.headers['x-txadmin-token'] !== 'string');\r\n    ctx.txVars = {\r\n        isWebInterface,\r\n        realIP: ctx.ip,\r\n    };\r\n\r\n    //Setting up the user's host type\r\n    const host = ctx.request.host || 'none';\r\n    if (host.startsWith('127.0.0.1') || host.startsWith('localhost')) {\r\n        ctx.txVars.hostType = 'localhost';\r\n    } else if (host.includes('users.cfx.re')) {\r\n        ctx.txVars.hostType = 'cfxre';\r\n    } else if (/^\\d+[\\d.:]+\\d+$/.test(host)) {\r\n        ctx.txVars.hostType = 'ip';\r\n    } else {\r\n        ctx.txVars.hostType = 'other';\r\n    }\r\n\r\n    //Setting up the user's real ip from the webpipe\r\n    //NOTE: not used anywhere except rate limiter, and\r\n    // should be kept this way. When auth changes, delete this shit;\r\n    if (\r\n        typeof ctx.headers['x-txadmin-identifiers'] === 'string'\r\n        && typeof ctx.headers['x-txadmin-token'] === 'string'\r\n        && ctx.headers['x-txadmin-token'] === globals.webServer.luaComToken\r\n        && GlobalData.loopbackInterfaces.includes(ctx.ip)\r\n    ) {\r\n        const ipIdentifier = ctx.headers['x-txadmin-identifiers']\r\n            .split(', ')\r\n            .find((i) => i.startsWith('ip:'));\r\n        if (typeof ipIdentifier === 'string') {\r\n            const srcIP = ipIdentifier.substr(3);\r\n            if (GlobalData.regexValidIP.test(srcIP)) {\r\n                ctx.txVars.realIP = srcIP;\r\n            }\r\n        }\r\n    }\r\n\r\n    //Functions\r\n    ctx.send = (data) => { ctx.body = data; };\r\n    ctx.utils = {};\r\n    ctx.utils.render = async (view, data) => {\r\n        //Usage stats\r\n        if (!globals.databus.txStatsData.pageViews[view]) {\r\n            globals.databus.txStatsData.pageViews[view] = 1;\r\n        } else {\r\n            globals.databus.txStatsData.pageViews[view]++;\r\n        }\r\n\r\n        // Setting up default render data:\r\n        const baseViewData = {\r\n            isWebInterface: isWebInterface,\r\n            basePath: (isWebInterface) ? '/' : WEBPIPE_PATH,\r\n            resourcePath: (isWebInterface) ? '' : RESOURCE_PATH,\r\n            serverProfile: globals.info.serverProfile,\r\n            serverName: globals.config.serverName || globals.info.serverProfile,\r\n            uiTheme: (ctx.cookies.get('txAdmin-darkMode') === 'true' || !isWebInterface) ? THEME_DARK : '',\r\n            fxServerVersion: (GlobalData.isZapHosting) ? `${GlobalData.fxServerVersion}/ZAP` : GlobalData.fxServerVersion,\r\n            txAdminVersion: GlobalData.txAdminVersion,\r\n            txaOutdated: globals.databus.updateChecker?.txadmin,\r\n            fxsOutdated: globals.databus.updateChecker?.fxserver,\r\n            jsInjection: getJavascriptConsts({\r\n                isWebInterface: isWebInterface,\r\n                TX_BASE_PATH: (isWebInterface) ? '' : WEBPIPE_PATH,\r\n            }),\r\n        };\r\n\r\n        const renderData = Object.assign(baseViewData, data);\r\n        if (view == 'login') {\r\n            ctx.body = await renderLoginView(renderData, ctx.txVars);\r\n        } else {\r\n            ctx.body = await renderView(view, ctx.session, renderData, ctx.txVars);\r\n        }\r\n        ctx.type = 'text/html';\r\n    };\r\n    ctx.utils.error = (httpStatus = 500, message = 'unknown error') => {\r\n        ctx.status = httpStatus;\r\n        ctx.body = {\r\n            status: 'error',\r\n            code: parseInt(httpStatus),\r\n            message,\r\n        };\r\n    };\r\n\r\n    ctx.utils.logAction = async (data) => {\r\n        return logAction(ctx, data);\r\n    };\r\n    ctx.utils.logCommand = async (data) => {\r\n        return logCommand(ctx, data);\r\n    };\r\n    ctx.utils.checkPermission = (perm, fromCtx, printWarn) => {\r\n        return checkPermission(ctx, perm, fromCtx, printWarn);\r\n    };\r\n\r\n    return next();\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/webServer/ctxUtils.js?")},"./src/components/webServer/index.js":
/*!*******************************************!*\
  !*** ./src/components/webServer/index.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer';\r\nconst crypto = __webpack_require__(/*! crypto */ \"crypto\");\r\nconst path = __webpack_require__(/*! path */ \"path\");\r\nconst HttpClass  = __webpack_require__(/*! http */ \"http\");\r\n\r\nconst Koa = __webpack_require__(/*! koa */ \"./node_modules/koa/lib/application.js\");\r\nconst KoaBodyParser = __webpack_require__(/*! koa-bodyparser */ \"./node_modules/koa-bodyparser/index.js\");\r\nconst KoaServe = __webpack_require__(/*! koa-static */ \"./node_modules/koa-static/index.js\");\r\nconst KoaSession = __webpack_require__(/*! koa-session */ \"./node_modules/koa-session/index.js\");\r\nconst KoaSessionMemoryStoreClass = __webpack_require__(/*! koa-session-memory */ \"./node_modules/koa-session-memory/index.js\");\r\n\r\nconst SocketIO = __webpack_require__(/*! socket.io */ \"./node_modules/socket.io/dist/index.js\");\r\nconst SessionIO = __webpack_require__(/*! koa-session-socketio */ \"./node_modules/koa-session-socketio/index.js\");\r\nconst WebSocket = __webpack_require__(/*! ./webSocket */ \"./src/components/webServer/webSocket.js\");\r\n\r\nconst { customAlphabet } = __webpack_require__(/*! nanoid */ \"./node_modules/nanoid/index.cjs\");\r\nconst dict51 = __webpack_require__(/*! nanoid-dictionary/nolookalikes */ \"./node_modules/nanoid-dictionary/nolookalikes.js\");\r\nconst nanoid = customAlphabet(dict51, 20);\r\n\r\nconst { setHttpCallback } = __webpack_require__(/*! @citizenfx/http-wrapper */ \"./node_modules/@citizenfx/http-wrapper/index.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\nconst {requestAuth} = __webpack_require__(/*! ./requestAuthenticator */ \"./src/components/webServer/requestAuthenticator.js\");\r\nconst ctxUtils = __webpack_require__(/*! ./ctxUtils.js */ \"./src/components/webServer/ctxUtils.js\");\r\n\r\n\r\nmodule.exports = class WebServer {\r\n    constructor(config) {\r\n        this.config = config;\r\n        this.luaComToken = nanoid();\r\n        this.webSocket = null;\r\n        this.isListening = false;\r\n\r\n        //Generate cookie key\r\n        const pathHash = crypto.createHash('shake256', { outputLength: 6 })\r\n            .update(globals.info.serverProfilePath)\r\n            .digest('hex');\r\n        this.koaSessionKey = `tx:${globals.info.serverProfile}:${pathHash}`;\r\n\r\n        //Setup services\r\n        this.setupKoa();\r\n        this.setupWebSocket();\r\n        this.setupServerCallbacks();\r\n\r\n        //Cron function\r\n        setInterval(() => {\r\n            const httpCounter = globals.databus.txStatsData.httpCounter;\r\n            httpCounter.log.push(httpCounter.current);\r\n            if (httpCounter.log.length > 10) httpCounter.log.shift();\r\n            if (httpCounter.current > httpCounter.max) httpCounter.max = httpCounter.current;\r\n            httpCounter.current = 0;\r\n        }, 60 * 1000);\r\n    }\r\n\r\n\r\n    //================================================================\r\n    setupKoa() {\r\n        //Start Koa\r\n        this.app = new Koa();\r\n        this.app.keys = ['txAdmin' + nanoid()];\r\n\r\n        // Some people might want to enable it, but we are not guaranteeing XFF security\r\n        // due to the many possible ways you can connect to koa.\r\n        // this.app.proxy = true;\r\n\r\n        //Session\r\n        this.koaSessionMemoryStore = new KoaSessionMemoryStoreClass();\r\n        this.sessionInstance = KoaSession({\r\n            store: this.koaSessionMemoryStore,\r\n            key: this.koaSessionKey,\r\n            rolling: true,\r\n            maxAge: 24 * 60 * 60 * 1000, //one day\r\n        }, this.app);\r\n\r\n\r\n        //Setting up app\r\n        this.app.use(ctxUtils);\r\n        this.app.on('error', (error, ctx) => {\r\n            if (\r\n                typeof error.code == 'string'\r\n                && (\r\n                    error.code.startsWith('HPE_')\r\n                    || error.code.startsWith('ECONN')\r\n                    || error.code.startsWith('EPIPE')\r\n                    || error.code.startsWith('ECANCELED')\r\n                )\r\n            ) {\r\n                if (GlobalData.verbose) {\r\n                    logError(`Probably harmless error on ${ctx.path}`);\r\n                    dir(error);\r\n                }\r\n            } else {\r\n                logError(`Probably harmless error on ${ctx.path}`);\r\n                logError('Please be kind and send a screenshot of this error to the txAdmin developer.');\r\n                dir(error);\r\n            }\r\n        });\r\n\r\n        //Setting up timeout/error/no-output/413:\r\n        const timeoutLimit = 10 * 1000;\r\n        const jsonLimit = '16MB';\r\n        this.app.use(async (ctx, next) => {\r\n            ctx.set('Server', `txAdmin v${GlobalData.txAdminVersion}`);\r\n            let timer;\r\n            const timeout = new Promise((_, reject) => {\r\n                timer = setTimeout(() => {\r\n                    ctx.state.timeout = true;\r\n                    reject(new Error());\r\n                }, timeoutLimit);\r\n            });\r\n            try {\r\n                await Promise.race([timeout, next()]);\r\n                clearTimeout(timer);\r\n                if (typeof ctx.body == 'undefined' || (typeof ctx.body == 'string' && !ctx.body.length)) {\r\n                    if (GlobalData.verbose) logWarn(`Route without output: ${ctx.path}`);\r\n                    return ctx.body = '[no output from route]';\r\n                }\r\n            } catch (error) {\r\n                const prefix = `[txAdmin v${GlobalData.txAdminVersion}]`;\r\n                const reqPath = (ctx.path.length > 100) ? `${ctx.path.slice(0, 97)}...` : ctx.path;\r\n                const methodName = (error.stack && error.stack[0] && error.stack[0].name) ? error.stack[0].name : 'anonym';\r\n\r\n                //NOTE: I couldn't force xss on path message, but just in case I'm forcing it here\r\n                //but it is overwritten by koa when we set the body to an object, which is fine\r\n                ctx.type = 'text/plain';\r\n                ctx.set('X-Content-Type-Options', 'nosniff');\r\n\r\n                //NOTE: not using HTTP logger endpoint anymore, FD3 only\r\n                if (error.type === 'entity.too.large') {\r\n                    const desc = `Entity too large for: ${reqPath}`;\r\n                    if (GlobalData.verbose) logError(desc, methodName);\r\n                    ctx.status = 413;\r\n                    ctx.body = {error: desc};\r\n                } else if (ctx.state.timeout) {\r\n                    const desc = `${prefix} Route timed out: ${reqPath}`;\r\n                    logError(desc, methodName);\r\n                    ctx.status = 408;\r\n                    ctx.body = desc;\r\n                } else if (error.message === 'Malicious Path' || error.message === 'failed to decode') {\r\n                    const desc = `${prefix} Malicious Path: ${reqPath}`;\r\n                    if (GlobalData.verbose) logError(desc, methodName);\r\n                    ctx.status = 406;\r\n                    ctx.body = desc;\r\n                } else if (error.message.match(/^Unexpected token .+ in JSON at position \\d+$/)) {\r\n                    const desc = `${prefix} Invalid JSON for: ${reqPath}`;\r\n                    if (GlobalData.verbose) logError(desc, methodName);\r\n                    ctx.status = 400;\r\n                    ctx.body = {error: desc};\r\n                } else {\r\n                    const desc = `${prefix} Internal Error\\n`\r\n                                + `Message: ${error.message}\\n`\r\n                                + `Route: ${reqPath}\\n`\r\n                                + 'Make sure your txAdmin is updated.';\r\n                    logError(desc, methodName);\r\n                    if (GlobalData.verbose) dir(error);\r\n                    ctx.status = 500;\r\n                    ctx.body = desc;\r\n                }\r\n            }\r\n        });\r\n        //Setting up additional middlewares:\r\n        this.app.use(KoaServe(path.join(GlobalData.txAdminResourcePath, 'web/public'), {index: false, defer: false}));\r\n        this.app.use(this.sessionInstance);\r\n        this.app.use(KoaBodyParser({jsonLimit}));\r\n\r\n        //Setting up routes\r\n        this.router = __webpack_require__(/*! ./router */ \"./src/components/webServer/router.js\")(this.config);\r\n        this.app.use(this.router.routes());\r\n        this.app.use(this.router.allowedMethods());\r\n        this.app.use(async (ctx) => {\r\n            if (typeof ctx._matchedRoute === 'undefined') {\r\n                ctx.status = 404;\r\n                if (GlobalData.verbose) logWarn(`Request 404 error: ${ctx.path}`);\r\n                return ctx.utils.render('standalone/404');\r\n            }\r\n        });\r\n        this.koaCallback = this.app.callback();\r\n    }\r\n\r\n\r\n    //================================================================\r\n    //Resetting lua comms token - called by fxRunner on spawnServer()\r\n    resetToken() {\r\n        this.luaComToken = nanoid();\r\n        if (GlobalData.verbose) log('Resetting luaComToken.');\r\n    }\r\n\r\n\r\n    //================================================================\r\n    setupWebSocket() {\r\n        //Start SocketIO\r\n        this.io = SocketIO(HttpClass.createServer(), { serveClient: false });\r\n        this.io.use(SessionIO(this.koaSessionKey, this.koaSessionMemoryStore));\r\n        this.io.use(requestAuth('socket'));\r\n\r\n        //Setting up webSocket\r\n        this.webSocket = new WebSocket(this.io);\r\n        this.io.on('connection', this.webSocket.handleConnection.bind(this.webSocket));\r\n        //NOTE: when using namespaces:\r\n        // this.io.on('connection', client => {\r\n        //     logError('Triggered when not using any type of namespace.')\r\n        // });\r\n        // this.io.of('/console').use(this.webSocket.handleConnection.bind(this.webSocket));\r\n    }\r\n\r\n\r\n    //================================================================\r\n    httpCallbackHandler(source, req, res) {\r\n        //NOTE: setting the webpipe real ip is being done in ctxUtils\r\n        //Rewrite source IP if it comes from nucleus reverse proxy\r\n        const ipsrcRegex = /^(?:[0-9]{1,3}\\.){3}[0-9]{1,3}:\\d{1,5}$/;\r\n        if (source == 'citizenfx' && ipsrcRegex.test(req.headers['x-cfx-source-ip'])) {\r\n            req.connection.remoteAddress = req.headers['x-cfx-source-ip'].split(':')[0];\r\n        }\r\n\r\n        //Calls the appropriate callback\r\n        try {\r\n            globals.databus.txStatsData.httpCounter.current++;\r\n            if (req.url.startsWith('/socket.io')) {\r\n                this.io.engine.handleRequest(req, res);\r\n            } else {\r\n                this.koaCallback(req, res);\r\n            }\r\n        } catch (error) {}\r\n    }\r\n\r\n\r\n    //================================================================\r\n    setupServerCallbacks() {\r\n        //Just in case i want to re-execute this function\r\n        this.isListening = false;\r\n\r\n        //Print cfx.re url... when available\r\n        //NOTE: perhaps open the URL automatically with the `open` library\r\n        const validUrlRegex = /\\.users\\.cfx\\.re$/i;\r\n        const getUrlInterval = setInterval(() => {\r\n            try {\r\n                const urlConvar = GetConvar('web_baseUrl', 'false');\r\n                if (validUrlRegex.test(urlConvar)) {\r\n                    // logOk(`Alternative URL: ` + chalk.inverse(` https://${urlConvar}/ `));\r\n                    logOk(`Cfx.re URL: https://${urlConvar}/`);\r\n                    GlobalData.cfxUrl = urlConvar;\r\n                    clearInterval(getUrlInterval);\r\n                }\r\n            } catch (error) {}\r\n        }, 500);\r\n\r\n        //CitizenFX Callback\r\n        try {\r\n            setHttpCallback(this.httpCallbackHandler.bind(this, 'citizenfx'));\r\n        } catch (error) {\r\n            logError('Failed to start Cfx.re Reverse Proxy Callback with error:');\r\n            dir(error);\r\n        }\r\n\r\n        //HTTP Server\r\n        try {\r\n            const listenErrorHandler = (error) => {\r\n                if (error.code !== 'EADDRINUSE') return;\r\n                logError(`Failed to start HTTP server, port ${error.port} already in use.`);\r\n                logError('Maybe you already have another txAdmin running in this port.');\r\n                logError('If you want to run multiple txAdmin, check the documentation for the port convar.');\r\n                process.exit();\r\n            };\r\n            this.httpServer = HttpClass.createServer(this.httpCallbackHandler.bind(this, 'httpserver'));\r\n            this.httpServer.on('error', listenErrorHandler);\r\n\r\n            let iface;\r\n            if (GlobalData.forceInterface) {\r\n                logWarn(`Starting with interface ${GlobalData.forceInterface}.`);\r\n                logWarn('If the HTTP server doesn\\'t start, this is probably the reason.');\r\n                iface = GlobalData.forceInterface;\r\n            } else {\r\n                iface = '0.0.0.0';\r\n            }\r\n\r\n            this.httpServer.listen(GlobalData.txAdminPort, iface, async () => {\r\n                logOk(`Listening on ${iface}.`);\r\n                this.isListening = true;\r\n            });\r\n        } catch (error) {\r\n            logError('Failed to start HTTP server with error:');\r\n            dir(error);\r\n            process.exit();\r\n        }\r\n    }\r\n}; //Fim WebServer()\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/webServer/index.js?")},"./src/components/webServer/requestAuthenticator.js":
/*!**********************************************************!*\
  !*** ./src/components/webServer/requestAuthenticator.js ***!
  \**********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const modulename = 'WebServer:RequestAuthenticator';\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n\r\n/**\r\n * Returns a session authenticator function\r\n * @param {string} epType endpoint type\r\n */\r\nconst requestAuth = (epType) => {\r\n    //Intercom auth function\r\n    const intercomAuth = async (ctx, next) => {\r\n        if (\r\n            typeof ctx.request.body.txAdminToken !== 'undefined'\r\n            && ctx.request.body.txAdminToken === globals.webServer.luaComToken\r\n        ) {\r\n            await next();\r\n        } else {\r\n            return ctx.send({error: 'invalid token'});\r\n        }\r\n    };\r\n\r\n    //Default auth function\r\n    const defaultAuth = async (ctx, next) => {\r\n        const {isValidAuth} = authLogic(ctx.session, true, epType);\r\n\r\n        if (!isValidAuth) {\r\n            if (GlobalData.verbose) logWarn(`Invalid session auth: ${ctx.path}`, epType);\r\n            ctx.session.auth = {};\r\n            if (epType === 'web') {\r\n                return ctx.response.redirect('/auth?logout');\r\n            } else if (epType === 'api') {\r\n                return ctx.send({logout:true});\r\n            } else if (epType === 'nuiStart') {\r\n                const {isValidAuth, admin} = nuiAuthLogic(ctx.ip, ctx.request.headers);\r\n\r\n                if (!isValidAuth) {\r\n                    return ctx.response.redirect('/auth?logout');\r\n                } else {\r\n                    const providerWithPicture = Object.values(admin.providers).find((provider) => provider.data && provider.data.picture);\r\n                    ctx.session.auth = {\r\n                        username: admin.name,\r\n                        picture: (providerWithPicture) ? providerWithPicture.data.picture : undefined,\r\n                        password_hash: admin.password_hash,\r\n                        master: admin.master,\r\n                        permissions: admin.permissions,\r\n                        expires_at: false,\r\n                        isWebInterface: false,\r\n                        //Note: we actually need permissions/master because the first request doesn't\r\n                        // go through authLogic() which sets them up\r\n                    };\r\n                    ctx.utils.logAction('logged in from via NUI iframe');\r\n                    globals.databus.txStatsData.login.origins.webpipe++;\r\n                    globals.databus.txStatsData.login.methods.iframe++;\r\n                    await next();\r\n                }\r\n            } else {\r\n                return () => {throw new Error('Unknown auth type');};\r\n            }\r\n        } else {\r\n            await next();\r\n        }\r\n    };\r\n\r\n    //NUI auth function\r\n    const nuiAuth = async (ctx, next) => {\r\n        const {isValidAuth, rejectReason, admin} = nuiAuthLogic(ctx.ip, ctx.request.headers);\r\n\r\n        if (!isValidAuth) {\r\n            return ctx.send({isAdmin:false, reason: rejectReason});\r\n        } else {\r\n            ctx.nuiSession = {\r\n                auth: {\r\n                    username: admin.name,\r\n                    permissions: admin.permissions,\r\n                    master: admin.master,\r\n                    isWebInterface: false,\r\n                    //Doesn't apply: picture, password_hash, expires_at, isTempPassword\r\n                },\r\n            };\r\n            await next();\r\n        }\r\n    };\r\n\r\n    //Socket auth function (used as middleware for all incoming socket.io connections)\r\n    const socketAuth = async (socket, next) => {\r\n        const {isValidAuth} = authLogic(socket.session, true, epType);\r\n\r\n        if (isValidAuth) {\r\n            await next();\r\n        } else {\r\n            if (socket.session) socket.session.auth = {}; //a bit redundant but it wont hurt anyone\r\n            socket.disconnect(0);\r\n            if (GlobalData.verbose) logWarn('Auth denied when creating session');\r\n            next(new Error('Authentication Denied'));\r\n        }\r\n    };\r\n\r\n    //Return the appropriate function\r\n    if (epType === 'intercom') {\r\n        return intercomAuth;\r\n    } else if (epType === 'web') {\r\n        return defaultAuth;\r\n    } else if (epType === 'api') {\r\n        return defaultAuth;\r\n    } else if (epType === 'nuiStart') {\r\n        return defaultAuth;\r\n    } else if (epType === 'nui') {\r\n        return nuiAuth;\r\n    } else if (epType === 'socket') {\r\n        return socketAuth;\r\n    } else {\r\n        return () => {throw new Error('Unknown auth type');};\r\n    }\r\n};\r\n\r\n\r\n/**\r\n * Autentication & authorization logic used in both websocket and webserver\r\n * @param {object} sess\r\n * @param {string} perm\r\n * @param {string} epType endpoint type\r\n */\r\nconst authLogic = (sess, perm, epType) => {\r\n    let isValidAuth = false;\r\n    let isValidPerm = false;\r\n    if (\r\n        typeof sess !== 'undefined'\r\n        && typeof sess.auth !== 'undefined'\r\n        && typeof sess.auth.username !== 'undefined'\r\n        && typeof sess.auth.expires_at !== 'undefined'\r\n    ) {\r\n        let now = Math.round(Date.now() / 1000);\r\n        if (sess.auth.expires_at === false || now < sess.auth.expires_at) {\r\n            try {\r\n                let admin = globals.adminVault.getAdminByName(sess.auth.username);\r\n                if (admin) {\r\n                    if (\r\n                        typeof sess.auth.password_hash == 'string'\r\n                        && admin.password_hash == sess.auth.password_hash\r\n                    ) {\r\n                        isValidAuth = true;\r\n                    } else if (\r\n                        typeof sess.auth.provider == 'string'\r\n                        && typeof admin.providers[sess.auth.provider] == 'object'\r\n                        && sess.auth.provider_uid == admin.providers[sess.auth.provider].id\r\n                    ) {\r\n                        isValidAuth = true;\r\n                    }\r\n\r\n                    sess.auth.master = admin.master;\r\n                    sess.auth.permissions = admin.permissions;\r\n                    sess.auth.isTempPassword = (typeof admin.password_temporary !== 'undefined');\r\n\r\n                    isValidPerm = (perm === true || (\r\n                        admin.master === true\r\n                        || admin.permissions.includes('all_permissions')\r\n                        || admin.permissions.includes(perm)\r\n                    ));\r\n                }\r\n            } catch (error) {\r\n                if (GlobalData.verbose) {\r\n                    logError('Error validating session data:', epType);\r\n                    dir(error);\r\n                }\r\n            }\r\n        } else {\r\n            if (GlobalData.verbose) logWarn(`Expired session from ${sess.auth.username}`, epType);\r\n        }\r\n    }\r\n\r\n    return {isValidAuth, isValidPerm};\r\n};\r\n\r\n\r\n/**\r\n * Autentication & authorization logic used in for nui requests\r\n * @param {string} reqIP\r\n * @param {object} reqHeader\r\n */\r\nconst nuiAuthLogic = (reqIP, reqHeader) => {\r\n    // Check sus IPs\r\n    if (!GlobalData.loopbackInterfaces.includes(reqIP) && !GlobalData.isZapHosting) {\r\n        if (GlobalData.verbose) {\r\n            logWarn(`NUI Auth Failed: reqIP (${reqIP}) not in ${JSON.stringify(GlobalData.loopbackInterfaces)}.`);\r\n        }\r\n        return {isValidAuth: false, rejectReason: 'Invalid Request: source'};\r\n    }\r\n\r\n    // Check missing headers\r\n    if (typeof reqHeader['x-txadmin-token'] !== 'string') {\r\n        return {isValidAuth: false, rejectReason: 'Invalid Request: token header'};\r\n    }\r\n    if (typeof reqHeader['x-txadmin-identifiers'] !== 'string') {\r\n        return {isValidAuth: false, rejectReason: 'Invalid Request: identifiers header'};\r\n    }\r\n\r\n    // Check token value\r\n    if (reqHeader['x-txadmin-token'] !== globals.webServer.luaComToken) {\r\n        if (GlobalData.verbose) {\r\n            logWarn(`NUI Auth Failed: token received ${reqHeader['x-txadmin-token']} !== expected ${globals.webServer.luaComToken}.`);\r\n        }\r\n        return {isValidAuth: false, rejectReason: 'Unauthorized: token value'};\r\n    }\r\n\r\n    // Check identifier array\r\n    const identifiers = reqHeader['x-txadmin-identifiers']\r\n        .split(',')\r\n        .map((i) => i.trim().toLowerCase())\r\n        .filter((i) => i.length);\r\n    if (!identifiers.length) {\r\n        return {isValidAuth: false, rejectReason: 'Unauthorized: empty identifier array'};\r\n    }\r\n\r\n    // Find admin\r\n    try {\r\n        const admin = globals.adminVault.getAdminByIdentifiers(identifiers);\r\n        if (!admin) {\r\n            if (GlobalData.verbose) {\r\n                logWarn(`NUI Auth Failed: no admin found with identifiers ${JSON.stringify(identifiers)}.`);\r\n            }\r\n            return {isValidAuth: false, rejectReason: 'Unauthorized: admin not found'};\r\n        }\r\n        return {isValidAuth: true, admin};\r\n    } catch (error) {\r\n        logWarn(`Failed to authenticate NUI user with error: ${error.message}`);\r\n        if (GlobalData.verbose) dir(error);\r\n        return {isValidAuth: false, rejectReason: 'internal error'};\r\n    }\r\n};\r\n\r\n\r\n//================================================================\r\nmodule.exports = {\r\n    requestAuth,\r\n    authLogic,\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/webServer/requestAuthenticator.js?")},"./src/components/webServer/router.js":
/*!********************************************!*\
  !*** ./src/components/webServer/router.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:Router';\r\nconst Router = __webpack_require__(/*! @koa/router */ \"./node_modules/@koa/router/lib/router.js\");\r\nconst KoaRateLimit = __webpack_require__(/*! koa-ratelimit */ \"./node_modules/koa-ratelimit/index.js\");\r\n\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\nconst webRoutes = __webpack_require__(/*! ../../webroutes */ \"./src/webroutes/index.js\");\r\nconst {requestAuth} = __webpack_require__(/*! ./requestAuthenticator */ \"./src/components/webServer/requestAuthenticator.js\");\r\n\r\n\r\n/**\r\n * Router factory\r\n * @param {object} config\r\n */\r\nmodule.exports = (config) => {\r\n    const router = new Router();\r\n    const authLimiter = KoaRateLimit({\r\n        driver: 'memory',\r\n        db: new Map(),\r\n        duration: config.limiterMinutes * 60 * 1000, // 15 minutes\r\n        errorMessage: `<html>\r\n                <head>\r\n                    <title>txAdmin Rate Limit</title>\r\n                    <style>\r\n                        body {\r\n                            background-color: #171718;\r\n                            color: orangered;\r\n                            text-align: center; \r\n                            margin-top: 6em; \r\n                            font-family: monospace;\r\n                        }\r\n                    </style>\r\n                </head>\r\n                <body>\r\n                    <h1>Too many authentication attempts, enjoy your ${config.limiterMinutes} minutes of cooldown.</h1>\r\n                    <iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/otCpCn0l4Wo?start=15\" frameborder=\"0\" allow=\"accelerometer; autoplay=\"1\"; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\r\n                </body>\r\n            </html>`,\r\n        max: config.limiterAttempts,\r\n        disableHeader: true,\r\n        id: (ctx) => ctx.txVars.realIP,\r\n    });\r\n    const chartDataLimiter = KoaRateLimit({\r\n        driver: 'memory',\r\n        db: new Map(),\r\n        max: 10,\r\n        duration: 30 * 1000,\r\n        errorMessage: JSON.stringify({failReason: 'rate_limiter'}),\r\n        disableHeader: true,\r\n        id: (ctx) => ctx.txVars.realIP,\r\n    });\r\n\r\n    //Authentication\r\n    router.get('/auth', webRoutes.auth.get);\r\n    router.all('/auth/addMaster/:action', authLimiter, webRoutes.auth.addMaster);\r\n    router.get('/auth/:provider/redirect', authLimiter, webRoutes.auth.providerRedirect);\r\n    router.get('/auth/:provider/callback', authLimiter, webRoutes.auth.providerCallback);\r\n    router.get('/auth/zap', authLimiter, webRoutes.auth.verifyZapToken);\r\n    router.post('/auth/password', authLimiter, webRoutes.auth.verifyPassword);\r\n    router.post('/changePassword', requestAuth('web'), webRoutes.auth.changePassword);\r\n\r\n    //Admin Manager\r\n    router.get('/adminManager', requestAuth('web'), webRoutes.adminManager.get);\r\n    router.post('/adminManager/:action', requestAuth('web'), webRoutes.adminManager.actions);\r\n\r\n    //Settings\r\n    router.get('/setup', requestAuth('web'), webRoutes.setup.get);\r\n    router.post('/setup/:action', requestAuth('api'), webRoutes.setup.post);\r\n    router.get('/deployer', requestAuth('web'), webRoutes.deployer.stepper);\r\n    router.get('/deployer/status', requestAuth('api'), webRoutes.deployer.status);\r\n    router.post('/deployer/recipe/:action', requestAuth('api'), webRoutes.deployer.actions);\r\n    router.get('/settings', requestAuth('web'), webRoutes.settings.get);\r\n    router.post('/settings/save/:scope', requestAuth('web'), webRoutes.settings.save);\r\n\r\n    //Master Actions\r\n    router.get('/masterActions', requestAuth('web'), webRoutes.masterActions.get);\r\n    router.get('/masterActions/backupDatabase', requestAuth('web'), webRoutes.masterActions.getBackup);\r\n    router.post('/masterActions/:action', requestAuth('web'), webRoutes.masterActions.actions);\r\n\r\n    //FXServer\r\n    router.get('/fxserver/controls/:action', requestAuth('api'), webRoutes.fxserver.controls); //FIXME: transform into post\r\n    router.post('/fxserver/commands', requestAuth('web'), webRoutes.fxserver.commands);\r\n    router.get('/fxserver/downloadLog', requestAuth('web'), webRoutes.fxserver.downloadLog);\r\n\r\n    //CFG Editor\r\n    router.get('/cfgEditor', requestAuth('web'), webRoutes.cfgEditor.get);\r\n    router.post('/cfgEditor/save', requestAuth('api'), webRoutes.cfgEditor.save);\r\n\r\n    //Control routes\r\n    router.get('/console', requestAuth('web'), webRoutes.liveConsole);\r\n    router.post('/intercom/:scope', requestAuth('intercom'), webRoutes.intercom);\r\n\r\n    //Diagnostic routes\r\n    router.get('/diagnostics', requestAuth('web'), webRoutes.diagnostics);\r\n    router.get('/advanced', requestAuth('web'), webRoutes.advanced.get);\r\n    router.post('/advanced', requestAuth('api'), webRoutes.advanced.actions); //FIXME: add action to URL\r\n\r\n    //Data routes\r\n    router.get('/txAdminLog', requestAuth('web'), webRoutes.txAdminLog);\r\n    router.get('/serverLog', requestAuth('web'), webRoutes.serverLog);\r\n    router.get('/serverLog/partial', requestAuth('api'), webRoutes.serverLogPartial);\r\n    router.get('/status/:scope?', requestAuth('api'), webRoutes.status); //FIXME: param fix due to missing search\r\n    router.get('/chartData/:thread?', chartDataLimiter, webRoutes.chartData); //FIXME: param fix due to missing search\r\n\r\n    /*\r\n        FIXME: reorganizar TODAS rotas de logs, incluindo listagem e download\r\n        /logs/:logpage - WEB\r\n        /logs/:log/list - API\r\n        /logs/:log/partial - API\r\n        /logs/:log/download - WEB\r\n    */\r\n\r\n    //Player routes\r\n    router.get('/player/list', requestAuth('web'), webRoutes.player.list);\r\n    router.get('/player/:reference', requestAuth('api'), webRoutes.player.modal);\r\n    router.post('/player/:action', requestAuth('api'), webRoutes.player.actions);\r\n\r\n    //Index & generic\r\n    router.get('/resources', requestAuth('web'), webRoutes.resources);\r\n    router.get('/', requestAuth('web'), webRoutes.dashboard);\r\n\r\n    //NUI specific routes\r\n    router.get('/nui/auth', requestAuth('nui'), webRoutes.auth.nui);\r\n    router.get('/nui/player/:reference', requestAuth('nui'), webRoutes.player.modal);\r\n    router.post('/nui/player/:action', requestAuth('nui'), webRoutes.player.actions);\r\n    router.get('/nui/start/:route?', requestAuth('nuiStart'), async (ctx, next) => {\r\n        if (ctx.params.route === 'adminManager') {\r\n            return await webRoutes.adminManager.get(ctx, next);\r\n        } else {\r\n            return await webRoutes.serverLog(ctx, next);\r\n        }\r\n    });\r\n\r\n    //Return router\r\n    return router;\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/webServer/router.js?")},"./src/components/webServer/webSocket.js":
/*!***********************************************!*\
  !*** ./src/components/webServer/webSocket.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebSocket';\r\nconst xss = __webpack_require__(/*! ../../extras/xss */ \"./src/extras/xss.js\")({ mark: ['class'] });\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\nconst { authLogic } = __webpack_require__(/*! ./requestAuthenticator */ \"./src/components/webServer/requestAuthenticator.js\");\r\n\r\n//Helpers\r\nconst getIP = (socket) => {\r\n    return (\r\n        socket\r\n        && socket.request\r\n        && socket.request.connection\r\n        && socket.request.connection.remoteAddress\r\n    ) ? socket.request.connection.remoteAddress : 'unknown';\r\n};\r\nconst terminateSession = (socket) => {\r\n    // NOTE: doing socket.session.auth = {}; would also erase the web auth\r\n    try {\r\n        socket.emit('goDashboard');\r\n        socket.disconnect(0);\r\n    } catch (error) { }\r\n};\r\n\r\n\r\nmodule.exports = class WebSocket {\r\n    constructor(io) {\r\n        this.io = io;\r\n        this.dataBuffer = '';\r\n        this.rooms = {\r\n            liveconsole: {\r\n                permission: 'console.view',\r\n                eventName: 'consoleData',\r\n                outBuffer: '',\r\n                initialData: () => globals.logger.fxserver.getRecentBuffer(),\r\n                commands: {\r\n                    consoleCommand: {\r\n                        permission: 'console.write',\r\n                        handler: (...cmdArgs) => globals.fxRunner.liveConsoleCmdHandler(...cmdArgs),\r\n                    },\r\n                },\r\n            },\r\n            serverlog: {\r\n                permission: true, //everyone can see it\r\n                eventName: 'logData',\r\n                outBuffer: [],\r\n                initialData: () => globals.logger.server.getRecentBuffer(500),\r\n                commands: {},\r\n            },\r\n        };\r\n\r\n        setInterval(this.flushBuffers.bind(this), 250);\r\n    }\r\n\r\n\r\n    /**\r\n     * Handles incoming connection requests,\r\n     * NOTE: For now the user MUST join a room, needs additional logic for 'web' room\r\n     *\r\n     * @param {*} socket\r\n     * @returns nothing relevant\r\n     */\r\n    handleConnection(socket) {\r\n        try {\r\n            //Check if joining any room\r\n            if (!socket.handshake.query.room || !Object.keys(this.rooms).includes(socket.handshake.query.room)) {\r\n                if (GlobalData.verbose) log('dropping new connection without query.room', 'SocketIO');\r\n                socket.disconnect(0);\r\n            }\r\n\r\n            //Joining room\r\n            const roomName = socket.handshake.query.room;\r\n            const room = this.rooms[roomName];\r\n            const logPrefix = `SocketIO:${roomName}`;\r\n\r\n            //Checking Auth/Perms\r\n            const { isValidAuth, isValidPerm } = authLogic(socket.session, room.permission, logPrefix);\r\n            if (!isValidAuth || !isValidPerm) {\r\n                if (GlobalData.verbose) log('dropping new connection without auth or perm', logPrefix);\r\n                //${getIP(socket)} ???\r\n                return terminateSession(socket);\r\n            }\r\n\r\n            //Setting up event handlers\r\n            Object.keys(room.commands).forEach((commandName) => {\r\n                socket.on(commandName, (...cmdArgs) => {\r\n                    const { isValidAuth, isValidPerm } = authLogic(socket.session, room.commands[commandName].permission, logPrefix);\r\n\r\n                    if (!isValidAuth || !isValidPerm) {\r\n                        if (GlobalData.verbose) log('dropping existing connection due to missing auth/permissionnew', logPrefix);\r\n                        return terminateSession(socket);\r\n                    }\r\n                    room.commands[commandName].handler(socket.session, ...cmdArgs);\r\n                });\r\n            });\r\n\r\n            //Sending initial data\r\n            socket.join(roomName);\r\n            socket.emit(room.eventName, room.initialData());\r\n\r\n            //TODO: if web, join the web room\r\n\r\n            //General events\r\n            socket.on('disconnect', (reason) => {\r\n                if (GlobalData.verbose) log(`Client disconnected with reason: ${reason}`, 'SocketIO');\r\n            });\r\n            socket.on('error', (error) => {\r\n                if (GlobalData.verbose) log(`Socket error with message: ${error.message}`, 'SocketIO');\r\n            });\r\n\r\n            if (GlobalData.verbose) log(`Connected: ${socket.session.auth.username} from ${getIP(socket)}`, 'SocketIO');\r\n        } catch (error) {\r\n            log(`Error handling new connection: ${error.message}`, 'SocketIO');\r\n            socket.disconnect();\r\n        }\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Adds data to the buffer\r\n     * @param {string} roomName\r\n     * @param {string} data\r\n     */\r\n    buffer(roomName, data) {\r\n        const room = this.rooms[roomName];\r\n        if (!room) throw new Error('Room not found');\r\n\r\n        if (Array.isArray(room.outBuffer)) {\r\n            room.outBuffer.push(data);\r\n        } else if (typeof room.outBuffer === 'string') {\r\n            room.outBuffer += data;\r\n        }\r\n    }\r\n\r\n\r\n    //================================================================\r\n    /**\r\n     * Flushes the data buffers\r\n     * NOTE: this will also send data to users that no longer have permissions anymore\r\n     * @param {string} data\r\n     */\r\n    flushBuffers() {\r\n        Object.keys(this.rooms).forEach((roomName) => {\r\n            const room = this.rooms[roomName];\r\n            if (!room.outBuffer.length) return;\r\n\r\n            this.io.to(roomName).emit(room.eventName, room.outBuffer);\r\n\r\n            if (Array.isArray(room.outBuffer)) {\r\n                room.outBuffer = [];\r\n            } else if (typeof room.outBuffer === 'string') {\r\n                room.outBuffer = '';\r\n            }\r\n        });\r\n    }\r\n}; //Fim WebSocket()\r\n\n\n//# sourceURL=webpack://txadmin/./src/components/webServer/webSocket.js?")},"./src/extras/banner.js":
/*!******************************!*\
  !*** ./src/extras/banner.js ***!
  \******************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst os = __webpack_require__(/*! os */ \"os\");\r\nconst boxen = __webpack_require__(/*! boxen */ \"./node_modules/boxen/index.js\");\r\nconst chalk = __webpack_require__(/*! chalk */ \"./node_modules/chalk/source/index.js\");\r\nconst open = __webpack_require__(/*! open */ \"./node_modules/open/index.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ./console */ \"./src/extras/console.js\")();\r\nconst got = __webpack_require__(/*! ./got */ \"./src/extras/got.js\");\r\nconst windowsReleaseAsync = __webpack_require__(/*! ./windowsReleaseAsync */ \"./src/extras/windowsReleaseAsync.js\");\r\n\r\n// const getTimeout = (timeoutLimit) => {\r\n//     let timer;\r\n//     return new Promise((_, reject) => {\r\n//         timer = setTimeout(() => {\r\n//             reject(new Error());\r\n//         }, timeoutLimit);\r\n//     });\r\n// }\r\n\r\n\r\nconst printMultiline = (lines, color) => {\r\n    const prefix = color('[txAdmin]');\r\n    if (!Array.isArray(lines)) lines = lines.split('\\n');\r\n    const message = lines.map((line) => `${prefix} ${line}`);\r\n    console.log(message.join('\\n'));\r\n};\r\n\r\nconst getIPs = async () => {\r\n    const reqOptions = {timeout: 2500};\r\n    const allOps = await Promise.allSettled([\r\n        got('https://ip.seeip.org/json', reqOptions).json(),\r\n        got('https://api.ipify.org/?format=json', reqOptions).json(),\r\n        got('https://api.myip.com', reqOptions).json(),\r\n        // Promise.reject()\r\n        // got(`http://ip-api.com/json/`, reqOptions).json(),\r\n        // got(`https://extreme-ip-lookup.com/json/`, reqOptions).json(),\r\n    ]);\r\n    for (let i = 0; i < allOps.length; i++) {\r\n        const op = allOps[i];\r\n        if (op.status == 'fulfilled' && op.value.ip) {\r\n            return op.value.ip;\r\n        }\r\n    }\r\n    return false;\r\n};\r\n\r\nconst getOSMessage = async () => {\r\n    const serverMessage = [\r\n        `To be able to access txAdmin from the internet open port ${GlobalData.txAdminPort}`,\r\n        'on your OS Firewall as well as in the hosting company.',\r\n    ];\r\n    const winWorkstationMessage = [\r\n        '[!] Home-hosting fxserver is not recommended [!]',\r\n        'You need to open the fxserver port (usually 30120) on Windows Firewall',\r\n        'and port forward it in your router for other players be able to access it.',\r\n        'We recommend renting a server from ' + chalk.inverse(' https://zap-hosting.com/txAdmin ') + '.',\r\n    ];\r\n\r\n    if (GlobalData.osType == 'linux') {\r\n        GlobalData.osDistro = os.release();\r\n        return serverMessage;\r\n    } else {\r\n        try {\r\n            const distro = await windowsReleaseAsync();\r\n            GlobalData.osDistro = `Windows ${distro}`;\r\n            return (distro.toLowerCase().includes('server')) ? serverMessage : winWorkstationMessage;\r\n        } catch (error) {\r\n            if (GlobalData.verbose) {\r\n                logWarn(`Failed to detect windows version with error: ${error.message}`);\r\n                dir(error);\r\n            }\r\n            return serverMessage;\r\n        }\r\n    }\r\n};\r\n\r\nconst awaitHttp = new Promise((resolve, reject) => {\r\n    const tickLimit = 100; //if over 15 seconds\r\n    let counter = 0;\r\n    let interval;\r\n    const check = () => {\r\n        counter++;\r\n        if (globals.webServer && globals.webServer.isListening) {\r\n            clearInterval(interval);\r\n            resolve(true);\r\n        } else if (counter == tickLimit) {\r\n            clearInterval(interval);\r\n            interval = setInterval(check, 2500);\r\n        } else if (counter > tickLimit) {\r\n            logWarn('The WebServer is taking too long to start.');\r\n        }\r\n    };\r\n    interval = setInterval(check, 150);\r\n});\r\n\r\nconst awaitMasterPin = new Promise((resolve, reject) => {\r\n    const tickLimit = 100; //if over 15 seconds\r\n    let counter = 0;\r\n    let interval;\r\n    const check = () => {\r\n        counter++;\r\n        if (globals.adminVault && globals.adminVault.admins !== null) {\r\n            clearInterval(interval);\r\n            const pin = (globals.adminVault.admins === false) ? globals.adminVault.addMasterPin : false;\r\n            resolve(pin);\r\n        } else if (counter == tickLimit) {\r\n            clearInterval(interval);\r\n            interval = setInterval(check, 2500);\r\n        } else if (counter > tickLimit) {\r\n            logWarn('The AdminVault is taking too long to start.');\r\n        }\r\n    };\r\n    interval = setInterval(check, 150);\r\n});\r\n\r\n\r\nmodule.exports.printBanner = async () => {\r\n    const [ ipRes, msgRes, adminPinRes ] = await Promise.allSettled([\r\n        getIPs(),\r\n        getOSMessage(),\r\n        awaitMasterPin,\r\n        awaitHttp,\r\n    ]);\r\n\r\n    //Addresses\r\n    let addrs;\r\n    if (GlobalData.forceInterface == false || GlobalData.forceInterface == '0.0.0.0') {\r\n        addrs = [\r\n            (GlobalData.osType === 'linux') ? 'your-public-ip' : 'localhost',\r\n        ];\r\n        if (ipRes.value) {\r\n            addrs.push(ipRes.value);\r\n            GlobalData.loopbackInterfaces.push(ipRes.value);\r\n        }\r\n    } else {\r\n        addrs = [GlobalData.forceInterface];\r\n    }\r\n\r\n    //Admin PIN\r\n    let adminPinLines = [];\r\n    if (adminPinRes.value) {\r\n        adminPinLines = [\r\n            '', 'Use the PIN below to register:',\r\n            chalk.inverse(` ${adminPinRes.value} `),\r\n        ];\r\n    }\r\n\r\n    //Printing stuff\r\n    const boxOptions = {\r\n        padding: 1,\r\n        margin: 1,\r\n        align: 'center',\r\n        borderStyle: 'bold',\r\n        borderColor: 'cyan',\r\n    };\r\n    const boxLines = [\r\n        'All ready! Please access:',\r\n        ...addrs.map((addr) => chalk.inverse(` http://${addr}:${GlobalData.txAdminPort}/ `)),\r\n        ...adminPinLines,\r\n    ];\r\n    printMultiline(boxen(boxLines.join('\\n'), boxOptions), chalk.bold.bgGreen);\r\n    if (GlobalData.forceInterface == false) {\r\n        printMultiline(msgRes.value, chalk.bold.bgBlue);\r\n    }\r\n\r\n    //Opening page\r\n    if (GlobalData.osType === 'windows' && adminPinRes.value) {\r\n        open(`http://localhost:${GlobalData.txAdminPort}/auth#${adminPinRes.value}`).catch();\r\n    }\r\n\r\n    //Starting server\r\n    globals.fxRunner.signalStartReady();\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/extras/banner.js?")},"./src/extras/console.js":
/*!*******************************!*\
  !*** ./src/extras/console.js ***!
  \*******************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const util = __webpack_require__(/*! util */ \"util\");\r\nconst chalk = __webpack_require__(/*! chalk */ \"./node_modules/chalk/source/index.js\");\r\nconst colorize = __webpack_require__(/*! json-colorizer */ \"./node_modules/json-colorizer/src/lib/index.js\");\r\nconst header = 'txAdmin';\r\nlet logHistory = [];\r\n\r\n//Helpers\r\nconst now = () => { return Math.round(Date.now() / 1000); };\r\nconst getConCtx = (ctx) => { return (ctx !== null) ? header + ':' + ctx : header; };\r\nconst getHistCtx = (ctx) => { return (ctx !== null) ? ctx : header; };\r\nconst toHistory = (type, ctx, msg) => {\r\n    msg = msg.toString().replace(/\\u001b\\[\\d+(;\\d)?m/g, '');\r\n    if (logHistory.length > 4000) {\r\n        let sliceMsg = {ts: now(), type: 'ERROR', ctx: 'ConsoleLog', msg: 'The log was sliced to prevent memory exhaustion.'};\r\n        logHistory = logHistory.slice(0, 500).concat(sliceMsg, logHistory.slice(-500));\r\n    }\r\n    return logHistory.push({ts: now(), type, ctx, msg});\r\n};\r\n\r\n//Colorize settings:\r\nconst colorizeSettings = {\r\n    pretty: true,\r\n    colors: {\r\n        BRACE: 'white',\r\n        BRACKET: 'white',\r\n        COLON: 'white',\r\n        COMMA: 'white',\r\n        STRING_KEY: '#FF450',\r\n        STRING_LITERAL: 'cyan',\r\n        NUMBER_LITERAL: 'green',\r\n        BOOLEAN_LITERAL: 'blue',\r\n        NULL_LITERAL: 'white',\r\n    },\r\n};\r\n\r\n\r\n//================================================================\r\nfunction log(msg = '', context = null) {\r\n    let conCtx = getConCtx(context);\r\n    let histCtx = getHistCtx(context);\r\n    console.log(chalk.bold.bgBlue(`[${conCtx}]`) + ' ' + msg);\r\n    toHistory('INFO', histCtx, msg);\r\n    return `[INFO][${conCtx}] ${msg}`;\r\n}\r\n\r\nfunction logOk(msg = '', context = null) {\r\n    let conCtx = getConCtx(context);\r\n    let histCtx = getHistCtx(context);\r\n    console.log(chalk.bold.bgGreen(`[${conCtx}]`) + ' ' + msg);\r\n    toHistory('OK', histCtx, msg);\r\n    return `[OK][${conCtx}] ${msg}`;\r\n}\r\n\r\nfunction logWarn(msg = '', context = null) {\r\n    let conCtx = getConCtx(context);\r\n    let histCtx = getHistCtx(context);\r\n    console.log(chalk.bold.bgYellow(`[${conCtx}]`) + ' ' + msg);\r\n    toHistory('WARN', histCtx, msg);\r\n    return `[WARN][${conCtx}] ${msg}`;\r\n}\r\n\r\nfunction logError(msg = '', context = null) {\r\n    let conCtx = getConCtx(context);\r\n    let histCtx = getHistCtx(context);\r\n    console.log(chalk.bold.bgRed(`[${conCtx}]`) + ' ' + msg);\r\n    toHistory('ERROR', histCtx, msg);\r\n    return `[ERROR][${conCtx}] ${msg}`;\r\n}\r\n\r\nfunction logDebug(msg = '', context = null) {\r\n    if (!GlobalData.verbose) return;\r\n    let conCtx = getConCtx(context);\r\n    let histCtx = getHistCtx(context);\r\n    console.log(chalk.bold.bgMagenta(`[${conCtx}]`) + ' ' + msg);\r\n    toHistory('DEBUG', histCtx, msg);\r\n    return `[DEBUG][${conCtx}] ${msg}`;\r\n}\r\n\r\nfunction cleanTerminal() {\r\n    process.stdout.write('.\\n'.repeat(80) + '\\x1B[2J\\x1B[H');\r\n}\r\n\r\nfunction setTTYTitle(version, title) {\r\n    title = (title) ? `txAdmin v${version}: ${title}` : 'txAdmin';\r\n    process.stdout.write(`\\x1B]0;${title}\\x07`);\r\n}\r\n\r\nfunction dir(data) {\r\n    if (data instanceof Error) {\r\n        try {\r\n            console.log(`${chalk.redBright('[txAdmin Error]')} ${data.message}`);\r\n            if (typeof data.type !== 'undefined') console.log(`${chalk.redBright('[txAdmin Error] Type:')} ${data.type}`);\r\n            if (typeof data.code !== 'undefined') console.log(`${chalk.redBright('[txAdmin Error] Code:')} ${data.code}`);\r\n            data.stack.forEach((trace) => {\r\n                console.log(`    ${chalk.redBright('=>')} ${trace.file}:${trace.line} > ${chalk.yellowBright(trace.name || 'anonym')}`);\r\n            });\r\n        } catch (error) {\r\n            console.log('Error stack unavailable.');\r\n        }\r\n        console.log();\r\n    } else {\r\n        let printData;\r\n        if (typeof data == 'undefined') {\r\n            printData = chalk.keyword('moccasin').italic('> undefined');\r\n        } else if (data instanceof Promise) {\r\n            printData = chalk.keyword('moccasin').italic('> Promise');\r\n        } else if (data === null) {\r\n            printData = chalk.keyword('moccasin').italic('> null');\r\n        } else if (typeof data == 'boolean') {\r\n            if (data) {\r\n                printData = chalk.keyword('lawngreen')('true');\r\n            } else {\r\n                printData = chalk.keyword('orangered')('false');\r\n            }\r\n        } else if (typeof data == 'object') {\r\n            if (\r\n                !Object.keys(data).length\r\n                && typeof data.toString == 'function'\r\n                && data.constructor.name\r\n                && data.constructor.name !== 'Object'\r\n                && !Array.isArray(data)\r\n            ) {\r\n                printData = chalk.keyword('moccasin').italic(`> ${data.constructor.name}.toString():\\n`);\r\n                printData += chalk.white(data.toString());\r\n            } else {\r\n                // DEBUG when I really need it...\r\n                //printData = util.format('%o', data);\r\n                printData = colorize(data, colorizeSettings);\r\n            }\r\n        } else {\r\n            printData = chalk.keyword('orange').italic(typeof data + ': ');\r\n            if (typeof data == 'string') {\r\n                printData += `\"${data}\"`;\r\n            } else if (typeof data == 'number') {\r\n                printData += chalk.green(data);\r\n            } else if (typeof data == 'function') {\r\n                printData += '\\n';\r\n                printData += data.toString();\r\n            } else {\r\n                printData = util.format('%o', data);\r\n            }\r\n        }\r\n        const div = '='.repeat(32);\r\n        console.log(chalk.cyan([div, printData, div].join('\\n')));\r\n    }\r\n}\r\n\r\n/*\r\n// NOTE: test calls:\r\n    dir(a => {return a.toUpperCase;})\r\n    dir('sdfsdfdsf')\r\n    dir(['aaa', 124])\r\n    dir(123)\r\n    dir(true)\r\n    dir(false)\r\n    dir({aaa: 'bbbb'})\r\n    dir({})\r\n    dir(/xx/)\r\n    dir({}.uuuu)\r\n    dir(new Promise((resolve, reject) => {\r\n        resolve('aaaa')\r\n    }))\r\n    dir(new Error('hueeee'))\r\n*/\r\n\r\nfunction getLog() {\r\n    return logHistory;\r\n}\r\n\r\n//================================================================\r\nmodule.exports = (ctx) => {\r\n    const appendSubCtx = (sub) => {return (sub !== null) ? `${ctx}:${sub}` : ctx;};\r\n    return {\r\n        log: (x, subCtx = null) => log(x, appendSubCtx(subCtx)),\r\n        logOk: (x, subCtx = null) => logOk(x, appendSubCtx(subCtx)),\r\n        logWarn: (x, subCtx = null) => logWarn(x, appendSubCtx(subCtx)),\r\n        logError: (x, subCtx = null) => logError(x, appendSubCtx(subCtx)),\r\n        logDebug: (x, subCtx = null) => logDebug(x, appendSubCtx(subCtx)),\r\n        dir: (x, subCtx = null) => dir(x, appendSubCtx(subCtx)),\r\n        cleanTerminal,\r\n        setTTYTitle,\r\n        getLog,\r\n    };\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/extras/console.js?")},"./src/extras/dataCache.js":
/*!*********************************!*\
  !*** ./src/extras/dataCache.js ***!
  \*********************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('//Requires\r\nconst cloneDeep = __webpack_require__(/*! lodash/cloneDeep */ "./node_modules/lodash/cloneDeep.js");\r\n\r\nmodule.exports = class Cache {\r\n    constructor(cacheTime) {\r\n        this.cacheTime = cacheTime * 1000; //converting to ms\r\n        this.dataTimestamp = null;\r\n        this.data = false;\r\n    }\r\n\r\n    /**\r\n     * Sets the cache\r\n     * @param {*} data\r\n     */\r\n    set(data) {\r\n        this.dataTimestamp = Date.now();\r\n        this.data = data;\r\n    }\r\n\r\n    /**\r\n     * Returns the cache if valid, or false\r\n     */\r\n    get() {\r\n        const now = Date.now();\r\n        if (now - this.dataTimestamp < this.cacheTime) {\r\n            return cloneDeep(this.data);\r\n        } else {\r\n            return false;\r\n        }\r\n    }\r\n}; //Fim Cache()\r\n\n\n//# sourceURL=webpack://txadmin/./src/extras/dataCache.js?')},"./src/extras/deployer.js":
/*!********************************!*\
  !*** ./src/extras/deployer.js ***!
  \********************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'Deployer';\r\nconst path = __webpack_require__(/*! path */ \"path\");\r\nconst cloneDeep = __webpack_require__(/*! lodash/cloneDeep */ \"./node_modules/lodash/cloneDeep.js\");\r\nconst dateFormat = __webpack_require__(/*! dateformat */ \"./node_modules/dateformat/lib/dateformat.js\");\r\nconst fs = __webpack_require__(/*! fs-extra */ \"./node_modules/fs-extra/lib/index.js\");\r\nconst open = __webpack_require__(/*! open */ \"./node_modules/open/index.js\");\r\nconst YAML = __webpack_require__(/*! js-yaml */ \"./node_modules/js-yaml/index.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ./console */ \"./src/extras/console.js\")(modulename);\r\nconst recipeEngine = __webpack_require__(/*! ./recipeEngine */ \"./src/extras/recipeEngine.js\");\r\n\r\n//Helper functions\r\nconst getTimestamp = () => { return dateFormat(new Date(), 'HH:MM:ss'); };\r\nconst isUndefined = (x) => { return (typeof x === 'undefined'); };\r\nconst toDefault = (input, defVal) => { return (isUndefined(input)) ? defVal : input; };\r\nconst canCreateFile = async (targetPath) => {\r\n    try {\r\n        const filePath = path.join(targetPath, '.empty');\r\n        await fs.outputFile(filePath, '#save_attempt_please_ignore');\r\n        await fs.remove(filePath);\r\n        return true;\r\n    } catch (error) {\r\n        return false;\r\n    }\r\n};\r\nconst makeTemplateRecipe = (serverName, author) => `name: ${serverName}\r\nauthor: ${author}\r\n\r\n# This is just a placeholder, please don't run it!\r\ntasks: \r\n    - action: waste_time\r\n      seconds: 5\r\n    - action: waste_time\r\n      seconds: 5\r\n`;\r\n\r\n//Constants\r\nconst engineVersion = 3;\r\n\r\n\r\n/**\r\n * Perform deployer local target path permission/emptiness checking\r\n * FIXME: timeout to remove folders, or just autoremove them idk\r\n * @param {*} path\r\n */\r\nconst validateTargetPath = async (deployPath) => {\r\n    if (await fs.pathExists(deployPath)) {\r\n        const pathFiles = await fs.readdir(deployPath);\r\n        if (pathFiles.some((x) => x !== '.empty')) {\r\n            throw new Error('This folder is not empty!');\r\n        } else {\r\n            if (await canCreateFile(deployPath)) {\r\n                return 'Exists, empty, and writtable!';\r\n            } else {\r\n                throw new Error('Path exists, but its not a folder, or its not writtable.');\r\n            }\r\n        }\r\n    } else {\r\n        if (await canCreateFile(deployPath)) {\r\n            await fs.remove(deployPath);\r\n            return 'Path didn\\'t existed, we created one (then deleted it).';\r\n        } else {\r\n            throw new Error('Path doesn\\'t exist, and we could not create it. Please check parent folder permissions.');\r\n        }\r\n    }\r\n};\r\n\r\n\r\n/**\r\n * Validates a Recipe file\r\n * TODO: use Joi for schema validaiton\r\n * @param {*} rawRecipe\r\n */\r\nconst parseValidateRecipe = (rawRecipe) => {\r\n    if (typeof rawRecipe !== 'string') throw new Error('not a string');\r\n\r\n    //Loads YAML\r\n    let recipe;\r\n    try {\r\n        recipe = YAML.load(rawRecipe, { schema: YAML.JSON_SCHEMA });\r\n    } catch (error) {\r\n        if (GlobalData.verbose) dir(error);\r\n        throw new Error('invalid yaml');\r\n    }\r\n\r\n    //Basic validation\r\n    if (typeof recipe !== 'object') throw new Error('invalid YAML, couldn\\'t resolve to object');\r\n    if (!Array.isArray(recipe.tasks)) throw new Error('no tasks array found');\r\n\r\n    //Preparing output\r\n    const outRecipe = {\r\n        raw: rawRecipe.trim(),\r\n        name: toDefault(recipe.name, 'unnamed').trim(),\r\n        version: toDefault(recipe.version, '').trim(),\r\n        author: toDefault(recipe.author, 'unknown').trim(),\r\n        description: toDefault(recipe.description, '').trim(),\r\n        variables: {},\r\n        tasks: [],\r\n    };\r\n\r\n    //Checking/parsing meta tag requirements\r\n    if (typeof recipe['$onesync'] == 'string') {\r\n        const onesync = recipe['$onesync'].trim();\r\n        if (!['off', 'legacy', 'on'].includes(onesync)) throw new Error(`the onesync option selected required for this recipe (\"${onesync}\") is not supported by this FXServer version.`);\r\n        outRecipe.onesync = onesync;\r\n    }\r\n    if (typeof recipe['$minFxVersion'] == 'number') {\r\n        if (recipe['$minFxVersion'] > GlobalData.fxServerVersion) throw new Error(`this recipe requires FXServer v${recipe['$minFxVersion']} or above`);\r\n        outRecipe.fxserverMinVersion = recipe['$minFxVersion']; //useless for now\r\n    }\r\n    if (typeof recipe['$engine'] == 'number') {\r\n        if (recipe['$engine'] < engineVersion) throw new Error(`unsupported '$engine' version ${recipe['$engine']}`);\r\n        outRecipe.recipeEngineVersion = recipe['$engine']; //useless for now\r\n    }\r\n\r\n    //Validate tasks\r\n    if (!Array.isArray(recipe.tasks)) throw new Error('no tasks array found');\r\n    recipe.tasks.forEach((task, index) => {\r\n        if (typeof task.action !== 'string') throw new Error(`[task${index + 1}] no action specified`);\r\n        if (typeof recipeEngine[task.action] === 'undefined') throw new Error(`[task${index + 1}] unknown action '${task.action}'`);\r\n        if (!recipeEngine[task.action].validate(task)) throw new Error(`[task${index + 1}:${task.action}] invalid parameters`);\r\n        outRecipe.tasks.push(task);\r\n    });\r\n\r\n    //Process inputs\r\n    outRecipe.requireDBConfig = recipe.tasks.some((t) => t.action.includes('database'));\r\n    const protectedVarNames = ['licenseKey', 'dbHost', 'dbUsername', 'dbPassword', 'dbName', 'dbConnection'];\r\n    if (typeof recipe.variables == 'object' && recipe.variables !== null) {\r\n        const varNames = Object.keys(recipe.variables);\r\n        if (varNames.some((n) => protectedVarNames.includes(n))) {\r\n            throw new Error('One or more of the variables declared in the recipe are not allowed.');\r\n        }\r\n        Object.assign(outRecipe.variables, recipe.variables);\r\n    }\r\n\r\n    //Output\r\n    if (GlobalData.verbose) dir(outRecipe);\r\n    return outRecipe;\r\n};\r\n\r\n\r\n/**\r\n * The deployer class is responsible for running the recipe and handling status and errors\r\n * TODO: log everything to deployPath/recipe.log\r\n */\r\nclass Deployer {\r\n    /**\r\n     * @param {string} originalRecipe\r\n     * @param {string} deployPath\r\n     * @param {boolean} isTrustedSource\r\n     */\r\n    constructor(originalRecipe, deploymentID, deployPath, isTrustedSource, customMetaData = {}) {\r\n        log('Deployer instance ready.');\r\n\r\n        //Setup variables\r\n        this.step = 'review';\r\n        this.deployFailed = false;\r\n        this.deployPath = deployPath;\r\n        this.isTrustedSource = isTrustedSource;\r\n        this.originalRecipe = originalRecipe;\r\n        this.deploymentID = deploymentID;\r\n        this.progress = 0;\r\n        this.serverName = customMetaData.serverName || globals.config.serverName || '';\r\n        this.logLines = [];\r\n\r\n        //Load recipe\r\n        const impRecipe = (originalRecipe !== false)\r\n            ? originalRecipe\r\n            : makeTemplateRecipe(customMetaData.serverName, customMetaData.author);\r\n        try {\r\n            this.recipe = parseValidateRecipe(impRecipe);\r\n        } catch (error) {\r\n            if (GlobalData.verbose) dir(error);\r\n            throw new Error(`Recipe Error: ${error.message}`);\r\n        }\r\n    }\r\n\r\n    //Dumb helpers - don't care enough to make this less bad\r\n    log(str) {\r\n        this.logLines.push(`[${getTimestamp()}] ${str}`);\r\n        log(str);\r\n    }\r\n    logError(str) {\r\n        this.logLines.push(`[${getTimestamp()}] ${str}`);\r\n        logError(str);\r\n    }\r\n    getLog() {\r\n        return this.logLines.join('\\n');\r\n    }\r\n\r\n    /**\r\n     * Confirms the recipe and goes to the input stage\r\n     * @param {string} userRecipe\r\n     */\r\n    async confirmRecipe(userRecipe) {\r\n        if (this.step !== 'review') throw new Error('expected review step');\r\n\r\n        //Parse/set recipe\r\n        try {\r\n            this.recipe = parseValidateRecipe(userRecipe);\r\n        } catch (error) {\r\n            throw new Error(`Cannot start() deployer due to a Recipe Error: ${error.message}`);\r\n        }\r\n\r\n        //Ensure deployment path\r\n        try {\r\n            await fs.ensureDir(this.deployPath);\r\n        } catch (error) {\r\n            if (GlobalData.verbose) dir(error);\r\n            throw new Error(`Failed to create ${this.deployPath} with error: ${error.message}`);\r\n        }\r\n\r\n        this.step = 'input';\r\n    }\r\n\r\n    /**\r\n     * Returns the recipe variables for the deployer run step\r\n     */\r\n    getRecipeVars() {\r\n        if (this.step !== 'input') throw new Error('expected input step');\r\n        return cloneDeep(this.recipe.variables);\r\n        //TODO: ?? Object.keys pra montar varname: {type: 'string'}?\r\n    }\r\n\r\n    /**\r\n     * Starts the deployment process\r\n     * @param {string} userInputs\r\n     */\r\n    start(userInputs) {\r\n        if (this.step !== 'input') throw new Error('expected input step');\r\n        Object.assign(this.recipe.variables, userInputs);\r\n        this.logLines = [];\r\n        this.log(`Starting deployment of ${this.recipe.name}.`);\r\n        this.deployFailed = false;\r\n        this.progress = 0;\r\n        this.step = 'run';\r\n        this.runTasks();\r\n    }\r\n\r\n    /**\r\n     * Marks the deploy as failed\r\n     */\r\n    async markFailedDeploy() {\r\n        this.deployFailed = true;\r\n        try {\r\n            const filePath = path.join(this.deployPath, '_DEPLOY_FAILED_DO_NOT_USE');\r\n            await fs.outputFile(filePath, 'This deploy was failed, please do not use these files.');\r\n        } catch (error) {}\r\n    }\r\n\r\n    /**\r\n     * (Private) Run the tasks in a sequential way.\r\n     */\r\n    async runTasks() {\r\n        if (this.step !== 'run') throw new Error('expected run step');\r\n        const contextVariables = cloneDeep(this.recipe.variables);\r\n        contextVariables.deploymentID = this.deploymentID;\r\n        contextVariables.serverName = this.serverName;\r\n        contextVariables.recipeName = this.recipe.name;\r\n        contextVariables.recipeAuthor = this.recipe.author;\r\n        contextVariables.recipeVersion = this.recipe.version;\r\n        contextVariables.recipeDescription = this.recipe.description;\r\n\r\n        //Run all the tasks\r\n        for (let index = 0; index < this.recipe.tasks.length; index++) {\r\n            this.progress = Math.round((index / this.recipe.tasks.length) * 100);\r\n            const task = this.recipe.tasks[index];\r\n            const taskID = `[task${index + 1}:${task.action}]`;\r\n            this.log(`Running ${taskID}...`);\r\n            const taskTimeoutSeconds = task.timeoutSeconds ?? recipeEngine[task.action].timeoutSeconds;\r\n\r\n            try {\r\n                await Promise.race([\r\n                    recipeEngine[task.action].run(task, this.deployPath, contextVariables),\r\n                    new Promise((resolve, reject) => {\r\n                        setTimeout(() => {\r\n                            reject(new Error(`timed out after ${taskTimeoutSeconds}s.`));\r\n                        }, taskTimeoutSeconds * 1000);\r\n                    }),\r\n                ]);\r\n                this.logLines[this.logLines.length - 1] += ' ✔️';\r\n            } catch (error) {\r\n                this.logLines[this.logLines.length - 1] += ' ❌';\r\n                let msg = `Task Failed: ${error.message}\\n`\r\n                        + 'Options: \\n'\r\n                        + JSON.stringify(task, null, 2);\r\n                if(contextVariables.$step){\r\n                    msg += '\\nDebug/Status: '\r\n                        + JSON.stringify([\r\n                            GlobalData.txAdminVersion,\r\n                            GlobalData.osType,\r\n                            GlobalData.osDistro,\r\n                            contextVariables.$step\r\n                        ]);\r\n                }\r\n                this.logError(msg);\r\n                return await this.markFailedDeploy();\r\n            }\r\n        }\r\n\r\n        //Set progress\r\n        this.progress = 100;\r\n        this.log('All tasks completed.');\r\n\r\n        //Check deploy folder validity (resources + server.cfg)\r\n        try {\r\n            if (!fs.existsSync(path.join(this.deployPath, 'resources'))) {\r\n                throw new Error('this recipe didn\\'t create a \\'resources\\' folder.');\r\n            } else if (!fs.existsSync(path.join(this.deployPath, 'server.cfg'))) {\r\n                throw new Error('this recipe didn\\'t create a \\'server.cfg\\' file.');\r\n            }\r\n        } catch (error) {\r\n            this.logError(`Deploy validation error: ${error.message}`);\r\n            return await this.markFailedDeploy();\r\n        }\r\n\r\n        //Replace all vars in the server.cfg\r\n        try {\r\n            const task = {\r\n                mode: 'all_vars',\r\n                file: './server.cfg',\r\n            };\r\n            await recipeEngine['replace_string'].run(task, this.deployPath, contextVariables);\r\n            this.log('Replacing all vars in server.cfg... ✔️');\r\n        } catch (error) {\r\n            this.logError(`Failed to replace all vars in server.cfg: ${error.message}`);\r\n            return await this.markFailedDeploy();\r\n        }\r\n\r\n        //Else: success :)\r\n        this.log('Deploy finished and folder validated. All done!');\r\n        this.step = 'configure';\r\n        if (GlobalData.osType === 'windows') {\r\n            try {\r\n                await open(path.normalize(this.deployPath), {app: 'explorer'});\r\n            } catch (error) {}\r\n        }\r\n    }\r\n} //Fim Deployer()\r\n\r\n\r\nmodule.exports = {\r\n    Deployer,\r\n    validateTargetPath,\r\n    parseValidateRecipe,\r\n    engineVersion,\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/extras/deployer.js?")},"./src/extras/fxsConfigHelper.js":
/*!***************************************!*\
  !*** ./src/extras/fxsConfigHelper.js ***!
  \***************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const fsp = __webpack_require__(/*! node:fs/promises */ \"node:fs/promises\");\r\nconst path = __webpack_require__(/*! node:path */ \"node:path\");\r\nconst isLocalhost = __webpack_require__(/*! is-localhost-ip */ \"./node_modules/is-localhost-ip/index.js\");\r\n\r\n//DEBUG\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ./console */ \"./src/extras/console.js\")();\r\n\r\n/**\r\n * Detect the dominant newline character of a string.\r\n * Extracted from https://www.npmjs.com/package/detect-newline\r\n * @param {*} string\r\n * @returns\r\n */\r\nconst detectNewline = (string) => {\r\n    if (typeof string !== 'string') {\r\n        throw new TypeError('Expected a string');\r\n    }\r\n\r\n    const newlines = string.match(/(?:\\r?\\n)/g) || [];\r\n\r\n    if (newlines.length === 0) {\r\n        return;\r\n    }\r\n\r\n    const crlf = newlines.filter((newline) => newline === '\\r\\n').length;\r\n    const lf = newlines.length - crlf;\r\n\r\n    return crlf > lf ? '\\r\\n' : '\\n';\r\n};\r\n\r\n\r\n/**\r\n * Helper function to store commands\r\n */\r\nclass Command {\r\n    constructor(tokens, filePath, fileLine) {\r\n        if (!Array.isArray(tokens) || tokens.length < 1) {\r\n            throw new Error('Invalid command format');\r\n        }\r\n        if (typeof tokens[0] === 'string' && tokens[0].length) {\r\n            this.command = tokens[0].toLocaleLowerCase();\r\n        } else {\r\n            this.command = 'invalid_empty_command';\r\n        }\r\n        this.args = tokens.slice(1);\r\n        this.file = filePath;\r\n        this.line = fileLine;\r\n    }\r\n\r\n    //Kinda confusing name, but it returns the value of a set if it's for that ne var\r\n    getSetForVariable(varname) {\r\n        if (\r\n            ['set', 'sets', 'setr'].includes(this.command)\r\n            && this.args.length === 2\r\n            && this.args[0].toLowerCase() === varname.toLowerCase()\r\n        ) {\r\n            return this.args[1];\r\n        }\r\n\r\n        if (\r\n            this.command === varname.toLowerCase()\r\n            && this.args.length === 1\r\n        ) {\r\n            return this.args[0];\r\n        }\r\n\r\n        return false;\r\n    }\r\n}\r\n\r\n\r\n/**\r\n * Helper function to store exec errors\r\n */\r\nclass ExecRecursionError {\r\n    constructor(file, message) {\r\n        this.file = file;\r\n        this.message = message;\r\n    }\r\n}\r\n\r\n/**\r\n * Helper class to store file TODOs, errors and warnings\r\n */\r\nclass FilesInfoList {\r\n    constructor() {\r\n        this.store = {};\r\n    }\r\n    add(file, info) {\r\n        if (Array.isArray(this.store[file])) {\r\n            this.store[file].push(info);\r\n        } else {\r\n            this.store[file] = [info];\r\n        }\r\n    }\r\n    count() {\r\n        return Object.keys(this.store).length;\r\n    }\r\n    toJSON() {\r\n        return this.store;\r\n    }\r\n    toMarkdown() {\r\n        const files = Object.keys(this.store);\r\n        if (!files) return null;\r\n\r\n        const msgLines = [];\r\n        for (const file of files) {\r\n            const fileInfos = this.store[file];\r\n            msgLines.push(`\\`${file}\\`:`);\r\n            fileInfos.forEach((msg) => {\r\n                msgLines.push(`\\t${msg}`);\r\n            });\r\n        }\r\n        return msgLines.join('\\n');\r\n    }\r\n}\r\n\r\n\r\n/**\r\n * Returns the first likely server.cfg given a server data path, or false\r\n * @param {string} serverDataPath\r\n */\r\nfunction findLikelyCFGPath(serverDataPath) {\r\n    const attempts = [\r\n        'server.cfg',\r\n        'server.cfg.txt',\r\n        'server.cfg.cfg',\r\n        'server.txt',\r\n        'server',\r\n        '../server.cfg',\r\n    ];\r\n\r\n    for (const attempt of attempts) {\r\n        const cfgPath = path.join(serverDataPath, attempt);\r\n        try {\r\n            if (fs.lstatSync(cfgPath).isFile()) {\r\n                return cfgPath;\r\n            }\r\n        } catch (error) { }\r\n    }\r\n    return false;\r\n}\r\n\r\n\r\n/**\r\n * Returns the absolute path of the given CFG Path\r\n * @param {string} cfgPath\r\n * @param {string} serverDataPath\r\n * @returns {string} cfg file absolute path\r\n */\r\nconst resolveCFGFilePath = (cfgPath, serverDataPath) => {\r\n    return (path.isAbsolute(cfgPath)) ? path.normalize(cfgPath) : path.resolve(serverDataPath, cfgPath);\r\n};\r\n\r\n\r\n/**\r\n * Reads CFG Path and return the file contents, or throw error if:\r\n *  - the path is not valid (must be absolute)\r\n *  - cannot read the file data\r\n * @param {string} cfgFullPath\r\n * @returns {string} raw cfg file\r\n */\r\nconst readRawCFGFile = async (cfgPath) => {\r\n    //Validating if the path is absolute\r\n    if (!path.isAbsolute(cfgPath)) {\r\n        throw new Error('File path must be absolute.');\r\n    }\r\n\r\n    //Validating file existence\r\n    if (!fs.existsSync(cfgPath)) {\r\n        throw new Error(\"File doesn't exist or its unreadable.\");\r\n    }\r\n\r\n    //Validating if its actually a file\r\n    if (!fs.lstatSync(cfgPath).isFile()) {\r\n        throw new Error(\"File doesn't exist or its unreadable. Make sure to include the CFG file in the path, and not just the directory that contains it.\");\r\n    }\r\n\r\n    //Reading file\r\n    try {\r\n        return await fsp.readFile(cfgPath, 'utf8');\r\n    } catch (error) {\r\n        throw new Error('Cannot read CFG file.');\r\n    }\r\n};\r\n\r\n\r\n/**\r\n * Parse a cfg/console line and return an array of commands with tokens.\r\n * Notable difference: we don't handle inline block comment\r\n * Original Line Parser:\r\n *  fivem/code/client/citicore/console/Console.cpp > ProgramArguments Tokenize\r\n * @param {string} input\r\n * @returns {array} array of commands\r\n */\r\nconst readLineCommands = (input) => {\r\n    let inQuote = false;\r\n    let inEscape = false;\r\n    const prevCommands = [];\r\n    let currCommand = [];\r\n    let currToken = '';\r\n    for (let i = 0; i < input.length; i++) {\r\n        if (inEscape) {\r\n            if (input[i] === '\"' || input[i] === '\\\\') {\r\n                currToken += input[i];\r\n            }\r\n            inEscape = false;\r\n            continue;\r\n        }\r\n\r\n        if (!currToken.length) {\r\n            if (\r\n                input.slice(i, i + 2) === '//'\r\n                || input.slice(i, i + 2) === '/*'\r\n                || input[i] === '#'\r\n            ) {\r\n                break;\r\n            }\r\n        }\r\n\r\n        if (!inQuote && input.charCodeAt(i) <= 32) {\r\n            if (currToken.length) {\r\n                currCommand.push(currToken);\r\n                currToken = '';\r\n            }\r\n            continue;\r\n        }\r\n\r\n        if (input[i] === '\"') {\r\n            if (inQuote) {\r\n                currCommand.push(currToken);\r\n                currToken = '';\r\n                inQuote = false;\r\n            } else {\r\n                inQuote = true;\r\n            }\r\n            continue;\r\n        }\r\n\r\n        if (input[i] === '\\\\') {\r\n            inEscape = true;\r\n            continue;\r\n        }\r\n\r\n        if (!inQuote && input[i] === ';') {\r\n            if (currToken.length) {\r\n                currCommand.push(currToken);\r\n                currToken = '';\r\n            }\r\n            prevCommands.push(currCommand);\r\n            currCommand = [];\r\n            continue;\r\n        };\r\n\r\n        currToken += input[i];\r\n    }\r\n    if (currToken.length) {\r\n        currCommand.push(currToken);\r\n    }\r\n    prevCommands.push(currCommand);\r\n\r\n    return prevCommands;\r\n};\r\n//NOTE: tests for the parser above\r\n// const chalk = require('chalk');\r\n// const testCommands = [\r\n//     ' \\x1B ONE_ARG_WITH_SPACE \"part1 part2\"',\r\n//     'TWO_ARGS arg1 arg2',\r\n//     'ONE_ARG_WITH_SPACE_SEMICOLON \"arg mid;cut\"',\r\n//     'ESCAPED_QUOTE \"aa\\\\\"bb\"',\r\n//     'ESCAPED_ESCAPE \"aa\\\\\\\\bb\"',\r\n//     'ESCAPED_X \"aa\\\\xbb\"',\r\n//     // 'NO_CLOSING_QUOTE \"aa',\r\n//     // 'SHOW_AB_C aaa#bbb ccc',\r\n//     // 'COMMENT //anything noshow',\r\n//     'COMMENT #anything noshow',\r\n//     'noshow2',\r\n// ];\r\n// const parsed = readLineCommands(testCommands.join(';'));\r\n// for (const commandTokens of parsed) {\r\n//     console.log(`${commandTokens[0]}:`);\r\n//     commandTokens.slice(1).forEach((token) => {\r\n//         console.log(chalk.inverse(token));\r\n//     });\r\n//     console.log('\\n');\r\n// }\r\n\r\n\r\n/**\r\n * Recursively parse server.cfg files losely based on the fxserver original parser.\r\n * Notable differences: we have recursivity depth limit, and no json parsing\r\n * Original CFG (console) parser:\r\n *  fivem/code/client/citicore/console/Console.cpp > Context::ExecuteBuffer\r\n *\r\n * FIXME: support `@resource/whatever.cfg` syntax\r\n *\r\n * @param {string|null} cfgInputString the cfg string to validate before saving, or null to load from file\r\n * @param {string} cfgPath\r\n * @param {string} serverDataPath\r\n * @param {array} stack\r\n * @returns {object} recursive cfg structure\r\n */\r\nconst parseRecursiveConfig = async (cfgInputString, cfgAbsolutePath, serverDataPath, stack) => {\r\n    if (typeof cfgInputString !== 'string' && cfgInputString !== null) {\r\n        throw new Error('cfgInputString expected to be string or null');\r\n    }\r\n\r\n    // Ensure safe stack\r\n    const MAX_DEPTH = 5;\r\n    if (!Array.isArray(stack)) {\r\n        stack = [];\r\n    } else if (stack.length > MAX_DEPTH) {\r\n        throw new Error(`cfg 'exec' command depth above ${MAX_DEPTH}`);\r\n    } else if (stack.includes(cfgAbsolutePath)) {\r\n        throw new Error(`cfg cyclical 'exec' command detected to file ${cfgAbsolutePath}`);\r\n    }\r\n    stack.push(cfgAbsolutePath);\r\n\r\n    // Read raw config and split lines\r\n    const cfgData = cfgInputString ?? await readRawCFGFile(cfgAbsolutePath);\r\n    const cfgLines = cfgData.split('\\n');\r\n\r\n    // Parse CFG lines\r\n    const parsedCommands = [];\r\n    for (let i = 0; i < cfgLines.length; i++) {\r\n        const lineString = cfgLines[i].trim();\r\n        const lineNumber = i + 1;\r\n        const lineCommands = readLineCommands(lineString);\r\n\r\n        // For each command in that line\r\n        for (const cmdTokens of lineCommands) {\r\n            if (!cmdTokens.length) {\r\n                continue;\r\n            }\r\n            const cmdObject = new Command(cmdTokens, cfgAbsolutePath, lineNumber);\r\n            parsedCommands.push(cmdObject);\r\n\r\n            // If exec command, process recursively then flatten the output\r\n            if (cmdObject.command === 'exec') {\r\n                const recursiveCfgAbsolutePath = resolveCFGFilePath(cmdObject.args[0], serverDataPath);\r\n                try {\r\n                    const extractedCommands = await parseRecursiveConfig(null, recursiveCfgAbsolutePath, serverDataPath, stack);\r\n                    parsedCommands.push(...extractedCommands);\r\n                } catch (error) {\r\n                    const msg = `Line ${lineNumber}: ${error.message}`;\r\n                    parsedCommands.push(new ExecRecursionError(cfgAbsolutePath, msg));\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    return parsedCommands;\r\n};\r\n\r\n\r\n/**\r\n * Validates a list of parsed commands to return endpoints, errors, warnings and lines to comment out\r\n * @param {array} parsedCommands\r\n * @returns {object}\r\n */\r\nconst validateCommands = async (parsedCommands) => {\r\n    const zapPrefix = (GlobalData.isZapHosting) ? ' [ZAP-Hosting]' : '';\r\n    const checkedInterfaces = new Map();\r\n\r\n    //To return\r\n    const endpoints = {};\r\n    const errors = new FilesInfoList();\r\n    const warnings = new FilesInfoList();\r\n    const toCommentOut = new FilesInfoList();\r\n\r\n    for (const cmd of parsedCommands) {\r\n        //In case of error\r\n        if (cmd instanceof ExecRecursionError) {\r\n            warnings.add(cmd.file, cmd.message);\r\n            continue;\r\n        }\r\n\r\n        //Check for +set\r\n        if (['+set', '+setr', '+setr'].includes(cmd.command)) {\r\n            const msg = `Line ${cmd.line}: remove the '+' from '${cmd.command}', as this is not an launch parameter.`;\r\n            warnings.add(cmd.file, msg);\r\n            continue;\r\n        }\r\n\r\n        //Check for start/stop/ensure txAdmin/txAdminClient/monitor\r\n        if (\r\n            ['start', 'stop', 'ensure'].includes(cmd.command)\r\n            && cmd.args.length >= 1\r\n            && ['txadmin', 'txadminclient', 'monitor'].includes(cmd.args[0].toLowerCase())\r\n        ) {\r\n            toCommentOut.add(\r\n                cmd.file,\r\n                [cmd.line, 'you MUST NOT start/stop/ensure txadmin resources.'],\r\n            );\r\n            continue;\r\n        }\r\n\r\n        //Check sv_maxClients against ZAP config\r\n        const isMaxClientsString = cmd.getSetForVariable('sv_maxclients');\r\n        if (GlobalData.deployerDefaults?.maxClients && isMaxClientsString) {\r\n            const maxClients = parseInt(isMaxClientsString);\r\n            if (maxClients > GlobalData.deployerDefaults.maxClients) {\r\n                const msg = `Line ${cmd.line}:${zapPrefix} your 'sv_maxclients' SHOULD be <= ${GlobalData.deployerDefaults.maxClients}.`;\r\n                warnings.add(cmd.file, msg);\r\n                continue;\r\n            }\r\n        }\r\n\r\n        //Comment out any onesync sets\r\n        if (cmd.getSetForVariable('onesync')) {\r\n            toCommentOut.add(\r\n                cmd.file,\r\n                [cmd.line, 'onesync MUST only be set in the txAdmin settings page.'],\r\n            );\r\n            continue;\r\n        }\r\n\r\n        //Extract & process endpoint validity\r\n        if (cmd.command === 'endpoint_add_tcp' || cmd.command === 'endpoint_add_udp') {\r\n            //Validating args length\r\n            if (cmd.args.length !== 1) {\r\n                const msg = `Line ${cmd.line}: the 'endpoint_add_*' commands MUST have exactly 1 argument (received ${cmd.args.length})`;\r\n                warnings.add(cmd.file, msg);\r\n                continue;\r\n            }\r\n\r\n            //Extracting parts & validating format\r\n            const endpointsRegex = /^\\[?(([0-9.]{7,15})|([a-z0-9:]{2,29}))\\]?:(\\d{1,5})$/gi;\r\n            const matches = [...cmd.args[0].matchAll(endpointsRegex)];\r\n            if (!Array.isArray(matches) || !matches.length) {\r\n                const msg = `Line ${cmd.line}: the '${cmd.command}' interface:port '${cmd.args[0]}' is not in a valid format.`;\r\n                errors.add(cmd.file, msg);\r\n                continue;\r\n            }\r\n            const [_matchedString, interface, ipv4, ipv6, portString] = matches[0];\r\n\r\n            //Checking if that interface is available to binding\r\n            let canBind = checkedInterfaces.get(interface);\r\n            if (typeof canBind === 'undefined') {\r\n                canBind = await isLocalhost(interface, true);\r\n                checkedInterfaces.set(interface, canBind);\r\n            }\r\n            if (canBind === false) {\r\n                const msg = `Line ${cmd.line}: the '${cmd.command}' interface '${interface}' is not available for this host.`;\r\n                errors.add(cmd.file, msg);\r\n                continue;\r\n            }\r\n            if (GlobalData.forceInterface && interface !== GlobalData.forceInterface) {\r\n                const msg = `Line ${cmd.line}:${zapPrefix} the '${cmd.command}' interface MUST be '${GlobalData.forceInterface}'.`;\r\n                errors.add(cmd.file, msg);\r\n                continue;\r\n            }\r\n\r\n            //Validating port\r\n            const port = parseInt(portString);\r\n            if (port >= 40120 && port <= 40150) {\r\n                const msg = `Line ${cmd.line}: the '${cmd.command}' port '${port}' is dedicated for txAdmin and CAN NOT be used for FXServer.`;\r\n                errors.add(cmd.file, msg);\r\n                continue;\r\n            }\r\n            if (port === GlobalData.txAdminPort) {\r\n                const msg = `Line ${cmd.line}: the '${cmd.command}' port '${port}' is being used by txAdmin and CAN NOT be used for FXServer at the same time.`;\r\n                errors.add(cmd.file, msg);\r\n                continue;\r\n            }\r\n            if (GlobalData.forceFXServerPort && port !== GlobalData.forceFXServerPort) {\r\n                const msg = `Line ${cmd.line}:${zapPrefix} the '${cmd.command}' port MUST be '${GlobalData.forceFXServerPort}'.`;\r\n                errors.add(cmd.file, msg);\r\n                continue;\r\n            }\r\n\r\n            //Add to the endpoint list and check duplicity\r\n            const endpoint = (ipv4) ? `${ipv4}:${port}` : `[${ipv6}]:${port}`;\r\n            const protocol = (cmd.command === 'endpoint_add_tcp') ? 'tcp' : 'udp';\r\n            if (typeof endpoints[endpoint] === 'undefined') {\r\n                endpoints[endpoint] = {};\r\n            }\r\n            if (endpoints[endpoint][protocol]) {\r\n                const msg = `Line ${cmd.line}: you CANNOT execute '${cmd.command}' twice for the interface '${endpoint}'.`;\r\n                errors.add(cmd.file, msg);\r\n                continue;\r\n            } else {\r\n                endpoints[endpoint][protocol] = true;\r\n            }\r\n        }\r\n    }\r\n\r\n    return { endpoints, errors, warnings, toCommentOut };\r\n};\r\n\r\n\r\n/**\r\n * Process endpoints object, checks validity, and then returns a connection string\r\n * @param {object} endpoints\r\n * @returns {string} connect string\r\n */\r\nconst getConnectEndpoint = (endpoints) => {\r\n    if (!Object.keys(endpoints).length) {\r\n        throw new Error('Your config file does not specify which IP and port fxserver should run. You can fix this by adding \\'endpoint_add_tcp 0.0.0.0:30120; endpoint_add_udp 0.0.0.0:30120\\' to the start of the file.');\r\n    }\r\n    const tcpudpEndpoint = Object.keys(endpoints).find((ep) => {\r\n        return endpoints[ep].tcp && endpoints[ep].udp;\r\n    });\r\n    if (!tcpudpEndpoint) {\r\n        throw new Error('Your config file does not not contain a ip:port used in both endpoint_add_tcp and endpoint_add_udp. Players would not be able to connect.');\r\n    }\r\n\r\n    return tcpudpEndpoint.replace(/(0\\.0\\.0\\.0|\\[::\\])/, '127.0.0.1');\r\n};\r\n\r\n\r\n/**\r\n * Validates & ensures correctness in fxserver config file recursively.\r\n * Used when trying to start server, or validate the server.cfg.\r\n *\r\n * @param {string} cfgPath\r\n * @param {string} serverDataPath\r\n * @returns {object} recursive cfg structure\r\n */\r\nconst validateFixServerConfig = async (cfgPath, serverDataPath) => {\r\n    //Parsing fxserver config & going through each command\r\n    const cfgAbsolutePath = resolveCFGFilePath(cfgPath, serverDataPath);\r\n    const parsedCommands = await parseRecursiveConfig(null, cfgAbsolutePath, serverDataPath);\r\n    const { endpoints, errors, warnings, toCommentOut } = await validateCommands(parsedCommands);\r\n\r\n    //Validating if a valid endpoint was detected\r\n    let connectEndpoint = false;\r\n    try {\r\n        connectEndpoint = getConnectEndpoint(endpoints);\r\n    } catch (error) {\r\n        errors.add(cfgAbsolutePath, error.message);\r\n    }\r\n\r\n    //Commenting out lines or registering them as warnings\r\n    for (const targetCfgPath in toCommentOut.store) {\r\n        const actions = toCommentOut.store[targetCfgPath];\r\n        try {\r\n            const cfgRaw = await fsp.readFile(targetCfgPath, 'utf8');\r\n\r\n            //modify the cfg lines\r\n            const fileEOL = detectNewline(cfgRaw);\r\n            const cfgLines = cfgRaw.split(/\\r?\\n/);\r\n            for (const [ln, reason] of actions) {\r\n                if (typeof cfgLines[ln - 1] !== 'string') {\r\n                    throw new Error(`Line ${ln} not found.`);\r\n                }\r\n                cfgLines[ln - 1] = `## [txAdmin CFG validator]: ${reason}${fileEOL}# ${cfgLines[ln - 1]}`;\r\n                warnings.add(targetCfgPath, `Commented out line ${ln}: ${reason}`);\r\n            }\r\n\r\n            //Saving modified lines\r\n            const newCfg = cfgLines.join(fileEOL);\r\n            logWarn(`Saving modified file '${targetCfgPath}'`);\r\n            await fsp.writeFile(targetCfgPath, newCfg, 'utf8');\r\n        } catch (error) {\r\n            if (GlobalData.verbose) logError(error);\r\n            for (const [ln, reason] of actions) {\r\n                errors.add(targetCfgPath, `Please comment out line ${ln}: ${reason}`);\r\n            }\r\n        }\r\n    }\r\n\r\n    //Prepare response\r\n    return {\r\n        connectEndpoint,\r\n        errors: errors.toMarkdown(),\r\n        warnings: errors.toMarkdown(),\r\n        // errors: errors.store,\r\n        // warnings: warnings.store,\r\n        // endpoints, //Not being used\r\n    };\r\n};\r\n\r\n\r\n/**\r\n * Validating config contents + saving file and backup.\r\n * In case of any errors, it does not save the contents.\r\n * Does not comment out (fix) bad lines.\r\n * Used whenever a user wants to modify server.cfg.\r\n *\r\n * @param {string} cfgInputString the cfg string to validate before saving\r\n * @param {string} cfgPath\r\n * @param {string} serverDataPath\r\n * @returns {object} recursive cfg structure\r\n */\r\nconst validateModifyServerConfig = async (cfgInputString, cfgPath, serverDataPath) => {\r\n    if (typeof cfgInputString !== 'string') {\r\n        throw new Error('cfgInputString expected to be string.');\r\n    }\r\n\r\n    //Parsing fxserver config & going through each command\r\n    const cfgAbsolutePath = resolveCFGFilePath(cfgPath, serverDataPath);\r\n    const parsedCommands = await parseRecursiveConfig(cfgInputString, cfgAbsolutePath, serverDataPath);\r\n    const { endpoints, errors, warnings, _toCommentOut } = await validateCommands(parsedCommands);\r\n\r\n    //Validating if a valid endpoint was detected\r\n    try {\r\n        const _connectEndpoint = getConnectEndpoint(endpoints);\r\n    } catch (error) {\r\n        errors.add(cfgAbsolutePath, error.message);\r\n    }\r\n\r\n    //If there are any errors\r\n    if (errors.count()) {\r\n        return {\r\n            success: false,\r\n            errors: errors.toMarkdown(),\r\n            warnings: warnings.toMarkdown(),\r\n        };\r\n    }\r\n\r\n    //Save file + backup\r\n    try {\r\n        logWarn(`Saving modified file '${cfgAbsolutePath}'`);\r\n        await fsp.copyFile(cfgAbsolutePath, `${cfgAbsolutePath}.bkp`);\r\n        await fsp.writeFile(cfgAbsolutePath, cfgInputString, 'utf8');\r\n    } catch (error) {\r\n        throw new Error(`Failed to edit 'server.cfg' with error: ${error.message}`);\r\n    }\r\n\r\n    return {\r\n        success: true,\r\n        warnings: warnings.toMarkdown(),\r\n    };\r\n};\r\n/*\r\n    fxrunner spawnServer:       recursive validate file, get endpoint\r\n    settings handleFXServer:    recursive validate file\r\n    setup handleValidateCFGFile:    recursive validate file\r\n    setup handleSaveLocal:      recursive validate file\r\n\r\n    cfgEditor CFGEditorSave:    validate string, save\r\n    deployer handleSaveConfig:  validate string, save *\r\n*/\r\n\r\n\r\nmodule.exports = {\r\n    findLikelyCFGPath,\r\n    resolveCFGFilePath,\r\n    readRawCFGFile,\r\n    readLineCommands,\r\n    parseRecursiveConfig,\r\n    validateFixServerConfig,\r\n    validateModifyServerConfig,\r\n};\r\n\r\n/*\r\n\r\n# Endpoints test cases:\r\n/\"\\[?(([0-9.]{7,15})|([a-z0-9:]{2,29}))\\]?:(\\d{1,5})\"/gmi\r\n\r\n# default\r\n\"0.0.0.0:30120\"\r\n\"[0.0.0.0]:30120\"\r\n\"0.0.0.0\"\r\n\"[0.0.0.0]\"\r\n\r\n# ipv6/ipv4\r\n\"[::]:30120\"\r\n\":::30120\"\r\n\"[::]\"\r\n\r\n# ipv6 only\r\n\"fe80::4cec:1264:187e:ce2b:30120\"\r\n\"[fe80::4cec:1264:187e:ce2b]:30120\"\r\n\"::1:30120\"\r\n\"[::1]:30120\"\r\n\"[fe80::4cec:1264:187e:ce2b]\"\r\n\"::1\"\r\n\"[::1]\"\r\n\r\n# fxserver doesn't accept\r\n\"::1.30120\"\r\n\"::1 port 30120\"\r\n\"::1p30120\"\r\n\"::1#30120\"\r\n\"::\"\r\n\r\n# fxserver misreads last part as a port\r\n\"fe80::4cec:1264:187e:ce2b\"\r\n\r\n*/\r\n\n\n//# sourceURL=webpack://txadmin/./src/extras/fxsConfigHelper.js?")},"./src/extras/got.js":
/*!***************************!*\
  !*** ./src/extras/got.js ***!
  \***************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("const got = __webpack_require__(/*! got */ \"./node_modules/got/dist/source/index.js\");\r\n\r\n//Make sure this file is not included before GlobalData is set\r\n//doing so would poison the configuration due to node's modules cache\r\nif (typeof GlobalData === 'undefined') {\r\n    throw new Error('cannot instantiate got before GlobalData is set.');\r\n}\r\n\r\nmodule.exports = got.extend({\r\n    timeout: 5000,\r\n    headers: {\r\n        'User-Agent': `txAdmin ${GlobalData.txAdminVersion}`,\r\n    },\r\n    localAddress: GlobalData.forceInterface ? GlobalData.forceInterface : undefined,\r\n});\r\n\n\n//# sourceURL=webpack://txadmin/./src/extras/got.js?")},"./src/extras/helpers.js":
/*!*******************************!*\
  !*** ./src/extras/helpers.js ***!
  \*******************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst fs = __webpack_require__(/*! fs */ \"fs\");\r\nconst path = __webpack_require__(/*! path */ \"path\");\r\nlet xss; //can't be required before the dependency check\r\n//const log = (x) => process.stdout.write(JSON.stringify(x, null, 2) + '\\n');\r\n\r\n\r\n//================================================================\r\n/**\r\n * txAdmin in ASCII\r\n */\r\nlet __ascii;\r\nfunction txAdminASCII() {\r\n    //NOTE: precalculating the ascii art for efficiency\r\n    // const figlet = require('figlet');\r\n    // let ascii = figlet.textSync('txAdmin');\r\n    // let b64 = Buffer.from(ascii).toString('base64');\r\n    // console.log(b64);\r\n    if (!__ascii) {\r\n        const preCalculated = `ICBfICAgICAgICAgICAgXyAgICAgICBfICAgICAgICAgICBfICAgICAgIAogfCB8X19fICBfX\r\n    yAgIC8gXCAgIF9ffCB8XyBfXyBfX18gKF8pXyBfXyAgCiB8IF9fXCBcLyAvICAvIF8gXCAvIF9gIHwgJ18gYCBfIFx8IHwg\r\n    J18gXCAKIHwgfF8gPiAgPCAgLyBfX18gXCAoX3wgfCB8IHwgfCB8IHwgfCB8IHwgfAogIFxfXy9fL1xfXC9fLyAgIFxfXF9\r\n    fLF98X3wgfF98IHxffF98X3wgfF98CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA=`;\r\n        __ascii = Buffer.from(preCalculated, 'base64').toString('ascii');\r\n    }\r\n    return __ascii;\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Check if the packages in package.json were installed\r\n */\r\nfunction dependencyChecker() {\r\n    if (true) {\r\n        return;\r\n    }\r\n\r\n    try {\r\n        let rawFile = fs.readFileSync(GetResourcePath(GetCurrentResourceName()) + '/package.json');\r\n        let parsedFile = JSON.parse(rawFile);\r\n        let packages = Object.keys(parsedFile.dependencies);\r\n        let missing = [];\r\n        packages.forEach((package) => {\r\n            try {\r\n                /*require.resolve*/(__webpack_require__(\"./src/extras sync recursive\").resolve(package));\r\n            } catch (error) {\r\n                missing.push(package);\r\n            }\r\n        });\r\n        if (missing.length) {\r\n            console.log('[txAdmin:PreCheck] Cannot start txAdmin due to missing dependencies.');\r\n            console.log('[txAdmin:PreCheck] Make sure you executed \\'npm i\\'.');\r\n            console.log('[txAdmin:PreCheck] The following packages are missing: ' + missing.join(', '));\r\n            console.log();\r\n            console.log('[txAdmin:PreCheck] GO THE THE GITHUB RELEASES PAGE AND DOWNLOAD THE COMPILED ZIP FILE INSTEAD OF THE SOURCE');\r\n            process.exit();\r\n        }\r\n    } catch (error) {\r\n        console.log(`[txAdmin:PreCheck] Error reading or parsing package.json: ${error.message}`);\r\n        process.exit();\r\n    }\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Extracts hours and minutes from an string containing times\r\n * @param {string} schedule\r\n * @param {boolean} filter default true\r\n */\r\nfunction parseSchedule(schedule, filter = true) {\r\n    const times = (typeof schedule === 'string') ? schedule.split(',') : schedule;\r\n    let out = [];\r\n    times.forEach((time) => {\r\n        if (!time.length) return;\r\n        const regex = /^$|^([01]?[0-9]|2[0-3]):([0-5][0-9])$/gm;\r\n        let m = regex.exec(time.trim());\r\n        if (m === null) {\r\n            if (!filter) out.push(time);\r\n        } else {\r\n            out.push({\r\n                string: m[0],\r\n                hour: parseInt(m[1]),\r\n                minute: parseInt(m[2]),\r\n            });\r\n        }\r\n    });\r\n\r\n    return out;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n//================================================================\r\n/**\r\n * Redacts sv_licenseKey, steam_webApiKey and sv_tebexSecret from a string\r\n * @param {string} src\r\n */\r\nfunction redactApiKeys(src) {\r\n    if (typeof src !== 'string' || !src.length) return src;\r\n    return src\r\n        .replace(/licenseKey\\s+[\"']?(cfxk_\\w{1,60}_\\w{1,20}|\\w{32})[\"']?/gi, 'licenseKey [redacted cfx token]')\r\n        .replace(/steam_webApiKey\\s+[\"']?\\w{32}[\"']?/gi, 'steam_webApiKey [redacted steam token]')\r\n        .replace(/sv_tebexSecret\\s+[\"']?\\w{40}[\"']?/gi, 'sv_tebexSecret [redacted tebex token]');\r\n}\r\n\r\nmodule.exports = {\r\n    txAdminASCII,\r\n    dependencyChecker,\r\n    parseSchedule,\r\n    redactApiKeys,\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/extras/helpers.js?")},"./src/extras/recipeEngine.js":
/*!************************************!*\
  !*** ./src/extras/recipeEngine.js ***!
  \************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'RecipeEngine';\r\nconst { promisify } = __webpack_require__(/*! util */ \"util\");\r\nconst fs = __webpack_require__(/*! fs-extra */ \"./node_modules/fs-extra/lib/index.js\");\r\nconst fsp = (__webpack_require__(/*! fs */ \"fs\").promises); //starting to replace fse\r\nconst path = __webpack_require__(/*! path */ \"path\");\r\nconst stream = __webpack_require__(/*! stream */ \"stream\");\r\nconst StreamZip = __webpack_require__(/*! node-stream-zip */ \"./node_modules/node-stream-zip/node_stream_zip.js\");\r\nconst cloneDeep = __webpack_require__(/*! lodash/cloneDeep */ \"./node_modules/lodash/cloneDeep.js\");\r\nconst escapeRegExp = __webpack_require__(/*! lodash/escapeRegExp */ \"./node_modules/lodash/escapeRegExp.js\");\r\nconst mysql = __webpack_require__(/*! mysql2/promise */ \"./node_modules/mysql2/promise.js\");\r\nconst got = __webpack_require__(/*! ./got */ \"./src/extras/got.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ./console */ \"./src/extras/console.js\")(modulename);\r\n\r\n\r\n//Helper functions\r\nconst safePath = (base, suffix) => {\r\n    const safeSuffix = path.normalize(suffix).replace(/^(\\.\\.(\\/|\\\\|$))+/, '');\r\n    return path.join(base, safeSuffix);\r\n};\r\nconst isPathLinear = (pathInput) => {\r\n    return pathInput.match(/(\\.\\.(\\/|\\\\|$))+/g) === null;\r\n};\r\nconst isPathRoot = (pathInput) => {\r\n    return /^\\.[/\\\\]*$/.test(pathInput);\r\n};\r\nconst pathCleanTrail = (pathInput) => {\r\n    return pathInput.replace(/[/\\\\]+$/, '');\r\n};\r\nconst isPathValid = (pathInput, acceptRoot = true) => {\r\n    return (\r\n        typeof pathInput == 'string'\r\n        && pathInput.length\r\n        && isPathLinear(pathInput)\r\n        && (acceptRoot || !isPathRoot(pathInput))\r\n    );\r\n};\r\nconst replaceVars = (inputString, deployerCtx) => {\r\n    const allVars = Object.keys(deployerCtx);\r\n    for (const varName of allVars) {\r\n        const varNameReplacer = new RegExp(escapeRegExp(`{{${varName}}}`), 'g');\r\n        inputString = inputString.replace(varNameReplacer, deployerCtx[varName].toString());\r\n    }\r\n    return inputString;\r\n};\r\n\r\n\r\n/**\r\n * Downloads a file to a target path using streams\r\n */\r\nconst validatorDownloadFile = (options) => {\r\n    return (\r\n        typeof options.url == 'string'\r\n        && isPathValid(options.path)\r\n    );\r\n};\r\nconst taskDownloadFile = async (options, basePath, deployerCtx) => {\r\n    if (!validatorDownloadFile(options)) throw new Error('invalid options');\r\n    if (options.path.endsWith('/')) throw new Error('target filename not specified'); //FIXME: this should be on the validator\r\n\r\n    //Process and create target file/path\r\n    const destPath = safePath(basePath, options.path);\r\n    await fs.outputFile(destPath, 'file save attempt, please ignore or remove');\r\n\r\n    //Start file download and create write stream\r\n    deployerCtx.$step = 'before stream';\r\n    const gotOptions = {\r\n        timeout: { request: 150e3 },\r\n        retry: { limit: 5 },\r\n    };\r\n    const gotStream = got.stream(options.url, gotOptions);\r\n    gotStream.on('downloadProgress', (progress) => {\r\n        deployerCtx.$step = `downloading ${Math.round(progress.percent * 100)}%`;\r\n    });\r\n    const pipeline = promisify(stream.pipeline);\r\n    await pipeline(\r\n        gotStream,\r\n        fs.createWriteStream(destPath),\r\n    );\r\n    deployerCtx.$step = 'after stream';\r\n};\r\n\r\n\r\n/**\r\n * Downloads a github repository with an optional reference (branch, tag, commit hash) or subpath.\r\n * If the directory structure does not exist, it is created.\r\n */\r\nconst githubRepoSourceRegex = /^((https?:\\/\\/github\\.com\\/)?|@)?([\\w.\\-_]+)\\/([\\w.\\-_]+).*$/;\r\nconst validatorDownloadGithub = (options) => {\r\n    return (\r\n        typeof options.src == 'string'\r\n        && isPathValid(options.dest, false)\r\n        && (typeof options.ref == 'string' || typeof options.ref == 'undefined')\r\n        && (typeof options.subpath == 'string' || typeof options.subpath == 'undefined')\r\n    );\r\n};\r\nconst taskDownloadGithub = async (options, basePath, deployerCtx) => {\r\n    if (!validatorDownloadGithub(options)) throw new Error('invalid options');\r\n    //FIXME: caso seja eperm, tentar criar um arquivo na pasta e checar se funciona\r\n\r\n    //Parsing source\r\n    deployerCtx.$step = 'task start';\r\n    const srcMatch = options.src.match(githubRepoSourceRegex);\r\n    if (!srcMatch || !srcMatch[3] || !srcMatch[4]) throw new Error('invalid repository');\r\n    const repoOwner = srcMatch[3];\r\n    const repoName = srcMatch[4];\r\n\r\n    //Setting git ref\r\n    let reference;\r\n    if (options.ref) {\r\n        reference = options.ref;\r\n    } else {\r\n        const data = await got.get(`https://api.github.com/repos/${repoOwner}/${repoName}`, { timeout: 15e3 }).json();\r\n        if (typeof data !== 'object' || !data.default_branch) {\r\n            throw new Error('reference not set, and wasn ot able to detect using github\\'s api');\r\n        }\r\n        reference = data.default_branch;\r\n    }\r\n    deployerCtx.$step = 'ref set';\r\n\r\n    //Preparing vars\r\n    const downURL = `https://api.github.com/repos/${repoOwner}/${repoName}/zipball/${reference}`;\r\n    const tmpFilePath = path.join(basePath, `.${(Date.now() % 100000000).toString(36)}.download`);\r\n    const destPath = safePath(basePath, options.dest);\r\n\r\n    //Downloading file\r\n    deployerCtx.$step = 'before stream';\r\n    const gotOptions = {\r\n        timeout: { request: 150e3 },\r\n        retry: { limit: 5 },\r\n    };\r\n    const gotStream = got.stream(downURL, gotOptions);\r\n    gotStream.on('downloadProgress', (progress) => {\r\n        deployerCtx.$step = `downloading ${Math.round(progress.percent * 100)}%`;\r\n    });\r\n    const pipeline = promisify(stream.pipeline);\r\n    await pipeline(\r\n        gotStream,\r\n        fs.createWriteStream(tmpFilePath),\r\n    );\r\n    deployerCtx.$step = 'after stream';\r\n\r\n    //Extracting files\r\n    const zip = new StreamZip.async({ file: tmpFilePath });\r\n    const entries = Object.values(await zip.entries());\r\n    if (!entries.length || !entries[0].isDirectory) throw new Error('unexpected zip structure');\r\n    const zipSubPath = path.posix.join(entries[0].name, options.subpath || '');\r\n    deployerCtx.$step = 'zip parsed';\r\n    await fsp.mkdir(destPath, { recursive: true });\r\n    deployerCtx.$step = 'dest path created';\r\n    await zip.extract(zipSubPath, destPath);\r\n    deployerCtx.$step = 'zip extracted';\r\n    await zip.close();\r\n    deployerCtx.$step = 'zip closed';\r\n\r\n    //Removing temp path\r\n    await fs.remove(tmpFilePath);\r\n    deployerCtx.$step = 'task finished';\r\n};\r\n\r\n\r\n/**\r\n * Removes a file or directory. The directory can have contents. If the path does not exist, silently does nothing.\r\n */\r\nconst validatorRemovePath = (options) => {\r\n    return (\r\n        isPathValid(options.path, false)\r\n    );\r\n};\r\nconst taskRemovePath = async (options, basePath, deployerCtx) => {\r\n    if (!validatorRemovePath(options)) throw new Error('invalid options');\r\n\r\n    //Process and create target file/path\r\n    const targetPath = safePath(basePath, options.path);\r\n\r\n    //NOTE: being extra safe about not deleting itself\r\n    const cleanBasePath = pathCleanTrail(path.normalize(basePath));\r\n    if (cleanBasePath == targetPath) throw new Error('cannot remove base folder');\r\n    await fs.remove(targetPath);\r\n};\r\n\r\n\r\n/**\r\n * Ensures that the directory exists. If the directory structure does not exist, it is created.\r\n */\r\nconst validatorEnsureDir = (options) => {\r\n    return (\r\n        isPathValid(options.path, false)\r\n    );\r\n};\r\nconst taskEnsureDir = async (options, basePath, deployerCtx) => {\r\n    if (!validatorEnsureDir(options)) throw new Error('invalid options');\r\n\r\n    //Process and create target file/path\r\n    const destPath = safePath(basePath, options.path);\r\n    await fs.ensureDir(destPath);\r\n};\r\n\r\n\r\n/**\r\n * Extracts a ZIP file to a targt folder.\r\n * NOTE: wow that was not easy to pick a library!\r\n *  - tar: no zip files\r\n *  - minizlib: terrible docs, probably too low level\r\n *  - yauzl: deprecation warning, slow\r\n *  - extract-zip: deprecation warning, slow due to yauzl\r\n *  - jszip: it's more a browser thing than node, doesn't appear to have an extract option\r\n *  - archiver: no extract\r\n *  - zip-stream: no extract\r\n *  - adm-zip: 50ms the old one, shitty\r\n *  - node-stream-zip: 180ms, acceptable\r\n *  - unzip: last update 7 years ago\r\n *  - unzipper: haven't tested\r\n *  - fflate: haven't tested\r\n *  - decompress-zip: haven't tested\r\n */\r\nconst validatorUnzip = (options) => {\r\n    return (\r\n        isPathValid(options.src, false)\r\n        && isPathValid(options.dest)\r\n    );\r\n};\r\nconst taskUnzip = async (options, basePath, deployerCtx) => {\r\n    if (!validatorUnzip(options)) throw new Error('invalid options');\r\n\r\n    const srcPath = safePath(basePath, options.src);\r\n    const destPath = safePath(basePath, options.dest);\r\n    await fsp.mkdir(destPath, { recursive: true });\r\n\r\n    const zip = new StreamZip.async({ file: srcPath });\r\n    const count = await zip.extract(null, destPath);\r\n    console.log(`Extracted ${count} entries`);\r\n    await zip.close();\r\n};\r\n\r\n\r\n/**\r\n * Moves a file or directory. The directory can have contents.\r\n */\r\nconst validatorMovePath = (options) => {\r\n    return (\r\n        isPathValid(options.src, false)\r\n        && isPathValid(options.dest, false)\r\n    );\r\n};\r\nconst taskMovePath = async (options, basePath, deployerCtx) => {\r\n    if (!validatorMovePath(options)) throw new Error('invalid options');\r\n\r\n    const srcPath = safePath(basePath, options.src);\r\n    const destPath = safePath(basePath, options.dest);\r\n    await fs.move(srcPath, destPath, {\r\n        overwrite: (options.overwrite === 'true' || options.overwrite === true),\r\n    });\r\n};\r\n\r\n\r\n/**\r\n * Copy a file or directory. The directory can have contents.\r\n * TODO: add a filter property and use a glob lib in the fs.copy filter function\r\n */\r\nconst validatorCopyPath = (options) => {\r\n    return (\r\n        isPathValid(options.src)\r\n        && isPathValid(options.dest)\r\n    );\r\n};\r\nconst taskCopyPath = async (options, basePath, deployerCtx) => {\r\n    if (!validatorCopyPath(options)) throw new Error('invalid options');\r\n\r\n    const srcPath = safePath(basePath, options.src);\r\n    const destPath = safePath(basePath, options.dest);\r\n    await fs.copy(srcPath, destPath, {\r\n        overwrite: (typeof options.overwrite !== 'undefined' && (options.overwrite === 'true' || options.overwrite === true)),\r\n    });\r\n};\r\n\r\n\r\n/**\r\n * Writes or appends data to a file. If not in the append mode, the file will be overwritten and the directory structure will be created if it doesn't exists.\r\n */\r\nconst validatorWriteFile = (options) => {\r\n    return (\r\n        typeof options.data == 'string'\r\n        && options.data.length\r\n        && isPathValid(options.file, false)\r\n    );\r\n};\r\nconst taskWriteFile = async (options, basePath, deployerCtx) => {\r\n    if (!validatorWriteFile(options)) throw new Error('invalid options');\r\n\r\n    const filePath = safePath(basePath, options.file);\r\n    if (options.append === 'true' || options.append === true) {\r\n        await fs.appendFile(filePath, options.data);\r\n    } else {\r\n        await fs.outputFile(filePath, options.data);\r\n    }\r\n};\r\n\r\n\r\n/**\r\n * Replaces a string in the target file or files array based on a search string.\r\n * Modes:\r\n *  - template: (default) target string will be processed for vars\r\n *  - literal: normal string search/replace without any vars\r\n *  - all_vars: all vars.toString() will be replaced. The search option will be ignored\r\n */\r\nconst validatorReplaceString = (options) => {\r\n    //Validate file\r\n    const fileList = (Array.isArray(options.file)) ? options.file : [options.file];\r\n    if (fileList.some((s) => !isPathValid(s, false))) {\r\n        return false;\r\n    }\r\n\r\n    //Validate mode\r\n    if (\r\n        typeof options.mode == 'undefined'\r\n        || options.mode == 'template'\r\n        || options.mode == 'literal'\r\n    ) {\r\n        return (\r\n            typeof options.search == 'string'\r\n            && options.search.length\r\n            && typeof options.replace == 'string'\r\n        );\r\n    } else if (options.mode == 'all_vars') {\r\n        return true;\r\n    } else {\r\n        return false;\r\n    }\r\n};\r\nconst taskReplaceString = async (options, basePath, deployerCtx) => {\r\n    if (!validatorReplaceString(options)) throw new Error('invalid options');\r\n\r\n    const fileList = (Array.isArray(options.file)) ? options.file : [options.file];\r\n    for (let i = 0; i < fileList.length; i++) {\r\n        const filePath = safePath(basePath, fileList[i]);\r\n        const original = await fs.readFile(filePath, 'utf8');\r\n        let changed;\r\n        if (typeof options.mode == 'undefined' || options.mode == 'template') {\r\n            changed = original.replace(new RegExp(options.search, 'g'), replaceVars(options.replace, deployerCtx));\r\n        } else if (options.mode == 'all_vars') {\r\n            changed = replaceVars(original, deployerCtx);\r\n        } else if (options.mode == 'literal') {\r\n            changed = original.replace(new RegExp(options.search, 'g'), options.replace);\r\n        }\r\n        await fs.writeFile(filePath, changed);\r\n    }\r\n};\r\n\r\n\r\n/**\r\n * Connects to a MySQL/MariaDB server and creates a database if the dbName variable is null.\r\n */\r\nconst validatorConnectDatabase = (options) => {\r\n    return true;\r\n};\r\nconst taskConnectDatabase = async (options, basePath, deployerCtx) => {\r\n    if (!validatorConnectDatabase(options)) throw new Error('invalid options');\r\n    if (typeof deployerCtx.dbHost !== 'string') throw new Error('invalid dbHost');\r\n    if (typeof deployerCtx.dbUsername !== 'string') throw new Error('invalid dbUsername');\r\n    if (typeof deployerCtx.dbPassword !== 'string') throw new Error('dbPassword should be a string');\r\n    if (typeof deployerCtx.dbName !== 'string') throw new Error('dbName should be a string');\r\n    if (typeof deployerCtx.dbDelete !== 'boolean') throw new Error('dbDelete should be a boolean');\r\n\r\n    //Connect to the database\r\n    const mysqlOptions = {\r\n        host: deployerCtx.dbHost,\r\n        user: deployerCtx.dbUsername,\r\n        password: deployerCtx.dbPassword,\r\n        multipleStatements: true,\r\n    };\r\n    deployerCtx.dbConnection = await mysql.createConnection(mysqlOptions);\r\n    const escapedDBName = mysql.escapeId(deployerCtx.dbName);\r\n    if (deployerCtx.dbDelete) {\r\n        await deployerCtx.dbConnection.query(`DROP DATABASE IF EXISTS ${escapedDBName}`);\r\n    }\r\n    await deployerCtx.dbConnection.query(`CREATE DATABASE IF NOT EXISTS ${escapedDBName} CHARACTER SET utf8 COLLATE utf8_general_ci`);\r\n    await deployerCtx.dbConnection.query(`USE ${escapedDBName}`);\r\n};\r\n\r\n\r\n/**\r\n * Runs a SQL query in the previously connected database. This query can be a file path or a string.\r\n */\r\nconst validatorQueryDatabase = (options) => {\r\n    if (typeof options.file !== 'undefined' && typeof options.query !== 'undefined') return false;\r\n    if (typeof options.file == 'string') return isPathValid(options.file, false);\r\n    if (typeof options.query == 'string') return options.query.length;\r\n    return false;\r\n};\r\nconst taskQueryDatabase = async (options, basePath, deployerCtx) => {\r\n    if (!validatorQueryDatabase(options)) throw new Error('invalid options');\r\n    if (!deployerCtx.dbConnection) throw new Error('Database connection not found. Run connect_database before query_database');\r\n\r\n    let sql;\r\n    if (options.file) {\r\n        const filePath = safePath(basePath, options.file);\r\n        sql = await fs.readFile(filePath, 'utf8');\r\n    } else {\r\n        sql = options.query;\r\n    }\r\n    await deployerCtx.dbConnection.query(sql);\r\n};\r\n\r\n\r\n/**\r\n * Loads variables from a json file to the context.\r\n */\r\nconst validatorLoadVars = (options) => {\r\n    return isPathValid(options.src, false);\r\n};\r\nconst taskLoadVars = async (options, basePath, deployerCtx) => {\r\n    if (!validatorLoadVars(options)) throw new Error('invalid options');\r\n\r\n    const srcPath = safePath(basePath, options.src);\r\n    const rawData = await fs.readFile(srcPath, 'utf8');\r\n    const inData = JSON.parse(rawData);\r\n    inData.dbConnection = undefined;\r\n    Object.assign(deployerCtx, inData);\r\n};\r\n\r\n\r\n/**\r\n * DEBUG Just wastes time /shrug\r\n */\r\nconst validatorWasteTime = (options) => {\r\n    return (typeof options.seconds == 'number');\r\n};\r\nconst taskWasteTime = (options, basePath, deployerCtx) => {\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            resolve(true);\r\n        }, options.seconds * 1000);\r\n    });\r\n};\r\n\r\n\r\n/**\r\n * DEBUG Fail fail fail :o\r\n */\r\nconst taskFailTest = async (options, basePath, deployerCtx) => {\r\n    throw new Error('test error :p');\r\n};\r\n\r\n\r\n/**\r\n * DEBUG logs all ctx vars\r\n */\r\nconst taskDumpVars = async (options, basePath, deployerCtx) => {\r\n    const toDump = cloneDeep(deployerCtx);\r\n    toDump.dbConnection = (toDump.dbConnection && toDump.dbConnection.constructor && toDump.dbConnection.constructor.name) ? toDump.dbConnection.constructor.name : undefined;\r\n    dir(toDump);\r\n};\r\n\r\n\r\n/*\r\nDONE:\r\n    - download_file\r\n    - remove_path (file or folder)\r\n    - ensure_dir\r\n    - unzip\r\n    - move_path (file or folder)\r\n    - copy_path (file or folder)\r\n    - write_file (with option to append only)\r\n    - replace_string (single or array)\r\n    - connect_database (connects to mysql, creates db if not set)\r\n    - query_database (file or string)\r\n    - download_github (with ref and subpath)\r\n    - load_vars\r\n\r\nDEBUG:\r\n    - waste_time\r\n    - fail_test\r\n    - dump_vars\r\n\r\nTODO:\r\n    - ??????\r\n*/\r\n\r\n\r\n//Exports\r\nmodule.exports = {\r\n    download_file: {\r\n        validate: validatorDownloadFile,\r\n        run: taskDownloadFile,\r\n        timeoutSeconds: 180,\r\n    },\r\n    download_github: {\r\n        validate: validatorDownloadGithub,\r\n        run: taskDownloadGithub,\r\n        timeoutSeconds: 180,\r\n    },\r\n    remove_path: {\r\n        validate: validatorRemovePath,\r\n        run: taskRemovePath,\r\n        timeoutSeconds: 15,\r\n    },\r\n    ensure_dir: {\r\n        validate: validatorEnsureDir,\r\n        run: taskEnsureDir,\r\n        timeoutSeconds: 15,\r\n    },\r\n    unzip: {\r\n        validate: validatorUnzip,\r\n        run: taskUnzip,\r\n        timeoutSeconds: 180,\r\n    },\r\n    move_path: {\r\n        validate: validatorMovePath,\r\n        run: taskMovePath,\r\n        timeoutSeconds: 180,\r\n    },\r\n    copy_path: {\r\n        validate: validatorCopyPath,\r\n        run: taskCopyPath,\r\n        timeoutSeconds: 180,\r\n    },\r\n    write_file: {\r\n        validate: validatorWriteFile,\r\n        run: taskWriteFile,\r\n        timeoutSeconds: 15,\r\n    },\r\n    replace_string: {\r\n        validate: validatorReplaceString,\r\n        run: taskReplaceString,\r\n        timeoutSeconds: 15,\r\n    },\r\n    connect_database: {\r\n        validate: validatorConnectDatabase,\r\n        run: taskConnectDatabase,\r\n        timeoutSeconds: 30,\r\n    },\r\n    query_database: {\r\n        validate: validatorQueryDatabase,\r\n        run: taskQueryDatabase,\r\n        timeoutSeconds: 90,\r\n    },\r\n    load_vars: {\r\n        validate: validatorLoadVars,\r\n        run: taskLoadVars,\r\n        timeoutSeconds: 5,\r\n    },\r\n\r\n    //DEBUG only\r\n    waste_time: {\r\n        validate: validatorWasteTime,\r\n        run: taskWasteTime,\r\n        timeoutSeconds: 300,\r\n    },\r\n    fail_test: {\r\n        validate: (() => true),\r\n        run: taskFailTest,\r\n        timeoutSeconds: 300,\r\n    },\r\n    dump_vars: {\r\n        validate: (() => true),\r\n        run: taskDumpVars,\r\n        timeoutSeconds: 5,\r\n    },\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/extras/recipeEngine.js?")},"./src/extras/setupProfile.js":
/*!************************************!*\
  !*** ./src/extras/setupProfile.js ***!
  \************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'SetupProfile';\r\nconst fs = __webpack_require__(/*! fs-extra */ \"./node_modules/fs-extra/lib/index.js\");\r\nconst path = __webpack_require__(/*! path */ \"path\");\r\nconst chalk = __webpack_require__(/*! chalk */ \"./node_modules/chalk/source/index.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ./console */ \"./src/extras/console.js\")(modulename);\r\n\r\n//Helpers\r\nconst printDivider = () => { log('='.repeat(57)); };\r\n\r\n//Default config structure\r\nconst defaultConfig = {\r\n    global: {\r\n        verbose: false,\r\n        serverName: null,\r\n        language: 'en',\r\n    },\r\n    logger: {},\r\n    monitor: {\r\n        restarterSchedule: [],\r\n    },\r\n    webServer: {},\r\n    discordBot: {\r\n        enabled: false,\r\n        token: null,\r\n        announceChannel: null,\r\n    },\r\n    fxRunner: {\r\n        serverDataPath: null,\r\n        cfgPath: null,\r\n        autostart: true,\r\n    },\r\n};\r\n\r\n\r\n//================================================================\r\nmodule.exports = (osType, fxServerPath, fxServerVersion, serverProfile, profilePath) => {\r\n    printDivider();\r\n    //Sanity check presence of profile\r\n    if (fs.existsSync(profilePath)) {\r\n        logError(`There is already a profile named '${serverProfile}'.`);\r\n        process.exit();\r\n    }\r\n\r\n    //Create new profile folder\r\n    log('Creating new profile folder...');\r\n    try {\r\n        const jsonConfig = JSON.stringify(defaultConfig, null, 2);\r\n        fs.mkdirSync(profilePath);\r\n        fs.mkdirSync(`${profilePath}/logs/`);\r\n        fs.mkdirSync(`${profilePath}/data/`);\r\n        fs.writeFileSync(`${profilePath}/config.json`, jsonConfig);\r\n    } catch (error) {\r\n        logError(`Failed to set up folder structure in '${profilePath}' with error: ${error.message}`);\r\n        process.exit();\r\n    }\r\n    logOk(`Server profile was saved in '${profilePath}'`);\r\n\r\n\r\n    //Saving start.bat\r\n    if (osType == 'windows') {\r\n        try {\r\n            const batData = `@echo off\r\n\"${fxServerPath}/FXServer.exe\" +set serverProfile \"${serverProfile}\"\r\npause`;\r\n            const batFolder = path.resolve(fxServerPath, '..');\r\n            const batPath  = path.join(batFolder, `start_${fxServerVersion}_${serverProfile}.bat`);\r\n            fs.writeFileSync(batPath, batData);\r\n            logOk(`You can use ${chalk.inverse(batPath)} to start this profile.`);\r\n        } catch (error) {\r\n            logWarn(`Failed to create 'start_${fxServerVersion}_${serverProfile}.bat' with error: ${error.message}`);\r\n        }\r\n    }\r\n    printDivider();\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/extras/setupProfile.js?")},"./src/extras/updateChecker.js":
/*!*************************************!*\
  !*** ./src/extras/updateChecker.js ***!
  \*************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:updateChecker';\r\nconst got = __webpack_require__(/*! ../extras/got */ \"./src/extras/got.js\");\r\nconst semver = __webpack_require__(/*! semver */ \"./node_modules/semver/index.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n//Helpers\r\nconst now = () => { return Math.round(Date.now() / 1000); };\r\n\r\n/*\r\n    TODO:\r\n    Create an page with the changelog, that queries for the following endpoint and caches it for 15 minutes:\r\n        https://changelogs-live.fivem.net/api/changelog/versions/2385/2375?tag=server\r\n    Maybe even grab the data from commits:\r\n        https://changelogs-live.fivem.net/api/changelog/versions/5562\r\n    Other relevant apis:\r\n        https://changelogs-live.fivem.net/api/changelog/versions/win32/server? (the one being used below)\r\n        https://changelogs-live.fivem.net/api/changelog/versions\r\n        https://api.github.com/repos/tabarra/txAdmin/releases (changelog in [].body)\r\n\r\n    NOTE: old logic\r\n    if == recommended, you're fine\r\n    if > recommended && < optional, pls update to optional\r\n    if == optional, you're fine\r\n    if > optional && < latest, pls update to latest\r\n    if == latest, duh\r\n    if < critical, BIG WARNING\r\n*/\r\n\r\nmodule.exports = async () => {\r\n    let apiResponse;\r\n    try {\r\n        //perform request - cache busting every ~1.4h\r\n        const osTypeApiUrl = (GlobalData.osType == 'windows') ? 'win32' : 'linux';\r\n        const cacheBuster = Math.floor(now() / 5e3);\r\n        const reqUrl = `https://changelogs-live.fivem.net/api/changelog/versions/${osTypeApiUrl}/server?${cacheBuster}`;\r\n        apiResponse = await got.get(reqUrl).json();\r\n\r\n        //validate response\r\n        if (!apiResponse) throw new Error('request failed');\r\n        const requiredFields = [\r\n            'recommended',\r\n            'recommended_download',\r\n            'recommended_txadmin',\r\n            'optional',\r\n            'optional_download',\r\n            'optional_txadmin',\r\n            'latest',\r\n            'latest_download',\r\n            'latest_txadmin',\r\n            'critical',\r\n            'critical_download',\r\n            'critical_txadmin',\r\n        ];\r\n        const missing = requiredFields.find((x) => !apiResponse.hasOwnProperty(x));\r\n        if (missing) {\r\n            throw new Error(`expected prop ${missing} not found in api response.`);\r\n        }\r\n    } catch (error) {\r\n        if (GlobalData.verbose) logWarn(`Failed to retrieve FXServer/txAdmin update data with error: ${error.message}`);\r\n        if (globals.databus.updateChecker === null) globals.databus.updateChecker = false;\r\n        return;\r\n    }\r\n\r\n    //Checking txAdmin version\r\n    let txOutput = false;\r\n    try {\r\n        const semverDiff = semver.diff(GlobalData.txAdminVersion, apiResponse.latest_txadmin);\r\n        if (!GlobalData.txAdminVersion.includes('-') && semverDiff) {\r\n            logError('This version of txAdmin is outdated.');\r\n            logError('Please update as soon as possible.');\r\n            logError('For more information: https://discord.gg/uAmsGa2');\r\n            txOutput = {\r\n                semverDiff,\r\n                latest: apiResponse.latest_txadmin,\r\n                color: (semverDiff === 'patch') ? 'warning' : 'danger',\r\n            };\r\n        }\r\n    } catch (error) {\r\n        logWarn('Error checking for txAdmin updates. Enable verbosity for more information.');\r\n        if (GlobalData.verbose) dir(error);\r\n    }\r\n\r\n    //Checking FXServer version\r\n    //FIXME: logic copied from dashboard webroute, adapt to new thing\r\n    let fxsOutput = false;\r\n    try {\r\n        if (GlobalData.fxServerVersion < apiResponse.critical) {\r\n            fxsOutput = {\r\n                color: 'danger',\r\n                message: 'A critical update is available for FXServer, you should update now.',\r\n            };\r\n            if (apiResponse.critical > apiResponse.recommended) {\r\n                fxsOutput.subtext = `critical update ${GlobalData.fxServerVersion} ➤ ${apiResponse.critical}`;\r\n                fxsOutput.artifactsLink = apiResponse.critical_download;\r\n            } else {\r\n                fxsOutput.subtext = `recommended update ${GlobalData.fxServerVersion} ➤ ${apiResponse.recommended}`;\r\n                fxsOutput.artifactsLink = apiResponse.recommended_download;\r\n            }\r\n        } else if (GlobalData.fxServerVersion < apiResponse.recommended) {\r\n            fxsOutput = {\r\n                color: 'warning',\r\n                message: 'A recommended update is available for FXServer, you should update.',\r\n                subtext: `recommended update ${GlobalData.fxServerVersion} ➤ ${apiResponse.recommended}`,\r\n                artifactsLink: apiResponse.recommended_download,\r\n            };\r\n        } else if (GlobalData.fxServerVersion < apiResponse.optional) {\r\n            fxsOutput = {\r\n                color: 'info',\r\n                message: 'An optional update is available for FXServer.',\r\n                subtext: `optional update ${GlobalData.fxServerVersion} ➤ ${apiResponse.optional}`,\r\n                artifactsLink: apiResponse.optional_download,\r\n            };\r\n        }\r\n    } catch (error) {\r\n        logWarn('Error checking for FXServer updates. Enable verbosity for more information.');\r\n        if (GlobalData.verbose) dir(error);\r\n    }\r\n\r\n    //Output\r\n    globals.databus.updateChecker = {\r\n        txadmin: txOutput,\r\n        fxserver: fxsOutput,\r\n    };\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/extras/updateChecker.js?")},"./src/extras/windowsReleaseAsync.js":
/*!*******************************************!*\
  !*** ./src/extras/windowsReleaseAsync.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("/*\r\n    NOTE: this is straight from @sindresorhus/windows-release, but with async functions.\r\n            I have windows-release mostly just so I know when there are updates to it.\r\n*/\r\nconst os = __webpack_require__(/*! os */ \"os\");\r\nconst execa = __webpack_require__(/*! execa */ \"./node_modules/execa/index.js\");\r\n\r\n// Reference: https://www.gaijin.at/en/lstwinver.php\r\nconst names = new Map([\r\n    ['11.0', '11'],\r\n    ['10.0', '10'],\r\n    ['6.3', '8.1'],\r\n    ['6.2', '8'],\r\n    ['6.1', '7'],\r\n    ['6.0', 'Vista'],\r\n    ['5.2', 'Server 2003'],\r\n    ['5.1', 'XP'],\r\n    ['5.0', '2000'],\r\n    ['4.9', 'ME'],\r\n    ['4.1', '98'],\r\n    ['4.0', '95'],\r\n]);\r\n\r\nconst windowsReleaseAsync = async (release) => {\r\n    const version = /\\d+\\.\\d/.exec(release || os.release());\r\n\r\n    if (release && !version) {\r\n        throw new Error('`release` argument doesn\\'t match `n.n`');\r\n    }\r\n\r\n    const ver = (version || [])[0];\r\n\r\n    // Server 2008, 2012, 2016, 2019 and 2022 versions are ambiguous with desktop versions and must be detected at runtime.\r\n    // If `release` is omitted or we're on a Windows system, and the version number is an ambiguous version\r\n    // then use `wmic` to get the OS caption: https://msdn.microsoft.com/en-us/library/aa394531(v=vs.85).aspx\r\n    // If `wmic` is obsolete (later versions of Windows 10), use PowerShell instead.\r\n    // If the resulting caption contains the year 2008, 2012, 2016 or 2019, it is a server version, so return a server OS name.\r\n    if ((!release || release === os.release()) && ['6.1', '6.2', '6.3', '10.0'].includes(ver)) {\r\n        let stdout;\r\n        try {\r\n            const out = await execa('wmic', ['os', 'get', 'Caption']);\r\n            stdout = out.stdout || '';\r\n        } catch {\r\n            const out = await execa('powershell', ['(Get-CimInstance -ClassName Win32_OperatingSystem).caption']);\r\n            stdout = out.stdout || '';\r\n        }\r\n\r\n        if (stdout.includes('Windows 11')) {\r\n            return '11';\r\n        }\r\n\r\n        const year = (stdout.match(/2008|2012|2016|2019|2022/) || [])[0];\r\n\r\n        if (year) {\r\n            return `Server ${year}`;\r\n        }\r\n    }\r\n\r\n    return names.get(ver);\r\n};\r\n\r\nmodule.exports = windowsReleaseAsync;\r\n\n\n//# sourceURL=webpack://txadmin/./src/extras/windowsReleaseAsync.js?")},"./src/extras/xss.js":
/*!***************************!*\
  !*** ./src/extras/xss.js ***!
  \***************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('//Require\r\nconst xssClass = __webpack_require__(/*! xss */ "./node_modules/xss/lib/index.js");\r\n\r\n\r\n/**\r\n * Returns a function with the passed whitelist parameter.\r\n * https://github.com/leizongmin/js-xss#whitelist\r\n */\r\nmodule.exports = (customWL = []) => {\r\n    const xss = new xssClass.FilterXSS({\r\n        whiteList: customWL,\r\n    });\r\n    return (x) => {return xss.process(x);};\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/extras/xss.js?')},"./src/extras sync recursive":
/*!**************************!*\
  !*** ./src/extras/ sync ***!
  \**************************/module=>{eval('function webpackEmptyContext(req) {\n\tvar e = new Error("Cannot find module \'" + req + "\'");\n\te.code = \'MODULE_NOT_FOUND\';\n\tthrow e;\n}\nwebpackEmptyContext.keys = () => ([]);\nwebpackEmptyContext.resolve = webpackEmptyContext;\nwebpackEmptyContext.id = "./src/extras sync recursive";\nmodule.exports = webpackEmptyContext;\n\n//# sourceURL=webpack://txadmin/./src/extras/_sync?')},"./src/index.js":
/*!**********************!*\
  !*** ./src/index.js ***!
  \**********************/(__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("//Checking Environment\r\ntry {\r\n    if (!IsDuplicityVersion()) throw new Error();\r\n} catch (error) {\r\n    console.log('txAdmin must be run inside fxserver in monitor mode.');\r\n    process.exit();\r\n}\r\n(__webpack_require__(/*! ./extras/helpers */ \"./src/extras/helpers.js\").dependencyChecker)();\r\n\r\n//Requires\r\nconst os = __webpack_require__(/*! os */ \"os\");\r\nconst fs = __webpack_require__(/*! fs */ \"fs\");\r\nconst path = __webpack_require__(/*! path */ \"path\");\r\nconst slash = __webpack_require__(/*! slash */ \"./node_modules/slash/index.js\");\r\nconst { dir, log, logOk, logWarn, logError, setTTYTitle } = __webpack_require__(/*! ./extras/console */ \"./src/extras/console.js\")();\r\n\r\n//Helpers\r\nconst cleanPath = (x) => { return slash(path.normalize(x)); };\r\nconst logDie = (x) => {\r\n    logError(x);\r\n    process.exit(1);\r\n};\r\nconst getBuild = (ver) => {\r\n    try {\r\n        const res = /v1\\.0\\.0\\.(\\d{4,5})\\s*/.exec(ver);\r\n        return parseInt(res[1]);\r\n    } catch (error) {\r\n        logError('It looks like you are running a custom build of fxserver.');\r\n        logError('And because of that, there is no guarantee that txAdmin will work properly.');\r\n        return 9999;\r\n    }\r\n};\r\n\r\n//==============================================================\r\n//Make sure this user knows what he is doing...\r\nconst txAdmin1337Convar = GetConvar('txAdmin1337', 'false').trim();\r\nif (false) {}\r\nconst isDeveloperMode = ( false && 0);\r\n\r\n//Get OSType\r\nconst osTypeVar = os.type();\r\nlet osType;\r\nif (osTypeVar == 'Windows_NT') {\r\n    osType = 'windows';\r\n} else if (osTypeVar == 'Linux') {\r\n    osType = 'linux';\r\n} else {\r\n    logDie(`OS type not supported: ${osTypeVar}`);\r\n}\r\n\r\n//Get resource name\r\nconst resourceName = GetCurrentResourceName();\r\n\r\n//Getting fxserver version\r\n//4380 = GetVehicleType was exposed server-side\r\n//4548 = more or less when node v16 was added\r\n//4574 = add missing PRINT_STRUCTURED_TRACE declaration\r\n//4574 = add resource field to PRINT_STRUCTURED_TRACE\r\nconst minFXServerVersion = 4574;\r\nconst fxServerVersion = getBuild(GetConvar('version', 'false'));\r\nif (!fxServerVersion) {\r\n    logDie(`This version of FXServer is NOT compatible with txAdmin. Please update it to build ${minFXServerVersion} or above. (version convar not set or in the wrong format)`);\r\n}\r\nif (fxServerVersion < minFXServerVersion) {\r\n    logDie(`This version of FXServer is too outdated and NOT compatible with txAdmin, please update to artifact/build ${minFXServerVersion} or newer!`);\r\n}\r\n\r\n//Getting txAdmin version\r\nconst txAdminVersion = GetResourceMetadata(resourceName, 'version');\r\nif (typeof txAdminVersion !== 'string' || txAdminVersion == 'null') {\r\n    logDie('txAdmin version not set or in the wrong format');\r\n}\r\n\r\n//Get txAdmin Resource Path\r\nlet txAdminResourcePath;\r\nconst txAdminResourcePathConvar = GetResourcePath(resourceName);\r\nif (typeof txAdminResourcePathConvar !== 'string' || txAdminResourcePathConvar == 'null') {\r\n    logDie('Could not resolve txAdmin resource path');\r\n} else {\r\n    txAdminResourcePath = cleanPath(txAdminResourcePathConvar);\r\n}\r\n\r\n//Get citizen Root\r\nconst citizenRootConvar = GetConvar('citizen_root', 'false');\r\nif (citizenRootConvar == 'false') {\r\n    logDie('citizen_root convar not set');\r\n}\r\nconst fxServerPath = cleanPath(citizenRootConvar);\r\n\r\n//Setting data path\r\nlet dataPath;\r\nconst txDataPathConvar = GetConvar('txDataPath', 'false');\r\nif (txDataPathConvar == 'false') {\r\n    const dataPathSuffix = (osType == 'windows') ? '..' : '../../../';\r\n    dataPath = cleanPath(path.join(fxServerPath, dataPathSuffix, 'txData'));\r\n} else {\r\n    dataPath = cleanPath(txDataPathConvar);\r\n}\r\ntry {\r\n    if (!fs.existsSync(dataPath)) fs.mkdirSync(dataPath);\r\n} catch (error) {\r\n    logDie(`Failed to check or create '${dataPath}' with error: ${error.message}`);\r\n}\r\n\r\n//Check paths for non-ASCII characters\r\n//NOTE: Non-ASCII in one of those paths (don't know which) will make NodeJS crash due to a bug in v8 (or something)\r\n//      when running localization methods like Date.toLocaleString().\r\n//      There was also an issue with the slash() lib and with the +exec on FXServer\r\nconst nonASCIIRegex = /[^\\x00-\\x80]+/;\r\nif (nonASCIIRegex.test(fxServerPath) || nonASCIIRegex.test(dataPath)) {\r\n    logError('Due to environmental restrictions, your paths CANNOT contain non-ASCII characters.');\r\n    logError('Example of non-ASCII characters: çâýå, ρέθ, ñäé, ēļæ, глж, เซิร์, 警告.');\r\n    logError('Please make sure FXServer is not in a path contaning those characters.');\r\n    logError(`If on windows, we suggest you moving the artifact to \"C:/fivemserver/${fxServerVersion}/\".`);\r\n    log(`FXServer path: ${fxServerPath}`);\r\n    log(`txData path: ${dataPath}`);\r\n    process.exit(1);\r\n}\r\n\r\n\r\n//Get Debug/Dev convars\r\nconst txAdminVerboseConvar = GetConvar('txAdminVerbose', 'false').trim();\r\nconst verbose = (['true', '1', 'on'].includes(txAdminVerboseConvar));\r\nconst txDebugPlayerlistGeneratorConvar = GetConvar('txDebugPlayerlistGenerator', 'false').trim();\r\nconst debugPlayerlistGenerator = (['true', '1', 'on'].includes(txDebugPlayerlistGeneratorConvar));\r\nconst txDebugExternalSourceConvar = GetConvar('txDebugExternalSource', 'false').trim();\r\nconst debugExternalSource = (txDebugExternalSourceConvar !== 'false') ? txDebugExternalSourceConvar : false;\r\n\r\n\r\n//Checking for Zap Configuration file\r\nconst zapCfgFile = path.join(dataPath, 'txAdminZapConfig.json');\r\nlet zapCfgData, isZapHosting, forceInterface, forceFXServerPort, txAdminPort, loginPageLogo, defaultMasterAccount, runtimeSecret, deployerDefaults;\r\nconst loopbackInterfaces = ['::1', '127.0.0.1', '127.0.1.1'];\r\nif (fs.existsSync(zapCfgFile)) {\r\n    log('Loading ZAP-Hosting configuration file.');\r\n    try {\r\n        zapCfgData = JSON.parse(fs.readFileSync(zapCfgFile));\r\n        isZapHosting = true;\r\n        forceInterface = zapCfgData.interface;\r\n        forceFXServerPort = zapCfgData.fxServerPort;\r\n        txAdminPort = zapCfgData.txAdminPort;\r\n        loginPageLogo = zapCfgData.loginPageLogo;\r\n        defaultMasterAccount = false;\r\n        deployerDefaults = {\r\n            license: zapCfgData.defaults.license,\r\n            maxClients: zapCfgData.defaults.maxClients,\r\n            mysqlHost: zapCfgData.defaults.mysqlHost,\r\n            mysqlUser: zapCfgData.defaults.mysqlUser,\r\n            mysqlPassword: zapCfgData.defaults.mysqlPassword,\r\n            mysqlDatabase: zapCfgData.defaults.mysqlDatabase,\r\n        };\r\n        if (zapCfgData.customer) {\r\n            if (typeof zapCfgData.customer.name !== 'string') throw new Error('customer.name is not a string.');\r\n            if (zapCfgData.customer.name.length < 3) throw new Error('customer.name too short.');\r\n            if (typeof zapCfgData.customer.password_hash !== 'string') throw new Error('customer.password_hash is not a string.');\r\n            if (!zapCfgData.customer.password_hash.startsWith('$2y$')) throw new Error('customer.password_hash is not a bcrypt hash.');\r\n            defaultMasterAccount = {\r\n                name: zapCfgData.customer.name,\r\n                password_hash: zapCfgData.customer.password_hash,\r\n            };\r\n        }\r\n        const runtimeSecretConvar = GetConvar('txAdminRTS', 'false').trim();\r\n        if (runtimeSecretConvar !== 'false') {\r\n            if (!/^[0-9a-f]{48}$/i.test(runtimeSecretConvar)) logDie('txAdminRTS is not valid.');\r\n            runtimeSecret = runtimeSecretConvar;\r\n        } else {\r\n            runtimeSecret = false;\r\n        }\r\n\r\n        loopbackInterfaces.push(forceInterface);\r\n\r\n        if (!isDeveloperMode) fs.unlinkSync(zapCfgFile);\r\n    } catch (error) {\r\n        logDie(`Failed to load with ZAP-Hosting configuration error: ${error.message}`);\r\n    }\r\n} else {\r\n    isZapHosting = false;\r\n    forceFXServerPort = false;\r\n    loginPageLogo = false;\r\n    defaultMasterAccount = false;\r\n    runtimeSecret = false;\r\n    deployerDefaults = false;\r\n\r\n    const txAdminPortConvar = GetConvar('txAdminPort', '40120').trim();\r\n    if (!/^\\d+$/.test(txAdminPortConvar)) logDie('txAdminPort is not valid.');\r\n    txAdminPort = parseInt(txAdminPortConvar);\r\n\r\n    const txAdminInterfaceConvar = GetConvar('txAdminInterface', 'false').trim();\r\n    if (txAdminInterfaceConvar == 'false') {\r\n        forceInterface = false;\r\n    } else {\r\n        if (!/^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/.test(txAdminInterfaceConvar)) logDie('txAdminInterface is not valid.');\r\n        forceInterface = txAdminInterfaceConvar;\r\n    }\r\n}\r\nif (verbose) dir({ isZapHosting, forceInterface, forceFXServerPort, txAdminPort, loginPageLogo, runtimeSecret, deployerDefaults });\r\n\r\n\r\n//Get profile name\r\nconst serverProfile = GetConvar('serverProfile', 'default').replace(/[^a-z0-9._-]/gi, '').trim();\r\nif (serverProfile.endsWith('.base')) {\r\n    logDie(`Looks like you the folder named '${serverProfile}' is actually a deployed base instead of a profile.`);\r\n}\r\nif (!serverProfile.length) {\r\n    logDie('Invalid server profile name. Are you using Google Translator on the instructions page? Make sure there are no additional spaces in your command.');\r\n}\r\n\r\n\r\n\r\n//Setting Global Data\r\nconst noLookAlikesAlphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZ';\r\nGlobalData = {\r\n    //Env\r\n    isDeveloperMode,\r\n    osType,\r\n    resourceName,\r\n    fxServerVersion,\r\n    txAdminVersion,\r\n\r\n    //Convars - default\r\n    txAdminResourcePath,\r\n    fxServerPath,\r\n    dataPath,\r\n    //Convars - Debug\r\n    verbose,\r\n    debugPlayerlistGenerator,\r\n    debugExternalSource,\r\n    //Convars - zap dependant\r\n    isZapHosting,\r\n    forceInterface,\r\n    forceFXServerPort,\r\n    txAdminPort,\r\n    loginPageLogo,\r\n    defaultMasterAccount,\r\n    runtimeSecret,\r\n    deployerDefaults,\r\n    loopbackInterfaces,\r\n\r\n    //Consts\r\n    validIdentifiers: {\r\n        steam: /^steam:1100001[0-9A-Fa-f]{8}$/,\r\n        license: /^license:[0-9A-Fa-f]{40}$/,\r\n        xbl: /^xbl:\\d{14,20}$/,\r\n        live: /^live:\\d{14,20}$/,\r\n        discord: /^discord:\\d{7,20}$/,\r\n        fivem: /^fivem:\\d{1,8}$/,\r\n    },\r\n    regexSvLicenseOld: /^\\w{32}$/,\r\n    regexSvLicenseNew: /^cfxk_\\w{1,60}_\\w{1,20}$/,\r\n    regexValidIP: /^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\r\n    regexActionID: new RegExp(`^[${noLookAlikesAlphabet}]{4}-[${noLookAlikesAlphabet}]{4}$`),\r\n    regexWhitelistReqID: new RegExp(`R[${noLookAlikesAlphabet}]{4}`),\r\n    noLookAlikesAlphabet,\r\n\r\n    //Vars\r\n    cfxUrl: null,\r\n    osDistro: null,\r\n};\r\n// NOTE: all variables set for monitor mode: monitorMode, version, serverRoot (cwd), citizen_root, citizen_dir\r\n\r\n//==============================================================\r\n//Starting txAdmin (have fun :p)\r\nsetTTYTitle(txAdminVersion, serverProfile);\r\nconst txAdmin = __webpack_require__(/*! ./txAdmin.js */ \"./src/txAdmin.js\");\r\nnew txAdmin(serverProfile);\r\n\r\n\r\n//==============================================================\r\n//Freeze detector - starts after 10 seconds\r\nsetTimeout(() => {\r\n    let hdTimer = Date.now();\r\n    setInterval(() => {\r\n        let now = Date.now();\r\n        if (now - hdTimer > 2000) {\r\n            let sep = '='.repeat(70);\r\n            setTimeout(() => {\r\n                logError(sep);\r\n                logError('Major VPS freeze/lag detected!');\r\n                logError('THIS IS NOT AN ERROR CAUSED BY TXADMIN!');\r\n                logError(sep);\r\n            }, 1000);\r\n        }\r\n        hdTimer = now;\r\n    }, 500);\r\n}, 10000);\r\n\r\n//Handle any stdio error\r\nprocess.stdin.on('error', (data) => { });\r\nprocess.stdout.on('error', (data) => { });\r\nprocess.stderr.on('error', (data) => { });\r\n\r\n//Handle \"the unexpected\"\r\nprocess.on('unhandledRejection', (err) => {\r\n    logError('Ohh nooooo - unhandledRejection');\r\n    logError(err.message);\r\n    dir(err.stack);\r\n});\r\nprocess.on('uncaughtException', function (err) {\r\n    logError('Ohh nooooo - uncaughtException');\r\n    logError(err.message);\r\n    dir(err.stack);\r\n});\r\nprocess.on('exit', (code) => {\r\n    log('Stopping txAdmin');\r\n});\r\n// Error.stackTraceLimit = 25;\r\n// process.on('warning', (warning) => {\r\n//     dir(warning);\r\n// });\r\n\n\n//# sourceURL=webpack://txadmin/./src/index.js?")},"./src/txAdmin.js":
/*!************************!*\
  !*** ./src/txAdmin.js ***!
  \************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval('//Requires\r\nconst fs = __webpack_require__(/*! fs */ "fs");\r\nconst path = __webpack_require__(/*! path */ "path");\r\nconst slash = __webpack_require__(/*! slash */ "./node_modules/slash/index.js");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ./extras/console */ "./src/extras/console.js")(`v${GlobalData.txAdminVersion}`);\r\nconst { printBanner } = __webpack_require__(/*! ./extras/banner */ "./src/extras/banner.js");\r\n\r\n//Helpers\r\nconst cleanPath = (x) => { return slash(path.normalize(x)); };\r\n\r\n\r\n// Long ago I wanted to replace this with dependency injection.\r\n// I Totally gave up.\r\nglobals = {\r\n    adminVault: null,\r\n    discordBot: null,\r\n    fxRunner: null,\r\n    logger: null,\r\n    dynamicAds: null,\r\n    monitor: null,\r\n    statsCollector: null,\r\n    translator: null,\r\n    webServer: null,\r\n    playerController: null,\r\n    config: null,\r\n    deployer: null,\r\n    info: {},\r\n\r\n    //NOTE: still not ideal, but since the extensions system changed entirely,\r\n    //      will have to rethink the plans for this variable.\r\n    databus: {\r\n        //internal\r\n        resourcesList: null,\r\n        updateChecker: null,\r\n        joinCheckHistory: [],\r\n\r\n        //stats\r\n        txStatsData: {\r\n            playerDBStats: null,\r\n            lastFD3Error: \'\',\r\n            monitorStats: {\r\n                heartBeatStats: {\r\n                    httpFailed: 0,\r\n                    fd3Failed: 0,\r\n                },\r\n                restartReasons: {\r\n                    close: 0,\r\n                    heartBeat: 0,\r\n                    healthCheck: 0,\r\n                },\r\n                bootSeconds: [],\r\n                freezeSeconds: [],\r\n            },\r\n            randIDFailures: 0,\r\n            pageViews: {},\r\n            httpCounter: {\r\n                current: 0,\r\n                max: 0,\r\n                log: [],\r\n            },\r\n            login: {\r\n                origins: {\r\n                    localhost: 0,\r\n                    cfxre: 0,\r\n                    ip: 0,\r\n                    other: 0,\r\n                    webpipe: 0,\r\n                },\r\n                methods: {\r\n                    discord: 0,\r\n                    citizenfx: 0,\r\n                    password: 0,\r\n                    zap: 0,\r\n                    nui: 0,\r\n                    iframe: 0,\r\n                },\r\n            },\r\n        },\r\n    },\r\n};\r\n\r\n\r\n/**\r\n * Main APP\r\n */\r\nmodule.exports = class txAdmin {\r\n    constructor(serverProfile) {\r\n        log(`Profile \'${serverProfile}\' starting...`);\r\n        globals.info.serverProfile = serverProfile;\r\n\r\n        //Check if the profile exists and call setup if it doesn\'t\r\n        const profilePath = cleanPath(path.join(GlobalData.dataPath, serverProfile));\r\n        if (!fs.existsSync(profilePath)) {\r\n            try {\r\n                const SetupProfile = __webpack_require__(/*! ./extras/setupProfile.js */ "./src/extras/setupProfile.js");\r\n                SetupProfile(GlobalData.osType, GlobalData.fxServerPath, GlobalData.fxServerVersion, serverProfile, profilePath);\r\n            } catch (error) {\r\n                logError(`Failed to create profile \'${serverProfile}\' with error: ${error.message}`);\r\n                process.exit();\r\n            }\r\n        }\r\n        globals.info.serverProfilePath = profilePath;\r\n\r\n        //Load Config Vault\r\n        let profileConfig;\r\n        try {\r\n            const ConfigVault = __webpack_require__(/*! ./components/configVault */ "./src/components/configVault.js");\r\n            globals.configVault = new ConfigVault(profilePath, serverProfile);\r\n            profileConfig = globals.configVault.getAll();\r\n            globals.config = profileConfig.global;\r\n        } catch (err) {\r\n            HandleFatalError(err, \'ConfigVault\');\r\n        }\r\n\r\n        //Start all modules\r\n        this.startAdminVault().catch((err) => {\r\n            HandleFatalError(err, \'AdminVault\');\r\n        });\r\n        this.startDiscordBot(profileConfig.discordBot).catch((err) => {\r\n            HandleFatalError(err, \'DiscordBot\');\r\n        });\r\n        this.startLogger(profileConfig.logger).catch((err) => {\r\n            HandleFatalError(err, \'Logger\');\r\n        });\r\n        this.startTranslator().catch((err) => {\r\n            HandleFatalError(err, \'Translator\');\r\n        });\r\n        this.startFXRunner(profileConfig.fxRunner).catch((err) => {\r\n            HandleFatalError(err, \'FXRunner\');\r\n        });\r\n        this.startDynamicAds().catch((err) => {\r\n            HandleFatalError(err, \'DynamicAds\');\r\n        });\r\n        this.startMonitor(profileConfig.monitor).catch((err) => {\r\n            HandleFatalError(err, \'Monitor\');\r\n        });\r\n        this.startStatsCollector(profileConfig.statsCollector).catch((err) => {\r\n            HandleFatalError(err, \'StatsCollector\');\r\n        });\r\n        this.startWebServer(profileConfig.webServer).catch((err) => {\r\n            HandleFatalError(err, \'WebServer\');\r\n        });\r\n        this.startPlayerController(profileConfig.playerController).catch((err) => {\r\n            HandleFatalError(err, \'PlayerController\');\r\n        });\r\n\r\n        //Once they all finish loading, the function below will print the banner\r\n        printBanner();\r\n\r\n        //NOTE: dependency order\r\n        //  - translator before monitor\r\n        //  - adminVault before webserver\r\n        //  - logger before fxrunner\r\n        //  - translator before fxrunner (for the locale string)\r\n        //  - authenticator before webserver\r\n\r\n        //Run Update Checker every 15 minutes\r\n        const updateChecker = __webpack_require__(/*! ./extras/updateChecker */ "./src/extras/updateChecker.js");\r\n        updateChecker();\r\n        setInterval(updateChecker, 15 * 60 * 1000);\r\n    }\r\n\r\n\r\n    //==============================================================\r\n    async startAdminVault() {\r\n        const AdminVault = __webpack_require__(/*! ./components/adminVault */ "./src/components/adminVault/index.js");\r\n        globals.adminVault = new AdminVault();\r\n    }\r\n\r\n    //==============================================================\r\n    async startDiscordBot(config) {\r\n        const DiscordBot = __webpack_require__(/*! ./components/discordBot */ "./src/components/discordBot/index.js");\r\n        globals.discordBot = new DiscordBot(config);\r\n    }\r\n\r\n    //==============================================================\r\n    async startLogger(config) {\r\n        const Logger = __webpack_require__(/*! ./components/logger */ "./src/components/logger/index.js");\r\n        globals.logger = new Logger(config);\r\n    }\r\n\r\n    //==============================================================\r\n    async startTranslator() {\r\n        const Translator = __webpack_require__(/*! ./components/translator */ "./src/components/translator.js");\r\n        globals.translator = new Translator();\r\n    }\r\n\r\n    //==============================================================\r\n    async startFXRunner(config) {\r\n        const FXRunner = __webpack_require__(/*! ./components/fxRunner */ "./src/components/fxRunner/index.js");\r\n        globals.fxRunner = new FXRunner(config);\r\n    }\r\n\r\n    //==============================================================\r\n    async startDynamicAds(config) {\r\n        const DynamicAds = __webpack_require__(/*! ./components/dynamicAds */ "./src/components/dynamicAds.js");\r\n        globals.dynamicAds = new DynamicAds(config);\r\n    }\r\n\r\n    //==============================================================\r\n    async startMonitor(config) {\r\n        const Monitor = __webpack_require__(/*! ./components/monitor */ "./src/components/monitor/index.js");\r\n        globals.monitor = new Monitor(config);\r\n    }\r\n\r\n    //==============================================================\r\n    async startStatsCollector(config) {\r\n        const StatsCollector = __webpack_require__(/*! ./components/statsCollector */ "./src/components/statsCollector/index.js");\r\n        globals.statsCollector = new StatsCollector(config);\r\n    }\r\n\r\n    //==============================================================\r\n    async startWebServer(config) {\r\n        const WebServer = __webpack_require__(/*! ./components/webServer */ "./src/components/webServer/index.js");\r\n        globals.webServer = new WebServer(config);\r\n    }\r\n\r\n    //==============================================================\r\n    //NOTE: this component name might change\r\n    async startPlayerController(config) {\r\n        const PlayerController = __webpack_require__(/*! ./components/playerController */ "./src/components/playerController/index.js");\r\n        globals.playerController = new PlayerController(config);\r\n    }\r\n};\r\n\r\n\r\n//==============================================================\r\nfunction HandleFatalError(error, componentName) {\r\n    if (error.message.includes(\'Cannot find module\') && "webpack" !== \'webpack\') {} else {\r\n        logError(`Error starting \'${componentName}\' module: ${error.message}`);\r\n        dir(error);\r\n    }\r\n\r\n    process.exit();\r\n}\r\n\n\n//# sourceURL=webpack://txadmin/./src/txAdmin.js?')},"./src/webroutes/adminManager/actions.js":
/*!***********************************************!*\
  !*** ./src/webroutes/adminManager/actions.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:AdminManagerActions';\r\nconst { customAlphabet } = __webpack_require__(/*! nanoid */ \"./node_modules/nanoid/index.cjs\");\r\nconst dict51 = __webpack_require__(/*! nanoid-dictionary/nolookalikes */ \"./node_modules/nanoid-dictionary/nolookalikes.js\");\r\nconst nanoid = customAlphabet(dict51, 20);\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\nconst got = __webpack_require__(/*! ../../extras/got */ \"./src/extras/got.js\");\r\n\r\n//Helper functions\r\nconst isUndefined = (x) => { return (typeof x === 'undefined'); };\r\nconst citizenfxIDRegex = /^\\w[\\w.-]{1,18}\\w$/;\r\nconst discordIDRegex = /^\\d{7,20}$/;\r\nconst nameRegex = citizenfxIDRegex;\r\nconst dangerousPerms = ['all_permissions', 'manage.admins', 'console.write', 'settings.write'];\r\n\r\n\r\n/**\r\n * Returns the output page containing the admins.\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function AdminManagerActions(ctx) {\r\n    //Sanity check\r\n    if (isUndefined(ctx.params.action)) {\r\n        return ctx.utils.error(400, 'Invalid Request');\r\n    }\r\n    let action = ctx.params.action;\r\n\r\n    //Check permissions\r\n    if (!ctx.utils.checkPermission('manage.admins', modulename)) {\r\n        return ctx.send({\r\n            type: 'danger',\r\n            message: 'You don\\'t have permission to execute this action.',\r\n        });\r\n    }\r\n\r\n    //Delegate to the specific action handler\r\n    if (action == 'add') {\r\n        return await handleAdd(ctx);\r\n    } else if (action == 'edit') {\r\n        return await handleEdit(ctx);\r\n    } else if (action == 'delete') {\r\n        return await handleDelete(ctx);\r\n    } else if (action == 'getAddModal') {\r\n        return await handleGetModal(ctx, true);\r\n    } else if (action == 'getEditModal') {\r\n        return await handleGetModal(ctx, false);\r\n    } else {\r\n        return ctx.send({\r\n            type: 'danger',\r\n            message: 'Unknown action.',\r\n        });\r\n    }\r\n};\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle Add\r\n * @param {object} ctx\r\n */\r\nasync function handleAdd(ctx) {\r\n    //Sanity check\r\n    if (\r\n        typeof ctx.request.body.name !== 'string'\r\n        || typeof ctx.request.body.citizenfxID !== 'string'\r\n        || typeof ctx.request.body.discordID !== 'string'\r\n        || isUndefined(ctx.request.body.permissions)\r\n    ) {\r\n        return ctx.utils.error(400, 'Invalid Request - missing parameters');\r\n    }\r\n\r\n    //Prepare and filter variables\r\n    let name = ctx.request.body.name.trim();\r\n    let password = nanoid();\r\n    let citizenfxID = ctx.request.body.citizenfxID.trim();\r\n    let discordID = ctx.request.body.discordID.trim();\r\n    let permissions = (Array.isArray(ctx.request.body.permissions)) ? ctx.request.body.permissions : [];\r\n    permissions = permissions.filter((x) => { return typeof x === 'string';});\r\n    if (permissions.includes('all_permissions')) permissions = ['all_permissions'];\r\n\r\n\r\n    //Validate name\r\n    if (!nameRegex.test(name)) {\r\n        return ctx.send({type: 'danger', message: 'Invalid username, must have between 3 and 20 characters.'});\r\n    }\r\n\r\n    //Validate & translate FiveM ID\r\n    let citizenfxData = false;\r\n    if (citizenfxID.length) {\r\n        try {\r\n            if (GlobalData.validIdentifiers.fivem.test(citizenfxID)) {\r\n                const id = citizenfxID.split(':')[1];\r\n                const res = await got(`https://policy-live.fivem.net/api/getUserInfo/${id}`, {timeout: 6000}).json();\r\n                if (!res.username || !res.username.length) {\r\n                    return ctx.send({type: 'danger', message: 'Invalid CitizenFX ID1'});\r\n                }\r\n                citizenfxData = {\r\n                    id: res.username,\r\n                    identifier: citizenfxID,\r\n                };\r\n            } else if (citizenfxIDRegex.test(citizenfxID)) {\r\n                const res = await got(`https://forum.cfx.re/u/${citizenfxID}.json`, {timeout: 6000}).json();\r\n                if (!res.user || typeof res.user.id !== 'number') {\r\n                    return ctx.send({type: 'danger', message: 'Invalid CitizenFX ID2'});\r\n                }\r\n                citizenfxData = {\r\n                    id: citizenfxID,\r\n                    identifier: `fivem:${res.user.id}`,\r\n                };\r\n            } else {\r\n                return ctx.send({type: 'danger', message: 'Invalid CitizenFX ID3'});\r\n            }\r\n        } catch (error) {\r\n            logError(`Failed to resolve CitizenFX ID to game identifier with error: ${error.message}`);\r\n        }\r\n    }\r\n\r\n    //Validate Discord ID\r\n    let discordData = false;\r\n    if (discordID.length) {\r\n        if (!discordIDRegex.test(discordID)) return ctx.send({type: 'danger', message: 'Invalid Discord ID'});\r\n        discordData = {\r\n            id: discordID,\r\n            identifier: `discord:${discordID}`,\r\n        };\r\n    }\r\n\r\n    //Check for privilege escalation\r\n    if (!ctx.session.auth.master && !ctx.session.auth.permissions.includes('all_permissions')) {\r\n        const deniedPerms = permissions.filter((x) => !ctx.session.auth.permissions.includes(x));\r\n        if (deniedPerms.length) {\r\n            return ctx.send({\r\n                type: 'danger',\r\n                message: `You cannot give permissions you do not have:<br>${deniedPerms.join(', ')}`,\r\n            });\r\n        }\r\n    }\r\n\r\n    //Add admin and give output\r\n    try {\r\n        await globals.adminVault.addAdmin(name, citizenfxData, discordData, password, permissions);\r\n        ctx.utils.logAction(`Adding admin '${name}'.`);\r\n        return ctx.send({type: 'showPassword', password});\r\n    } catch (error) {\r\n        return ctx.send({type: 'danger', message: error.message});\r\n    }\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle Edit\r\n * @param {object} ctx\r\n */\r\nasync function handleEdit(ctx) {\r\n    //Sanity check\r\n    if (\r\n        typeof ctx.request.body.name !== 'string'\r\n        || typeof ctx.request.body.citizenfxID !== 'string'\r\n        || typeof ctx.request.body.discordID !== 'string'\r\n        || isUndefined(ctx.request.body.permissions)\r\n    ) {\r\n        return ctx.utils.error(400, 'Invalid Request - missing parameters');\r\n    }\r\n\r\n    //Prepare and filter variables\r\n    const name = ctx.request.body.name.trim();\r\n    const citizenfxID = ctx.request.body.citizenfxID.trim();\r\n    const discordID = ctx.request.body.discordID.trim();\r\n    const editingSelf = (ctx.session.auth.username.toLowerCase() === name.toLowerCase());\r\n    let permissions;\r\n    if (!editingSelf) {\r\n        if (Array.isArray(ctx.request.body.permissions)) {\r\n            permissions = ctx.request.body.permissions.filter((x) => { return typeof x === 'string';});\r\n            if (permissions.includes('all_permissions')) permissions = ['all_permissions'];\r\n        } else {\r\n            permissions = [];\r\n        }\r\n    } else {\r\n        permissions = undefined;\r\n    }\r\n\r\n    //Validate & translate FiveM ID\r\n    let citizenfxData = false;\r\n    if (citizenfxID.length) {\r\n        try {\r\n            if (GlobalData.validIdentifiers.fivem.test(citizenfxID)) {\r\n                const id = citizenfxID.split(':')[1];\r\n                const res = await got(`https://policy-live.fivem.net/api/getUserInfo/${id}`, {timeout: 6000}).json();\r\n                if (!res.username || !res.username.length) {\r\n                    return ctx.send({type: 'danger', message: '(ERR1) Invalid CitizenFX ID'});\r\n                }\r\n                citizenfxData = {\r\n                    id: res.username,\r\n                    identifier: citizenfxID,\r\n                };\r\n            } else if (citizenfxIDRegex.test(citizenfxID)) {\r\n                const res = await got(`https://forum.cfx.re/u/${citizenfxID}.json`, {timeout: 6000}).json();\r\n                if (!res.user || typeof res.user.id !== 'number') {\r\n                    return ctx.send({type: 'danger', message: '(ERR2) Invalid CitizenFX ID'});\r\n                }\r\n                citizenfxData = {\r\n                    id: citizenfxID,\r\n                    identifier: `fivem:${res.user.id}`,\r\n                };\r\n            } else {\r\n                return ctx.send({type: 'danger', message: '(ERR3) Invalid CitizenFX ID'});\r\n            }\r\n        } catch (error) {\r\n            logError(`Failed to resolve CitizenFX ID to game identifier with error: ${error.message}`);\r\n        }\r\n    }\r\n\r\n    //Validate Discord ID\r\n    let discordData = false;\r\n    if (discordID.length) {\r\n        if (!discordIDRegex.test(discordID)) return ctx.send({type: 'danger', message: 'Invalid Discord ID'});\r\n        discordData = {\r\n            id: discordID,\r\n            identifier: `discord:${discordID}`,\r\n        };\r\n    }\r\n\r\n    //Check if admin exists\r\n    const admin = globals.adminVault.getAdminByName(name);\r\n    if (!admin) return ctx.send({type: 'danger', message: 'Admin not found.'});\r\n\r\n    //Check if editing an master admin\r\n    if (!ctx.session.auth.master && admin.master) {\r\n        return ctx.send({type: 'danger', message: 'You cannot edit an admin master.'});\r\n    }\r\n\r\n    //Check for privilege escalation\r\n    if (permissions && !ctx.session.auth.master && !ctx.session.auth.permissions.includes('all_permissions')) {\r\n        const deniedPerms = permissions.filter((x) => !ctx.session.auth.permissions.includes(x));\r\n        if (deniedPerms.length) {\r\n            return ctx.send({\r\n                type: 'danger',\r\n                message: `You cannot give permissions you do not have:<br>${deniedPerms.join(', ')}`,\r\n            });\r\n        }\r\n    }\r\n\r\n    //Add admin and give output\r\n    try {\r\n        await globals.adminVault.editAdmin(name, null, citizenfxData, discordData, permissions);\r\n        ctx.utils.logAction(`Editing user '${name}'.`);\r\n        return ctx.send({type: 'success', message: 'refresh'});\r\n    } catch (error) {\r\n        return ctx.send({type: 'danger', message: error.message});\r\n    }\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle Delete\r\n * @param {object} ctx\r\n */\r\nasync function handleDelete(ctx) {\r\n    //Sanity check\r\n    if (\r\n        isUndefined(ctx.request.body.name)\r\n        || typeof ctx.request.body.name !== 'string'\r\n    ) {\r\n        return ctx.utils.error(400, 'Invalid Request - missing parameters');\r\n    }\r\n    let name = ctx.request.body.name.trim();\r\n\r\n    //Check if editing himself\r\n    if (ctx.session.auth.username.toLowerCase() === name.toLowerCase()) {\r\n        return ctx.send({type: 'danger', message: \"You can't delete yourself.\"});\r\n    }\r\n\r\n    //Check if admin exists\r\n    let admin = globals.adminVault.getAdminByName(name);\r\n    if (!admin) return ctx.send({type: 'danger', message: 'Admin not found.'});\r\n\r\n    //Check if editing an master admin\r\n    if (admin.master) {\r\n        return ctx.send({type: 'danger', message: 'You cannot delete an admin master.'});\r\n    }\r\n\r\n    //Delete admin and give output\r\n    try {\r\n        await globals.adminVault.deleteAdmin(name);\r\n        ctx.utils.logAction(`Deleting user '${name}'.`);\r\n        return ctx.send({type: 'success', message: 'refresh'});\r\n    } catch (error) {\r\n        return ctx.send({type: 'danger', message: error.message});\r\n    }\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle Get Modal\r\n * @param {object} ctx\r\n */\r\nasync function handleGetModal(ctx, isNewAdmin) {\r\n    const allPermissions = Object.entries(globals.adminVault.getPermissionsList());\r\n\r\n    //Helper function\r\n    const getPerms = (checkPerms) => {\r\n        let permsGeneral = [];\r\n        let permsMenu = [];\r\n        allPermissions.forEach(([id, desc]) => {\r\n            const bucket = (id.startsWith('players.') || id.startsWith('menu.')) ? permsGeneral : permsMenu;\r\n            bucket.push({\r\n                id,\r\n                desc,\r\n                checked: (checkPerms.includes(id)) ? 'checked' : '',\r\n                dangerous: dangerousPerms.includes(id),\r\n            });\r\n        });\r\n        return [permsGeneral, permsMenu];\r\n    };\r\n\r\n    //If it's a modal for new admin, all fields will be empty\r\n    if (isNewAdmin) {\r\n        const [permsGeneral, permsMenu] = getPerms([]);\r\n        const renderData = {\r\n            isNewAdmin: true,\r\n            editingSelf: false,\r\n            username: '',\r\n            citizenfx_id: '',\r\n            discord_id: '',\r\n            permsGeneral,\r\n            permsMenu,\r\n        };\r\n        return ctx.utils.render('parts/adminModal', renderData);\r\n    }\r\n\r\n\r\n    //Sanity check\r\n    if (typeof ctx.request.body.name !== 'string') {\r\n        return ctx.utils.error(400, 'Invalid Request - missing parameters');\r\n    }\r\n    const name = ctx.request.body.name.trim();\r\n\r\n    //Get admin data\r\n    const admin = globals.adminVault.getAdminByName(name);\r\n    if (!admin) return ctx.send('Admin not found');\r\n\r\n    //Check if editing an master admin\r\n    if (!ctx.session.auth.master && admin.master) {\r\n        return ctx.send('You cannot edit an admin master.');\r\n    }\r\n\r\n    //Prepare permissions\r\n    const [permsGeneral, permsMenu] = getPerms(admin.permissions);\r\n\r\n    //Set render data\r\n    const renderData = {\r\n        isNewAdmin: false,\r\n        username: admin.name,\r\n        citizenfx_id: (admin.providers.citizenfx) ? admin.providers.citizenfx.id : '',\r\n        discord_id: (admin.providers.discord) ? admin.providers.discord.id : '',\r\n        editingSelf: (ctx.session.auth.username.toLowerCase() === name.toLowerCase()),\r\n        permsGeneral,\r\n        permsMenu,\r\n    };\r\n\r\n    //Give output\r\n    return ctx.utils.render('parts/adminModal', renderData);\r\n}\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/adminManager/actions.js?")},"./src/webroutes/adminManager/get.js":
/*!*******************************************!*\
  !*** ./src/webroutes/adminManager/get.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:AdminManagerGet';\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n\r\n/**\r\n * Returns the output page containing the admins.\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function AdminManagerGet(ctx) {\r\n    //Prepare admin array\r\n    const admins = globals.adminVault.getAdminsList().map((admin) => {\r\n        let perms;\r\n        if (admin.master == true) {\r\n            perms = 'master account';\r\n        } else if (admin.permissions.includes('all_permissions')) {\r\n            perms = 'all permissions';\r\n        } else if (admin.permissions.length !== 1) {\r\n            perms = `${admin.permissions.length} permissions`;\r\n        } else {\r\n            perms = '1 permission';\r\n        }\r\n\r\n        return {\r\n            hasCitizenFX: (admin.providers.includes('citizenfx')),\r\n            hasDiscord: (admin.providers.includes('discord')),\r\n            name: admin.name,\r\n            perms: perms,\r\n            disableEdit: !ctx.session.auth.master && admin.master,\r\n            disableDelete: (admin.master || ctx.session.auth.username.toLowerCase() === admin.name.toLowerCase()),\r\n        };\r\n    });\r\n\r\n    //Check permission\r\n    if (!ctx.utils.checkPermission('manage.admins', modulename)) {\r\n        return ctx.utils.render('main/message', {message: 'You don\\'t have permission to view this page.'});\r\n    }\r\n\r\n    //Set render data\r\n    const renderData = {\r\n        headerTitle: 'Admin Manager',\r\n        admins,\r\n    };\r\n\r\n    //Give output\r\n    return ctx.utils.render('main/adminManager', renderData);\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/adminManager/get.js?")},"./src/webroutes/advanced/actions.js":
/*!*******************************************!*\
  !*** ./src/webroutes/advanced/actions.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:AdvancedActions';\r\nconst bytes = __webpack_require__(/*! bytes */ \"./node_modules/bytes/index.js\");\r\nconst humanizeDuration = __webpack_require__(/*! humanize-duration */ \"./node_modules/humanize-duration/humanize-duration.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\nconst got = __webpack_require__(/*! ../../extras/got */ \"./src/extras/got.js\");\r\n\r\n//Helper functions\r\nconst isUndefined = (x) => { return (typeof x === 'undefined'); };\r\nconst now = () => { return Math.round(Date.now() / 1000); };\r\n\r\n\r\n/**\r\n *\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function AdvancedActions(ctx) {\r\n    //Sanity check\r\n    if (\r\n        isUndefined(ctx.request.body.action)\r\n        || isUndefined(ctx.request.body.parameter)\r\n    ) {\r\n        logWarn('Invalid request!');\r\n        return ctx.send({type: 'danger', message: '<strong>Invalid request :(</strong>'});\r\n    }\r\n    const action = ctx.request.body.action;\r\n    const parameter = ctx.request.body.parameter;\r\n\r\n\r\n    //Check permissions\r\n    if (!ctx.utils.checkPermission('all_permissions', modulename)) {\r\n        return ctx.send({\r\n            type: 'danger',\r\n            message: 'You don\\'t have permission to execute this action.',\r\n        });\r\n    }\r\n\r\n    //Action: Change Verbosity\r\n    if (action == 'change_verbosity') {\r\n        GlobalData.verbose = (parameter == 'true');\r\n        globals.fxRunner.resetConvars();\r\n        return ctx.send({refresh:true});\r\n    } else if (action == 'perform_magic') {\r\n        const message = JSON.stringify(globals.playerController.activePlayers, null, 2);\r\n        return ctx.send({type: 'success', message});\r\n    } else if (action == 'perform_magic2') {\r\n        globals.playerController.playerlistGenerator.indexes = [];\r\n        return ctx.send({type: 'success', message: 'clearing generator playerlist'});\r\n    } else if (action == 'perform_magic3') {\r\n        if (globals.playerController.playerlistGenerator.indexes.length) {\r\n            globals.playerController.playerlistGenerator.indexes = [];\r\n        } else {\r\n            globals.playerController.playerlistGenerator.indexes = [0, 1];\r\n        }\r\n        return ctx.send({type: 'success', message: 'kick\\'em all, or unkick\\'em all'});\r\n    } else if (action == 'perform_magic4') {\r\n        let idArray = ['license:23fb884f1463da603330b9d4434f2886a725aaaa'];\r\n        let ts = now();\r\n        const filter = (x) => {\r\n            return (\r\n                // (x.type == 'ban') &&\r\n                (x.type == 'ban' || x.type == 'whitelist')\r\n                && (!x.expiration || x.expiration > ts)\r\n                && (!x.revocation.timestamp)\r\n            );\r\n        };\r\n\r\n        let hist = await globals.playerController.getRegisteredActions(idArray, filter);\r\n        return ctx.send({type: 'success', message: JSON.stringify(hist, null, 2)});\r\n    } else if (action == 'show_db') {\r\n        const dbo = globals.playerController.getDB();\r\n        dir(dbo);\r\n        return ctx.send({type: 'success', message: JSON.stringify(dbo, null, 2)});\r\n    } else if (action == 'wipe_db') {\r\n        const dbo = globals.playerController.getDB();\r\n        await dbo.set('players', []).set('actions', []).set('pendingWL', []).write();\r\n        return ctx.send({type: 'success', message: 'wiiiiiiiiped'});\r\n    } else if (action == 'show_log') {\r\n        return ctx.send({type: 'success', message: JSON.stringify(globals.logger.server.getRecentBuffer(), null, 2)});\r\n    } else if (action == 'memory') {\r\n        let memory;\r\n        try {\r\n            const usage = process.memoryUsage();\r\n            Object.keys(usage).forEach((prop) => {\r\n                usage[prop] = bytes(usage[prop]);\r\n            });\r\n            memory = JSON.stringify(usage, null, 2);\r\n        } catch (error) {\r\n            memory = 'error';\r\n        }\r\n        return ctx.send({type: 'success', message: memory});\r\n    } else if (action == 'joinCheckHistory') {\r\n        let outData;\r\n        try {\r\n            const currTime = Date.now();\r\n            const log = globals.databus.joinCheckHistory.map((e) => {\r\n                return {\r\n                    when: humanizeDuration(currTime - e.ts, {round: true}),\r\n                    playerName: e.playerName,\r\n                    idArray: e.idArray,\r\n                };\r\n            });\r\n            outData = JSON.stringify(log, null, 2);\r\n        } catch (error) {\r\n            outData = error.message;\r\n        }\r\n        return ctx.send({type: 'success', message: outData});\r\n    } else if (action == 'freeze') {\r\n        logWarn('Freezing process for 50 seconds.');\r\n        Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 50 * 1000);\r\n    } else if (action == 'resetConvars') {\r\n        globals.fxRunner.resetConvars();\r\n        return ctx.send({refresh:true});\r\n    } else if (action == 'backupdb') {\r\n        await globals.playerController.db.backupDatabase();\r\n        return ctx.send({type: 'success', message: 'backing it up'});\r\n    } else if (action == 'reauth') {\r\n        // txaEvent \"adminsUpdated\" \"[1,5,7]\"\r\n        return globals.fxRunner.sendEvent('adminsUpdated', [1, 5, 7]);\r\n    } else if (action == 'getLoggerErrors') {\r\n        const outData = {\r\n            admin: globals.logger.admin.lrLastError,\r\n            fxserver: globals.logger.fxserver.lrLastError,\r\n            server: globals.logger.server.lrLastError,\r\n        };\r\n        return ctx.send({type: 'success', message: JSON.stringify(outData, null, 2)});\r\n    } else if (action == 'testSrcAddress') {\r\n        const url = 'https://api.myip.com';\r\n        const respDefault = await got(url).json();\r\n        const respReset = await got(url, {localAddress: undefined}).json();\r\n        const outData = {\r\n            url,\r\n            respDefault,\r\n            respReset,\r\n        };\r\n        return ctx.send({type: 'success', message: JSON.stringify(outData, null, 2)});\r\n    } else if (action == 'getProcessEnv') {\r\n        return ctx.send({type: 'success', message: JSON.stringify(({\"APP_ENV\":\"webpack\"}), null, 2)});\r\n    }\r\n\r\n    //Catch all\r\n    return ctx.send({type: 'danger', message: '<strong>Unknown action :(</strong>'});\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/advanced/actions.js?")},"./src/webroutes/advanced/get.js":
/*!***************************************!*\
  !*** ./src/webroutes/advanced/get.js ***!
  \***************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:AdvancedGet';\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n\r\n/**\r\n * Returns the output page containing the server.cfg\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function AdvancedGet(ctx) {\r\n    //Check permissions\r\n    if (!ctx.utils.checkPermission('all_permisisons', modulename)) {\r\n        return ctx.utils.render('main/message', {message: 'You don\\'t have permission to view this page.'});\r\n    }\r\n\r\n    return ctx.utils.render('main/advanced', {\r\n        verbosityEnabled: GlobalData.verbose,\r\n    });\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/advanced/get.js?")},"./src/webroutes/authentication/addMaster.js":
/*!***************************************************!*\
  !*** ./src/webroutes/authentication/addMaster.js ***!
  \***************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:AddMaster';\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n//Helper functions\r\nconst isUndefined = (x) => { return (typeof x === 'undefined'); };\r\nconst returnJustMessage = (ctx, errorTitle, errorMessage) => {\r\n    return ctx.utils.render('login', { template: 'justMessage', errorTitle, errorMessage });\r\n};\r\n\r\n/**\r\n * Handles the Add Master flow\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function AddMaster(ctx) {\r\n    //Sanity check\r\n    if (isUndefined(ctx.params.action)) {\r\n        return ctx.utils.error(400, 'Invalid Request');\r\n    }\r\n    const action = ctx.params.action;\r\n\r\n    //Check if there are no master admins set up\r\n    if (globals.adminVault.admins !== false) {\r\n        return returnJustMessage(\r\n            ctx,\r\n            'Master account already set.',\r\n        );\r\n    }\r\n\r\n    //Delegate to the specific action handler\r\n    if (action == 'pin') {\r\n        return await handlePin(ctx);\r\n    } else if (action == 'callback') {\r\n        return await handleCallback(ctx);\r\n    } else if (action == 'save') {\r\n        return await handleSave(ctx);\r\n    } else {\r\n        return ctx.send({\r\n            type: 'danger',\r\n            message: 'Unknown action.',\r\n        });\r\n    }\r\n};\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle Pin\r\n * @param {object} ctx\r\n */\r\nasync function handlePin(ctx) {\r\n    //Sanity check\r\n    if (\r\n        isUndefined(ctx.request.body.pin)\r\n        || typeof ctx.request.body.pin !== 'string'\r\n        || ctx.method != 'POST'\r\n    ) {\r\n        return ctx.utils.error(400, 'Invalid Request - missing parameters');\r\n    }\r\n\r\n    //Checking the PIN\r\n    if (ctx.request.body.pin !== globals.adminVault.addMasterPin) {\r\n        logWarn(`Wrong PIN for from: ${ctx.ip}`);\r\n        const message = 'Wrong PIN.';\r\n        return ctx.utils.render('login', { template: 'noMaster', message });\r\n    }\r\n\r\n    //Make sure the session is initialized\r\n    ctx.session.startedSocialLogin = Date.now();\r\n\r\n    //Generate URL\r\n    try {\r\n        const callback = ctx.protocol + '://' + ctx.get('host') + '/auth/addMaster/callback';\r\n        const url = await globals.adminVault.providers.citizenfx.getAuthURL(callback, ctx.session._sessCtx.externalKey);\r\n        return ctx.response.redirect(url);\r\n    } catch (error) {\r\n        return returnJustMessage(\r\n            ctx,\r\n            'Failed to generate callback URL with error:',\r\n            error.message,\r\n        );\r\n    }\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle Callback\r\n * @param {object} ctx\r\n */\r\nasync function handleCallback(ctx) {\r\n    //Sanity check\r\n    if (ctx.method != 'GET') {\r\n        return ctx.utils.error(400, 'Invalid Request');\r\n    }\r\n\r\n    if (typeof ctx.query.error_description === 'string') {\r\n        return returnJustMessage(\r\n            ctx,\r\n            ctx.query.error_description,\r\n            'Please refresh the page and try again.',\r\n        );\r\n    }\r\n\r\n    //Exchange code for access token\r\n    let tokenSet;\r\n    try {\r\n        const currentURL = ctx.protocol + '://' + ctx.get('host') + '/auth/addMaster/callback';\r\n        tokenSet = await globals.adminVault.providers.citizenfx.processCallback(ctx, currentURL, ctx.session._sessCtx.externalKey);\r\n    } catch (error) {\r\n        logWarn(`Code Exchange error: ${error.message}`);\r\n        if (!isUndefined(error.tolerance)) {\r\n            return returnJustMessage(\r\n                ctx,\r\n                'Please Update/Synchronize your VPS clock.',\r\n                'Failed to login because this host\\'s time is wrong. Please make sure to synchronize it with the internet.',\r\n            );\r\n        } else if (error.code === 'ETIMEDOUT') {\r\n            return returnJustMessage(\r\n                ctx,\r\n                'Connection to FiveM servers timed out:',\r\n                'Failed to verify your login with FiveM\\'s identity provider. Please try again or check your connection to the internet.',\r\n            );\r\n        } else if (error.message.startsWith('state mismatch')) {\r\n            return returnJustMessage(\r\n                ctx,\r\n                'Invalid Browser Session.',\r\n                'You may have restarted txAdmin right before entering this page, or copied the link to another browser. Please try again.',\r\n            );\r\n        } else {\r\n            return returnJustMessage(ctx, 'Code Exchange error:', error.message);\r\n        }\r\n    }\r\n\r\n    //Get userinfo\r\n    let userInfo;\r\n    try {\r\n        userInfo = await globals.adminVault.providers.citizenfx.getUserInfo(tokenSet.access_token);\r\n    } catch (error) {\r\n        logError(`Get UserInfo error: ${error.message}`);\r\n        return returnJustMessage(\r\n            ctx,\r\n            'Get UserInfo error:',\r\n            error.message,\r\n        );\r\n    }\r\n\r\n    // Setar userinfo na sessão\r\n    ctx.session.tmpAddMasterTokenSet = tokenSet;\r\n    ctx.session.tmpAddMasterUserInfo = userInfo;\r\n\r\n    return ctx.utils.render('login', {\r\n        template: 'callback',\r\n        addMaster_name: userInfo.name,\r\n        addMaster_picture: (userInfo.picture) ? userInfo.picture : 'img/default_avatar.png',\r\n    });\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle Save\r\n * @param {object} ctx\r\n */\r\nasync function handleSave(ctx) {\r\n    //Sanity check\r\n    if (\r\n        typeof ctx.request.body.password !== 'string'\r\n        || typeof ctx.request.body.password2 !== 'string'\r\n    ) {\r\n        return ctx.utils.error(400, 'Invalid Request - missing parameters');\r\n    }\r\n\r\n    //Sanity check2: Electric Boogaloo (Validating password)\r\n    const password = ctx.request.body.password.trim();\r\n    const password2 = ctx.request.body.password2.trim();\r\n    if (password != password2 || password.length < 6 || password.length > 24) {\r\n        return returnJustMessage(\r\n            ctx,\r\n            'Invalid Password.',\r\n        );\r\n    }\r\n\r\n    //Checking if ToS/License accepted\r\n    if (ctx.request.body.checkboxAcceptToS !== 'on') {\r\n        return returnJustMessage(\r\n            ctx,\r\n            'You are required to accept the Terms of Service and License to proceed.',\r\n        );\r\n    }\r\n\r\n    //Checking if session is still present\r\n    if (\r\n        typeof ctx.session.tmpAddMasterUserInfo === 'undefined'\r\n        || typeof ctx.session.tmpAddMasterUserInfo.name !== 'string'\r\n    ) {\r\n        return returnJustMessage(\r\n            ctx,\r\n            'Invalid Session.',\r\n            'You may have restarted txAdmin right before entering this page. Please try again.',\r\n        );\r\n    }\r\n\r\n    //Getting identifier\r\n    let identifier;\r\n    try {\r\n        const res = /\\/user\\/(\\d{1,8})/.exec(ctx.session.tmpAddMasterUserInfo.nameid);\r\n        identifier = `fivem:${res[1]}`;\r\n    } catch (error) {\r\n        return returnJustMessage(\r\n            ctx,\r\n            'Invalid nameid identifier.',\r\n            `Could not extract the user identifier from the URL below. Please report this to the txAdmin dev team.\\n${ctx.session.tmpAddMasterUserInfo.nameid.toString()}`,\r\n        );\r\n    }\r\n\r\n    if (typeof ctx.session.tmpAddMasterUserInfo.picture !== 'string') {\r\n        ctx.session.tmpAddMasterUserInfo.picture = null;\r\n    }\r\n\r\n    //Creating admins file\r\n    try {\r\n        globals.adminVault.createAdminsFile(ctx.session.tmpAddMasterUserInfo.name, identifier, ctx.session.tmpAddMasterUserInfo, password, true);\r\n    } catch (error) {\r\n        return returnJustMessage(\r\n            ctx,\r\n            'Error:',\r\n            error.message,\r\n        );\r\n    }\r\n\r\n    //Login user\r\n    try {\r\n        ctx.session.auth = await globals.adminVault.providers.citizenfx.getUserSession(\r\n            ctx.session.tmpAddMasterTokenSet,\r\n            ctx.session.tmpAddMasterUserInfo,\r\n        );\r\n        ctx.session.auth.username = ctx.session.tmpAddMasterUserInfo.name;\r\n        delete ctx.session.tmpAddMasterTokenSet;\r\n        delete ctx.session.tmpAddMasterUserInfo;\r\n    } catch (error) {\r\n        ctx.session.auth = {};\r\n        logError(`Failed to login: ${error.message}`);\r\n        return returnJustMessage(\r\n            ctx,\r\n            'Failed to login:',\r\n            error.message,\r\n        );\r\n    }\r\n\r\n    ctx.utils.logAction('created admins file');\r\n    return ctx.response.redirect('/');\r\n}\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/authentication/addMaster.js?")},"./src/webroutes/authentication/changePassword.js":
/*!********************************************************!*\
  !*** ./src/webroutes/authentication/changePassword.js ***!
  \********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:AuthChangePassword';\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n//Helper functions\r\nconst isUndefined = (x) => { return (typeof x === 'undefined'); };\r\n\r\n/**\r\n * Returns the output page containing the admins.\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function AuthChangePassword(ctx) {\r\n    //Sanity check\r\n    if (isUndefined(ctx.request.body.newPassword)) {\r\n        return ctx.utils.error(400, 'Invalid Request');\r\n    }\r\n\r\n    //Check if temp password\r\n    if (!ctx.session.auth.isTempPassword && isUndefined(ctx.request.body.oldPassword)) {\r\n        return ctx.send({type: 'danger', message: 'The permanent password was already set.'});\r\n    }\r\n\r\n    //Validate fields\r\n    let newPassword = ctx.request.body.newPassword.trim();\r\n    if (!ctx.session.auth.isTempPassword && !isUndefined(ctx.request.body.oldPassword)) {\r\n        let admin = globals.adminVault.getAdminByName(ctx.session.auth.username);\r\n        if (!admin) throw new Error('Wait, what? Where is that admin?');\r\n        let oldPassword = ctx.request.body.oldPassword.trim();\r\n        if (!VerifyPasswordHash(oldPassword, admin.password_hash)) {\r\n            return ctx.send({type: 'danger', message: 'Wrong current password'});\r\n        }\r\n    }\r\n    if (newPassword.length < 6 || newPassword.length > 32) {\r\n        return ctx.send({type: 'danger', message: 'Invalid new password'});\r\n    }\r\n\r\n    //Add admin and give output\r\n    try {\r\n        let newHash = await globals.adminVault.editAdmin(ctx.session.auth.username, newPassword);\r\n        if (typeof ctx.session.auth.password_hash == 'string') ctx.session.auth.password_hash = newHash;\r\n        ctx.utils.logAction('Changing own password.');\r\n        ctx.session.auth.password = newPassword;\r\n        return ctx.send({type: 'success', message: 'Password changed successfully'});\r\n    } catch (error) {\r\n        return ctx.send({type: 'danger', message: error.message});\r\n    }\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/authentication/changePassword.js?")},"./src/webroutes/authentication/get.js":
/*!*********************************************!*\
  !*** ./src/webroutes/authentication/get.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:AuthGet';\r\nconst chalk = __webpack_require__(/*! chalk */ \"./node_modules/chalk/source/index.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n\r\n//Helper functions\r\nconst isUndefined = (x) => { return (typeof x === 'undefined'); };\r\n\r\n/**\r\n * Gets the login page and destroys session if /auth?logout is defined\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function AuthGet(ctx) {\r\n    //Set template type\r\n    let template;\r\n    if (globals.adminVault.admins === false) {\r\n        template = 'noMaster';\r\n        if (globals.adminVault.addMasterPin) {\r\n            log('Use this PIN to add a new master account: ' + chalk.inverse(` ${globals.adminVault.addMasterPin} `));\r\n        }\r\n    } else {\r\n        template = 'normal';\r\n    }\r\n\r\n    //Destroy session? And start a new one\r\n    if (!isUndefined(ctx.query.logout)) ctx.session.auth = {};\r\n\r\n    //If admins file was deleted\r\n    if (Array.isArray(globals.adminVault.admins) && !globals.adminVault.admins.length) {\r\n        return ctx.utils.render('login', {\r\n            template: 'justMessage',\r\n            errorTitle: 'No admins configured.',\r\n            errorMessage: 'This likely means that you moved or deleted the admins.json file. Please restart txAdmin to configure a new master account.',\r\n        });\r\n    }\r\n\r\n    //Render page\r\n    const renderData = {\r\n        template,\r\n        message: (!isUndefined(ctx.query.logout)) ? 'Logged Out' : '',\r\n        citizenfxDisabled: !globals.adminVault.providers.citizenfx.ready,\r\n    };\r\n    return ctx.utils.render('login', renderData);\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/authentication/get.js?")},"./src/webroutes/authentication/nui.js":
/*!*********************************************!*\
  !*** ./src/webroutes/authentication/nui.js ***!
  \*********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:NUI';\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n/**\r\n * Return the permissions for the NUI auth.\r\n * This is called just by sv_admins.lua without\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function nuiAuth(ctx) {\r\n    ctx.utils.logAction('logged in via in-game ui');\r\n    globals.databus.txStatsData.login.origins.webpipe++;\r\n    globals.databus.txStatsData.login.methods.nui++;\r\n\r\n    ctx.send({\r\n        isAdmin: true,\r\n        username: ctx.nuiSession.auth.username,\r\n        permissions: ctx.nuiSession.auth.master ? ['all_permissions'] : ctx.nuiSession.auth.permissions,\r\n    });\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/authentication/nui.js?")},"./src/webroutes/authentication/providerCallback.js":
/*!**********************************************************!*\
  !*** ./src/webroutes/authentication/providerCallback.js ***!
  \**********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:ProviderCallback';\r\nconst crypto = __webpack_require__(/*! crypto */ \"crypto\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n//Helper functions\r\nconst isUndefined = (x) => { return (typeof x === 'undefined'); };\r\nconst returnJustMessage = (ctx, errorTitle, errorMessage) => {\r\n    return ctx.utils.render('login', { template: 'justMessage', errorTitle, errorMessage });\r\n};\r\n\r\n/**\r\n * Handles the provider login callbacks\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function ProviderCallback(ctx) {\r\n    //Sanity check\r\n    if (\r\n        isUndefined(ctx.params.provider)\r\n        || isUndefined(ctx.query.state)\r\n    ) {\r\n        return ctx.utils.error(400, 'Invalid Request');\r\n    }\r\n    const provider = ctx.params.provider;\r\n    const reqState = ctx.query.state;\r\n\r\n    if (provider !== 'citizenfx') {\r\n        return returnJustMessage(ctx, 'Provider not implemented... yet');\r\n    }\r\n\r\n    if (typeof ctx.query.error_description === 'string') {\r\n        return returnJustMessage(\r\n            ctx,\r\n            ctx.query.error_description,\r\n            'Please refresh the page and try again.',\r\n        );\r\n    }\r\n\r\n    //Check the state changed\r\n    const stateSeed = `txAdmin:${ctx.session._sessCtx.externalKey}`;\r\n    const stateExpected = crypto.createHash('SHA1').update(stateSeed).digest('hex');\r\n    if (reqState != stateExpected) {\r\n        return returnJustMessage(\r\n            ctx,\r\n            'This link has expired.',\r\n            'Please refresh the page and try again.',\r\n        );\r\n    }\r\n\r\n    //Exchange code for access token\r\n    let tokenSet;\r\n    try {\r\n        const currentURL = ctx.protocol + '://' + ctx.get('host') + `/auth/${provider}/callback`;\r\n        tokenSet = await globals.adminVault.providers.citizenfx.processCallback(ctx, currentURL, ctx.session._sessCtx.externalKey);\r\n    } catch (error) {\r\n        logWarn(`Code Exchange error: ${error.message}`);\r\n        if (!isUndefined(error.tolerance)) {\r\n            return returnJustMessage(\r\n                ctx,\r\n                'Please Update/Synchronize your VPS clock.',\r\n                'Failed to login because this host\\'s time is wrong. Please make sure to synchronize it with the internet.',\r\n            );\r\n        } else if (error.code === 'ETIMEDOUT') {\r\n            return returnJustMessage(\r\n                ctx,\r\n                'Connection to FiveM servers timed out:',\r\n                'Please try again or login using your existing username and backup password.',\r\n            );\r\n        } else if (error.message.startsWith('state mismatch')) {\r\n            return returnJustMessage(\r\n                ctx,\r\n                'Invalid Browser Session.',\r\n                'You may have restarted txAdmin right before entering this page, or copied the link to another browser. Please try again.',\r\n            );\r\n        } else {\r\n            return returnJustMessage(ctx, 'Code Exchange error:', error.message);\r\n        }\r\n    }\r\n\r\n    //Get userinfo\r\n    let userInfo;\r\n    try {\r\n        userInfo = await globals.adminVault.providers.citizenfx.getUserInfo(tokenSet.access_token);\r\n    } catch (error) {\r\n        if (GlobalData.verbose) logError(`Get UserInfo error: ${error.message}`);\r\n        return returnJustMessage(ctx, 'Get UserInfo error:', error.message);\r\n    }\r\n\r\n    //Getting identifier\r\n    let identifier;\r\n    try {\r\n        const res = /\\/user\\/(\\d{1,8})/.exec(userInfo.nameid);\r\n        identifier = `fivem:${res[1]}`;\r\n    } catch (error) {\r\n        return returnJustMessage(\r\n            ctx,\r\n            'Invalid nameid identifier.',\r\n            `Could not extract the user identifier from the URL below. Please report this to the txAdmin dev team.\\n${userInfo.nameid.toString()}`,\r\n        );\r\n    }\r\n\r\n    //Check & Login user\r\n    try {\r\n        const admin = globals.adminVault.getAdminByProviderUID(userInfo.name);\r\n        if (!admin) {\r\n            ctx.session.auth = {};\r\n            return returnJustMessage(\r\n                ctx,\r\n                `The account '${userInfo.name}' is not an admin.`,\r\n                'This CitizenFX username is not assigned to any registered account. You can also try to login using your username and backup password.',\r\n            );\r\n        }\r\n\r\n        //Setting session\r\n        ctx.session.auth = await globals.adminVault.providers.citizenfx.getUserSession(tokenSet, userInfo);\r\n        ctx.session.auth.username = admin.name;\r\n\r\n        //Save the updated provider identifier & data to the admins file\r\n        await globals.adminVault.refreshAdminSocialData(admin.name, 'citizenfx', identifier, userInfo);\r\n\r\n        ctx.utils.logAction(`logged in from ${ctx.ip} via citizenfx`);\r\n        globals.databus.txStatsData.login.origins[ctx.txVars.hostType]++;\r\n        globals.databus.txStatsData.login.methods.citizenfx++;\r\n        return ctx.response.redirect('/');\r\n    } catch (error) {\r\n        ctx.session.auth = {};\r\n        if (GlobalData.verbose) logError(`Failed to login: ${error.message}`);\r\n        return returnJustMessage(ctx, 'Failed to login:', error.message);\r\n    }\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/authentication/providerCallback.js?")},"./src/webroutes/authentication/providerRedirect.js":
/*!**********************************************************!*\
  !*** ./src/webroutes/authentication/providerRedirect.js ***!
  \**********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:ProviderRedirect';\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n//Helper functions\r\nconst isUndefined = (x) => { return (typeof x === 'undefined'); };\r\nconst genCallbackURL = (ctx, provider) => {\r\n    return ctx.protocol + '://' + ctx.get('host') + `/auth/${provider}/callback`;\r\n};\r\nconst returnJustMessage = (ctx, errorTitle, errorMessage) => {\r\n    return ctx.utils.render('login', { template: 'justMessage', errorTitle, errorMessage });\r\n};\r\n\r\n/**\r\n * Generates the provider auth url and redirects the user\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function ProviderRedirect(ctx) {\r\n    //Sanity check\r\n    if (isUndefined(ctx.params.provider)) {\r\n        return ctx.utils.error(400, 'Invalid Request');\r\n    }\r\n    const provider = ctx.params.provider;\r\n\r\n    if (provider !== 'citizenfx') {\r\n        return returnJustMessage(ctx, 'Provider not implemented... yet');\r\n    }\r\n\r\n    //Make sure the session is initialized\r\n    ctx.session.startedSocialLogin = Date.now();\r\n\r\n    //Generatte CitizenFX provider Auth URL\r\n    try {\r\n        const urlCitizenFX = await globals.adminVault.providers.citizenfx.getAuthURL(\r\n            genCallbackURL(ctx, 'citizenfx'),\r\n            ctx.session._sessCtx.externalKey,\r\n        );\r\n        return ctx.response.redirect(urlCitizenFX);\r\n    } catch (error) {\r\n        if (GlobalData.verbose) logWarn(`Failed to generate CitizenFX Auth URL with error: ${error.message}`);\r\n        return returnJustMessage(ctx, 'Failed to generate callback URL:', error.message);\r\n    }\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/authentication/providerRedirect.js?")},"./src/webroutes/authentication/verifyPassword.js":
/*!********************************************************!*\
  !*** ./src/webroutes/authentication/verifyPassword.js ***!
  \********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:AuthVerify';\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n//Helper functions\r\nconst isUndefined = (x) => { return (typeof x === 'undefined'); };\r\n\r\n/**\r\n * Verify login\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function AuthVerify(ctx) {\r\n    if (isUndefined(ctx.request.body.username) || isUndefined(ctx.request.body.password)) {\r\n        return ctx.response.redirect('/');\r\n    }\r\n    const renderData = {\r\n        template: 'normal',\r\n        message: null,\r\n        citizenfxDisabled: !globals.adminVault.providers.citizenfx.ready,\r\n    };\r\n\r\n    try {\r\n        //Checking admin\r\n        let admin = globals.adminVault.getAdminByName(ctx.request.body.username);\r\n        if (!admin) {\r\n            logWarn(`Wrong username for from: ${ctx.ip}`);\r\n            renderData.message = 'Wrong Username!';\r\n            return ctx.utils.render('login', renderData);\r\n        }\r\n        if (!VerifyPasswordHash(ctx.request.body.password.trim(), admin.password_hash)) {\r\n            logWarn(`Wrong password for from: ${ctx.ip}`);\r\n            renderData.message = 'Wrong Password!';\r\n            return ctx.utils.render('login', renderData);\r\n        }\r\n\r\n        //Setting up session\r\n        const providerWithPicture = Object.values(admin.providers).find((provider) => provider.data && provider.data.picture);\r\n        ctx.session.auth = {\r\n            username: admin.name,\r\n            picture: (providerWithPicture) ? providerWithPicture.data.picture : undefined,\r\n            password_hash: admin.password_hash,\r\n            expires_at: false,\r\n        };\r\n\r\n        ctx.utils.logAction(`logged in from ${ctx.ip} via password`);\r\n        globals.databus.txStatsData.login.origins[ctx.txVars.hostType]++;\r\n        globals.databus.txStatsData.login.methods.password++;\r\n    } catch (error) {\r\n        logWarn(`Failed to authenticate ${ctx.request.body.username} with error: ${error.message}`);\r\n        if (GlobalData.verbose) dir(error);\r\n        renderData.message = 'Error autenticating admin.';\r\n        return ctx.utils.render('login', renderData);\r\n    }\r\n\r\n    return ctx.response.redirect('/');\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/authentication/verifyPassword.js?")},"./src/webroutes/authentication/verifyZapToken.js":
/*!********************************************************!*\
  !*** ./src/webroutes/authentication/verifyZapToken.js ***!
  \********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:AuthVerify';\r\nconst crypto = __webpack_require__(/*! crypto */ \"crypto\");\r\nconst { JWK, JWT } = __webpack_require__(/*! jose */ \"./node_modules/jose/lib/index.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n//Helper functions\r\nconst isUndefined = (x) => { return (typeof x === 'undefined'); };\r\n//DEBUG: the dev key\r\n// const zapPublicKey = JWK.asKey(`-----BEGIN PUBLIC KEY-----\r\n// MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnqysbyFbmOr97wTERsmu\r\n// t2FIHYcOJHn6UDdM824uvQxChcEAtHqv1312pTlLklNxPoVunrwbRrMb6iUuWmsn\r\n// hhNrUiZIemhW2iIR2tZmaxSA5/BgnDUKNOow3kce1EMb8wm/WMohy6+25fgVBIvs\r\n// 1XcXlz6EdUNGiHerF0vOL6yEzfaooLt3tgBrgRPonLwLtm7hMax8+ED1042tL331\r\n// JF4k0DOGTBx3yeAY50jjCabkvvpZn5ATGtK02SnDWVEm/tw2drVJkq2RpnZzuOje\r\n// ffoLza7ofXX3BLgMxc3hFVfPFKWR/84oF+pHzcmQync4F4xb3BL7hUqWgoYMs7SO\r\n// TQIDAQAB\r\n// -----END PUBLIC KEY-----`);\r\n\r\n//The actual key\r\nconst zapPublicKey = JWK.asKey(`-----BEGIN PUBLIC KEY-----\r\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA47Uk3Ly5lWE0PGvF2Uno\r\nxjyN/37+fbtgW7gWnRzfh1hdr7cYk8h+qhtTpP/gjJPLVOTS0FV0zwnWxZaGwgTm\r\nUpjI1Ik2M+wUlvKpcEvFz30fj5/GnzRH5nU1JLSD26qwRCVqzxNrrxS7J+BtNfVC\r\nKK8s/iPYG6TZp/ONyoAt0hicYFnHtoxkcXh+B7xV1AY8drwo287nOAcrXcVQ3wy3\r\nMVNEXJjaF2Y4AcOclRu2kp4tNmyzi4+fVIMuAeUJn4dy7rBa46MDOQQEyu3NdNzt\r\nef3OFncqQH5WIymLzUSe1UjPbT8iXxVuZVz4JBmDvJv5JnCfp5QVILGzGioP+B3L\r\n0QIDAQAB\r\n-----END PUBLIC KEY-----`);\r\n\r\n//NOTE: the routes SHOULD not have any persistent data, but meh...\r\nconst usedTokens = new Set();\r\n\r\n\r\n/**\r\n * Verify zap token\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function AuthVerify(ctx) {\r\n    //FIXME: disabled for now\r\n    return ctx.utils.render('login', {\r\n        template: 'normal',\r\n        message: 'ZAP one-click-login temporarily disabled.',\r\n        citizenfxDisabled: !globals.adminVault.providers.citizenfx.ready,\r\n    });\r\n\r\n    const errorPrefix = 'Zap JWT error:';\r\n    const renderData = {\r\n        template: 'normal',\r\n        message: 'Invalid token. Please login using one of the options above.',\r\n        citizenfxDisabled: !globals.adminVault.providers.citizenfx.ready,\r\n    };\r\n\r\n    //Sanity check\r\n    if (\r\n        isUndefined(ctx.query.token)\r\n        || !GlobalData.isZapHosting\r\n        || !GlobalData.runtimeSecret\r\n        || !GlobalData.defaultMasterAccount\r\n    ) {\r\n        logWarn(`${errorPrefix} Sanity check, precondition failed`);\r\n        return ctx.response.redirect('/');\r\n    }\r\n\r\n\r\n    //Validating the JWT\r\n    let jwtData;\r\n    try {\r\n        jwtData = JWT.verify(ctx.query.token, zapPublicKey, {\r\n            algorithms: ['RS256'],\r\n            issuer: 'zap-hosting.com',\r\n            maxTokenAge: '5 minutes',\r\n            audience: (GlobalData.forceInterface) ? `${GlobalData.forceInterface}:${GlobalData.txAdminPort}` : undefined,\r\n        });\r\n        if (typeof jwtData.iat !== 'number') throw new Error('missing \"iat\" claim');\r\n        if (typeof jwtData.sub !== 'string') throw new Error('missing \"sub\" claim');\r\n        if (typeof jwtData.verifier !== 'string') throw new Error('missing \"verifier\" claim');\r\n    } catch (error) {\r\n        logWarn(`${errorPrefix} [${error.code}] ${error.message}`);\r\n        return ctx.utils.render('login', renderData);\r\n    }\r\n\r\n\r\n    //Checking verifier\r\n    try {\r\n        const verifierComposition = [\r\n            jwtData.iat,\r\n            GlobalData.runtimeSecret,\r\n            jwtData.sub,\r\n            GlobalData.defaultMasterAccount.password_hash,\r\n            ctx.ip,\r\n        ].join('|');\r\n        const expectedVerifier = crypto.createHash('sha256').update(verifierComposition).digest('hex');\r\n        if (expectedVerifier !== jwtData.verifier) {\r\n            logWarn(`${errorPrefix} Invalid verifier from ${ctx.ip}`);\r\n            return ctx.utils.render('login', renderData);\r\n        }\r\n    } catch (error) {\r\n        logWarn(`Failed to validate zap token with error: ${error.message}`);\r\n        if (GlobalData.verbose) dir(error);\r\n        renderData.message = 'Error autenticating admin. Please try again.';\r\n        return ctx.utils.render('login', renderData);\r\n    }\r\n\r\n\r\n    try {\r\n        //Checking admin\r\n        const admin = globals.adminVault.getAdminByName(jwtData.sub);\r\n        if (!admin) {\r\n            logWarn(`${errorPrefix} Wrong username from ${ctx.ip}`);\r\n            return ctx.utils.render('login', renderData);\r\n        }\r\n        if (!admin.master) {\r\n            logWarn(`${errorPrefix} Account is not master from ${ctx.ip}`);\r\n            return ctx.utils.render('login', renderData);\r\n        }\r\n\r\n        //Checking if the token was already used\r\n        const signature = ctx.query.token.split('.')[2];\r\n        if (usedTokens.has(signature)) {\r\n            logWarn(`${errorPrefix} Token already used from ${ctx.ip}`);\r\n            return ctx.utils.render('login', renderData);\r\n        }\r\n        usedTokens.add(signature);\r\n\r\n        //Setting up session\r\n        const providerWithPicture = Object.values(admin.providers).find((provider) => provider.data && provider.data.picture);\r\n        ctx.session.auth = {\r\n            username: admin.name,\r\n            picture: (providerWithPicture) ? providerWithPicture.data.picture : undefined,\r\n            password_hash: admin.password_hash,\r\n            expires_at: false,\r\n        };\r\n\r\n        ctx.utils.logAction(`logged in from ${ctx.ip} via zap token`);\r\n        globals.databus.txStatsData.login.origins[ctx.txVars.hostType]++;\r\n        globals.databus.txStatsData.login.methods.zap++;\r\n    } catch (error) {\r\n        logWarn(`Failed to authenticate ${ctx.request.body.username} with error: ${error.message}`);\r\n        if (GlobalData.verbose) dir(error);\r\n        renderData.message = 'Error autenticating admin.';\r\n        return ctx.utils.render('login', renderData);\r\n    }\r\n\r\n    return ctx.response.redirect('/');\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/authentication/verifyZapToken.js?")},"./src/webroutes/cfgEditor/get.js":
/*!****************************************!*\
  !*** ./src/webroutes/cfgEditor/get.js ***!
  \****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:CFGEditorGet';\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\nconst { resolveCFGFilePath, readRawCFGFile } = __webpack_require__(/*! ../../extras/fxsConfigHelper */ \"./src/extras/fxsConfigHelper.js\");\r\n\r\n\r\n/**\r\n * Returns the output page containing the server.cfg\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function CFGEditorGet(ctx) {\r\n    //Check permissions\r\n    if (!ctx.utils.checkPermission('server.cfg.editor', modulename)) {\r\n        return ctx.utils.render('main/message', {message: 'You don\\'t have permission to view this page.'});\r\n    }\r\n\r\n    //Check if file is set\r\n    if (globals.fxRunner.config.cfgPath === null) {\r\n        let message = 'Your CFG Path is not set. Configure it in the settings page first.';\r\n        return ctx.utils.render('main/message', {message});\r\n    }\r\n\r\n    //Read cfg file\r\n    let rawFile;\r\n    try {\r\n        let cfgFilePath = resolveCFGFilePath(globals.fxRunner.config.cfgPath, globals.fxRunner.config.serverDataPath);\r\n        rawFile = await readRawCFGFile(cfgFilePath);\r\n    } catch (error) {\r\n        let message = `Failed to read CFG File with error: ${error.message}`;\r\n        return ctx.utils.render('main/message', {message});\r\n    }\r\n\r\n    return ctx.utils.render('main/cfgEditor', {rawFile});\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/cfgEditor/get.js?")},"./src/webroutes/cfgEditor/save.js":
/*!*****************************************!*\
  !*** ./src/webroutes/cfgEditor/save.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:CFGEditorSave';\r\nconst fs = __webpack_require__(/*! fs-extra */ \"./node_modules/fs-extra/lib/index.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\nconst { validateModifyServerConfig } = __webpack_require__(/*! ../../extras/fxsConfigHelper */ \"./src/extras/fxsConfigHelper.js\");\r\n\r\n//Helper functions\r\nconst isUndefined = (x) => { return (typeof x === 'undefined'); };\r\n\r\n\r\n/**\r\n * Saves the server.cfg\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function CFGEditorSave(ctx) {\r\n    //Sanity check\r\n    if (\r\n        isUndefined(ctx.request.body.cfgData)\r\n        || typeof ctx.request.body.cfgData !== 'string'\r\n    ) {\r\n        return ctx.utils.error(400, 'Invalid Request');\r\n    }\r\n\r\n    //Check permissions\r\n    if (!ctx.utils.checkPermission('server.cfg.editor', modulename)) {\r\n        return ctx.send({\r\n            type: 'danger',\r\n            message: 'You don\\'t have permission to execute this action.',\r\n        });\r\n    }\r\n\r\n    //Check if file is set\r\n    if (!globals.fxRunner.config.cfgPath || !globals.fxRunner.config.serverDataPath) {\r\n        const message = 'CFG or Base Path not defined. Configure it in the settings page first.';\r\n        return ctx.send({type: 'danger', message});\r\n    }\r\n\r\n\r\n    //Validating config contents + saving file and backup\r\n    let result;\r\n    try {\r\n        result = await validateModifyServerConfig(\r\n            ctx.request.body.cfgData,\r\n            globals.fxRunner.config.cfgPath,\r\n            globals.fxRunner.config.serverDataPath,\r\n        );\r\n    } catch (error) {\r\n        return ctx.send({\r\n            type: 'danger',\r\n            markdown: true,\r\n            message: `**Failed to save \\`server.cfg\\` with error:**\\n${error.message}`,\r\n        });\r\n    }\r\n\r\n    //Handle result\r\n    if (result.errors) {\r\n        return ctx.send({\r\n            type: 'danger',\r\n            markdown: true,\r\n            message: `**Cannot save \\`server.cfg\\` due to error(s) in your config file(s):**\\n${result.errors}`,\r\n        });\r\n    }\r\n    if (result.warnings) {\r\n        return ctx.send({\r\n            type: 'warning',\r\n            markdown: true,\r\n            message: `**File saved, but there are warnings you should pay attention to:**\\n${result.warnings}`,\r\n        });\r\n    }\r\n    return ctx.send({\r\n        type: 'success',\r\n        markdown: true,\r\n        message: '**File saved.**',\r\n    });\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/cfgEditor/save.js?")},"./src/webroutes/chartData.js":
/*!************************************!*\
  !*** ./src/webroutes/chartData.js ***!
  \************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:ChartData';\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../extras/console */ \"./src/extras/console.js\")(modulename);\r\nconst Cache = __webpack_require__(/*! ../extras/dataCache */ \"./src/extras/dataCache.js\");\r\n\r\nconst caches = {\r\n    svNetwork: new Cache(30),\r\n    svSync: new Cache(30),\r\n    svMain: new Cache(30),\r\n};\r\n\r\n\r\n/**\r\n * Returns the output page containing the action log, and the console log\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function chartData(ctx) {\r\n    if (!Array.isArray(globals.statsCollector.perfSeries)) {\r\n        return ctx.send({failReason: 'not_set'});\r\n    }\r\n    if (globals.statsCollector.perfSeries.length < 12) {\r\n        return ctx.send({failReason: 'not_enough_data'});\r\n    }\r\n\r\n    //Process data & filter thread\r\n    const availableThreads = ['svNetwork', 'svSync', 'svMain'];\r\n    const threadName = (availableThreads.includes(ctx.params.thread)) ? ctx.params.thread : 'svMain';\r\n\r\n    //If cache available\r\n    const cachedData = caches[threadName].get();\r\n    if (cachedData !== false) {\r\n        return ctx.send(cachedData);\r\n    }\r\n\r\n    //Process log\r\n    let outData;\r\n    try {\r\n        // const maxDeltaTime = 288; //5*288 = 1440 = 1 day\r\n        const maxDeltaTime = 360; //5*360 = 30 hours\r\n        outData = globals.statsCollector.perfSeries.slice(-maxDeltaTime).map((s) => {\r\n            return {\r\n                ts: s.ts,\r\n                skipped: s.skipped,\r\n                clients: s.clients,\r\n                avgTime: s.perf[threadName].sum / s.perf[threadName].count,\r\n                buckets: s.perf[threadName].buckets,\r\n            };\r\n        });\r\n    } catch (error) {\r\n        outData = {failReason: 'data_processing'};\r\n    }\r\n\r\n    //Output\r\n    caches[threadName].set(outData);\r\n    return ctx.send(outData);\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/chartData.js?")},"./src/webroutes/dashboard.js":
/*!************************************!*\
  !*** ./src/webroutes/dashboard.js ***!
  \************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:Dashboard';\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n\r\n/**\r\n * Returns the output page containing the Dashboard (index)\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function Dashboard(ctx) {\r\n    // Check if the deployer is running or setup is pending\r\n    if (globals.deployer !== null) {\r\n        return ctx.response.redirect('/deployer');\r\n    }\r\n    if (!globals.fxRunner.config.serverDataPath || !globals.fxRunner.config.cfgPath) {\r\n        return ctx.response.redirect('/setup');\r\n    }\r\n\r\n    //Shortcut function\r\n    const getPermDisable = (perm) => {\r\n        return (ctx.utils.checkPermission(perm, modulename, false)) ? '' : 'disabled';\r\n    };\r\n\r\n    //Preparing render data\r\n    const renderData = {\r\n        discordEvent: false,\r\n        // discordEvent: {\r\n        //     timestamp: 1645512230000,\r\n        //     time: '45 minutes',\r\n        //     isLive: false,\r\n        //     time: '15 minutes ago',\r\n        //     isLive: true,\r\n        //     description: 'Release of txAdmin v4.14.0 - What\\'s New - How to Update - Feature Voting - Giveaway',\r\n        //     joinLink: 'https://discord.gg/2KpVQX665M',\r\n        //     imgSrc: 'https://discordapp.com/api/guilds/577993482761928734/widget.png?style=shield',\r\n        // },\r\n        perms: {\r\n            commandMessage: getPermDisable('players.message'),\r\n            commandKick: getPermDisable('players.kick'),\r\n            commandResources: getPermDisable('commands.resources'),\r\n            controls: getPermDisable('control.server'),\r\n            controlsClass: (ctx.utils.checkPermission('control.server', modulename, false)) ? 'danger' : 'secondary',\r\n        },\r\n    };\r\n\r\n\r\n    //Rendering the page\r\n    return ctx.utils.render('main/dashboard', renderData);\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/dashboard.js?")},"./src/webroutes/deployer/actions.js":
/*!*******************************************!*\
  !*** ./src/webroutes/deployer/actions.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:DeployerActions';\r\nconst path = __webpack_require__(/*! path */ \"path\");\r\nconst cloneDeep = __webpack_require__(/*! lodash/cloneDeep */ \"./node_modules/lodash/cloneDeep.js\");\r\nconst mysql = __webpack_require__(/*! mysql2/promise */ \"./node_modules/mysql2/promise.js\");\r\nconst slash = __webpack_require__(/*! slash */ \"./node_modules/slash/index.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\nconst { validateModifyServerConfig } = __webpack_require__(/*! ../../extras/fxsConfigHelper */ \"./src/extras/fxsConfigHelper.js\");\r\n\r\n//Helper functions\r\nconst isUndefined = (x) => { return (typeof x === 'undefined'); };\r\n\r\n\r\n/**\r\n * Handle all the server control actions\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function DeployerActions(ctx) {\r\n    //Sanity check\r\n    if (isUndefined(ctx.params.action)) {\r\n        return ctx.utils.error(400, 'Invalid Request');\r\n    }\r\n    const action = ctx.params.action;\r\n\r\n    //Check permissions\r\n    if (!ctx.utils.checkPermission('master', modulename)) {\r\n        return ctx.send({success: false, refresh: true});\r\n    }\r\n\r\n    //Check if this is the correct state for the deployer\r\n    if (globals.deployer == null) {\r\n        return ctx.send({success: false, refresh: true});\r\n    }\r\n\r\n    //Delegate to the specific action functions\r\n    if (action == 'confirmRecipe') {\r\n        return await handleConfirmRecipe(ctx);\r\n    } else if (action == 'setVariables') {\r\n        return await handleSetVariables(ctx);\r\n    } else if (action == 'commit') {\r\n        return await handleSaveConfig(ctx);\r\n    } else if (action == 'cancel') {\r\n        return await handleCancel(ctx);\r\n    } else {\r\n        return ctx.send({\r\n            type: 'danger',\r\n            message: 'Unknown setup action.',\r\n        });\r\n    }\r\n};\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle submition of user-edited recipe (record to deployer, starts the process)\r\n * @param {object} ctx\r\n */\r\nasync function handleConfirmRecipe(ctx) {\r\n    //Sanity check\r\n    if (isUndefined(ctx.request.body.recipe)) {\r\n        return ctx.utils.error(400, 'Invalid Request - missing parameters');\r\n    }\r\n    const userEditedRecipe = ctx.request.body.recipe;\r\n\r\n    try {\r\n        ctx.utils.logAction('Setting recipe.');\r\n        await globals.deployer.confirmRecipe(userEditedRecipe);\r\n    } catch (error) {\r\n        return ctx.send({type: 'danger', message: error.message});\r\n    }\r\n\r\n    return ctx.send({success: true});\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle submition of the input variables/parameters\r\n * @param {object} ctx\r\n */\r\nasync function handleSetVariables(ctx) {\r\n    //Sanity check\r\n    if (isUndefined(ctx.request.body.svLicense)) {\r\n        return ctx.utils.error(400, 'Invalid Request - missing parameters');\r\n    }\r\n    const userVars = cloneDeep(ctx.request.body);\r\n\r\n    //Validating sv_licenseKey\r\n    if (\r\n        !GlobalData.regexSvLicenseNew.test(userVars.svLicense)\r\n        && !GlobalData.regexSvLicenseOld.test(userVars.svLicense)\r\n    ) {\r\n        return ctx.send({type: 'danger', message: 'The Server License does not appear to be valid.'});\r\n    }\r\n\r\n    //DB Stuff\r\n    if (typeof userVars.dbDelete !== 'undefined') {\r\n        //Testing the db config\r\n        try {\r\n            const mysqlOptions = {\r\n                host: userVars.dbHost,\r\n                user: userVars.dbUsername,\r\n                password: userVars.dbPassword,\r\n            };\r\n            await mysql.createConnection(mysqlOptions);\r\n        } catch (error) {\r\n            const msgHeader = `<b>Database connection failed:</b> ${error.message}`;\r\n            if (error.code == 'ECONNREFUSED') {\r\n                const osSpecific = (GlobalData.osType === 'windows')\r\n                    ? 'If you do not have a database installed, you can download and run XAMPP.'\r\n                    : 'If you do not have a database installed, you must download and run MySQL or MariaDB.';\r\n                return ctx.send({type: 'danger', message: `${msgHeader}<br>\\n${osSpecific}`});\r\n            } else {\r\n                return ctx.send({type: 'danger', message: msgHeader});\r\n            }\r\n        }\r\n\r\n        //Setting connection string\r\n        userVars.dbDelete = (userVars.dbDelete === 'true');\r\n        userVars.dbConnectionString = (userVars.dbPassword.length)\r\n            ? `mysql://${userVars.dbUsername}:${userVars.dbPassword}@${userVars.dbHost}/${userVars.dbName}?charset=utf8mb4`\r\n            : `mysql://${userVars.dbUsername}@${userVars.dbHost}/${userVars.dbName}?charset=utf8mb4`;\r\n    }\r\n\r\n    //Max Clients & Server Endpoints\r\n    userVars.maxClients = (GlobalData.deployerDefaults && GlobalData.deployerDefaults.maxClients) ? GlobalData.deployerDefaults.maxClients : 48;\r\n    if (GlobalData.forceInterface) {\r\n        const suffix = '# zap-hosting: do not modify!';\r\n        userVars.serverEndpoints = [\r\n            `endpoint_add_tcp \"${GlobalData.forceInterface}:${GlobalData.forceFXServerPort}\" ${suffix}`,\r\n            `endpoint_add_udp \"${GlobalData.forceInterface}:${GlobalData.forceFXServerPort}\" ${suffix}`,\r\n        ].join('\\n');\r\n    } else {\r\n        userVars.serverEndpoints = [\r\n            'endpoint_add_tcp \"0.0.0.0:30120\"',\r\n            'endpoint_add_udp \"0.0.0.0:30120\"',\r\n        ].join('\\n');\r\n    }\r\n\r\n    //Setting identifiers array\r\n    const admin = globals.adminVault.getAdminByName(ctx.session.auth.username);\r\n    if (!admin) return ctx.send({type: 'danger', message: 'Admin not found.'});\r\n    const addPrincipalLines = [];\r\n    Object.keys(admin.providers).forEach((providerName) => {\r\n        if (admin.providers[providerName].identifier) {\r\n            addPrincipalLines.push(`add_principal identifier.${admin.providers[providerName].identifier} group.admin #${ctx.session.auth.username}`);\r\n        }\r\n    });\r\n    userVars.addPrincipalsMaster = (addPrincipalLines.length)\r\n        ? addPrincipalLines.join('\\n')\r\n        : '# Deployer Note: this admin master has no identifiers to be automatically added.\\n# add_principal identifier.discord.111111111111111111 group.admin #example';\r\n\r\n    //Start deployer\r\n    try {\r\n        ctx.utils.logAction('Running recipe.');\r\n        globals.deployer.start(userVars);\r\n    } catch (error) {\r\n        return ctx.send({type: 'danger', message: error.message});\r\n    }\r\n\r\n    return ctx.send({success: true});\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle the commit of a Recipe by receiving the user edited server.cfg\r\n * @param {object} ctx\r\n */\r\nasync function handleSaveConfig(ctx) {\r\n    //Sanity check\r\n    if (isUndefined(ctx.request.body.serverCFG)) {\r\n        return ctx.utils.error(400, 'Invalid Request - missing parameters');\r\n    }\r\n    const serverCFG = ctx.request.body.serverCFG;\r\n    const cfgFilePath = path.join(globals.deployer.deployPath, 'server.cfg');\r\n\r\n    //Validating config contents + saving file and backup\r\n    try {\r\n        const result = await validateModifyServerConfig(serverCFG, cfgFilePath, globals.deployer.deployPath);\r\n        if (result.errors) {\r\n            return ctx.send({\r\n                type: 'danger',\r\n                success: false,\r\n                markdown: true,\r\n                message: `**Cannot save \\`server.cfg\\` due to error(s) in your config file(s):**\\n${result.errors}`,\r\n            });\r\n        }\r\n    } catch (error) {\r\n        return ctx.send({\r\n            type: 'danger',\r\n            success: false,\r\n            markdown: true,\r\n            message: `**Failed to save \\`server.cfg\\` with error:**\\n${error.message}`,\r\n        });\r\n    }\r\n\r\n    //Preparing & saving config\r\n    const newFXRunnerConfig = globals.configVault.getScopedStructure('fxRunner');\r\n    newFXRunnerConfig.serverDataPath = slash(path.normalize(globals.deployer.deployPath));\r\n    newFXRunnerConfig.cfgPath = slash(path.normalize(cfgFilePath));\r\n    if (typeof globals.deployer.recipe.onesync !== 'undefined') {\r\n        newFXRunnerConfig.onesync = globals.deployer.recipe.onesync;\r\n    }\r\n    const saveFXRunnerStatus = globals.configVault.saveProfile('fxRunner', newFXRunnerConfig);\r\n\r\n    if (saveFXRunnerStatus) {\r\n        globals.fxRunner.refreshConfig();\r\n        ctx.utils.logAction('Completed and committed server deploy.');\r\n\r\n        //Starting server\r\n        const spawnMsg = await globals.fxRunner.spawnServer(false);\r\n        if (spawnMsg !== null) {\r\n            return ctx.send({\r\n                type: 'danger',\r\n                markdown: true,\r\n                message: `Config file saved, but faied to start server with error:\\n${spawnMsg}`,\r\n            });\r\n        } else {\r\n            globals.deployer = null;\r\n            return ctx.send({success: true});\r\n        }\r\n    } else {\r\n        logWarn(`[${ctx.session.auth.username}] Error changing fxserver settings via deployer.`);\r\n        return ctx.send({\r\n            type: 'danger',\r\n            markdown: true,\r\n            message: '**Error saving the configuration file.**',\r\n        });\r\n    }\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle the cancellation of the deployer proguess\r\n * @param {object} ctx\r\n */\r\nasync function handleCancel(ctx) {\r\n    globals.deployer = null;\r\n    return ctx.send({success: true});\r\n}\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/deployer/actions.js?")},"./src/webroutes/deployer/status.js":
/*!******************************************!*\
  !*** ./src/webroutes/deployer/status.js ***!
  \******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:DeployerStatus';\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n\r\n/**\r\n * Returns the output page containing the live console\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function DeployerStatus(ctx) {\r\n    //Check permissions\r\n    if (!ctx.utils.checkPermission('all_permissions', modulename)) {\r\n        return ctx.send({success: false, refresh: true});\r\n    }\r\n\r\n    //Check if this is the correct state for the deployer\r\n    if (globals.deployer == null) {\r\n        return ctx.send({success: false, refresh: true});\r\n    }\r\n\r\n    //Prepare data\r\n    const outData = {\r\n        progress: globals.deployer.progress,\r\n        log: globals.deployer.getLog(),\r\n    };\r\n    if (globals.deployer.step == 'configure') {\r\n        outData.status = 'done';\r\n    } else if (globals.deployer.deployFailed) {\r\n        outData.status = 'failed';\r\n    } else {\r\n        outData.status = 'running';\r\n    }\r\n\r\n    return ctx.send(outData);\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/deployer/status.js?")},"./src/webroutes/deployer/stepper.js":
/*!*******************************************!*\
  !*** ./src/webroutes/deployer/stepper.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:DeployerStepper';\r\nconst fs = __webpack_require__(/*! fs-extra */ \"./node_modules/fs-extra/lib/index.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n\r\n/**\r\n * Returns the output page containing the live console\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function DeployerStepper(ctx) {\r\n    //Check permissions\r\n    if (!ctx.utils.checkPermission('master', modulename)) {\r\n        return ctx.utils.render('main/message', {message: 'You need to be the admin master to use the deployer.'});\r\n    }\r\n\r\n    //Check if this is the correct state for the deployer\r\n    if (globals.deployer == null) {\r\n        const redirPath = (!globals.fxRunner.config.cfgPath || !globals.fxRunner.config.serverDataPath) ? '/setup' : '/';\r\n        return ctx.response.redirect(redirPath);\r\n    }\r\n\r\n    //Prepare Output\r\n    const renderData = {\r\n        step: globals.deployer.step,\r\n        serverProfile: globals.info.serverProfile,\r\n        deploymentID: globals.deployer.deploymentID,\r\n        requireDBConfig: false,\r\n        defaultLicenseKey: '',\r\n        recipe: undefined,\r\n        defaults: {},\r\n    };\r\n\r\n    if (globals.deployer.step === 'review') {\r\n        renderData.recipe = {\r\n            isTrustedSource: globals.deployer.isTrustedSource,\r\n            name: globals.deployer.recipe.name,\r\n            version: globals.deployer.recipe.version,\r\n            author: globals.deployer.recipe.author,\r\n            description: globals.deployer.recipe.description,\r\n            raw: globals.deployer.recipe.raw,\r\n        };\r\n    } else if (globals.deployer.step === 'input') {\r\n        renderData.defaultLicenseKey = ({\"APP_ENV\":\"webpack\"}).TXADMIN_DEFAULT_LICENSE || '';\r\n        renderData.requireDBConfig = globals.deployer.recipe.requireDBConfig;\r\n        if (GlobalData.deployerDefaults) {\r\n            renderData.defaults = {\r\n                autofilled: true,\r\n                license: GlobalData.deployerDefaults.license || '',\r\n                mysqlHost: GlobalData.deployerDefaults.mysqlHost || 'localhost',\r\n                mysqlUser: GlobalData.deployerDefaults.mysqlUser || 'root',\r\n                mysqlPassword: GlobalData.deployerDefaults.mysqlPassword || '',\r\n                mysqlDatabase: GlobalData.deployerDefaults.mysqlDatabase || globals.deployer.deploymentID,\r\n            };\r\n        } else {\r\n            renderData.defaults = {\r\n                autofilled: false,\r\n                license: ({\"APP_ENV\":\"webpack\"}).TXADMIN_DEFAULT_LICENSE || '',\r\n                mysqlHost: 'localhost',\r\n                mysqlUser: 'root',\r\n                mysqlPassword: '',\r\n                mysqlDatabase: globals.deployer.deploymentID,\r\n            };\r\n        }\r\n\r\n        const recipeVars = globals.deployer.getRecipeVars();\r\n        renderData.inputVars = Object.keys(recipeVars).map((name) => {\r\n            return {\r\n                name: name,\r\n                value: recipeVars[name],\r\n            };\r\n        });\r\n    } else if (globals.deployer.step === 'run') {\r\n        renderData.deployPath = globals.deployer.deployPath;\r\n    } else if (globals.deployer.step === 'configure') {\r\n        const errorMessage = `# This recipe didn't create the ./server.cfg for you, meaning the process likely failed.\r\n# Please make sure everything is correct, or insert here the contents of the ./server.cfg\r\n# (╯°□°）╯︵ ┻━┻`;\r\n        try {\r\n            renderData.serverCFG = await fs.readFile(`${globals.deployer.deployPath}/server.cfg`, 'utf8');\r\n            if (renderData.serverCFG == '#save_attempt_please_ignore' || !renderData.serverCFG.length) {\r\n                renderData.serverCFG = errorMessage;\r\n            } else if (renderData.serverCFG.length > 10240) { //10kb\r\n                renderData.serverCFG = `# This recipe created a ./server.cfg above 10kb, meaning its probably the wrong data. \r\nMake sure everything is correct in the recipe and try again.`;\r\n            }\r\n        } catch (error) {\r\n            if (GlobalData.verbose) dir(error);\r\n            renderData.serverCFG = errorMessage;\r\n        }\r\n    } else {\r\n        return ctx.utils.render('main/message', {message: 'Unknown Deployer step, please report this bug and restart txAdmin.'});\r\n    }\r\n\r\n    return ctx.utils.render('standalone/deployer', renderData);\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/deployer/stepper.js?")},"./src/webroutes/diagnostics.js":
/*!**************************************!*\
  !*** ./src/webroutes/diagnostics.js ***!
  \**************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:Diagnostics';\r\nconst os = __webpack_require__(/*! os */ \"os\");\r\nconst bytes = __webpack_require__(/*! bytes */ \"./node_modules/bytes/index.js\");\r\nconst pidusageTree = __webpack_require__(/*! pidusage-tree */ \"./node_modules/pidusage-tree/index.js\");\r\nconst humanizeDuration = __webpack_require__(/*! humanize-duration */ \"./node_modules/humanize-duration/humanize-duration.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../extras/console */ \"./src/extras/console.js\")(modulename);\r\nconst Cache = __webpack_require__(/*! ../extras/dataCache */ \"./src/extras/dataCache.js\");\r\nconst helpers = __webpack_require__(/*! ../extras/helpers */ \"./src/extras/helpers.js\");\r\nconst got = __webpack_require__(/*! ../extras/got */ \"./src/extras/got.js\");\r\n\r\nconst cache = new Cache(5);\r\n\r\n\r\n/**\r\n * Returns the output page containing the full report\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function Diagnostics(ctx) {\r\n    const cachedData = cache.get();\r\n    if (cachedData !== false) {\r\n        cachedData.message = 'This page was cached in the last 5 seconds';\r\n        return ctx.utils.render('main/diagnostics', cachedData);\r\n    }\r\n\r\n    const timeStart = Date.now();\r\n    const data = {\r\n        headerTitle: 'Full Report',\r\n        message: '',\r\n    };\r\n    [data.host, data.txadmin, data.fxserver, data.proccesses] = await Promise.all([\r\n        getHostData(),\r\n        gettxAdminData(),\r\n        getFXServerData(),\r\n        getProcessesData(),\r\n    ]);\r\n\r\n    const timeElapsed = Date.now() - timeStart;\r\n    data.message = `Executed in ${timeElapsed} ms`;\r\n\r\n    cache.set(data);\r\n    return ctx.utils.render('main/diagnostics', data);\r\n};\r\n\r\n\r\n//================================================================\r\n/**\r\n * Gets the Processes Data.\r\n * TODO: get process name with wmic\r\n *       wmic PROCESS get \"Name,ParentProcessId,ProcessId,CommandLine,CreationDate,UserModeTime,WorkingSetSize\"\r\n */\r\nasync function getProcessesData() {\r\n    const procList = [];\r\n    try {\r\n        const processes = await pidusageTree(process.pid);\r\n\r\n        //NOTE: Cleaning invalid proccesses that might show up in Linux\r\n        Object.keys(processes).forEach((pid) => {\r\n            if (processes[pid] === null) delete processes[pid];\r\n        });\r\n\r\n        //Foreach PID\r\n        Object.keys(processes).forEach((pid) => {\r\n            const curr = processes[pid];\r\n\r\n            //Define name and order\r\n            let procName;\r\n            let order = process.timestamp || 1;\r\n            if (pid == process.pid) {\r\n                procName = 'txAdmin (inside FXserver)';\r\n                order = 0;\r\n            } else if (curr.memory <= 10 * 1024 * 1024) {\r\n                procName = 'FXServer MiniDump';\r\n            } else {\r\n                procName = 'FXServer';\r\n            }\r\n\r\n            procList.push({\r\n                pid: pid,\r\n                ppid: (curr.ppid == process.pid) ? 'txAdmin' : curr.ppid,\r\n                name: procName,\r\n                cpu: (curr.cpu).toFixed(2) + '%',\r\n                memory: bytes(curr.memory),\r\n                order: order,\r\n            });\r\n        });\r\n    } catch (error) {\r\n        logError('Error getting processes data.');\r\n        if (GlobalData.verbose) dir(error);\r\n    }\r\n\r\n    //Sort procList array\r\n    procList.sort(( a, b ) => {\r\n        if ( a.order < b.order )  return -1;\r\n        if ( a.order > b.order ) return 1;\r\n        return 0;\r\n    });\r\n\r\n    return procList;\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Gets the FXServer Data.\r\n */\r\nasync function getFXServerData() {\r\n    //Sanity Check\r\n    if (globals.fxRunner.fxChild === null || globals.fxRunner.fxServerHost === null) {\r\n        return {error: 'Server Offline'};\r\n    }\r\n\r\n    //Preparing request\r\n    const requestOptions = {\r\n        url: `http://${globals.fxRunner.fxServerHost}/info.json`,\r\n        maxRedirects: 0,\r\n        timeout: globals.monitor.hardConfigs.timeout,\r\n        retry: {limit: 0},\r\n    };\r\n\r\n    //Making HTTP Request\r\n    let infoData;\r\n    try {\r\n        infoData = await got.get(requestOptions).json();\r\n    } catch (error) {\r\n        logWarn('Failed to get FXServer information.');\r\n        if (GlobalData.verbose) dir(error);\r\n        return {error: 'Failed to retrieve FXServer data. <br>The server must be online for this operation. <br>Check the terminal for more information (if verbosity is enabled)'};\r\n    }\r\n\r\n    //Helper function\r\n    const getBuild = (ver) => {\r\n        try {\r\n            const regex = /v1\\.0\\.0\\.(\\d{4,5})\\s*/;\r\n            const res = regex.exec(ver);\r\n            return parseInt(res[1]);\r\n        } catch (error) {\r\n            return 0;\r\n        }\r\n    };\r\n\r\n    //Processing result\r\n    try {\r\n        let resourcesWarning;\r\n        if (infoData.resources.length <= 100) {\r\n            resourcesWarning = '';\r\n        } else if (infoData.resources.length < 200) {\r\n            resourcesWarning = '<span class=\"badge badge-warning\"> HIGH </span>';\r\n        } else {\r\n            resourcesWarning = '<span class=\"badge badge-danger\"> VERY HIGH! </span>';\r\n        }\r\n\r\n        return {\r\n            error: false,\r\n            statusColor: 'success',\r\n            status: ' ONLINE ',\r\n            version: infoData.server,\r\n            versionMismatch: (getBuild(infoData.server) !== GlobalData.fxServerVersion),\r\n            resources: infoData.resources.length,\r\n            resourcesWarning: resourcesWarning,\r\n            onesync: (infoData.vars && infoData.vars.onesync_enabled === 'true') ? 'enabled' : 'disabled',\r\n            maxClients: (infoData.vars && infoData.vars.sv_maxClients) ? infoData.vars.sv_maxClients : '--',\r\n            txAdminVersion: (infoData.vars && infoData.vars['txAdmin-version']) ? infoData.vars['txAdmin-version'] : '--',\r\n        };\r\n    } catch (error) {\r\n        logWarn('Failed to process FXServer information.');\r\n        if (GlobalData.verbose) dir(error);\r\n        return {error: 'Failed to process FXServer data. <br>Check the terminal for more information (if verbosity is enabled)'};\r\n    }\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Gets the Host Data.\r\n */\r\nasync function getHostData() {\r\n    try {\r\n        const userInfo = os.userInfo();\r\n        const hostData = {\r\n            nodeVersion: process.version,\r\n            osDistro: GlobalData.osDistro || GlobalData.osType,\r\n            username: `${userInfo.username}`,\r\n            memory: 'not available',\r\n            cpus: 'not available',\r\n            clockWarning: '',\r\n            error: false,\r\n        };\r\n\r\n        const stats = globals.monitor.hostStats;\r\n        if (stats) {\r\n            hostData.memory = `${stats.memory.usage}% (${stats.memory.used.toFixed(2)}/${stats.memory.total.toFixed(2)} GB)`;\r\n            hostData.cpus = `${stats.cpu.usage}% of ${stats.cpu.count}x ${stats.cpu.speed} MHz`;\r\n            if (stats.cpu.count < 8) {\r\n                if (stats.cpu.speed <= 2400) {\r\n                    hostData.clockWarning = '<span class=\"badge badge-danger\"> VERY SLOW! </span>';\r\n                } else if (stats.cpu.speed < 3000) {\r\n                    hostData.clockWarning = '<span class=\"badge badge-warning\"> SLOW </span>';\r\n                }\r\n            }\r\n        }\r\n        return hostData;\r\n    } catch (error) {\r\n        logError('Error getting Host data');\r\n        if (GlobalData.verbose) dir(error);\r\n        return {error: 'Failed to retrieve host data. <br>Check the terminal for more information (if verbosity is enabled)'};\r\n    }\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Gets txAdmin Data\r\n */\r\nasync function gettxAdminData() {\r\n    const humanizeOptions = {\r\n        round: true,\r\n        units: ['d', 'h', 'm'],\r\n    };\r\n\r\n    const controllerConfigs = globals.playerController.config;\r\n    const httpCounter = globals.databus.txStatsData.httpCounter;\r\n    return {\r\n        //Stats\r\n        uptime: humanizeDuration(process.uptime() * 1000, humanizeOptions),\r\n        cfxUrl: (GlobalData.cfxUrl) ? `https://${GlobalData.cfxUrl}/` : '--',\r\n        banlistEnabled: controllerConfigs.onJoinCheckBan.toString(),\r\n        whitelistEnabled: controllerConfigs.onJoinCheckWhitelist.toString(),\r\n        httpCounterLog: httpCounter.log.join(', ') || '--',\r\n        httpCounterMax: httpCounter.max || '--',\r\n        monitorRestarts: {\r\n            close: globals.databus.txStatsData.monitorStats.restartReasons.close,\r\n            heartBeat: globals.databus.txStatsData.monitorStats.restartReasons.heartBeat,\r\n            healthCheck: globals.databus.txStatsData.monitorStats.restartReasons.healthCheck,\r\n        },\r\n        hbFD3Fails: globals.databus.txStatsData.monitorStats.heartBeatStats.fd3Failed,\r\n        hbHTTPFails: globals.databus.txStatsData.monitorStats.heartBeatStats.httpFailed,\r\n        hbBootSeconds: globals.databus.txStatsData.monitorStats.bootSeconds.join(', ') || '--',\r\n        freezeSeconds: globals.databus.txStatsData.monitorStats.freezeSeconds.join(', ') || '--',\r\n        koaSessions: Object.keys(globals.webServer.koaSessionMemoryStore.sessions).length || '--',\r\n\r\n        //Log stuff:\r\n        logStorageSize: (await globals.logger.getStorageSize()).total,\r\n        loggerStatusAdmin: globals.logger.admin.getUsageStats(),\r\n        loggerStatusFXServer: globals.logger.fxserver.getUsageStats(),\r\n        loggerStatusServer: globals.logger.server.getUsageStats(),\r\n\r\n        //Settings\r\n        cooldown: globals.monitor.config.cooldown,\r\n        schedule: globals.monitor.config.restarterSchedule.join(', ') || '--',\r\n        commandLine: (globals.fxRunner.config.commandLine && globals.fxRunner.config.commandLine.length)\r\n            ? helpers.redactApiKeys(globals.fxRunner.config.commandLine)\r\n            : '--',\r\n        fxServerPath: GlobalData.fxServerPath,\r\n        serverDataPath: globals.fxRunner.config.serverDataPath,\r\n        cfgPath: globals.fxRunner.config.cfgPath,\r\n        fxServerHost: (globals.fxRunner.fxServerHost)\r\n            ? globals.fxRunner.fxServerHost\r\n            : '--',\r\n    };\r\n}\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/diagnostics.js?")},"./src/webroutes/fxserver/commands.js":
/*!********************************************!*\
  !*** ./src/webroutes/fxserver/commands.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:FXServerCommands';\r\nconst xss = __webpack_require__(/*! ../../extras/xss */ \"./src/extras/xss.js\")();\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n//Helper functions\r\nconst escape = (x) => {return x.replace(/\"/g, '\\uff02');};\r\nconst formatCommand = (cmd, ...params) => {\r\n    return `${cmd} \"` + [...params].map(escape).join('\" \"') + '\"';\r\n};\r\n\r\n\r\n/**\r\n * Handle all the server commands\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function FXServerCommands(ctx) {\r\n    if (\r\n        typeof ctx.request.body.action === 'undefined'\r\n        || typeof ctx.request.body.parameter === 'undefined'\r\n    ) {\r\n        logWarn('Invalid request!');\r\n        return sendAlertOutput(ctx, 'Invalid request!');\r\n    }\r\n    let action = ctx.request.body.action;\r\n    let parameter = ctx.request.body.parameter;\r\n\r\n    //Ignore commands when the server is offline\r\n    if (globals.fxRunner.fxChild === null) {\r\n        return ctx.send({\r\n            type: 'danger',\r\n            message: '<b>Cannot execute this action with the server offline.</b>',\r\n        });\r\n    }\r\n\r\n    //Block starting/restarting the 'runcode' resource\r\n    let unsafeActions = ['restart_res', 'start_res', 'ensure_res'];\r\n    if (unsafeActions.includes(action) && parameter.includes('runcode')) {\r\n        return ctx.send({\r\n            type: 'danger',\r\n            message: '<b>Error:</b> The resource \"runcode\" might be unsafe. <br> If you know what you are doing, run it via the Live Console.',\r\n        });\r\n    }\r\n\r\n\r\n    //==============================================\r\n    //DEBUG: Only available in the /advanced page\r\n    if (action == 'profile_monitor') {\r\n        if (!ensurePermission(ctx, 'all_permissions')) return false;\r\n        ctx.utils.logAction('Profiling txAdmin instance.');\r\n\r\n        const profSeconds = 5;\r\n        const savePath = `${globals.info.serverProfilePath}/data/txProfile.bin`;\r\n        ExecuteCommand('profiler record start');\r\n        setTimeout(async () => {\r\n            ExecuteCommand('profiler record stop');\r\n            setTimeout(async () => {\r\n                ExecuteCommand(`profiler save \"${escape(savePath)}\"`);\r\n                setTimeout(async () => {\r\n                    logOk(`Profile saved to: ${savePath}`);\r\n                    globals.fxRunner.srvCmd(`profiler view \"${escape(savePath)}\"`);\r\n                }, 150);\r\n            }, 150);\r\n        }, profSeconds * 1000);\r\n        return sendAlertOutput(ctx, 'Check your live console in a few seconds.');\r\n\r\n    //==============================================\r\n    } else if (action == 'admin_broadcast') {\r\n        if (!ensurePermission(ctx, 'players.message')) return false;\r\n        const message = (parameter ?? '').trim();\r\n\r\n        // Dispatch `txAdmin:events:announcement`\r\n        const cmdOk = globals.fxRunner.sendEvent('announcement', {\r\n            message,\r\n            author: ctx.session.auth.username,\r\n        });\r\n        ctx.utils.logAction(`Sending announcement: ${parameter}`);\r\n\r\n        // Sending discord announcement\r\n        const discMessage = message.replace(/\\`/g, '\\\\`').replace(/\\n/g, '\\n> ');\r\n        const discMsgTitle = globals.translator.t(\r\n            'nui_menu.misc.announcement_title',\r\n            {author: ctx.session.auth.username}\r\n        );\r\n        await globals.discordBot.sendAnnouncement(`${discMsgTitle}\\n> ${discMessage}`);\r\n\r\n        return ctx.send({\r\n            type: cmdOk ? 'success' : 'danger',\r\n            message: 'Announcement sent!',\r\n        });\r\n\r\n    //==============================================\r\n    } else if (action == 'kick_all') {\r\n        if (!ensurePermission(ctx, 'players.kick')) return false;\r\n        let cmd;\r\n        if (parameter.length) {\r\n            cmd = formatCommand('txaKickAll', parameter);\r\n        } else {\r\n            cmd = 'txaKickAll \"txAdmin Web Panel\"';\r\n        }\r\n        ctx.utils.logCommand(cmd);\r\n        let toResp = await globals.fxRunner.srvCmdBuffer(cmd);\r\n        return sendAlertOutput(ctx, toResp);\r\n\r\n    //==============================================\r\n    } else if (action == 'restart_res') {\r\n        if (!ensurePermission(ctx, 'commands.resources')) return false;\r\n        let cmd = formatCommand('restart', parameter);\r\n        ctx.utils.logCommand(cmd);\r\n        let toResp = await globals.fxRunner.srvCmdBuffer(cmd);\r\n        return sendAlertOutput(ctx, toResp);\r\n\r\n    //==============================================\r\n    } else if (action == 'start_res') {\r\n        if (!ensurePermission(ctx, 'commands.resources')) return false;\r\n        let cmd = formatCommand('start', parameter);\r\n        ctx.utils.logCommand(cmd);\r\n        let toResp = await globals.fxRunner.srvCmdBuffer(cmd);\r\n        return sendAlertOutput(ctx, toResp);\r\n\r\n    //==============================================\r\n    } else if (action == 'ensure_res') {\r\n        if (!ensurePermission(ctx, 'commands.resources')) return false;\r\n        let cmd = formatCommand('ensure', parameter);\r\n        ctx.utils.logCommand(cmd);\r\n        let toResp = await globals.fxRunner.srvCmdBuffer(cmd);\r\n        return sendAlertOutput(ctx, toResp);\r\n\r\n    //==============================================\r\n    } else if (action == 'stop_res') {\r\n        if (!ensurePermission(ctx, 'commands.resources')) return false;\r\n        let cmd = formatCommand('stop', parameter);\r\n        ctx.utils.logCommand(cmd);\r\n        let toResp = await globals.fxRunner.srvCmdBuffer(cmd);\r\n        return sendAlertOutput(ctx, toResp);\r\n\r\n    //==============================================\r\n    } else if (action == 'refresh_res') {\r\n        if (!ensurePermission(ctx, 'commands.resources')) return false;\r\n        let cmd = 'refresh';\r\n        ctx.utils.logCommand(cmd);\r\n        let toResp = await globals.fxRunner.srvCmdBuffer(cmd);\r\n        return sendAlertOutput(ctx, toResp);\r\n\r\n    //==============================================\r\n    } else if (action == 'check_txaclient') {\r\n        let cmd = 'txaPing';\r\n        ctx.utils.logCommand(cmd);\r\n        let toResp = await globals.fxRunner.srvCmdBuffer(cmd, 512);\r\n        if (toResp.includes('Pong!')) {\r\n            return ctx.send({\r\n                type: 'success',\r\n                message: `<b>txAdminClient is running!</b><br> <pre>${xss(toResp)}</pre>`,\r\n            });\r\n        } else {\r\n            return ctx.send({\r\n                type: 'danger',\r\n                message: `<b>txAdminClient is not running!</b><br> <pre>${xss(toResp)}</pre>`,\r\n            });\r\n        }\r\n\r\n    //==============================================\r\n    } else {\r\n        ctx.utils.logCommand('Unknown action!');\r\n        return ctx.send({\r\n            type: 'danger',\r\n            message: 'Unknown Action.',\r\n        });\r\n    }\r\n};\r\n\r\n\r\n\r\n//================================================================\r\n/**\r\n * Wrapper function to send the output to be shown inside an alert\r\n * @param {object} ctx\r\n * @param {string} msg\r\n */\r\nasync function sendAlertOutput(ctx, toResp) {\r\n    toResp = (toResp.length) ? xss(toResp) : 'no output';\r\n    return ctx.send({\r\n        type: 'warning',\r\n        message: `<b>Output:</b><br> <pre>${toResp}</pre>`,\r\n    });\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Wrapper function to check permission and give output if denied\r\n * @param {object} ctx\r\n * @param {string} perm\r\n */\r\nfunction ensurePermission(ctx, perm) {\r\n    if (ctx.utils.checkPermission(perm, modulename)) {\r\n        return true;\r\n    } else {\r\n        ctx.send({\r\n            type: 'danger',\r\n            message: 'You don\\'t have permission to execute this action.',\r\n        });\r\n        return false;\r\n    }\r\n}\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/fxserver/commands.js?")},"./src/webroutes/fxserver/controls.js":
/*!********************************************!*\
  !*** ./src/webroutes/fxserver/controls.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:FXServerControls';\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n\r\n/**\r\n * Handle all the server control actions\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function FXServerControls(ctx) {\r\n    //Sanity check\r\n    if (typeof ctx.params.action === 'undefined') {\r\n        return ctx.utils.error(400, 'Invalid Request');\r\n    }\r\n    const action = ctx.params.action;\r\n\r\n    //Check permissions\r\n    if (!ctx.utils.checkPermission('control.server', modulename)) {\r\n        return ctx.send({\r\n            type: 'danger',\r\n            message: 'You don\\'t have permission to execute this action.',\r\n        });\r\n    }\r\n\r\n    if (action == 'restart') {\r\n        ctx.utils.logCommand('RESTART SERVER');\r\n        //TODO: delay override message logic should be on fxserver, but for now keep here\r\n        // as it messages with the sync notification on the UI\r\n        if (globals.fxRunner.restartDelayOverride || globals.fxRunner.restartDelayOverride <= 4000) {\r\n            globals.fxRunner.restartServer('admin request', ctx.session.auth.username);\r\n            return ctx.send({type: 'success', message: `Restarting the fxserver with delay override ${globals.fxRunner.restartDelayOverride}.`});\r\n        } else {\r\n            const restartMsg = await globals.fxRunner.restartServer('admin request', ctx.session.auth.username);\r\n            if (restartMsg !== null) {\r\n                return ctx.send({type: 'danger', markdown: true, message: restartMsg});\r\n            } else {\r\n                return ctx.send({type: 'success', message: 'Restarting server...'});\r\n            }\r\n        }\r\n    } else if (action == 'stop') {\r\n        if (globals.fxRunner.fxChild === null) {\r\n            return ctx.send({type: 'danger', message: 'The server is already stopped.'});\r\n        }\r\n        ctx.utils.logCommand('STOP SERVER');\r\n        await globals.fxRunner.killServer('admin request', ctx.session.auth.username, false);\r\n        return ctx.send({type: 'warning', message: 'Server stopped.'});\r\n    } else if (action == 'start') {\r\n        if (globals.fxRunner.fxChild !== null) {\r\n            return ctx.send({type: 'danger', message: 'The server is already running. If it\\'s not working, press RESTART.'});\r\n        }\r\n        ctx.utils.logCommand('START SERVER');\r\n        const spawnMsg = await globals.fxRunner.spawnServer(true);\r\n        if (spawnMsg !== null) {\r\n            return ctx.send({type: 'danger', markdown: true, message: spawnMsg});\r\n        } else {\r\n            return ctx.send({type: 'success', message: 'Starting server...'});\r\n        }\r\n    } else {\r\n        logWarn(`Unknown control action '${action}'.`);\r\n        return ctx.utils.error(400, 'Unknown Action');\r\n    }\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/fxserver/controls.js?")},"./src/webroutes/fxserver/downloadLog.js":
/*!***********************************************!*\
  !*** ./src/webroutes/fxserver/downloadLog.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:FXServerDownloadLog';\r\nconst fs = __webpack_require__(/*! fs */ \"fs\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n\r\n/**\r\n * Returns the console log file\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function FXServerDownloadLog(ctx) {\r\n    //Check permissions\r\n    if (!ctx.utils.checkPermission('console.view', modulename)) {\r\n        return ctx.utils.render('main/message', {message: 'You don\\'t have permission to download this log.'});\r\n    }\r\n\r\n    let readFile;\r\n    try {\r\n        //NOTE: thy the fuck are errors from `createReadStream` not being caught? Well, using readFileSync for now...\r\n        // readFile = fs.createReadStream(globals.fxRunner.config.logPath);\r\n        readFile = fs.readFileSync(globals.fxRunner.config.logPath);\r\n    } catch (error) {\r\n        logError(`Could not read log file ${globals.fxRunner.config.logPath}.`);\r\n    }\r\n    const now = (new Date() / 1000).toFixed();\r\n    ctx.attachment(`fxserver_${now}.log`);\r\n    ctx.body = readFile;\r\n    log(`[${ctx.session.auth.username}] Downloading console log file.`);\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/fxserver/downloadLog.js?")},"./src/webroutes/index.js":
/*!********************************!*\
  !*** ./src/webroutes/index.js ***!
  \********************************/(__unused_webpack_module,exports,__webpack_require__)=>{eval('exports.dashboard = __webpack_require__(/*! ./dashboard.js */ "./src/webroutes/dashboard.js");\r\nexports.diagnostics = __webpack_require__(/*! ./diagnostics.js */ "./src/webroutes/diagnostics.js");\r\nexports.intercom = __webpack_require__(/*! ./intercom.js */ "./src/webroutes/intercom.js");\r\nexports.liveConsole = __webpack_require__(/*! ./liveConsole.js */ "./src/webroutes/liveConsole.js");\r\nexports.resources = __webpack_require__(/*! ./resources.js */ "./src/webroutes/resources.js");\r\nexports.status = __webpack_require__(/*! ./status.js */ "./src/webroutes/status.js");\r\nexports.chartData = __webpack_require__(/*! ./chartData.js */ "./src/webroutes/chartData.js");\r\nexports.txAdminLog = __webpack_require__(/*! ./txAdminLog.js */ "./src/webroutes/txAdminLog.js");\r\n\r\nexports.auth = {\r\n    get: __webpack_require__(/*! ./authentication/get */ "./src/webroutes/authentication/get.js"),\r\n    addMaster: __webpack_require__(/*! ./authentication/addMaster */ "./src/webroutes/authentication/addMaster.js"),\r\n    providerRedirect: __webpack_require__(/*! ./authentication/providerRedirect */ "./src/webroutes/authentication/providerRedirect.js"),\r\n    providerCallback: __webpack_require__(/*! ./authentication/providerCallback */ "./src/webroutes/authentication/providerCallback.js"),\r\n    verifyZapToken: __webpack_require__(/*! ./authentication/verifyZapToken */ "./src/webroutes/authentication/verifyZapToken.js"),\r\n    verifyPassword: __webpack_require__(/*! ./authentication/verifyPassword */ "./src/webroutes/authentication/verifyPassword.js"),\r\n    changePassword: __webpack_require__(/*! ./authentication/changePassword */ "./src/webroutes/authentication/changePassword.js"),\r\n    nui: __webpack_require__(/*! ./authentication/nui */ "./src/webroutes/authentication/nui.js"),\r\n};\r\n\r\nexports.adminManager = {\r\n    get: __webpack_require__(/*! ./adminManager/get */ "./src/webroutes/adminManager/get.js"),\r\n    actions: __webpack_require__(/*! ./adminManager/actions */ "./src/webroutes/adminManager/actions.js"),\r\n};\r\n\r\nexports.cfgEditor = {\r\n    get: __webpack_require__(/*! ./cfgEditor/get */ "./src/webroutes/cfgEditor/get.js"),\r\n    save: __webpack_require__(/*! ./cfgEditor/save */ "./src/webroutes/cfgEditor/save.js"),\r\n};\r\n\r\nexports.deployer = {\r\n    stepper: __webpack_require__(/*! ./deployer/stepper */ "./src/webroutes/deployer/stepper.js"),\r\n    status: __webpack_require__(/*! ./deployer/status */ "./src/webroutes/deployer/status.js"),\r\n    actions: __webpack_require__(/*! ./deployer/actions */ "./src/webroutes/deployer/actions.js"),\r\n};\r\n\r\nexports.settings = {\r\n    get: __webpack_require__(/*! ./settings/get */ "./src/webroutes/settings/get.js"),\r\n    save: __webpack_require__(/*! ./settings/save */ "./src/webroutes/settings/save.js"),\r\n};\r\n\r\nexports.masterActions = {\r\n    get: __webpack_require__(/*! ./masterActions/get */ "./src/webroutes/masterActions/get.js"),\r\n    getBackup: __webpack_require__(/*! ./masterActions/getBackup */ "./src/webroutes/masterActions/getBackup.js"),\r\n    actions: __webpack_require__(/*! ./masterActions/actions */ "./src/webroutes/masterActions/actions.js"),\r\n};\r\n\r\nexports.setup = {\r\n    get: __webpack_require__(/*! ./setup/get */ "./src/webroutes/setup/get.js"),\r\n    post: __webpack_require__(/*! ./setup/post */ "./src/webroutes/setup/post.js"),\r\n};\r\n\r\nexports.fxserver = {\r\n    commands: __webpack_require__(/*! ./fxserver/commands */ "./src/webroutes/fxserver/commands.js"),\r\n    controls: __webpack_require__(/*! ./fxserver/controls */ "./src/webroutes/fxserver/controls.js"),\r\n    downloadLog: __webpack_require__(/*! ./fxserver/downloadLog */ "./src/webroutes/fxserver/downloadLog.js"),\r\n};\r\n\r\n//FIXME: reorganizar TODAS rotas de logs, incluindo listagem e download\r\nexports.serverLog = __webpack_require__(/*! ./serverLog.js */ "./src/webroutes/serverLog.js");\r\nexports.serverLogPartial = __webpack_require__(/*! ./serverLogPartial.js */ "./src/webroutes/serverLogPartial.js");\r\n\r\nexports.player = {\r\n    list: __webpack_require__(/*! ./player/list */ "./src/webroutes/player/list.js"),\r\n    modal: __webpack_require__(/*! ./player/modal */ "./src/webroutes/player/modal.js"),\r\n    actions: __webpack_require__(/*! ./player/actions */ "./src/webroutes/player/actions.js"),\r\n};\r\n\r\nexports.advanced = {\r\n    get: __webpack_require__(/*! ./advanced/get */ "./src/webroutes/advanced/get.js"),\r\n    actions: __webpack_require__(/*! ./advanced/actions */ "./src/webroutes/advanced/actions.js"),\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/index.js?')},"./src/webroutes/intercom.js":
/*!***********************************!*\
  !*** ./src/webroutes/intercom.js ***!
  \***********************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:Intercom';\r\nconst cloneDeep = __webpack_require__(/*! lodash/cloneDeep */ \"./node_modules/lodash/cloneDeep.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n//Helper functions\r\nconst isUndefined = (x) => { return (typeof x === 'undefined'); };\r\n\r\n\r\n/**\r\n * Intercommunications endpoint\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function Intercom(ctx) {\r\n    //Sanity check\r\n    if (isUndefined(ctx.params.scope)) {\r\n        return ctx.utils.error(400, 'Invalid Request');\r\n    }\r\n    const scope = ctx.params.scope;\r\n\r\n    const postData = cloneDeep(ctx.request.body);\r\n    postData.txAdminToken = true;\r\n\r\n    //Delegate to the specific scope functions\r\n    if (scope == 'monitor') {\r\n        try {\r\n            globals.monitor.handleHeartBeat('http', postData);\r\n            const extractData = {\r\n                //Changelog:\r\n                // 6: added txStatsData.randIDFailures\r\n                // 7: changed web folder paths, which affect txStatsData.pageViews\r\n                '$statsVersion': 7,\r\n                isZapHosting: GlobalData.isZapHosting,\r\n                txAdminVersion: GlobalData.txAdminVersion,\r\n                txAdminIsDefaultPort: (GlobalData.txAdminPort == 40120),\r\n                txAdminUptime: Math.round(process.uptime()),\r\n                fxServerUptime: globals.fxRunner.getUptime(),\r\n                discordBotStats: (globals.discordBot.config.enabled) ? globals.discordBot.usageStats : false,\r\n                banlistEnabled: globals.playerController.config.onJoinCheckBan,\r\n                whitelistEnabled: globals.playerController.config.onJoinCheckWhitelist,\r\n                admins: (globals.adminVault.admins) ? globals.adminVault.admins.length : 1,\r\n                tmpLooksLikeRecipe: (globals.fxRunner.config.serverDataPath || '').includes('.base'),\r\n            };\r\n            const outData = Object.assign(extractData, globals.databus.txStatsData);\r\n            return ctx.send(JSON.stringify(outData, null, 2));\r\n        } catch (error) {\r\n            return ctx.send({\r\n                txAdminVersion: GlobalData.txAdminVersion,\r\n                success: false,\r\n            });\r\n        }\r\n    } else if (scope == 'resources') {\r\n        if (!Array.isArray(postData.resources)) {\r\n            return ctx.utils.error(400, 'Invalid Request');\r\n        }\r\n        globals.databus.resourcesList = {\r\n            timestamp: new Date(),\r\n            data: postData.resources,\r\n        };\r\n    } else if (scope == 'checkPlayerJoin') {\r\n        if (!Array.isArray(postData.identifiers) || typeof postData.name !== 'string') {\r\n            return ctx.utils.error(400, 'Invalid Request');\r\n        }\r\n        try {\r\n            const resp = await globals.playerController.checkPlayerJoin(postData.identifiers, postData.name);\r\n            if (resp.allow) {\r\n                return ctx.send('allow');\r\n            } else {\r\n                const msg = resp.reason || 'Access Denied for unknown reason';\r\n                return ctx.send(`[txAdmin] ${msg}`);\r\n            }\r\n        } catch (error) {\r\n            const msg = `[txAdmin] [JoinCheck] Failed with error: ${error.message}`;\r\n            logError(msg);\r\n            return ctx.send(msg);\r\n        }\r\n    } else {\r\n        return ctx.send({\r\n            type: 'danger',\r\n            message: 'Unknown intercom scope.',\r\n        });\r\n    }\r\n\r\n    return ctx.send({\r\n        txAdminVersion: GlobalData.txAdminVersion,\r\n        success: false,\r\n    });\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/intercom.js?")},"./src/webroutes/liveConsole.js":
/*!**************************************!*\
  !*** ./src/webroutes/liveConsole.js ***!
  \**************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:LiveConsole';\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n\r\n/**\r\n * Returns the output page containing the live console\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function LiveConsole(ctx) {\r\n    //Check permissions\r\n    if (!ctx.utils.checkPermission('console.view', modulename)) {\r\n        return ctx.utils.render('main/message', {message: 'You don\\'t have permission to view this page.'});\r\n    }\r\n\r\n    const renderData = {\r\n        headerTitle: 'Console',\r\n        disableCommand: (ctx.utils.checkPermission('console.write', modulename, false)) ? 'autofocus' : 'disabled',\r\n        disableAnnouncement: (ctx.utils.checkPermission('players.message', modulename, false)) ? '' : 'disabled',\r\n        disableRestart: (ctx.utils.checkPermission('control.server', modulename, false)) ? '' : 'disabled',\r\n    };\r\n\r\n    return ctx.utils.render('main/console', renderData);\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/liveConsole.js?")},"./src/webroutes/masterActions/actions.js":
/*!************************************************!*\
  !*** ./src/webroutes/masterActions/actions.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("/* eslint-disable no-unused-vars */\r\n//Requires\r\nconst modulename = 'WebServer:MasterActions:Action';\r\nconst fs = __webpack_require__(/*! fs-extra */ \"./node_modules/fs-extra/lib/index.js\");\r\nconst mysql = __webpack_require__(/*! mysql2/promise */ \"./node_modules/mysql2/promise.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n//Helper functions\r\nconst now = () => { return Math.round(Date.now() / 1000); };\r\nconst isUndefined = (x) => { return (typeof x === 'undefined'); };\r\nconst anyUndefined = (...args) => { return [...args].some((x) => (typeof x === 'undefined')); };\r\nconst filterIdentifiers = (idArr) => idArr.filter((id) => {\r\n    return (typeof id == 'string') && Object.values(GlobalData.validIdentifiers).some((vf) => vf.test(id));\r\n});\r\n\r\n\r\n/**\r\n * Handle all the master actions... actions\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function MasterActionsAction(ctx) {\r\n    //Sanity check\r\n    if (isUndefined(ctx.params.action)) {\r\n        return ctx.utils.error(400, 'Invalid Request');\r\n    }\r\n    const action = ctx.params.action;\r\n\r\n    //Check permissions\r\n    if (!ctx.utils.checkPermission('master', modulename)) {\r\n        return ctx.utils.render('main/message', {message: 'Only the master account has permission to view/use this page.' });\r\n    }\r\n    if (!ctx.txVars.isWebInterface) {\r\n        return ctx.utils.render('main/message', {message: 'This functionality cannot be used by the in-game menu, please use the web version of txAdmin.'});\r\n    }\r\n\r\n    //Delegate to the specific action functions\r\n    if (action == 'reset_fxserver') {\r\n        return await handleResetFXServer(ctx);\r\n    } else if (action == 'importBans') {\r\n        const fileDbTypes = ['easyadmin', 'vmenu'];\r\n        const dbmsDbTypes = ['bansql', 'vrp', 'el_bwh'];\r\n        if (fileDbTypes.includes(ctx.request.body.dbType)) {\r\n            return await handleImportBansFile(ctx, ctx.request.body.dbType);\r\n        } else if (dbmsDbTypes.includes(ctx.request.body.dbType)) {\r\n            return await handleImportBansDBMS(ctx, ctx.request.body.dbType);\r\n        } else {\r\n            return ctx.send({type: 'danger', message: 'Invalid database type.'});\r\n        }\r\n    } else if (action == 'cleanDatabase') {\r\n        return handleCleanDatabase(ctx);\r\n    } else {\r\n        return ctx.send({\r\n            type: 'danger',\r\n            message: 'Unknown settings action.',\r\n        });\r\n    }\r\n};\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle FXServer settings reset nad resurn to setup\r\n * @param {object} ctx\r\n */\r\nasync function handleResetFXServer(ctx) {\r\n    if (globals.fxRunner.fxChild !== null) {\r\n        ctx.utils.logCommand('STOP SERVER');\r\n        await globals.fxRunner.killServer('resetting fxserver config', ctx.session.auth.username, false);\r\n    }\r\n\r\n    //Making sure the deployer is not running\r\n    globals.deployer = null;\r\n\r\n    //Preparing & saving config\r\n    const newConfig = globals.configVault.getScopedStructure('fxRunner');\r\n    newConfig.serverDataPath = null;\r\n    newConfig.cfgPath = null;\r\n    const saveStatus = globals.configVault.saveProfile('fxRunner', newConfig);\r\n\r\n    //Sending output\r\n    if (saveStatus) {\r\n        globals.fxRunner.refreshConfig();\r\n        ctx.utils.logAction('Resetting fxRunner settings.');\r\n        return ctx.send({success: true});\r\n    } else {\r\n        logWarn(`[${ctx.session.auth.username}] Error resetting fxRunner settings.`);\r\n        return ctx.send({type: 'danger', message: '<strong>Error saving the configuration file.</strong>'});\r\n    }\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle the ban import via file\r\n * @param {object} ctx\r\n * @param {string} dbType\r\n */\r\nasync function handleImportBansFile(ctx, dbType) {\r\n    //Sanity check\r\n    if (isUndefined(ctx.request.body.banFile)) {\r\n        return ctx.utils.error(400, 'Invalid Request');\r\n    }\r\n    const banFilePath = ctx.request.body.banFile;\r\n\r\n    //Read bans database file\r\n    let inBans;\r\n    try {\r\n        const rawFile = await fs.readFile(banFilePath);\r\n        inBans = JSON.parse(rawFile);\r\n    } catch (error) {\r\n        return ctx.utils.render('main/message', {message: `<b>Failed to import bans with error:</b><br> ${error.message}`});\r\n    }\r\n\r\n    let invalid = 0;\r\n    let imported = 0;\r\n    try {\r\n        for (let index = 0; index < inBans.length; index++) {\r\n            const ban = inBans[index];\r\n            const identifiers = filterIdentifiers(ban.identifiers);\r\n            if (!identifiers.length) {\r\n                invalid++;\r\n                continue;\r\n            }\r\n\r\n            let author, reason, expiration;\r\n            if (dbType == 'easyadmin') {\r\n                author = (typeof ban.banner == 'string' && ban.banner.length) ? ban.banner.trim() : 'unknown';\r\n                reason = (typeof ban.reason == 'string' && ban.reason.length) ? `[IMPORTED] ${ban.reason.trim()}` : '[IMPORTED] unknown';\r\n                if (ban.expire == 10444633200) {\r\n                    expiration = false;\r\n                } else if (Number.isInteger(ban.expire)) {\r\n                    expiration = ban.expire;\r\n                } else {\r\n                    invalid++;\r\n                    continue;\r\n                }\r\n            } else if (dbType == 'vmenu') {\r\n                author = (typeof ban.bannedBy == 'string' && ban.bannedBy.length) ? ban.bannedBy.trim() : 'unknown';\r\n                reason = (typeof ban.banReason == 'string' && ban.banReason.length) ? `[IMPORTED] ${ban.banReason.trim()}` : '[IMPORTED] unknown';\r\n                if (ban.bannedUntil == '3000-01-01T00:00:00') {\r\n                    expiration = false;\r\n                } else {\r\n                    const expirationDate = new Date(ban.bannedUntil);\r\n                    if (expirationDate.toString() == 'Invalid Date') {\r\n                        invalid++;\r\n                        continue;\r\n                    } else {\r\n                        expiration = Math.round(expirationDate.getTime() / 1000);\r\n                    }\r\n                }\r\n            }\r\n\r\n            await globals.playerController.registerAction(identifiers, 'ban', author, reason, expiration);\r\n            imported++;\r\n        }// end for()\r\n    } catch (error) {\r\n        if (GlobalData.verbose) dir(error);\r\n        return ctx.utils.render('main/message', {message: `<b>Failed to import bans with error:</b><br> ${error.message}`});\r\n    }\r\n\r\n    const outMessage = `<b>Process finished!</b> <br>\r\n        Imported bans: ${imported} <br>\r\n        Invalid bans: ${invalid}  <br>`;\r\n    return ctx.utils.render('main/message', {message: outMessage});\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle the ban import via DBMS\r\n * @param {object} ctx\r\n * @param {string} dbType\r\n */\r\nasync function handleImportBansDBMS(ctx, dbType) {\r\n    //Sanity check\r\n    if (anyUndefined(\r\n        ctx.request.body.dbHost,\r\n        ctx.request.body.dbUsername,\r\n        ctx.request.body.dbPassword,\r\n        ctx.request.body.dbName,\r\n    )) {\r\n        return ctx.utils.error(400, 'Invalid Request');\r\n    }\r\n\r\n    // Connect to the database\r\n    let dbConnection;\r\n    try {\r\n        const mysqlOptions = {\r\n            host: ctx.request.body.dbHost.trim(),\r\n            user: ctx.request.body.dbUsername.trim(),\r\n            password: ctx.request.body.dbPassword.trim(),\r\n            database: ctx.request.body.dbName.trim(),\r\n        };\r\n        dbConnection = await mysql.createConnection(mysqlOptions);\r\n    } catch (error) {\r\n        return ctx.utils.render('main/message', {message: `<b>Database connection failed:</b><br> ${error.message}`});\r\n    }\r\n\r\n    let imported = 0;\r\n    let invalid = 0;\r\n    try {\r\n        if (dbType == 'bansql') {\r\n            const [rows, _fields] = await dbConnection.execute('SELECT * FROM banlist');\r\n            for (let index = 1; index < rows.length; index++) {\r\n                const ban = rows[index];\r\n                const tmpIdentifiers = [ban.identifier, ban.license, ban.liveid, ban.xblid, ban.discord];\r\n                const identifiers = filterIdentifiers(tmpIdentifiers);\r\n                if (!identifiers.length) {\r\n                    invalid++;\r\n                    continue;\r\n                }\r\n\r\n                const author = (typeof ban.sourceplayername == 'string' && ban.sourceplayername.length) ? ban.sourceplayername.trim() : 'unknown';\r\n                const reason = (typeof ban.reason == 'string' && ban.reason.length) ? `[IMPORTED] ${ban.reason.trim()}` : '[IMPORTED] unknown';\r\n                let expiration;\r\n                if ((typeof ban.permanent && ban.permanent) || !ban.expiration) {\r\n                    expiration = false;\r\n                } else {\r\n                    const expirationInt = parseInt(ban.expiration);\r\n                    expiration = (Number.isNaN(expirationInt)) ? false : expirationInt;\r\n                }\r\n                await globals.playerController.registerAction(identifiers, 'ban', author, reason, expiration);\r\n                imported++;\r\n            }\r\n        } else if (dbType == 'vrp') {\r\n            const [rows, _fields] = await dbConnection.execute(`SELECT \r\n                    GROUP_CONCAT(vrp_user_ids.identifier SEPARATOR ', ') AS identifiers\r\n                FROM vrp_users \r\n                JOIN vrp_user_ids ON vrp_user_ids.user_id=vrp_users.id\r\n                WHERE vrp_users.banned = 1\r\n                GROUP BY vrp_users.id`);\r\n            for (let index = 0; index < rows.length; index++) {\r\n                const ban = rows[index];\r\n                const identifiers = filterIdentifiers(ban.identifiers.split(', '));\r\n                if (!identifiers.length) {\r\n                    invalid++;\r\n                    continue;\r\n                }\r\n                await globals.playerController.registerAction(identifiers, 'ban', 'unknown', 'imported from vRP', false);\r\n                imported++;\r\n            }\r\n        } else if (dbType == 'el_bwh') {\r\n            const [rows, _fields] = await dbConnection.execute('SELECT * FROM bwh_bans');\r\n\r\n            for (let index = 0; index < rows.length; index++) {\r\n                const ban = rows[index];\r\n                if (typeof ban.unbanned !== 'undefined' && ban.unbanned !== 0) {\r\n                    //Just ignoring it\r\n                    continue;\r\n                }\r\n                let dbIdentifiers;\r\n                try {\r\n                    dbIdentifiers = JSON.parse(ban.receiver);\r\n                    if (!Array.isArray(dbIdentifiers)) throw new Error('not an array');\r\n                } catch (error) {\r\n                    invalid++;\r\n                    continue;\r\n                }\r\n                const identifiers = filterIdentifiers(dbIdentifiers);\r\n                if (!identifiers.length) {\r\n                    invalid++;\r\n                    continue;\r\n                }\r\n\r\n                const reason = (typeof ban.reason == 'string' && ban.reason.length) ? `[IMPORTED] ${ban.reason.trim()}` : '[IMPORTED] unknown';\r\n                let expiration;\r\n                if (ban.length == null) {\r\n                    expiration = false;\r\n                } else {\r\n                    const expirationDate = new Date(ban.length);\r\n                    if (expirationDate.toString() == 'Invalid Date') {\r\n                        invalid++;\r\n                        continue;\r\n                    } else {\r\n                        expiration = Math.round(expirationDate.getTime() / 1000);\r\n                    }\r\n                }\r\n                await globals.playerController.registerAction(identifiers, 'ban', 'unknown', reason, expiration);\r\n                imported++;\r\n            }\r\n        }\r\n    } catch (error) {\r\n        if (GlobalData.verbose) dir(error);\r\n        return ctx.utils.render('main/message', {message: `<b>Failed to import bans with error:</b><br> ${error.message}`});\r\n    }\r\n\r\n    const outMessage = `<b>Process finished!</b> <br>\r\n        Imported bans: ${imported} <br>\r\n        Invalid bans: ${invalid}  <br>`;\r\n    return ctx.utils.render('main/message', {message: outMessage});\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle clean database request\r\n * @param {object} ctx\r\n */\r\nasync function handleCleanDatabase(ctx) {\r\n    //Sanity check\r\n    if (\r\n        typeof ctx.request.body.players !== 'string'\r\n        || typeof ctx.request.body.bans !== 'string'\r\n        || typeof ctx.request.body.warns !== 'string'\r\n        || typeof ctx.request.body.whitelists !== 'string'\r\n    ) {\r\n        return ctx.utils.error(400, 'Invalid Request');\r\n    }\r\n    const players = ctx.request.body.players;\r\n    const bans = ctx.request.body.bans;\r\n    const warns = ctx.request.body.warns;\r\n    const whitelists = ctx.request.body.whitelists;\r\n    const daySecs = 86400;\r\n    const currTs = now();\r\n\r\n    let playersFilter;\r\n    if (players === 'none') {\r\n        playersFilter = (x) => false;\r\n    } else if (players === '60d') {\r\n        playersFilter = (x) => x.tsLastConnection < (currTs - 60 * daySecs) && !x.notes.text.length;\r\n    } else if (players === '30d') {\r\n        playersFilter = (x) => x.tsLastConnection < (currTs - 30 * daySecs) && !x.notes.text.length;\r\n    } else if (players === '15d') {\r\n        playersFilter = (x) => x.tsLastConnection < (currTs - 15 * daySecs) && !x.notes.text.length;\r\n    } else {\r\n        return ctx.utils.error(400, 'Invalid players filter type.');\r\n    }\r\n\r\n    let bansFilter;\r\n    if (bans === 'none') {\r\n        bansFilter = (x) => false;\r\n    } else if (bans === 'revoked') {\r\n        bansFilter = (x) => x.type === 'ban' && x.revocation.timestamp;\r\n    } else if (bans === 'revokedExpired') {\r\n        bansFilter = (x) => x.type === 'ban' && (x.revocation.timestamp || (x.expiration && x.expiration < currTs));\r\n    } else if (bans === 'all') {\r\n        bansFilter = (x) => x.type === 'ban';\r\n    } else {\r\n        return ctx.utils.error(400, 'Invalid bans filter type.');\r\n    }\r\n\r\n    let warnsFilter;\r\n    if (warns === 'none') {\r\n        warnsFilter = (x) => false;\r\n    } else if (warns === 'revoked') {\r\n        warnsFilter = (x) => x.type === 'warn' && x.revocation.timestamp;\r\n    } else if (warns === '30d') {\r\n        warnsFilter = (x) => x.type === 'warn' && x.timestamp < (currTs - 30 * daySecs);\r\n    } else if (warns === '15d') {\r\n        warnsFilter = (x) => x.type === 'warn' && x.timestamp < (currTs - 15 * daySecs);\r\n    } else if (warns === '7d') {\r\n        warnsFilter = (x) => x.type === 'warn' && x.timestamp < (currTs - 7 * daySecs);\r\n    } else if (warns === 'all') {\r\n        warnsFilter = (x) => x.type === 'warn';\r\n    } else {\r\n        return ctx.utils.error(400, 'Invalid warns filter type.');\r\n    }\r\n\r\n    let whitelistsFilter;\r\n    if (whitelists === 'none') {\r\n        whitelistsFilter = (x) => false;\r\n    } else if (whitelists === '30d') {\r\n        whitelistsFilter = (x) => x.type === 'whitelist' && x.timestamp < (currTs - 30 * daySecs);\r\n    } else if (whitelists === '15d') {\r\n        whitelistsFilter = (x) => x.type === 'whitelist' && x.timestamp < (currTs - 15 * daySecs);\r\n    } else if (whitelists === 'all') {\r\n        whitelistsFilter = (x) => x.type == 'whitelist';\r\n    } else {\r\n        return ctx.utils.error(400, 'Invalid whitelists filter type.');\r\n    }\r\n    const actionsFilter = (x) => {\r\n        return bansFilter(x) || warnsFilter(x) || whitelistsFilter(x);\r\n    };\r\n\r\n\r\n    const tsStart = new Date();\r\n    let playersRemoved = 0;\r\n    try {\r\n        playersRemoved = await globals.playerController.cleanDatabase('players', playersFilter);\r\n    } catch (error) {\r\n        return ctx.utils.render('main/message', {message: `<b>Failed to clean players with error:</b><br>${error.message}`});\r\n    }\r\n\r\n    let actionsRemoved = 0;\r\n    try {\r\n        actionsRemoved = await globals.playerController.cleanDatabase('actions', actionsFilter);\r\n    } catch (error) {\r\n        return ctx.utils.render('main/message', {message: `<b>Failed to clean actions with error:</b><br>${error.message}`});\r\n    }\r\n\r\n    const tsElapsed = new Date() - tsStart;\r\n    const outMessage = `<b>Process finished in ${tsElapsed}ms.</b> <br>\r\n        Players deleted: ${playersRemoved} <br>\r\n        Actions deleted: ${actionsRemoved}  <br>`;\r\n    return ctx.utils.render('main/message', {message: outMessage});\r\n}\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/masterActions/actions.js?")},"./src/webroutes/masterActions/get.js":
/*!********************************************!*\
  !*** ./src/webroutes/masterActions/get.js ***!
  \********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:MasterActions:Get';\r\nconst path = __webpack_require__(/*! path */ \"path\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n/**\r\n * Handles the rendering or delivery of master action resources\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function MasterActionsGet(ctx) {\r\n    const isMasterAdmin = (ctx.utils.checkPermission('master', modulename, false));\r\n    const disableActions = (isMasterAdmin && ctx.txVars.isWebInterface) ? '' : 'disabled';\r\n    return ctx.utils.render('main/masterActions', {\r\n        disableActions,\r\n        isMasterAdmin,\r\n        dbFilePathSuggestion: globals.fxRunner.config.serverDataPath\r\n            ? path.join(globals.fxRunner.config.serverDataPath, 'resources')\r\n            : '',\r\n    });\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/masterActions/get.js?")},"./src/webroutes/masterActions/getBackup.js":
/*!**************************************************!*\
  !*** ./src/webroutes/masterActions/getBackup.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:MasterActions:GetBackup';\r\nconst fsp = (__webpack_require__(/*! fs */ \"fs\").promises);\r\nconst dateFormat = __webpack_require__(/*! dateformat */ \"./node_modules/dateformat/lib/dateformat.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n\r\n/**\r\n * Handles the rendering or delivery of master action resources\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function MasterActionsGet(ctx) {\r\n    //Check permissions\r\n    if (!ctx.utils.checkPermission('master', modulename)) {\r\n        return ctx.utils.render('main/message', {message: 'Only the master account has permission to view/use this page.'});\r\n    }\r\n    if (!ctx.txVars.isWebInterface) {\r\n        return ctx.utils.render('main/message', {message: 'This functionality cannot be used by the in-game menu, please use the web version of txAdmin.'});\r\n    }\r\n\r\n    const dbPath = `${globals.info.serverProfilePath}/data/playersDB.json`;\r\n    let readFile;\r\n    try {\r\n        readFile = await fsp.readFile(dbPath);\r\n    } catch (error) {\r\n        logError(`Could not read database file ${dbPath}.`);\r\n        return ctx.utils.render('main/message', {message: `Failed to generate backup file with error: ${error.message}`});\r\n    }\r\n    const now = dateFormat(new Date(), 'yyyy-mm-dd_HH-MM-ss');\r\n    ctx.attachment(`playersDB_${now}.json`);\r\n    ctx.body = readFile;\r\n    log(`[${ctx.session.auth.username}] Downloading player database.`);\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/masterActions/getBackup.js?")},"./src/webroutes/player/actions.js":
/*!*****************************************!*\
  !*** ./src/webroutes/player/actions.js ***!
  \*****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:PlayerActions';\r\nconst humanizeDuration = __webpack_require__(/*! humanize-duration */ \"./node_modules/humanize-duration/humanize-duration.js\");\r\nconst xss = __webpack_require__(/*! ../../extras/xss */ \"./src/extras/xss.js\")();\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n//Helper functions\r\nconst now = () => { return Math.round(Date.now() / 1000); };\r\nconst anyUndefined = (...args) => { return [...args].some((x) => (typeof x === 'undefined')); };\r\nconst escape = (x) => {return x.replace(/\"/g, '\\uff02');};\r\nconst formatCommand = (cmd, ...params) => {\r\n    return `${cmd} \"` + [...params].map((c) => c.toString()).map(escape).join('\" \"') + '\"';\r\n};\r\nfunction ensurePermission(ctx, perm) {\r\n    if (ctx.utils.checkPermission(perm, modulename)) {\r\n        return true;\r\n    } else {\r\n        ctx.send({\r\n            type: 'danger',\r\n            message: 'You don\\'t have permission to execute this action.',\r\n        });\r\n        return false;\r\n    }\r\n}\r\nfunction sendAlertOutput(ctx, toResp, header = 'Output:') {\r\n    toResp = (toResp.length) ? xss(toResp) : 'no output';\r\n    return ctx.send({\r\n        type: 'warning',\r\n        message: `<b>${header}</b><br> <pre>${toResp}</pre>`,\r\n    });\r\n}\r\n\r\n\r\n/**\r\n * Returns the output page containing the bans experiment\r\n * @param {object} ctx\r\n * @param {object} sess\r\n */\r\nmodule.exports = async function PlayerActions(ctx) {\r\n    //Sanity check\r\n    if (anyUndefined(ctx.params.action)) {\r\n        return ctx.utils.error(400, 'Invalid Request');\r\n    }\r\n    const action = ctx.params.action;\r\n    const sess = ctx.nuiSession ?? ctx.session;\r\n\r\n    //Delegate to the specific action handler\r\n    if (action === 'save_note') {\r\n        return await handleSaveNote(ctx, sess);\r\n    } else if (action === 'message') {\r\n        return await handleMessage(ctx, sess);\r\n    } else if (action === 'kick') {\r\n        return await handleKick(ctx, sess);\r\n    } else if (action === 'warn') {\r\n        return await handleWarning(ctx, sess);\r\n    } else if (action === 'ban') {\r\n        return await handleBan(ctx, sess);\r\n    } else if (action === 'whitelist') {\r\n        return await handleWhitelist(ctx, sess);\r\n    } else if (action === 'revoke_action') {\r\n        return await handleRevokeAction(ctx, sess);\r\n    } else {\r\n        return ctx.send({\r\n            type: 'danger',\r\n            message: 'Unknown action.',\r\n        });\r\n    }\r\n};\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle Save Note (open to all admins)\r\n * @param {object} ctx\r\n * @param {object} sess\r\n */\r\nasync function handleSaveNote(ctx, sess) {\r\n    //Checking request\r\n    if (anyUndefined(\r\n        ctx.request.body,\r\n        ctx.request.body.note,\r\n        ctx.request.body.license,\r\n    )) {\r\n        return ctx.send({type: 'danger', message: 'Invalid request.'});\r\n    }\r\n    const license = ctx.request.body.license.trim();\r\n    const note = ctx.request.body.note.trim();\r\n\r\n    try {\r\n        const success = await globals.playerController.setPlayerNote(license, note, sess.auth.username);\r\n        if (success) {\r\n            return ctx.send({\r\n                type: 'success',\r\n                message: 'Saved!',\r\n            });\r\n        } else {\r\n            return ctx.send({\r\n                type: 'danger',\r\n                message: 'failed to save note.',\r\n            });\r\n        }\r\n    } catch (error) {\r\n        return ctx.send({\r\n            type: 'danger',\r\n            message: `Failed to save with error: ${error.message}`,\r\n        });\r\n    }\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle Send Message (admin dm)\r\n * @param {object} ctx\r\n * @param {object} sess\r\n */\r\nasync function handleMessage(ctx, sess) {\r\n    //Checking request\r\n    if (anyUndefined(\r\n        ctx.request.body,\r\n        ctx.request.body.id,\r\n        ctx.request.body.message,\r\n    )) {\r\n        return ctx.send({type: 'danger', message: 'Invalid request.'});\r\n    }\r\n    const id = ctx.request.body.id;\r\n    const message = ctx.request.body.message.trim();\r\n\r\n    //Check permissions\r\n    if (!ensurePermission(ctx, 'players.message')) return false;\r\n\r\n    //Prepare and send command\r\n    ctx.utils.logAction(`DM to #${id}: ${message}`);\r\n    const cmd = formatCommand('txaSendDM', id, sess.auth.username, message);\r\n    const toResp = await globals.fxRunner.srvCmdBuffer(cmd);\r\n    return sendAlertOutput(ctx, toResp);\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle Kick Player\r\n * @param {object} ctx\r\n * @param {object} sess\r\n */\r\nasync function handleKick(ctx, sess) {\r\n    //Checking request\r\n    if (anyUndefined(\r\n        ctx.request.body,\r\n        ctx.request.body.id,\r\n        ctx.request.body.reason,\r\n    )) {\r\n        return ctx.send({type: 'danger', message: 'Invalid request.'});\r\n    }\r\n    const id = ctx.request.body.id;\r\n    const reason = ctx.request.body.reason.trim() || 'no reason provided';\r\n\r\n    //Check permissions\r\n    if (!ensurePermission(ctx, 'players.kick')) return false;\r\n\r\n    //Prepare and send command\r\n    ctx.utils.logAction(`Kicked #${id}: ${reason}`);\r\n    const msg = `[txAdmin] (${xss(sess.auth.username)}) Kick reason: ${xss(reason)}`;\r\n    const cmd = formatCommand('txaKickID', id, msg);\r\n    const toResp = await globals.fxRunner.srvCmdBuffer(cmd);\r\n\r\n    // Dispatch `txAdmin:events:playerKicked`\r\n    globals.fxRunner.sendEvent('playerKicked', {\r\n        target: id,\r\n        author: sess.auth.username,\r\n        reason,\r\n    });\r\n\r\n    return sendAlertOutput(ctx, toResp);\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle Send Warning\r\n * @param {object} ctx\r\n * @param {object} sess\r\n */\r\nasync function handleWarning(ctx, sess) {\r\n    //Checking request\r\n    if (anyUndefined(\r\n        ctx.request.body,\r\n        ctx.request.body.id,\r\n        ctx.request.body.reason,\r\n    )) {\r\n        return ctx.send({type: 'danger', message: 'Invalid request.'});\r\n    }\r\n    const id = parseInt(ctx.request.body.id);\r\n    if (Number.isNaN(id)) return ctx.send({type: 'danger', message: 'Invalid ID.'});\r\n    const reason = ctx.request.body.reason.trim();\r\n\r\n    //Check permissions\r\n    if (!ensurePermission(ctx, 'players.warn')) return false;\r\n\r\n    //Register action (and checks if player is online)\r\n    let actionId;\r\n    try {\r\n        actionId = await globals.playerController.registerAction(id, 'warn', sess.auth.username, reason);\r\n    } catch (error) {\r\n        return ctx.send({type: 'danger', message: `<b>Error:</b> ${error.message}`});\r\n    }\r\n    ctx.utils.logAction(`Warned #${id}: ${reason}`);\r\n\r\n    // Dispatch `txAdmin:events:playerWarned`\r\n    const cmdOk = globals.fxRunner.sendEvent('playerWarned', {\r\n        target: id,\r\n        author: sess.auth.username,\r\n        reason,\r\n        actionId,\r\n    });\r\n\r\n    return ctx.send({\r\n        type: cmdOk ? 'success' : 'danger',\r\n        message: `Command sent!`,\r\n    });\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle Banning command\r\n * @param {object} ctx\r\n * @param {object} sess\r\n */\r\nasync function handleBan(ctx, sess) {\r\n    //Checking request & identifiers\r\n    if (\r\n        anyUndefined(\r\n            ctx.request.body,\r\n            ctx.request.body.duration,\r\n            ctx.request.body.reference,\r\n            ctx.request.body.reason,\r\n        )\r\n    ) {\r\n        return ctx.send({type: 'danger', message: 'Missing parameters or invalid identifiers.'});\r\n    }\r\n    let reference = ctx.request.body.reference;\r\n    const inputDuration = ctx.request.body.duration.trim();\r\n    const reason = ctx.request.body.reason.trim();\r\n\r\n    //Converting ID to int\r\n    if (typeof reference === 'string') {\r\n        const intID = parseInt(reference);\r\n        if (isNaN(intID)) {\r\n            return ctx.send({type: 'danger', message: 'You must send at least one identifier.'});\r\n        } else {\r\n            reference = intID;\r\n        }\r\n    }\r\n\r\n    //Calculating expiration\r\n    let expiration;\r\n    let duration;\r\n    if (inputDuration === 'permanent') {\r\n        expiration = false;\r\n    } else {\r\n        const [ multiplierInput, unit ] = inputDuration.split(/\\s+/);\r\n        const multiplier = parseInt(multiplierInput);\r\n        if (isNaN(multiplier) || multiplier < 1) {\r\n            return ctx.send({type: 'danger', message: 'The duration multiplier must be a number above 1.'});\r\n        }\r\n\r\n        if (unit.startsWith('hour')) {\r\n            duration = multiplier * 3600;\r\n        } else if (unit.startsWith('day')) {\r\n            duration = multiplier * 86400;\r\n        } else if (unit.startsWith('week')) {\r\n            duration = multiplier * 604800;\r\n        } else if (unit.startsWith('month')) {\r\n            duration = multiplier * 2592000; //30 days\r\n        } else {\r\n            return ctx.send({type: 'danger', message: 'Invalid ban duration. Supported units: hours, days, weeks, months'});\r\n        }\r\n        expiration = now() + duration;\r\n    }\r\n\r\n    //Check permissions\r\n    if (!ensurePermission(ctx, 'players.ban')) return false;\r\n\r\n    //Register action (and checks if player is online)\r\n    let actionId;\r\n    try {\r\n        actionId = await globals.playerController.registerAction(reference, 'ban', sess.auth.username, reason, expiration);\r\n    } catch (error) {\r\n        return ctx.send({type: 'danger', message: `<b>Error:</b> ${error.message}`});\r\n    }\r\n\r\n    //Prepare and send command\r\n    let msg;\r\n    const tOptions = {\r\n        author: xss(sess.auth.username),\r\n        reason: xss(reason),\r\n    };\r\n    if (expiration !== false) {\r\n        const humanizeOptions = {\r\n            language: globals.translator.t('$meta.humanizer_language'),\r\n            round: true,\r\n            units: ['d', 'h'],\r\n        };\r\n        tOptions.expiration = humanizeDuration((duration) * 1000, humanizeOptions);\r\n        msg = '[txAdmin] ' + globals.translator.t('ban_messages.kick_temporary', tOptions);\r\n    } else {\r\n        msg = '[txAdmin] ' + globals.translator.t('ban_messages.kick_permanent', tOptions);\r\n    }\r\n\r\n    let cmd, referenceType;\r\n    if (Array.isArray(reference)) {\r\n        referenceType = 'Identifiers';\r\n        cmd = formatCommand('txaDropIdentifiers', reference.join(';'), msg);\r\n        ctx.utils.logAction(`Banned <${reference.join(';')}>: ${reason}`);\r\n    } else if (Number.isInteger(reference)) {\r\n        referenceType = 'Player';\r\n        cmd = formatCommand('txaKickID', reference, msg);\r\n        ctx.utils.logAction(`Banned #${reference}: ${reason}`);\r\n    } else {\r\n        return ctx.send({type: 'danger', message: '<b>Error:</b> unknown reference type'});\r\n    }\r\n\r\n    // Dispatch `txAdmin:events:playerBanned`\r\n    globals.fxRunner.sendEvent('playerBanned', {\r\n        author: sess.auth.username,\r\n        reason,\r\n        actionId,\r\n        target: reference,\r\n        expiration\r\n    });\r\n\r\n    const writeResult = await globals.fxRunner.srvCmd(cmd);\r\n    ctx.send({\r\n        type: 'success',\r\n        message: `${referenceType} banned.`,\r\n    });\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle Whitelist Action\r\n * @param {object} ctx\r\n * @param {object} sess\r\n */\r\nasync function handleWhitelist(ctx, sess) {\r\n    //Checking request\r\n    if (anyUndefined(ctx.request.body.reference)) {\r\n        return ctx.send({type: 'danger', message: 'Invalid request.'});\r\n    }\r\n    const reference = ctx.request.body.reference.trim();\r\n\r\n    //Check permissions\r\n    if (!ensurePermission(ctx, 'players.whitelist')) return false;\r\n\r\n    //Whitelist reference\r\n    let actionId;\r\n    try {\r\n        actionId = await globals.playerController.approveWhitelist(reference, sess.auth.username);\r\n    } catch (error) {\r\n        return ctx.send({type: 'danger', message: `<b>Error:</b> ${error.message}`});\r\n    }\r\n\r\n    // Dispatch `txAdmin:events:playerWhitelisted`\r\n    globals.fxRunner.sendEvent('playerWhitelisted', {\r\n        target: reference,\r\n        author: sess.auth.username,\r\n        actionId,\r\n    });\r\n\r\n    ctx.utils.logAction(`Whitelisted ${reference}`);\r\n    return ctx.send({refresh: true});\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle Revoke Action\r\n * @param {object} ctx\r\n * @param {object} sess\r\n */\r\nasync function handleRevokeAction(ctx, sess) {\r\n    //Checking request\r\n    if (anyUndefined(ctx.request.body.action_id)) {\r\n        return ctx.send({type: 'danger', message: 'Invalid request.'});\r\n    }\r\n    const action_id = ctx.request.body.action_id.trim();\r\n\r\n    //Check permissions\r\n    const perms = [];\r\n    if (ensurePermission(ctx, 'players.ban')) perms.push('ban');\r\n    if (ensurePermission(ctx, 'players.warn')) perms.push('warn');\r\n    if (ensurePermission(ctx, 'players.whitelist')) perms.push('whitelist');\r\n\r\n    //Revoke action\r\n    try {\r\n        const errorMsg = await globals.playerController.revokeAction(action_id, sess.auth.username, perms);\r\n        if (errorMsg !== null) {\r\n            return ctx.send({type: 'danger', message: `<b>Error:</b> ${errorMsg}`});\r\n        }\r\n    } catch (error) {\r\n        return ctx.send({type: 'danger', message: `<b>Error:</b> ${error.message}`});\r\n    }\r\n    ctx.utils.logAction(`Revoked ${action_id}`);\r\n    return ctx.send({refresh: true});\r\n}\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/player/actions.js?")},"./src/webroutes/player/list.js":
/*!**************************************!*\
  !*** ./src/webroutes/player/list.js ***!
  \**************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:PlayerList';\r\nconst dateFormat = __webpack_require__(/*! dateformat */ \"./node_modules/dateformat/lib/dateformat.js\");\r\nconst humanizeDuration = __webpack_require__(/*! humanize-duration */ \"./node_modules/humanize-duration/humanize-duration.js\");\r\nconst xss = __webpack_require__(/*! ../../extras/xss */ \"./src/extras/xss.js\")();\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n//Helpers\r\nconst now = () => { return Math.round(Date.now() / 1000); };\r\n\r\n\r\n/**\r\n * Returns the output page containing the action log, and the console log\r\n *\r\n * TODO: Return last players\r\n * FIXME: Add Caching ASAP. This is a _very_ expensive method.\r\n *\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function PlayerList(ctx) {\r\n    //Prepare dbo\r\n    const dbo = globals.playerController.getDB();\r\n\r\n    //Delegate to the specific action handler\r\n    if (ctx.request.query && ctx.request.query.search) {\r\n        return await handleSearch(ctx, dbo);\r\n    } else {\r\n        return await handleDefault(ctx, dbo);\r\n    }\r\n};\r\n\r\n\r\n/**\r\n * Handles the search functionality.\r\n *\r\n * NOTE: This might be cool to add: https://fusejs.io/\r\n *\r\n * NOTE: expected types:\r\n *        *- identifier (solo/csv)\r\n *        *- action id\r\n *        *- partial name\r\n *         - license\r\n *         - active id\r\n *\r\n * @param {object} ctx\r\n * @param {object} dbo\r\n * @returns {object} page render promise\r\n */\r\nasync function handleSearch(ctx, dbo) {\r\n    //Sanity check & var setup\r\n    if (typeof ctx.request.query.search !== 'string') {\r\n        return ctx.utils.error(400, 'Invalid Request - missing parameters');\r\n    }\r\n    const searchString = ctx.request.query.search.trim();\r\n    let outData = {\r\n        message: '',\r\n        resPlayers: [],\r\n        resActions: [],\r\n    };\r\n    const addPlural = (x) => { return (x == 0 || x > 1) ? 's' : ''; };\r\n\r\n    try {\r\n        //Getting valid identifiers\r\n        const joinedValidIDKeys = Object.keys(GlobalData.validIdentifiers).join('|');\r\n        const idsRegex = new RegExp(`((${joinedValidIDKeys}):\\\\w+)`, 'g');\r\n        const idsArray = [...searchString.matchAll(idsRegex)]\r\n            .map((x) => x[0])\r\n            .filter((e, i, arr) => {\r\n                return arr.indexOf(e) == i;\r\n            });\r\n\r\n        //IF searching for identifiers\r\n        if (idsArray.length) {\r\n            const actions = await dbo.get('actions')\r\n                .filter((a) => idsArray.some((fi) => a.identifiers.includes(fi)))\r\n                .take(512)\r\n                .cloneDeep()\r\n                .value();\r\n            outData.resActions = await processActionList(actions);\r\n\r\n            //NOTE: disabled due to the unexpected behavior of it finding players that do not have any of the identifiers being searched for\r\n            let licensesArr = [];\r\n            actions.forEach((a) => {\r\n                a.identifiers.forEach((id) => {\r\n                    if (id.substring(0, 8) == 'license:') {\r\n                        licensesArr.push(id.substring(8));\r\n                    }\r\n                });\r\n            });\r\n            //TODO: adapt this for when we start saving all IDs for the players\r\n            // const licensesArr = idsArray.filter(id => id.substring(0, 8) == \"license:\").map(id => id.substring(8));\r\n            const players = await dbo.get('players')\r\n                .filter((p) => licensesArr.includes(p.license))\r\n                .take(512)\r\n                .cloneDeep()\r\n                .value();\r\n            outData.resPlayers = await processPlayerList(players);\r\n            outData.message = `Searching by identifiers found ${players.length} player${addPlural(players.length)} and ${actions.length} action${addPlural(actions.length)}.`;\r\n\r\n\r\n        //IF searching for an acition ID\r\n        } else if (GlobalData.regexActionID.test(searchString.toUpperCase())) {\r\n            const action = await dbo.get('actions')\r\n                .find({id: searchString.toUpperCase()})\r\n                .cloneDeep()\r\n                .value();\r\n            if (!action) {\r\n                outData.message = 'Searching by Action ID found no results.';\r\n            } else {\r\n                outData.resActions = await processActionList([action]);\r\n\r\n                //TODO: adapt this for when we start saving all IDs for the players\r\n                const licensesArr = action.identifiers.filter((x) => x.substring(0, 8) == 'license:').map((x) => x.substring(8));\r\n                if (licensesArr.length) {\r\n                    const players = await dbo.get('players')\r\n                        .filter((p) => licensesArr.includes(p.license))\r\n                        .take(512)\r\n                        .cloneDeep()\r\n                        .value();\r\n                    outData.resPlayers = await processPlayerList(players);\r\n                }\r\n                outData.message = `Searching by Action ID found ${outData.resPlayers.length} related player${addPlural(outData.resPlayers.length)}.`;\r\n            }\r\n\r\n\r\n        //Likely searching for an partial name\r\n        } else {\r\n            const players = await dbo.get('players')\r\n                .filter((p) => {\r\n                    return p.name && p.name.toLowerCase().includes(searchString.toLowerCase());\r\n                })\r\n                .take(512)\r\n                .cloneDeep()\r\n                .value();\r\n            outData.resPlayers = await processPlayerList(players);\r\n            //TODO: if player found, search for all actions from them\r\n            outData.message = `Searching by name found ${players.length} player${addPlural(players.length)}.`;\r\n        }\r\n\r\n\r\n        //Give output\r\n        return ctx.send(outData);\r\n    } catch (error) {\r\n        if (GlobalData.verbose) {\r\n            logError(`handleSearch failed with error: ${error.message}`);\r\n            dir(error);\r\n        }\r\n        return ctx.send({error: `Search failed with error: ${error.message}`});\r\n    }\r\n}\r\n\r\n\r\n/**\r\n * Handles the default page rendering (index).\r\n * @param {object} ctx\r\n * @param {object} dbo\r\n * @returns {object} page render promise\r\n */\r\nasync function handleDefault(ctx, dbo) {\r\n    let timeStart = new Date();\r\n    const controllerConfigs = globals.playerController.config;\r\n    const queryLimits = {\r\n        whitelist: 15,\r\n        actions: 20,\r\n        players: 30,\r\n    };\r\n    const respData = {\r\n        stats: await getStats(dbo),\r\n        queryLimits,\r\n        lastWhitelistBlocks: await getPendingWL(dbo, queryLimits.whitelist),\r\n        lastActions: await getLastActions(dbo, queryLimits.actions),\r\n        lastPlayers: await getLastPlayers(dbo, queryLimits.players),\r\n        disableBans: !controllerConfigs.onJoinCheckBan,\r\n        disableWhitelist: !controllerConfigs.onJoinCheckWhitelist,\r\n        permsDisable: {\r\n            ban: !ctx.utils.checkPermission('players.ban', modulename, false),\r\n            warn: !ctx.utils.checkPermission('players.warn', modulename, false),\r\n            whitelist: !ctx.utils.checkPermission('players.whitelist', modulename, false),\r\n        },\r\n    };\r\n\r\n    //Output\r\n    const timeElapsed = new Date() - timeStart;\r\n    respData.message = `Executed in ${timeElapsed} ms`;\r\n    return ctx.utils.render('main/playerList', respData);\r\n}\r\n\r\n\r\n/**\r\n * Get the last entries of the pending whitelist table, sorted by timestamp.\r\n * @param {object} dbo\r\n * @returns {object} array of actions, or, throws on error\r\n */\r\nasync function getStats(dbo) {\r\n    try {\r\n        const actionStats = await dbo.get('actions')\r\n            .reduce((acc, a, ind) => {\r\n                if (a.type == 'ban') {\r\n                    acc.bans++;\r\n                } else if (a.type == 'warn') {\r\n                    acc.warns++;\r\n                } else if (a.type == 'whitelist') {\r\n                    acc.whitelists++;\r\n                }\r\n                return acc;\r\n            }, {bans:0, warns:0, whitelists:0})\r\n            .value();\r\n\r\n        const playerStats = await dbo.get('players')\r\n            .reduce((acc, p, ind) => {\r\n                acc.players++;\r\n                acc.playTime += p.playTime;\r\n                return acc;\r\n            }, {players:0, playTime:0})\r\n            .value();\r\n        const playTimeSeconds = playerStats.playTime * 60 * 1000;\r\n        let humanizeOptions = {\r\n            round: true,\r\n            units: ['y', 'd', 'h'],\r\n            largest: 2,\r\n            spacer: '',\r\n            language: 'shortEn',\r\n            languages: {\r\n                shortEn: {\r\n                    y: () => 'y',\r\n                    d: () => 'd',\r\n                    h: () => 'h',\r\n                },\r\n            },\r\n        };\r\n        const playTime = humanizeDuration(playTimeSeconds, humanizeOptions);\r\n\r\n        //Stats only:\r\n        //DEBUG reevaluate this in the future\r\n        globals.databus.txStatsData.playerDBStats = {\r\n            ts: now(),\r\n            players: playerStats.players,\r\n            playTime: playerStats.playTime,\r\n            bans: actionStats.bans,\r\n            warns: actionStats.warns,\r\n            whitelists: actionStats.whitelists,\r\n        };\r\n\r\n        return {\r\n            players: playerStats.players.toLocaleString(),\r\n            playTime: playTime,\r\n            bans: actionStats.bans.toLocaleString(),\r\n            warns: actionStats.warns.toLocaleString(),\r\n            whitelists: actionStats.whitelists.toLocaleString(),\r\n        };\r\n    } catch (error) {\r\n        const msg = `getStats failed with error: ${error.message}`;\r\n        if (GlobalData.verbose) logError(msg);\r\n        return [];\r\n    }\r\n}\r\n\r\n\r\n/**\r\n * Get the last entries of the pending whitelist table, sorted by timestamp.\r\n * @param {object} dbo\r\n * @param {number} limit\r\n * @returns {array} array of actions, or [] on error\r\n */\r\nasync function getPendingWL(dbo, limit) {\r\n    try {\r\n        let pendingWL = await dbo.get('pendingWL')\r\n            .orderBy('tsLastAttempt', 'desc')\r\n            .take(limit)\r\n            .cloneDeep()\r\n            .value();\r\n\r\n        //DEBUG: remove this\r\n        // pendingWL = []\r\n        // for (let i = 0; i < 15; i++) {\r\n        //     pendingWL.push({\r\n        //         id: \"RNV000\",\r\n        //         name: `lorem ipsum ${i}`,\r\n        //         license: \"9b9fc300cc6aaaaad3b5df4dcccce4933753\",\r\n        //         tsLastAttempt: 1590282667\r\n        //     });\r\n        // }\r\n\r\n        const maxNameSize = 36;\r\n        let lastWhitelistBlocks = pendingWL.map((x) => {\r\n            x.time = dateFormat(new Date(x.tsLastAttempt * 1000), 'isoTime');\r\n            if (x.name.length > maxNameSize) {\r\n                x.name = x.name.substring(0, maxNameSize - 3) + '...';\r\n            }\r\n            return x;\r\n        });\r\n\r\n        return lastWhitelistBlocks;\r\n    } catch (error) {\r\n        const msg = `getPendingWL failed with error: ${error.message}`;\r\n        if (GlobalData.verbose) logError(msg);\r\n        return [];\r\n    }\r\n}\r\n\r\n\r\n/**\r\n * Get the last actions from the end of the list.\r\n * NOTE: this is not being sorted by timestamp, we are assuming its ordered.\r\n * @param {object} dbo\r\n * @param {number} limit\r\n * @returns {array} array of processed actions, or [] on error\r\n */\r\nasync function getLastActions(dbo, limit) {\r\n    try {\r\n        const lastActions = await dbo.get('actions')\r\n            .takeRight(limit)\r\n            .reverse()\r\n            .cloneDeep()\r\n            .value();\r\n        return await processActionList(lastActions);\r\n    } catch (error) {\r\n        const msg = `getLastActions failed with error: ${error.message}`;\r\n        if (GlobalData.verbose) logError(msg);\r\n        return [];\r\n    }\r\n}\r\n\r\n\r\n/**\r\n * Get the last actions from the end of the list.\r\n * NOTE: this is not being sorted by timestamp, we are assuming its ordered.\r\n * @param {object} dbo\r\n * @param {number} limit\r\n * @returns {array} array of processed actions, or [] on error\r\n */\r\nasync function getLastPlayers(dbo, limit) {\r\n    try {\r\n        const lastPlayers = await dbo.get('players')\r\n            .takeRight(limit)\r\n            .reverse()\r\n            .cloneDeep()\r\n            .value();\r\n        return await processPlayerList(lastPlayers);\r\n    } catch (error) {\r\n        const msg = `getLastPlayers failed with error: ${error.message}`;\r\n        if (GlobalData.verbose) logError(msg);\r\n        return [];\r\n    }\r\n}\r\n\r\n\r\n/**\r\n * Processes an action list and returns a templatization array.\r\n * @param {array} list\r\n * @returns {array} array of actions, or throws on error\r\n */\r\nasync function processActionList(list) {\r\n    if (!list) return [];\r\n\r\n    let tsNow = now();\r\n    return list.map((log) => {\r\n        let out = {\r\n            id: log.id,\r\n            type: log.type,\r\n            date: (new Date(log.timestamp * 1000)).toLocaleString(),\r\n            reason: log.reason,\r\n            author: log.author,\r\n            revocationNotice: false,\r\n            color: null,\r\n            message: null,\r\n            isRevoked: null,\r\n            footerNote: null,\r\n        };\r\n        let actReference;\r\n        if (log.playerName) {\r\n            actReference = xss(log.playerName);\r\n        } else {\r\n            actReference = '<i>' + xss(log.identifiers.map((x) => x.split(':')[0]).join(', ')) + '</i>';\r\n        }\r\n        if (log.type == 'ban') {\r\n            out.color = 'danger';\r\n            out.message = `${xss(log.author)} BANNED ${actReference}`;\r\n        } else if (log.type == 'warn') {\r\n            out.color = 'warning';\r\n            out.message = `${xss(log.author)} WARNED ${actReference}`;\r\n        } else if (log.type == 'whitelist') {\r\n            out.color = 'success';\r\n            out.message = `${xss(log.author)} WHITELISTED ${actReference}`;\r\n            out.reason = '';\r\n        } else {\r\n            out.color = 'secondary';\r\n            out.message = `${xss(log.author)} ${log.type.toUpperCase()} ${actReference}`;\r\n        }\r\n        if (log.revocation.timestamp) {\r\n            out.color = 'dark';\r\n            out.isRevoked = true;\r\n            const revocationDate = (new Date(log.revocation.timestamp * 1000)).toLocaleString();\r\n            out.footerNote = `Revoked by ${log.revocation.author} on ${revocationDate}.`;\r\n        }\r\n        if (typeof log.expiration == 'number') {\r\n            const expirationDate = (new Date(log.expiration * 1000)).toLocaleString();\r\n            out.footerNote = (log.expiration < tsNow) ? `Expired at ${expirationDate}.` : `Expires at ${expirationDate}.`;\r\n        }\r\n        return out;\r\n    });\r\n}\r\n\r\n\r\n/**\r\n * Processes an player list and returns a templatization array.\r\n * @param {array} list\r\n * @returns {array} array of players, or throws on error\r\n */\r\nasync function processPlayerList(list) {\r\n    if (!list) return [];\r\n\r\n    const activeLicenses = globals.playerController.activePlayers.map((p) => p.license);\r\n    return list.map((p) => {\r\n        return {\r\n            name: p.name,\r\n            license: p.license,\r\n            joined: (new Date(p.tsJoined * 1000)).toLocaleString(),\r\n            color: (activeLicenses.includes(p.license)) ? 'success' : 'dark',\r\n        };\r\n    });\r\n}\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/player/list.js?")},"./src/webroutes/player/modal.js":
/*!***************************************!*\
  !*** ./src/webroutes/player/modal.js ***!
  \***************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:PlayerModal';\r\nconst cloneDeep = __webpack_require__(/*! lodash/cloneDeep */ \"./node_modules/lodash/cloneDeep.js\");\r\nconst dateFormat = __webpack_require__(/*! dateformat */ \"./node_modules/dateformat/lib/dateformat.js\");\r\nconst humanizeDuration = __webpack_require__(/*! humanize-duration */ \"./node_modules/humanize-duration/humanize-duration.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n//Helpers\r\nconst now = () => { return Math.round(Date.now() / 1000); };\r\n\r\n\r\n/**\r\n * Returns the data for the player's modal\r\n *\r\n * NOTE: sending license instead of id to be able to show data even for offline players\r\n *\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function PlayerModal(ctx) {\r\n    //Sanity check\r\n    if (typeof ctx.params.reference === 'undefined') {\r\n        return ctx.utils.error(400, 'Invalid Request');\r\n    }\r\n    let reference = ctx.params.reference;\r\n\r\n    //Helper function\r\n    const getHistory = async (idArray) => {\r\n        try {\r\n            //TODO: if it was today, show time instead\r\n            const hist = await globals.playerController.getRegisteredActions(idArray);\r\n            return hist.map((log) => {\r\n                const out = {\r\n                    action: log.type.toUpperCase(),\r\n                    date: dateFormat(new Date(log.timestamp * 1000), 'dd/mm'),\r\n                    reason: log.reason,\r\n                    author: log.author,\r\n                };\r\n                if (log.revocation.timestamp) {\r\n                    out.color = 'dark';\r\n                    out.action = `${out.action}-REVOKED`;\r\n                } else if (log.type == 'ban') {\r\n                    out.color = 'danger';\r\n                } else if (log.type == 'warn') {\r\n                    out.color = 'warning';\r\n                } else if (log.type == 'whitelist') {\r\n                    out.color = 'success';\r\n                } else {\r\n                    out.color = 'secondary';\r\n                }\r\n                return out;\r\n            });\r\n        } catch (error) {\r\n            if (GlobalData.verbose) {\r\n                logError('Error getting/processing player history');\r\n                dir(error);\r\n            }\r\n            return [];\r\n        }\r\n    };\r\n\r\n    //Infering filter type\r\n    let filterFunction, filterType;\r\n    if (/^[0-9A-Fa-f]{40}$/.test(reference)) {\r\n        //Right now being used by web playerlist\r\n        filterFunction = (player) => player.license === reference;\r\n        filterType = 'license';\r\n    } else if (/^\\d{1,6}$/.test(reference)) {\r\n        filterFunction = (player) => player.id === parseInt(reference, 10);\r\n        filterType = 'id';\r\n    } else if (/^\\w{5}_\\d{1,6}$/.test(reference)) {\r\n        //FIXME: this was done way too late at night, please fix\r\n        const cachedPlayer = globals.logger.server.cachedPlayers.get(reference.replace(/_/, '#'));\r\n        if (!cachedPlayer) {\r\n            return ctx.send({type: 'offline', message: 'Player not found in cache.'});\r\n        }\r\n        const pLicenseID = cachedPlayer.ids.find((id) => id.substring(0, 8) == 'license:');\r\n        if (!pLicenseID) {\r\n            return ctx.send({type: 'offline', message: 'Cached player has no license.'});\r\n        }\r\n        reference = pLicenseID.substring(8);\r\n        filterFunction = (player) => player.license === reference;\r\n        filterType = 'license';\r\n    } else {\r\n        throw new Error('Invalid reference type');\r\n    }\r\n\r\n    //Locating player\r\n    const activePlayer = cloneDeep(globals.playerController.activePlayers.find(filterFunction));\r\n\r\n    //Setting up output\r\n    const controllerConfigs = globals.playerController.config;\r\n    const out = {\r\n        funcDisabled: {\r\n            message: (activePlayer && ctx.utils.checkPermission('players.message', modulename, false)) ? '' : 'disabled',\r\n            kick: (activePlayer && ctx.utils.checkPermission('players.kick', modulename, false)) ? '' : 'disabled',\r\n            warn: (activePlayer && ctx.utils.checkPermission('players.warn', modulename, false)) ? '' : 'disabled',\r\n            ban: !ctx.utils.checkPermission('players.ban', modulename, false) || !controllerConfigs.onJoinCheckBan,\r\n        },\r\n    };\r\n\r\n    //If player is active or in the database\r\n    let playerData;\r\n    if (activePlayer) {\r\n        if (GlobalData.verbose) dir(activePlayer); //DEBUG\r\n        out.id = activePlayer.id;\r\n        out.license = activePlayer.license;\r\n        out.identifiers = activePlayer.identifiers;\r\n        out.isTmp = activePlayer.isTmp;\r\n        playerData = activePlayer;\r\n    } else {\r\n        if (filterType !== 'license') {\r\n            return ctx.send({type: 'offline', message: 'Player offline, search by id is only available for online players.'});\r\n        }\r\n        //FIXME: for actions, look just for the license\r\n        //TODO: when we start registering all associated identifiers, we could use that for the search\r\n        let dbPlayer = await globals.playerController.getPlayer(reference);\r\n        if (!dbPlayer) return ctx.send({type: 'offline', message: 'Player offline and not in database.'});\r\n        if (GlobalData.verbose) dir(dbPlayer); //DEBUG\r\n\r\n        out.id = false;\r\n        out.license = reference;\r\n        out.identifiers = [`license:${reference}`];\r\n        out.isTmp = false;\r\n        playerData = dbPlayer;\r\n    }\r\n\r\n    //Preparing output\r\n    out.name = playerData.name;\r\n    out.actionHistory = await getHistory(out.identifiers);\r\n    const joinDateObj = new Date(playerData.tsJoined * 1000);\r\n    out.joinDate = dateFormat(joinDateObj, 'longDate') + ' - ' + dateFormat(joinDateObj, 'isoTime');\r\n    const sessionTime = (now() - playerData.tsConnected) * 1000;\r\n    out.sessionTime = humanizeDuration(sessionTime, {round: true, units: ['h', 'm']});\r\n    if (playerData.isTmp) {\r\n        out.playTime = '--';\r\n        out.notesLog = 'unavailable for temporary players';\r\n        out.notes = '';\r\n    } else {\r\n        const playTime = (playerData.playTime * 60 * 1000);\r\n        out.playTime = humanizeDuration(playTime, {round: true, units: ['d', 'h', 'm']});\r\n        if (playerData.notes.lastAdmin && playerData.notes.tsLastEdit) {\r\n            let lastEditObj = new Date(playerData.notes.tsLastEdit * 1000);\r\n            out.notesLog = `Last modified by ${playerData.notes.lastAdmin} at ${dateFormat(lastEditObj, 'longDate') }`;\r\n        } else {\r\n            out.notesLog = '';\r\n        }\r\n        out.notes = playerData.notes.text;\r\n    }\r\n\r\n    return ctx.send(out);\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/player/modal.js?")},"./src/webroutes/resources.js":
/*!************************************!*\
  !*** ./src/webroutes/resources.js ***!
  \************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:Resources';\r\nconst path = __webpack_require__(/*! path */ \"path\");\r\nconst slash = __webpack_require__(/*! slash */ \"./node_modules/slash/index.js\");\r\nconst slug = __webpack_require__(/*! slug */ \"./node_modules/slug/slug.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n//Helper functions\r\nconst isUndefined = (x) => { return (typeof x === 'undefined'); };\r\nconst breakPath = (inPath) => {return slash(path.normalize(inPath)).split('/').filter(String);};\r\nconst dynamicSort = (prop) => {\r\n    let sortOrder = 1;\r\n    if (prop[0] === '-') {\r\n        sortOrder = -1;\r\n        prop = prop.substr(1);\r\n    }\r\n    return function (a, b) {\r\n        const result = (a[prop] < b[prop]) ? -1 : (a[prop] > b[prop]) ? 1 : 0;\r\n        return result * sortOrder;\r\n    };\r\n};\r\nconst getResourceSubPath = (resPath) => {\r\n    if (resPath.indexOf('system_resources') >= 0) return 'system_resources';\r\n    if (!path.isAbsolute(resPath)) return resPath;\r\n\r\n    let serverDataPathArr = breakPath(`${globals.fxRunner.config.serverDataPath}/resources`);\r\n    let resPathArr = breakPath(resPath);\r\n    for (let i = 0; i < serverDataPathArr.length; i++) {\r\n        if (isUndefined(resPathArr[i])) break;\r\n        if (serverDataPathArr[i].toLowerCase() == resPathArr[i].toLowerCase()) {\r\n            delete resPathArr[i];\r\n        }\r\n    }\r\n    resPathArr.pop();\r\n    resPathArr = resPathArr.filter(String);\r\n\r\n    if (resPathArr.length) {\r\n        return resPathArr.join('/');\r\n    } else {\r\n        return 'root';\r\n    }\r\n};\r\n\r\n/**\r\n * Returns the resources list\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function Resources(ctx) {\r\n    if (globals.fxRunner.fxChild === null) {\r\n        return ctx.utils.render('main/message', {\r\n            message: '<strong>The resources list is only available when the server is online.</strong>',\r\n        });\r\n    }\r\n\r\n    const timeoutMessage = `<strong>Couldn't load the resources list.</strong> <br>\r\n    - Make sure the server is online (try to join it). <br>\r\n    - Make sure you don't have more than 200 resources. <br>\r\n    - Make sure you are not running the fxserver outside txAdmin. <br>\r\n    - Check <a href=\"console\">Live Console</a> for any errors. They may indicate that some resource has a malformed <code>fxmanifest</code> file.`;\r\n\r\n    //Send command request\r\n    const cmdSuccess = globals.fxRunner.srvCmd('txaReportResources');\r\n    if (!cmdSuccess) {\r\n        return ctx.utils.render('main/message', {message: timeoutMessage});\r\n    }\r\n\r\n    //Timer fot list delivery\r\n    let tListTimer;\r\n    let tErrorTimer;\r\n    const tList = new Promise((resolve, reject) => {\r\n        tListTimer = setInterval(() => {\r\n            if (\r\n                globals.databus.resourcesList !== null\r\n                && (new Date() - globals.databus.resourcesList.timestamp) <= 1000\r\n                && Array.isArray(globals.databus.resourcesList.data)\r\n            ) {\r\n                clearTimeout(tListTimer);\r\n                clearTimeout(tErrorTimer);\r\n                const resGroups = processResources(globals.databus.resourcesList.data);\r\n                const renderData = {\r\n                    headerTitle: 'Resources',\r\n                    resGroupsJS: JSON.stringify(resGroups),\r\n                    resGroups,\r\n                    disableActions: (ctx.utils.checkPermission('commands.resources')) ? '' : 'disabled',\r\n                };\r\n                resolve(['main/resources', renderData]);\r\n            }\r\n        }, 100);\r\n    });\r\n\r\n    //Timer for timing out\r\n    const tError = new Promise((resolve, reject) => {\r\n        tErrorTimer = setTimeout(() => {\r\n            clearTimeout(tListTimer);\r\n            resolve(['main/message', {message: timeoutMessage}]);\r\n        }, 1000);\r\n    });\r\n\r\n    //Start race and give output\r\n    const [view, renderData] = await Promise.race([tList, tError]);\r\n    return ctx.utils.render(view, renderData);\r\n};\r\n\r\n\r\n//================================================================\r\n/**\r\n * Returns the Processed Resource list.\r\n * @param {array} resList\r\n */\r\nfunction processResources(resList) {\r\n    //Clean resource data and add it so an object separated by subpaths\r\n    const resGroupList = {};\r\n    resList.forEach((resource) => {\r\n        if (isUndefined(resource.name) || isUndefined(resource.status) || isUndefined(resource.path) || resource.path === '') {\r\n            return;\r\n        }\r\n        const subPath = getResourceSubPath(resource.path);\r\n        const resData = {\r\n            name: resource.name,\r\n            divName: slug(resource.name),\r\n            status: resource.status,\r\n            statusClass: (resource.status === 'started') ? 'success' : 'danger',\r\n            // path: slash(path.normalize(resource.path)),\r\n            version: (resource.version) ? `(${resource.version.trim()})` : '',\r\n            author: (resource.author) ? `${resource.author.trim()}` : '',\r\n            description: (resource.description) ? resource.description.trim() : '',\r\n        };\r\n\r\n        if (resGroupList.hasOwnProperty(subPath)) {\r\n            resGroupList[subPath].push(resData);\r\n        } else {\r\n            resGroupList[subPath] = [resData];\r\n        }\r\n    });\r\n\r\n    //Generate final array with subpaths and div ids\r\n    const finalList = [];\r\n    Object.keys(resGroupList).forEach((subPath) => {\r\n        const subPathData = {\r\n            subPath: subPath,\r\n            divName: slug(subPath),\r\n            resources: resGroupList[subPath].sort(dynamicSort('name')),\r\n        };\r\n        finalList.push(subPathData);\r\n    });\r\n\r\n    // finalList = JSON.stringify(finalList, null, 2)\r\n    // console.log(finalList)\r\n    // return []\r\n    return finalList;\r\n}\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/resources.js?")},"./src/webroutes/serverLog.js":
/*!************************************!*\
  !*** ./src/webroutes/serverLog.js ***!
  \************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:ServerLog';\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n\r\n/**\r\n * Returns the server log page\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function ServerLog(ctx) {\r\n    const renderData = {\r\n        headerTitle: 'Server Log',\r\n    };\r\n    return ctx.utils.render('main/serverLog', renderData);\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/serverLog.js?")},"./src/webroutes/serverLogPartial.js":
/*!*******************************************!*\
  !*** ./src/webroutes/serverLogPartial.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:ServerLogPartial';\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n\r\n/**\r\n * Returns the output page containing the admin log.\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function ServerLogPartial(ctx) {\r\n    const isDigit = /^\\d{13}$/;\r\n    const sliceSize = 500;\r\n\r\n    if (ctx.request.query.dir === 'older' && isDigit.test(ctx.request.query.ref)) {\r\n        const log = globals.logger.server.readPartialOlder(ctx.request.query.ref, sliceSize);\r\n        return ctx.send({\r\n            boundry: log.length < sliceSize,\r\n            log,\r\n        });\r\n    } else if (ctx.request.query.dir === 'newer' && isDigit.test(ctx.request.query.ref)) {\r\n        const log = globals.logger.server.readPartialNewer(ctx.request.query.ref, sliceSize);\r\n        return ctx.send({\r\n            boundry: log.length < sliceSize,\r\n            log,\r\n        });\r\n    } else {\r\n        return ctx.send({\r\n            boundry: true,\r\n            log: globals.logger.server.getRecentBuffer(),\r\n        });\r\n    }\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/serverLogPartial.js?")},"./src/webroutes/settings/get.js":
/*!***************************************!*\
  !*** ./src/webroutes/settings/get.js ***!
  \***************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:SettingsGet';\r\nconst cloneDeep = __webpack_require__(/*! lodash/cloneDeep */ \"./node_modules/lodash/cloneDeep.js\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\nconst { redactApiKeys } = __webpack_require__(/*! ../../extras/helpers */ \"./src/extras/helpers.js\");\r\n\r\n\r\n/**\r\n * Returns the output page containing the live console\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function SettingsGet(ctx) {\r\n    //Check permissions\r\n    if (!ctx.utils.checkPermission('settings.view', modulename)) {\r\n        return ctx.utils.render('main/message', {message: 'You don\\'t have permission to view this page.'});\r\n    }\r\n\r\n    const renderData = {\r\n        headerTitle: 'settings',\r\n        global: cleanRenderData(globals.configVault.getScopedStructure('global')),\r\n        fxserver: cleanRenderData(globals.configVault.getScopedStructure('fxRunner')),\r\n        playerController: cleanRenderData(globals.configVault.getScopedStructure('playerController')),\r\n        monitor: cleanRenderData(globals.configVault.getScopedStructure('monitor')),\r\n        discord: cleanRenderData(globals.configVault.getScopedStructure('discordBot')),\r\n        readOnly: !ctx.utils.checkPermission('settings.write', modulename, false),\r\n        serverTimezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\r\n        activeTab: 'global',\r\n        isZapHosting: GlobalData.isZapHosting,\r\n        txDataPath: GlobalData.dataPath,\r\n    };\r\n\r\n    if (renderData.readOnly) {\r\n        renderData.fxserver.commandLine = redactApiKeys(renderData.fxserver.commandLine);\r\n    }\r\n\r\n    return ctx.utils.render('main/settings', renderData);\r\n};\r\n\r\n\r\n//================================================================\r\nfunction cleanRenderData(inputData) {\r\n    const input = cloneDeep(inputData);\r\n    const out = {};\r\n    Object.keys(input).forEach((prop) => {\r\n        if (input[prop] == null || input[prop] === false || typeof input[prop] === 'undefined') {\r\n            out[prop] = '';\r\n        } else if (input[prop] === true) {\r\n            out[prop] = 'checked';\r\n        } else if (input[prop].constructor === Array) {\r\n            out[prop] = input[prop].join(', ');\r\n        } else if (input[prop].constructor === Object) {\r\n            out[prop] = cleanRenderData(input[prop]);\r\n        } else {\r\n            out[prop] = input[prop];\r\n        }\r\n    });\r\n    return out;\r\n}\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/settings/get.js?")},"./src/webroutes/settings/save.js":
/*!****************************************!*\
  !*** ./src/webroutes/settings/save.js ***!
  \****************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:SettingsSave';\r\nconst fsp = __webpack_require__(/*! fs/promises */ \"fs/promises\");\r\nconst slash = __webpack_require__(/*! slash */ \"./node_modules/slash/index.js\");\r\nconst path = __webpack_require__(/*! path */ \"path\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\nconst { parseSchedule } = __webpack_require__(/*! ../../extras/helpers */ \"./src/extras/helpers.js\");\r\nconst { resolveCFGFilePath } = __webpack_require__(/*! ../../extras/fxsConfigHelper */ \"./src/extras/fxsConfigHelper.js\");\r\n\r\n\r\n//Helper functions\r\nconst isUndefined = (x) => { return (typeof x === 'undefined'); };\r\nconst anyUndefined = (...args) => { return [...args].some((x) => (typeof x === 'undefined')); };\r\n\r\n/**\r\n * Handle all the server control actions\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function SettingsSave(ctx) {\r\n    //Sanity check\r\n    if (isUndefined(ctx.params.scope)) {\r\n        return ctx.utils.error(400, 'Invalid Request');\r\n    }\r\n    let scope = ctx.params.scope;\r\n\r\n    //Check permissions\r\n    if (!ctx.utils.checkPermission('settings.write', modulename)) {\r\n        return ctx.send({\r\n            type: 'danger',\r\n            message: 'You don\\'t have permission to execute this action.',\r\n        });\r\n    }\r\n\r\n    //Delegate to the specific scope functions\r\n    if (scope == 'global') {\r\n        return await handleGlobal(ctx);\r\n    } else if (scope == 'fxserver') {\r\n        return await handleFXServer(ctx);\r\n    } else if (scope == 'playerController') {\r\n        return await handlePlayerController(ctx);\r\n    } else if (scope == 'monitor') {\r\n        return await handleMonitor(ctx);\r\n    } else if (scope == 'discord') {\r\n        return await handleDiscord(ctx);\r\n    } else if (scope == 'menu') {\r\n        return await handleMenu(ctx);\r\n    } else {\r\n        return ctx.send({\r\n            type: 'danger',\r\n            message: 'Unknown settings scope.',\r\n        });\r\n    }\r\n};\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle Global settings\r\n * @param {object} ctx\r\n */\r\nasync function handleGlobal(ctx) {\r\n    //Sanity check\r\n    if (\r\n        isUndefined(ctx.request.body.serverName)\r\n        || isUndefined(ctx.request.body.language)\r\n    ) {\r\n        return ctx.utils.error(400, 'Invalid Request - missing parameters');\r\n    }\r\n\r\n    //Prepare body input\r\n    let cfg = {\r\n        serverName: ctx.request.body.serverName.trim(),\r\n        language: ctx.request.body.language.trim(),\r\n    };\r\n\r\n    //Trying to load language file\r\n    try {\r\n        globals.translator.getLanguagePhrases(cfg.language);\r\n    } catch (error) {\r\n        return ctx.send({type: 'danger', message: `<strong>Language error:</strong> ${error.message}`});\r\n    }\r\n\r\n    //Preparing & saving config\r\n    let newConfig = globals.configVault.getScopedStructure('global');\r\n    newConfig.serverName = cfg.serverName;\r\n    newConfig.language = cfg.language;\r\n    let saveStatus = globals.configVault.saveProfile('global', newConfig);\r\n\r\n    //Sending output\r\n    if (saveStatus) {\r\n        globals.config = globals.configVault.getScoped('global');\r\n        globals.translator.refreshConfig();\r\n        ctx.utils.logAction('Changing global settings.');\r\n        return ctx.send({type: 'success', message: '<strong>Global configuration saved!</strong>'});\r\n    } else {\r\n        logWarn(`[${ctx.session.auth.username}] Error changing global settings.`);\r\n        return ctx.send({type: 'danger', message: '<strong>Error saving the configuration file.</strong>'});\r\n    }\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle FXServer settings\r\n * @param {object} ctx\r\n */\r\nasync function handleFXServer(ctx) {\r\n    //Sanity check\r\n    if (\r\n        isUndefined(ctx.request.body.serverDataPath)\r\n        || isUndefined(ctx.request.body.cfgPath)\r\n        || isUndefined(ctx.request.body.commandLine)\r\n        || isUndefined(ctx.request.body.onesync)\r\n        || isUndefined(ctx.request.body.autostart)\r\n        || isUndefined(ctx.request.body.quiet)\r\n    ) {\r\n        return ctx.utils.error(400, 'Invalid Request - missing parameters');\r\n    }\r\n\r\n    //Prepare body input\r\n    let cfg = {\r\n        serverDataPath: slash(path.normalize(ctx.request.body.serverDataPath + '/')),\r\n        cfgPath: slash(path.normalize(ctx.request.body.cfgPath)),\r\n        commandLine: ctx.request.body.commandLine.trim(),\r\n        onesync: ctx.request.body.onesync,\r\n        autostart: (ctx.request.body.autostart === 'true'),\r\n        quiet: (ctx.request.body.quiet === 'true'),\r\n    };\r\n\r\n    //Validating Base Path\r\n    try {\r\n        const resPath = path.join(cfg.serverDataPath, 'resources');\r\n        const resStat = await fsp.stat(resPath);\r\n        if (!resStat.isDirectory()) {\r\n            throw new Error(\"Couldn't locate or read a resources folder inside of the base path.\");\r\n        }\r\n    } catch (error) {\r\n        const msg = cfg.serverDataPath.includes('resources')\r\n            ? 'The base must be the folder that contains the resources folder.'\r\n            : error.message;\r\n        return ctx.send({type: 'danger', message: `<strong>Server Data Folder error:</strong> ${msg}`});\r\n    }\r\n\r\n    //Validating CFG Path\r\n    try {\r\n        const cfgFilePath = resolveCFGFilePath(cfg.cfgPath, cfg.serverDataPath);\r\n        const cfgFileStat = await fsp.stat(cfgFilePath);\r\n        if (!cfgFileStat.isFile()) {\r\n            throw new Error('The path provided is not a file');\r\n        }\r\n    } catch (error) {\r\n        return ctx.send({type: 'danger', message: `<strong>CFG Path error:</strong> ${error.message}`});\r\n    }\r\n\r\n    //Preparing & saving config\r\n    let newConfig = globals.configVault.getScopedStructure('fxRunner');\r\n    newConfig.serverDataPath = cfg.serverDataPath;\r\n    newConfig.cfgPath = cfg.cfgPath;\r\n    newConfig.onesync = cfg.onesync;\r\n    newConfig.autostart = cfg.autostart;\r\n    newConfig.quiet = cfg.quiet;\r\n    newConfig.commandLine = cfg.commandLine;\r\n    let saveStatus = globals.configVault.saveProfile('fxRunner', newConfig);\r\n\r\n    //Sending output\r\n    if (saveStatus) {\r\n        globals.fxRunner.refreshConfig();\r\n        ctx.utils.logAction('Changing fxRunner settings.');\r\n        return ctx.send({type: 'success', message: '<strong>FXServer configuration saved!<br>You need to restart the server for the changes to take effect.</strong>'});\r\n    } else {\r\n        logWarn(`[${ctx.session.auth.username}] Error changing fxRunner settings.`);\r\n        return ctx.send({type: 'danger', message: '<strong>Error saving the configuration file.</strong>'});\r\n    }\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle Player Controller settings\r\n * @param {object} ctx\r\n */\r\nasync function handlePlayerController(ctx) {\r\n    //Sanity check\r\n    if (anyUndefined(\r\n        ctx.request.body,\r\n        ctx.request.body.onJoinCheckBan,\r\n        ctx.request.body.onJoinCheckWhitelist,\r\n        ctx.request.body.minSessionTime,\r\n        ctx.request.body.whitelistRejectionMessage,\r\n        ctx.request.body.wipePendingWLOnStart,\r\n    )) {\r\n        return ctx.utils.error(400, 'Invalid Request - missing parameters');\r\n    }\r\n\r\n    //Prepare body input\r\n    let cfg = {\r\n        onJoinCheckBan: (ctx.request.body.onJoinCheckBan === 'true'),\r\n        onJoinCheckWhitelist: (ctx.request.body.onJoinCheckWhitelist === 'true'),\r\n        minSessionTime: parseInt(ctx.request.body.minSessionTime.trim()),\r\n        whitelistRejectionMessage: ctx.request.body.whitelistRejectionMessage.trim(),\r\n        wipePendingWLOnStart: (ctx.request.body.wipePendingWLOnStart === 'true'),\r\n    };\r\n\r\n    //Validating wl message\r\n    if (cfg.whitelistRejectionMessage.length > 256) {\r\n        return ctx.send({type: 'danger', message: 'The whitelist rejection message must be less than 256 characters.'});\r\n    }\r\n\r\n    //Validating min session time\r\n    if (cfg.minSessionTime < 1 || cfg.minSessionTime > 60) {\r\n        return ctx.send({type: 'danger', message: 'Minimum Session Time must be between 1 and 60 minutes.'});\r\n    }\r\n\r\n    //Preparing & saving config\r\n    let newConfig = globals.configVault.getScopedStructure('playerController');\r\n    newConfig.onJoinCheckBan = cfg.onJoinCheckBan;\r\n    newConfig.onJoinCheckWhitelist = cfg.onJoinCheckWhitelist;\r\n    newConfig.minSessionTime = cfg.minSessionTime;\r\n    newConfig.whitelistRejectionMessage = cfg.whitelistRejectionMessage;\r\n    newConfig.wipePendingWLOnStart = cfg.wipePendingWLOnStart;\r\n    let saveStatus = globals.configVault.saveProfile('playerController', newConfig);\r\n\r\n    //Sending output\r\n    if (saveStatus) {\r\n        globals.playerController.refreshConfig();\r\n        ctx.utils.logAction('Changing Player Controller settings.');\r\n        return ctx.send({type: 'success', message: '<strong>Player Controller configuration saved!<br>You need to restart the server for the changes to take effect.</strong>'});\r\n    } else {\r\n        logWarn(`[${ctx.session.auth.username}] Error changing Player Controller settings.`);\r\n        return ctx.send({type: 'danger', message: '<strong>Error saving the configuration file.</strong>'});\r\n    }\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle Monitor settings\r\n * @param {object} ctx\r\n */\r\nasync function handleMonitor(ctx) {\r\n    //Sanity check\r\n    if (\r\n        isUndefined(ctx.request.body.restarterSchedule),\r\n        isUndefined(ctx.request.body.disableChatWarnings),\r\n        isUndefined(ctx.request.body.restarterScheduleWarnings)\r\n    ) {\r\n        return ctx.utils.error(400, 'Invalid Request - missing parameters');\r\n    }\r\n\r\n    //Prepare body input\r\n    let cfg = {\r\n        restarterSchedule: ctx.request.body.restarterSchedule.split(',').map((x) => {return x.trim();}),\r\n        restarterScheduleWarnings: ctx.request.body.restarterScheduleWarnings.split(',').map((x) => {return x.trim();}),\r\n        disableChatWarnings: (ctx.request.body.disableChatWarnings === 'true'),\r\n    };\r\n\r\n    //Validating restart times\r\n    let scheduleTimes = parseSchedule(cfg.restarterSchedule, false);\r\n    let invalidRestartTimes = [];\r\n    let validRestartTimes = [];\r\n    scheduleTimes.forEach((time) => {\r\n        if (typeof time === 'string') {\r\n            invalidRestartTimes.push(`\"${time}\"`);\r\n        } else {\r\n            const cleanTime = time.hour.toString().padStart(2, '0') + ':' + time.minute.toString().padStart(2, '0');\r\n            validRestartTimes.push(cleanTime);\r\n        }\r\n    });\r\n    if (invalidRestartTimes.length) {\r\n        let message = '<strong>The following entries were not recognized as valid 24h times:</strong><br>';\r\n        message += invalidRestartTimes.join('<br>\\n');\r\n        return ctx.send({type: 'danger', message: message});\r\n    }\r\n\r\n    //Validating restart warning minutes\r\n    const invalidRestartWarningMinutes = [];\r\n    const validRestartWarningMinutes = [];\r\n    cfg.restarterScheduleWarnings.forEach((minutes) => {\r\n        if (typeof minutes !== 'string') {\r\n            invalidRestartWarningMinutes.push(`\"${minutes}\"`);\r\n        } else {\r\n            const minutesAttempt = parseInt(minutes);\r\n            if (isNaN(minutesAttempt)) {\r\n                invalidRestartWarningMinutes.push(`\"${minutes}\"`);\r\n            } else if (minutesAttempt < 1 || minutesAttempt > 360) {\r\n                invalidRestartWarningMinutes.push(minutesAttempt);\r\n            } else {\r\n                validRestartWarningMinutes.push(parseInt(minutes));\r\n            }\r\n        }\r\n    });\r\n    if (invalidRestartWarningMinutes.length) {\r\n        let message = '<strong>The following entries were not recognized as valid minutes before restart warning:</strong><br>';\r\n        message += invalidRestartWarningMinutes.join('<br>\\n');\r\n        return ctx.send({type: 'danger', message: message});\r\n    }\r\n\r\n    //Preparing & saving config\r\n    const newConfig = globals.configVault.getScopedStructure('monitor');\r\n    newConfig.restarterSchedule = validRestartTimes;\r\n    newConfig.restarterScheduleWarnings = validRestartWarningMinutes.sort((a, b) => b - a);\r\n    newConfig.disableChatWarnings = cfg.disableChatWarnings;\r\n    const saveStatus = globals.configVault.saveProfile('monitor', newConfig);\r\n\r\n    //Sending output\r\n    if (saveStatus) {\r\n        globals.monitor.refreshConfig();\r\n        ctx.utils.logAction('Changing monitor settings.');\r\n        return ctx.send({type: 'success', message: '<strong>Monitor/Restarter configuration saved!</strong>'});\r\n    } else {\r\n        logWarn(`[${ctx.session.auth.username}] Error changing monitor settings.`);\r\n        return ctx.send({type: 'danger', message: '<strong>Error saving the configuration file.</strong>'});\r\n    }\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle Discord settings\r\n * @param {object} ctx\r\n */\r\nasync function handleDiscord(ctx) {\r\n    //Sanity check\r\n    if (\r\n        isUndefined(ctx.request.body.enabled)\r\n        || isUndefined(ctx.request.body.token)\r\n        || isUndefined(ctx.request.body.announceChannel)\r\n        || isUndefined(ctx.request.body.prefix)\r\n        || isUndefined(ctx.request.body.statusMessage)\r\n    ) {\r\n        return ctx.utils.error(400, 'Invalid Request - missing parameters');\r\n    }\r\n\r\n    //Prepare body input\r\n    let cfg = {\r\n        enabled: (ctx.request.body.enabled === 'true'),\r\n        token: ctx.request.body.token.trim(),\r\n        announceChannel: ctx.request.body.announceChannel.trim(),\r\n        prefix: ctx.request.body.prefix.trim(),\r\n        statusMessage: ctx.request.body.statusMessage.trim(),\r\n    };\r\n\r\n    //Preparing & saving config\r\n    let newConfig = globals.configVault.getScopedStructure('discordBot');\r\n    newConfig.enabled = cfg.enabled;\r\n    newConfig.token = cfg.token;\r\n    newConfig.announceChannel = (cfg.announceChannel.length) ? cfg.announceChannel : false;\r\n    newConfig.prefix = cfg.prefix;\r\n    newConfig.statusMessage = cfg.statusMessage;\r\n    let saveStatus = globals.configVault.saveProfile('discordBot', newConfig);\r\n\r\n    //Sending output\r\n    if (saveStatus) {\r\n        globals.discordBot.refreshConfig();\r\n        ctx.utils.logAction('Changing discordBot settings.');\r\n        if (newConfig.enabled) {\r\n            return ctx.send({type: 'warning', message: '<strong>Discord configuration saved. Check terminal to make sure the token is valid.</strong>'});\r\n        } else {\r\n            return ctx.send({type: 'success', message: '<strong>Discord configuration saved!</strong>'});\r\n        }\r\n    } else {\r\n        logWarn(`[${ctx.session.auth.username}] Error changing discordBot settings.`);\r\n        return ctx.send({type: 'danger', message: '<strong>Error saving the configuration file.</strong>'});\r\n    }\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle Menu settings\r\n * NOTE: scoped inside global settings\r\n * @param {object} ctx\r\n */\r\nasync function handleMenu(ctx) {\r\n    //Sanity check\r\n    if (\r\n        isUndefined(ctx.request.body.menuEnabled)\r\n        || isUndefined(ctx.request.body.menuAlignRight)\r\n        || isUndefined(ctx.request.body.menuPageKey)\r\n    ) {\r\n        return ctx.utils.error(400, 'Invalid Request - missing parameters');\r\n    }\r\n\r\n    //Prepare body input\r\n    const cfg = {\r\n        menuEnabled: (ctx.request.body.menuEnabled === 'true'),\r\n        menuAlignRight: (ctx.request.body.menuAlignRight === 'true'),\r\n        menuPageKey: ctx.request.body.menuPageKey.trim(),\r\n    };\r\n\r\n    //Preparing & saving config\r\n    const newConfig = globals.configVault.getScopedStructure('global');\r\n    newConfig.menuEnabled = cfg.menuEnabled;\r\n    newConfig.menuAlignRight = cfg.menuAlignRight;\r\n    newConfig.menuPageKey = cfg.menuPageKey;\r\n    const saveStatus = globals.configVault.saveProfile('global', newConfig);\r\n\r\n    //Sending output\r\n    if (saveStatus) {\r\n        globals.config = globals.configVault.getScoped('global');\r\n        globals.fxRunner.resetConvars();\r\n        ctx.utils.logAction('Changing menu settings.');\r\n        return ctx.send({type: 'success', message: '<strong>Menu configuration saved!<br>You need to restart the server for the changes to take effect.</strong>'});\r\n    } else {\r\n        logWarn(`[${ctx.session.auth.username}] Error changing menu settings.`);\r\n        return ctx.send({type: 'danger', message: '<strong>Error saving the configuration file.</strong>'});\r\n    }\r\n}\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/settings/save.js?")},"./src/webroutes/setup/get.js":
/*!************************************!*\
  !*** ./src/webroutes/setup/get.js ***!
  \************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:SetupGet';\r\nconst path = __webpack_require__(/*! path */ \"path\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\nconst { engineVersion } = __webpack_require__(/*! ../../extras/deployer */ \"./src/extras/deployer.js\");\r\n\r\n/**\r\n * Returns the output page containing the live console\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function SetupGet(ctx) {\r\n    //Check permissions\r\n    if (!ctx.utils.checkPermission('master', modulename)) {\r\n        return ctx.utils.render('main/message', {message: 'You need to be the admin master to use the setup page.'});\r\n    }\r\n\r\n    // Check if this is the correct state for the setup page\r\n    if (globals.deployer !== null) {\r\n        return ctx.response.redirect('/deployer');\r\n    }\r\n    if (globals.fxRunner.config.serverDataPath && globals.fxRunner.config.cfgPath) {\r\n        return ctx.response.redirect('/');\r\n    }\r\n\r\n    const globalConfig = globals.configVault.getScopedStructure('global');\r\n    const renderData = {\r\n        headerTitle: 'Setup',\r\n        isReset: (globalConfig.serverName !== null),\r\n        deployerEngineVersion: engineVersion,\r\n        serverProfile: globals.info.serverProfile,\r\n        txDataPath: GlobalData.dataPath,\r\n        isZapHosting: GlobalData.isZapHosting,\r\n        windowsBatPath: null,\r\n    };\r\n\r\n    if (GlobalData.osType == 'windows') {\r\n        const batFolder = path.resolve(GlobalData.fxServerPath, '..');\r\n        renderData.windowsBatPath  = path.join(batFolder, `start_${GlobalData.fxServerVersion}_${globals.info.serverProfile}.bat`);\r\n    }\r\n\r\n    return ctx.utils.render('standalone/setup', renderData);\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/setup/get.js?")},"./src/webroutes/setup/post.js":
/*!*************************************!*\
  !*** ./src/webroutes/setup/post.js ***!
  \*************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:SetupPost';\r\nconst fs = __webpack_require__(/*! fs-extra */ \"./node_modules/fs-extra/lib/index.js\");\r\nconst slash = __webpack_require__(/*! slash */ \"./node_modules/slash/index.js\");\r\nconst path = __webpack_require__(/*! path */ \"path\");\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../../extras/console */ \"./src/extras/console.js\")(modulename);\r\nconst { Deployer, validateTargetPath, parseValidateRecipe } = __webpack_require__(/*! ../../extras/deployer */ \"./src/extras/deployer.js\");\r\nconst { validateFixServerConfig, findLikelyCFGPath } = __webpack_require__(/*! ../../extras/fxsConfigHelper */ \"./src/extras/fxsConfigHelper.js\");\r\nconst got = __webpack_require__(/*! ../../extras/got */ \"./src/extras/got.js\");\r\n\r\n//Helper functions\r\nconst isUndefined = (x) => { return (typeof x === 'undefined'); };\r\n\r\nconst getDirectories = (source) => {\r\n    return fs.readdirSync(source, { withFileTypes: true })\r\n        .filter((dirent) => dirent.isDirectory())\r\n        .map((dirent) => dirent.name);\r\n};\r\n\r\nconst getPotentialServerDataFolders = (source) => {\r\n    try {\r\n        return getDirectories(source)\r\n            .filter((dirent) => getDirectories(path.join(source, dirent)).includes('resources'))\r\n            .map((dirent) => slash(path.join(source, dirent)) + '/');\r\n    } catch (error) {\r\n        if (GlobalData.verbose) logWarn(`Failed to find server data folder with message: ${error.message}`);\r\n        return [];\r\n    }\r\n};\r\n\r\n/*\r\n    NOTE: How forgiving are we:\r\n        - Ignore trailing slashes, as well as fix backslashes\r\n        - Check if its the parent folder\r\n        - Check if its inside the parent folder\r\n        - Check if its inside current folder\r\n        - Check if it contains the string `/resources`, then if its the path up to that string\r\n        - Detect config as `server.cfg` or with wrong extensions inside the Server Data Folder\r\n\r\n    FIXME: Also note that this entire file is a bit too messy, please clean it up a bit\r\n*/\r\n\r\n/**\r\n * Handle all the server control actions\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function SetupPost(ctx) {\r\n    //Sanity check\r\n    if (isUndefined(ctx.params.action)) {\r\n        return ctx.utils.error(400, 'Invalid Request');\r\n    }\r\n    const action = ctx.params.action;\r\n\r\n    //Check permissions\r\n    if (!ctx.utils.checkPermission('all_permissions', modulename)) {\r\n        return ctx.send({\r\n            success: false,\r\n            message: 'You need to be the admin master to use the setup page.',\r\n        });\r\n    }\r\n\r\n    //Check if this is the correct state for the setup page\r\n    if (\r\n        globals.deployer !== null\r\n        || (globals.fxRunner.config.serverDataPath && globals.fxRunner.config.cfgPath)\r\n    ) {\r\n        return ctx.send({\r\n            success: false,\r\n            refresh: true,\r\n        });\r\n    }\r\n\r\n    //Delegate to the specific action functions\r\n    if (action == 'validateRecipeURL') {\r\n        return await handleValidateRecipeURL(ctx);\r\n    } else if (action == 'validateLocalDeployPath') {\r\n        return await handleValidateLocalDeployPath(ctx);\r\n    } else if (action == 'validateLocalDataFolder') {\r\n        return await handleValidateLocalDataFolder(ctx);\r\n    } else if (action == 'validateCFGFile') {\r\n        return await handleValidateCFGFile(ctx);\r\n    } else if (action == 'save' && ctx.request.body.type == 'popular') {\r\n        return await handleSaveDeployerImport(ctx);\r\n    } else if (action == 'save' && ctx.request.body.type == 'remote') {\r\n        return await handleSaveDeployerImport(ctx);\r\n    } else if (action == 'save' && ctx.request.body.type == 'custom') {\r\n        return await handleSaveDeployerCustom(ctx);\r\n    } else if (action == 'save' && ctx.request.body.type == 'local') {\r\n        return await handleSaveLocal(ctx);\r\n    } else {\r\n        return ctx.send({\r\n            success: false,\r\n            message: 'Unknown setup action.',\r\n        });\r\n    }\r\n};\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle Validation of a remote recipe/template URL\r\n * @param {object} ctx\r\n */\r\nasync function handleValidateRecipeURL(ctx) {\r\n    //Sanity check\r\n    if (isUndefined(ctx.request.body.recipeURL)) {\r\n        return ctx.utils.error(400, 'Invalid Request - missing parameters');\r\n    }\r\n    const recipeURL = ctx.request.body.recipeURL.trim();\r\n\r\n    //Make request & validate recipe\r\n    try {\r\n        const recipeText = await got.get({\r\n            url: recipeURL,\r\n            timeout: 4500,\r\n        }).text();\r\n        if (typeof recipeText !== 'string') throw new Error('This URL did not return a string.');\r\n        const recipe = parseValidateRecipe(recipeText);\r\n        return ctx.send({success: true, name: recipe.name});\r\n    } catch (error) {\r\n        return ctx.send({success: false, message: `Recipe error: ${error.message}`});\r\n    }\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle Validation of a remote recipe/template URL\r\n * @param {object} ctx\r\n */\r\nasync function handleValidateLocalDeployPath(ctx) {\r\n    //Sanity check\r\n    if (isUndefined(ctx.request.body.deployPath)) {\r\n        return ctx.utils.error(400, 'Invalid Request - missing parameters');\r\n    }\r\n    const deployPath = slash(path.normalize(ctx.request.body.deployPath.trim()));\r\n\r\n    //Perform path checking\r\n    try {\r\n        return ctx.send({success: true, message: await validateTargetPath(deployPath)});\r\n    } catch (error) {\r\n        return ctx.send({success: false, message: error.message});\r\n    }\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle Validation of Local (existing) Server Data Folder\r\n * @param {object} ctx\r\n */\r\nasync function handleValidateLocalDataFolder(ctx) {\r\n    //Sanity check\r\n    if (isUndefined(ctx.request.body.dataFolder)) {\r\n        return ctx.utils.error(400, 'Invalid Request - missing parameters');\r\n    }\r\n    const dataFolderPath = slash(path.normalize(ctx.request.body.dataFolder.trim() + '/'));\r\n\r\n    try {\r\n        if (!fs.existsSync(path.join(dataFolderPath, 'resources'))) {\r\n            const recoveryTemplate = `The path provided is invalid. <br>\r\n                But it looks like <code>{{attempt}}</code> is correct. <br>\r\n                Do you want to use it instead?`;\r\n\r\n            //Recovery if parent folder\r\n            const attemptIsParent = path.join(dataFolderPath, '..');\r\n            if (fs.existsSync(path.join(attemptIsParent, 'resources'))) {\r\n                const message = recoveryTemplate.replace('{{attempt}}', attemptIsParent);\r\n                return ctx.send({success: false, message, suggestion: attemptIsParent});\r\n            }\r\n\r\n            //Recovery parent inside folder\r\n            const attemptOutside = getPotentialServerDataFolders(path.join(dataFolderPath, '..'));\r\n            if (attemptOutside.length >= 1) {\r\n                const message = recoveryTemplate.replace('{{attempt}}', attemptOutside[0]);\r\n                return ctx.send({success: false, message, suggestion: attemptOutside[0]});\r\n            }\r\n\r\n            //Recovery if resources\r\n            if (dataFolderPath.includes('/resources')) {\r\n                const attemptRes = dataFolderPath.split('/resources')[0];\r\n                if (fs.existsSync(path.join(attemptRes, 'resources'))) {\r\n                    const message = recoveryTemplate.replace('{{attempt}}', attemptRes);\r\n                    return ctx.send({success: false, message, suggestion: attemptRes});\r\n                }\r\n            }\r\n\r\n            //Recovery subfolder\r\n            const attemptInside = getPotentialServerDataFolders(dataFolderPath);\r\n            if (attemptInside.length >= 1) {\r\n                const message = recoveryTemplate.replace('{{attempt}}', attemptInside[0]);\r\n                return ctx.send({success: false, message, suggestion: attemptInside[0]});\r\n            }\r\n\r\n            //really invalid :(\r\n            throw new Error(\"Couldn't locate or read a resources folder inside of the path provided.\");\r\n        } else {\r\n            return ctx.send({\r\n                success: true,\r\n                detectedConfig: findLikelyCFGPath(dataFolderPath),\r\n            });\r\n        }\r\n    } catch (error) {\r\n        return ctx.send({success: false, message: error.message});\r\n    }\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle Validation of CFG File\r\n * @param {object} ctx\r\n */\r\nasync function handleValidateCFGFile(ctx) {\r\n    //Sanity check\r\n    if (\r\n        isUndefined(ctx.request.body.dataFolder)\r\n        || isUndefined(ctx.request.body.cfgFile)\r\n    ) {\r\n        return ctx.utils.error(400, 'Invalid Request - missing parameters');\r\n    }\r\n\r\n    const dataFolderPath = slash(path.normalize(ctx.request.body.dataFolder.trim()));\r\n    const cfgFilePathNormalized = slash(path.normalize(ctx.request.body.cfgFile.trim()));\r\n\r\n    //Validate file\r\n    try {\r\n        const result = await validateFixServerConfig(cfgFilePathNormalized, dataFolderPath);\r\n        if (result.errors) {\r\n            const message = `**The file path is correct, but there are error(s) in your config file(s):**\\n${result.errors}`;\r\n            return ctx.send({success: false, markdown: true, message});\r\n        } else {\r\n            return ctx.send({success: true});\r\n        }\r\n    } catch (error) {\r\n        const message = `The file path is correct, but: <br>\\n ${error.message}.`;\r\n        return ctx.send({success: false, message});\r\n    }\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle Save settings for local server data imports\r\n * Actions: sets serverDataPath/cfgPath, starts the server, redirect to live console\r\n * @param {object} ctx\r\n */\r\nasync function handleSaveLocal(ctx) {\r\n    //Sanity check\r\n    if (\r\n        isUndefined(ctx.request.body.name)\r\n        || isUndefined(ctx.request.body.dataFolder)\r\n        || isUndefined(ctx.request.body.cfgFile)\r\n    ) {\r\n        return ctx.utils.error(400, 'Invalid Request - missing parameters');\r\n    }\r\n\r\n    //Prepare body input\r\n    const cfg = {\r\n        name: ctx.request.body.name.trim(),\r\n        dataFolder: slash(path.normalize(ctx.request.body.dataFolder + '/')),\r\n        cfgFile: slash(path.normalize(ctx.request.body.cfgFile)),\r\n    };\r\n\r\n    //Validating Base Path\r\n    try {\r\n        if (!fs.existsSync(path.join(cfg.dataFolder, 'resources'))) {\r\n            throw new Error('Invalid path');\r\n        }\r\n    } catch (error) {\r\n        return ctx.send({success: false, message: `<strong>Server Data Folder error:</strong> ${error.message}`});\r\n    }\r\n\r\n    //Preparing & saving config\r\n    const newGlobalConfig = globals.configVault.getScopedStructure('global');\r\n    newGlobalConfig.serverName = cfg.name;\r\n    const saveGlobalStatus = globals.configVault.saveProfile('global', newGlobalConfig);\r\n\r\n    const newFXRunnerConfig = globals.configVault.getScopedStructure('fxRunner');\r\n    newFXRunnerConfig.serverDataPath = cfg.dataFolder;\r\n    newFXRunnerConfig.cfgPath = cfg.cfgFile;\r\n    const saveFXRunnerStatus = globals.configVault.saveProfile('fxRunner', newFXRunnerConfig);\r\n\r\n\r\n    //Sending output\r\n    if (saveGlobalStatus && saveFXRunnerStatus) {\r\n        //Refreshing config\r\n        globals.config = globals.configVault.getScoped('global');\r\n        globals.fxRunner.refreshConfig();\r\n\r\n        //Logging\r\n        ctx.utils.logAction('Changing global/fxserver settings via setup stepper.');\r\n\r\n        //Starting server\r\n        const spawnMsg = await globals.fxRunner.spawnServer(false);\r\n        if (spawnMsg !== null) {\r\n            return ctx.send({success: false, markdown: true, message: spawnMsg});\r\n        } else {\r\n            return ctx.send({success: true});\r\n        }\r\n    } else {\r\n        logWarn(`[${ctx.session.auth.username}] Error changing global/fxserver settings via setup stepper.`);\r\n        return ctx.send({success: false, markdown: true, message: '**Error saving the configuration file.**'});\r\n    }\r\n}\r\n\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle Save settings for remote recipe importing\r\n * Actions: download recipe, globals.deployer = new Deployer(recipe)\r\n * @param {object} ctx\r\n */\r\nasync function handleSaveDeployerImport(ctx) {\r\n    //Sanity check\r\n    if (\r\n        isUndefined(ctx.request.body.name)\r\n        || isUndefined(ctx.request.body.isTrustedSource)\r\n        || isUndefined(ctx.request.body.recipeURL)\r\n        || isUndefined(ctx.request.body.targetPath)\r\n        || isUndefined(ctx.request.body.deploymentID)\r\n    ) {\r\n        return ctx.utils.error(400, 'Invalid Request - missing parameters');\r\n    }\r\n    const isTrustedSource = (ctx.request.body.isTrustedSource === 'true');\r\n    const serverName = ctx.request.body.name.trim();\r\n    const recipeURL = ctx.request.body.recipeURL.trim();\r\n    const targetPath = slash(path.normalize(ctx.request.body.targetPath + '/'));\r\n    const deploymentID = ctx.request.body.deploymentID;\r\n\r\n    //Get recipe\r\n    let recipeText;\r\n    try {\r\n        recipeText = await got.get({\r\n            url: recipeURL,\r\n            timeout: 4500,\r\n        }).text();\r\n        if (typeof recipeText !== 'string') throw new Error('This URL did not return a string.');\r\n    } catch (error) {\r\n        return ctx.send({success: false, message: `Recipe download error: ${error.message}`});\r\n    }\r\n\r\n    //Start deployer (constructor will validate the recipe)\r\n    try {\r\n        globals.deployer = new Deployer(recipeText, deploymentID, targetPath, isTrustedSource, {serverName});\r\n    } catch (error) {\r\n        return ctx.send({success: false, message: error.message});\r\n    }\r\n\r\n    //Preparing & saving config\r\n    const newGlobalConfig = globals.configVault.getScopedStructure('global');\r\n    newGlobalConfig.serverName = serverName;\r\n    const saveGlobalStatus = globals.configVault.saveProfile('global', newGlobalConfig);\r\n\r\n    //Checking save and redirecting\r\n    if (saveGlobalStatus) {\r\n        globals.config = globals.configVault.getScoped('global');\r\n        ctx.utils.logAction('Changing global settings via setup stepper and started Deployer.');\r\n        return ctx.send({success: true});\r\n    } else {\r\n        logWarn(`[${ctx.session.auth.username}] Error changing global settings via setup stepper.`);\r\n        return ctx.send({success: false, message: '<strong>Error saving the configuration file.</strong>'});\r\n    }\r\n}\r\n\r\n\r\n//================================================================\r\n/**\r\n * Handle Save settings for custom recipe\r\n * Actions: download recipe, globals.deployer = new Deployer(recipe)\r\n * @param {object} ctx\r\n */\r\nasync function handleSaveDeployerCustom(ctx) {\r\n    //Sanity check\r\n    if (\r\n        isUndefined(ctx.request.body.name)\r\n        || isUndefined(ctx.request.body.targetPath)\r\n        || isUndefined(ctx.request.body.deploymentID)\r\n    ) {\r\n        return ctx.utils.error(400, 'Invalid Request - missing parameters');\r\n    }\r\n    const serverName = ctx.request.body.name.trim();\r\n    const targetPath = slash(path.normalize(ctx.request.body.targetPath + '/'));\r\n    const deploymentID = ctx.request.body.deploymentID;\r\n    const customMetaData = {\r\n        author: ctx.session.auth.username,\r\n        serverName,\r\n    };\r\n\r\n    //Start deployer (constructor will create the recipe template)\r\n    try {\r\n        globals.deployer = new Deployer(false, deploymentID, targetPath, false, customMetaData);\r\n    } catch (error) {\r\n        return ctx.send({success: false, message: error.message});\r\n    }\r\n\r\n    //Preparing & saving config\r\n    const newGlobalConfig = globals.configVault.getScopedStructure('global');\r\n    newGlobalConfig.serverName = serverName;\r\n    const saveGlobalStatus = globals.configVault.saveProfile('global', newGlobalConfig);\r\n\r\n    //Checking save and redirecting\r\n    if (saveGlobalStatus) {\r\n        globals.config = globals.configVault.getScoped('global');\r\n        ctx.utils.logAction('Changing global settings via setup stepper and started Deployer.');\r\n        return ctx.send({success: true});\r\n    } else {\r\n        logWarn(`[${ctx.session.auth.username}] Error changing global settings via setup stepper.`);\r\n        return ctx.send({success: false, message: '<strong>Error saving the configuration file.</strong>'});\r\n    }\r\n}\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/setup/post.js?")},"./src/webroutes/status.js":
/*!*********************************!*\
  !*** ./src/webroutes/status.js ***!
  \*********************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:GetStatus';\r\nconst { dir, log, logOk, logWarn, logError } = __webpack_require__(/*! ../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n\r\n/**\r\n * Getter for all the log/server/process data\r\n * The host data is cached for 5 seconds\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function GetStatus(ctx) {\r\n    const out = {\r\n        status: prepareServerStatus(),\r\n    };\r\n    if (ctx.params.scope === 'web') {\r\n        out.host = prepareHostData();\r\n        out.meta = prepareMetaData();\r\n        out.players = preparePlayersData();\r\n    }\r\n    return ctx.send(out);\r\n};\r\n\r\n\r\n//==============================================================\r\n/**\r\n * Returns the fxserver's data\r\n */\r\nfunction prepareServerStatus() {\r\n    //Discord status\r\n    const discordClient = globals.discordBot.client;\r\n    let discordStatus;\r\n    let discordStatusClass;\r\n    const discStatusCodes = [\r\n        ['READY', 'success'],\r\n        ['CONNECTING', 'warning'],\r\n        ['RECONNECTING', 'warning'],\r\n        ['IDLE', 'warning'],\r\n        ['NEARLY', 'warning'],\r\n        ['DISCONNECTED', 'danger'],\r\n        ['WAITING_FOR_GUILDS', 'warning'],\r\n        ['IDENTIFYING', 'warning'],\r\n        ['RESUMING', 'warning'],\r\n    ];\r\n    if (discordClient == null) {\r\n        discordStatus = 'DISABLED';\r\n        discordStatusClass = 'secondary';\r\n    } else if (discStatusCodes[discordClient.ws?.status]) {\r\n        discordStatus = discStatusCodes[discordClient.ws?.status][0];\r\n        discordStatusClass = discStatusCodes[discordClient.ws?.status][1];\r\n    } else {\r\n        discordStatus = 'UNKNOWN';\r\n        discordStatusClass = 'danger';\r\n    }\r\n\r\n    //Server status\r\n    const monitorStatus = globals.monitor.currentStatus || '??';\r\n    let monitorStatusClass;\r\n    if (monitorStatus == 'ONLINE') {\r\n        monitorStatusClass = 'success';\r\n    } else if (monitorStatus == 'PARTIAL') {\r\n        monitorStatusClass = 'warning';\r\n    } else if (monitorStatus == 'OFFLINE') {\r\n        monitorStatusClass = 'danger';\r\n    } else {\r\n        monitorStatusClass = 'dark';\r\n    }\r\n    const processStatus = globals.fxRunner.getStatus();\r\n\r\n    return `Discord Bot Status: <span class=\"badge badge-${discordStatusClass}\"> ${discordStatus} </span> <br>\r\n        Server Status: <span class=\"badge badge-${monitorStatusClass}\"> ${monitorStatus} </span> <br>\r\n        Process Status: <span class=\"font-weight-light\">${processStatus}</span>`;\r\n}\r\n\r\n\r\n//==============================================================\r\n/**\r\n * Returns the host's usage\r\n */\r\nfunction prepareHostData() {\r\n    const stats = globals.monitor.hostStats;\r\n    if (!stats) {\r\n        return {\r\n            memory: {pct: 0, text: 'not available'},\r\n            cpu: {pct: 0, text: 'not available'},\r\n        };\r\n    } else {\r\n        return {\r\n            memory: {\r\n                pct: stats.memory.usage,\r\n                text: `${stats.memory.usage}% (${stats.memory.used.toFixed(2)}/${stats.memory.total.toFixed(2)} GB)`,\r\n            },\r\n            cpu:{\r\n                pct: stats.cpu.usage,\r\n                text: `${stats.cpu.usage}% of ${stats.cpu.count}x ${stats.cpu.speed} MHz`,\r\n            },\r\n        };\r\n    }\r\n}\r\n\r\n\r\n//==============================================================\r\n/**\r\n * Returns the activePlayers list in /playerlist.json compatible-ish format\r\n *\r\n * FIXME: This is very wasteful, we need to start only sending the playerlist diff for the admins.\r\n *        Could be done via socket.io, and then playerlist changed would push update events\r\n */\r\nfunction preparePlayersData() {\r\n    return globals.playerController.getPlayerList();\r\n}\r\n\r\n\r\n//==============================================================\r\n/**\r\n * Returns the page metadata (title and icon)\r\n */\r\nfunction prepareMetaData() {\r\n    let favicon;\r\n    if (globals.monitor.currentStatus == 'ONLINE') {\r\n        favicon = 'favicon_online';\r\n    } else if (globals.monitor.currentStatus == 'PARTIAL') {\r\n        favicon = 'favicon_partial';\r\n    } else {\r\n        favicon = 'favicon_offline';\r\n    }\r\n    return {\r\n        favicon,\r\n        title: (globals.monitor.currentStatus == 'ONLINE')\r\n            ? `(${globals.playerController.activePlayers.length}) txAdmin`\r\n            : 'txAdmin',\r\n    };\r\n}\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/status.js?")},"./src/webroutes/txAdminLog.js":
/*!*************************************!*\
  !*** ./src/webroutes/txAdminLog.js ***!
  \*************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("//Requires\r\nconst modulename = 'WebServer:txAdminLog';\r\nconst dateFormat = __webpack_require__(/*! dateformat */ \"./node_modules/dateformat/lib/dateformat.js\");\r\nconst xss = __webpack_require__(/*! ../extras/xss */ \"./src/extras/xss.js\")();\r\nconst { dir, log, logOk, logWarn, logError, getLog } = __webpack_require__(/*! ../extras/console */ \"./src/extras/console.js\")(modulename);\r\n\r\n\r\n/**\r\n * Returns the output page containing the action log, and the console log\r\n * @param {object} ctx\r\n */\r\nmodule.exports = async function txAdminLog(ctx) {\r\n    //Check permissions\r\n    if (!ctx.utils.checkPermission('txadmin.log.view', modulename)) {\r\n        return ctx.utils.render('main/message', {message: 'You don\\'t have permission to view this page.'});\r\n    }\r\n\r\n    //Console\r\n    const rawConsoleLog = getLog();\r\n    const consoleLogLines = [];\r\n    rawConsoleLog.forEach((logData) => {\r\n        const ts = dateFormat(new Date(logData.ts * 1000), 'HH:MM:ss');\r\n        const mark = `<mark class=\"consoleMark-${logData.type.toLowerCase()}\">[${ts}][${logData.ctx}]</mark>`;\r\n        consoleLogLines.push(`${mark}  ${xss(logData.msg)}`);\r\n    });\r\n    const consoleLog = consoleLogLines.join('\\n');\r\n\r\n    //Actions\r\n    const actionLog = xss(await globals.logger.admin.getRecentBuffer());\r\n\r\n    //Output\r\n    return ctx.utils.render('main/txAdminLog', {headerTitle: 'txAdmin Log', consoleLog, actionLog});\r\n};\r\n\n\n//# sourceURL=webpack://txadmin/./src/webroutes/txAdminLog.js?")},assert:
/*!*************************!*\
  !*** external "assert" ***!
  \*************************/e=>{"use strict";e.exports=require("assert")},buffer:
/*!*************************!*\
  !*** external "buffer" ***!
  \*************************/e=>{"use strict";e.exports=require("buffer")},child_process:
/*!********************************!*\
  !*** external "child_process" ***!
  \********************************/e=>{"use strict";e.exports=require("child_process")},constants:
/*!****************************!*\
  !*** external "constants" ***!
  \****************************/e=>{"use strict";e.exports=require("constants")},crypto:
/*!*************************!*\
  !*** external "crypto" ***!
  \*************************/e=>{"use strict";e.exports=require("crypto")},dgram:
/*!************************!*\
  !*** external "dgram" ***!
  \************************/e=>{"use strict";e.exports=require("dgram")},dns:
/*!**********************!*\
  !*** external "dns" ***!
  \**********************/e=>{"use strict";e.exports=require("dns")},events:
/*!*************************!*\
  !*** external "events" ***!
  \*************************/e=>{"use strict";e.exports=require("events")},fs:
/*!*********************!*\
  !*** external "fs" ***!
  \*********************/e=>{"use strict";e.exports=require("fs")},"fs/promises":
/*!******************************!*\
  !*** external "fs/promises" ***!
  \******************************/e=>{"use strict";e.exports=require("fs/promises")},http:
/*!***********************!*\
  !*** external "http" ***!
  \***********************/e=>{"use strict";e.exports=require("http")},http2:
/*!************************!*\
  !*** external "http2" ***!
  \************************/e=>{"use strict";e.exports=require("http2")},https:
/*!************************!*\
  !*** external "https" ***!
  \************************/e=>{"use strict";e.exports=require("https")},net:
/*!**********************!*\
  !*** external "net" ***!
  \**********************/e=>{"use strict";e.exports=require("net")},"node:buffer":
/*!******************************!*\
  !*** external "node:buffer" ***!
  \******************************/e=>{"use strict";e.exports=require("node:buffer")},"node:child_process":
/*!*************************************!*\
  !*** external "node:child_process" ***!
  \*************************************/e=>{"use strict";e.exports=require("node:child_process")},"node:events":
/*!******************************!*\
  !*** external "node:events" ***!
  \******************************/e=>{"use strict";e.exports=require("node:events")},"node:fs":
/*!**************************!*\
  !*** external "node:fs" ***!
  \**************************/e=>{"use strict";e.exports=require("node:fs")},"node:fs/promises":
/*!***********************************!*\
  !*** external "node:fs/promises" ***!
  \***********************************/e=>{"use strict";e.exports=require("node:fs/promises")},"node:https":
/*!*****************************!*\
  !*** external "node:https" ***!
  \*****************************/e=>{"use strict";e.exports=require("node:https")},"node:path":
/*!****************************!*\
  !*** external "node:path" ***!
  \****************************/e=>{"use strict";e.exports=require("node:path")},"node:process":
/*!*******************************!*\
  !*** external "node:process" ***!
  \*******************************/e=>{"use strict";e.exports=require("node:process")},"node:stream":
/*!******************************!*\
  !*** external "node:stream" ***!
  \******************************/e=>{"use strict";e.exports=require("node:stream")},"node:timers":
/*!******************************!*\
  !*** external "node:timers" ***!
  \******************************/e=>{"use strict";e.exports=require("node:timers")},"node:timers/promises":
/*!***************************************!*\
  !*** external "node:timers/promises" ***!
  \***************************************/e=>{"use strict";e.exports=require("node:timers/promises")},"node:worker_threads":
/*!**************************************!*\
  !*** external "node:worker_threads" ***!
  \**************************************/e=>{"use strict";e.exports=require("node:worker_threads")},os:
/*!*********************!*\
  !*** external "os" ***!
  \*********************/e=>{"use strict";e.exports=require("os")},path:
/*!***********************!*\
  !*** external "path" ***!
  \***********************/e=>{"use strict";e.exports=require("path")},process:
/*!**************************!*\
  !*** external "process" ***!
  \**************************/e=>{"use strict";e.exports=require("process")},punycode:
/*!***************************!*\
  !*** external "punycode" ***!
  \***************************/e=>{"use strict";e.exports=require("punycode")},querystring:
/*!******************************!*\
  !*** external "querystring" ***!
  \******************************/e=>{"use strict";e.exports=require("querystring")},stream:
/*!*************************!*\
  !*** external "stream" ***!
  \*************************/e=>{"use strict";e.exports=require("stream")},string_decoder:
/*!*********************************!*\
  !*** external "string_decoder" ***!
  \*********************************/e=>{"use strict";e.exports=require("string_decoder")},timers:
/*!*************************!*\
  !*** external "timers" ***!
  \*************************/e=>{"use strict";e.exports=require("timers")},tls:
/*!**********************!*\
  !*** external "tls" ***!
  \**********************/e=>{"use strict";e.exports=require("tls")},tty:
/*!**********************!*\
  !*** external "tty" ***!
  \**********************/e=>{"use strict";e.exports=require("tty")},url:
/*!**********************!*\
  !*** external "url" ***!
  \**********************/e=>{"use strict";e.exports=require("url")},util:
/*!***********************!*\
  !*** external "util" ***!
  \***********************/e=>{"use strict";e.exports=require("util")},v8:
/*!*********************!*\
  !*** external "v8" ***!
  \*********************/e=>{"use strict";e.exports=require("v8")},zlib:
/*!***********************!*\
  !*** external "zlib" ***!
  \***********************/e=>{"use strict";e.exports=require("zlib")},"./node_modules/engine.io-parser/build/cjs/commons.js":
/*!************************************************************!*\
  !*** ./node_modules/engine.io-parser/build/cjs/commons.js ***!
  \************************************************************/(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.ERROR_PACKET = exports.PACKET_TYPES_REVERSE = exports.PACKET_TYPES = void 0;\nconst PACKET_TYPES = Object.create(null); // no Map = no polyfill\nexports.PACKET_TYPES = PACKET_TYPES;\nPACKET_TYPES["open"] = "0";\nPACKET_TYPES["close"] = "1";\nPACKET_TYPES["ping"] = "2";\nPACKET_TYPES["pong"] = "3";\nPACKET_TYPES["message"] = "4";\nPACKET_TYPES["upgrade"] = "5";\nPACKET_TYPES["noop"] = "6";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nexports.PACKET_TYPES_REVERSE = PACKET_TYPES_REVERSE;\nObject.keys(PACKET_TYPES).forEach(key => {\n    PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: "error", data: "parser error" };\nexports.ERROR_PACKET = ERROR_PACKET;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io-parser/build/cjs/commons.js?')},"./node_modules/engine.io-parser/build/cjs/decodePacket.js":
/*!*****************************************************************!*\
  !*** ./node_modules/engine.io-parser/build/cjs/decodePacket.js ***!
  \*****************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst commons_js_1 = __webpack_require__(/*! ./commons.js */ "./node_modules/engine.io-parser/build/cjs/commons.js");\nconst decodePacket = (encodedPacket, binaryType) => {\n    if (typeof encodedPacket !== "string") {\n        return {\n            type: "message",\n            data: mapBinary(encodedPacket, binaryType)\n        };\n    }\n    const type = encodedPacket.charAt(0);\n    if (type === "b") {\n        const buffer = Buffer.from(encodedPacket.substring(1), "base64");\n        return {\n            type: "message",\n            data: mapBinary(buffer, binaryType)\n        };\n    }\n    if (!commons_js_1.PACKET_TYPES_REVERSE[type]) {\n        return commons_js_1.ERROR_PACKET;\n    }\n    return encodedPacket.length > 1\n        ? {\n            type: commons_js_1.PACKET_TYPES_REVERSE[type],\n            data: encodedPacket.substring(1)\n        }\n        : {\n            type: commons_js_1.PACKET_TYPES_REVERSE[type]\n        };\n};\nconst mapBinary = (data, binaryType) => {\n    const isBuffer = Buffer.isBuffer(data);\n    switch (binaryType) {\n        case "arraybuffer":\n            return isBuffer ? toArrayBuffer(data) : data;\n        case "nodebuffer":\n        default:\n            return data; // assuming the data is already a Buffer\n    }\n};\nconst toArrayBuffer = (buffer) => {\n    const arrayBuffer = new ArrayBuffer(buffer.length);\n    const view = new Uint8Array(arrayBuffer);\n    for (let i = 0; i < buffer.length; i++) {\n        view[i] = buffer[i];\n    }\n    return arrayBuffer;\n};\nexports["default"] = decodePacket;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io-parser/build/cjs/decodePacket.js?')},"./node_modules/engine.io-parser/build/cjs/encodePacket.js":
/*!*****************************************************************!*\
  !*** ./node_modules/engine.io-parser/build/cjs/encodePacket.js ***!
  \*****************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst commons_js_1 = __webpack_require__(/*! ./commons.js */ "./node_modules/engine.io-parser/build/cjs/commons.js");\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n    if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) {\n        const buffer = toBuffer(data);\n        return callback(encodeBuffer(buffer, supportsBinary));\n    }\n    // plain string\n    return callback(commons_js_1.PACKET_TYPES[type] + (data || ""));\n};\nconst toBuffer = data => {\n    if (Buffer.isBuffer(data)) {\n        return data;\n    }\n    else if (data instanceof ArrayBuffer) {\n        return Buffer.from(data);\n    }\n    else {\n        return Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n    }\n};\n// only \'message\' packets can contain binary, so the type prefix is not needed\nconst encodeBuffer = (data, supportsBinary) => {\n    return supportsBinary ? data : "b" + data.toString("base64");\n};\nexports["default"] = encodePacket;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io-parser/build/cjs/encodePacket.js?')},"./node_modules/engine.io-parser/build/cjs/index.js":
/*!**********************************************************!*\
  !*** ./node_modules/engine.io-parser/build/cjs/index.js ***!
  \**********************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.decodePayload = exports.decodePacket = exports.encodePayload = exports.encodePacket = exports.protocol = void 0;\nconst encodePacket_js_1 = __webpack_require__(/*! ./encodePacket.js */ "./node_modules/engine.io-parser/build/cjs/encodePacket.js");\nexports.encodePacket = encodePacket_js_1.default;\nconst decodePacket_js_1 = __webpack_require__(/*! ./decodePacket.js */ "./node_modules/engine.io-parser/build/cjs/decodePacket.js");\nexports.decodePacket = decodePacket_js_1.default;\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n    // some packets may be added to the array while encoding, so the initial length must be saved\n    const length = packets.length;\n    const encodedPackets = new Array(length);\n    let count = 0;\n    packets.forEach((packet, i) => {\n        // force base64 encoding for binary packets\n        (0, encodePacket_js_1.default)(packet, false, encodedPacket => {\n            encodedPackets[i] = encodedPacket;\n            if (++count === length) {\n                callback(encodedPackets.join(SEPARATOR));\n            }\n        });\n    });\n};\nexports.encodePayload = encodePayload;\nconst decodePayload = (encodedPayload, binaryType) => {\n    const encodedPackets = encodedPayload.split(SEPARATOR);\n    const packets = [];\n    for (let i = 0; i < encodedPackets.length; i++) {\n        const decodedPacket = (0, decodePacket_js_1.default)(encodedPackets[i], binaryType);\n        packets.push(decodedPacket);\n        if (decodedPacket.type === "error") {\n            break;\n        }\n    }\n    return packets;\n};\nexports.decodePayload = decodePayload;\nexports.protocol = 4;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io-parser/build/cjs/index.js?')},"./node_modules/engine.io/build/engine.io.js":
/*!***************************************************!*\
  !*** ./node_modules/engine.io/build/engine.io.js ***!
  \***************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.protocol = exports.Transport = exports.Socket = exports.uServer = exports.parser = exports.attach = exports.listen = exports.transports = exports.Server = void 0;\nconst http_1 = __webpack_require__(/*! http */ "http");\nconst server_1 = __webpack_require__(/*! ./server */ "./node_modules/engine.io/build/server.js");\nObject.defineProperty(exports, "Server", ({ enumerable: true, get: function () { return server_1.Server; } }));\nconst index_1 = __webpack_require__(/*! ./transports/index */ "./node_modules/engine.io/build/transports/index.js");\nexports.transports = index_1.default;\nconst parser = __webpack_require__(/*! engine.io-parser */ "./node_modules/engine.io-parser/build/cjs/index.js");\nexports.parser = parser;\nvar userver_1 = __webpack_require__(/*! ./userver */ "./node_modules/engine.io/build/userver.js");\nObject.defineProperty(exports, "uServer", ({ enumerable: true, get: function () { return userver_1.uServer; } }));\nvar socket_1 = __webpack_require__(/*! ./socket */ "./node_modules/engine.io/build/socket.js");\nObject.defineProperty(exports, "Socket", ({ enumerable: true, get: function () { return socket_1.Socket; } }));\nvar transport_1 = __webpack_require__(/*! ./transport */ "./node_modules/engine.io/build/transport.js");\nObject.defineProperty(exports, "Transport", ({ enumerable: true, get: function () { return transport_1.Transport; } }));\nexports.protocol = parser.protocol;\n/**\n * Creates an http.Server exclusively used for WS upgrades.\n *\n * @param {Number} port\n * @param {Function} callback\n * @param {Object} options\n * @return {Server} websocket.io server\n * @api public\n */\nfunction listen(port, options, fn) {\n    if ("function" === typeof options) {\n        fn = options;\n        options = {};\n    }\n    const server = (0, http_1.createServer)(function (req, res) {\n        res.writeHead(501);\n        res.end("Not Implemented");\n    });\n    // create engine server\n    const engine = attach(server, options);\n    engine.httpServer = server;\n    server.listen(port, fn);\n    return engine;\n}\nexports.listen = listen;\n/**\n * Captures upgrade requests for a http.Server.\n *\n * @param {http.Server} server\n * @param {Object} options\n * @return {Server} engine server\n * @api public\n */\nfunction attach(server, options) {\n    const engine = new server_1.Server(options);\n    engine.attach(server, options);\n    return engine;\n}\nexports.attach = attach;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io/build/engine.io.js?')},"./node_modules/engine.io/build/parser-v3/index.js":
/*!*********************************************************!*\
  !*** ./node_modules/engine.io/build/parser-v3/index.js ***!
  \*********************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n// imported from https://github.com/socketio/engine.io-parser/tree/2.2.x\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.decodePayloadAsBinary = exports.encodePayloadAsBinary = exports.decodePayload = exports.encodePayload = exports.decodeBase64Packet = exports.decodePacket = exports.encodeBase64Packet = exports.encodePacket = exports.packets = exports.protocol = void 0;\n/**\n * Module dependencies.\n */\nvar utf8 = __webpack_require__(/*! ./utf8 */ \"./node_modules/engine.io/build/parser-v3/utf8.js\");\n/**\n * Current protocol version.\n */\nexports.protocol = 3;\nconst hasBinary = (packets) => {\n    for (const packet of packets) {\n        if (packet.data instanceof ArrayBuffer || ArrayBuffer.isView(packet.data)) {\n            return true;\n        }\n    }\n    return false;\n};\n/**\n * Packet types.\n */\nexports.packets = {\n    open: 0 // non-ws\n    ,\n    close: 1 // non-ws\n    ,\n    ping: 2,\n    pong: 3,\n    message: 4,\n    upgrade: 5,\n    noop: 6\n};\nvar packetslist = Object.keys(exports.packets);\n/**\n * Premade error packet.\n */\nvar err = { type: 'error', data: 'parser error' };\nconst EMPTY_BUFFER = Buffer.concat([]);\n/**\n * Encodes a packet.\n *\n *     <packet type id> [ <data> ]\n *\n * Example:\n *\n *     5hello world\n *     3\n *     4\n *\n * Binary is encoded in an identical principle\n *\n * @api private\n */\nfunction encodePacket(packet, supportsBinary, utf8encode, callback) {\n    if (typeof supportsBinary === 'function') {\n        callback = supportsBinary;\n        supportsBinary = null;\n    }\n    if (typeof utf8encode === 'function') {\n        callback = utf8encode;\n        utf8encode = null;\n    }\n    if (Buffer.isBuffer(packet.data)) {\n        return encodeBuffer(packet, supportsBinary, callback);\n    }\n    else if (packet.data && (packet.data.buffer || packet.data) instanceof ArrayBuffer) {\n        return encodeBuffer({ type: packet.type, data: arrayBufferToBuffer(packet.data) }, supportsBinary, callback);\n    }\n    // Sending data as a utf-8 string\n    var encoded = exports.packets[packet.type];\n    // data fragment is optional\n    if (undefined !== packet.data) {\n        encoded += utf8encode ? utf8.encode(String(packet.data), { strict: false }) : String(packet.data);\n    }\n    return callback('' + encoded);\n}\nexports.encodePacket = encodePacket;\n;\n/**\n * Encode Buffer data\n */\nfunction encodeBuffer(packet, supportsBinary, callback) {\n    if (!supportsBinary) {\n        return encodeBase64Packet(packet, callback);\n    }\n    var data = packet.data;\n    var typeBuffer = Buffer.allocUnsafe(1);\n    typeBuffer[0] = exports.packets[packet.type];\n    return callback(Buffer.concat([typeBuffer, data]));\n}\n/**\n * Encodes a packet with binary data in a base64 string\n *\n * @param {Object} packet, has `type` and `data`\n * @return {String} base64 encoded message\n */\nfunction encodeBase64Packet(packet, callback) {\n    var data = Buffer.isBuffer(packet.data) ? packet.data : arrayBufferToBuffer(packet.data);\n    var message = 'b' + exports.packets[packet.type];\n    message += data.toString('base64');\n    return callback(message);\n}\nexports.encodeBase64Packet = encodeBase64Packet;\n;\n/**\n * Decodes a packet. Data also available as an ArrayBuffer if requested.\n *\n * @return {Object} with `type` and `data` (if any)\n * @api private\n */\nfunction decodePacket(data, binaryType, utf8decode) {\n    if (data === undefined) {\n        return err;\n    }\n    var type;\n    // String data\n    if (typeof data === 'string') {\n        type = data.charAt(0);\n        if (type === 'b') {\n            return decodeBase64Packet(data.substr(1), binaryType);\n        }\n        if (utf8decode) {\n            data = tryDecode(data);\n            if (data === false) {\n                return err;\n            }\n        }\n        if (Number(type) != type || !packetslist[type]) {\n            return err;\n        }\n        if (data.length > 1) {\n            return { type: packetslist[type], data: data.substring(1) };\n        }\n        else {\n            return { type: packetslist[type] };\n        }\n    }\n    // Binary data\n    if (binaryType === 'arraybuffer') {\n        // wrap Buffer/ArrayBuffer data into an Uint8Array\n        var intArray = new Uint8Array(data);\n        type = intArray[0];\n        return { type: packetslist[type], data: intArray.buffer.slice(1) };\n    }\n    if (data instanceof ArrayBuffer) {\n        data = arrayBufferToBuffer(data);\n    }\n    type = data[0];\n    return { type: packetslist[type], data: data.slice(1) };\n}\nexports.decodePacket = decodePacket;\n;\nfunction tryDecode(data) {\n    try {\n        data = utf8.decode(data, { strict: false });\n    }\n    catch (e) {\n        return false;\n    }\n    return data;\n}\n/**\n * Decodes a packet encoded in a base64 string.\n *\n * @param {String} base64 encoded message\n * @return {Object} with `type` and `data` (if any)\n */\nfunction decodeBase64Packet(msg, binaryType) {\n    var type = packetslist[msg.charAt(0)];\n    var data = Buffer.from(msg.substr(1), 'base64');\n    if (binaryType === 'arraybuffer') {\n        var abv = new Uint8Array(data.length);\n        for (var i = 0; i < abv.length; i++) {\n            abv[i] = data[i];\n        }\n        // @ts-ignore\n        data = abv.buffer;\n    }\n    return { type: type, data: data };\n}\nexports.decodeBase64Packet = decodeBase64Packet;\n;\n/**\n * Encodes multiple messages (payload).\n *\n *     <length>:data\n *\n * Example:\n *\n *     11:hello world2:hi\n *\n * If any contents are binary, they will be encoded as base64 strings. Base64\n * encoded strings are marked with a b before the length specifier\n *\n * @param {Array} packets\n * @api private\n */\nfunction encodePayload(packets, supportsBinary, callback) {\n    if (typeof supportsBinary === 'function') {\n        callback = supportsBinary;\n        supportsBinary = null;\n    }\n    if (supportsBinary && hasBinary(packets)) {\n        return encodePayloadAsBinary(packets, callback);\n    }\n    if (!packets.length) {\n        return callback('0:');\n    }\n    function encodeOne(packet, doneCallback) {\n        encodePacket(packet, supportsBinary, false, function (message) {\n            doneCallback(null, setLengthHeader(message));\n        });\n    }\n    map(packets, encodeOne, function (err, results) {\n        return callback(results.join(''));\n    });\n}\nexports.encodePayload = encodePayload;\n;\nfunction setLengthHeader(message) {\n    return message.length + ':' + message;\n}\n/**\n * Async array map using after\n */\nfunction map(ary, each, done) {\n    const results = new Array(ary.length);\n    let count = 0;\n    for (let i = 0; i < ary.length; i++) {\n        each(ary[i], (error, msg) => {\n            results[i] = msg;\n            if (++count === ary.length) {\n                done(null, results);\n            }\n        });\n    }\n}\n/*\n * Decodes data when a payload is maybe expected. Possible binary contents are\n * decoded from their base64 representation\n *\n * @param {String} data, callback method\n * @api public\n */\nfunction decodePayload(data, binaryType, callback) {\n    if (typeof data !== 'string') {\n        return decodePayloadAsBinary(data, binaryType, callback);\n    }\n    if (typeof binaryType === 'function') {\n        callback = binaryType;\n        binaryType = null;\n    }\n    if (data === '') {\n        // parser error - ignoring payload\n        return callback(err, 0, 1);\n    }\n    var length = '', n, msg, packet;\n    for (var i = 0, l = data.length; i < l; i++) {\n        var chr = data.charAt(i);\n        if (chr !== ':') {\n            length += chr;\n            continue;\n        }\n        // @ts-ignore\n        if (length === '' || (length != (n = Number(length)))) {\n            // parser error - ignoring payload\n            return callback(err, 0, 1);\n        }\n        msg = data.substr(i + 1, n);\n        if (length != msg.length) {\n            // parser error - ignoring payload\n            return callback(err, 0, 1);\n        }\n        if (msg.length) {\n            packet = decodePacket(msg, binaryType, false);\n            if (err.type === packet.type && err.data === packet.data) {\n                // parser error in individual packet - ignoring payload\n                return callback(err, 0, 1);\n            }\n            var more = callback(packet, i + n, l);\n            if (false === more)\n                return;\n        }\n        // advance cursor\n        i += n;\n        length = '';\n    }\n    if (length !== '') {\n        // parser error - ignoring payload\n        return callback(err, 0, 1);\n    }\n}\nexports.decodePayload = decodePayload;\n;\n/**\n *\n * Converts a buffer to a utf8.js encoded string\n *\n * @api private\n */\nfunction bufferToString(buffer) {\n    var str = '';\n    for (var i = 0, l = buffer.length; i < l; i++) {\n        str += String.fromCharCode(buffer[i]);\n    }\n    return str;\n}\n/**\n *\n * Converts a utf8.js encoded string to a buffer\n *\n * @api private\n */\nfunction stringToBuffer(string) {\n    var buf = Buffer.allocUnsafe(string.length);\n    for (var i = 0, l = string.length; i < l; i++) {\n        buf.writeUInt8(string.charCodeAt(i), i);\n    }\n    return buf;\n}\n/**\n *\n * Converts an ArrayBuffer to a Buffer\n *\n * @api private\n */\nfunction arrayBufferToBuffer(data) {\n    // data is either an ArrayBuffer or ArrayBufferView.\n    var length = data.byteLength || data.length;\n    var offset = data.byteOffset || 0;\n    return Buffer.from(data.buffer || data, offset, length);\n}\n/**\n * Encodes multiple messages (payload) as binary.\n *\n * <1 = binary, 0 = string><number from 0-9><number from 0-9>[...]<number\n * 255><data>\n *\n * Example:\n * 1 3 255 1 2 3, if the binary contents are interpreted as 8 bit integers\n *\n * @param {Array} packets\n * @return {Buffer} encoded payload\n * @api private\n */\nfunction encodePayloadAsBinary(packets, callback) {\n    if (!packets.length) {\n        return callback(EMPTY_BUFFER);\n    }\n    map(packets, encodeOneBinaryPacket, function (err, results) {\n        return callback(Buffer.concat(results));\n    });\n}\nexports.encodePayloadAsBinary = encodePayloadAsBinary;\n;\nfunction encodeOneBinaryPacket(p, doneCallback) {\n    function onBinaryPacketEncode(packet) {\n        var encodingLength = '' + packet.length;\n        var sizeBuffer;\n        if (typeof packet === 'string') {\n            sizeBuffer = Buffer.allocUnsafe(encodingLength.length + 2);\n            sizeBuffer[0] = 0; // is a string (not true binary = 0)\n            for (var i = 0; i < encodingLength.length; i++) {\n                sizeBuffer[i + 1] = parseInt(encodingLength[i], 10);\n            }\n            sizeBuffer[sizeBuffer.length - 1] = 255;\n            return doneCallback(null, Buffer.concat([sizeBuffer, stringToBuffer(packet)]));\n        }\n        sizeBuffer = Buffer.allocUnsafe(encodingLength.length + 2);\n        sizeBuffer[0] = 1; // is binary (true binary = 1)\n        for (var i = 0; i < encodingLength.length; i++) {\n            sizeBuffer[i + 1] = parseInt(encodingLength[i], 10);\n        }\n        sizeBuffer[sizeBuffer.length - 1] = 255;\n        doneCallback(null, Buffer.concat([sizeBuffer, packet]));\n    }\n    encodePacket(p, true, true, onBinaryPacketEncode);\n}\n/*\n * Decodes data when a payload is maybe expected. Strings are decoded by\n * interpreting each byte as a key code for entries marked to start with 0. See\n * description of encodePayloadAsBinary\n\n * @param {Buffer} data, callback method\n * @api public\n */\nfunction decodePayloadAsBinary(data, binaryType, callback) {\n    if (typeof binaryType === 'function') {\n        callback = binaryType;\n        binaryType = null;\n    }\n    var bufferTail = data;\n    var buffers = [];\n    var i;\n    while (bufferTail.length > 0) {\n        var strLen = '';\n        var isString = bufferTail[0] === 0;\n        for (i = 1;; i++) {\n            if (bufferTail[i] === 255)\n                break;\n            // 310 = char length of Number.MAX_VALUE\n            if (strLen.length > 310) {\n                return callback(err, 0, 1);\n            }\n            strLen += '' + bufferTail[i];\n        }\n        bufferTail = bufferTail.slice(strLen.length + 1);\n        var msgLength = parseInt(strLen, 10);\n        var msg = bufferTail.slice(1, msgLength + 1);\n        if (isString)\n            msg = bufferToString(msg);\n        buffers.push(msg);\n        bufferTail = bufferTail.slice(msgLength + 1);\n    }\n    var total = buffers.length;\n    for (i = 0; i < total; i++) {\n        var buffer = buffers[i];\n        callback(decodePacket(buffer, binaryType, true), i, total);\n    }\n}\nexports.decodePayloadAsBinary = decodePayloadAsBinary;\n;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io/build/parser-v3/index.js?")},"./node_modules/engine.io/build/parser-v3/utf8.js":
/*!********************************************************!*\
  !*** ./node_modules/engine.io/build/parser-v3/utf8.js ***!
  \********************************************************/module=>{eval("/*! https://mths.be/utf8js v2.1.2 by @mathias */\nvar stringFromCharCode = String.fromCharCode;\n// Taken from https://mths.be/punycode\nfunction ucs2decode(string) {\n    var output = [];\n    var counter = 0;\n    var length = string.length;\n    var value;\n    var extra;\n    while (counter < length) {\n        value = string.charCodeAt(counter++);\n        if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n            // high surrogate, and there is a next character\n            extra = string.charCodeAt(counter++);\n            if ((extra & 0xFC00) == 0xDC00) { // low surrogate\n                output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n            }\n            else {\n                // unmatched surrogate; only append this code unit, in case the next\n                // code unit is the high surrogate of a surrogate pair\n                output.push(value);\n                counter--;\n            }\n        }\n        else {\n            output.push(value);\n        }\n    }\n    return output;\n}\n// Taken from https://mths.be/punycode\nfunction ucs2encode(array) {\n    var length = array.length;\n    var index = -1;\n    var value;\n    var output = '';\n    while (++index < length) {\n        value = array[index];\n        if (value > 0xFFFF) {\n            value -= 0x10000;\n            output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n            value = 0xDC00 | value & 0x3FF;\n        }\n        output += stringFromCharCode(value);\n    }\n    return output;\n}\nfunction checkScalarValue(codePoint, strict) {\n    if (codePoint >= 0xD800 && codePoint <= 0xDFFF) {\n        if (strict) {\n            throw Error('Lone surrogate U+' + codePoint.toString(16).toUpperCase() +\n                ' is not a scalar value');\n        }\n        return false;\n    }\n    return true;\n}\n/*--------------------------------------------------------------------------*/\nfunction createByte(codePoint, shift) {\n    return stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);\n}\nfunction encodeCodePoint(codePoint, strict) {\n    if ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence\n        return stringFromCharCode(codePoint);\n    }\n    var symbol = '';\n    if ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence\n        symbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);\n    }\n    else if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence\n        if (!checkScalarValue(codePoint, strict)) {\n            codePoint = 0xFFFD;\n        }\n        symbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);\n        symbol += createByte(codePoint, 6);\n    }\n    else if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence\n        symbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);\n        symbol += createByte(codePoint, 12);\n        symbol += createByte(codePoint, 6);\n    }\n    symbol += stringFromCharCode((codePoint & 0x3F) | 0x80);\n    return symbol;\n}\nfunction utf8encode(string, opts) {\n    opts = opts || {};\n    var strict = false !== opts.strict;\n    var codePoints = ucs2decode(string);\n    var length = codePoints.length;\n    var index = -1;\n    var codePoint;\n    var byteString = '';\n    while (++index < length) {\n        codePoint = codePoints[index];\n        byteString += encodeCodePoint(codePoint, strict);\n    }\n    return byteString;\n}\n/*--------------------------------------------------------------------------*/\nfunction readContinuationByte() {\n    if (byteIndex >= byteCount) {\n        throw Error('Invalid byte index');\n    }\n    var continuationByte = byteArray[byteIndex] & 0xFF;\n    byteIndex++;\n    if ((continuationByte & 0xC0) == 0x80) {\n        return continuationByte & 0x3F;\n    }\n    // If we end up here, it’s not a continuation byte\n    throw Error('Invalid continuation byte');\n}\nfunction decodeSymbol(strict) {\n    var byte1;\n    var byte2;\n    var byte3;\n    var byte4;\n    var codePoint;\n    if (byteIndex > byteCount) {\n        throw Error('Invalid byte index');\n    }\n    if (byteIndex == byteCount) {\n        return false;\n    }\n    // Read first byte\n    byte1 = byteArray[byteIndex] & 0xFF;\n    byteIndex++;\n    // 1-byte sequence (no continuation bytes)\n    if ((byte1 & 0x80) == 0) {\n        return byte1;\n    }\n    // 2-byte sequence\n    if ((byte1 & 0xE0) == 0xC0) {\n        byte2 = readContinuationByte();\n        codePoint = ((byte1 & 0x1F) << 6) | byte2;\n        if (codePoint >= 0x80) {\n            return codePoint;\n        }\n        else {\n            throw Error('Invalid continuation byte');\n        }\n    }\n    // 3-byte sequence (may include unpaired surrogates)\n    if ((byte1 & 0xF0) == 0xE0) {\n        byte2 = readContinuationByte();\n        byte3 = readContinuationByte();\n        codePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3;\n        if (codePoint >= 0x0800) {\n            return checkScalarValue(codePoint, strict) ? codePoint : 0xFFFD;\n        }\n        else {\n            throw Error('Invalid continuation byte');\n        }\n    }\n    // 4-byte sequence\n    if ((byte1 & 0xF8) == 0xF0) {\n        byte2 = readContinuationByte();\n        byte3 = readContinuationByte();\n        byte4 = readContinuationByte();\n        codePoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0C) |\n            (byte3 << 0x06) | byte4;\n        if (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\n            return codePoint;\n        }\n    }\n    throw Error('Invalid UTF-8 detected');\n}\nvar byteArray;\nvar byteCount;\nvar byteIndex;\nfunction utf8decode(byteString, opts) {\n    opts = opts || {};\n    var strict = false !== opts.strict;\n    byteArray = ucs2decode(byteString);\n    byteCount = byteArray.length;\n    byteIndex = 0;\n    var codePoints = [];\n    var tmp;\n    while ((tmp = decodeSymbol(strict)) !== false) {\n        codePoints.push(tmp);\n    }\n    return ucs2encode(codePoints);\n}\nmodule.exports = {\n    version: '2.1.2',\n    encode: utf8encode,\n    decode: utf8decode\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io/build/parser-v3/utf8.js?")},"./node_modules/engine.io/build/server.js":
/*!************************************************!*\
  !*** ./node_modules/engine.io/build/server.js ***!
  \************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.Server = exports.BaseServer = void 0;\nconst qs = __webpack_require__(/*! querystring */ "querystring");\nconst url_1 = __webpack_require__(/*! url */ "url");\nconst base64id = __webpack_require__(/*! base64id */ "./node_modules/base64id/lib/base64id.js");\nconst transports_1 = __webpack_require__(/*! ./transports */ "./node_modules/engine.io/build/transports/index.js");\nconst events_1 = __webpack_require__(/*! events */ "events");\nconst socket_1 = __webpack_require__(/*! ./socket */ "./node_modules/engine.io/build/socket.js");\nconst debug_1 = __webpack_require__(/*! debug */ "./node_modules/debug/src/index.js");\nconst cookie_1 = __webpack_require__(/*! cookie */ "./node_modules/cookie/index.js");\nconst ws_1 = __webpack_require__(/*! ws */ "./node_modules/engine.io/node_modules/ws/index.js");\nconst debug = (0, debug_1.default)("engine");\nclass BaseServer extends events_1.EventEmitter {\n    /**\n     * Server constructor.\n     *\n     * @param {Object} opts - options\n     * @api public\n     */\n    constructor(opts = {}) {\n        super();\n        this.clients = {};\n        this.clientsCount = 0;\n        this.opts = Object.assign({\n            wsEngine: ws_1.Server,\n            pingTimeout: 20000,\n            pingInterval: 25000,\n            upgradeTimeout: 10000,\n            maxHttpBufferSize: 1e6,\n            transports: Object.keys(transports_1.default),\n            allowUpgrades: true,\n            httpCompression: {\n                threshold: 1024\n            },\n            cors: false,\n            allowEIO3: false\n        }, opts);\n        if (opts.cookie) {\n            this.opts.cookie = Object.assign({\n                name: "io",\n                path: "/",\n                // @ts-ignore\n                httpOnly: opts.cookie.path !== false,\n                sameSite: "lax"\n            }, opts.cookie);\n        }\n        if (this.opts.cors) {\n            this.corsMiddleware = __webpack_require__(/*! cors */ "./node_modules/cors/lib/index.js")(this.opts.cors);\n        }\n        if (opts.perMessageDeflate) {\n            this.opts.perMessageDeflate = Object.assign({\n                threshold: 1024\n            }, opts.perMessageDeflate);\n        }\n        this.init();\n    }\n    /**\n     * Returns a list of available transports for upgrade given a certain transport.\n     *\n     * @return {Array}\n     * @api public\n     */\n    upgrades(transport) {\n        if (!this.opts.allowUpgrades)\n            return [];\n        return transports_1.default[transport].upgradesTo || [];\n    }\n    /**\n     * Verifies a request.\n     *\n     * @param {http.IncomingMessage}\n     * @return {Boolean} whether the request is valid\n     * @api private\n     */\n    verify(req, upgrade, fn) {\n        // transport check\n        const transport = req._query.transport;\n        if (!~this.opts.transports.indexOf(transport)) {\n            debug(\'unknown transport "%s"\', transport);\n            return fn(Server.errors.UNKNOWN_TRANSPORT, { transport });\n        }\n        // \'Origin\' header check\n        const isOriginInvalid = checkInvalidHeaderChar(req.headers.origin);\n        if (isOriginInvalid) {\n            const origin = req.headers.origin;\n            req.headers.origin = null;\n            debug("origin header invalid");\n            return fn(Server.errors.BAD_REQUEST, {\n                name: "INVALID_ORIGIN",\n                origin\n            });\n        }\n        // sid check\n        const sid = req._query.sid;\n        if (sid) {\n            if (!this.clients.hasOwnProperty(sid)) {\n                debug(\'unknown sid "%s"\', sid);\n                return fn(Server.errors.UNKNOWN_SID, {\n                    sid\n                });\n            }\n            const previousTransport = this.clients[sid].transport.name;\n            if (!upgrade && previousTransport !== transport) {\n                debug("bad request: unexpected transport without upgrade");\n                return fn(Server.errors.BAD_REQUEST, {\n                    name: "TRANSPORT_MISMATCH",\n                    transport,\n                    previousTransport\n                });\n            }\n        }\n        else {\n            // handshake is GET only\n            if ("GET" !== req.method) {\n                return fn(Server.errors.BAD_HANDSHAKE_METHOD, {\n                    method: req.method\n                });\n            }\n            if (transport === "websocket" && !upgrade) {\n                debug("invalid transport upgrade");\n                return fn(Server.errors.BAD_REQUEST, {\n                    name: "TRANSPORT_HANDSHAKE_ERROR"\n                });\n            }\n            if (!this.opts.allowRequest)\n                return fn();\n            return this.opts.allowRequest(req, (message, success) => {\n                if (!success) {\n                    return fn(Server.errors.FORBIDDEN, {\n                        message\n                    });\n                }\n                fn();\n            });\n        }\n        fn();\n    }\n    /**\n     * Closes all clients.\n     *\n     * @api public\n     */\n    close() {\n        debug("closing all open clients");\n        for (let i in this.clients) {\n            if (this.clients.hasOwnProperty(i)) {\n                this.clients[i].close(true);\n            }\n        }\n        this.cleanup();\n        return this;\n    }\n    /**\n     * generate a socket id.\n     * Overwrite this method to generate your custom socket id\n     *\n     * @param {Object} request object\n     * @api public\n     */\n    generateId(req) {\n        return base64id.generateId();\n    }\n    /**\n     * Handshakes a new client.\n     *\n     * @param {String} transport name\n     * @param {Object} request object\n     * @param {Function} closeConnection\n     *\n     * @api protected\n     */\n    async handshake(transportName, req, closeConnection) {\n        const protocol = req._query.EIO === "4" ? 4 : 3; // 3rd revision by default\n        if (protocol === 3 && !this.opts.allowEIO3) {\n            debug("unsupported protocol version");\n            this.emit("connection_error", {\n                req,\n                code: Server.errors.UNSUPPORTED_PROTOCOL_VERSION,\n                message: Server.errorMessages[Server.errors.UNSUPPORTED_PROTOCOL_VERSION],\n                context: {\n                    protocol\n                }\n            });\n            closeConnection(Server.errors.UNSUPPORTED_PROTOCOL_VERSION);\n            return;\n        }\n        let id;\n        try {\n            id = await this.generateId(req);\n        }\n        catch (e) {\n            debug("error while generating an id");\n            this.emit("connection_error", {\n                req,\n                code: Server.errors.BAD_REQUEST,\n                message: Server.errorMessages[Server.errors.BAD_REQUEST],\n                context: {\n                    name: "ID_GENERATION_ERROR",\n                    error: e\n                }\n            });\n            closeConnection(Server.errors.BAD_REQUEST);\n            return;\n        }\n        debug(\'handshaking client "%s"\', id);\n        try {\n            var transport = this.createTransport(transportName, req);\n            if ("polling" === transportName) {\n                transport.maxHttpBufferSize = this.opts.maxHttpBufferSize;\n                transport.httpCompression = this.opts.httpCompression;\n            }\n            else if ("websocket" === transportName) {\n                transport.perMessageDeflate = this.opts.perMessageDeflate;\n            }\n            if (req._query && req._query.b64) {\n                transport.supportsBinary = false;\n            }\n            else {\n                transport.supportsBinary = true;\n            }\n        }\n        catch (e) {\n            debug(\'error handshaking to transport "%s"\', transportName);\n            this.emit("connection_error", {\n                req,\n                code: Server.errors.BAD_REQUEST,\n                message: Server.errorMessages[Server.errors.BAD_REQUEST],\n                context: {\n                    name: "TRANSPORT_HANDSHAKE_ERROR",\n                    error: e\n                }\n            });\n            closeConnection(Server.errors.BAD_REQUEST);\n            return;\n        }\n        const socket = new socket_1.Socket(id, this, transport, req, protocol);\n        transport.on("headers", (headers, req) => {\n            const isInitialRequest = !req._query.sid;\n            if (isInitialRequest) {\n                if (this.opts.cookie) {\n                    headers["Set-Cookie"] = [\n                        // @ts-ignore\n                        (0, cookie_1.serialize)(this.opts.cookie.name, id, this.opts.cookie)\n                    ];\n                }\n                this.emit("initial_headers", headers, req);\n            }\n            this.emit("headers", headers, req);\n        });\n        transport.onRequest(req);\n        this.clients[id] = socket;\n        this.clientsCount++;\n        socket.once("close", () => {\n            delete this.clients[id];\n            this.clientsCount--;\n        });\n        this.emit("connection", socket);\n        return transport;\n    }\n}\nexports.BaseServer = BaseServer;\n/**\n * Protocol errors mappings.\n */\nBaseServer.errors = {\n    UNKNOWN_TRANSPORT: 0,\n    UNKNOWN_SID: 1,\n    BAD_HANDSHAKE_METHOD: 2,\n    BAD_REQUEST: 3,\n    FORBIDDEN: 4,\n    UNSUPPORTED_PROTOCOL_VERSION: 5\n};\nBaseServer.errorMessages = {\n    0: "Transport unknown",\n    1: "Session ID unknown",\n    2: "Bad handshake method",\n    3: "Bad request",\n    4: "Forbidden",\n    5: "Unsupported protocol version"\n};\nclass Server extends BaseServer {\n    /**\n     * Initialize websocket server\n     *\n     * @api protected\n     */\n    init() {\n        if (!~this.opts.transports.indexOf("websocket"))\n            return;\n        if (this.ws)\n            this.ws.close();\n        this.ws = new this.opts.wsEngine({\n            noServer: true,\n            clientTracking: false,\n            perMessageDeflate: this.opts.perMessageDeflate,\n            maxPayload: this.opts.maxHttpBufferSize\n        });\n        if (typeof this.ws.on === "function") {\n            this.ws.on("headers", (headersArray, req) => {\n                // note: \'ws\' uses an array of headers, while Engine.IO uses an object (response.writeHead() accepts both formats)\n                // we could also try to parse the array and then sync the values, but that will be error-prone\n                const additionalHeaders = {};\n                const isInitialRequest = !req._query.sid;\n                if (isInitialRequest) {\n                    this.emit("initial_headers", additionalHeaders, req);\n                }\n                this.emit("headers", additionalHeaders, req);\n                Object.keys(additionalHeaders).forEach(key => {\n                    headersArray.push(`${key}: ${additionalHeaders[key]}`);\n                });\n            });\n        }\n    }\n    cleanup() {\n        if (this.ws) {\n            debug("closing webSocketServer");\n            this.ws.close();\n            // don\'t delete this.ws because it can be used again if the http server starts listening again\n        }\n    }\n    /**\n     * Prepares a request by processing the query string.\n     *\n     * @api private\n     */\n    prepare(req) {\n        // try to leverage pre-existing `req._query` (e.g: from connect)\n        if (!req._query) {\n            req._query = ~req.url.indexOf("?") ? qs.parse((0, url_1.parse)(req.url).query) : {};\n        }\n    }\n    createTransport(transportName, req) {\n        return new transports_1.default[transportName](req);\n    }\n    /**\n     * Handles an Engine.IO HTTP request.\n     *\n     * @param {http.IncomingMessage} request\n     * @param {http.ServerResponse|http.OutgoingMessage} response\n     * @api public\n     */\n    handleRequest(req, res) {\n        debug(\'handling "%s" http request "%s"\', req.method, req.url);\n        this.prepare(req);\n        req.res = res;\n        const callback = (errorCode, errorContext) => {\n            if (errorCode !== undefined) {\n                this.emit("connection_error", {\n                    req,\n                    code: errorCode,\n                    message: Server.errorMessages[errorCode],\n                    context: errorContext\n                });\n                abortRequest(res, errorCode, errorContext);\n                return;\n            }\n            if (req._query.sid) {\n                debug("setting new request for existing client");\n                this.clients[req._query.sid].transport.onRequest(req);\n            }\n            else {\n                const closeConnection = (errorCode, errorContext) => abortRequest(res, errorCode, errorContext);\n                this.handshake(req._query.transport, req, closeConnection);\n            }\n        };\n        if (this.corsMiddleware) {\n            this.corsMiddleware.call(null, req, res, () => {\n                this.verify(req, false, callback);\n            });\n        }\n        else {\n            this.verify(req, false, callback);\n        }\n    }\n    /**\n     * Handles an Engine.IO HTTP Upgrade.\n     *\n     * @api public\n     */\n    handleUpgrade(req, socket, upgradeHead) {\n        this.prepare(req);\n        this.verify(req, true, (errorCode, errorContext) => {\n            if (errorCode) {\n                this.emit("connection_error", {\n                    req,\n                    code: errorCode,\n                    message: Server.errorMessages[errorCode],\n                    context: errorContext\n                });\n                abortUpgrade(socket, errorCode, errorContext);\n                return;\n            }\n            const head = Buffer.from(upgradeHead); // eslint-disable-line node/no-deprecated-api\n            upgradeHead = null;\n            // delegate to ws\n            this.ws.handleUpgrade(req, socket, head, websocket => {\n                this.onWebSocket(req, socket, websocket);\n            });\n        });\n    }\n    /**\n     * Called upon a ws.io connection.\n     *\n     * @param {ws.Socket} websocket\n     * @api private\n     */\n    onWebSocket(req, socket, websocket) {\n        websocket.on("error", onUpgradeError);\n        if (transports_1.default[req._query.transport] !== undefined &&\n            !transports_1.default[req._query.transport].prototype.handlesUpgrades) {\n            debug("transport doesnt handle upgraded requests");\n            websocket.close();\n            return;\n        }\n        // get client id\n        const id = req._query.sid;\n        // keep a reference to the ws.Socket\n        req.websocket = websocket;\n        if (id) {\n            const client = this.clients[id];\n            if (!client) {\n                debug("upgrade attempt for closed client");\n                websocket.close();\n            }\n            else if (client.upgrading) {\n                debug("transport has already been trying to upgrade");\n                websocket.close();\n            }\n            else if (client.upgraded) {\n                debug("transport had already been upgraded");\n                websocket.close();\n            }\n            else {\n                debug("upgrading existing transport");\n                // transport error handling takes over\n                websocket.removeListener("error", onUpgradeError);\n                const transport = this.createTransport(req._query.transport, req);\n                if (req._query && req._query.b64) {\n                    transport.supportsBinary = false;\n                }\n                else {\n                    transport.supportsBinary = true;\n                }\n                transport.perMessageDeflate = this.opts.perMessageDeflate;\n                client.maybeUpgrade(transport);\n            }\n        }\n        else {\n            const closeConnection = (errorCode, errorContext) => abortUpgrade(socket, errorCode, errorContext);\n            this.handshake(req._query.transport, req, closeConnection);\n        }\n        function onUpgradeError() {\n            debug("websocket error before upgrade");\n            // websocket.close() not needed\n        }\n    }\n    /**\n     * Captures upgrade requests for a http.Server.\n     *\n     * @param {http.Server} server\n     * @param {Object} options\n     * @api public\n     */\n    attach(server, options = {}) {\n        let path = (options.path || "/engine.io").replace(/\\/$/, "");\n        const destroyUpgradeTimeout = options.destroyUpgradeTimeout || 1000;\n        // normalize path\n        path += "/";\n        function check(req) {\n            return path === req.url.substr(0, path.length);\n        }\n        // cache and clean up listeners\n        const listeners = server.listeners("request").slice(0);\n        server.removeAllListeners("request");\n        server.on("close", this.close.bind(this));\n        server.on("listening", this.init.bind(this));\n        // add request handler\n        server.on("request", (req, res) => {\n            if (check(req)) {\n                debug(\'intercepting request for path "%s"\', path);\n                this.handleRequest(req, res);\n            }\n            else {\n                let i = 0;\n                const l = listeners.length;\n                for (; i < l; i++) {\n                    listeners[i].call(server, req, res);\n                }\n            }\n        });\n        if (~this.opts.transports.indexOf("websocket")) {\n            server.on("upgrade", (req, socket, head) => {\n                if (check(req)) {\n                    this.handleUpgrade(req, socket, head);\n                }\n                else if (false !== options.destroyUpgrade) {\n                    // default node behavior is to disconnect when no handlers\n                    // but by adding a handler, we prevent that\n                    // and if no eio thing handles the upgrade\n                    // then the socket needs to die!\n                    setTimeout(function () {\n                        // @ts-ignore\n                        if (socket.writable && socket.bytesWritten <= 0) {\n                            return socket.end();\n                        }\n                    }, destroyUpgradeTimeout);\n                }\n            });\n        }\n    }\n}\nexports.Server = Server;\n/**\n * Close the HTTP long-polling request\n *\n * @param res - the response object\n * @param errorCode - the error code\n * @param errorContext - additional error context\n *\n * @api private\n */\nfunction abortRequest(res, errorCode, errorContext) {\n    const statusCode = errorCode === Server.errors.FORBIDDEN ? 403 : 400;\n    const message = errorContext && errorContext.message\n        ? errorContext.message\n        : Server.errorMessages[errorCode];\n    res.writeHead(statusCode, { "Content-Type": "application/json" });\n    res.end(JSON.stringify({\n        code: errorCode,\n        message\n    }));\n}\n/**\n * Close the WebSocket connection\n *\n * @param {net.Socket} socket\n * @param {string} errorCode - the error code\n * @param {object} errorContext - additional error context\n *\n * @api private\n */\nfunction abortUpgrade(socket, errorCode, errorContext = {}) {\n    socket.on("error", () => {\n        debug("ignoring error from closed connection");\n    });\n    if (socket.writable) {\n        const message = errorContext.message || Server.errorMessages[errorCode];\n        const length = Buffer.byteLength(message);\n        socket.write("HTTP/1.1 400 Bad Request\\r\\n" +\n            "Connection: close\\r\\n" +\n            "Content-type: text/html\\r\\n" +\n            "Content-Length: " +\n            length +\n            "\\r\\n" +\n            "\\r\\n" +\n            message);\n    }\n    socket.destroy();\n}\n/* eslint-disable */\n/**\n * From https://github.com/nodejs/node/blob/v8.4.0/lib/_http_common.js#L303-L354\n *\n * True if val contains an invalid field-vchar\n *  field-value    = *( field-content / obs-fold )\n *  field-content  = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n *  field-vchar    = VCHAR / obs-text\n *\n * checkInvalidHeaderChar() is currently designed to be inlinable by v8,\n * so take care when making changes to the implementation so that the source\n * code size does not exceed v8\'s default max_inlined_source_size setting.\n **/\n// prettier-ignore\nconst validHdrChars = [\n    0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,\n    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // ... 255\n];\nfunction checkInvalidHeaderChar(val) {\n    val += "";\n    if (val.length < 1)\n        return false;\n    if (!validHdrChars[val.charCodeAt(0)]) {\n        debug(\'invalid header, index 0, char "%s"\', val.charCodeAt(0));\n        return true;\n    }\n    if (val.length < 2)\n        return false;\n    if (!validHdrChars[val.charCodeAt(1)]) {\n        debug(\'invalid header, index 1, char "%s"\', val.charCodeAt(1));\n        return true;\n    }\n    if (val.length < 3)\n        return false;\n    if (!validHdrChars[val.charCodeAt(2)]) {\n        debug(\'invalid header, index 2, char "%s"\', val.charCodeAt(2));\n        return true;\n    }\n    if (val.length < 4)\n        return false;\n    if (!validHdrChars[val.charCodeAt(3)]) {\n        debug(\'invalid header, index 3, char "%s"\', val.charCodeAt(3));\n        return true;\n    }\n    for (let i = 4; i < val.length; ++i) {\n        if (!validHdrChars[val.charCodeAt(i)]) {\n            debug(\'invalid header, index "%i", char "%s"\', i, val.charCodeAt(i));\n            return true;\n        }\n    }\n    return false;\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io/build/server.js?')},"./node_modules/engine.io/build/socket.js":
/*!************************************************!*\
  !*** ./node_modules/engine.io/build/socket.js ***!
  \************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.Socket = void 0;\nconst events_1 = __webpack_require__(/*! events */ "events");\nconst debug_1 = __webpack_require__(/*! debug */ "./node_modules/debug/src/index.js");\nconst timers_1 = __webpack_require__(/*! timers */ "timers");\nconst debug = (0, debug_1.default)("engine:socket");\nclass Socket extends events_1.EventEmitter {\n    /**\n     * Client class (abstract).\n     *\n     * @api private\n     */\n    constructor(id, server, transport, req, protocol) {\n        super();\n        this.id = id;\n        this.server = server;\n        this.upgrading = false;\n        this.upgraded = false;\n        this.readyState = "opening";\n        this.writeBuffer = [];\n        this.packetsFn = [];\n        this.sentCallbackFn = [];\n        this.cleanupFn = [];\n        this.request = req;\n        this.protocol = protocol;\n        // Cache IP since it might not be in the req later\n        if (req.websocket && req.websocket._socket) {\n            this.remoteAddress = req.websocket._socket.remoteAddress;\n        }\n        else {\n            this.remoteAddress = req.connection.remoteAddress;\n        }\n        this.checkIntervalTimer = null;\n        this.upgradeTimeoutTimer = null;\n        this.pingTimeoutTimer = null;\n        this.pingIntervalTimer = null;\n        this.setTransport(transport);\n        this.onOpen();\n    }\n    get readyState() {\n        return this._readyState;\n    }\n    set readyState(state) {\n        debug("readyState updated from %s to %s", this._readyState, state);\n        this._readyState = state;\n    }\n    /**\n     * Called upon transport considered open.\n     *\n     * @api private\n     */\n    onOpen() {\n        this.readyState = "open";\n        // sends an `open` packet\n        this.transport.sid = this.id;\n        this.sendPacket("open", JSON.stringify({\n            sid: this.id,\n            upgrades: this.getAvailableUpgrades(),\n            pingInterval: this.server.opts.pingInterval,\n            pingTimeout: this.server.opts.pingTimeout,\n            maxPayload: this.server.opts.maxHttpBufferSize\n        }));\n        if (this.server.opts.initialPacket) {\n            this.sendPacket("message", this.server.opts.initialPacket);\n        }\n        this.emit("open");\n        if (this.protocol === 3) {\n            // in protocol v3, the client sends a ping, and the server answers with a pong\n            this.resetPingTimeout(this.server.opts.pingInterval + this.server.opts.pingTimeout);\n        }\n        else {\n            // in protocol v4, the server sends a ping, and the client answers with a pong\n            this.schedulePing();\n        }\n    }\n    /**\n     * Called upon transport packet.\n     *\n     * @param {Object} packet\n     * @api private\n     */\n    onPacket(packet) {\n        if ("open" !== this.readyState) {\n            return debug("packet received with closed socket");\n        }\n        // export packet event\n        debug(`received packet ${packet.type}`);\n        this.emit("packet", packet);\n        // Reset ping timeout on any packet, incoming data is a good sign of\n        // other side\'s liveness\n        this.resetPingTimeout(this.server.opts.pingInterval + this.server.opts.pingTimeout);\n        switch (packet.type) {\n            case "ping":\n                if (this.transport.protocol !== 3) {\n                    this.onError("invalid heartbeat direction");\n                    return;\n                }\n                debug("got ping");\n                this.sendPacket("pong");\n                this.emit("heartbeat");\n                break;\n            case "pong":\n                if (this.transport.protocol === 3) {\n                    this.onError("invalid heartbeat direction");\n                    return;\n                }\n                debug("got pong");\n                this.pingIntervalTimer.refresh();\n                this.emit("heartbeat");\n                break;\n            case "error":\n                this.onClose("parse error");\n                break;\n            case "message":\n                this.emit("data", packet.data);\n                this.emit("message", packet.data);\n                break;\n        }\n    }\n    /**\n     * Called upon transport error.\n     *\n     * @param {Error} error object\n     * @api private\n     */\n    onError(err) {\n        debug("transport error");\n        this.onClose("transport error", err);\n    }\n    /**\n     * Pings client every `this.pingInterval` and expects response\n     * within `this.pingTimeout` or closes connection.\n     *\n     * @api private\n     */\n    schedulePing() {\n        this.pingIntervalTimer = (0, timers_1.setTimeout)(() => {\n            debug("writing ping packet - expecting pong within %sms", this.server.opts.pingTimeout);\n            this.sendPacket("ping");\n            this.resetPingTimeout(this.server.opts.pingTimeout);\n        }, this.server.opts.pingInterval);\n    }\n    /**\n     * Resets ping timeout.\n     *\n     * @api private\n     */\n    resetPingTimeout(timeout) {\n        (0, timers_1.clearTimeout)(this.pingTimeoutTimer);\n        this.pingTimeoutTimer = (0, timers_1.setTimeout)(() => {\n            if (this.readyState === "closed")\n                return;\n            this.onClose("ping timeout");\n        }, timeout);\n    }\n    /**\n     * Attaches handlers for the given transport.\n     *\n     * @param {Transport} transport\n     * @api private\n     */\n    setTransport(transport) {\n        const onError = this.onError.bind(this);\n        const onPacket = this.onPacket.bind(this);\n        const flush = this.flush.bind(this);\n        const onClose = this.onClose.bind(this, "transport close");\n        this.transport = transport;\n        this.transport.once("error", onError);\n        this.transport.on("packet", onPacket);\n        this.transport.on("drain", flush);\n        this.transport.once("close", onClose);\n        // this function will manage packet events (also message callbacks)\n        this.setupSendCallback();\n        this.cleanupFn.push(function () {\n            transport.removeListener("error", onError);\n            transport.removeListener("packet", onPacket);\n            transport.removeListener("drain", flush);\n            transport.removeListener("close", onClose);\n        });\n    }\n    /**\n     * Upgrades socket to the given transport\n     *\n     * @param {Transport} transport\n     * @api private\n     */\n    maybeUpgrade(transport) {\n        debug(\'might upgrade socket transport from "%s" to "%s"\', this.transport.name, transport.name);\n        this.upgrading = true;\n        // set transport upgrade timer\n        this.upgradeTimeoutTimer = (0, timers_1.setTimeout)(() => {\n            debug("client did not complete upgrade - closing transport");\n            cleanup();\n            if ("open" === transport.readyState) {\n                transport.close();\n            }\n        }, this.server.opts.upgradeTimeout);\n        const onPacket = packet => {\n            if ("ping" === packet.type && "probe" === packet.data) {\n                debug("got probe ping packet, sending pong");\n                transport.send([{ type: "pong", data: "probe" }]);\n                this.emit("upgrading", transport);\n                clearInterval(this.checkIntervalTimer);\n                this.checkIntervalTimer = setInterval(check, 100);\n            }\n            else if ("upgrade" === packet.type && this.readyState !== "closed") {\n                debug("got upgrade packet - upgrading");\n                cleanup();\n                this.transport.discard();\n                this.upgraded = true;\n                this.clearTransport();\n                this.setTransport(transport);\n                this.emit("upgrade", transport);\n                this.flush();\n                if (this.readyState === "closing") {\n                    transport.close(() => {\n                        this.onClose("forced close");\n                    });\n                }\n            }\n            else {\n                cleanup();\n                transport.close();\n            }\n        };\n        // we force a polling cycle to ensure a fast upgrade\n        const check = () => {\n            if ("polling" === this.transport.name && this.transport.writable) {\n                debug("writing a noop packet to polling for fast upgrade");\n                this.transport.send([{ type: "noop" }]);\n            }\n        };\n        const cleanup = () => {\n            this.upgrading = false;\n            clearInterval(this.checkIntervalTimer);\n            this.checkIntervalTimer = null;\n            (0, timers_1.clearTimeout)(this.upgradeTimeoutTimer);\n            this.upgradeTimeoutTimer = null;\n            transport.removeListener("packet", onPacket);\n            transport.removeListener("close", onTransportClose);\n            transport.removeListener("error", onError);\n            this.removeListener("close", onClose);\n        };\n        const onError = err => {\n            debug("client did not complete upgrade - %s", err);\n            cleanup();\n            transport.close();\n            transport = null;\n        };\n        const onTransportClose = () => {\n            onError("transport closed");\n        };\n        const onClose = () => {\n            onError("socket closed");\n        };\n        transport.on("packet", onPacket);\n        transport.once("close", onTransportClose);\n        transport.once("error", onError);\n        this.once("close", onClose);\n    }\n    /**\n     * Clears listeners and timers associated with current transport.\n     *\n     * @api private\n     */\n    clearTransport() {\n        let cleanup;\n        const toCleanUp = this.cleanupFn.length;\n        for (let i = 0; i < toCleanUp; i++) {\n            cleanup = this.cleanupFn.shift();\n            cleanup();\n        }\n        // silence further transport errors and prevent uncaught exceptions\n        this.transport.on("error", function () {\n            debug("error triggered by discarded transport");\n        });\n        // ensure transport won\'t stay open\n        this.transport.close();\n        (0, timers_1.clearTimeout)(this.pingTimeoutTimer);\n    }\n    /**\n     * Called upon transport considered closed.\n     * Possible reasons: `ping timeout`, `client error`, `parse error`,\n     * `transport error`, `server close`, `transport close`\n     */\n    onClose(reason, description) {\n        if ("closed" !== this.readyState) {\n            this.readyState = "closed";\n            // clear timers\n            (0, timers_1.clearTimeout)(this.pingIntervalTimer);\n            (0, timers_1.clearTimeout)(this.pingTimeoutTimer);\n            clearInterval(this.checkIntervalTimer);\n            this.checkIntervalTimer = null;\n            (0, timers_1.clearTimeout)(this.upgradeTimeoutTimer);\n            // clean writeBuffer in next tick, so developers can still\n            // grab the writeBuffer on \'close\' event\n            process.nextTick(() => {\n                this.writeBuffer = [];\n            });\n            this.packetsFn = [];\n            this.sentCallbackFn = [];\n            this.clearTransport();\n            this.emit("close", reason, description);\n        }\n    }\n    /**\n     * Setup and manage send callback\n     *\n     * @api private\n     */\n    setupSendCallback() {\n        // the message was sent successfully, execute the callback\n        const onDrain = () => {\n            if (this.sentCallbackFn.length > 0) {\n                const seqFn = this.sentCallbackFn.splice(0, 1)[0];\n                if ("function" === typeof seqFn) {\n                    debug("executing send callback");\n                    seqFn(this.transport);\n                }\n                else if (Array.isArray(seqFn)) {\n                    debug("executing batch send callback");\n                    const l = seqFn.length;\n                    let i = 0;\n                    for (; i < l; i++) {\n                        if ("function" === typeof seqFn[i]) {\n                            seqFn[i](this.transport);\n                        }\n                    }\n                }\n            }\n        };\n        this.transport.on("drain", onDrain);\n        this.cleanupFn.push(() => {\n            this.transport.removeListener("drain", onDrain);\n        });\n    }\n    /**\n     * Sends a message packet.\n     *\n     * @param {Object} data\n     * @param {Object} options\n     * @param {Function} callback\n     * @return {Socket} for chaining\n     * @api public\n     */\n    send(data, options, callback) {\n        this.sendPacket("message", data, options, callback);\n        return this;\n    }\n    write(data, options, callback) {\n        this.sendPacket("message", data, options, callback);\n        return this;\n    }\n    /**\n     * Sends a packet.\n     *\n     * @param {String} type - packet type\n     * @param {String} data\n     * @param {Object} options\n     * @param {Function} callback\n     *\n     * @api private\n     */\n    sendPacket(type, data, options, callback) {\n        if ("function" === typeof options) {\n            callback = options;\n            options = null;\n        }\n        options = options || {};\n        options.compress = false !== options.compress;\n        if ("closing" !== this.readyState && "closed" !== this.readyState) {\n            debug(\'sending packet "%s" (%s)\', type, data);\n            const packet = {\n                type,\n                options\n            };\n            if (data)\n                packet.data = data;\n            // exports packetCreate event\n            this.emit("packetCreate", packet);\n            this.writeBuffer.push(packet);\n            // add send callback to object, if defined\n            if (callback)\n                this.packetsFn.push(callback);\n            this.flush();\n        }\n    }\n    /**\n     * Attempts to flush the packets buffer.\n     *\n     * @api private\n     */\n    flush() {\n        if ("closed" !== this.readyState &&\n            this.transport.writable &&\n            this.writeBuffer.length) {\n            debug("flushing buffer to transport");\n            this.emit("flush", this.writeBuffer);\n            this.server.emit("flush", this, this.writeBuffer);\n            const wbuf = this.writeBuffer;\n            this.writeBuffer = [];\n            if (!this.transport.supportsFraming) {\n                this.sentCallbackFn.push(this.packetsFn);\n            }\n            else {\n                this.sentCallbackFn.push.apply(this.sentCallbackFn, this.packetsFn);\n            }\n            this.packetsFn = [];\n            this.transport.send(wbuf);\n            this.emit("drain");\n            this.server.emit("drain", this);\n        }\n    }\n    /**\n     * Get available upgrades for this socket.\n     *\n     * @api private\n     */\n    getAvailableUpgrades() {\n        const availableUpgrades = [];\n        const allUpgrades = this.server.upgrades(this.transport.name);\n        let i = 0;\n        const l = allUpgrades.length;\n        for (; i < l; ++i) {\n            const upg = allUpgrades[i];\n            if (this.server.opts.transports.indexOf(upg) !== -1) {\n                availableUpgrades.push(upg);\n            }\n        }\n        return availableUpgrades;\n    }\n    /**\n     * Closes the socket and underlying transport.\n     *\n     * @param {Boolean} discard - optional, discard the transport\n     * @return {Socket} for chaining\n     * @api public\n     */\n    close(discard) {\n        if ("open" !== this.readyState)\n            return;\n        this.readyState = "closing";\n        if (this.writeBuffer.length) {\n            this.once("drain", this.closeTransport.bind(this, discard));\n            return;\n        }\n        this.closeTransport(discard);\n    }\n    /**\n     * Closes the underlying transport.\n     *\n     * @param {Boolean} discard\n     * @api private\n     */\n    closeTransport(discard) {\n        if (discard)\n            this.transport.discard();\n        this.transport.close(this.onClose.bind(this, "forced close"));\n    }\n}\nexports.Socket = Socket;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io/build/socket.js?')},"./node_modules/engine.io/build/transport.js":
/*!***************************************************!*\
  !*** ./node_modules/engine.io/build/transport.js ***!
  \***************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.Transport = void 0;\nconst events_1 = __webpack_require__(/*! events */ "events");\nconst parser_v4 = __webpack_require__(/*! engine.io-parser */ "./node_modules/engine.io-parser/build/cjs/index.js");\nconst parser_v3 = __webpack_require__(/*! ./parser-v3/index */ "./node_modules/engine.io/build/parser-v3/index.js");\nconst debug_1 = __webpack_require__(/*! debug */ "./node_modules/debug/src/index.js");\nconst debug = (0, debug_1.default)("engine:transport");\n/**\n * Noop function.\n *\n * @api private\n */\nfunction noop() { }\nclass Transport extends events_1.EventEmitter {\n    /**\n     * Transport constructor.\n     *\n     * @param {http.IncomingMessage} request\n     * @api public\n     */\n    constructor(req) {\n        super();\n        this.readyState = "open";\n        this.discarded = false;\n        this.protocol = req._query.EIO === "4" ? 4 : 3; // 3rd revision by default\n        this.parser = this.protocol === 4 ? parser_v4 : parser_v3;\n    }\n    get readyState() {\n        return this._readyState;\n    }\n    set readyState(state) {\n        debug("readyState updated from %s to %s (%s)", this._readyState, state, this.name);\n        this._readyState = state;\n    }\n    /**\n     * Flags the transport as discarded.\n     *\n     * @api private\n     */\n    discard() {\n        this.discarded = true;\n    }\n    /**\n     * Called with an incoming HTTP request.\n     *\n     * @param {http.IncomingMessage} request\n     * @api protected\n     */\n    onRequest(req) {\n        debug("setting request");\n        this.req = req;\n    }\n    /**\n     * Closes the transport.\n     *\n     * @api private\n     */\n    close(fn) {\n        if ("closed" === this.readyState || "closing" === this.readyState)\n            return;\n        this.readyState = "closing";\n        this.doClose(fn || noop);\n    }\n    /**\n     * Called with a transport error.\n     *\n     * @param {String} message error\n     * @param {Object} error description\n     * @api protected\n     */\n    onError(msg, desc) {\n        if (this.listeners("error").length) {\n            const err = new Error(msg);\n            // @ts-ignore\n            err.type = "TransportError";\n            // @ts-ignore\n            err.description = desc;\n            this.emit("error", err);\n        }\n        else {\n            debug("ignored transport error %s (%s)", msg, desc);\n        }\n    }\n    /**\n     * Called with parsed out a packets from the data stream.\n     *\n     * @param {Object} packet\n     * @api protected\n     */\n    onPacket(packet) {\n        this.emit("packet", packet);\n    }\n    /**\n     * Called with the encoded packet data.\n     *\n     * @param {String} data\n     * @api protected\n     */\n    onData(data) {\n        this.onPacket(this.parser.decodePacket(data));\n    }\n    /**\n     * Called upon transport close.\n     *\n     * @api protected\n     */\n    onClose() {\n        this.readyState = "closed";\n        this.emit("close");\n    }\n}\nexports.Transport = Transport;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io/build/transport.js?')},"./node_modules/engine.io/build/transports-uws/index.js":
/*!**************************************************************!*\
  !*** ./node_modules/engine.io/build/transports-uws/index.js ***!
  \**************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst polling_1 = __webpack_require__(/*! ./polling */ "./node_modules/engine.io/build/transports-uws/polling.js");\nconst websocket_1 = __webpack_require__(/*! ./websocket */ "./node_modules/engine.io/build/transports-uws/websocket.js");\nexports["default"] = {\n    polling: polling_1.Polling,\n    websocket: websocket_1.WebSocket\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io/build/transports-uws/index.js?')},"./node_modules/engine.io/build/transports-uws/polling.js":
/*!****************************************************************!*\
  !*** ./node_modules/engine.io/build/transports-uws/polling.js ***!
  \****************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.Polling = void 0;\nconst transport_1 = __webpack_require__(/*! ../transport */ "./node_modules/engine.io/build/transport.js");\nconst zlib_1 = __webpack_require__(/*! zlib */ "zlib");\nconst accepts = __webpack_require__(/*! accepts */ "./node_modules/accepts/index.js");\nconst debug_1 = __webpack_require__(/*! debug */ "./node_modules/debug/src/index.js");\nconst debug = (0, debug_1.default)("engine:polling");\nconst compressionMethods = {\n    gzip: zlib_1.createGzip,\n    deflate: zlib_1.createDeflate\n};\nclass Polling extends transport_1.Transport {\n    /**\n     * HTTP polling constructor.\n     *\n     * @api public.\n     */\n    constructor(req) {\n        super(req);\n        this.closeTimeout = 30 * 1000;\n    }\n    /**\n     * Transport name\n     *\n     * @api public\n     */\n    get name() {\n        return "polling";\n    }\n    get supportsFraming() {\n        return false;\n    }\n    /**\n     * Overrides onRequest.\n     *\n     * @param req\n     *\n     * @api private\n     */\n    onRequest(req) {\n        const res = req.res;\n        if (req.getMethod() === "get") {\n            this.onPollRequest(req, res);\n        }\n        else if (req.getMethod() === "post") {\n            this.onDataRequest(req, res);\n        }\n        else {\n            res.writeStatus("500 Internal Server Error");\n            res.end();\n        }\n    }\n    /**\n     * The client sends a request awaiting for us to send data.\n     *\n     * @api private\n     */\n    onPollRequest(req, res) {\n        if (this.req) {\n            debug("request overlap");\n            // assert: this.res, \'.req and .res should be (un)set together\'\n            this.onError("overlap from client");\n            res.writeStatus("500 Internal Server Error");\n            res.end();\n            return;\n        }\n        debug("setting request");\n        this.req = req;\n        this.res = res;\n        const onClose = () => {\n            this.writable = false;\n            this.onError("poll connection closed prematurely");\n        };\n        const cleanup = () => {\n            this.req = this.res = null;\n        };\n        req.cleanup = cleanup;\n        res.onAborted(onClose);\n        this.writable = true;\n        this.emit("drain");\n        // if we\'re still writable but had a pending close, trigger an empty send\n        if (this.writable && this.shouldClose) {\n            debug("triggering empty send to append close packet");\n            this.send([{ type: "noop" }]);\n        }\n    }\n    /**\n     * The client sends a request with data.\n     *\n     * @api private\n     */\n    onDataRequest(req, res) {\n        if (this.dataReq) {\n            // assert: this.dataRes, \'.dataReq and .dataRes should be (un)set together\'\n            this.onError("data request overlap from client");\n            res.writeStatus("500 Internal Server Error");\n            res.end();\n            return;\n        }\n        const expectedContentLength = Number(req.headers["content-length"]);\n        if (!expectedContentLength) {\n            this.onError("content-length header required");\n            res.writeStatus("411 Length Required").end();\n            return;\n        }\n        if (expectedContentLength > this.maxHttpBufferSize) {\n            this.onError("payload too large");\n            res.writeStatus("413 Payload Too Large").end();\n            return;\n        }\n        const isBinary = "application/octet-stream" === req.headers["content-type"];\n        if (isBinary && this.protocol === 4) {\n            return this.onError("invalid content");\n        }\n        this.dataReq = req;\n        this.dataRes = res;\n        let buffer;\n        let offset = 0;\n        const headers = {\n            // text/html is required instead of text/plain to avoid an\n            // unwanted download dialog on certain user-agents (GH-43)\n            "Content-Type": "text/html"\n        };\n        this.headers(req, headers);\n        for (let key in headers) {\n            res.writeHeader(key, String(headers[key]));\n        }\n        const onEnd = buffer => {\n            this.onData(buffer.toString());\n            this.onDataRequestCleanup();\n            res.end("ok");\n        };\n        res.onAborted(() => {\n            this.onDataRequestCleanup();\n            this.onError("data request connection closed prematurely");\n        });\n        res.onData((arrayBuffer, isLast) => {\n            const totalLength = offset + arrayBuffer.byteLength;\n            if (totalLength > expectedContentLength) {\n                this.onError("content-length mismatch");\n                res.close(); // calls onAborted\n                return;\n            }\n            if (!buffer) {\n                if (isLast) {\n                    onEnd(Buffer.from(arrayBuffer));\n                    return;\n                }\n                buffer = Buffer.allocUnsafe(expectedContentLength);\n            }\n            Buffer.from(arrayBuffer).copy(buffer, offset);\n            if (isLast) {\n                if (totalLength != expectedContentLength) {\n                    this.onError("content-length mismatch");\n                    res.writeStatus("400 Content-Length Mismatch").end();\n                    this.onDataRequestCleanup();\n                    return;\n                }\n                onEnd(buffer);\n                return;\n            }\n            offset = totalLength;\n        });\n    }\n    /**\n     * Cleanup request.\n     *\n     * @api private\n     */\n    onDataRequestCleanup() {\n        this.dataReq = this.dataRes = null;\n    }\n    /**\n     * Processes the incoming data payload.\n     *\n     * @param {String} encoded payload\n     * @api private\n     */\n    onData(data) {\n        debug(\'received "%s"\', data);\n        const callback = packet => {\n            if ("close" === packet.type) {\n                debug("got xhr close packet");\n                this.onClose();\n                return false;\n            }\n            this.onPacket(packet);\n        };\n        if (this.protocol === 3) {\n            this.parser.decodePayload(data, callback);\n        }\n        else {\n            this.parser.decodePayload(data).forEach(callback);\n        }\n    }\n    /**\n     * Overrides onClose.\n     *\n     * @api private\n     */\n    onClose() {\n        if (this.writable) {\n            // close pending poll request\n            this.send([{ type: "noop" }]);\n        }\n        super.onClose();\n    }\n    /**\n     * Writes a packet payload.\n     *\n     * @param {Object} packet\n     * @api private\n     */\n    send(packets) {\n        this.writable = false;\n        if (this.shouldClose) {\n            debug("appending close packet to payload");\n            packets.push({ type: "close" });\n            this.shouldClose();\n            this.shouldClose = null;\n        }\n        const doWrite = data => {\n            const compress = packets.some(packet => {\n                return packet.options && packet.options.compress;\n            });\n            this.write(data, { compress });\n        };\n        if (this.protocol === 3) {\n            this.parser.encodePayload(packets, this.supportsBinary, doWrite);\n        }\n        else {\n            this.parser.encodePayload(packets, doWrite);\n        }\n    }\n    /**\n     * Writes data as response to poll request.\n     *\n     * @param {String} data\n     * @param {Object} options\n     * @api private\n     */\n    write(data, options) {\n        debug(\'writing "%s"\', data);\n        this.doWrite(data, options, () => {\n            this.req.cleanup();\n        });\n    }\n    /**\n     * Performs the write.\n     *\n     * @api private\n     */\n    doWrite(data, options, callback) {\n        // explicit UTF-8 is required for pages not served under utf\n        const isString = typeof data === "string";\n        const contentType = isString\n            ? "text/plain; charset=UTF-8"\n            : "application/octet-stream";\n        const headers = {\n            "Content-Type": contentType\n        };\n        const respond = data => {\n            this.headers(this.req, headers);\n            Object.keys(headers).forEach(key => {\n                this.res.writeHeader(key, String(headers[key]));\n            });\n            this.res.end(data);\n            callback();\n        };\n        if (!this.httpCompression || !options.compress) {\n            respond(data);\n            return;\n        }\n        const len = isString ? Buffer.byteLength(data) : data.length;\n        if (len < this.httpCompression.threshold) {\n            respond(data);\n            return;\n        }\n        const encoding = accepts(this.req).encodings(["gzip", "deflate"]);\n        if (!encoding) {\n            respond(data);\n            return;\n        }\n        this.compress(data, encoding, (err, data) => {\n            if (err) {\n                this.res.writeStatus("500 Internal Server Error");\n                this.res.end();\n                callback(err);\n                return;\n            }\n            headers["Content-Encoding"] = encoding;\n            respond(data);\n        });\n    }\n    /**\n     * Compresses data.\n     *\n     * @api private\n     */\n    compress(data, encoding, callback) {\n        debug("compressing");\n        const buffers = [];\n        let nread = 0;\n        compressionMethods[encoding](this.httpCompression)\n            .on("error", callback)\n            .on("data", function (chunk) {\n            buffers.push(chunk);\n            nread += chunk.length;\n        })\n            .on("end", function () {\n            callback(null, Buffer.concat(buffers, nread));\n        })\n            .end(data);\n    }\n    /**\n     * Closes the transport.\n     *\n     * @api private\n     */\n    doClose(fn) {\n        debug("closing");\n        let closeTimeoutTimer;\n        const onClose = () => {\n            clearTimeout(closeTimeoutTimer);\n            fn();\n            this.onClose();\n        };\n        if (this.writable) {\n            debug("transport writable - closing right away");\n            this.send([{ type: "close" }]);\n            onClose();\n        }\n        else if (this.discarded) {\n            debug("transport discarded - closing right away");\n            onClose();\n        }\n        else {\n            debug("transport not writable - buffering orderly close");\n            this.shouldClose = onClose;\n            closeTimeoutTimer = setTimeout(onClose, this.closeTimeout);\n        }\n    }\n    /**\n     * Returns headers for a response.\n     *\n     * @param req - request\n     * @param {Object} extra headers\n     * @api private\n     */\n    headers(req, headers) {\n        headers = headers || {};\n        // prevent XSS warnings on IE\n        // https://github.com/LearnBoost/socket.io/pull/1333\n        const ua = req.headers["user-agent"];\n        if (ua && (~ua.indexOf(";MSIE") || ~ua.indexOf("Trident/"))) {\n            headers["X-XSS-Protection"] = "0";\n        }\n        this.emit("headers", headers, req);\n        return headers;\n    }\n}\nexports.Polling = Polling;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io/build/transports-uws/polling.js?')},"./node_modules/engine.io/build/transports-uws/websocket.js":
/*!******************************************************************!*\
  !*** ./node_modules/engine.io/build/transports-uws/websocket.js ***!
  \******************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.WebSocket = void 0;\nconst transport_1 = __webpack_require__(/*! ../transport */ "./node_modules/engine.io/build/transport.js");\nconst debug_1 = __webpack_require__(/*! debug */ "./node_modules/debug/src/index.js");\nconst debug = (0, debug_1.default)("engine:ws");\nclass WebSocket extends transport_1.Transport {\n    /**\n     * WebSocket transport\n     *\n     * @param req\n     * @api public\n     */\n    constructor(req) {\n        super(req);\n        this.writable = false;\n        this.perMessageDeflate = null;\n    }\n    /**\n     * Transport name\n     *\n     * @api public\n     */\n    get name() {\n        return "websocket";\n    }\n    /**\n     * Advertise upgrade support.\n     *\n     * @api public\n     */\n    get handlesUpgrades() {\n        return true;\n    }\n    /**\n     * Advertise framing support.\n     *\n     * @api public\n     */\n    get supportsFraming() {\n        return true;\n    }\n    /**\n     * Writes a packet payload.\n     *\n     * @param {Array} packets\n     * @api private\n     */\n    send(packets) {\n        const packet = packets.shift();\n        if (typeof packet === "undefined") {\n            this.writable = true;\n            this.emit("drain");\n            return;\n        }\n        // always creates a new object since ws modifies it\n        const opts = {};\n        if (packet.options) {\n            opts.compress = packet.options.compress;\n        }\n        const send = data => {\n            const isBinary = typeof data !== "string";\n            const compress = this.perMessageDeflate &&\n                Buffer.byteLength(data) > this.perMessageDeflate.threshold;\n            debug(\'writing "%s"\', data);\n            this.writable = false;\n            this.socket.send(data, isBinary, compress);\n            this.send(packets);\n        };\n        if (packet.options && typeof packet.options.wsPreEncoded === "string") {\n            send(packet.options.wsPreEncoded);\n        }\n        else {\n            this.parser.encodePacket(packet, this.supportsBinary, send);\n        }\n    }\n    /**\n     * Closes the transport.\n     *\n     * @api private\n     */\n    doClose(fn) {\n        debug("closing");\n        fn && fn();\n        // call fn first since socket.close() immediately emits a "close" event\n        this.socket.close();\n    }\n}\nexports.WebSocket = WebSocket;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io/build/transports-uws/websocket.js?')},"./node_modules/engine.io/build/transports/index.js":
/*!**********************************************************!*\
  !*** ./node_modules/engine.io/build/transports/index.js ***!
  \**********************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst polling_1 = __webpack_require__(/*! ./polling */ "./node_modules/engine.io/build/transports/polling.js");\nconst polling_jsonp_1 = __webpack_require__(/*! ./polling-jsonp */ "./node_modules/engine.io/build/transports/polling-jsonp.js");\nconst websocket_1 = __webpack_require__(/*! ./websocket */ "./node_modules/engine.io/build/transports/websocket.js");\nexports["default"] = {\n    polling: polling,\n    websocket: websocket_1.WebSocket\n};\n/**\n * Polling polymorphic constructor.\n *\n * @api private\n */\nfunction polling(req) {\n    if ("string" === typeof req._query.j) {\n        return new polling_jsonp_1.JSONP(req);\n    }\n    else {\n        return new polling_1.Polling(req);\n    }\n}\npolling.upgradesTo = ["websocket"];\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io/build/transports/index.js?')},"./node_modules/engine.io/build/transports/polling-jsonp.js":
/*!******************************************************************!*\
  !*** ./node_modules/engine.io/build/transports/polling-jsonp.js ***!
  \******************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.JSONP = void 0;\nconst polling_1 = __webpack_require__(/*! ./polling */ "./node_modules/engine.io/build/transports/polling.js");\nconst qs = __webpack_require__(/*! querystring */ "querystring");\nconst rDoubleSlashes = /\\\\\\\\n/g;\nconst rSlashes = /(\\\\)?\\\\n/g;\nclass JSONP extends polling_1.Polling {\n    /**\n     * JSON-P polling transport.\n     *\n     * @api public\n     */\n    constructor(req) {\n        super(req);\n        this.head = "___eio[" + (req._query.j || "").replace(/[^0-9]/g, "") + "](";\n        this.foot = ");";\n    }\n    /**\n     * Handles incoming data.\n     * Due to a bug in \\n handling by browsers, we expect a escaped string.\n     *\n     * @api private\n     */\n    onData(data) {\n        // we leverage the qs module so that we get built-in DoS protection\n        // and the fast alternative to decodeURIComponent\n        data = qs.parse(data).d;\n        if ("string" === typeof data) {\n            // client will send already escaped newlines as \\\\\\\\n and newlines as \\\\n\n            // \\\\n must be replaced with \\n and \\\\\\\\n with \\\\n\n            data = data.replace(rSlashes, function (match, slashes) {\n                return slashes ? match : "\\n";\n            });\n            super.onData(data.replace(rDoubleSlashes, "\\\\n"));\n        }\n    }\n    /**\n     * Performs the write.\n     *\n     * @api private\n     */\n    doWrite(data, options, callback) {\n        // we must output valid javascript, not valid json\n        // see: http://timelessrepo.com/json-isnt-a-javascript-subset\n        const js = JSON.stringify(data)\n            .replace(/\\u2028/g, "\\\\u2028")\n            .replace(/\\u2029/g, "\\\\u2029");\n        // prepare response\n        data = this.head + js + this.foot;\n        super.doWrite(data, options, callback);\n    }\n}\nexports.JSONP = JSONP;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io/build/transports/polling-jsonp.js?')},"./node_modules/engine.io/build/transports/polling.js":
/*!************************************************************!*\
  !*** ./node_modules/engine.io/build/transports/polling.js ***!
  \************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.Polling = void 0;\nconst transport_1 = __webpack_require__(/*! ../transport */ "./node_modules/engine.io/build/transport.js");\nconst zlib_1 = __webpack_require__(/*! zlib */ "zlib");\nconst accepts = __webpack_require__(/*! accepts */ "./node_modules/accepts/index.js");\nconst debug_1 = __webpack_require__(/*! debug */ "./node_modules/debug/src/index.js");\nconst debug = (0, debug_1.default)("engine:polling");\nconst compressionMethods = {\n    gzip: zlib_1.createGzip,\n    deflate: zlib_1.createDeflate\n};\nclass Polling extends transport_1.Transport {\n    /**\n     * HTTP polling constructor.\n     *\n     * @api public.\n     */\n    constructor(req) {\n        super(req);\n        this.closeTimeout = 30 * 1000;\n    }\n    /**\n     * Transport name\n     *\n     * @api public\n     */\n    get name() {\n        return "polling";\n    }\n    get supportsFraming() {\n        return false;\n    }\n    /**\n     * Overrides onRequest.\n     *\n     * @param {http.IncomingMessage}\n     * @api private\n     */\n    onRequest(req) {\n        const res = req.res;\n        if ("GET" === req.method) {\n            this.onPollRequest(req, res);\n        }\n        else if ("POST" === req.method) {\n            this.onDataRequest(req, res);\n        }\n        else {\n            res.writeHead(500);\n            res.end();\n        }\n    }\n    /**\n     * The client sends a request awaiting for us to send data.\n     *\n     * @api private\n     */\n    onPollRequest(req, res) {\n        if (this.req) {\n            debug("request overlap");\n            // assert: this.res, \'.req and .res should be (un)set together\'\n            this.onError("overlap from client");\n            res.writeHead(500);\n            res.end();\n            return;\n        }\n        debug("setting request");\n        this.req = req;\n        this.res = res;\n        const onClose = () => {\n            this.onError("poll connection closed prematurely");\n        };\n        const cleanup = () => {\n            req.removeListener("close", onClose);\n            this.req = this.res = null;\n        };\n        req.cleanup = cleanup;\n        req.on("close", onClose);\n        this.writable = true;\n        this.emit("drain");\n        // if we\'re still writable but had a pending close, trigger an empty send\n        if (this.writable && this.shouldClose) {\n            debug("triggering empty send to append close packet");\n            this.send([{ type: "noop" }]);\n        }\n    }\n    /**\n     * The client sends a request with data.\n     *\n     * @api private\n     */\n    onDataRequest(req, res) {\n        if (this.dataReq) {\n            // assert: this.dataRes, \'.dataReq and .dataRes should be (un)set together\'\n            this.onError("data request overlap from client");\n            res.writeHead(500);\n            res.end();\n            return;\n        }\n        const isBinary = "application/octet-stream" === req.headers["content-type"];\n        if (isBinary && this.protocol === 4) {\n            return this.onError("invalid content");\n        }\n        this.dataReq = req;\n        this.dataRes = res;\n        let chunks = isBinary ? Buffer.concat([]) : "";\n        const cleanup = () => {\n            req.removeListener("data", onData);\n            req.removeListener("end", onEnd);\n            req.removeListener("close", onClose);\n            this.dataReq = this.dataRes = chunks = null;\n        };\n        const onClose = () => {\n            cleanup();\n            this.onError("data request connection closed prematurely");\n        };\n        const onData = data => {\n            let contentLength;\n            if (isBinary) {\n                chunks = Buffer.concat([chunks, data]);\n                contentLength = chunks.length;\n            }\n            else {\n                chunks += data;\n                contentLength = Buffer.byteLength(chunks);\n            }\n            if (contentLength > this.maxHttpBufferSize) {\n                res.writeHead(413).end();\n                cleanup();\n            }\n        };\n        const onEnd = () => {\n            this.onData(chunks);\n            const headers = {\n                // text/html is required instead of text/plain to avoid an\n                // unwanted download dialog on certain user-agents (GH-43)\n                "Content-Type": "text/html",\n                "Content-Length": 2\n            };\n            res.writeHead(200, this.headers(req, headers));\n            res.end("ok");\n            cleanup();\n        };\n        req.on("close", onClose);\n        if (!isBinary)\n            req.setEncoding("utf8");\n        req.on("data", onData);\n        req.on("end", onEnd);\n    }\n    /**\n     * Processes the incoming data payload.\n     *\n     * @param {String} encoded payload\n     * @api private\n     */\n    onData(data) {\n        debug(\'received "%s"\', data);\n        const callback = packet => {\n            if ("close" === packet.type) {\n                debug("got xhr close packet");\n                this.onClose();\n                return false;\n            }\n            this.onPacket(packet);\n        };\n        if (this.protocol === 3) {\n            this.parser.decodePayload(data, callback);\n        }\n        else {\n            this.parser.decodePayload(data).forEach(callback);\n        }\n    }\n    /**\n     * Overrides onClose.\n     *\n     * @api private\n     */\n    onClose() {\n        if (this.writable) {\n            // close pending poll request\n            this.send([{ type: "noop" }]);\n        }\n        super.onClose();\n    }\n    /**\n     * Writes a packet payload.\n     *\n     * @param {Object} packet\n     * @api private\n     */\n    send(packets) {\n        this.writable = false;\n        if (this.shouldClose) {\n            debug("appending close packet to payload");\n            packets.push({ type: "close" });\n            this.shouldClose();\n            this.shouldClose = null;\n        }\n        const doWrite = data => {\n            const compress = packets.some(packet => {\n                return packet.options && packet.options.compress;\n            });\n            this.write(data, { compress });\n        };\n        if (this.protocol === 3) {\n            this.parser.encodePayload(packets, this.supportsBinary, doWrite);\n        }\n        else {\n            this.parser.encodePayload(packets, doWrite);\n        }\n    }\n    /**\n     * Writes data as response to poll request.\n     *\n     * @param {String} data\n     * @param {Object} options\n     * @api private\n     */\n    write(data, options) {\n        debug(\'writing "%s"\', data);\n        this.doWrite(data, options, () => {\n            this.req.cleanup();\n        });\n    }\n    /**\n     * Performs the write.\n     *\n     * @api private\n     */\n    doWrite(data, options, callback) {\n        // explicit UTF-8 is required for pages not served under utf\n        const isString = typeof data === "string";\n        const contentType = isString\n            ? "text/plain; charset=UTF-8"\n            : "application/octet-stream";\n        const headers = {\n            "Content-Type": contentType\n        };\n        const respond = data => {\n            headers["Content-Length"] =\n                "string" === typeof data ? Buffer.byteLength(data) : data.length;\n            this.res.writeHead(200, this.headers(this.req, headers));\n            this.res.end(data);\n            callback();\n        };\n        if (!this.httpCompression || !options.compress) {\n            respond(data);\n            return;\n        }\n        const len = isString ? Buffer.byteLength(data) : data.length;\n        if (len < this.httpCompression.threshold) {\n            respond(data);\n            return;\n        }\n        const encoding = accepts(this.req).encodings(["gzip", "deflate"]);\n        if (!encoding) {\n            respond(data);\n            return;\n        }\n        this.compress(data, encoding, (err, data) => {\n            if (err) {\n                this.res.writeHead(500);\n                this.res.end();\n                callback(err);\n                return;\n            }\n            headers["Content-Encoding"] = encoding;\n            respond(data);\n        });\n    }\n    /**\n     * Compresses data.\n     *\n     * @api private\n     */\n    compress(data, encoding, callback) {\n        debug("compressing");\n        const buffers = [];\n        let nread = 0;\n        compressionMethods[encoding](this.httpCompression)\n            .on("error", callback)\n            .on("data", function (chunk) {\n            buffers.push(chunk);\n            nread += chunk.length;\n        })\n            .on("end", function () {\n            callback(null, Buffer.concat(buffers, nread));\n        })\n            .end(data);\n    }\n    /**\n     * Closes the transport.\n     *\n     * @api private\n     */\n    doClose(fn) {\n        debug("closing");\n        let closeTimeoutTimer;\n        if (this.dataReq) {\n            debug("aborting ongoing data request");\n            this.dataReq.destroy();\n        }\n        const onClose = () => {\n            clearTimeout(closeTimeoutTimer);\n            fn();\n            this.onClose();\n        };\n        if (this.writable) {\n            debug("transport writable - closing right away");\n            this.send([{ type: "close" }]);\n            onClose();\n        }\n        else if (this.discarded) {\n            debug("transport discarded - closing right away");\n            onClose();\n        }\n        else {\n            debug("transport not writable - buffering orderly close");\n            this.shouldClose = onClose;\n            closeTimeoutTimer = setTimeout(onClose, this.closeTimeout);\n        }\n    }\n    /**\n     * Returns headers for a response.\n     *\n     * @param {http.IncomingMessage} request\n     * @param {Object} extra headers\n     * @api private\n     */\n    headers(req, headers) {\n        headers = headers || {};\n        // prevent XSS warnings on IE\n        // https://github.com/LearnBoost/socket.io/pull/1333\n        const ua = req.headers["user-agent"];\n        if (ua && (~ua.indexOf(";MSIE") || ~ua.indexOf("Trident/"))) {\n            headers["X-XSS-Protection"] = "0";\n        }\n        this.emit("headers", headers, req);\n        return headers;\n    }\n}\nexports.Polling = Polling;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io/build/transports/polling.js?')},"./node_modules/engine.io/build/transports/websocket.js":
/*!**************************************************************!*\
  !*** ./node_modules/engine.io/build/transports/websocket.js ***!
  \**************************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.WebSocket = void 0;\nconst transport_1 = __webpack_require__(/*! ../transport */ "./node_modules/engine.io/build/transport.js");\nconst debug_1 = __webpack_require__(/*! debug */ "./node_modules/debug/src/index.js");\nconst debug = (0, debug_1.default)("engine:ws");\nclass WebSocket extends transport_1.Transport {\n    /**\n     * WebSocket transport\n     *\n     * @param {http.IncomingMessage}\n     * @api public\n     */\n    constructor(req) {\n        super(req);\n        this.socket = req.websocket;\n        this.socket.on("message", (data, isBinary) => {\n            const message = isBinary ? data : data.toString();\n            debug(\'received "%s"\', message);\n            super.onData(message);\n        });\n        this.socket.once("close", this.onClose.bind(this));\n        this.socket.on("error", this.onError.bind(this));\n        this.writable = true;\n        this.perMessageDeflate = null;\n    }\n    /**\n     * Transport name\n     *\n     * @api public\n     */\n    get name() {\n        return "websocket";\n    }\n    /**\n     * Advertise upgrade support.\n     *\n     * @api public\n     */\n    get handlesUpgrades() {\n        return true;\n    }\n    /**\n     * Advertise framing support.\n     *\n     * @api public\n     */\n    get supportsFraming() {\n        return true;\n    }\n    /**\n     * Writes a packet payload.\n     *\n     * @param {Array} packets\n     * @api private\n     */\n    send(packets) {\n        const packet = packets.shift();\n        if (typeof packet === "undefined") {\n            this.writable = true;\n            this.emit("drain");\n            return;\n        }\n        // always creates a new object since ws modifies it\n        const opts = {};\n        if (packet.options) {\n            opts.compress = packet.options.compress;\n        }\n        const send = data => {\n            if (this.perMessageDeflate) {\n                const len = "string" === typeof data ? Buffer.byteLength(data) : data.length;\n                if (len < this.perMessageDeflate.threshold) {\n                    opts.compress = false;\n                }\n            }\n            debug(\'writing "%s"\', data);\n            this.writable = false;\n            this.socket.send(data, opts, err => {\n                if (err)\n                    return this.onError("write error", err.stack);\n                this.send(packets);\n            });\n        };\n        if (packet.options && typeof packet.options.wsPreEncoded === "string") {\n            send(packet.options.wsPreEncoded);\n        }\n        else {\n            this.parser.encodePacket(packet, this.supportsBinary, send);\n        }\n    }\n    /**\n     * Closes the transport.\n     *\n     * @api private\n     */\n    doClose(fn) {\n        debug("closing");\n        this.socket.close();\n        fn && fn();\n    }\n}\nexports.WebSocket = WebSocket;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io/build/transports/websocket.js?')},"./node_modules/engine.io/build/userver.js":
/*!*************************************************!*\
  !*** ./node_modules/engine.io/build/userver.js ***!
  \*************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.uServer = void 0;\nconst debug_1 = __webpack_require__(/*! debug */ "./node_modules/debug/src/index.js");\nconst server_1 = __webpack_require__(/*! ./server */ "./node_modules/engine.io/build/server.js");\nconst transports_uws_1 = __webpack_require__(/*! ./transports-uws */ "./node_modules/engine.io/build/transports-uws/index.js");\nconst debug = (0, debug_1.default)("engine:uws");\nclass uServer extends server_1.BaseServer {\n    init() { }\n    cleanup() { }\n    /**\n     * Prepares a request by processing the query string.\n     *\n     * @api private\n     */\n    prepare(req, res) {\n        req.method = req.getMethod().toUpperCase();\n        const params = new URLSearchParams(req.getQuery());\n        req._query = Object.fromEntries(params.entries());\n        req.headers = {};\n        req.forEach((key, value) => {\n            req.headers[key] = value;\n        });\n        req.connection = {\n            remoteAddress: Buffer.from(res.getRemoteAddressAsText()).toString()\n        };\n        res.onAborted(() => {\n            debug("response has been aborted");\n        });\n    }\n    createTransport(transportName, req) {\n        return new transports_uws_1.default[transportName](req);\n    }\n    /**\n     * Attach the engine to a µWebSockets.js server\n     * @param app\n     * @param options\n     */\n    attach(app /* : TemplatedApp */, options = {}) {\n        const path = (options.path || "/engine.io").replace(/\\/$/, "") + "/";\n        app\n            .any(path, this.handleRequest.bind(this))\n            //\n            .ws(path, {\n            compression: options.compression,\n            idleTimeout: options.idleTimeout,\n            maxBackpressure: options.maxBackpressure,\n            maxPayloadLength: this.opts.maxHttpBufferSize,\n            upgrade: this.handleUpgrade.bind(this),\n            open: ws => {\n                ws.transport.socket = ws;\n                ws.transport.writable = true;\n                ws.transport.emit("drain");\n            },\n            message: (ws, message, isBinary) => {\n                ws.transport.onData(isBinary ? message : Buffer.from(message).toString());\n            },\n            close: (ws, code, message) => {\n                ws.transport.onClose(code, message);\n            }\n        });\n    }\n    handleRequest(res, req) {\n        debug(\'handling "%s" http request "%s"\', req.getMethod(), req.getUrl());\n        this.prepare(req, res);\n        req.res = res;\n        const callback = (errorCode, errorContext) => {\n            if (errorCode !== undefined) {\n                this.emit("connection_error", {\n                    req,\n                    code: errorCode,\n                    message: server_1.Server.errorMessages[errorCode],\n                    context: errorContext\n                });\n                this.abortRequest(req.res, errorCode, errorContext);\n                return;\n            }\n            if (req._query.sid) {\n                debug("setting new request for existing client");\n                this.clients[req._query.sid].transport.onRequest(req);\n            }\n            else {\n                const closeConnection = (errorCode, errorContext) => this.abortRequest(res, errorCode, errorContext);\n                this.handshake(req._query.transport, req, closeConnection);\n            }\n        };\n        if (this.corsMiddleware) {\n            // needed to buffer headers until the status is computed\n            req.res = new ResponseWrapper(res);\n            this.corsMiddleware.call(null, req, req.res, () => {\n                this.verify(req, false, callback);\n            });\n        }\n        else {\n            this.verify(req, false, callback);\n        }\n    }\n    handleUpgrade(res, req, context) {\n        debug("on upgrade");\n        this.prepare(req, res);\n        // @ts-ignore\n        req.res = res;\n        this.verify(req, true, async (errorCode, errorContext) => {\n            if (errorCode) {\n                this.emit("connection_error", {\n                    req,\n                    code: errorCode,\n                    message: server_1.Server.errorMessages[errorCode],\n                    context: errorContext\n                });\n                this.abortRequest(res, errorCode, errorContext);\n                return;\n            }\n            const id = req._query.sid;\n            let transport;\n            if (id) {\n                const client = this.clients[id];\n                if (!client) {\n                    debug("upgrade attempt for closed client");\n                    res.close();\n                }\n                else if (client.upgrading) {\n                    debug("transport has already been trying to upgrade");\n                    res.close();\n                }\n                else if (client.upgraded) {\n                    debug("transport had already been upgraded");\n                    res.close();\n                }\n                else {\n                    debug("upgrading existing transport");\n                    transport = this.createTransport(req._query.transport, req);\n                    client.maybeUpgrade(transport);\n                }\n            }\n            else {\n                transport = await this.handshake(req._query.transport, req, (errorCode, errorContext) => this.abortRequest(res, errorCode, errorContext));\n                if (!transport) {\n                    return;\n                }\n            }\n            res.upgrade({\n                transport\n            }, req.getHeader("sec-websocket-key"), req.getHeader("sec-websocket-protocol"), req.getHeader("sec-websocket-extensions"), context);\n        });\n    }\n    abortRequest(res, errorCode, errorContext) {\n        const statusCode = errorCode === server_1.Server.errors.FORBIDDEN\n            ? "403 Forbidden"\n            : "400 Bad Request";\n        const message = errorContext && errorContext.message\n            ? errorContext.message\n            : server_1.Server.errorMessages[errorCode];\n        res.writeStatus(statusCode);\n        res.writeHeader("Content-Type", "application/json");\n        res.end(JSON.stringify({\n            code: errorCode,\n            message\n        }));\n    }\n}\nexports.uServer = uServer;\nclass ResponseWrapper {\n    constructor(res) {\n        this.res = res;\n        this.statusWritten = false;\n        this.headers = [];\n    }\n    set statusCode(status) {\n        this.writeStatus(status === 200 ? "200 OK" : "204 No Content");\n    }\n    setHeader(key, value) {\n        this.writeHeader(key, value);\n    }\n    // needed by vary: https://github.com/jshttp/vary/blob/5d725d059b3871025cf753e9dfa08924d0bcfa8f/index.js#L134\n    getHeader() { }\n    writeStatus(status) {\n        this.res.writeStatus(status);\n        this.statusWritten = true;\n        this.writeBufferedHeaders();\n    }\n    writeHeader(key, value) {\n        if (key === "Content-Length") {\n            // the content length is automatically added by uWebSockets.js\n            return;\n        }\n        if (this.statusWritten) {\n            this.res.writeHeader(key, value);\n        }\n        else {\n            this.headers.push([key, value]);\n        }\n    }\n    writeBufferedHeaders() {\n        this.headers.forEach(([key, value]) => {\n            this.res.writeHeader(key, value);\n        });\n    }\n    end(data) {\n        if (!this.statusWritten) {\n            // status will be inferred as "200 OK"\n            this.writeBufferedHeaders();\n        }\n        this.res.end(data);\n    }\n    onData(fn) {\n        this.res.onData(fn);\n    }\n    onAborted(fn) {\n        this.res.onAborted(fn);\n    }\n}\n\n\n//# sourceURL=webpack://txadmin/./node_modules/engine.io/build/userver.js?')},"./node_modules/es-abstract/2020/Call.js":
/*!***********************************************!*\
  !*** ./node_modules/es-abstract/2020/Call.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar GetIntrinsic = __webpack_require__(/*! get-intrinsic */ \"./node_modules/get-intrinsic/index.js\");\nvar callBound = __webpack_require__(/*! call-bind/callBound */ \"./node_modules/call-bind/callBound.js\");\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar IsArray = __webpack_require__(/*! ./IsArray */ \"./node_modules/es-abstract/2020/IsArray.js\");\n\nvar $apply = GetIntrinsic('%Reflect.apply%', true) || callBound('%Function.prototype.apply%');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-call\n\nmodule.exports = function Call(F, V) {\n\tvar argumentsList = arguments.length > 2 ? arguments[2] : [];\n\tif (!IsArray(argumentsList)) {\n\t\tthrow new $TypeError('Assertion failed: optional `argumentsList`, if provided, must be a List');\n\t}\n\treturn $apply(F, V, argumentsList);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/2020/Call.js?")},"./node_modules/es-abstract/2020/Get.js":
/*!**********************************************!*\
  !*** ./node_modules/es-abstract/2020/Get.js ***!
  \**********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar GetIntrinsic = __webpack_require__(/*! get-intrinsic */ \"./node_modules/get-intrinsic/index.js\");\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar inspect = __webpack_require__(/*! object-inspect */ \"./node_modules/object-inspect/index.js\");\n\nvar IsPropertyKey = __webpack_require__(/*! ./IsPropertyKey */ \"./node_modules/es-abstract/2020/IsPropertyKey.js\");\nvar Type = __webpack_require__(/*! ./Type */ \"./node_modules/es-abstract/2020/Type.js\");\n\n/**\n * 7.3.1 Get (O, P) - https://ecma-international.org/ecma-262/6.0/#sec-get-o-p\n * 1. Assert: Type(O) is Object.\n * 2. Assert: IsPropertyKey(P) is true.\n * 3. Return O.[[Get]](P, O).\n */\n\nmodule.exports = function Get(O, P) {\n\t// 7.3.1.1\n\tif (Type(O) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: Type(O) is not Object');\n\t}\n\t// 7.3.1.2\n\tif (!IsPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: IsPropertyKey(P) is not true, got ' + inspect(P));\n\t}\n\t// 7.3.1.3\n\treturn O[P];\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/2020/Get.js?")},"./node_modules/es-abstract/2020/HasProperty.js":
/*!******************************************************!*\
  !*** ./node_modules/es-abstract/2020/HasProperty.js ***!
  \******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar GetIntrinsic = __webpack_require__(/*! get-intrinsic */ \"./node_modules/get-intrinsic/index.js\");\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar IsPropertyKey = __webpack_require__(/*! ./IsPropertyKey */ \"./node_modules/es-abstract/2020/IsPropertyKey.js\");\nvar Type = __webpack_require__(/*! ./Type */ \"./node_modules/es-abstract/2020/Type.js\");\n\n// https://ecma-international.org/ecma-262/6.0/#sec-hasproperty\n\nmodule.exports = function HasProperty(O, P) {\n\tif (Type(O) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: `O` must be an Object');\n\t}\n\tif (!IsPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: `P` must be a Property Key');\n\t}\n\treturn P in O;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/2020/HasProperty.js?")},"./node_modules/es-abstract/2020/IsArray.js":
/*!**************************************************!*\
  !*** ./node_modules/es-abstract/2020/IsArray.js ***!
  \**************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar GetIntrinsic = __webpack_require__(/*! get-intrinsic */ \"./node_modules/get-intrinsic/index.js\");\n\nvar $Array = GetIntrinsic('%Array%');\n\n// eslint-disable-next-line global-require\nvar toStr = !$Array.isArray && __webpack_require__(/*! call-bind/callBound */ \"./node_modules/call-bind/callBound.js\")('Object.prototype.toString');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-isarray\n\nmodule.exports = $Array.isArray || function IsArray(argument) {\n\treturn toStr(argument) === '[object Array]';\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/2020/IsArray.js?")},"./node_modules/es-abstract/2020/IsCallable.js":
/*!*****************************************************!*\
  !*** ./node_modules/es-abstract/2020/IsCallable.js ***!
  \*****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\n// http://262.ecma-international.org/5.1/#sec-9.11\n\nmodule.exports = __webpack_require__(/*! is-callable */ "./node_modules/is-callable/index.js");\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/2020/IsCallable.js?')},"./node_modules/es-abstract/2020/IsPropertyKey.js":
/*!********************************************************!*\
  !*** ./node_modules/es-abstract/2020/IsPropertyKey.js ***!
  \********************************************************/module=>{"use strict";eval("\n\n// https://ecma-international.org/ecma-262/6.0/#sec-ispropertykey\n\nmodule.exports = function IsPropertyKey(argument) {\n\treturn typeof argument === 'string' || typeof argument === 'symbol';\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/2020/IsPropertyKey.js?")},"./node_modules/es-abstract/2020/LengthOfArrayLike.js":
/*!************************************************************!*\
  !*** ./node_modules/es-abstract/2020/LengthOfArrayLike.js ***!
  \************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar GetIntrinsic = __webpack_require__(/*! get-intrinsic */ \"./node_modules/get-intrinsic/index.js\");\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar Get = __webpack_require__(/*! ./Get */ \"./node_modules/es-abstract/2020/Get.js\");\nvar ToLength = __webpack_require__(/*! ./ToLength */ \"./node_modules/es-abstract/2020/ToLength.js\");\nvar Type = __webpack_require__(/*! ./Type */ \"./node_modules/es-abstract/2020/Type.js\");\n\n// https://262.ecma-international.org/11.0/#sec-lengthofarraylike\n\nmodule.exports = function LengthOfArrayLike(obj) {\n\tif (Type(obj) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: `obj` must be an Object');\n\t}\n\treturn ToLength(Get(obj, 'length'));\n};\n\n// TODO: use this all over\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/2020/LengthOfArrayLike.js?")},"./node_modules/es-abstract/2020/RequireObjectCoercible.js":
/*!*****************************************************************!*\
  !*** ./node_modules/es-abstract/2020/RequireObjectCoercible.js ***!
  \*****************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nmodule.exports = __webpack_require__(/*! ../5/CheckObjectCoercible */ "./node_modules/es-abstract/5/CheckObjectCoercible.js");\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/2020/RequireObjectCoercible.js?')},"./node_modules/es-abstract/2020/ToInteger.js":
/*!****************************************************!*\
  !*** ./node_modules/es-abstract/2020/ToInteger.js ***!
  \****************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nvar ES5ToInteger = __webpack_require__(/*! ../5/ToInteger */ "./node_modules/es-abstract/5/ToInteger.js");\n\nvar ToNumber = __webpack_require__(/*! ./ToNumber */ "./node_modules/es-abstract/2020/ToNumber.js");\n\n// https://262.ecma-international.org/11.0/#sec-tointeger\n\nmodule.exports = function ToInteger(value) {\n\tvar number = ToNumber(value);\n\tif (number !== 0) {\n\t\tnumber = ES5ToInteger(number);\n\t}\n\treturn number === 0 ? 0 : number;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/2020/ToInteger.js?')},"./node_modules/es-abstract/2020/ToLength.js":
/*!***************************************************!*\
  !*** ./node_modules/es-abstract/2020/ToLength.js ***!
  \***************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nvar MAX_SAFE_INTEGER = __webpack_require__(/*! ../helpers/maxSafeInteger */ "./node_modules/es-abstract/helpers/maxSafeInteger.js");\n\nvar ToInteger = __webpack_require__(/*! ./ToInteger */ "./node_modules/es-abstract/2020/ToInteger.js");\n\nmodule.exports = function ToLength(argument) {\n\tvar len = ToInteger(argument);\n\tif (len <= 0) { return 0; } // includes converting -0 to +0\n\tif (len > MAX_SAFE_INTEGER) { return MAX_SAFE_INTEGER; }\n\treturn len;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/2020/ToLength.js?')},"./node_modules/es-abstract/2020/ToNumber.js":
/*!***************************************************!*\
  !*** ./node_modules/es-abstract/2020/ToNumber.js ***!
  \***************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar GetIntrinsic = __webpack_require__(/*! get-intrinsic */ \"./node_modules/get-intrinsic/index.js\");\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $Number = GetIntrinsic('%Number%');\nvar $RegExp = GetIntrinsic('%RegExp%');\nvar $parseInteger = GetIntrinsic('%parseInt%');\n\nvar callBound = __webpack_require__(/*! call-bind/callBound */ \"./node_modules/call-bind/callBound.js\");\nvar regexTester = __webpack_require__(/*! ../helpers/regexTester */ \"./node_modules/es-abstract/helpers/regexTester.js\");\nvar isPrimitive = __webpack_require__(/*! ../helpers/isPrimitive */ \"./node_modules/es-abstract/helpers/isPrimitive.js\");\n\nvar $strSlice = callBound('String.prototype.slice');\nvar isBinary = regexTester(/^0b[01]+$/i);\nvar isOctal = regexTester(/^0o[0-7]+$/i);\nvar isInvalidHexLiteral = regexTester(/^[-+]0x[0-9a-f]+$/i);\nvar nonWS = ['\\u0085', '\\u200b', '\\ufffe'].join('');\nvar nonWSregex = new $RegExp('[' + nonWS + ']', 'g');\nvar hasNonWS = regexTester(nonWSregex);\n\n// whitespace from: https://es5.github.io/#x15.5.4.20\n// implementation from https://github.com/es-shims/es5-shim/blob/v3.4.0/es5-shim.js#L1304-L1324\nvar ws = [\n\t'\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003',\n\t'\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028',\n\t'\\u2029\\uFEFF'\n].join('');\nvar trimRegex = new RegExp('(^[' + ws + ']+)|([' + ws + ']+$)', 'g');\nvar $replace = callBound('String.prototype.replace');\nvar $trim = function (value) {\n\treturn $replace(value, trimRegex, '');\n};\n\nvar ToPrimitive = __webpack_require__(/*! ./ToPrimitive */ \"./node_modules/es-abstract/2020/ToPrimitive.js\");\n\n// https://ecma-international.org/ecma-262/6.0/#sec-tonumber\n\nmodule.exports = function ToNumber(argument) {\n\tvar value = isPrimitive(argument) ? argument : ToPrimitive(argument, $Number);\n\tif (typeof value === 'symbol') {\n\t\tthrow new $TypeError('Cannot convert a Symbol value to a number');\n\t}\n\tif (typeof value === 'bigint') {\n\t\tthrow new $TypeError('Conversion from \\'BigInt\\' to \\'number\\' is not allowed.');\n\t}\n\tif (typeof value === 'string') {\n\t\tif (isBinary(value)) {\n\t\t\treturn ToNumber($parseInteger($strSlice(value, 2), 2));\n\t\t} else if (isOctal(value)) {\n\t\t\treturn ToNumber($parseInteger($strSlice(value, 2), 8));\n\t\t} else if (hasNonWS(value) || isInvalidHexLiteral(value)) {\n\t\t\treturn NaN;\n\t\t}\n\t\tvar trimmed = $trim(value);\n\t\tif (trimmed !== value) {\n\t\t\treturn ToNumber(trimmed);\n\t\t}\n\n\t}\n\treturn $Number(value);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/2020/ToNumber.js?")},"./node_modules/es-abstract/2020/ToObject.js":
/*!***************************************************!*\
  !*** ./node_modules/es-abstract/2020/ToObject.js ***!
  \***************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nvar GetIntrinsic = __webpack_require__(/*! get-intrinsic */ "./node_modules/get-intrinsic/index.js");\n\nvar $Object = GetIntrinsic(\'%Object%\');\n\nvar RequireObjectCoercible = __webpack_require__(/*! ./RequireObjectCoercible */ "./node_modules/es-abstract/2020/RequireObjectCoercible.js");\n\n// https://ecma-international.org/ecma-262/6.0/#sec-toobject\n\nmodule.exports = function ToObject(value) {\n\tRequireObjectCoercible(value);\n\treturn $Object(value);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/2020/ToObject.js?')},"./node_modules/es-abstract/2020/ToPrimitive.js":
/*!******************************************************!*\
  !*** ./node_modules/es-abstract/2020/ToPrimitive.js ***!
  \******************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nvar toPrimitive = __webpack_require__(/*! es-to-primitive/es2015 */ "./node_modules/es-to-primitive/es2015.js");\n\n// https://ecma-international.org/ecma-262/6.0/#sec-toprimitive\n\nmodule.exports = function ToPrimitive(input) {\n\tif (arguments.length > 1) {\n\t\treturn toPrimitive(input, arguments[1]);\n\t}\n\treturn toPrimitive(input);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/2020/ToPrimitive.js?')},"./node_modules/es-abstract/2020/ToString.js":
/*!***************************************************!*\
  !*** ./node_modules/es-abstract/2020/ToString.js ***!
  \***************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar GetIntrinsic = __webpack_require__(/*! get-intrinsic */ \"./node_modules/get-intrinsic/index.js\");\n\nvar $String = GetIntrinsic('%String%');\nvar $TypeError = GetIntrinsic('%TypeError%');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-tostring\n\nmodule.exports = function ToString(argument) {\n\tif (typeof argument === 'symbol') {\n\t\tthrow new $TypeError('Cannot convert a Symbol value to a string');\n\t}\n\treturn $String(argument);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/2020/ToString.js?")},"./node_modules/es-abstract/2020/Type.js":
/*!***********************************************!*\
  !*** ./node_modules/es-abstract/2020/Type.js ***!
  \***********************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar ES5Type = __webpack_require__(/*! ../5/Type */ \"./node_modules/es-abstract/5/Type.js\");\n\n// https://262.ecma-international.org/11.0/#sec-ecmascript-data-types-and-values\n\nmodule.exports = function Type(x) {\n\tif (typeof x === 'symbol') {\n\t\treturn 'Symbol';\n\t}\n\tif (typeof x === 'bigint') {\n\t\treturn 'BigInt';\n\t}\n\treturn ES5Type(x);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/2020/Type.js?")},"./node_modules/es-abstract/2021/RequireObjectCoercible.js":
/*!*****************************************************************!*\
  !*** ./node_modules/es-abstract/2021/RequireObjectCoercible.js ***!
  \*****************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nmodule.exports = __webpack_require__(/*! ../5/CheckObjectCoercible */ "./node_modules/es-abstract/5/CheckObjectCoercible.js");\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/2021/RequireObjectCoercible.js?')},"./node_modules/es-abstract/5/CheckObjectCoercible.js":
/*!************************************************************!*\
  !*** ./node_modules/es-abstract/5/CheckObjectCoercible.js ***!
  \************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar GetIntrinsic = __webpack_require__(/*! get-intrinsic */ \"./node_modules/get-intrinsic/index.js\");\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\n// http://262.ecma-international.org/5.1/#sec-9.10\n\nmodule.exports = function CheckObjectCoercible(value, optMessage) {\n\tif (value == null) {\n\t\tthrow new $TypeError(optMessage || ('Cannot call method on ' + value));\n\t}\n\treturn value;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/5/CheckObjectCoercible.js?")},"./node_modules/es-abstract/5/ToInteger.js":
/*!*************************************************!*\
  !*** ./node_modules/es-abstract/5/ToInteger.js ***!
  \*************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nvar abs = __webpack_require__(/*! ./abs */ "./node_modules/es-abstract/5/abs.js");\nvar floor = __webpack_require__(/*! ./floor */ "./node_modules/es-abstract/5/floor.js");\nvar ToNumber = __webpack_require__(/*! ./ToNumber */ "./node_modules/es-abstract/5/ToNumber.js");\n\nvar $isNaN = __webpack_require__(/*! ../helpers/isNaN */ "./node_modules/es-abstract/helpers/isNaN.js");\nvar $isFinite = __webpack_require__(/*! ../helpers/isFinite */ "./node_modules/es-abstract/helpers/isFinite.js");\nvar $sign = __webpack_require__(/*! ../helpers/sign */ "./node_modules/es-abstract/helpers/sign.js");\n\n// http://262.ecma-international.org/5.1/#sec-9.4\n\nmodule.exports = function ToInteger(value) {\n\tvar number = ToNumber(value);\n\tif ($isNaN(number)) { return 0; }\n\tif (number === 0 || !$isFinite(number)) { return number; }\n\treturn $sign(number) * floor(abs(number));\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/5/ToInteger.js?')},"./node_modules/es-abstract/5/ToNumber.js":
/*!************************************************!*\
  !*** ./node_modules/es-abstract/5/ToNumber.js ***!
  \************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar ToPrimitive = __webpack_require__(/*! ./ToPrimitive */ \"./node_modules/es-abstract/5/ToPrimitive.js\");\n\n// http://262.ecma-international.org/5.1/#sec-9.3\n\nmodule.exports = function ToNumber(value) {\n\tvar prim = ToPrimitive(value, Number);\n\tif (typeof prim !== 'string') {\n\t\treturn +prim; // eslint-disable-line no-implicit-coercion\n\t}\n\n\t// eslint-disable-next-line no-control-regex\n\tvar trimmed = prim.replace(/^[ \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u0085]+|[ \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u0085]+$/g, '');\n\tif ((/^0[ob]|^[+-]0x/).test(trimmed)) {\n\t\treturn NaN;\n\t}\n\n\treturn +trimmed; // eslint-disable-line no-implicit-coercion\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/5/ToNumber.js?")},"./node_modules/es-abstract/5/ToPrimitive.js":
/*!***************************************************!*\
  !*** ./node_modules/es-abstract/5/ToPrimitive.js ***!
  \***************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\n// http://262.ecma-international.org/5.1/#sec-9.1\n\nmodule.exports = __webpack_require__(/*! es-to-primitive/es5 */ "./node_modules/es-to-primitive/es5.js");\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/5/ToPrimitive.js?')},"./node_modules/es-abstract/5/Type.js":
/*!********************************************!*\
  !*** ./node_modules/es-abstract/5/Type.js ***!
  \********************************************/module=>{"use strict";eval("\n\n// https://262.ecma-international.org/5.1/#sec-8\n\nmodule.exports = function Type(x) {\n\tif (x === null) {\n\t\treturn 'Null';\n\t}\n\tif (typeof x === 'undefined') {\n\t\treturn 'Undefined';\n\t}\n\tif (typeof x === 'function' || typeof x === 'object') {\n\t\treturn 'Object';\n\t}\n\tif (typeof x === 'number') {\n\t\treturn 'Number';\n\t}\n\tif (typeof x === 'boolean') {\n\t\treturn 'Boolean';\n\t}\n\tif (typeof x === 'string') {\n\t\treturn 'String';\n\t}\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/5/Type.js?")},"./node_modules/es-abstract/5/abs.js":
/*!*******************************************!*\
  !*** ./node_modules/es-abstract/5/abs.js ***!
  \*******************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar GetIntrinsic = __webpack_require__(/*! get-intrinsic */ \"./node_modules/get-intrinsic/index.js\");\n\nvar $abs = GetIntrinsic('%Math.abs%');\n\n// http://262.ecma-international.org/5.1/#sec-5.2\n\nmodule.exports = function abs(x) {\n\treturn $abs(x);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/5/abs.js?")},"./node_modules/es-abstract/5/floor.js":
/*!*********************************************!*\
  !*** ./node_modules/es-abstract/5/floor.js ***!
  \*********************************************/module=>{"use strict";eval("\n\n// var modulo = require('./modulo');\nvar $floor = Math.floor;\n\n// http://262.ecma-international.org/5.1/#sec-5.2\n\nmodule.exports = function floor(x) {\n\t// return x - modulo(x, 1);\n\treturn $floor(x);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/5/floor.js?")},"./node_modules/es-abstract/helpers/isFinite.js":
/*!******************************************************!*\
  !*** ./node_modules/es-abstract/helpers/isFinite.js ***!
  \******************************************************/module=>{"use strict";eval("\n\nvar $isNaN = Number.isNaN || function (a) { return a !== a; };\n\nmodule.exports = Number.isFinite || function (x) { return typeof x === 'number' && !$isNaN(x) && x !== Infinity && x !== -Infinity; };\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/helpers/isFinite.js?")},"./node_modules/es-abstract/helpers/isNaN.js":
/*!***************************************************!*\
  !*** ./node_modules/es-abstract/helpers/isNaN.js ***!
  \***************************************************/module=>{"use strict";eval("\n\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/helpers/isNaN.js?")},"./node_modules/es-abstract/helpers/isPrimitive.js":
/*!*********************************************************!*\
  !*** ./node_modules/es-abstract/helpers/isPrimitive.js ***!
  \*********************************************************/module=>{"use strict";eval("\n\nmodule.exports = function isPrimitive(value) {\n\treturn value === null || (typeof value !== 'function' && typeof value !== 'object');\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/helpers/isPrimitive.js?")},"./node_modules/es-abstract/helpers/maxSafeInteger.js":
/*!************************************************************!*\
  !*** ./node_modules/es-abstract/helpers/maxSafeInteger.js ***!
  \************************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar GetIntrinsic = __webpack_require__(/*! get-intrinsic */ \"./node_modules/get-intrinsic/index.js\");\n\nvar $Math = GetIntrinsic('%Math%');\nvar $Number = GetIntrinsic('%Number%');\n\nmodule.exports = $Number.MAX_SAFE_INTEGER || $Math.pow(2, 53) - 1;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/helpers/maxSafeInteger.js?")},"./node_modules/es-abstract/helpers/regexTester.js":
/*!*********************************************************!*\
  !*** ./node_modules/es-abstract/helpers/regexTester.js ***!
  \*********************************************************/(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nvar GetIntrinsic = __webpack_require__(/*! get-intrinsic */ "./node_modules/get-intrinsic/index.js");\n\nvar $test = GetIntrinsic(\'RegExp.prototype.test\');\n\nvar callBind = __webpack_require__(/*! call-bind */ "./node_modules/call-bind/index.js");\n\nmodule.exports = function regexTester(regex) {\n\treturn callBind($test, regex);\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/helpers/regexTester.js?')},"./node_modules/es-abstract/helpers/sign.js":
/*!**************************************************!*\
  !*** ./node_modules/es-abstract/helpers/sign.js ***!
  \**************************************************/module=>{"use strict";eval("\n\nmodule.exports = function sign(number) {\n\treturn number >= 0 ? 1 : -1;\n};\n\n\n//# sourceURL=webpack://txadmin/./node_modules/es-abstract/helpers/sign.js?")},"./node_modules/nanoid/index.cjs":
/*!***************************************!*\
  !*** ./node_modules/nanoid/index.cjs ***!
  \***************************************/(module,__unused_webpack_exports,__webpack_require__)=>{eval("let crypto = __webpack_require__(/*! crypto */ \"crypto\")\nlet { urlAlphabet } = __webpack_require__(/*! ./url-alphabet/index.cjs */ \"./node_modules/nanoid/url-alphabet/index.cjs\")\nconst POOL_SIZE_MULTIPLIER = 128\nlet pool, poolOffset\nlet fillPool = bytes => {\n  if (!pool || pool.length < bytes) {\n    pool = Buffer.allocUnsafe(bytes * POOL_SIZE_MULTIPLIER)\n    crypto.randomFillSync(pool)\n    poolOffset = 0\n  } else if (poolOffset + bytes > pool.length) {\n    crypto.randomFillSync(pool)\n    poolOffset = 0\n  }\n  poolOffset += bytes\n}\nlet random = bytes => {\n  fillPool((bytes -= 0))\n  return pool.subarray(poolOffset - bytes, poolOffset)\n}\nlet customRandom = (alphabet, defaultSize, getRandom) => {\n  let mask = (2 << (31 - Math.clz32((alphabet.length - 1) | 1))) - 1\n  let step = Math.ceil((1.6 * mask * defaultSize) / alphabet.length)\n  return (size = defaultSize) => {\n    let id = ''\n    while (true) {\n      let bytes = getRandom(step)\n      let i = step\n      while (i--) {\n        id += alphabet[bytes[i] & mask] || ''\n        if (id.length === size) return id\n      }\n    }\n  }\n}\nlet customAlphabet = (alphabet, size = 21) =>\n  customRandom(alphabet, size, random)\nlet nanoid = (size = 21) => {\n  fillPool((size -= 0))\n  let id = ''\n  for (let i = poolOffset - size; i < poolOffset; i++) {\n    id += urlAlphabet[pool[i] & 63]\n  }\n  return id\n}\nmodule.exports = { nanoid, customAlphabet, customRandom, urlAlphabet, random }\n\n\n//# sourceURL=webpack://txadmin/./node_modules/nanoid/index.cjs?")},"./node_modules/nanoid/non-secure/index.cjs":
/*!**************************************************!*\
  !*** ./node_modules/nanoid/non-secure/index.cjs ***!
  \**************************************************/module=>{eval("let urlAlphabet =\n  'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n  return (size = defaultSize) => {\n    let id = ''\n    let i = size\n    while (i--) {\n      id += alphabet[(Math.random() * alphabet.length) | 0]\n    }\n    return id\n  }\n}\nlet nanoid = (size = 21) => {\n  let id = ''\n  let i = size\n  while (i--) {\n    id += urlAlphabet[(Math.random() * 64) | 0]\n  }\n  return id\n}\nmodule.exports = { nanoid, customAlphabet }\n\n\n//# sourceURL=webpack://txadmin/./node_modules/nanoid/non-secure/index.cjs?")},"./node_modules/nanoid/url-alphabet/index.cjs":
/*!****************************************************!*\
  !*** ./node_modules/nanoid/url-alphabet/index.cjs ***!
  \****************************************************/module=>{eval("let urlAlphabet =\n  'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\nmodule.exports = { urlAlphabet }\n\n\n//# sourceURL=webpack://txadmin/./node_modules/nanoid/url-alphabet/index.cjs?")},"./node_modules/socket.io/dist/broadcast-operator.js":
/*!***********************************************************!*\
  !*** ./node_modules/socket.io/dist/broadcast-operator.js ***!
  \***********************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.RemoteSocket = exports.BroadcastOperator = void 0;\nconst socket_1 = __webpack_require__(/*! ./socket */ "./node_modules/socket.io/dist/socket.js");\nconst socket_io_parser_1 = __webpack_require__(/*! socket.io-parser */ "./node_modules/socket.io-parser/dist/index.js");\nclass BroadcastOperator {\n    constructor(adapter, rooms = new Set(), exceptRooms = new Set(), flags = {}) {\n        this.adapter = adapter;\n        this.rooms = rooms;\n        this.exceptRooms = exceptRooms;\n        this.flags = flags;\n    }\n    /**\n     * Targets a room when emitting.\n     *\n     * @param room\n     * @return a new BroadcastOperator instance\n     * @public\n     */\n    to(room) {\n        const rooms = new Set(this.rooms);\n        if (Array.isArray(room)) {\n            room.forEach((r) => rooms.add(r));\n        }\n        else {\n            rooms.add(room);\n        }\n        return new BroadcastOperator(this.adapter, rooms, this.exceptRooms, this.flags);\n    }\n    /**\n     * Targets a room when emitting.\n     *\n     * @param room\n     * @return a new BroadcastOperator instance\n     * @public\n     */\n    in(room) {\n        return this.to(room);\n    }\n    /**\n     * Excludes a room when emitting.\n     *\n     * @param room\n     * @return a new BroadcastOperator instance\n     * @public\n     */\n    except(room) {\n        const exceptRooms = new Set(this.exceptRooms);\n        if (Array.isArray(room)) {\n            room.forEach((r) => exceptRooms.add(r));\n        }\n        else {\n            exceptRooms.add(room);\n        }\n        return new BroadcastOperator(this.adapter, this.rooms, exceptRooms, this.flags);\n    }\n    /**\n     * Sets the compress flag.\n     *\n     * @param compress - if `true`, compresses the sending data\n     * @return a new BroadcastOperator instance\n     * @public\n     */\n    compress(compress) {\n        const flags = Object.assign({}, this.flags, { compress });\n        return new BroadcastOperator(this.adapter, this.rooms, this.exceptRooms, flags);\n    }\n    /**\n     * Sets a modifier for a subsequent event emission that the event data may be lost if the client is not ready to\n     * receive messages (because of network slowness or other issues, or because they’re connected through long polling\n     * and is in the middle of a request-response cycle).\n     *\n     * @return a new BroadcastOperator instance\n     * @public\n     */\n    get volatile() {\n        const flags = Object.assign({}, this.flags, { volatile: true });\n        return new BroadcastOperator(this.adapter, this.rooms, this.exceptRooms, flags);\n    }\n    /**\n     * Sets a modifier for a subsequent event emission that the event data will only be broadcast to the current node.\n     *\n     * @return a new BroadcastOperator instance\n     * @public\n     */\n    get local() {\n        const flags = Object.assign({}, this.flags, { local: true });\n        return new BroadcastOperator(this.adapter, this.rooms, this.exceptRooms, flags);\n    }\n    /**\n     * Adds a timeout in milliseconds for the next operation\n     *\n     * <pre><code>\n     *\n     * io.timeout(1000).emit("some-event", (err, responses) => {\n     *   // ...\n     * });\n     *\n     * </pre></code>\n     *\n     * @param timeout\n     */\n    timeout(timeout) {\n        const flags = Object.assign({}, this.flags, { timeout });\n        return new BroadcastOperator(this.adapter, this.rooms, this.exceptRooms, flags);\n    }\n    /**\n     * Emits to all clients.\n     *\n     * @return Always true\n     * @public\n     */\n    emit(ev, ...args) {\n        if (socket_1.RESERVED_EVENTS.has(ev)) {\n            throw new Error(`"${ev}" is a reserved event name`);\n        }\n        // set up packet object\n        const data = [ev, ...args];\n        const packet = {\n            type: socket_io_parser_1.PacketType.EVENT,\n            data: data,\n        };\n        const withAck = typeof data[data.length - 1] === "function";\n        if (!withAck) {\n            this.adapter.broadcast(packet, {\n                rooms: this.rooms,\n                except: this.exceptRooms,\n                flags: this.flags,\n            });\n            return true;\n        }\n        const ack = data.pop();\n        let timedOut = false;\n        let responses = [];\n        const timer = setTimeout(() => {\n            timedOut = true;\n            ack.apply(this, [new Error("operation has timed out"), responses]);\n        }, this.flags.timeout);\n        let expectedServerCount = -1;\n        let actualServerCount = 0;\n        let expectedClientCount = 0;\n        const checkCompleteness = () => {\n            if (!timedOut &&\n                expectedServerCount === actualServerCount &&\n                responses.length === expectedClientCount) {\n                clearTimeout(timer);\n                ack.apply(this, [null, responses]);\n            }\n        };\n        this.adapter.broadcastWithAck(packet, {\n            rooms: this.rooms,\n            except: this.exceptRooms,\n            flags: this.flags,\n        }, (clientCount) => {\n            // each Socket.IO server in the cluster sends the number of clients that were notified\n            expectedClientCount += clientCount;\n            actualServerCount++;\n            checkCompleteness();\n        }, (clientResponse) => {\n            // each client sends an acknowledgement\n            responses.push(clientResponse);\n            checkCompleteness();\n        });\n        this.adapter.serverCount().then((serverCount) => {\n            expectedServerCount = serverCount;\n            checkCompleteness();\n        });\n        return true;\n    }\n    /**\n     * Gets a list of clients.\n     *\n     * @public\n     */\n    allSockets() {\n        if (!this.adapter) {\n            throw new Error("No adapter for this namespace, are you trying to get the list of clients of a dynamic namespace?");\n        }\n        return this.adapter.sockets(this.rooms);\n    }\n    /**\n     * Returns the matching socket instances\n     *\n     * @public\n     */\n    fetchSockets() {\n        return this.adapter\n            .fetchSockets({\n            rooms: this.rooms,\n            except: this.exceptRooms,\n            flags: this.flags,\n        })\n            .then((sockets) => {\n            return sockets.map((socket) => {\n                if (socket instanceof socket_1.Socket) {\n                    // FIXME the TypeScript compiler complains about missing private properties\n                    return socket;\n                }\n                else {\n                    return new RemoteSocket(this.adapter, socket);\n                }\n            });\n        });\n    }\n    /**\n     * Makes the matching socket instances join the specified rooms\n     *\n     * @param room\n     * @public\n     */\n    socketsJoin(room) {\n        this.adapter.addSockets({\n            rooms: this.rooms,\n            except: this.exceptRooms,\n            flags: this.flags,\n        }, Array.isArray(room) ? room : [room]);\n    }\n    /**\n     * Makes the matching socket instances leave the specified rooms\n     *\n     * @param room\n     * @public\n     */\n    socketsLeave(room) {\n        this.adapter.delSockets({\n            rooms: this.rooms,\n            except: this.exceptRooms,\n            flags: this.flags,\n        }, Array.isArray(room) ? room : [room]);\n    }\n    /**\n     * Makes the matching socket instances disconnect\n     *\n     * @param close - whether to close the underlying connection\n     * @public\n     */\n    disconnectSockets(close = false) {\n        this.adapter.disconnectSockets({\n            rooms: this.rooms,\n            except: this.exceptRooms,\n            flags: this.flags,\n        }, close);\n    }\n}\nexports.BroadcastOperator = BroadcastOperator;\n/**\n * Expose of subset of the attributes and methods of the Socket class\n */\nclass RemoteSocket {\n    constructor(adapter, details) {\n        this.id = details.id;\n        this.handshake = details.handshake;\n        this.rooms = new Set(details.rooms);\n        this.data = details.data;\n        this.operator = new BroadcastOperator(adapter, new Set([this.id]));\n    }\n    emit(ev, ...args) {\n        return this.operator.emit(ev, ...args);\n    }\n    /**\n     * Joins a room.\n     *\n     * @param {String|Array} room - room or array of rooms\n     * @public\n     */\n    join(room) {\n        return this.operator.socketsJoin(room);\n    }\n    /**\n     * Leaves a room.\n     *\n     * @param {String} room\n     * @public\n     */\n    leave(room) {\n        return this.operator.socketsLeave(room);\n    }\n    /**\n     * Disconnects this client.\n     *\n     * @param {Boolean} close - if `true`, closes the underlying connection\n     * @return {Socket} self\n     *\n     * @public\n     */\n    disconnect(close = false) {\n        this.operator.disconnectSockets(close);\n        return this;\n    }\n}\nexports.RemoteSocket = RemoteSocket;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/socket.io/dist/broadcast-operator.js?')},"./node_modules/socket.io/dist/client.js":
/*!***********************************************!*\
  !*** ./node_modules/socket.io/dist/client.js ***!
  \***********************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.Client = void 0;\nconst socket_io_parser_1 = __webpack_require__(/*! socket.io-parser */ "./node_modules/socket.io-parser/dist/index.js");\nconst debugModule = __webpack_require__(/*! debug */ "./node_modules/debug/src/index.js");\nconst url = __webpack_require__(/*! url */ "url");\nconst debug = debugModule("socket.io:client");\nclass Client {\n    /**\n     * Client constructor.\n     *\n     * @param server instance\n     * @param conn\n     * @package\n     */\n    constructor(server, conn) {\n        this.sockets = new Map();\n        this.nsps = new Map();\n        this.server = server;\n        this.conn = conn;\n        this.encoder = server.encoder;\n        this.decoder = new server._parser.Decoder();\n        this.id = conn.id;\n        this.setup();\n    }\n    /**\n     * @return the reference to the request that originated the Engine.IO connection\n     *\n     * @public\n     */\n    get request() {\n        return this.conn.request;\n    }\n    /**\n     * Sets up event listeners.\n     *\n     * @private\n     */\n    setup() {\n        this.onclose = this.onclose.bind(this);\n        this.ondata = this.ondata.bind(this);\n        this.onerror = this.onerror.bind(this);\n        this.ondecoded = this.ondecoded.bind(this);\n        // @ts-ignore\n        this.decoder.on("decoded", this.ondecoded);\n        this.conn.on("data", this.ondata);\n        this.conn.on("error", this.onerror);\n        this.conn.on("close", this.onclose);\n        this.connectTimeout = setTimeout(() => {\n            if (this.nsps.size === 0) {\n                debug("no namespace joined yet, close the client");\n                this.close();\n            }\n            else {\n                debug("the client has already joined a namespace, nothing to do");\n            }\n        }, this.server._connectTimeout);\n    }\n    /**\n     * Connects a client to a namespace.\n     *\n     * @param {String} name - the namespace\n     * @param {Object} auth - the auth parameters\n     * @private\n     */\n    connect(name, auth = {}) {\n        if (this.server._nsps.has(name)) {\n            debug("connecting to namespace %s", name);\n            return this.doConnect(name, auth);\n        }\n        this.server._checkNamespace(name, auth, (dynamicNspName) => {\n            if (dynamicNspName) {\n                this.doConnect(name, auth);\n            }\n            else {\n                debug("creation of namespace %s was denied", name);\n                this._packet({\n                    type: socket_io_parser_1.PacketType.CONNECT_ERROR,\n                    nsp: name,\n                    data: {\n                        message: "Invalid namespace",\n                    },\n                });\n            }\n        });\n    }\n    /**\n     * Connects a client to a namespace.\n     *\n     * @param name - the namespace\n     * @param {Object} auth - the auth parameters\n     *\n     * @private\n     */\n    doConnect(name, auth) {\n        const nsp = this.server.of(name);\n        const socket = nsp._add(this, auth, () => {\n            this.sockets.set(socket.id, socket);\n            this.nsps.set(nsp.name, socket);\n            if (this.connectTimeout) {\n                clearTimeout(this.connectTimeout);\n                this.connectTimeout = undefined;\n            }\n        });\n    }\n    /**\n     * Disconnects from all namespaces and closes transport.\n     *\n     * @private\n     */\n    _disconnect() {\n        for (const socket of this.sockets.values()) {\n            socket.disconnect();\n        }\n        this.sockets.clear();\n        this.close();\n    }\n    /**\n     * Removes a socket. Called by each `Socket`.\n     *\n     * @private\n     */\n    _remove(socket) {\n        if (this.sockets.has(socket.id)) {\n            const nsp = this.sockets.get(socket.id).nsp.name;\n            this.sockets.delete(socket.id);\n            this.nsps.delete(nsp);\n        }\n        else {\n            debug("ignoring remove for %s", socket.id);\n        }\n    }\n    /**\n     * Closes the underlying connection.\n     *\n     * @private\n     */\n    close() {\n        if ("open" === this.conn.readyState) {\n            debug("forcing transport close");\n            this.conn.close();\n            this.onclose("forced server close");\n        }\n    }\n    /**\n     * Writes a packet to the transport.\n     *\n     * @param {Object} packet object\n     * @param {Object} opts\n     * @private\n     */\n    _packet(packet, opts = {}) {\n        if (this.conn.readyState !== "open") {\n            debug("ignoring packet write %j", packet);\n            return;\n        }\n        const encodedPackets = opts.preEncoded\n            ? packet // previous versions of the adapter incorrectly used socket.packet() instead of writeToEngine()\n            : this.encoder.encode(packet);\n        this.writeToEngine(encodedPackets, opts);\n    }\n    writeToEngine(encodedPackets, opts) {\n        if (opts.volatile && !this.conn.transport.writable) {\n            debug("volatile packet is discarded since the transport is not currently writable");\n            return;\n        }\n        const packets = Array.isArray(encodedPackets)\n            ? encodedPackets\n            : [encodedPackets];\n        for (const encodedPacket of packets) {\n            this.conn.write(encodedPacket, opts);\n        }\n    }\n    /**\n     * Called with incoming transport data.\n     *\n     * @private\n     */\n    ondata(data) {\n        // try/catch is needed for protocol violations (GH-1880)\n        try {\n            this.decoder.add(data);\n        }\n        catch (e) {\n            debug("invalid packet format");\n            this.onerror(e);\n        }\n    }\n    /**\n     * Called when parser fully decodes a packet.\n     *\n     * @private\n     */\n    ondecoded(packet) {\n        let namespace;\n        let authPayload;\n        if (this.conn.protocol === 3) {\n            const parsed = url.parse(packet.nsp, true);\n            namespace = parsed.pathname;\n            authPayload = parsed.query;\n        }\n        else {\n            namespace = packet.nsp;\n            authPayload = packet.data;\n        }\n        const socket = this.nsps.get(namespace);\n        if (!socket && packet.type === socket_io_parser_1.PacketType.CONNECT) {\n            this.connect(namespace, authPayload);\n        }\n        else if (socket &&\n            packet.type !== socket_io_parser_1.PacketType.CONNECT &&\n            packet.type !== socket_io_parser_1.PacketType.CONNECT_ERROR) {\n            process.nextTick(function () {\n                socket._onpacket(packet);\n            });\n        }\n        else {\n            debug("invalid state (packet type: %s)", packet.type);\n            this.close();\n        }\n    }\n    /**\n     * Handles an error.\n     *\n     * @param {Object} err object\n     * @private\n     */\n    onerror(err) {\n        for (const socket of this.sockets.values()) {\n            socket._onerror(err);\n        }\n        this.conn.close();\n    }\n    /**\n     * Called upon transport close.\n     *\n     * @param reason\n     * @private\n     */\n    onclose(reason) {\n        debug("client close with reason %s", reason);\n        // ignore a potential subsequent `close` event\n        this.destroy();\n        // `nsps` and `sockets` are cleaned up seamlessly\n        for (const socket of this.sockets.values()) {\n            socket._onclose(reason);\n        }\n        this.sockets.clear();\n        this.decoder.destroy(); // clean up decoder\n    }\n    /**\n     * Cleans up event listeners.\n     * @private\n     */\n    destroy() {\n        this.conn.removeListener("data", this.ondata);\n        this.conn.removeListener("error", this.onerror);\n        this.conn.removeListener("close", this.onclose);\n        // @ts-ignore\n        this.decoder.removeListener("decoded", this.ondecoded);\n        if (this.connectTimeout) {\n            clearTimeout(this.connectTimeout);\n            this.connectTimeout = undefined;\n        }\n    }\n}\nexports.Client = Client;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/socket.io/dist/client.js?')},"./node_modules/socket.io/dist/index.js":
/*!**********************************************!*\
  !*** ./node_modules/socket.io/dist/index.js ***!
  \**********************************************/function(module,exports,__webpack_require__){"use strict";eval('var __dirname = "node_modules\\\\socket.io\\\\dist";\n\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, "default", { enumerable: true, value: v });\n}) : function(o, v) {\n    o["default"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { "default": mod };\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.Namespace = exports.Socket = exports.Server = void 0;\nconst http = __webpack_require__(/*! http */ "http");\nconst fs_1 = __webpack_require__(/*! fs */ "fs");\nconst zlib_1 = __webpack_require__(/*! zlib */ "zlib");\nconst accepts = __webpack_require__(/*! accepts */ "./node_modules/accepts/index.js");\nconst stream_1 = __webpack_require__(/*! stream */ "stream");\nconst path = __webpack_require__(/*! path */ "path");\nconst engine_io_1 = __webpack_require__(/*! engine.io */ "./node_modules/engine.io/build/engine.io.js");\nconst client_1 = __webpack_require__(/*! ./client */ "./node_modules/socket.io/dist/client.js");\nconst events_1 = __webpack_require__(/*! events */ "events");\nconst namespace_1 = __webpack_require__(/*! ./namespace */ "./node_modules/socket.io/dist/namespace.js");\nObject.defineProperty(exports, "Namespace", ({ enumerable: true, get: function () { return namespace_1.Namespace; } }));\nconst parent_namespace_1 = __webpack_require__(/*! ./parent-namespace */ "./node_modules/socket.io/dist/parent-namespace.js");\nconst socket_io_adapter_1 = __webpack_require__(/*! socket.io-adapter */ "./node_modules/socket.io-adapter/dist/index.js");\nconst parser = __importStar(__webpack_require__(/*! socket.io-parser */ "./node_modules/socket.io-parser/dist/index.js"));\nconst debug_1 = __importDefault(__webpack_require__(/*! debug */ "./node_modules/debug/src/index.js"));\nconst socket_1 = __webpack_require__(/*! ./socket */ "./node_modules/socket.io/dist/socket.js");\nObject.defineProperty(exports, "Socket", ({ enumerable: true, get: function () { return socket_1.Socket; } }));\nconst typed_events_1 = __webpack_require__(/*! ./typed-events */ "./node_modules/socket.io/dist/typed-events.js");\nconst uws_1 = __webpack_require__(/*! ./uws */ "./node_modules/socket.io/dist/uws.js");\nconst debug = (0, debug_1.default)("socket.io:server");\nconst clientVersion = (__webpack_require__(/*! ../package.json */ "./node_modules/socket.io/package.json").version);\nconst dotMapRegex = /\\.map/;\nclass Server extends typed_events_1.StrictEventEmitter {\n    constructor(srv, opts = {}) {\n        super();\n        /**\n         * @private\n         */\n        this._nsps = new Map();\n        this.parentNsps = new Map();\n        if ("object" === typeof srv &&\n            srv instanceof Object &&\n            !srv.listen) {\n            opts = srv;\n            srv = undefined;\n        }\n        this.path(opts.path || "/socket.io");\n        this.connectTimeout(opts.connectTimeout || 45000);\n        this.serveClient(false !== opts.serveClient);\n        this._parser = opts.parser || parser;\n        this.encoder = new this._parser.Encoder();\n        this.adapter(opts.adapter || socket_io_adapter_1.Adapter);\n        this.sockets = this.of("/");\n        this.opts = opts;\n        if (srv || typeof srv == "number")\n            this.attach(srv);\n    }\n    serveClient(v) {\n        if (!arguments.length)\n            return this._serveClient;\n        this._serveClient = v;\n        return this;\n    }\n    /**\n     * Executes the middleware for an incoming namespace not already created on the server.\n     *\n     * @param name - name of incoming namespace\n     * @param auth - the auth parameters\n     * @param fn - callback\n     *\n     * @private\n     */\n    _checkNamespace(name, auth, fn) {\n        if (this.parentNsps.size === 0)\n            return fn(false);\n        const keysIterator = this.parentNsps.keys();\n        const run = () => {\n            const nextFn = keysIterator.next();\n            if (nextFn.done) {\n                return fn(false);\n            }\n            nextFn.value(name, auth, (err, allow) => {\n                if (err || !allow) {\n                    return run();\n                }\n                if (this._nsps.has(name)) {\n                    // the namespace was created in the meantime\n                    debug("dynamic namespace %s already exists", name);\n                    return fn(this._nsps.get(name));\n                }\n                const namespace = this.parentNsps.get(nextFn.value).createChild(name);\n                debug("dynamic namespace %s was created", name);\n                // @ts-ignore\n                this.sockets.emitReserved("new_namespace", namespace);\n                fn(namespace);\n            });\n        };\n        run();\n    }\n    path(v) {\n        if (!arguments.length)\n            return this._path;\n        this._path = v.replace(/\\/$/, "");\n        const escapedPath = this._path.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, "\\\\$&");\n        this.clientPathRegex = new RegExp("^" +\n            escapedPath +\n            "/socket\\\\.io(\\\\.msgpack|\\\\.esm)?(\\\\.min)?\\\\.js(\\\\.map)?(?:\\\\?|$)");\n        return this;\n    }\n    connectTimeout(v) {\n        if (v === undefined)\n            return this._connectTimeout;\n        this._connectTimeout = v;\n        return this;\n    }\n    adapter(v) {\n        if (!arguments.length)\n            return this._adapter;\n        this._adapter = v;\n        for (const nsp of this._nsps.values()) {\n            nsp._initAdapter();\n        }\n        return this;\n    }\n    /**\n     * Attaches socket.io to a server or port.\n     *\n     * @param srv - server or port\n     * @param opts - options passed to engine.io\n     * @return self\n     * @public\n     */\n    listen(srv, opts = {}) {\n        return this.attach(srv, opts);\n    }\n    /**\n     * Attaches socket.io to a server or port.\n     *\n     * @param srv - server or port\n     * @param opts - options passed to engine.io\n     * @return self\n     * @public\n     */\n    attach(srv, opts = {}) {\n        if ("function" == typeof srv) {\n            const msg = "You are trying to attach socket.io to an express " +\n                "request handler function. Please pass a http.Server instance.";\n            throw new Error(msg);\n        }\n        // handle a port as a string\n        if (Number(srv) == srv) {\n            srv = Number(srv);\n        }\n        if ("number" == typeof srv) {\n            debug("creating http server and binding to %d", srv);\n            const port = srv;\n            srv = http.createServer((req, res) => {\n                res.writeHead(404);\n                res.end();\n            });\n            srv.listen(port);\n        }\n        // merge the options passed to the Socket.IO server\n        Object.assign(opts, this.opts);\n        // set engine.io path to `/socket.io`\n        opts.path = opts.path || this._path;\n        this.initEngine(srv, opts);\n        return this;\n    }\n    attachApp(app /*: TemplatedApp */, opts = {}) {\n        // merge the options passed to the Socket.IO server\n        Object.assign(opts, this.opts);\n        // set engine.io path to `/socket.io`\n        opts.path = opts.path || this._path;\n        // initialize engine\n        debug("creating uWebSockets.js-based engine with opts %j", opts);\n        const engine = new engine_io_1.uServer(opts);\n        engine.attach(app, opts);\n        // bind to engine events\n        this.bind(engine);\n        if (this._serveClient) {\n            // attach static file serving\n            app.get(`${this._path}/*`, (res, req) => {\n                if (!this.clientPathRegex.test(req.getUrl())) {\n                    req.setYield(true);\n                    return;\n                }\n                const filename = req\n                    .getUrl()\n                    .replace(this._path, "")\n                    .replace(/\\?.*$/, "")\n                    .replace(/^\\//, "");\n                const isMap = dotMapRegex.test(filename);\n                const type = isMap ? "map" : "source";\n                // Per the standard, ETags must be quoted:\n                // https://tools.ietf.org/html/rfc7232#section-2.3\n                const expectedEtag = \'"\' + clientVersion + \'"\';\n                const weakEtag = "W/" + expectedEtag;\n                const etag = req.getHeader("if-none-match");\n                if (etag) {\n                    if (expectedEtag === etag || weakEtag === etag) {\n                        debug("serve client %s 304", type);\n                        res.writeStatus("304 Not Modified");\n                        res.end();\n                        return;\n                    }\n                }\n                debug("serve client %s", type);\n                res.writeHeader("cache-control", "public, max-age=0");\n                res.writeHeader("content-type", "application/" + (isMap ? "json" : "javascript"));\n                res.writeHeader("etag", expectedEtag);\n                const filepath = path.join(__dirname, "../client-dist/", filename);\n                (0, uws_1.serveFile)(res, filepath);\n            });\n        }\n        (0, uws_1.patchAdapter)(app);\n    }\n    /**\n     * Initialize engine\n     *\n     * @param srv - the server to attach to\n     * @param opts - options passed to engine.io\n     * @private\n     */\n    initEngine(srv, opts) {\n        // initialize engine\n        debug("creating engine.io instance with opts %j", opts);\n        this.eio = (0, engine_io_1.attach)(srv, opts);\n        // attach static file serving\n        if (this._serveClient)\n            this.attachServe(srv);\n        // Export http server\n        this.httpServer = srv;\n        // bind to engine events\n        this.bind(this.eio);\n    }\n    /**\n     * Attaches the static file serving.\n     *\n     * @param srv http server\n     * @private\n     */\n    attachServe(srv) {\n        debug("attaching client serving req handler");\n        const evs = srv.listeners("request").slice(0);\n        srv.removeAllListeners("request");\n        srv.on("request", (req, res) => {\n            if (this.clientPathRegex.test(req.url)) {\n                this.serve(req, res);\n            }\n            else {\n                for (let i = 0; i < evs.length; i++) {\n                    evs[i].call(srv, req, res);\n                }\n            }\n        });\n    }\n    /**\n     * Handles a request serving of client source and map\n     *\n     * @param req\n     * @param res\n     * @private\n     */\n    serve(req, res) {\n        const filename = req.url.replace(this._path, "").replace(/\\?.*$/, "");\n        const isMap = dotMapRegex.test(filename);\n        const type = isMap ? "map" : "source";\n        // Per the standard, ETags must be quoted:\n        // https://tools.ietf.org/html/rfc7232#section-2.3\n        const expectedEtag = \'"\' + clientVersion + \'"\';\n        const weakEtag = "W/" + expectedEtag;\n        const etag = req.headers["if-none-match"];\n        if (etag) {\n            if (expectedEtag === etag || weakEtag === etag) {\n                debug("serve client %s 304", type);\n                res.writeHead(304);\n                res.end();\n                return;\n            }\n        }\n        debug("serve client %s", type);\n        res.setHeader("Cache-Control", "public, max-age=0");\n        res.setHeader("Content-Type", "application/" + (isMap ? "json" : "javascript"));\n        res.setHeader("ETag", expectedEtag);\n        Server.sendFile(filename, req, res);\n    }\n    /**\n     * @param filename\n     * @param req\n     * @param res\n     * @private\n     */\n    static sendFile(filename, req, res) {\n        const readStream = (0, fs_1.createReadStream)(path.join(__dirname, "../client-dist/", filename));\n        const encoding = accepts(req).encodings(["br", "gzip", "deflate"]);\n        const onError = (err) => {\n            if (err) {\n                res.end();\n            }\n        };\n        switch (encoding) {\n            case "br":\n                res.writeHead(200, { "content-encoding": "br" });\n                readStream.pipe((0, zlib_1.createBrotliCompress)()).pipe(res);\n                (0, stream_1.pipeline)(readStream, (0, zlib_1.createBrotliCompress)(), res, onError);\n                break;\n            case "gzip":\n                res.writeHead(200, { "content-encoding": "gzip" });\n                (0, stream_1.pipeline)(readStream, (0, zlib_1.createGzip)(), res, onError);\n                break;\n            case "deflate":\n                res.writeHead(200, { "content-encoding": "deflate" });\n                (0, stream_1.pipeline)(readStream, (0, zlib_1.createDeflate)(), res, onError);\n                break;\n            default:\n                res.writeHead(200);\n                (0, stream_1.pipeline)(readStream, res, onError);\n        }\n    }\n    /**\n     * Binds socket.io to an engine.io instance.\n     *\n     * @param {engine.Server} engine engine.io (or compatible) server\n     * @return self\n     * @public\n     */\n    bind(engine) {\n        this.engine = engine;\n        this.engine.on("connection", this.onconnection.bind(this));\n        return this;\n    }\n    /**\n     * Called with each incoming transport connection.\n     *\n     * @param {engine.Socket} conn\n     * @return self\n     * @private\n     */\n    onconnection(conn) {\n        debug("incoming connection with id %s", conn.id);\n        const client = new client_1.Client(this, conn);\n        if (conn.protocol === 3) {\n            // @ts-ignore\n            client.connect("/");\n        }\n        return this;\n    }\n    /**\n     * Looks up a namespace.\n     *\n     * @param {String|RegExp|Function} name nsp name\n     * @param fn optional, nsp `connection` ev handler\n     * @public\n     */\n    of(name, fn) {\n        if (typeof name === "function" || name instanceof RegExp) {\n            const parentNsp = new parent_namespace_1.ParentNamespace(this);\n            debug("initializing parent namespace %s", parentNsp.name);\n            if (typeof name === "function") {\n                this.parentNsps.set(name, parentNsp);\n            }\n            else {\n                this.parentNsps.set((nsp, conn, next) => next(null, name.test(nsp)), parentNsp);\n            }\n            if (fn) {\n                // @ts-ignore\n                parentNsp.on("connect", fn);\n            }\n            return parentNsp;\n        }\n        if (String(name)[0] !== "/")\n            name = "/" + name;\n        let nsp = this._nsps.get(name);\n        if (!nsp) {\n            debug("initializing namespace %s", name);\n            nsp = new namespace_1.Namespace(this, name);\n            this._nsps.set(name, nsp);\n            if (name !== "/") {\n                // @ts-ignore\n                this.sockets.emitReserved("new_namespace", nsp);\n            }\n        }\n        if (fn)\n            nsp.on("connect", fn);\n        return nsp;\n    }\n    /**\n     * Closes server connection\n     *\n     * @param [fn] optional, called as `fn([err])` on error OR all conns closed\n     * @public\n     */\n    close(fn) {\n        for (const socket of this.sockets.sockets.values()) {\n            socket._onclose("server shutting down");\n        }\n        this.engine.close();\n        // restore the Adapter prototype\n        (0, uws_1.restoreAdapter)();\n        if (this.httpServer) {\n            this.httpServer.close(fn);\n        }\n        else {\n            fn && fn();\n        }\n    }\n    /**\n     * Sets up namespace middleware.\n     *\n     * @return self\n     * @public\n     */\n    use(fn) {\n        this.sockets.use(fn);\n        return this;\n    }\n    /**\n     * Targets a room when emitting.\n     *\n     * @param room\n     * @return self\n     * @public\n     */\n    to(room) {\n        return this.sockets.to(room);\n    }\n    /**\n     * Targets a room when emitting.\n     *\n     * @param room\n     * @return self\n     * @public\n     */\n    in(room) {\n        return this.sockets.in(room);\n    }\n    /**\n     * Excludes a room when emitting.\n     *\n     * @param name\n     * @return self\n     * @public\n     */\n    except(name) {\n        return this.sockets.except(name);\n    }\n    /**\n     * Sends a `message` event to all clients.\n     *\n     * @return self\n     * @public\n     */\n    send(...args) {\n        this.sockets.emit("message", ...args);\n        return this;\n    }\n    /**\n     * Sends a `message` event to all clients.\n     *\n     * @return self\n     * @public\n     */\n    write(...args) {\n        this.sockets.emit("message", ...args);\n        return this;\n    }\n    /**\n     * Emit a packet to other Socket.IO servers\n     *\n     * @param ev - the event name\n     * @param args - an array of arguments, which may include an acknowledgement callback at the end\n     * @public\n     */\n    serverSideEmit(ev, ...args) {\n        return this.sockets.serverSideEmit(ev, ...args);\n    }\n    /**\n     * Gets a list of socket ids.\n     *\n     * @public\n     */\n    allSockets() {\n        return this.sockets.allSockets();\n    }\n    /**\n     * Sets the compress flag.\n     *\n     * @param compress - if `true`, compresses the sending data\n     * @return self\n     * @public\n     */\n    compress(compress) {\n        return this.sockets.compress(compress);\n    }\n    /**\n     * Sets a modifier for a subsequent event emission that the event data may be lost if the client is not ready to\n     * receive messages (because of network slowness or other issues, or because they’re connected through long polling\n     * and is in the middle of a request-response cycle).\n     *\n     * @return self\n     * @public\n     */\n    get volatile() {\n        return this.sockets.volatile;\n    }\n    /**\n     * Sets a modifier for a subsequent event emission that the event data will only be broadcast to the current node.\n     *\n     * @return self\n     * @public\n     */\n    get local() {\n        return this.sockets.local;\n    }\n    /**\n     * Adds a timeout in milliseconds for the next operation\n     *\n     * <pre><code>\n     *\n     * io.timeout(1000).emit("some-event", (err, responses) => {\n     *   // ...\n     * });\n     *\n     * </pre></code>\n     *\n     * @param timeout\n     */\n    timeout(timeout) {\n        return this.sockets.timeout(timeout);\n    }\n    /**\n     * Returns the matching socket instances\n     *\n     * @public\n     */\n    fetchSockets() {\n        return this.sockets.fetchSockets();\n    }\n    /**\n     * Makes the matching socket instances join the specified rooms\n     *\n     * @param room\n     * @public\n     */\n    socketsJoin(room) {\n        return this.sockets.socketsJoin(room);\n    }\n    /**\n     * Makes the matching socket instances leave the specified rooms\n     *\n     * @param room\n     * @public\n     */\n    socketsLeave(room) {\n        return this.sockets.socketsLeave(room);\n    }\n    /**\n     * Makes the matching socket instances disconnect\n     *\n     * @param close - whether to close the underlying connection\n     * @public\n     */\n    disconnectSockets(close = false) {\n        return this.sockets.disconnectSockets(close);\n    }\n}\nexports.Server = Server;\n/**\n * Expose main namespace (/).\n */\nconst emitterMethods = Object.keys(events_1.EventEmitter.prototype).filter(function (key) {\n    return typeof events_1.EventEmitter.prototype[key] === "function";\n});\nemitterMethods.forEach(function (fn) {\n    Server.prototype[fn] = function () {\n        return this.sockets[fn].apply(this.sockets, arguments);\n    };\n});\nmodule.exports = (srv, opts) => new Server(srv, opts);\nmodule.exports.Server = Server;\nmodule.exports.Namespace = namespace_1.Namespace;\nmodule.exports.Socket = socket_1.Socket;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/socket.io/dist/index.js?')},"./node_modules/socket.io/dist/namespace.js":
/*!**************************************************!*\
  !*** ./node_modules/socket.io/dist/namespace.js ***!
  \**************************************************/function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { "default": mod };\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.Namespace = exports.RESERVED_EVENTS = void 0;\nconst socket_1 = __webpack_require__(/*! ./socket */ "./node_modules/socket.io/dist/socket.js");\nconst typed_events_1 = __webpack_require__(/*! ./typed-events */ "./node_modules/socket.io/dist/typed-events.js");\nconst debug_1 = __importDefault(__webpack_require__(/*! debug */ "./node_modules/debug/src/index.js"));\nconst broadcast_operator_1 = __webpack_require__(/*! ./broadcast-operator */ "./node_modules/socket.io/dist/broadcast-operator.js");\nconst debug = (0, debug_1.default)("socket.io:namespace");\nexports.RESERVED_EVENTS = new Set(["connect", "connection", "new_namespace"]);\nclass Namespace extends typed_events_1.StrictEventEmitter {\n    /**\n     * Namespace constructor.\n     *\n     * @param server instance\n     * @param name\n     */\n    constructor(server, name) {\n        super();\n        this.sockets = new Map();\n        /** @private */\n        this._fns = [];\n        /** @private */\n        this._ids = 0;\n        this.server = server;\n        this.name = name;\n        this._initAdapter();\n    }\n    /**\n     * Initializes the `Adapter` for this nsp.\n     * Run upon changing adapter by `Server#adapter`\n     * in addition to the constructor.\n     *\n     * @private\n     */\n    _initAdapter() {\n        // @ts-ignore\n        this.adapter = new (this.server.adapter())(this);\n    }\n    /**\n     * Sets up namespace middleware.\n     *\n     * @return self\n     * @public\n     */\n    use(fn) {\n        this._fns.push(fn);\n        return this;\n    }\n    /**\n     * Executes the middleware for an incoming client.\n     *\n     * @param socket - the socket that will get added\n     * @param fn - last fn call in the middleware\n     * @private\n     */\n    run(socket, fn) {\n        const fns = this._fns.slice(0);\n        if (!fns.length)\n            return fn(null);\n        function run(i) {\n            fns[i](socket, function (err) {\n                // upon error, short-circuit\n                if (err)\n                    return fn(err);\n                // if no middleware left, summon callback\n                if (!fns[i + 1])\n                    return fn(null);\n                // go on to next\n                run(i + 1);\n            });\n        }\n        run(0);\n    }\n    /**\n     * Targets a room when emitting.\n     *\n     * @param room\n     * @return self\n     * @public\n     */\n    to(room) {\n        return new broadcast_operator_1.BroadcastOperator(this.adapter).to(room);\n    }\n    /**\n     * Targets a room when emitting.\n     *\n     * @param room\n     * @return self\n     * @public\n     */\n    in(room) {\n        return new broadcast_operator_1.BroadcastOperator(this.adapter).in(room);\n    }\n    /**\n     * Excludes a room when emitting.\n     *\n     * @param room\n     * @return self\n     * @public\n     */\n    except(room) {\n        return new broadcast_operator_1.BroadcastOperator(this.adapter).except(room);\n    }\n    /**\n     * Adds a new client.\n     *\n     * @return {Socket}\n     * @private\n     */\n    _add(client, query, fn) {\n        debug("adding socket to nsp %s", this.name);\n        const socket = new socket_1.Socket(this, client, query);\n        this.run(socket, (err) => {\n            process.nextTick(() => {\n                if ("open" == client.conn.readyState) {\n                    if (err) {\n                        if (client.conn.protocol === 3) {\n                            return socket._error(err.data || err.message);\n                        }\n                        else {\n                            return socket._error({\n                                message: err.message,\n                                data: err.data,\n                            });\n                        }\n                    }\n                    // track socket\n                    this.sockets.set(socket.id, socket);\n                    // it\'s paramount that the internal `onconnect` logic\n                    // fires before user-set events to prevent state order\n                    // violations (such as a disconnection before the connection\n                    // logic is complete)\n                    socket._onconnect();\n                    if (fn)\n                        fn();\n                    // fire user-set events\n                    this.emitReserved("connect", socket);\n                    this.emitReserved("connection", socket);\n                }\n                else {\n                    debug("next called after client was closed - ignoring socket");\n                }\n            });\n        });\n        return socket;\n    }\n    /**\n     * Removes a client. Called by each `Socket`.\n     *\n     * @private\n     */\n    _remove(socket) {\n        if (this.sockets.has(socket.id)) {\n            this.sockets.delete(socket.id);\n        }\n        else {\n            debug("ignoring remove for %s", socket.id);\n        }\n    }\n    /**\n     * Emits to all clients.\n     *\n     * @return Always true\n     * @public\n     */\n    emit(ev, ...args) {\n        return new broadcast_operator_1.BroadcastOperator(this.adapter).emit(ev, ...args);\n    }\n    /**\n     * Sends a `message` event to all clients.\n     *\n     * @return self\n     * @public\n     */\n    send(...args) {\n        this.emit("message", ...args);\n        return this;\n    }\n    /**\n     * Sends a `message` event to all clients.\n     *\n     * @return self\n     * @public\n     */\n    write(...args) {\n        this.emit("message", ...args);\n        return this;\n    }\n    /**\n     * Emit a packet to other Socket.IO servers\n     *\n     * @param ev - the event name\n     * @param args - an array of arguments, which may include an acknowledgement callback at the end\n     * @public\n     */\n    serverSideEmit(ev, ...args) {\n        if (exports.RESERVED_EVENTS.has(ev)) {\n            throw new Error(`"${ev}" is a reserved event name`);\n        }\n        args.unshift(ev);\n        this.adapter.serverSideEmit(args);\n        return true;\n    }\n    /**\n     * Called when a packet is received from another Socket.IO server\n     *\n     * @param args - an array of arguments, which may include an acknowledgement callback at the end\n     *\n     * @private\n     */\n    _onServerSideEmit(args) {\n        super.emitUntyped.apply(this, args);\n    }\n    /**\n     * Gets a list of clients.\n     *\n     * @return self\n     * @public\n     */\n    allSockets() {\n        return new broadcast_operator_1.BroadcastOperator(this.adapter).allSockets();\n    }\n    /**\n     * Sets the compress flag.\n     *\n     * @param compress - if `true`, compresses the sending data\n     * @return self\n     * @public\n     */\n    compress(compress) {\n        return new broadcast_operator_1.BroadcastOperator(this.adapter).compress(compress);\n    }\n    /**\n     * Sets a modifier for a subsequent event emission that the event data may be lost if the client is not ready to\n     * receive messages (because of network slowness or other issues, or because they’re connected through long polling\n     * and is in the middle of a request-response cycle).\n     *\n     * @return self\n     * @public\n     */\n    get volatile() {\n        return new broadcast_operator_1.BroadcastOperator(this.adapter).volatile;\n    }\n    /**\n     * Sets a modifier for a subsequent event emission that the event data will only be broadcast to the current node.\n     *\n     * @return self\n     * @public\n     */\n    get local() {\n        return new broadcast_operator_1.BroadcastOperator(this.adapter).local;\n    }\n    /**\n     * Adds a timeout in milliseconds for the next operation\n     *\n     * <pre><code>\n     *\n     * io.timeout(1000).emit("some-event", (err, responses) => {\n     *   // ...\n     * });\n     *\n     * </pre></code>\n     *\n     * @param timeout\n     */\n    timeout(timeout) {\n        return new broadcast_operator_1.BroadcastOperator(this.adapter).timeout(timeout);\n    }\n    /**\n     * Returns the matching socket instances\n     *\n     * @public\n     */\n    fetchSockets() {\n        return new broadcast_operator_1.BroadcastOperator(this.adapter).fetchSockets();\n    }\n    /**\n     * Makes the matching socket instances join the specified rooms\n     *\n     * @param room\n     * @public\n     */\n    socketsJoin(room) {\n        return new broadcast_operator_1.BroadcastOperator(this.adapter).socketsJoin(room);\n    }\n    /**\n     * Makes the matching socket instances leave the specified rooms\n     *\n     * @param room\n     * @public\n     */\n    socketsLeave(room) {\n        return new broadcast_operator_1.BroadcastOperator(this.adapter).socketsLeave(room);\n    }\n    /**\n     * Makes the matching socket instances disconnect\n     *\n     * @param close - whether to close the underlying connection\n     * @public\n     */\n    disconnectSockets(close = false) {\n        return new broadcast_operator_1.BroadcastOperator(this.adapter).disconnectSockets(close);\n    }\n}\nexports.Namespace = Namespace;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/socket.io/dist/namespace.js?')},"./node_modules/socket.io/dist/parent-namespace.js":
/*!*********************************************************!*\
  !*** ./node_modules/socket.io/dist/parent-namespace.js ***!
  \*********************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.ParentNamespace = void 0;\nconst namespace_1 = __webpack_require__(/*! ./namespace */ "./node_modules/socket.io/dist/namespace.js");\nclass ParentNamespace extends namespace_1.Namespace {\n    constructor(server) {\n        super(server, "/_" + ParentNamespace.count++);\n        this.children = new Set();\n    }\n    /**\n     * @private\n     */\n    _initAdapter() {\n        const broadcast = (packet, opts) => {\n            this.children.forEach((nsp) => {\n                nsp.adapter.broadcast(packet, opts);\n            });\n        };\n        // @ts-ignore FIXME is there a way to declare an inner class in TypeScript?\n        this.adapter = { broadcast };\n    }\n    emit(ev, ...args) {\n        this.children.forEach((nsp) => {\n            nsp.emit(ev, ...args);\n        });\n        return true;\n    }\n    createChild(name) {\n        const namespace = new namespace_1.Namespace(this.server, name);\n        namespace._fns = this._fns.slice(0);\n        this.listeners("connect").forEach((listener) => namespace.on("connect", listener));\n        this.listeners("connection").forEach((listener) => namespace.on("connection", listener));\n        this.children.add(namespace);\n        this.server._nsps.set(name, namespace);\n        return namespace;\n    }\n    fetchSockets() {\n        // note: we could make the fetchSockets() method work for dynamic namespaces created with a regex (by sending the\n        // regex to the other Socket.IO servers, and returning the sockets of each matching namespace for example), but\n        // the behavior for namespaces created with a function is less clear\n        // note²: we cannot loop over each children namespace, because with multiple Socket.IO servers, a given namespace\n        // may exist on one node but not exist on another (since it is created upon client connection)\n        throw new Error("fetchSockets() is not supported on parent namespaces");\n    }\n}\nexports.ParentNamespace = ParentNamespace;\nParentNamespace.count = 0;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/socket.io/dist/parent-namespace.js?')},"./node_modules/socket.io/dist/socket.js":
/*!***********************************************!*\
  !*** ./node_modules/socket.io/dist/socket.js ***!
  \***********************************************/function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { "default": mod };\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.Socket = exports.RESERVED_EVENTS = void 0;\nconst socket_io_parser_1 = __webpack_require__(/*! socket.io-parser */ "./node_modules/socket.io-parser/dist/index.js");\nconst debug_1 = __importDefault(__webpack_require__(/*! debug */ "./node_modules/debug/src/index.js"));\nconst typed_events_1 = __webpack_require__(/*! ./typed-events */ "./node_modules/socket.io/dist/typed-events.js");\nconst base64id_1 = __importDefault(__webpack_require__(/*! base64id */ "./node_modules/base64id/lib/base64id.js"));\nconst broadcast_operator_1 = __webpack_require__(/*! ./broadcast-operator */ "./node_modules/socket.io/dist/broadcast-operator.js");\nconst debug = (0, debug_1.default)("socket.io:socket");\nexports.RESERVED_EVENTS = new Set([\n    "connect",\n    "connect_error",\n    "disconnect",\n    "disconnecting",\n    "newListener",\n    "removeListener",\n]);\nclass Socket extends typed_events_1.StrictEventEmitter {\n    /**\n     * Interface to a `Client` for a given `Namespace`.\n     *\n     * @param {Namespace} nsp\n     * @param {Client} client\n     * @param {Object} auth\n     * @package\n     */\n    constructor(nsp, client, auth) {\n        super();\n        this.nsp = nsp;\n        this.client = client;\n        /**\n         * Additional information that can be attached to the Socket instance and which will be used in the fetchSockets method\n         */\n        this.data = {};\n        this.connected = false;\n        this.acks = new Map();\n        this.fns = [];\n        this.flags = {};\n        this.server = nsp.server;\n        this.adapter = this.nsp.adapter;\n        if (client.conn.protocol === 3) {\n            // @ts-ignore\n            this.id = nsp.name !== "/" ? nsp.name + "#" + client.id : client.id;\n        }\n        else {\n            this.id = base64id_1.default.generateId(); // don\'t reuse the Engine.IO id because it\'s sensitive information\n        }\n        this.handshake = this.buildHandshake(auth);\n    }\n    /**\n     * Builds the `handshake` BC object\n     *\n     * @private\n     */\n    buildHandshake(auth) {\n        return {\n            headers: this.request.headers,\n            time: new Date() + "",\n            address: this.conn.remoteAddress,\n            xdomain: !!this.request.headers.origin,\n            // @ts-ignore\n            secure: !!this.request.connection.encrypted,\n            issued: +new Date(),\n            url: this.request.url,\n            // @ts-ignore\n            query: this.request._query,\n            auth,\n        };\n    }\n    /**\n     * Emits to this client.\n     *\n     * @return Always returns `true`.\n     * @public\n     */\n    emit(ev, ...args) {\n        if (exports.RESERVED_EVENTS.has(ev)) {\n            throw new Error(`"${ev}" is a reserved event name`);\n        }\n        const data = [ev, ...args];\n        const packet = {\n            type: socket_io_parser_1.PacketType.EVENT,\n            data: data,\n        };\n        // access last argument to see if it\'s an ACK callback\n        if (typeof data[data.length - 1] === "function") {\n            const id = this.nsp._ids++;\n            debug("emitting packet with ack id %d", id);\n            this.registerAckCallback(id, data.pop());\n            packet.id = id;\n        }\n        const flags = Object.assign({}, this.flags);\n        this.flags = {};\n        this.notifyOutgoingListeners(packet);\n        this.packet(packet, flags);\n        return true;\n    }\n    /**\n     * @private\n     */\n    registerAckCallback(id, ack) {\n        const timeout = this.flags.timeout;\n        if (timeout === undefined) {\n            this.acks.set(id, ack);\n            return;\n        }\n        const timer = setTimeout(() => {\n            debug("event with ack id %d has timed out after %d ms", id, timeout);\n            this.acks.delete(id);\n            ack.call(this, new Error("operation has timed out"));\n        }, timeout);\n        this.acks.set(id, (...args) => {\n            clearTimeout(timer);\n            ack.apply(this, [null, ...args]);\n        });\n    }\n    /**\n     * Targets a room when broadcasting.\n     *\n     * @param room\n     * @return self\n     * @public\n     */\n    to(room) {\n        return this.newBroadcastOperator().to(room);\n    }\n    /**\n     * Targets a room when broadcasting.\n     *\n     * @param room\n     * @return self\n     * @public\n     */\n    in(room) {\n        return this.newBroadcastOperator().in(room);\n    }\n    /**\n     * Excludes a room when broadcasting.\n     *\n     * @param room\n     * @return self\n     * @public\n     */\n    except(room) {\n        return this.newBroadcastOperator().except(room);\n    }\n    /**\n     * Sends a `message` event.\n     *\n     * @return self\n     * @public\n     */\n    send(...args) {\n        this.emit("message", ...args);\n        return this;\n    }\n    /**\n     * Sends a `message` event.\n     *\n     * @return self\n     * @public\n     */\n    write(...args) {\n        this.emit("message", ...args);\n        return this;\n    }\n    /**\n     * Writes a packet.\n     *\n     * @param {Object} packet - packet object\n     * @param {Object} opts - options\n     * @private\n     */\n    packet(packet, opts = {}) {\n        packet.nsp = this.nsp.name;\n        opts.compress = false !== opts.compress;\n        this.client._packet(packet, opts);\n    }\n    /**\n     * Joins a room.\n     *\n     * @param {String|Array} rooms - room or array of rooms\n     * @return a Promise or nothing, depending on the adapter\n     * @public\n     */\n    join(rooms) {\n        debug("join room %s", rooms);\n        return this.adapter.addAll(this.id, new Set(Array.isArray(rooms) ? rooms : [rooms]));\n    }\n    /**\n     * Leaves a room.\n     *\n     * @param {String} room\n     * @return a Promise or nothing, depending on the adapter\n     * @public\n     */\n    leave(room) {\n        debug("leave room %s", room);\n        return this.adapter.del(this.id, room);\n    }\n    /**\n     * Leave all rooms.\n     *\n     * @private\n     */\n    leaveAll() {\n        this.adapter.delAll(this.id);\n    }\n    /**\n     * Called by `Namespace` upon successful\n     * middleware execution (ie: authorization).\n     * Socket is added to namespace array before\n     * call to join, so adapters can access it.\n     *\n     * @private\n     */\n    _onconnect() {\n        debug("socket connected - writing packet");\n        this.connected = true;\n        this.join(this.id);\n        if (this.conn.protocol === 3) {\n            this.packet({ type: socket_io_parser_1.PacketType.CONNECT });\n        }\n        else {\n            this.packet({ type: socket_io_parser_1.PacketType.CONNECT, data: { sid: this.id } });\n        }\n    }\n    /**\n     * Called with each packet. Called by `Client`.\n     *\n     * @param {Object} packet\n     * @private\n     */\n    _onpacket(packet) {\n        debug("got packet %j", packet);\n        switch (packet.type) {\n            case socket_io_parser_1.PacketType.EVENT:\n                this.onevent(packet);\n                break;\n            case socket_io_parser_1.PacketType.BINARY_EVENT:\n                this.onevent(packet);\n                break;\n            case socket_io_parser_1.PacketType.ACK:\n                this.onack(packet);\n                break;\n            case socket_io_parser_1.PacketType.BINARY_ACK:\n                this.onack(packet);\n                break;\n            case socket_io_parser_1.PacketType.DISCONNECT:\n                this.ondisconnect();\n                break;\n        }\n    }\n    /**\n     * Called upon event packet.\n     *\n     * @param {Packet} packet - packet object\n     * @private\n     */\n    onevent(packet) {\n        const args = packet.data || [];\n        debug("emitting event %j", args);\n        if (null != packet.id) {\n            debug("attaching ack callback to event");\n            args.push(this.ack(packet.id));\n        }\n        if (this._anyListeners && this._anyListeners.length) {\n            const listeners = this._anyListeners.slice();\n            for (const listener of listeners) {\n                listener.apply(this, args);\n            }\n        }\n        this.dispatch(args);\n    }\n    /**\n     * Produces an ack callback to emit with an event.\n     *\n     * @param {Number} id - packet id\n     * @private\n     */\n    ack(id) {\n        const self = this;\n        let sent = false;\n        return function () {\n            // prevent double callbacks\n            if (sent)\n                return;\n            const args = Array.prototype.slice.call(arguments);\n            debug("sending ack %j", args);\n            self.packet({\n                id: id,\n                type: socket_io_parser_1.PacketType.ACK,\n                data: args,\n            });\n            sent = true;\n        };\n    }\n    /**\n     * Called upon ack packet.\n     *\n     * @private\n     */\n    onack(packet) {\n        const ack = this.acks.get(packet.id);\n        if ("function" == typeof ack) {\n            debug("calling ack %s with %j", packet.id, packet.data);\n            ack.apply(this, packet.data);\n            this.acks.delete(packet.id);\n        }\n        else {\n            debug("bad ack %s", packet.id);\n        }\n    }\n    /**\n     * Called upon client disconnect packet.\n     *\n     * @private\n     */\n    ondisconnect() {\n        debug("got disconnect packet");\n        this._onclose("client namespace disconnect");\n    }\n    /**\n     * Handles a client error.\n     *\n     * @private\n     */\n    _onerror(err) {\n        if (this.listeners("error").length) {\n            this.emitReserved("error", err);\n        }\n        else {\n            console.error("Missing error handler on `socket`.");\n            console.error(err.stack);\n        }\n    }\n    /**\n     * Called upon closing. Called by `Client`.\n     *\n     * @param {String} reason\n     * @throw {Error} optional error object\n     *\n     * @private\n     */\n    _onclose(reason) {\n        if (!this.connected)\n            return this;\n        debug("closing socket - reason %s", reason);\n        this.emitReserved("disconnecting", reason);\n        this.leaveAll();\n        this.nsp._remove(this);\n        this.client._remove(this);\n        this.connected = false;\n        this.emitReserved("disconnect", reason);\n        return;\n    }\n    /**\n     * Produces an `error` packet.\n     *\n     * @param {Object} err - error object\n     *\n     * @private\n     */\n    _error(err) {\n        this.packet({ type: socket_io_parser_1.PacketType.CONNECT_ERROR, data: err });\n    }\n    /**\n     * Disconnects this client.\n     *\n     * @param {Boolean} close - if `true`, closes the underlying connection\n     * @return {Socket} self\n     *\n     * @public\n     */\n    disconnect(close = false) {\n        if (!this.connected)\n            return this;\n        if (close) {\n            this.client._disconnect();\n        }\n        else {\n            this.packet({ type: socket_io_parser_1.PacketType.DISCONNECT });\n            this._onclose("server namespace disconnect");\n        }\n        return this;\n    }\n    /**\n     * Sets the compress flag.\n     *\n     * @param {Boolean} compress - if `true`, compresses the sending data\n     * @return {Socket} self\n     * @public\n     */\n    compress(compress) {\n        this.flags.compress = compress;\n        return this;\n    }\n    /**\n     * Sets a modifier for a subsequent event emission that the event data may be lost if the client is not ready to\n     * receive messages (because of network slowness or other issues, or because they’re connected through long polling\n     * and is in the middle of a request-response cycle).\n     *\n     * @return {Socket} self\n     * @public\n     */\n    get volatile() {\n        this.flags.volatile = true;\n        return this;\n    }\n    /**\n     * Sets a modifier for a subsequent event emission that the event data will only be broadcast to every sockets but the\n     * sender.\n     *\n     * @return {Socket} self\n     * @public\n     */\n    get broadcast() {\n        return this.newBroadcastOperator();\n    }\n    /**\n     * Sets a modifier for a subsequent event emission that the event data will only be broadcast to the current node.\n     *\n     * @return {Socket} self\n     * @public\n     */\n    get local() {\n        return this.newBroadcastOperator().local;\n    }\n    /**\n     * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n     * given number of milliseconds have elapsed without an acknowledgement from the client:\n     *\n     * ```\n     * socket.timeout(5000).emit("my-event", (err) => {\n     *   if (err) {\n     *     // the client did not acknowledge the event in the given delay\n     *   }\n     * });\n     * ```\n     *\n     * @returns self\n     * @public\n     */\n    timeout(timeout) {\n        this.flags.timeout = timeout;\n        return this;\n    }\n    /**\n     * Dispatch incoming event to socket listeners.\n     *\n     * @param {Array} event - event that will get emitted\n     * @private\n     */\n    dispatch(event) {\n        debug("dispatching an event %j", event);\n        this.run(event, (err) => {\n            process.nextTick(() => {\n                if (err) {\n                    return this._onerror(err);\n                }\n                if (this.connected) {\n                    super.emitUntyped.apply(this, event);\n                }\n                else {\n                    debug("ignore packet received after disconnection");\n                }\n            });\n        });\n    }\n    /**\n     * Sets up socket middleware.\n     *\n     * @param {Function} fn - middleware function (event, next)\n     * @return {Socket} self\n     * @public\n     */\n    use(fn) {\n        this.fns.push(fn);\n        return this;\n    }\n    /**\n     * Executes the middleware for an incoming event.\n     *\n     * @param {Array} event - event that will get emitted\n     * @param {Function} fn - last fn call in the middleware\n     * @private\n     */\n    run(event, fn) {\n        const fns = this.fns.slice(0);\n        if (!fns.length)\n            return fn(null);\n        function run(i) {\n            fns[i](event, function (err) {\n                // upon error, short-circuit\n                if (err)\n                    return fn(err);\n                // if no middleware left, summon callback\n                if (!fns[i + 1])\n                    return fn(null);\n                // go on to next\n                run(i + 1);\n            });\n        }\n        run(0);\n    }\n    /**\n     * Whether the socket is currently disconnected\n     */\n    get disconnected() {\n        return !this.connected;\n    }\n    /**\n     * A reference to the request that originated the underlying Engine.IO Socket.\n     *\n     * @public\n     */\n    get request() {\n        return this.client.request;\n    }\n    /**\n     * A reference to the underlying Client transport connection (Engine.IO Socket object).\n     *\n     * @public\n     */\n    get conn() {\n        return this.client.conn;\n    }\n    /**\n     * @public\n     */\n    get rooms() {\n        return this.adapter.socketRooms(this.id) || new Set();\n    }\n    /**\n     * Adds a listener that will be fired when any event is received. The event name is passed as the first argument to\n     * the callback.\n     *\n     * @param listener\n     * @public\n     */\n    onAny(listener) {\n        this._anyListeners = this._anyListeners || [];\n        this._anyListeners.push(listener);\n        return this;\n    }\n    /**\n     * Adds a listener that will be fired when any event is received. The event name is passed as the first argument to\n     * the callback. The listener is added to the beginning of the listeners array.\n     *\n     * @param listener\n     * @public\n     */\n    prependAny(listener) {\n        this._anyListeners = this._anyListeners || [];\n        this._anyListeners.unshift(listener);\n        return this;\n    }\n    /**\n     * Removes the listener that will be fired when any event is received.\n     *\n     * @param listener\n     * @public\n     */\n    offAny(listener) {\n        if (!this._anyListeners) {\n            return this;\n        }\n        if (listener) {\n            const listeners = this._anyListeners;\n            for (let i = 0; i < listeners.length; i++) {\n                if (listener === listeners[i]) {\n                    listeners.splice(i, 1);\n                    return this;\n                }\n            }\n        }\n        else {\n            this._anyListeners = [];\n        }\n        return this;\n    }\n    /**\n     * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n     * e.g. to remove listeners.\n     *\n     * @public\n     */\n    listenersAny() {\n        return this._anyListeners || [];\n    }\n    /**\n     * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n     * callback.\n     *\n     * @param listener\n     *\n     * <pre><code>\n     *\n     * socket.onAnyOutgoing((event, ...args) => {\n     *   console.log(event);\n     * });\n     *\n     * </pre></code>\n     *\n     * @public\n     */\n    onAnyOutgoing(listener) {\n        this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n        this._anyOutgoingListeners.push(listener);\n        return this;\n    }\n    /**\n     * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n     * callback. The listener is added to the beginning of the listeners array.\n     *\n     * @param listener\n     *\n     * <pre><code>\n     *\n     * socket.prependAnyOutgoing((event, ...args) => {\n     *   console.log(event);\n     * });\n     *\n     * </pre></code>\n     *\n     * @public\n     */\n    prependAnyOutgoing(listener) {\n        this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n        this._anyOutgoingListeners.unshift(listener);\n        return this;\n    }\n    /**\n     * Removes the listener that will be fired when any event is emitted.\n     *\n     * @param listener\n     *\n     * <pre><code>\n     *\n     * const handler = (event, ...args) => {\n     *   console.log(event);\n     * }\n     *\n     * socket.onAnyOutgoing(handler);\n     *\n     * // then later\n     * socket.offAnyOutgoing(handler);\n     *\n     * </pre></code>\n     *\n     * @public\n     */\n    offAnyOutgoing(listener) {\n        if (!this._anyOutgoingListeners) {\n            return this;\n        }\n        if (listener) {\n            const listeners = this._anyOutgoingListeners;\n            for (let i = 0; i < listeners.length; i++) {\n                if (listener === listeners[i]) {\n                    listeners.splice(i, 1);\n                    return this;\n                }\n            }\n        }\n        else {\n            this._anyOutgoingListeners = [];\n        }\n        return this;\n    }\n    /**\n     * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n     * e.g. to remove listeners.\n     *\n     * @public\n     */\n    listenersAnyOutgoing() {\n        return this._anyOutgoingListeners || [];\n    }\n    /**\n     * Notify the listeners for each packet sent (emit or broadcast)\n     *\n     * @param packet\n     *\n     * @private\n     */\n    notifyOutgoingListeners(packet) {\n        if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {\n            const listeners = this._anyOutgoingListeners.slice();\n            for (const listener of listeners) {\n                listener.apply(this, packet.data);\n            }\n        }\n    }\n    newBroadcastOperator() {\n        const flags = Object.assign({}, this.flags);\n        this.flags = {};\n        return new broadcast_operator_1.BroadcastOperator(this.adapter, new Set(), new Set([this.id]), flags);\n    }\n}\nexports.Socket = Socket;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/socket.io/dist/socket.js?')},"./node_modules/socket.io/dist/typed-events.js":
/*!*****************************************************!*\
  !*** ./node_modules/socket.io/dist/typed-events.js ***!
  \*****************************************************/(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.StrictEventEmitter = void 0;\nconst events_1 = __webpack_require__(/*! events */ "events");\n/**\n * Strictly typed version of an `EventEmitter`. A `TypedEventEmitter` takes type\n * parameters for mappings of event names to event data types, and strictly\n * types method calls to the `EventEmitter` according to these event maps.\n *\n * @typeParam ListenEvents - `EventsMap` of user-defined events that can be\n * listened to with `on` or `once`\n * @typeParam EmitEvents - `EventsMap` of user-defined events that can be\n * emitted with `emit`\n * @typeParam ReservedEvents - `EventsMap` of reserved events, that can be\n * emitted by socket.io with `emitReserved`, and can be listened to with\n * `listen`.\n */\nclass StrictEventEmitter extends events_1.EventEmitter {\n    /**\n     * Adds the `listener` function as an event listener for `ev`.\n     *\n     * @param ev Name of the event\n     * @param listener Callback function\n     */\n    on(ev, listener) {\n        return super.on(ev, listener);\n    }\n    /**\n     * Adds a one-time `listener` function as an event listener for `ev`.\n     *\n     * @param ev Name of the event\n     * @param listener Callback function\n     */\n    once(ev, listener) {\n        return super.once(ev, listener);\n    }\n    /**\n     * Emits an event.\n     *\n     * @param ev Name of the event\n     * @param args Values to send to listeners of this event\n     */\n    emit(ev, ...args) {\n        return super.emit(ev, ...args);\n    }\n    /**\n     * Emits a reserved event.\n     *\n     * This method is `protected`, so that only a class extending\n     * `StrictEventEmitter` can emit its own reserved events.\n     *\n     * @param ev Reserved event name\n     * @param args Arguments to emit along with the event\n     */\n    emitReserved(ev, ...args) {\n        return super.emit(ev, ...args);\n    }\n    /**\n     * Emits an event.\n     *\n     * This method is `protected`, so that only a class extending\n     * `StrictEventEmitter` can get around the strict typing. This is useful for\n     * calling `emit.apply`, which can be called as `emitUntyped.apply`.\n     *\n     * @param ev Event name\n     * @param args Arguments to emit along with the event\n     */\n    emitUntyped(ev, ...args) {\n        return super.emit(ev, ...args);\n    }\n    /**\n     * Returns the listeners listening to an event.\n     *\n     * @param event Event name\n     * @returns Array of listeners subscribed to `event`\n     */\n    listeners(event) {\n        return super.listeners(event);\n    }\n}\nexports.StrictEventEmitter = StrictEventEmitter;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/socket.io/dist/typed-events.js?')},"./node_modules/socket.io/dist/uws.js":
/*!********************************************!*\
  !*** ./node_modules/socket.io/dist/uws.js ***!
  \********************************************/function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { "default": mod };\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.serveFile = exports.restoreAdapter = exports.patchAdapter = void 0;\nconst socket_io_adapter_1 = __webpack_require__(/*! socket.io-adapter */ "./node_modules/socket.io-adapter/dist/index.js");\nconst fs_1 = __webpack_require__(/*! fs */ "fs");\nconst debug_1 = __importDefault(__webpack_require__(/*! debug */ "./node_modules/debug/src/index.js"));\nconst debug = (0, debug_1.default)("socket.io:adapter-uws");\nconst SEPARATOR = "\\x1f"; // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst { addAll, del, broadcast } = socket_io_adapter_1.Adapter.prototype;\nfunction patchAdapter(app /* : TemplatedApp */) {\n    socket_io_adapter_1.Adapter.prototype.addAll = function (id, rooms) {\n        const isNew = !this.sids.has(id);\n        addAll.call(this, id, rooms);\n        const socket = this.nsp.sockets.get(id);\n        if (!socket) {\n            return;\n        }\n        if (socket.conn.transport.name === "websocket") {\n            subscribe(this.nsp.name, socket, isNew, rooms);\n            return;\n        }\n        if (isNew) {\n            socket.conn.on("upgrade", () => {\n                const rooms = this.sids.get(id);\n                subscribe(this.nsp.name, socket, isNew, rooms);\n            });\n        }\n    };\n    socket_io_adapter_1.Adapter.prototype.del = function (id, room) {\n        del.call(this, id, room);\n        const socket = this.nsp.sockets.get(id);\n        if (socket && socket.conn.transport.name === "websocket") {\n            // @ts-ignore\n            const sessionId = socket.conn.id;\n            // @ts-ignore\n            const websocket = socket.conn.transport.socket;\n            const topic = `${this.nsp.name}${SEPARATOR}${room}`;\n            debug("unsubscribe connection %s from topic %s", sessionId, topic);\n            websocket.unsubscribe(topic);\n        }\n    };\n    socket_io_adapter_1.Adapter.prototype.broadcast = function (packet, opts) {\n        const useFastPublish = opts.rooms.size <= 1 && opts.except.size === 0;\n        if (!useFastPublish) {\n            broadcast.call(this, packet, opts);\n            return;\n        }\n        const flags = opts.flags || {};\n        const basePacketOpts = {\n            preEncoded: true,\n            volatile: flags.volatile,\n            compress: flags.compress,\n        };\n        packet.nsp = this.nsp.name;\n        const encodedPackets = this.encoder.encode(packet);\n        const topic = opts.rooms.size === 0\n            ? this.nsp.name\n            : `${this.nsp.name}${SEPARATOR}${opts.rooms.keys().next().value}`;\n        debug("fast publish to %s", topic);\n        // fast publish for clients connected with WebSocket\n        encodedPackets.forEach((encodedPacket) => {\n            const isBinary = typeof encodedPacket !== "string";\n            // "4" being the message type in the Engine.IO protocol, see https://github.com/socketio/engine.io-protocol\n            app.publish(topic, isBinary ? encodedPacket : "4" + encodedPacket, isBinary);\n        });\n        this.apply(opts, (socket) => {\n            if (socket.conn.transport.name !== "websocket") {\n                // classic publish for clients connected with HTTP long-polling\n                socket.client.writeToEngine(encodedPackets, basePacketOpts);\n            }\n        });\n    };\n}\nexports.patchAdapter = patchAdapter;\nfunction subscribe(namespaceName, socket, isNew, rooms) {\n    // @ts-ignore\n    const sessionId = socket.conn.id;\n    // @ts-ignore\n    const websocket = socket.conn.transport.socket;\n    if (isNew) {\n        debug("subscribe connection %s to topic %s", sessionId, namespaceName);\n        websocket.subscribe(namespaceName);\n    }\n    rooms.forEach((room) => {\n        const topic = `${namespaceName}${SEPARATOR}${room}`; // \'#\' can be used as wildcard\n        debug("subscribe connection %s to topic %s", sessionId, topic);\n        websocket.subscribe(topic);\n    });\n}\nfunction restoreAdapter() {\n    socket_io_adapter_1.Adapter.prototype.addAll = addAll;\n    socket_io_adapter_1.Adapter.prototype.del = del;\n    socket_io_adapter_1.Adapter.prototype.broadcast = broadcast;\n}\nexports.restoreAdapter = restoreAdapter;\nconst toArrayBuffer = (buffer) => {\n    const { buffer: arrayBuffer, byteOffset, byteLength } = buffer;\n    return arrayBuffer.slice(byteOffset, byteOffset + byteLength);\n};\n// imported from https://github.com/kolodziejczak-sz/uwebsocket-serve\nfunction serveFile(res /* : HttpResponse */, filepath) {\n    const { size } = (0, fs_1.statSync)(filepath);\n    const readStream = (0, fs_1.createReadStream)(filepath);\n    const destroyReadStream = () => !readStream.destroyed && readStream.destroy();\n    const onError = (error) => {\n        destroyReadStream();\n        throw error;\n    };\n    const onDataChunk = (chunk) => {\n        const arrayBufferChunk = toArrayBuffer(chunk);\n        const lastOffset = res.getWriteOffset();\n        const [ok, done] = res.tryEnd(arrayBufferChunk, size);\n        if (!done && !ok) {\n            readStream.pause();\n            res.onWritable((offset) => {\n                const [ok, done] = res.tryEnd(arrayBufferChunk.slice(offset - lastOffset), size);\n                if (!done && ok) {\n                    readStream.resume();\n                }\n                return ok;\n            });\n        }\n    };\n    res.onAborted(destroyReadStream);\n    readStream\n        .on("data", onDataChunk)\n        .on("error", onError)\n        .on("end", destroyReadStream);\n}\nexports.serveFile = serveFile;\n\n\n//# sourceURL=webpack://txadmin/./node_modules/socket.io/dist/uws.js?')},"./dynamicAds.json":
/*!*************************!*\
  !*** ./dynamicAds.json ***!
  \*************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"login":[{"text":"DDoS protected & preconfigured FiveM txAdmin servers","logoLightMode":"img/zap256_black.png","logoDarkMode":"img/zap256_white.png","link":"http://zap-hosting.com/txAdmin3"}],"main":[{"text":"DDoS protected & preconfigured <br> FiveM txAdmin servers","logoLightMode":"img/zap256_black.png","logoDarkMode":"img/zap256_white.png","linkDesktop":"http://zap-hosting.com/txAdmin5","linkMobile":"http://zap-hosting.com/txAdmin7"}]}\');\n\n//# sourceURL=webpack://txadmin/./dynamicAds.json?')},"./locale/ar.json":
/*!************************!*\
  !*** ./locale/ar.json ***!
  \************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"$meta":{"label":"Arabic","humanizer_language":"ar"},"restarter":{"start_timeout":"failed to start in time","crash_detected":"حدث خطأ","hang_detected":"hang detected","partial_hang_warn":"Due to a partial hang, this server will restart in 1 minute. Please disconnect now.","partial_hang_warn_discord":"Due to a partial hang, **%{servername}** will restart in 1 minute.","schedule_reason":"أعادة تشغيل مجدول في %{time}","schedule_warn":"سيتم أعادة تشغيل السيرفر خلال %{smart_count} دقيقة. يرجـى الخـروج الأن |||| سيتم أعادة تشغيل السيرفر خلال %{smart_count} دقائق.","schedule_warn_discord":"**%{servername}** سيتم أعادة تشغيل السيرفر خلال %{smart_count} دقيقة. |||| **%{servername}** سيتم أعادة تشغيل السيرفر خلال %{smart_count} دقائق."},"ban_messages":{"kick_temporary":"(%{author}) You have been banned from this server for \\\\"%{reason}\\\\". Your ban will expire in: %{expiration}.","kick_permanent":"(%{author}) You have been permanently banned from this server for \\\\"%{reason}\\\\".","reject_temporary":"You have been banned from this server.\\\\nYour ban will expire in: %{expiration}.\\\\nBan ID: %{id}.\\\\nBan Reason: %{reason}.\\\\nBanned by: %{author}.","reject_permanent":"You have been permanently banned from this server.\\\\nBan ID: %{id}.\\\\nBan Reason: %{reason}.\\\\nBanned by: %{author}."},"server_actions":{"restarting":"يتم أعادة التشغيل (%{reason}).","restarting_discord":"**%{servername}** يتم أعادة التشغيل (%{reason}).","stopping":"يـتم أيقاف تشغيل الـسيرفر (%{reason}).","stopping_discord":"**%{servername}** تم أيقاف السيرفر(%{reason}).","spawning_discord":"**%{servername}** جاري تشغيل السيرفر."},"discord":{"status_online":"**%{servername}**  حالياً **Online**!","status_offline":"**%{servername}** حالياً **Offline**!"},"nui_warning":{"title":"WARNING","warned_by":"Warned by:","instruction":"Hold [SPACE] for 10 seconds to dismiss this message."},"nui_menu":{"misc":{"help_message":"txAdmin Menu enabled, type /tx to open it.\\\\nYou can also configure a keybind at [Game Settings > Key Bindings > FiveM > Menu: Open Main Page].","menu_not_allowed":"Your identifiers do not match any admin registered on txAdmin.\\\\nIf you are registered on txAdmin, go to Admin Manager and make sure your identifiers are saved.","no_perms":"You do not have this permission.","unknown_error":"An unknown error occurred.","not_enabled":"The txAdmin Menu is not enabled! You can enable it in the txAdmin settings page.","announcement_title":"Server Announcement by %{author}:","dialog_empty_input":"You cannot have an empty input."},"frozen":{"froze_player":"You have frozen the player!","unfroze_player":"You have unfrozen the player!","was_frozen":"You have been frozen by a server admin!"},"common":{"cancel":"Cancel","submit":"Submit","error":"An error occurred","copied":"Copied to clipboard."},"page_main":{"tooltips":{"tooltip_1":"Use %{key} to switch pages & the arrow keys to navigate menu items","tooltip_2":"Certain menu items have sub options which can be selected using the left & right arrow keys"},"player_mode":{"title":"Player Mode","noclip":{"title":"NoClip","label":"Fly around","success":"NoClip enabled"},"godmode":{"title":"God","label":"Invincible","success":"God Mode enabled"},"normal":{"title":"Normal","label":"Default mode","success":"Returned to default player mode."}},"teleport":{"title":"Teleport","generic_success":"Sent you into the wormhole!","waypoint":{"title":"Waypoint","label":"Go to waypoint set","error":"You have no waypoint set."},"coords":{"title":"Coords","label":"Go to specified coords","dialog_title":"Teleport","dialog_desc":"Provide coordinates in an x, y, z format to go through the wormhole.","dialog_error":"Invalid coordinates. Must be in the format of: 111, 222, 33"},"back":{"title":"Back","label":"Go back to last location","error":"You don\\\'t have a last location to go back to!"},"copy":{"title":"Copy Coords","label":"Copy coords to clipboard."}},"vehicle":{"title":"Vehicle","onesync_error":"This option requires that OneSync be on for server entity handling","not_in_veh_error":"You are not currently in a vehicle!","spawn":{"title":"Spawn","label":"Spawn vehicle by model name","dialog_title":"Spawn vehicle","dialog_desc":"Enter in the model name of the vehicle you want to spawn.","dialog_success":"Vehicle spawned!","dialog_error":"The vehicle model name \\\'%{modelName}\\\' does not exist!","dialog_info":"Trying to spawn %{modelName}."},"fix":{"title":"Fix","label":"Fix the current vehicle","success":"Vehicle fixed!"},"delete":{"title":"Delete","label":"Delete the current vehicle","success":"Vehicle deleted!"}},"heal":{"title":"Heal","myself":{"title":"Myself","label":"Restores your health","success_0":"All healed up!","success_1":"You should be feeling good now!","success_2":"Restored to full!","success_3":"Ouchies fixed!"},"everyone":{"title":"Everyone","label":"Will heal & revive all players","success":"Healed and revived all players."}},"announcement":{"title":"Send Announcement","label":"Send an announcement to all online players.","dialog_desc":"Send an announcement to all online players.","dialog_placeholder":"Your announcement...","dialog_success":"Sending the announcement."},"clear_area":{"title":"Reset World Area","label":"Reset a specified world area to its default state","dialog_desc":"Please enter the radius where you wish to reset entities in (0-300). This will not clear entities spawned server side.","dialog_success":"Clearing area with radius of %{radius}m","dialog_error":"Invalid radius input. Try again."},"player_ids":{"title":"Toggle Player IDs","label":"Toggle showing player IDs (and other info) above the head of all nearby players","alert_show":"Showing nearby player NetIDs.","alert_hide":"Hiding nearby player NetIDs."}},"page_players":{"misc":{"online_players":"Online Players","players":"Players","search":"Search","zero_players":"No players found"},"sort":{"label":"Sort by","distance":"Distance","id":"ID","joined_first":"Joined First","joined_last":"Joined Last","closest":"Closest","farthest":"Farthest"},"card":{"health":"%{percentHealth}% health"}},"player_modal":{"misc":{"error":"An error occurred fetching this users details. The error is shown below:","target_not_found":"Was unable to find an online player with ID or an username of %{target}"},"tabs":{"actions":"Actions","info":"Info","ids":"IDs","history":"History","ban":"Ban"},"actions":{"title":"Player Actions","command_sent":"Command sent!","moderation":{"title":"Moderation","options":{"dm":"DM","warn":"Warn","kick":"Kick","set_admin":"Give Admin"},"dm_dialog":{"title":"Direct Message","description":"What is the reason for direct messaging this player?","placeholder":"Reason...","success":"Your DM has been sent!"},"warn_dialog":{"title":"Warn","description":"What is the reason for direct warning this player?","placeholder":"Reason...","success":"The player was warned!"},"kick_dialog":{"title":"Kick","description":"What is the reason for kicking this player?","placeholder":"Reason...","success":"The player was kicked!"}},"interaction":{"title":"Interaction","options":{"heal":"Heal","go_to":"Go to","bring":"Bring","spectate":"Spectate","toggle_freeze":"Toggle Freeze"},"notifications":{"heal_player":"Healing player","tp_player":"Teleporting to player","bring_player":"Summoning player","spectate_failed":"Failed to resolve the target! Exiting spectate.","spectate_yourself":"You cannot spectate yourself.","freeze_yourself":"You cannot freeze yourself."}},"troll":{"title":"Troll","options":{"drunk":"Make Drunk","fire":"Set Fire","wild_attack":"Wild attack"}}},"info":{"title":"Player info","session_time":"Session Time","play_time":"Play time","joined":"Joined","notes_placeholder":"Notes about this player"},"history":{"title":"Related history","action_types":{"warn":"WARNED","warn_revoked":"REVOKED the WARN for","ban":"BANNED","ban_revoked":"REVOKED the BAN for","whitelist":"WHITELIST","whitelist_revoked":"REVOKED the WHITELIST for"}},"ban":{"title":"Ban player","reason_placeholder":"Reason","duration_placeholder":"Duration","hours":"hours","days":"days","weeks":"weeks","months":"months","permanent":"Permanent","custom":"Custom","helper_text":"Please select a duration","submit":"Apply ban"}}}}\');\n\n//# sourceURL=webpack://txadmin/./locale/ar.json?')},"./locale/bs.json":
/*!************************!*\
  !*** ./locale/bs.json ***!
  \************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"$meta":{"label":"Bosnian","humanizer_language":"en"},"restarter":{"start_timeout":"Server nije uspio započeti na vrijeme","crash_detected":"Server se zaustavio","hang_detected":"hang detected","partial_hang_warn":"Due to a partial hang, this server will restart in 1 minute. Please disconnect now.","partial_hang_warn_discord":"Due to a partial hang, **%{servername}** will restart in 1 minute.","schedule_reason":"restart je zakazan za %{time}","schedule_warn":"Ovaj server je zakazan da se restarta za %{smart_count} minutu. Molim vas se isključitite. |||| Ovaj server ce se restartovati za %{smart_count} minuta.","schedule_warn_discord":"**%{servername}** restarta se za %{smart_count} minutu. |||| **%{servername}** restarta se za %{smart_count} minuta."},"ban_messages":{"kick_temporary":"(%{author}) Zabranjen vam je pristup ovom serveru zbog \\\\"%{reason}\\\\". Vaša zabrana istječe za: %{expiration}.","kick_permanent":"(%{author}) Zabranjen vam je pristup ovom serveru za uvjek zbog \\\\"%{reason}\\\\".","reject_temporary":"Zabranjen vam je pristup ovom serveru.\\\\n: %{expiration}.\\\\nBan ID: %{id}.\\\\n Razlog za zabranu: %{reason}.\\\\n%{author} vas je zabranio.","reject_permanent":"Zabranjen vam je pristup ovom serveru za uvjek.\\\\nBan ID: %{id}.\\\\n Razlog za zabranu: %{reason}.\\\\n%{author} vas je zabranio."},"server_actions":{"restarting":"Server se restartuje: (%{reason}).","restarting_discord":"**%{servername}** se restarta zbog: (%{reason}).","stopping":"Server je bio zaustavljien: (%{reason}).","stopping_discord":"**%{servername}** se gasi: (%{reason}).","spawning_discord":"**%{servername}** se pali"},"discord":{"status_online":"**%{servername}** je **Online**!","status_offline":"**%{servername}** je **Offline**!"},"nui_warning":{"title":"WARNING","warned_by":"Vas je upozorio","instruction":"držite [SPACE] 10 sekundi da vam se skine ova poruka."},"nui_menu":{"misc":{"help_message":"txAdmin Menu enabled, type /tx to open it.\\\\nYou can also configure a keybind at [Game Settings > Key Bindings > FiveM > Menu: Open Main Page].","menu_not_allowed":"Your identifiers do not match any admin registered on txAdmin.\\\\nIf you are registered on txAdmin, go to Admin Manager and make sure your identifiers are saved.","no_perms":"You do not have this permission.","unknown_error":"An unknown error occurred.","not_enabled":"The txAdmin Menu is not enabled! You can enable it in the txAdmin settings page.","announcement_title":"Server Announcement by %{author}:","dialog_empty_input":"You cannot have an empty input."},"frozen":{"froze_player":"You have frozen the player!","unfroze_player":"You have unfrozen the player!","was_frozen":"You have been frozen by a server admin!"},"common":{"cancel":"Cancel","submit":"Submit","error":"An error occurred","copied":"Copied to clipboard."},"page_main":{"tooltips":{"tooltip_1":"Use %{key} to switch pages & the arrow keys to navigate menu items","tooltip_2":"Certain menu items have sub options which can be selected using the left & right arrow keys"},"player_mode":{"title":"Player Mode","noclip":{"title":"NoClip","label":"Fly around","success":"NoClip enabled"},"godmode":{"title":"God","label":"Invincible","success":"God Mode enabled"},"normal":{"title":"Normal","label":"Default mode","success":"Returned to default player mode."}},"teleport":{"title":"Teleport","generic_success":"Sent you into the wormhole!","waypoint":{"title":"Waypoint","label":"Go to waypoint set","error":"You have no waypoint set."},"coords":{"title":"Coords","label":"Go to specified coords","dialog_title":"Teleport","dialog_desc":"Provide coordinates in an x, y, z format to go through the wormhole.","dialog_error":"Invalid coordinates. Must be in the format of: 111, 222, 33"},"back":{"title":"Back","label":"Go back to last location","error":"You don\\\'t have a last location to go back to!"},"copy":{"title":"Copy Coords","label":"Copy coords to clipboard."}},"vehicle":{"title":"Vehicle","onesync_error":"This option requires that OneSync be on for server entity handling","not_in_veh_error":"You are not currently in a vehicle!","spawn":{"title":"Spawn","label":"Spawn vehicle by model name","dialog_title":"Spawn vehicle","dialog_desc":"Enter in the model name of the vehicle you want to spawn.","dialog_success":"Vehicle spawned!","dialog_error":"The vehicle model name \\\'%{modelName}\\\' does not exist!","dialog_info":"Trying to spawn %{modelName}."},"fix":{"title":"Fix","label":"Fix the current vehicle","success":"Vehicle fixed!"},"delete":{"title":"Delete","label":"Delete the current vehicle","success":"Vehicle deleted!"}},"heal":{"title":"Heal","myself":{"title":"Myself","label":"Restores your health","success_0":"All healed up!","success_1":"You should be feeling good now!","success_2":"Restored to full!","success_3":"Ouchies fixed!"},"everyone":{"title":"Everyone","label":"Will heal & revive all players","success":"Healed and revived all players."}},"announcement":{"title":"Send Announcement","label":"Send an announcement to all online players.","dialog_desc":"Send an announcement to all online players.","dialog_placeholder":"Your announcement...","dialog_success":"Sending the announcement."},"clear_area":{"title":"Reset World Area","label":"Reset a specified world area to its default state","dialog_desc":"Please enter the radius where you wish to reset entities in (0-300). This will not clear entities spawned server side.","dialog_success":"Clearing area with radius of %{radius}m","dialog_error":"Invalid radius input. Try again."},"player_ids":{"title":"Toggle Player IDs","label":"Toggle showing player IDs (and other info) above the head of all nearby players","alert_show":"Showing nearby player NetIDs.","alert_hide":"Hiding nearby player NetIDs."}},"page_players":{"misc":{"online_players":"Online Players","players":"Players","search":"Search","zero_players":"No players found"},"sort":{"label":"Sort by","distance":"Distance","id":"ID","joined_first":"Joined First","joined_last":"Joined Last","closest":"Closest","farthest":"Farthest"},"card":{"health":"%{percentHealth}% health"}},"player_modal":{"misc":{"error":"An error occurred fetching this users details. The error is shown below:","target_not_found":"Was unable to find an online player with ID or an username of %{target}"},"tabs":{"actions":"Actions","info":"Info","ids":"IDs","history":"History","ban":"Ban"},"actions":{"title":"Player Actions","command_sent":"Command sent!","moderation":{"title":"Moderation","options":{"dm":"DM","warn":"Warn","kick":"Kick","set_admin":"Give Admin"},"dm_dialog":{"title":"Direct Message","description":"What is the reason for direct messaging this player?","placeholder":"Reason...","success":"Your DM has been sent!"},"warn_dialog":{"title":"Warn","description":"What is the reason for direct warning this player?","placeholder":"Reason...","success":"The player was warned!"},"kick_dialog":{"title":"Kick","description":"What is the reason for kicking this player?","placeholder":"Reason...","success":"The player was kicked!"}},"interaction":{"title":"Interaction","options":{"heal":"Heal","go_to":"Go to","bring":"Bring","spectate":"Spectate","toggle_freeze":"Toggle Freeze"},"notifications":{"heal_player":"Healing player","tp_player":"Teleporting to player","bring_player":"Summoning player","spectate_failed":"Failed to resolve the target! Exiting spectate.","spectate_yourself":"You cannot spectate yourself.","freeze_yourself":"You cannot freeze yourself."}},"troll":{"title":"Troll","options":{"drunk":"Make Drunk","fire":"Set Fire","wild_attack":"Wild attack"}}},"info":{"title":"Player info","session_time":"Session Time","play_time":"Play time","joined":"Joined","notes_placeholder":"Notes about this player"},"history":{"title":"Related history","action_types":{"warn":"WARNED","warn_revoked":"REVOKED the WARN for","ban":"BANNED","ban_revoked":"REVOKED the BAN for","whitelist":"WHITELIST","whitelist_revoked":"REVOKED the WHITELIST for"}},"ban":{"title":"Ban player","reason_placeholder":"Reason","duration_placeholder":"Duration","hours":"hours","days":"days","weeks":"weeks","months":"months","permanent":"Permanent","custom":"Custom","helper_text":"Please select a duration","submit":"Apply ban"}}}}\');\n\n//# sourceURL=webpack://txadmin/./locale/bs.json?')},"./locale/cs.json":
/*!************************!*\
  !*** ./locale/cs.json ***!
  \************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"$meta":{"label":"Czech","humanizer_language":"cs"},"restarter":{"start_timeout":"server se nestihl spustit v požadovaném čase","crash_detected":"pád detekován","hang_detected":"hang detected","partial_hang_warn":"Due to a partial hang, this server will restart in 1 minute. Please disconnect now.","partial_hang_warn_discord":"Due to a partial hang, **%{servername}** will restart in 1 minute.","schedule_reason":"plánovaný restart v %{time}","schedule_warn":"Tento server má naplánovaný restart za %{smart_count} minutu. Prosím odpojte se nyní. |||| Tento server má naplánovaný restart za %{smart_count} minut.","schedule_warn_discord":"**%{servername}** má naplánovaný restart za %{smart_count} minutu. |||| **%{servername}** má naplánovaný restart za %{smart_count} minut."},"ban_messages":{"kick_temporary":"(%{author}) Dostal jsi ban, důvod banu je: \\\\"%{reason}\\\\". Ban vyprší za: %{expiration}.","kick_permanent":"(%{author}) Byl ti permanentně odebrán přístup k serveru a to z důvodu: \\\\"%{reason}\\\\".","reject_temporary":"Dostal jsi ban.\\\\nTvůj ban vyprší za: %{expiration}.\\\\nID Banu je: %{id}.\\\\nDůvod banu: %{reason}.\\\\nBan ti byl udělen adminem: %{author}.","reject_permanent":"Byl ti permanetně odebrán přístup na server.\\\\nID Banu je: %{id}.\\\\nDůvod banu: %{reason}.\\\\nBan ti byl udělen adminem: %{author}."},"server_actions":{"restarting":"Restartování serveru (%{reason}).","restarting_discord":"**%{servername}** se restartuje (%{reason}).","stopping":"Server se vypíná (%{reason}).","stopping_discord":"**%{servername}** se vypíná (%{reason}).","spawning_discord":"**%{servername}** se spouští."},"discord":{"status_online":"**%{servername}** je nyní **Online**!","status_offline":"**%{servername}** je nyní **Offline**!"},"nui_warning":{"title":"VAROVÁNÍ","warned_by":"Varován od:","instruction":"Drž [MEZERNÍK] po dobu 10 sekund pro zavření této zprávy."},"nui_menu":{"misc":{"help_message":"txAdmin Menu enabled, type /tx to open it.\\\\nYou can also configure a keybind at [Game Settings > Key Bindings > FiveM > Menu: Open Main Page].","menu_not_allowed":"Your identifiers do not match any admin registered on txAdmin.\\\\nIf you are registered on txAdmin, go to Admin Manager and make sure your identifiers are saved.","no_perms":"You do not have this permission.","unknown_error":"An unknown error occurred.","not_enabled":"The txAdmin Menu is not enabled! You can enable it in the txAdmin settings page.","announcement_title":"Server Announcement by %{author}:","dialog_empty_input":"You cannot have an empty input."},"frozen":{"froze_player":"You have frozen the player!","unfroze_player":"You have unfrozen the player!","was_frozen":"You have been frozen by a server admin!"},"common":{"cancel":"Cancel","submit":"Submit","error":"An error occurred","copied":"Copied to clipboard."},"page_main":{"tooltips":{"tooltip_1":"Use %{key} to switch pages & the arrow keys to navigate menu items","tooltip_2":"Certain menu items have sub options which can be selected using the left & right arrow keys"},"player_mode":{"title":"Player Mode","noclip":{"title":"NoClip","label":"Fly around","success":"NoClip enabled"},"godmode":{"title":"God","label":"Invincible","success":"God Mode enabled"},"normal":{"title":"Normal","label":"Default mode","success":"Returned to default player mode."}},"teleport":{"title":"Teleport","generic_success":"Sent you into the wormhole!","waypoint":{"title":"Waypoint","label":"Go to waypoint set","error":"You have no waypoint set."},"coords":{"title":"Coords","label":"Go to specified coords","dialog_title":"Teleport","dialog_desc":"Provide coordinates in an x, y, z format to go through the wormhole.","dialog_error":"Invalid coordinates. Must be in the format of: 111, 222, 33"},"back":{"title":"Back","label":"Go back to last location","error":"You don\\\'t have a last location to go back to!"},"copy":{"title":"Copy Coords","label":"Copy coords to clipboard."}},"vehicle":{"title":"Vehicle","onesync_error":"This option requires that OneSync be on for server entity handling","not_in_veh_error":"You are not currently in a vehicle!","spawn":{"title":"Spawn","label":"Spawn vehicle by model name","dialog_title":"Spawn vehicle","dialog_desc":"Enter in the model name of the vehicle you want to spawn.","dialog_success":"Vehicle spawned!","dialog_error":"The vehicle model name \\\'%{modelName}\\\' does not exist!","dialog_info":"Trying to spawn %{modelName}."},"fix":{"title":"Fix","label":"Fix the current vehicle","success":"Vehicle fixed!"},"delete":{"title":"Delete","label":"Delete the current vehicle","success":"Vehicle deleted!"}},"heal":{"title":"Heal","myself":{"title":"Myself","label":"Restores your health","success_0":"All healed up!","success_1":"You should be feeling good now!","success_2":"Restored to full!","success_3":"Ouchies fixed!"},"everyone":{"title":"Everyone","label":"Will heal & revive all players","success":"Healed and revived all players."}},"announcement":{"title":"Send Announcement","label":"Send an announcement to all online players.","dialog_desc":"Send an announcement to all online players.","dialog_placeholder":"Your announcement...","dialog_success":"Sending the announcement."},"clear_area":{"title":"Reset World Area","label":"Reset a specified world area to its default state","dialog_desc":"Please enter the radius where you wish to reset entities in (0-300). This will not clear entities spawned server side.","dialog_success":"Clearing area with radius of %{radius}m","dialog_error":"Invalid radius input. Try again."},"player_ids":{"title":"Toggle Player IDs","label":"Toggle showing player IDs (and other info) above the head of all nearby players","alert_show":"Showing nearby player NetIDs.","alert_hide":"Hiding nearby player NetIDs."}},"page_players":{"misc":{"online_players":"Online Players","players":"Players","search":"Search","zero_players":"No players found"},"sort":{"label":"Sort by","distance":"Distance","id":"ID","joined_first":"Joined First","joined_last":"Joined Last","closest":"Closest","farthest":"Farthest"},"card":{"health":"%{percentHealth}% health"}},"player_modal":{"misc":{"error":"An error occurred fetching this users details. The error is shown below:","target_not_found":"Was unable to find an online player with ID or an username of %{target}"},"tabs":{"actions":"Actions","info":"Info","ids":"IDs","history":"History","ban":"Ban"},"actions":{"title":"Player Actions","command_sent":"Command sent!","moderation":{"title":"Moderation","options":{"dm":"DM","warn":"Warn","kick":"Kick","set_admin":"Give Admin"},"dm_dialog":{"title":"Direct Message","description":"What is the reason for direct messaging this player?","placeholder":"Reason...","success":"Your DM has been sent!"},"warn_dialog":{"title":"Warn","description":"What is the reason for direct warning this player?","placeholder":"Reason...","success":"The player was warned!"},"kick_dialog":{"title":"Kick","description":"What is the reason for kicking this player?","placeholder":"Reason...","success":"The player was kicked!"}},"interaction":{"title":"Interaction","options":{"heal":"Heal","go_to":"Go to","bring":"Bring","spectate":"Spectate","toggle_freeze":"Toggle Freeze"},"notifications":{"heal_player":"Healing player","tp_player":"Teleporting to player","bring_player":"Summoning player","spectate_failed":"Failed to resolve the target! Exiting spectate.","spectate_yourself":"You cannot spectate yourself.","freeze_yourself":"You cannot freeze yourself."}},"troll":{"title":"Troll","options":{"drunk":"Make Drunk","fire":"Set Fire","wild_attack":"Wild attack"}}},"info":{"title":"Player info","session_time":"Session Time","play_time":"Play time","joined":"Joined","notes_placeholder":"Notes about this player"},"history":{"title":"Related history","action_types":{"warn":"WARNED","warn_revoked":"REVOKED the WARN for","ban":"BANNED","ban_revoked":"REVOKED the BAN for","whitelist":"WHITELIST","whitelist_revoked":"REVOKED the WHITELIST for"}},"ban":{"title":"Ban player","reason_placeholder":"Reason","duration_placeholder":"Duration","hours":"hours","days":"days","weeks":"weeks","months":"months","permanent":"Permanent","custom":"Custom","helper_text":"Please select a duration","submit":"Apply ban"}}}}\');\n\n//# sourceURL=webpack://txadmin/./locale/cs.json?')},"./locale/da.json":
/*!************************!*\
  !*** ./locale/da.json ***!
  \************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"$meta":{"label":"Danish","humanizer_language":"da"},"restarter":{"start_timeout":"failed to start in time","crash_detected":"crash opdaget","hang_detected":"hang opdaget","partial_hang_warn":"På grund af et delvist hang vil denne server genstarte om 1 minut. Afbryd venligst forbindelsen nu.","partial_hang_warn_discord":"På grund af et delvist hang vil **%{servername}** genstarte om 1 minut.","schedule_reason":"planlagt genstart %{time}","schedule_warn":"Serveren genstarter om %{smart_count} minut. Vær venlig at disconnecte nu. |||| Serveren genstarter om %{smart_count} minutter.","schedule_warn_discord":"**%{servername}** genstarter om %{smart_count} minut. |||| **%{servername}** genstarter om %{smart_count} minutter."},"ban_messages":{"kick_temporary":"(%{author}) Du er blevet bannet fra denne server grundet \\\\"%{reason}\\\\". Dit ban udløber om: %{expiration}.","kick_permanent":"(%{author}) Du er blevet permanent udelukket fra denne server for \\\\"%{reason}\\\\".","reject_temporary":"Du er blevet bannet fra denne server.\\\\nDit ban udløber om: %{expiration}.\\\\ban-id: %{id}.Ban årsag: %{reason}.\\\\nUdelukket af: %{author}.","reject_permanent":"Du er blevet permanent udelukket fra denne server.\\\\nBan ID: %{id}.\\\\nBan grund: %{reason}.\\\\nBanned af: %{author}."},"server_actions":{"restarting":"Server genstarter: (%{reason}).","restarting_discord":"**%{servername}** genstarter: (%{reason}).","stopping":"Serveren er stoppet (%{reason}).","stopping_discord":"**%{servername}** er lukket ned: (%{reason}).","spawning_discord":"**%{servername}** starter."},"discord":{"status_online":"**%{servername}** er **Online**!","status_offline":"**%{servername}** er **Offline**!"},"nui_warning":{"title":"ADVARSEL","warned_by":"Advaret af:","instruction":"Hold [MELLEMRUM] nede i 10 sekunder for at afvise denne meddelelse."},"nui_menu":{"misc":{"help_message":"txAdmin Menu aktiveret, skriv /tx for at åbne den.\\\\nDu kan også konfigurere egne keybinds under [Spilindstillinger > Nøglebindinger > FiveM > Menu: Åbn hovedside].","menu_not_allowed":"Dine identifikatorer matcher ikke nogen admin registreret på txAdmin.\\\\nHvis du er registreret på txAdmin, skal du gå til Admin Manager og sørge for, at dine identifikatorer er gemt.","no_perms":"Du har ikke denne tilladelse.","unknown_error":"Der opstod en ukendt fejl.","not_enabled":"txAdmin-menuen er ikke aktiveret! Du kan aktivere det på siden med txAdmin-indstillinger.","announcement_title":"Servermeddelelse af %{author}:","dialog_empty_input":"Du kan ikke have et tomt input."},"frozen":{"froze_player":"Du har frosset spilleren!","unfroze_player":"Du har frigjort spilleren!","was_frozen":"Du er blevet frosset af en serveradministrator!"},"common":{"cancel":"Anuller","submit":"Indsend","error":"Der opstod en fejl","copied":"Kopieret til udklipsholder."},"page_main":{"tooltips":{"tooltip_1":"Brug %{key} for at skifte side og piletasterne for at navigere i menupunkter","tooltip_2":"Visse menupunkter har undervalg, som kan vælges ved hjælp af venstre og højre piletasterne"},"player_mode":{"title":"Player Mode","noclip":{"title":"NoClip","label":"Flyv rundt","success":"NoClip aktiveretr"},"godmode":{"title":"God","label":"Invincible","success":"God Mode aktiveretr"},"normal":{"title":"Normal","label":"Default mode","success":"Returned to default player mode."}},"teleport":{"title":"Teleport","generic_success":"Sent you into the wormhole!","waypoint":{"title":"Waypoint","label":"Gå til waypoint sat","error":"Du har intet waypoint sat."},"coords":{"title":"Coords","label":"Gå til angivne koordinater","dialog_title":"Teleporter","dialog_desc":"Angiv koordinater i et x-, y-, z-format for at gå gennem ormehullet.","dialog_error":"Ugyldige koordinater. Skal være i formatet: 111, 222, 33"},"back":{"title":"Tilbage","label":"Gå tilbage til sidste placering","error":"Du har ikke et sidste sted at gå tilbage til!"},"copy":{"title":"Kopier koordinater","label":"Kopiér koordinater til udklipsholder."}},"vehicle":{"title":"Køretøj","onesync_error":"Denne mulighed kræver, at OneSync er slået til for håndtering af serverenheder","not_in_veh_error":"Du er ikke i et køretøj i øjeblikket!","spawn":{"title":"Spawn","label":"Spawn køretøj efter modelnavn","dialog_title":"Spawn køretøj","dialog_desc":"Indtast modelnavnet på det køretøj, du ønsker at spawne.","dialog_success":"Køretøjet spawnede!","dialog_error":"Køretøjets modelnavn \\\'%{modelName}\\\' findes ikke!","dialog_info":"Forsøger at spawne %{modelName}."},"fix":{"title":"Fiks","label":"Ret det aktuelle køretøj","success":"Køretøj fikset!"},"delete":{"title":"Slet","label":"Slet det aktuelle køretøj","success":"Køretøj slettet!"}},"heal":{"title":"Helbred","myself":{"title":"Mig selv","label":"Genskaber dit helbred","success_0":"Alle er raske!","success_1":"Du burde have det godt nu!","success_2":"Gendannet til fuld!","success_3":"Ouchies rettet!"},"everyone":{"title":"Alle","label":"Vil helbrede og genoplive alle spillere","success":"Hellede og genoplivede alle spillere."}},"announcement":{"title":"Send meddelelse","label":"Send en meddelelse til alle onlinespillere.","dialog_desc":"Send en meddelelse til alle online spillere.","dialog_placeholder":"Din meddelelse...","dialog_success":"Sender meddelelsen."},"clear_area":{"title":"Nulstil verdensområde","label":"Nulstil et angivet verdensområde til dets standardtilstand","dialog_desc":"Indtast venligst den radius, hvor du ønsker at nulstille entiteter i (0-300). Dette vil ikke rydde entiteter affødt serverside.","dialog_success":"Rydning af område med en radius på %{radius}m","dialog_error":"Ugyldig radiusinput. Prøv igen."},"player_ids":{"title":"Vælg spiller-id\\\'er","label":"Skift visning af spiller-id\\\'er (og anden info) over hovedet på alle nærliggende spillere","alert_show":"Viser nærliggende spillerens NetID\\\'er.","alert_hide":"Skjuler afspillerens NetID\\\'er i nærheden."}},"page_players":{"misc":{"online_players":"Online spillere","players":"Spillere","search":"Søg","zero_players":"Ingen spillere fundet"},"sort":{"label":"Sortér efter","distance":"Afstand","id":"ID","joined_first":"Blev med først","joined_last":"Blev med sidst","closest":"Tættest","farthest":"Farthest"},"card":{"health":"%{percentHealth}% liv"}},"player_modal":{"misc":{"error":"Der opstod en fejl under hentning af denne brugers detaljer. Fejlen er vist nedenfor:","target_not_found":"Kunne ikke finde en online spiller med ID eller et brugernavn på %{target}"},"tabs":{"actions":"Handlinger","info":"Info","ids":"ID\\\'er","history":"Historie","ban":"Ban"},"actions":{"title":"Spillerhandlinger","command_sent":"Kommando sendt!","moderation":{"title":"Moderation","options":{"dm":"DM","warn":"Advar","kick":"Kick","set_admin":"Giv Admin"},"dm_dialog":{"title":"Direkte besked","description":"Hvad er årsagen til at sende direkte beskeder til denne afspiller?","placeholder":"Årsag...","success":"Din DM er blevet sendt!"},"warn_dialog":{"title":"Advar","description":"Hvad er grunden til at advare denne spiller direkte?","placeholder":"Årsag...","success":"Spilleren blev advaret!"},"kick_dialog":{"title":"kick","description":"Hvad er grunden til at kicke denne spiller?","placeholder":"Årsag...","success":"Spilleren blev kicket!"}},"interaction":{"title":"Interaktion","options":{"heal":"helbred","go_to":"Gå til","bring":"Bring","spectate":"Spectate","toggle_freeze":"Frys spilleren"},"notifications":{"heal_player":"Heal spiller","tp_player":"Teleporterer til spiller","bring_player":"Tp spilleren til dig","spectate_failed":"Det lykkedes ikke at spectate målet!Stopper med at spectate.","spectate_yourself":"Du kan ikke spectate dig selv.","freeze_yourself":"Du kan ikke fryse dig selv."}},"troll":{"title":"Troll","options":{"drunk":"Gør fuld","fire":"Sæt ild","wild_attack":"Vildt angreb"}}},"info":{"title":"Spiller info","session_time":"Sessionstid","play_time":"Spilletid","joined":"Joined","notes_placeholder":"Noter om denne afspiller"},"history":{"title":"Relateret historie","action_types":{"warn":"ADVARET","warn_revoked":"Tilbagekaldt advarslen for","ban":"BANNET","ban_revoked":"Tilbagekaldt forbuddet for","whitelist":"WHITELIST","whitelist_revoked":"Tilbagekaldt hvidlisten for"}},"ban":{"title":"Forbyd spiller","reason_placeholder":"Årsag","duration_placeholder":"Varighed","hours":"timer","days":"days","weeks":"uger","months":"måneder","permanent":"Permanent","custom":"Brugerdefineret","helper_text":"Vælg venligst en varighed","submit":"Anvend forbud"}}}}\');\n\n//# sourceURL=webpack://txadmin/./locale/da.json?')},"./locale/de.json":
/*!************************!*\
  !*** ./locale/de.json ***!
  \************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"$meta":{"label":"German","humanizer_language":"de"},"restarter":{"start_timeout":"Der Server konnte nicht rechtzeitig hochfahren.","crash_detected":"Crash erkannt","hang_detected":"Zeitweiliges Aufhängen des Servers erkannt","partial_hang_warn":"Aufgrund von zeitweiligen Lags startet dieser Server in einer Minute neu. Bitte trenne die Verbindung jetzt.","partial_hang_warn_discord":"Aufgrund von zeitweiligen Lags startet **%{servername}** in einer Minute neu.","schedule_reason":"Automatisierter Neustart um %{time}","schedule_warn":"Der Server wird in einer Minute neu gestartet. Bitte trenne die Verbindung jetzt. |||| Der Server wird in %{smart_count} Minuten neu gestartet.","schedule_warn_discord":"**%{servername}** wird in einer Minute neu gestartet. |||| **%{servername}** wird in %{smart_count} Minuten neu gestartet."},"ban_messages":{"kick_temporary":"(%{author}) Du wurdest von diesem Server für %{expiration} gebannt. Grund: \\\\"%{reason}\\\\".","kick_permanent":"(%{author}) Du wurdest permanent von diesem Server gebannt. Grund: \\\\"%{reason}\\\\".","reject_temporary":"Du wurdest von diesem Server gebannt.\\\\nDein Bann läuft ab in: %{expiration}.\\\\nBann ID: %{id}.\\\\nGrund: %{reason}.\\\\nGebannt von: %{author}.","reject_permanent":"Du wurdest permanent von diesem Server gebannt.\\\\nBann ID: %{id}.\\\\nGrund: %{reason}.\\\\nGebannt von: %{author}."},"server_actions":{"restarting":"Server Restart (%{reason}).","restarting_discord":"**%{servername}** wird neu gestartet (%{reason}).","stopping":"Server wird heruntergefahren (%{reason}).","stopping_discord":"**%{servername}** wird heruntergefahren (%{reason}).","spawning_discord":"**%{servername}** startet."},"discord":{"status_online":"**%{servername}** ist aktuell **Online**!","status_offline":"**%{servername}** ist aktuell **Offline**!"},"nui_warning":{"title":"VERWARNUNG","warned_by":"Verwarnt von:","instruction":"Halte deine [LEERTASTE] für 10 Sekunden gedrückt, um diese Mitteilung zu schließen."},"nui_menu":{"misc":{"help_message":"txAdmin Menü aktiviert, tippe /tx ein, um es zu öffnen.\\\\nDu kannst zusätzlich in den Einstellungen eine Taste zuweisen [Einstellungen > Steuerung > FiveM > txAdmin].","menu_not_allowed":"Deine IDs stimmen mit keiner bei txAdmin registrierten überein.\\\\n Wenn du bei txAdmin registriert bist, stelle sicher, dass die richtigen IDs gespeichert sind.","no_perms":"Du hast diese Berechtigung nicht.","unknown_error":"Ein unbekannter Fehler ist aufgetreten.","not_enabled":"Das txAdmin Menü ist nicht aktiviert! Du kannst es in den txAdmin Einstellungen aktivieren.","announcement_title":"Serverweite Ankündigung von %{author}:","dialog_empty_input":"Du kannst keine leere Eingabe haben."},"frozen":{"froze_player":"Du hast den Spieler eingefroren!","unfroze_player":"Du hast den Spieler entfroren!","was_frozen":"Du wurdest von einem Teammitglied eingefroren!"},"common":{"cancel":"Abbrechen","submit":"Senden","error":"Ein Fehler ist aufgetreten.","copied":"In die Zwischenablage kopiert."},"page_main":{"tooltips":{"tooltip_1":"Drücke %{key} um die Seiten zu wechseln & die Pfeiltasten um im Menü zu navigieren","tooltip_2":"Bestimmte Menüpunkte haben Unteroptionen, die mit den linken und rechten Pfeiltasten ausgewählt werden können"},"player_mode":{"title":"Spieler Modus","noclip":{"title":"NoClip","label":"Fliege herum","success":"NoClip aktiviert"},"godmode":{"title":"God Mode","label":"Unbesiegbar","success":"God Mode aktiviert"},"normal":{"title":"Normal","label":"Standard Modus","success":"Standard Modus wiederhergestellt."}},"teleport":{"title":"TP","generic_success":"Spieler teleportiert","waypoint":{"title":"Wegpunkt","label":"Teleportiere zu Wegpunkt","error":"Du hast keinen Wegpunkt gesetzt!"},"coords":{"title":"Koordinaten","label":"Teleportiere zu Koordinaten","dialog_title":"Teleportieren","dialog_desc":"Koordinaten im Format x, y, z eingeben.","dialog_error":"Ungültige Koordinaten. Muss im Format 111, 222, 33 sein!"},"back":{"title":"Zurück","label":"Zur letzten Position zurück","error":"Du hast keine letzte Position"},"copy":{"title":"Koordinaten Kopieren","label":"Kopiere in die Zwischenablage"}},"vehicle":{"title":"Fahzeug","onesync_error":"Diese Option erfordert, dass OneSync für die Verarbeitung von Server Objekten aktiviert ist","not_in_veh_error":"Du befindest dich in keinem Fahrzeug!","spawn":{"title":"Spawn","label":"Spawnname eingeben","dialog_title":"Fahrzeug spawnen","dialog_desc":"Gebe den Spawnname des Fahrzeugs ein, dass du spawnen möchtest.","dialog_success":"Fahrzeug gespawnt!","dialog_error":"Der Spawnname \\\'%{modelName}\\\' existiert nicht!","dialog_info":"Versuche %{modelName} zu spawnen."},"fix":{"title":"Reparieren","label":"Repariere dein Fahrzeug","success":"Fahrzeug repariert!"},"delete":{"title":"Entfernen","label":"Entferne das Fahrzeug","success":"Fahrzeug entfernt!"}},"heal":{"title":"Heilen","myself":{"title":"Selbst","label":"Heilen und wiederbeleben","success_0":"Alles geheilt!","success_1":"Jetzt solltest du dich besser fühlen!","success_2":"Wieder voll gemacht!","success_3":"Wunden geheilt!"},"everyone":{"title":"Alle Spieler","label":"Heilen und wiederbeleben","success":"Alle Spieler geheilt und wiederbelebt"}},"announcement":{"title":"Ankündigung schicken","label":"Ankündigung an alle Spieler schicken.","dialog_desc":"Enter the message you want to broadcast to all players.","dialog_placeholder":"Deine Ankündigung ...","dialog_success":"Versenden der Ankündigung!"},"clear_area":{"title":"Weltbereich zurücksetzen","label":"Reset a specified world area to its default state","dialog_desc":"Bitte gib einen Radius (0-300) ein, in dem du alle Objekte zurücksetzen möchtest. Dadurch werden nicht serverseitig erzeugte Objekte gelöscht","dialog_success":"Zurücksetzen im Radius von %{radius}m","dialog_error":"Ungültiger Radius! Gib einen Radius zwischen 0 und 300 ein."},"player_ids":{"title":"Spieler IDs (NameTags)","label":"Toggle showing player IDs (and other info) above the head of all nearby players","alert_show":"Spieler IDs (NameTags) aktiviert.","alert_hide":"Spieler IDs (NameTags) deaktiviert."}},"page_players":{"misc":{"online_players":"Alle Spieler","players":"Spieler","search":"Suche","zero_players":"Keine Spieler gefunden"},"sort":{"label":"Sortieren nach","distance":"Entfernung","id":"ID","joined_first":"steigend","joined_last":"fallend","closest":"am nächsten","farthest":"am weitesten"},"card":{"health":"%{percentHealth}% Leben"}},"player_modal":{"misc":{"error":"Beim Abrufen der Spielerdetails ist ein Fehler aufgetreten. Der Fehler wird unten angezeigt:","target_not_found":"Konnte keinen Spieler mit der ID oder dem Nutzernamen von %{target} finden"},"tabs":{"actions":"Aktionen","info":"Info","ids":"IDs","history":"Vergangenheit","ban":"Ban"},"actions":{"title":"Spieler Aktionen","command_sent":"Befehl geschickt!","moderation":{"title":"Moderation","options":{"dm":"DM","warn":"Verwarnen","kick":"Kicken","set_admin":"Admin verwalten"},"dm_dialog":{"title":"Direktnachricht","description":"Was ist der Grund, diesem Spieler eine Direktnachricht zu senden?","placeholder":"Grund...","success":"Deine DM wurde gesendet!"},"warn_dialog":{"title":"Warn","description":"Was ist der Grund, diesen Spieler zu verwarnen?","placeholder":"Reason...","success":"Der Spieler wurde verwarnt!"},"kick_dialog":{"title":"Kicken","description":"Was ist der Grund, diesen Spieler zu kicken?","placeholder":"Grund...","success":"Der Spieler wurde gekickt!"}},"interaction":{"title":"Interaktionen","options":{"heal":"Heilen","go_to":"Gehe zu","bring":"Bringen","spectate":"Beobachten","toggle_freeze":"Einfrieren"},"notifications":{"heal_player":"Spieler heilen","tp_player":"Zu Spieler teleportieren","bring_player":"Spieler teleportiert","spectate_failed":"Der Spieler konnte nicht beobachtet werden! Beobachtung verlassen.","spectate_yourself":"Du kannst dich nicht selbst beobachten","freeze_yourself":"Du kannst dich nicht selbst einfrieren"}},"troll":{"title":"Trolling","options":{"drunk":"Betrunken machen","fire":"Anzünden","wild_attack":"Wild Angriff"}}},"info":{"title":"Spielerinfos","session_time":"Aktive Sitzung","play_time":"Spielzeit","joined":"Beigetreten","notes_placeholder":"Notizen zu diesem Spieler"},"history":{"title":"Vergangenheit","action_types":{"warn":"VERWARNT","warn_revoked":"VERWARNUNG AUFGEHOBEN von:","ban":"GEBANNT","ban_revoked":"BAN AUFGEHOBEN von:","whitelist":"WHITELIST","whitelist_revoked":"WHITELIST ENTFERNT von:"}},"ban":{"title":"Spieler Bannen","reason_placeholder":"Grund","duration_placeholder":"Dauer","hours":"Stunden","days":"Tage","weeks":"Wochen","months":"Monate","permanent":"Permanent","custom":"Benutzerdefiniert","helper_text":"Bitte eine Dauer angeben","submit":"Ban ausführen"}}}}\');\n\n//# sourceURL=webpack://txadmin/./locale/de.json?')},"./locale/el.json":
/*!************************!*\
  !*** ./locale/el.json ***!
  \************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"$meta":{"label":"Greek","humanizer_language":"el"},"restarter":{"start_timeout":"failed to start in time","crash_detected":"Βρέθηκε Πρόβλημα","hang_detected":"hang detected","partial_hang_warn":"Due to a partial hang, this server will restart in 1 minute. Please disconnect now.","partial_hang_warn_discord":"Due to a partial hang, **%{servername}** will restart in 1 minute.","schedule_reason":"Προγραμματισμένη επανεκκίνηση σε %{time}","schedule_warn":"Αυτός ο διακομιστής έχει προγραμματιστεί για επανεκκίνηση %{smart_count} λεπτό. Παρακαλώ αποσυνδεθείτε τώρα. |||| Αυτός ο διακομιστής έχει προγραμματιστεί για επανεκκίνηση %{smart_count} λεπτά.","schedule_warn_discord":"**%{servername}** έχει προγραμματιστεί επανεκκίνηση σε %{smart_count} λεπτό. |||| **%{servername}** έχει προγραμματιστεί επανεκκίνηση σε %{smart_count} λεπτά."},"ban_messages":{"kick_temporary":"(%{author}) You have been banned from this server for \\\\"%{reason}\\\\". Your ban will expire in: %{expiration}.","kick_permanent":"(%{author}) You have been permanently banned from this server for \\\\"%{reason}\\\\".","reject_temporary":"You have been banned from this server.\\\\nYour ban will expire in: %{expiration}.\\\\nBan ID: %{id}.\\\\nBan Reason: %{reason}.\\\\nBanned by: %{author}.","reject_permanent":"You have been permanently banned from this server.\\\\nBan ID: %{id}.\\\\nBan Reason: %{reason}.\\\\nBanned by: %{author}."},"server_actions":{"restarting":"Επανεκκίνηση διακομιστή (%{reason}).","restarting_discord":"**%{servername}** εκτελείται επανεκκίνηση διακομιστή (%{reason}).","stopping":"Ο διακομιστής κλείνει (%{reason}).","stopping_discord":"Ο **%{servername}** κλείνει (%{reason}).","spawning_discord":"Ο **%{servername}** ανοίγει."},"discord":{"status_online":"Ο **%{servername}** είναι **Ανοιχτός**!","status_offline":"Ο **%{servername}** είναι **Κλειστός**!"},"nui_warning":{"title":"ΠΡΟΕΙΔΟΠΟΙΗΣΗ","warned_by":"Προειδοποιήθηκες από τον:","instruction":"Πάτα [SPACE] για 10 δευτερόλεπτα για να απορρίψεις αυτό το μήνυμα."},"nui_menu":{"misc":{"help_message":"txAdmin Menu enabled, type /tx to open it.\\\\nYou can also configure a keybind at [Game Settings > Key Bindings > FiveM > Menu: Open Main Page].","menu_not_allowed":"Your identifiers do not match any admin registered on txAdmin.\\\\nIf you are registered on txAdmin, go to Admin Manager and make sure your identifiers are saved.","no_perms":"You do not have this permission.","unknown_error":"An unknown error occurred.","not_enabled":"The txAdmin Menu is not enabled! You can enable it in the txAdmin settings page.","announcement_title":"Server Announcement by %{author}:","dialog_empty_input":"You cannot have an empty input."},"frozen":{"froze_player":"You have frozen the player!","unfroze_player":"You have unfrozen the player!","was_frozen":"You have been frozen by a server admin!"},"common":{"cancel":"Cancel","submit":"Submit","error":"An error occurred","copied":"Copied to clipboard."},"page_main":{"tooltips":{"tooltip_1":"Use %{key} to switch pages & the arrow keys to navigate menu items","tooltip_2":"Certain menu items have sub options which can be selected using the left & right arrow keys"},"player_mode":{"title":"Player Mode","noclip":{"title":"NoClip","label":"Fly around","success":"NoClip enabled"},"godmode":{"title":"God","label":"Invincible","success":"God Mode enabled"},"normal":{"title":"Normal","label":"Default mode","success":"Returned to default player mode."}},"teleport":{"title":"Teleport","generic_success":"Sent you into the wormhole!","waypoint":{"title":"Waypoint","label":"Go to waypoint set","error":"You have no waypoint set."},"coords":{"title":"Coords","label":"Go to specified coords","dialog_title":"Teleport","dialog_desc":"Provide coordinates in an x, y, z format to go through the wormhole.","dialog_error":"Invalid coordinates. Must be in the format of: 111, 222, 33"},"back":{"title":"Back","label":"Go back to last location","error":"You don\\\'t have a last location to go back to!"},"copy":{"title":"Copy Coords","label":"Copy coords to clipboard."}},"vehicle":{"title":"Vehicle","onesync_error":"This option requires that OneSync be on for server entity handling","not_in_veh_error":"You are not currently in a vehicle!","spawn":{"title":"Spawn","label":"Spawn vehicle by model name","dialog_title":"Spawn vehicle","dialog_desc":"Enter in the model name of the vehicle you want to spawn.","dialog_success":"Vehicle spawned!","dialog_error":"The vehicle model name \\\'%{modelName}\\\' does not exist!","dialog_info":"Trying to spawn %{modelName}."},"fix":{"title":"Fix","label":"Fix the current vehicle","success":"Vehicle fixed!"},"delete":{"title":"Delete","label":"Delete the current vehicle","success":"Vehicle deleted!"}},"heal":{"title":"Heal","myself":{"title":"Myself","label":"Restores your health","success_0":"All healed up!","success_1":"You should be feeling good now!","success_2":"Restored to full!","success_3":"Ouchies fixed!"},"everyone":{"title":"Everyone","label":"Will heal & revive all players","success":"Healed and revived all players."}},"announcement":{"title":"Send Announcement","label":"Send an announcement to all online players.","dialog_desc":"Send an announcement to all online players.","dialog_placeholder":"Your announcement...","dialog_success":"Sending the announcement."},"clear_area":{"title":"Reset World Area","label":"Reset a specified world area to its default state","dialog_desc":"Please enter the radius where you wish to reset entities in (0-300). This will not clear entities spawned server side.","dialog_success":"Clearing area with radius of %{radius}m","dialog_error":"Invalid radius input. Try again."},"player_ids":{"title":"Toggle Player IDs","label":"Toggle showing player IDs (and other info) above the head of all nearby players","alert_show":"Showing nearby player NetIDs.","alert_hide":"Hiding nearby player NetIDs."}},"page_players":{"misc":{"online_players":"Online Players","players":"Players","search":"Search","zero_players":"No players found"},"sort":{"label":"Sort by","distance":"Distance","id":"ID","joined_first":"Joined First","joined_last":"Joined Last","closest":"Closest","farthest":"Farthest"},"card":{"health":"%{percentHealth}% health"}},"player_modal":{"misc":{"error":"An error occurred fetching this users details. The error is shown below:","target_not_found":"Was unable to find an online player with ID or an username of %{target}"},"tabs":{"actions":"Actions","info":"Info","ids":"IDs","history":"History","ban":"Ban"},"actions":{"title":"Player Actions","command_sent":"Command sent!","moderation":{"title":"Moderation","options":{"dm":"DM","warn":"Warn","kick":"Kick","set_admin":"Give Admin"},"dm_dialog":{"title":"Direct Message","description":"What is the reason for direct messaging this player?","placeholder":"Reason...","success":"Your DM has been sent!"},"warn_dialog":{"title":"Warn","description":"What is the reason for direct warning this player?","placeholder":"Reason...","success":"The player was warned!"},"kick_dialog":{"title":"Kick","description":"What is the reason for kicking this player?","placeholder":"Reason...","success":"The player was kicked!"}},"interaction":{"title":"Interaction","options":{"heal":"Heal","go_to":"Go to","bring":"Bring","spectate":"Spectate","toggle_freeze":"Toggle Freeze"},"notifications":{"heal_player":"Healing player","tp_player":"Teleporting to player","bring_player":"Summoning player","spectate_failed":"Failed to resolve the target! Exiting spectate.","spectate_yourself":"You cannot spectate yourself.","freeze_yourself":"You cannot freeze yourself."}},"troll":{"title":"Troll","options":{"drunk":"Make Drunk","fire":"Set Fire","wild_attack":"Wild attack"}}},"info":{"title":"Player info","session_time":"Session Time","play_time":"Play time","joined":"Joined","notes_placeholder":"Notes about this player"},"history":{"title":"Related history","action_types":{"warn":"WARNED","warn_revoked":"REVOKED the WARN for","ban":"BANNED","ban_revoked":"REVOKED the BAN for","whitelist":"WHITELIST","whitelist_revoked":"REVOKED the WHITELIST for"}},"ban":{"title":"Ban player","reason_placeholder":"Reason","duration_placeholder":"Duration","hours":"hours","days":"days","weeks":"weeks","months":"months","permanent":"Permanent","custom":"Custom","helper_text":"Please select a duration","submit":"Apply ban"}}}}\');\n\n//# sourceURL=webpack://txadmin/./locale/el.json?')},"./locale/en.json":
/*!************************!*\
  !*** ./locale/en.json ***!
  \************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"$meta":{"label":"English","humanizer_language":"en"},"restarter":{"start_timeout":"failed to start in time","crash_detected":"crash detected","hang_detected":"hang detected","partial_hang_warn":"Due to a partial hang, this server will restart in 1 minute. Please disconnect now.","partial_hang_warn_discord":"Due to a partial hang, **%{servername}** will restart in 1 minute.","schedule_reason":"scheduled restart at %{time}","schedule_warn":"This server is scheduled to restart in %{smart_count} minute. Please disconnect now. |||| This server is scheduled to restart in %{smart_count} minutes.","schedule_warn_discord":"**%{servername}** is scheduled to restart in %{smart_count} minute. |||| **%{servername}** is scheduled to restart in %{smart_count} minutes."},"ban_messages":{"kick_temporary":"(%{author}) You have been banned from this server for \\\\"%{reason}\\\\". Your ban will expire in: %{expiration}.","kick_permanent":"(%{author}) You have been permanently banned from this server for \\\\"%{reason}\\\\".","reject_temporary":"You have been banned from this server.\\\\nYour ban will expire in: %{expiration}.\\\\nBan ID: %{id}.\\\\nBan Reason: %{reason}.\\\\nBanned by: %{author}.","reject_permanent":"You have been permanently banned from this server.\\\\nBan ID: %{id}.\\\\nBan Reason: %{reason}.\\\\nBanned by: %{author}."},"server_actions":{"restarting":"Server restarting (%{reason}).","restarting_discord":"**%{servername}** is restarting (%{reason}).","stopping":"Server shutting down (%{reason}).","stopping_discord":"**%{servername}** is shutting down (%{reason}).","spawning_discord":"**%{servername}** is starting."},"discord":{"status_online":"**%{servername}** is currently **Online**!","status_offline":"**%{servername}** is currently **Offline**!"},"nui_warning":{"title":"WARNING","warned_by":"Warned by:","instruction":"Hold [SPACE] for 10 seconds to dismiss this message."},"nui_menu":{"misc":{"help_message":"txAdmin Menu enabled, type /tx to open it.\\\\nYou can also configure a keybind at [Game Settings > Key Bindings > FiveM > Menu: Open Main Page].","menu_not_allowed":"Your identifiers do not match any admin registered on txAdmin.\\\\nIf you are registered on txAdmin, go to Admin Manager and make sure your identifiers are saved.","no_perms":"You do not have this permission.","unknown_error":"An unknown error occurred.","not_enabled":"The txAdmin Menu is not enabled! You can enable it in the txAdmin settings page.","announcement_title":"Server Announcement by %{author}:","dialog_empty_input":"You cannot have an empty input."},"frozen":{"froze_player":"You have frozen the player!","unfroze_player":"You have unfrozen the player!","was_frozen":"You have been frozen by a server admin!"},"common":{"cancel":"Cancel","submit":"Submit","error":"An error occurred","copied":"Copied to clipboard."},"page_main":{"tooltips":{"tooltip_1":"Use %{key} to switch pages & the arrow keys to navigate menu items","tooltip_2":"Certain menu items have sub options which can be selected using the left & right arrow keys"},"player_mode":{"title":"Player Mode","noclip":{"title":"NoClip","label":"Toggle NoClip, allowing you to move through walls and other objects","success":"NoClip enabled"},"godmode":{"title":"God","label":"Toggle invincibility, preventing you from taking damage","success":"God Mode enabled"},"normal":{"title":"Normal","label":"Returns yourself back to the default/normal player mode","success":"Returned to default player mode."}},"teleport":{"title":"Teleport","generic_success":"Sent you into the wormhole!","waypoint":{"title":"Waypoint","label":"Teleport to the custom waypoint set on the map","error":"You have no waypoint set."},"coords":{"title":"Coords","label":"Teleport to the provided coordinates","dialog_title":"Teleport","dialog_desc":"Provide coordinates in an x, y, z format to go through the wormhole.","dialog_error":"Invalid coordinates. Must be in the format of: 111, 222, 33"},"back":{"title":"Back","label":"Returns to the location prior to last teleport","error":"You don\\\'t have a last location to go back to!"},"copy":{"title":"Copy Coords","label":"Copy the current world coordinates to your clipboard"}},"vehicle":{"title":"Vehicle","onesync_error":"This option requires that OneSync be on for server entity handling","not_in_veh_error":"You are not currently in a vehicle!","spawn":{"title":"Spawn","label":"Spawn a given vehicle from its model name","dialog_title":"Spawn vehicle","dialog_desc":"Enter in the model name of the vehicle you want to spawn.","dialog_success":"Vehicle spawned!","dialog_error":"The vehicle model name \\\'%{modelName}\\\' does not exist!","dialog_info":"Trying to spawn %{modelName}."},"fix":{"title":"Fix","label":"Will repair the vehicle to its maximum health","success":"Vehicle fixed!"},"delete":{"title":"Delete","label":"Deletes the vehicle the player is currently in","success":"Vehicle deleted!"}},"heal":{"title":"Heal","myself":{"title":"Myself","label":"Will heal yourself to the current ped\\\'s maximum","success_0":"All healed up!","success_1":"You should be feeling good now!","success_2":"Restored to full!","success_3":"Ouchies fixed!"},"everyone":{"title":"Everyone","label":"Will heal & revive all connected players","success":"Healed and revived all players."}},"announcement":{"title":"Send Announcement","label":"Send an announcement to all online players.","dialog_desc":"Enter the message you want to broadcast to all players.","dialog_placeholder":"Your announcement...","dialog_success":"Sending the announcement."},"clear_area":{"title":"Reset World Area","label":"Reset a specified world area to its default state","dialog_desc":"Please enter the radius where you wish to reset entities in (0-300). This will not clear entities spawned server side.","dialog_success":"Clearing area with radius of %{radius}m","dialog_error":"Invalid radius input. Try again."},"player_ids":{"title":"Toggle Player IDs","label":"Toggle showing player IDs (and other info) above the head of all nearby players","alert_show":"Showing nearby player NetIDs.","alert_hide":"Hiding nearby player NetIDs."}},"page_players":{"misc":{"online_players":"Online Players","players":"Players","search":"Search","zero_players":"No players found"},"sort":{"label":"Sort by","distance":"Distance","id":"ID","joined_first":"Joined First","joined_last":"Joined Last","closest":"Closest","farthest":"Farthest"},"card":{"health":"%{percentHealth}% health"}},"player_modal":{"misc":{"error":"An error occurred fetching this users details. The error is shown below:","target_not_found":"Was unable to find an online player with ID or an username of %{target}"},"tabs":{"actions":"Actions","info":"Info","ids":"IDs","history":"History","ban":"Ban"},"actions":{"title":"Player Actions","command_sent":"Command sent!","moderation":{"title":"Moderation","options":{"dm":"DM","warn":"Warn","kick":"Kick","set_admin":"Give Admin"},"dm_dialog":{"title":"Direct Message","description":"What is the reason for direct messaging this player?","placeholder":"Reason...","success":"Your DM has been sent!"},"warn_dialog":{"title":"Warn","description":"What is the reason for direct warning this player?","placeholder":"Reason...","success":"The player was warned!"},"kick_dialog":{"title":"Kick","description":"What is the reason for kicking this player?","placeholder":"Reason...","success":"The player was kicked!"}},"interaction":{"title":"Interaction","options":{"heal":"Heal","go_to":"Go to","bring":"Bring","spectate":"Spectate","toggle_freeze":"Toggle Freeze"},"notifications":{"heal_player":"Healing player","tp_player":"Teleporting to player","bring_player":"Summoning player","spectate_failed":"Failed to resolve the target! Exiting spectate.","spectate_yourself":"You cannot spectate yourself.","freeze_yourself":"You cannot freeze yourself."}},"troll":{"title":"Troll","options":{"drunk":"Make Drunk","fire":"Set Fire","wild_attack":"Wild attack"}}},"info":{"title":"Player info","session_time":"Session Time","play_time":"Play time","joined":"Joined","notes_placeholder":"Notes about this player"},"history":{"title":"Related history","action_types":{"warn":"WARNED","warn_revoked":"REVOKED the WARN for","ban":"BANNED","ban_revoked":"REVOKED the BAN for","whitelist":"WHITELIST","whitelist_revoked":"REVOKED the WHITELIST for"}},"ban":{"title":"Ban player","reason_placeholder":"Reason","duration_placeholder":"Duration","hours":"hours","days":"days","weeks":"weeks","months":"months","permanent":"Permanent","custom":"Custom","helper_text":"Please select a duration","submit":"Apply ban"}}}}\');\n\n//# sourceURL=webpack://txadmin/./locale/en.json?')},"./locale/es.json":
/*!************************!*\
  !*** ./locale/es.json ***!
  \************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"$meta":{"label":"Spanish","humanizer_language":"es"},"restarter":{"start_timeout":"Se ha agotado el tiempo de espera para el arranque.","crash_detected":"Caída del servidor detectada.","hang_detected":"Suspensión detectada","partial_hang_warn":"Debido a una suspensión parcial, el servidor se reiniciará en 1 minutos. Por favor, desconectate ahora.","partial_hang_warn_discord":"Debido a una suspensión parcial, **%{servername}** se reiniciará en un minuto.","schedule_reason":"Reinicio programado a las %{time}","schedule_warn":"El servidor se va a reiniciar en %{smart_count} minutos. Por favor desconéctense. |||| El servidor se va a reiniciar en %{smart_count} minutos.","schedule_warn_discord":"**%{servername}** El servidor se va a reiniciar en %{smart_count} minutos. |||| **%{servername}** El servidor se va a reiniciar en %{smart_count} minutos."},"ban_messages":{"kick_temporary":"(%{author}) Has sido baneado del servidor por \\\\"%{reason}\\\\". Tu baneo expirará en: %{expiration}.","kick_permanent":"(%{author}) Has sido baneado permanentemente del servidor por \\\\"%{reason}\\\\".","reject_temporary":"Has sido baneado del servidor.\\\\nTu baneo expirará en: %{expiration}.\\\\nID del baneo: %{id}.\\\\nRazón del baneo: %{reason}.\\\\nBaneado por: %{author}.","reject_permanent":"Has sido baneado permanentemente del servidor.\\\\nID del baneo: %{id}.\\\\nRazón del baneo: %{reason}.\\\\nBaneado por: %{author}."},"server_actions":{"restarting":"Reiniciando Servidor (%{reason}).","restarting_discord":"**%{servername}** se está reiniciando: (%{reason}).","stopping":"Apagando el servidor: (%{reason}).","stopping_discord":"**%{servername}** se está apagando (%{reason}).","spawning_discord":"**%{servername}** está iniciandose."},"discord":{"status_online":"**%{servername}** se encuentra **Online**!","status_offline":"**%{servername}** se encuentra **Offline**!"},"nui_warning":{"title":"ADVERTENCIA","warned_by":"Advertido por:","instruction":"Presione [ESPACIO] durante 10 segundos para descartar este mensaje."},"nui_menu":{"misc":{"help_message":"Menú txAdmin disponible, escribe /tx para abrirlo.\\\\nTambien puedes configurar una asignación de teclas en [Ajustes > Asignación de teclas > FiveM > Menu: Abrir página principal].","menu_not_allowed":"Tus identificadores no estan registrados en txAdmin.\\\\nSi estas registrado en txAdmin, ve a gestor de administradores y asegurate que tus identificadores estan guardados.","no_perms":"No tienes este permiso","unknown_error":"Ha ocurrido un error.","not_enabled":"¡Menú txAdmin no está activado! Puedes activarlo en la página de ajustes de txAdmin.","announcement_title":"Anuncio del servidor de %{author}:","dialog_empty_input":"La entrada no puede estar vacía."},"frozen":{"froze_player":"¡Has congelado al jugador!","unfroze_player":"¡Has descongelado al jugador!","was_frozen":"¡Has sido congelado por un administrador!"},"common":{"cancel":"Cancelar","submit":"Enviar","error":"Ha ocurrido un error","copied":"Copiado al portapapeles."},"page_main":{"tooltips":{"tooltip_1":"Pulsa %{key} para cambiar entre páginas y las flechas para cambiar entre las opciones del menú","tooltip_2":"Algunos elementos del menú tienen sub-opciones que pueden ser seleccionadas usando las flechas izquierda y derecha."},"player_mode":{"title":"Modo del jugador","noclip":{"title":"NoClip","label":"Vuela!","success":"NoClip activado"},"godmode":{"title":"God","label":"Invencible","success":"God Mode activado"},"normal":{"title":"Normal","label":"Modo por defecto","success":"Volviendo al modo por defecto."}},"teleport":{"title":"Teletransporte","generic_success":"¡A traves del agujero de gusano!","waypoint":{"title":"Marcador","label":"Ve al marcador puesto","error":"No tienes ningún marcador puesto."},"coords":{"title":"Coordenadas","label":"Ir a coordenadas","dialog_title":"Teletransporte","dialog_desc":"Proporciona unas coordenadas en formato x, y, z para ir por el agujero de gusano.","dialog_error":"Coordenadas inválidas. El formato debe ser: 111, 222, 33"},"back":{"title":"Volver","label":"Vuelve a la última localización","error":"¡No tienes una última localización a la que ir!"},"copy":{"title":"Copiar coordenadas","label":"Copia las coordenadas al portapapeles."}},"vehicle":{"title":"Vehículo","onesync_error":"Esta opción requiere OneSync On para gestionar las entidades desde el servidor","not_in_veh_error":"¡No estás en ningún vehículo!","spawn":{"title":"Generar","label":"Genera un vehículo","dialog_title":"Generar vehículo","dialog_desc":"Escribe el nombre de modelo del vehículo que quieres generar.","dialog_success":"¡Vehículo generado!","dialog_error":"¡El vehículo \\\'%{modelName}\\\' no existe!","dialog_info":"Intentando generar %{modelName}."},"fix":{"title":"Arreglar","label":"Arregla el vehículo actual","success":"¡Vehículo arreglado!"},"delete":{"title":"Borrar","label":"Borra el vehículo actual","success":"¡Vehículo borrado!"}},"heal":{"title":"Curar","myself":{"title":"A mí mismo","label":"Regenera tu vida","success_0":"¡Todo curado!","success_1":"¡Deberías sentirte mejor!","success_2":"¡A tope!","success_3":"¡Sana, sana, pata de rana!"},"everyone":{"title":"A todos","label":"Cura y revive a todos","success":"Todos los jugadores han sido revividos y curados."}},"announcement":{"title":"Enviar anuncio","label":"Envía un comunicado a todos los jugadores conectados.","dialog_desc":"Ingrese el mensaje que quiere enviar a todos los jugadores.","dialog_placeholder":"Tu comunicado...","dialog_success":"Enviando el anuncio."},"clear_area":{"title":"Reiniciar área del mundo","label":"Reinicia un área específica del mundo a su estado por defecto","dialog_desc":"Por favor introduce el radio del área que quieres reiniciar entre (0-300). Esto no borrará entidades creadas por el servidor.","dialog_success":"Limpiando área con radio de %{radius}m","dialog_error":"Radio inválido. Prueba otra vez."},"player_ids":{"title":"Altenar IDs de jugadores","label":"Alternar el mostrar los IDs de jugadores (y otra información) sobre la cabeza de los jugadores cercanos","alert_show":"Enseñado NetIDs de jugadores cercanos.","alert_hide":"Ocultando NetIDs de jugadores cercanos."}},"page_players":{"misc":{"online_players":"Jugadores conectados","players":"Jugadores","search":"Buscar","zero_players":"Ningún jugador encontrado"},"sort":{"label":"Ordenar por","distance":"Distancia","id":"ID","joined_first":"Unidos recientes","joined_last":"Unidos primeros","closest":"Más cercanos","farthest":"Más lejanos"},"card":{"health":"%{percentHealth}% vida"}},"player_modal":{"misc":{"error":"Ha ocurrido un error obteniendo los datos de este usuario. El error se muestra abajo:","target_not_found":"Incapaz de encontrar un jugador con la ID o el nombre de usuario de %{target}"},"tabs":{"actions":"Acciones","info":"Info","ids":"IDs","history":"Historial","ban":"Vetar"},"actions":{"title":"Acciones del jugador","command_sent":"¡Comando enviado!","moderation":{"title":"Moderación","options":{"dm":"DM","warn":"Avisar","kick":"Expulsar","set_admin":"Dar Administrador"},"dm_dialog":{"title":"Mensaje directo","description":"¿Cual es la razón por la que le mandas un mensaje directo a este jugador?","placeholder":"Razón...","success":"¡Tu mensaje ha sido enviado!"},"warn_dialog":{"title":"Avisar","description":"¿Cual es la razón por la que estás advirtiendo a este jugador?","placeholder":"Razón...","success":"¡El jugador ha sido avisado!"},"kick_dialog":{"title":"Expulsar","description":"¿Cual es la razón por la que estás expulsando a este jugador?","placeholder":"Razón...","success":"¡El jugador fué expulsado!"}},"interaction":{"title":"Interacción","options":{"heal":"Curar","go_to":"Ir a","bring":"Traer","spectate":"Observar","toggle_freeze":"Alternar congelación"},"notifications":{"heal_player":"Curando jugador","tp_player":"Teletransportando a jugador","bring_player":"Invocando jugador","spectate_failed":"¡No se pudo encontrar al objetivo! Saliendo de observar.","spectate_yourself":"No te puedes observar a ti mismo.","freeze_yourself":"No te puedes congelar a ti mismo."}},"troll":{"title":"Troll","options":{"drunk":"Emborrachar","fire":"Prender fuego","wild_attack":"Ataque salvaje"}}},"info":{"title":"Info del jugador","session_time":"Tiempo de sesión","play_time":"Tiempo de juege","joined":"Se unió","notes_placeholder":"Notas sobre este jugador"},"history":{"title":"Historial relacionado","action_types":{"warn":"ADVERTIDO","warn_revoked":"REVOCADA LA ADVERTENCIA POR","ban":"BANEADO","ban_revoked":"REVOCADO EL BANEO POR","whitelist":"WHITELIST","whitelist_revoked":"REVOCADA LA WHITELIST POR"}},"ban":{"title":"Banear jugador","reason_placeholder":"Razón","duration_placeholder":"Duración","hours":"horas","days":"días","weeks":"semanas","months":"meses","permanent":"Permanente","custom":"Personalizado","helper_text":"Por favor, elige una duración","submit":"Aplicar baneo"}}}}\');\n\n//# sourceURL=webpack://txadmin/./locale/es.json?')},"./locale/et.json":
/*!************************!*\
  !*** ./locale/et.json ***!
  \************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"$meta":{"label":"Estonian","humanizer_language":"et"},"restarter":{"start_timeout":"Ei õnnestunud õigel ajal alustada","crash_detected":"crash tuvastatud","hang_detected":"hang tuvastatud","partial_hang_warn":"Osalise hangumise tõttu taaskäivitub see server 1 minuti pärast. Palun lahkuge serverist kohe.","partial_hang_warn_discord":"Osalise hangumise tõttu taaskäivitub **%{servername}** 1 minuti pärast.","schedule_reason":"Plaanitud taaskäivitamine kell %{time}","schedule_warn":"See server taaskäivitub %{smart_count} minuti pärast. Palun katkestage ühendus kohe. |||| See server taaskäivitub %{smart_count} minuti pärast.","schedule_warn_discord":"**%{servername}** taaskäivitub %{smart_count} minuti pärast. |||| **%{servername}** taaskäivitub %{smart_count} minuti pärast."},"ban_messages":{"kick_temporary":"(%{author}) Teid on sellest serverist keelustatud \\\\"%{reason}\\\\". Teie keelustamine aegub: %{expiration}.","kick_permanent":" (%{author}) Teid on sellest serverist jäädavalt keelustatud \\\\"%{reason}\\\\" tõttu.","reject_temporary":"Teid on sellest serverist keelustatud.\\\\nTeie keeld aegub: %{expiration}.\\\\nBänni ID: %{id}.\\\\nKeelustamise põhjus: %{reason}.\\\\nKeelustaja: %{author}.","reject_permanent":"Teid on sellest serverist jäädavalt keelustatud.\\\\nBänni ID: %{id}.\\\\nKeelustuse põhjus: %{reason}.\\\\nKeelustaja: %{author}."},"server_actions":{"restarting":"Serveri taaskäivitamine (%{reason}).","restarting_discord":"**%{servername}** taaskäivitub (%{reason}).","stopping":"Server suletakse (%{reason}).","stopping_discord":"**%{servername}** suletakse (%{reason}).","spawning_discord":"**%{servername}** käivitub."},"discord":{"status_online":"**%{servername}** on praegu **Üleval**!","status_offline":"**%{servername}** on praegu **Kinni**!"},"nui_warning":{"title":"HOIATUS","warned_by":"Hoiatas:","instruction":"Sellest sõnumist loobumiseks hoidke klahvi [SPACE] 10 sekundit all."},"nui_menu":{"misc":{"help_message":"Menüü txAdmin on lubatud, selle avamiseks tippige /tx.\\\\nSaate konfigureerida ka klahvide sidumise menüüs [Mängu seaded > Klahvide sidumised > FiveM > Menüü: ava põhileht].","menu_not_allowed":"Teie identifikaatorid ei ühti ühegi txAdminis registreeritud administraatoriga.\\\\nKui olete txAdminis registreeritud, minge administraatorihaldurisse ja veenduge, et teie identifikaatorid on salvestatud.","no_perms":"Teil pole seda luba.","unknown_error":"Ilmnes tundmatu viga.","not_enabled":"Menüü txAdmin pole lubatud! Saate selle lubada txAdmini seadete lehel.","announcement_title":"Serveri teadaanne %{author}:","dialog_empty_input":"Sul ei saa olla tühi sisend."},"frozen":{"froze_player":"Olete mängija külmutanud!","unfroze_player":"Olete mängija lahti külmutanud!","was_frozen":"Serveri administraator külmutas teid!"},"common":{"cancel":"Tühista","submit":"Esita","error":"Ilmnes viga","copied":"Kopeeriti lõikelauale."},"page_main":{"tooltips":{"tooltip_1":"Kasuta %{key} lehekülgede vahetamiseks ja nooleklahve menüüelementide liikumiseks","tooltip_2":"Teatud menüüelementidel on alamvalikud, mida saab valida vasak- ja paremnooleklahvide abil"},"player_mode":{"title":"Mängija režiim","noclip":{"title":"NoClip","label":"Toggeli NoClip, mis võimaldab teil liikuda läbi seinte ja muude objektide","success":"NoClip käivitatud"},"godmode":{"title":"God","label":"Lülitage GodMode sisse, vältides kahju tekitamist","success":"GodMode käivitatud"},"normal":{"title":"Normaalne","label":"Naaseb vaike-/tavalise mängija režiimi","success":"Naastatud mängija vaikerežiimile."}},"teleport":{"title":"Teleporteeru","generic_success":"Saatis su ussiauku!","waypoint":{"title":"Waypoint","label":"Teleportige kaardil määratud kohandatud teekonnapunkti","error":"Teil pole punkti määratud."},"coords":{"title":"Koordinaadid","label":"Teleportige antud koordinaatidele","dialog_title":"Teleport","dialog_desc":"Ussiaugu läbimiseks esitage koordinaadid x, y, z vormingus.","dialog_error":"Valed koordinaadid. Peab olema vormingus: 111, 222, 33"},"back":{"title":"Tagasi","label":"Naaseb asukohta enne viimast teleporti","error":"Teil pole viimast asukohta, kuhu tagasi minna!"},"copy":{"title":"Kopeeri koordinaadid","label":"Kopeerige praegused maailma koordinaadid"}},"vehicle":{"title":"Masinad","onesync_error":"See suvand nõuab, et OneSync oleks serveri olemi haldamiseks sisse lülitatud","not_in_veh_error":"Te ei ole praegu sõidukis!","spawn":{"title":"Loo","label":"Looge antud sõiduk selle mudelinime järgi","dialog_title":"Loo masin","dialog_desc":"Sisestage selle sõiduki mudeli nimi, mida soovite luua.","dialog_success":"Sõiduk loodud!","dialog_error":"Sõiduki mudeli nime \\\'%{modelName}\\\' ei eksisteeri!","dialog_info":"Proovin luua %{modelName}."},"fix":{"title":"Paranda","label":"Parandab sõiduki maksimaalselt tervenisti","success":"Sõiduk korda tehtud!"},"delete":{"title":"Kustuta","label":"Kustutab sõiduki, milles mängija parasjagu viibib","success":"Sõiduk kustutatud!"}},"heal":{"title":"Tervenda","myself":{"title":"Ennast","label":"Ravib end praeguse ped-i maksimumini","success_0":"Kõik paranenud!","success_1":"Sa peaksid end praegu hästi tundma!","success_2":"Täielikult taastatud!","success_3":"Valud parandatud!"},"everyone":{"title":"Kõik","label":"Ravib ja elustab kõik ühendatud mängijad","success":"Tervendas ja elustas kõik mängijad."}},"announcement":{"title":"Saada teadaanne","label":"Saatke kõigile võrgumängijatele teadaanne.","dialog_desc":"Sisestage sõnum, mida soovite kõigile mängijatele edastada.","dialog_placeholder":"Teie teadaanne...","dialog_success":"Teadaannde saatmine."},"clear_area":{"title":"Lähtesta maailmapiirkond","label":"Lähtestage määratud maailmaala vaikeolekusse","dialog_desc":"Sisestage raadius, kuhu soovite olemid lähtestada (0-300). See ei puhasta olemeid, mille serveri pool tekkis.","dialog_success":"Puhastusala raadiusega %{radius}m","dialog_error":"Vale raadiuse sisestus. Proovi uuesti."},"player_ids":{"title":"Mängija ID sisse- ja väljalülitamine","label":"Lülitage mängija ID-de (ja muu teabe) kuvamine kõigi läheduses asuvate mängijate pea kohal","alert_show":"Kuvatakse lähedalasuvate mängijate NetID-d.","alert_hide":"Lähedal asuva mängija NetID-de peitmine."}},"page_players":{"misc":{"online_players":"Hetkesed mängijad","players":"Mängijad","search":"Otsi","zero_players":"Mängijat ei leitud"},"sort":{"label":"Sorteeri","distance":"Kaugus","id":"ID","joined_first":"Liitus esimest korda","joined_last":"Liitus viimati","closest":"Lähim","farthest":"Kõige kaugemal"},"card":{"health":"%{percentHealth}% tervis"}},"player_modal":{"misc":{"error":"Selle kasutaja üksikasjade toomisel ilmnes viga. Viga on näidatud allpool:","target_not_found":"%{target} ID või kasutajanimega võrgumängijat ei õnnestunud leida"},"tabs":{"actions":"Tegevused","info":"Info","ids":"IDs","history":"Ajalugu","ban":"Keelusta"},"actions":{"title":"Mängija toimingud","command_sent":"Käsk saadetud!","moderation":{"title":"Moderation","options":{"dm":"DM","warn":"Hoiata","kick":"Kick","set_admin":"Anna administraatori õigused"},"dm_dialog":{"title":"Direct Message","description":"Mis on selle mängijaga otsesõnumi saatmise põhjus?","placeholder":"Põhjus...","success":"Teie DM on saadetud!"},"warn_dialog":{"title":"Hoiata","description":"Mis on selle mängija otsese hoiatamise põhjus?","placeholder":"Põhjus...","success":"Mängijat hoiatati!"},"kick_dialog":{"title":"Kick","description":"Mis on selle mängija kickimise põhjus?","placeholder":"Põhjus...","success":"Mängija kickiti!"}},"interaction":{"title":"Interaktsioon","options":{"heal":"Heal","go_to":"Goto","bring":"Bring","spectate":"Spectate","toggle_freeze":"Külmuta"},"notifications":{"heal_player":"Tervendad mängija","tp_player":"Teleportid mängija juurde","bring_player":"Lähed mängija juurde","spectate_failed":"Eesmärki ei õnnestunud lahendada! Lahkun Specatatest.","spectate_yourself":"Sa ei saa ennast specateda.","freeze_yourself":"Te ei saa ennast külmutada."}},"troll":{"title":"Troll","options":{"drunk":"Tee purju","fire":"Pane mängija põlema","wild_attack":"Metsik rünnak"}}},"info":{"title":"Mängija info","session_time":"Seansi aeg","play_time":"Mängimise aeg","joined":"Ühines","notes_placeholder":"Märkused selle mängija kohta"},"history":{"title":"Seotud ajalugu","action_types":{"warn":"HOIATATUD","warn_revoked":"TÜHISTADES HOIATUS","ban":"KEELUSTATUD","ban_revoked":"KEELU TÜHISTAMINE","whitelist":"ALLOWLIST","whitelist_revoked":"ALLOWLISTIST EEMALDAMINE"}},"ban":{"title":"Keelusta mängija","reason_placeholder":"Põhjus","duration_placeholder":"Kestvus","hours":"Tunnid","days":"Päevad","weeks":"Nädalad","months":"Kuud","permanent":"Igavesti","custom":"Custom","helper_text":"Valige kestus","submit":"Rakenda keeld"}}}}\');\n\n//# sourceURL=webpack://txadmin/./locale/et.json?')},"./locale/fa.json":
/*!************************!*\
  !*** ./locale/fa.json ***!
  \************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"$meta":{"label":"Persian","humanizer_language":"fa"},"restarter":{"start_timeout":"Failed to start in time","crash_detected":"Crash Shenasaee Shod!","hang_detected":"hang detected","partial_hang_warn":"Due to a partial hang, this server will restart in 1 minute. Please disconnect now.","partial_hang_warn_discord":"Due to a partial hang, **%{servername}** will restart in 1 minute.","schedule_reason":"Restart Dar Saat: %{time}","schedule_warn":"Server ta %{smart_count} daghighe digar restart mishavad. Lotfan Disconnect Konid. |||| Server ta %{smart_count} daghighe digar restart mishavad.","schedule_warn_discord":"**%{servername}** ta %{smart_count} daghighe digar restart mishavad. |||| **%{servername}** ta %{smart_count} daghighe digar restart mishavad."},"ban_messages":{"kick_temporary":"(%{author}) Shoma Az in Server Ban Shodid, Be Dalil: \\\\"%{reason}\\\\". Etmam Ban Shoma: %{expiration}.","kick_permanent":"(%{author}) Shoma Baraye Hamishe Az in Server Ban Shodid, Be Dalil: \\\\"%{reason}\\\\".","reject_temporary":"Shoma Az in Server Ban Shodid.\\\\nEtmam Ban Shoma: %{expiration}.\\\\nBan ID: %{id}.\\\\nDalil Ban: %{reason}.\\\\nBan Tavasot: %{author}.","reject_permanent":"Shoma Az in Server Baraye Hamishe Ban Shodid.\\\\nBan ID: %{id}.\\\\nDalil Ban: %{reason}.\\\\nBan Tavasot: %{author}."},"server_actions":{"restarting":"سرور درحال راه اندازی مجدد، دلیل: (%{reason}).","restarting_discord":"**%{servername}** درحال راه اندازی مجدد شدن، دلیل: (%{reason}).","stopping":"سرور درحال خاموش شدن، دلیل: : (%{reason}).","stopping_discord":"**%{servername}** درحال خاموش شدن، دلیل: (%{reason}).","spawning_discord":"**%{servername}** درحال راه اندازی."},"discord":{"status_online":"**%{servername}** درحال حاضر: **Online**!","status_offline":"**%{servername}** درحال حاضر **Offline**!"},"nui_warning":{"title":"WARNING","warned_by":"Warned by:","instruction":"Dokme [SPACE] ro baraye 10 saniye negah darid ta payam rad shavad."},"nui_menu":{"misc":{"help_message":"txAdmin Menu enabled, type /tx to open it.\\\\nYou can also configure a keybind at [Game Settings > Key Bindings > FiveM > Menu: Open Main Page].","menu_not_allowed":"Your identifiers do not match any admin registered on txAdmin.\\\\nIf you are registered on txAdmin, go to Admin Manager and make sure your identifiers are saved.","no_perms":"You do not have this permission.","unknown_error":"An unknown error occurred.","not_enabled":"The txAdmin Menu is not enabled! You can enable it in the txAdmin settings page.","announcement_title":"Server Announcement by %{author}:","dialog_empty_input":"You cannot have an empty input."},"frozen":{"froze_player":"You have frozen the player!","unfroze_player":"You have unfrozen the player!","was_frozen":"You have been frozen by a server admin!"},"common":{"cancel":"Cancel","submit":"Submit","error":"An error occurred","copied":"Copied to clipboard."},"page_main":{"tooltips":{"tooltip_1":"Use %{key} to switch pages & the arrow keys to navigate menu items","tooltip_2":"Certain menu items have sub options which can be selected using the left & right arrow keys"},"player_mode":{"title":"Player Mode","noclip":{"title":"NoClip","label":"Fly around","success":"NoClip enabled"},"godmode":{"title":"God","label":"Invincible","success":"God Mode enabled"},"normal":{"title":"Normal","label":"Default mode","success":"Returned to default player mode."}},"teleport":{"title":"Teleport","generic_success":"Sent you into the wormhole!","waypoint":{"title":"Waypoint","label":"Go to waypoint set","error":"You have no waypoint set."},"coords":{"title":"Coords","label":"Go to specified coords","dialog_title":"Teleport","dialog_desc":"Provide coordinates in an x, y, z format to go through the wormhole.","dialog_error":"Invalid coordinates. Must be in the format of: 111, 222, 33"},"back":{"title":"Back","label":"Go back to last location","error":"You don\\\'t have a last location to go back to!"},"copy":{"title":"Copy Coords","label":"Copy coords to clipboard."}},"vehicle":{"title":"Vehicle","onesync_error":"This option requires that OneSync be on for server entity handling","not_in_veh_error":"You are not currently in a vehicle!","spawn":{"title":"Spawn","label":"Spawn vehicle by model name","dialog_title":"Spawn vehicle","dialog_desc":"Enter in the model name of the vehicle you want to spawn.","dialog_success":"Vehicle spawned!","dialog_error":"The vehicle model name \\\'%{modelName}\\\' does not exist!","dialog_info":"Trying to spawn %{modelName}."},"fix":{"title":"Fix","label":"Fix the current vehicle","success":"Vehicle fixed!"},"delete":{"title":"Delete","label":"Delete the current vehicle","success":"Vehicle deleted!"}},"heal":{"title":"Heal","myself":{"title":"Myself","label":"Restores your health","success_0":"All healed up!","success_1":"You should be feeling good now!","success_2":"Restored to full!","success_3":"Ouchies fixed!"},"everyone":{"title":"Everyone","label":"Will heal & revive all players","success":"Healed and revived all players."}},"announcement":{"title":"Send Announcement","label":"Send an announcement to all online players.","dialog_desc":"Send an announcement to all online players.","dialog_placeholder":"Your announcement...","dialog_success":"Sending the announcement."},"clear_area":{"title":"Reset World Area","label":"Reset a specified world area to its default state","dialog_desc":"Please enter the radius where you wish to reset entities in (0-300). This will not clear entities spawned server side.","dialog_success":"Clearing area with radius of %{radius}m","dialog_error":"Invalid radius input. Try again."},"player_ids":{"title":"Toggle Player IDs","label":"Toggle showing player IDs (and other info) above the head of all nearby players","alert_show":"Showing nearby player NetIDs.","alert_hide":"Hiding nearby player NetIDs."}},"page_players":{"misc":{"online_players":"Online Players","players":"Players","search":"Search","zero_players":"No players found"},"sort":{"label":"Sort by","distance":"Distance","id":"ID","joined_first":"Joined First","joined_last":"Joined Last","closest":"Closest","farthest":"Farthest"},"card":{"health":"%{percentHealth}% health"}},"player_modal":{"misc":{"error":"An error occurred fetching this users details. The error is shown below:","target_not_found":"Was unable to find an online player with ID or an username of %{target}"},"tabs":{"actions":"Actions","info":"Info","ids":"IDs","history":"History","ban":"Ban"},"actions":{"title":"Player Actions","command_sent":"Command sent!","moderation":{"title":"Moderation","options":{"dm":"DM","warn":"Warn","kick":"Kick","set_admin":"Give Admin"},"dm_dialog":{"title":"Direct Message","description":"What is the reason for direct messaging this player?","placeholder":"Reason...","success":"Your DM has been sent!"},"warn_dialog":{"title":"Warn","description":"What is the reason for direct warning this player?","placeholder":"Reason...","success":"The player was warned!"},"kick_dialog":{"title":"Kick","description":"What is the reason for kicking this player?","placeholder":"Reason...","success":"The player was kicked!"}},"interaction":{"title":"Interaction","options":{"heal":"Heal","go_to":"Go to","bring":"Bring","spectate":"Spectate","toggle_freeze":"Toggle Freeze"},"notifications":{"heal_player":"Healing player","tp_player":"Teleporting to player","bring_player":"Summoning player","spectate_failed":"Failed to resolve the target! Exiting spectate.","spectate_yourself":"You cannot spectate yourself.","freeze_yourself":"You cannot freeze yourself."}},"troll":{"title":"Troll","options":{"drunk":"Make Drunk","fire":"Set Fire","wild_attack":"Wild attack"}}},"info":{"title":"Player info","session_time":"Session Time","play_time":"Play time","joined":"Joined","notes_placeholder":"Notes about this player"},"history":{"title":"Related history","action_types":{"warn":"WARNED","warn_revoked":"REVOKED the WARN for","ban":"BANNED","ban_revoked":"REVOKED the BAN for","whitelist":"WHITELIST","whitelist_revoked":"REVOKED the WHITELIST for"}},"ban":{"title":"Ban player","reason_placeholder":"Reason","duration_placeholder":"Duration","hours":"hours","days":"days","weeks":"weeks","months":"months","permanent":"Permanent","custom":"Custom","helper_text":"Please select a duration","submit":"Apply ban"}}}}\');\n\n//# sourceURL=webpack://txadmin/./locale/fa.json?')},"./locale/fi.json":
/*!************************!*\
  !*** ./locale/fi.json ***!
  \************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"$meta":{"label":"Finnish","humanizer_language":"fi"},"restarter":{"start_timeout":"palvelin ei käynnistynyt ajoissa.","crash_detected":"Kaatuminen havaittu","hang_detected":"hang detected","partial_hang_warn":"Due to a partial hang, this server will restart in 1 minute. Please disconnect now.","partial_hang_warn_discord":"Due to a partial hang, **%{servername}** will restart in 1 minute.","schedule_reason":"Ajoitettu uudelleenkäynnistys kello %{time}","schedule_warn":"Palvelin on ajoitettu käynnistymään uudelleen minuutin kuluttua. Poistu palvelimelta nyt! |||| Palvelin on ajoitettu käynnistymään uudelleen %{smart_count} minuutin kuluttua.","schedule_warn_discord":"**%{servername}** on uudelleenkäynnistymässä %{smart_count} minuutin kuluttua. |||| **%{servername}** on ajoitettu käynnistymään uudelleen %{smart_count} minuutin kuluttua."},"ban_messages":{"kick_temporary":"(%{author}) Olet saanut porttikiellon palvelimelle. Porttikiellon syy: \\\\"%{reason}\\\\". Porttikielto päättyy: %{expiration}.","kick_permanent":"(%{author}) Olet saanut pysyvän porttikiellon palvelimelle. Porttikiellon syy: \\\\"%{reason}\\\\".","reject_temporary":"Olet saanut porttikiellon palvelimelle.\\\\nPorttikielto päättyy: %{expiration}.\\\\nPorttikiellon ID: %{id}.\\\\nPorttikiellon syy: %{reason}.\\\\nPorttikiellon antoi: %{author}.","reject_permanent":"Olet saanut pysyvän porttikiellon palvelimelle.\\\\nPorttikiellon ID: %{id}.\\\\nPorttikiellon syy: %{reason}.\\\\nPorttikiellon antoi: %{author}."},"server_actions":{"restarting":"Palvelin käynnistyy uudelleen (%{reason}).","restarting_discord":"**%{servername}** käynnistyy uudelleen (%{reason}).","stopping":"Palvelin sammutettu (%{reason}).","stopping_discord":"**%{servername}** sammutettu (%{reason}).","spawning_discord":"**%{servername}** käynnistetty."},"discord":{"status_online":"**%{servername}** on **auki**!","status_offline":"**%{servername}** on **kiinni**!"},"nui_warning":{"title":"VAROITUS","warned_by":"Sinua varoitti:","instruction":"Pidä välilyöntiä pohjassa 10 sekuntia jatkaaksesi."},"nui_menu":{"misc":{"help_message":"txAdmin Menu päällä. Kirjoita /tx avataksesi.\\\\nVoit myös asettaa menulle oman näppäimen: [Game Settings > Key Bindings > FiveM > Menu: Open Main Page].","menu_not_allowed":"Tietosi eivät vastaa yhtäkään txAdminiin rekisteröityä ylläpitäjää.\\\\nMikäli olet rekisteröitynyt txAdminiin, siirry kohtaan [Admin Manager] ja varmista että tietosi ovat tallennettu.","no_perms":"Sinulla ei ole oikeuksia tähän.","unknown_error":"Tuntematon virhe","not_enabled":"txAdmin Menu ei ole käytössä! Voit ottaa sen käyttöön txAdminin asetuksista.","announcement_title":"Palvelinilmoitus henkilöltä %{author}:","dialog_empty_input":"Tekstikenttä ei voi olla tyhjä."},"frozen":{"froze_player":"Pelaaja jäädytety!","unfroze_player":"Pelaaja vapautettu!","was_frozen":"Sinut on jäädytetty ylläpitäjän toimesta!"},"common":{"cancel":"Takaisin","submit":"Lähetä","error":"Virhe","copied":"Kopioitu leikepöydälle."},"page_main":{"tooltips":{"tooltip_1":"Käytä %{key} näppäintä vaihtaaksesi välilehtiä ja nuolinäppäimiä navikoidaksesi listaa","tooltip_2":"Osalla listan osioista on lisäosioita, joita voit selata käyttämällä vasenta ja oikeaa nuolinäppäintä"},"player_mode":{"title":"Pelaajan tila","noclip":{"title":"NoClip","label":"Lennä ympäriinsä","success":"NoClip päällä"},"godmode":{"title":"God","label":"Kuolematon","success":"God Mode päällä"},"normal":{"title":"Normaali","label":"Palauta pelaajan tila normaaliksi","success":"Palautettu takaisin normaaliin tilaan"}},"teleport":{"title":"Teleport","generic_success":"Lähetin sinut madonreikään!","waypoint":{"title":"Waypoint","label":"Siirry valittuun pisteeseen","error":"Et ole asettanut haluttua määränpäätä."},"coords":{"title":"Koordinaatit","label":"Siirry syötettyihin koordinaatteihin","dialog_title":"Teleport","dialog_desc":"Syötä koordinaatit muodossa: x, y, z","dialog_error":"Virheellinen koordinaatti. Koordinaattien pitää olla muotoa: 111, 222, 33"},"back":{"title":"Takaisin","label":"Siirry viimeisimpään paikkaan","error":"Viimeisintä paikkaa ei löytynyt!"},"copy":{"title":"Kopioi koordinaatit","label":"Kopioi koordinaatit leikepöydälle."}},"vehicle":{"title":"Ajoneuvo","onesync_error":"Tämä asetus vaatii OneSync:in päälle","not_in_veh_error":"Et ole ajoneuvossa!","spawn":{"title":"Luo","label":"Luo ajoneuvo nimellä","dialog_title":"Luo ajoneuvo","dialog_desc":"Aseta ajoneuvon nimi, jonka haluat luoda","dialog_success":"Ajoneuvo luotu!","dialog_error":"Ajoneuvo \\\'%{modelName}\\\' ei ole olemassa!","dialog_info":"Trying to spawn %{modelName}."},"fix":{"title":"Korjaa","label":"Korjaa tämänhetkinen ajoneuvo","success":"Ajoneuvo korjattu!"},"delete":{"title":"Poista","label":"Poista tämänhetkinen ajoneuvo","success":"Ajoneuvo poistettu!"}},"heal":{"title":"Elvytä","myself":{"title":"Minut","label":"Elvyttää sinut","success_0":"Elvytetty!","success_1":"Kaikki on taas hyvin!","success_2":"Onneks aina voi nostaa!","success_3":"Elossa ollaan taas!"},"everyone":{"title":"Jokainen","label":"Elvyttää jokaisen pelaajan","success":"Kaikki pelaajat elvytetty."}},"announcement":{"title":"Lähetä ilmoitus","label":"Lähetä ilmoitus kaikille pelaajille.","dialog_desc":"Syötä viesti, jonka haluat pelaajille lähetettävän.","dialog_placeholder":"Ilmoituksesi....","dialog_success":"Lähetetään ilmoitusta."},"clear_area":{"title":"Tyhjennä alue","label":"Tyhjennä valittu alue","dialog_desc":"Aseta haluttu etäisyys väliltä (0-300). Tämä toiminto ei poista palvelimen puolelta (server side) luotuja asioita.","dialog_success":"Tyjennetään alueelta: %{radius}m","dialog_error":"Virheellinen alue, yritä uudelleen."},"player_ids":{"title":"Näytä pelaajien ID:t","label":"Näytä lähellä olevien pelaajien ID:t","alert_show":"Näytetään lähellä olevien pelaajien ID:t.","alert_hide":"Piilotetaan lähellä olevien pelaajien ID:t."}},"page_players":{"misc":{"online_players":"Paikalla olevat pelaajat","players":"pelaaja(a)","search":"Hae","zero_players":"Pelaajia ei löytynyt"},"sort":{"label":"Järjestä","distance":"Etäisyys","id":"ID","joined_first":"Liittynyt ensimmäisenä","joined_last":"Liittynyt viimeisenä","closest":"Lähimpänä","farthest":"Kauimpana"},"card":{"health":"%{percentHealth}% health"}},"player_modal":{"misc":{"error":"Käyttäjätietojen haussa tapahtui virhe. Lisätietoja alhaalla:","target_not_found":"Virhe löytäessä pelaajaa ID:llä tai käyttäjänimellä (%{target})"},"tabs":{"actions":"Toiminnot","info":"Info","ids":"ID:t","history":"Historia","ban":"Porttikielto"},"actions":{"title":"Pelaajan toiminnot","command_sent":"Toiminto suoritettu!","moderation":{"title":"Hallinnointi","options":{"dm":"Yksityisviesti","warn":"Varoita","kick":"Potki","set_admin":"Anna ylläpito-oikeudet"},"dm_dialog":{"title":"Yksityisviesti","description":"Mitä haluat pelaajalle lähettää?","placeholder":"Viesti...","success":"Yksityisviesti lähetetty!"},"warn_dialog":{"title":"Varoita","description":"Mistä haluat pelaajaa varoittaa?","placeholder":"Syy...","success":"Pelaajaa varoitettu!"},"kick_dialog":{"title":"Potki","description":"Mistä syystä haluat pelaajan potkia?","placeholder":"Syy...","success":"Pelaaja potkittu palvelimelta!"}},"interaction":{"title":"Toiminnot","options":{"heal":"Elvytä","go_to":"Mene pelaajan luokse","bring":"Tuo pelaaja luoksesi","spectate":"Katso pelaajaa","toggle_freeze":"Jäädytä"},"notifications":{"heal_player":"Elvytetään pelaaja","tp_player":"Mennään pelaajan luokse","bring_player":"Tuodaan pelaaja","spectate_failed":"Virhe kohteen tavoittamisessa!","spectate_yourself":"Et voi katsoa itseäsi.","freeze_yourself":"Et voi jäädyttää itseäsi."}},"troll":{"title":"Troll","options":{"drunk":"Humalluta","fire":"Aseta tuleen","wild_attack":"Wild attack"}}},"info":{"title":"Pelaajatiedot","session_time":"Session pituus","play_time":"Peliaika","joined":"Liittynyt","notes_placeholder":"Muistiinpanot"},"history":{"title":"Historia","action_types":{"warn":"VAROITTI pelaajaa","warn_revoked":"KUMOSI VAROITUKSEN pelaajalta","ban":"ANTOI PORTTIKIELLON pelaajalle","ban_revoked":"KUMOSI PORTTIKIELLON pelaajalta","whitelist":"WHITELIST","whitelist_revoked":"KUMOSI PÄÄSYN PALVELIMELLE pelaajalta"}},"ban":{"title":"Aseta pelaaja porttikieltoon","reason_placeholder":"Syy","duration_placeholder":"Kesto","hours":"tunti(a)","days":"päivä(ä)","weeks":"viikko(a)","months":"kuukautta","permanent":"Ikuinen","custom":"Custom","helper_text":"Aseta porttikiellon kesto","submit":"Aseta porttikielto"}}}}\');\n\n//# sourceURL=webpack://txadmin/./locale/fi.json?')},"./locale/fr.json":
/*!************************!*\
  !*** ./locale/fr.json ***!
  \************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"$meta":{"label":"French","humanizer_language":"fr"},"restarter":{"start_timeout":"Impossible de démarrer le serveur dans les temps","crash_detected":"le serveur a planté","hang_detected":"Blocage detecté","partial_hang_warn":"En raison d\\\'un blocage partiel, le serveur redémarrera dans 1 minute. Veuillez vous déconnecter maintenant.","partial_hang_warn_discord":"En raison d\\\'un blocage partiel, **%{servername}** redémarrera dans 1 minute.","schedule_reason":"redémarage prévu à %{time}","schedule_warn":"Le serveur redémarrera dans %{smart_count} minute. Merci de vous déconnecter. |||| Le serveur redémarrera dans %{smart_count} minutes.","schedule_warn_discord":"**%{servername}** redémarrera dans %{smart_count} minute. |||| **%{servername}** redémarrera dans %{smart_count} minutes."},"ban_messages":{"kick_temporary":"(%{author}) Vous avez été banni pour: \\\\"%{reason}\\\\". Votre bannissement expirera dans: %{expiration}.","kick_permanent":"(%{author}) Vous avez été définitivement banni de ce serveur pour: \\\\"%{reason}\\\\".","reject_temporary":"Vous avez été banni de ce serveur.\\\\nVotre bannissement expirera dans: %{expiration}.\\\\nBan ID: %{id}.\\\\nRaison du Ban: %{reason}.\\\\nBanni par: %{author}.","reject_permanent":"Vous avez été définitivement banni de ce serveur.\\\\nBan ID: %{id}.\\\\nRaison du Ban: %{reason}.\\\\nBanni par: %{author}."},"server_actions":{"restarting":"Le serveur redémarre (%{reason}).","restarting_discord":"**%{servername}** redémarre (%{reason}).","stopping":"Fermeture du serveur (%{reason}).","stopping_discord":"**%{servername}** est en train de fermer (%{reason}).","spawning_discord":"**%{servername}** est en train de démarrer."},"discord":{"status_online":"**%{servername}** est actuellement **Ouvert** !","status_offline":"**%{servername}** est actuellement **Fermé** !"},"nui_warning":{"title":"AVERTISSEMENT","warned_by":"Avertis par:","instruction":"Maintenir [ESPACE] pendant 10 secondes pour cacher ce message."},"nui_menu":{"misc":{"help_message":"Menu txAdmin activé, ecrivez /tx pour l\\\'ouvrir.\\\\nVous pouvez aussi configurer une touche [Paramètre du Jeu > Configuration des touches > FiveM > Menu: Open Main Page].","menu_not_allowed":"Votre identifiant ne coïncide avec aucun identifiant d\\\'un administrateur sur txAdmin.\\\\nSi vous êtes enregistré(e) sur txAdmin, allez dans Admin Manager et assurez-vous que votre identifiant est bien enregistré.","no_perms":"Vous n\\\'avez pas les permissions suffisantes.","unknown_error":"Une erreur inconnue s\\\'est produite.","not_enabled":"Le Menu txAdmin n\\\'est pas activé ! Vous pouvez l\\\'activer dans les paramètres de txAdmin.","announcement_title":"Annonce serveur par %{author}:","dialog_empty_input":"Vous ne pouvez pas avoir un champ vide."},"frozen":{"froze_player":"Vous avez gelé le joueur !","unfroze_player":"Vous avez dégelé le joueur !","was_frozen":"Vous avez été gelé par un administrateur du serveur !"},"common":{"cancel":"Annuler","submit":"Soumettre","error":"Une erreur s\\\'est produite","copied":"Copié dans le presse-papier."},"page_main":{"tooltips":{"tooltip_1":"Utilisez %{key} pour changer de pages & et les flèches pour naviguer dans le menu","tooltip_2":"Certains éléments de menu ont des sous-options qui peuvent être sélectionnées à l\\\'aide des fléches gauche et droite"},"player_mode":{"title":"Mode du joueur","noclip":{"title":"NoClip","label":"Volez comme un oiseau","success":"NoClip activé"},"godmode":{"title":"Invincible","label":"Devenez invincible","success":"Invincibilité activée"},"normal":{"title":"Normal","label":"Mode par défaut","success":"Vous êtes de nouveau normal"}},"teleport":{"title":"Téléportation","generic_success":"Vous avez été téléporté !","waypoint":{"title":"GPS","label":"TP sur votre point GPS","error":"Aucun point GPS définit."},"coords":{"title":"Coordonnées","label":"TP sur coordonnées","dialog_title":"Téléportation","dialog_desc":"Fournissez des coordonnées au format x, y, z pour vous téléporter.","dialog_error":"Coordonnées invalide. Elles doivent être sous le format suivant: 111, 222, 33"},"back":{"title":"Retour","label":"TP sur ancienne position","error":"Vous n\\\'avez aucune dernière position !"},"copy":{"title":"Copier","label":"Copiez votre position"}},"vehicle":{"title":"Vehicule","onesync_error":"Cette option nécessite que OneSync soit activé pour la gestion des entités du serveur","not_in_veh_error":"Vous n\\\'êtes pas dans un véhicule !","spawn":{"title":"Spawn","label":"Créez un véhicule par modèle","dialog_title":"Faire apparaître un vehicule","dialog_desc":"Entrer le nom du véhicule que vous voulez faire apparaître.","dialog_success":"Véhicule apparu !","dialog_error":"Le modèle de véhicule \\\'%{modelName}\\\' n\\\'existe pas !","dialog_info":"Tentative de faire apparaître %{modelName}."},"fix":{"title":"Réparer","label":"Réparez le véhicule","success":"Véhicule réparé !"},"delete":{"title":"Supprimer","label":"Supprimez le véhicule","success":"Véhicule supprimé !"}},"heal":{"title":"Soigner","myself":{"title":"Moi","label":"Restaurez votre vie","success_0":"Santé mise à 100% !","success_1":"Vous avez été soigné !","success_2":"Vous êtes désormais en pleine forme !","success_3":"Vos bobos ont été soigné !"},"everyone":{"title":"Tous les joueurs","label":"Soignez & réanimez","success":"Tous les joueurs ont été soigné et réanimé."}},"announcement":{"title":"Faire une annonce","label":"Faire une annonce pour tous les joueurs actuellement connectés.","dialog_desc":"Enter the message you want to broadcast to all players.","dialog_placeholder":"Message","dialog_success":"L\\\'annonce est en train d\\\'être envoyé."},"clear_area":{"title":"Nettoyer la zone","label":"Reset a specified world area to its default state","dialog_desc":"Entrez un rayon où vous souhaitez que les entités soient supprimées (0-300). Cela ne va pas supprimer les entités créées par le serveur.","dialog_success":"Suppression des entités dans un rayon de %{radius} m","dialog_error":"Rayon invalide. Veuillez réessayer."},"player_ids":{"title":"Afficher les ID des joueurs","label":"Toggle showing player IDs (and other info) above the head of all nearby players","alert_show":"Les ID des joueurs sont affichés.","alert_hide":"Les ID des joueurs ne sont plus affichés."}},"page_players":{"misc":{"online_players":"Joueur(s) en ligne","players":"Joueur(s)","search":"Rechercher","zero_players":"Aucun joueur trouvé"},"sort":{"label":"Trier par","distance":"Distance","id":"ID","joined_first":"Premières connexions","joined_last":"Dernières connexions","closest":"Le - loin","farthest":"Le + loin"},"card":{"health":"Vie: %{percentHealth}%"}},"player_modal":{"misc":{"error":"Une erreur s\\\'est produite lors de la récupération des détails de cet utilisateur. L\\\'erreur est indiquée ci-dessous:","target_not_found":"Impossible de trouver un joueur en ligne avec cet ID ou le pseudo de %{target}"},"tabs":{"actions":"Actions","info":"Infos","ids":"Identifiants","history":"Historique","ban":"Bannir"},"actions":{"title":"Actions du joueur","command_sent":"Commande envoyée !","moderation":{"title":"Modération","options":{"dm":"PM","warn":"Avertir","kick":"Exclure","set_admin":"Donner droits admin"},"dm_dialog":{"title":"Message privé","description":"Que souhaitez-vous envoyer à ce joueur ?","placeholder":"Message","success":"Votre message a été envoyé !"},"warn_dialog":{"title":"Avertir","description":"Pour quelle(s) raison(s) souhaitez-vous avertir ce joueur ?","placeholder":"Raison","success":"Le joueur a été averti !"},"kick_dialog":{"title":"Exclure","description":"Pour quelle(s) raison(s) souhaitez-vous exclure ce joueur ?","placeholder":"Raison","success":"Le joueur a été exclu !"}},"interaction":{"title":"Intéractions","options":{"heal":"Soigner","go_to":"TP à lui","bring":"TP à soi","spectate":"Surveiller","toggle_freeze":"Geler/Dégeler"},"notifications":{"heal_player":"Le joueur a été soigné","tp_player":"Téléportation au joueur","bring_player":"Le joueur a été téléporté à vous","spectate_failed":"Impossible de trouver le joueur ! Désactivation du mode surveillance.","spectate_yourself":"Vous ne pouvez pas vous surveiller vous-même.","freeze_yourself":"Vous ne pouvez pas vous geler vous-même."}},"troll":{"title":"Troll","options":{"drunk":"Saouler","fire":"Enflammer","wild_attack":"Attaque sauvage"}}},"info":{"title":"Informations du joueur","session_time":"Durée de la session","play_time":"Temps de jeu","joined":"Connecté le ","notes_placeholder":"Notes à propos du joueur"},"history":{"title":"Historique","action_types":{"warn":"a AVERTI","warn_revoked":"a REVOQUÉ l\\\'AVERTISSEMENT de","ban":"a BANNI","ban_revoked":"a REVOQUÉ le BANNISEMENT de","whitelist":"a AUTORISÉ (WL)","whitelist_revoked":"a RETIRÉ de la LISTE BLANCHE pour"}},"ban":{"title":"Bannir le joueur","reason_placeholder":"Raison","duration_placeholder":"Durée","hours":"heure(s)","days":"jour(s)","weeks":"semaine(s)","months":"mois","permanent":"Permanente","custom":"Personnalisée","helper_text":"Selectionnez une durée","submit":"Apply ban"}}}}\');\n\n//# sourceURL=webpack://txadmin/./locale/fr.json?')},"./locale/hu.json":
/*!************************!*\
  !*** ./locale/hu.json ***!
  \************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"$meta":{"label":"Hungarian","humanizer_language":"hu"},"restarter":{"start_timeout":"sikertelen indítás a megadott idő intervallumon belül","crash_detected":"összeomlás észlelve","hang_detected":"lefagyás észlelve","partial_hang_warn":"Részleges lefagyás miatt a szerver 1 perc múlva újraindul. Kérjük, lépj ki.","partial_hang_warn_discord":"Részleges lefagyás miatt, a **%{servername}** 1 perc múlva újraindul.","schedule_reason":"Ütemezett újraindítás %{time}","schedule_warn":"A szerver ütemezett újraindítás miatt, %{smart_count} percen belül újraindul. Kérjük, lépj ki!. |||| A szerver ütemezetten újra indul %{smart_count} perc múlva.","schedule_warn_discord":"A(z) **%{servername}** ütemezetten újraindul %{smart_count} perc múlva. |||| **%{servername}** ütemezetten újraindul %{smart_count} perc múlva."},"ban_messages":{"kick_temporary":"(%{author}) Ki lettél tiltva a szerverről. Indok: \\\\"%{reason}\\\\". Lejár: %{expiration}.","kick_permanent":"(%{author}) Véglegesen ki lettél tiltva a szerverről. Indok: \\\\"%{reason}\\\\".","reject_temporary":"Ki lettél tiltva a szerverről.\\\\nLejár: %{expiration}.\\\\nBan ID: %{id}.\\\\nIndok: %{reason}.\\\\nKitiltó admin: %{author}.","reject_permanent":"Véglegesen ki lettél tiltva a szerverről..\\\\nBan ID: %{id}.\\\\nIndok: %{reason}.\\\\nKitiltó admin: %{author}."},"server_actions":{"restarting":"Szerver újraindítása: (%{reason}).","restarting_discord":"**%{servername}** újraindul (%{reason}).","stopping":"A szerver leáll (%{reason}).","stopping_discord":"**%{servername}**-t leállítják (%{reason}).","spawning_discord":"**%{servername}** indul."},"discord":{"status_online":"**%{servername}** jelenleg **Elérhető**!","status_offline":"**%{servername}** jelenleg **Nem Elérhető**!"},"nui_warning":{"title":"FIGYELMEZTETÉS","warned_by":"Figyelmeztetett:","instruction":"Tartsd lenyomva a [SPACE]-t 10 másodpercig, hogy eltüntesd az üzenetet."},"nui_menu":{"misc":{"help_message":"A txAdmin rendelkezik játékon belüli menüvel!\\\\nGyorsgomb [Game Settings > Key Bindings > FiveM > Open the txAdmin Menu] Próbáld ki!","menu_not_allowed":"Az azonosítód nem egyezik a txAdminban található admin azonosítókkal.\\\\nHa regisztrálva vagy txAdminban, bizonyosodj meg róla hogy el van mentve az Admin Managerben.","no_perms":"Ehhez nincs engedélyed.","unknown_error":"Ismeretlen hiba lépett fel.","not_enabled":"A txAdmin menü nincs engedélyezve! Engedélyezheted a txAdmin beállítások fülön.","announcement_title":"Szerver felhívás %{author}:","dialog_empty_input":"Nem lehet üresen hagyni."},"frozen":{"froze_player":"Lefagyasztottad a játékost!","unfroze_player":"Feloldottad a fagyasztást a játékoson!","was_frozen":"Lefagyasztott egy szerveradmin!"},"common":{"cancel":"Vissza","submit":"Küldés","error":"Hiba lépett fel","copied":"Vágólapra másolva."},"page_main":{"tooltips":{"tooltip_1":"%{key} a lapozáshoz és [NYILAK] a menüben való navigáláshoz","tooltip_2":"Néhány menü rendelkezik al-opcióval  melyek a bal és jobb nyíllal választható"},"player_mode":{"title":"Játékos mód","noclip":{"title":"NoClip","label":"Körbe repülés","success":"NoClip engedélyezve"},"godmode":{"title":"God","label":"Halhatatlanság","success":"God mód engedélyezve"},"normal":{"title":"Normál","label":"Normál mód","success":"Visszaállítva a normál játékos módba."}},"teleport":{"title":"Teleportálás","generic_success":"Átléptél egy féreglyukon!","waypoint":{"title":"Úticél","label":"Teleportálás az úticélhoz","error":"Nincs úticél kijelölve."},"coords":{"title":"Koordináta","label":"Menj egy megadott koordinátára","dialog_title":"Teleportálás","dialog_desc":"A koordinátákat x, y, z formában kell megadnod.","dialog_error":"Hibás koordináta. Ilyen formát használj: 111, 222, 33"},"back":{"title":"Vissza","label":"Vissza az utolsó pozíciódra","error":"Nincs hová visszamenned!"},"copy":{"title":"Másolás","label":"Jelenlegi koordináta másolása"}},"vehicle":{"title":"Jármű","onesync_error":"Ezen beállítás használatához, engedélyezd a OneSync-et.","not_in_veh_error":"Jelenleg nem ülsz járműben!","spawn":{"title":"Lehívás","label":"Jármű lehívása név alapján","dialog_title":"Jármű lehívása","dialog_desc":"Add meg a modell nevét amit le szeretnél hívni.","dialog_success":"Jármű lehívva!","dialog_error":"Jármű ezzel a modell névvel \\\'%{modelName}\\\' nem létezik!","dialog_info":"%{modelName} lehívása..."},"fix":{"title":"Javítás","label":"Jelenlegi jármű javítása","success":"Jármű megjavítva!"},"delete":{"title":"Törlés","label":"Jelenlegi jármű törlése","success":"Jármű törölve!"}},"heal":{"title":"Gyógyítás","myself":{"title":"Magamat","label":"Életerőd helyreállítása","success_0":"Minden seb begyógyítva!","success_1":"Mostmár jól kell hogy érezd magad!","success_2":"Életerő helyreállítva!","success_3":"Bibik megpuszilva!"},"everyone":{"title":"Mindenki","label":"Mindenkit meggyógyít/feléleszt","success":"Mindenki meggyógyítva és felélesztve."}},"announcement":{"title":"Felhívás küldése","label":"Felhívás küldése minden elérhető játékosnak.","dialog_desc":"Enter the message you want to broadcast to all players.","dialog_placeholder":"Felhívás...","dialog_success":"Felhívás elküldve."},"clear_area":{"title":"Terület visszaállítása","label":"Reset a specified world area to its default state","dialog_desc":"Állítsd be a sugarát annak a területnek ahol az entitásokat visszaállítanád (0-300). A szerver oldali entitások nem kerülnek visszaállításra","dialog_success":"Terület visszaállítása %{radius}m sugárban","dialog_error":"Érvénytelen sugár bevitel. Próbáld újra."},"player_ids":{"title":"ID mód váltása","label":"Toggle showing player IDs (and other info) above the head of all nearby players","alert_show":"Közeli játékosok ID-jének mutatása.","alert_hide":"Közeli játékosok ID-jének elrejtése."}},"page_players":{"misc":{"online_players":"Játékban lévő játékosok","players":"Játékosok","search":"Keresés","zero_players":"Nem található játékos"},"sort":{"label":"Rendezés alapja","distance":"Távolság","id":"ID","joined_first":"Legkorábbi csatlakozás","joined_last":"Legkésőbbi csatlakozás","closest":"Legközelebbi","farthest":"Legtávolabbi"},"card":{"health":"%{percentHealth}% HP"}},"player_modal":{"misc":{"error":"Hiba a játékos adatainak lekérésekor. A hiba alább látható:","target_not_found":"Nem található játékos ezzel a névvel vagy ID-vel %{target}"},"tabs":{"actions":"Műveletek","info":"Infó","ids":"ID-k","history":"Előzmények","ban":"Kitiltás"},"actions":{"title":"Játékos műveletek","command_sent":"Parancs elküldve!","moderation":{"title":"Moderálás","options":{"dm":"Privát üzenet","warn":"Figyelmeztetés","kick":"Kirúgás","set_admin":"Admin adás"},"dm_dialog":{"title":"Közvetlen üzenet","description":"Mivel kapcsolatban üzensz a játékosnak?","placeholder":"Indok...","success":"Üzenet elküldve!"},"warn_dialog":{"title":"Figyelmeztetés","description":"Milyen indokkal figyelmezeteted a játékost?","placeholder":"Indok...","success":"A játékos figyelmeztetve!"},"kick_dialog":{"title":"Kirúgás","description":"Milyen okból rúgod ki a játékost?","placeholder":"Indok...","success":"Játékos kirúgva!"}},"interaction":{"title":"Interakció","options":{"heal":"Gyógyítás","go_to":"Teleportálás","bring":"Megidézés","spectate":"Megfigyelés","toggle_freeze":"Fagyasztás"},"notifications":{"heal_player":"Játékos gyógyítása","tp_player":"Teleportálás a játékoshoz","bring_player":"Játékos megidézve","spectate_failed":"Hiba a játékos megfigyelésénél! Kilépés a megfigyelésből.","spectate_yourself":"Magadat nem figyelheted meg.","freeze_yourself":"Magadat nem fagyaszthatod le."}},"troll":{"title":"Trollkodás","options":{"drunk":"Részeg mód","fire":"Felgyújtás","wild_attack":"Állat támadás"}}},"info":{"title":"Játékos infó","session_time":"Szerveren töltött idő","play_time":"Játékidő","joined":"Csatlakozva","notes_placeholder":"Megjegyzések a játékossal kapcsolatban"},"history":{"title":"Kapcsolódó előzmények","action_types":{"warn":"FIGYELMEZTETVE","warn_revoked":"Figyelmeztetés visszavonva","ban":"KITILTVA","ban_revoked":"Kitiltás visszavonva","whitelist":"WHITELIST","whitelist_revoked":"Whitelist visszavonva"}},"ban":{"title":"Játékos kitiltása","reason_placeholder":"Indok","duration_placeholder":"Időtartam","hours":"Óra","days":"Nap","weeks":"Hét","months":"Hónap","permanent":"Végleges","custom":"Egyedi","helper_text":"Kérlek válassz időtartamot","submit":"Apply ban"}}}}\');\n\n//# sourceURL=webpack://txadmin/./locale/hu.json?')},"./locale/it.json":
/*!************************!*\
  !*** ./locale/it.json ***!
  \************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"$meta":{"label":"Italian","humanizer_language":"it"},"restarter":{"start_timeout":"Avviato fallito nel tempo previsto","crash_detected":"rilevato crash","hang_detected":"blocco rilevato","partial_hang_warn":"A causa di un blocco parziale, questo server verrà riavviato tra 1 minuto. Si prega di disconnettersi ora.","partial_hang_warn_discord":"A causa di un blocco parziale, **%{servername}** si riavvierà tra 1 minuto.","schedule_reason":"Riavvio programmato alle %{time}","schedule_warn":"Questo server è programmato per riavviarsi in %{smart_count} minuti. Per cortesia uscite ora! |||| Questo server è programmato per riavviarsi in %{smart_count} minuti.","schedule_warn_discord":"**%{servername}** è programmato per riavviarsi in %{smart_count} minuti. |||| **%{servername}** è programmato per riavviarsi in %{smart_count} minuti."},"ban_messages":{"kick_temporary":"(%{author}) Sei stato bannato da questo server per \\\\"%{reason}\\\\". Il tuo ban scadrà in: %{expiration}.","kick_permanent":"(%{author}) Sei stato bannato permanentemente da questo server per \\\\"%{reason}\\\\".","reject_temporary":"Sei stato bannato da questo server..\\\\nIl tuo ban scadrà in: %{expiration}.\\\\nBan ID: %{id}.\\\\nBan Motivazione: %{reason}.\\\\nBannato da: %{author}.","reject_permanent":"Sei stato bannato da questo server.\\\\nBan ID: %{id}.\\\\nBan Motivazione: %{reason}.\\\\nBanned da: %{author}."},"server_actions":{"restarting":"Riavvio del server (%{reason}).","restarting_discord":"**%{servername}** si sta riavviando (%{reason}).","stopping":"Il Server si sta spegnendo (%{reason}).","stopping_discord":"**%{servername}** si sta spegnendo (%{reason}).","spawning_discord":"**%{servername}** si sta avviando."},"discord":{"status_online":"**%{servername}** è **Online**!","status_offline":"**%{servername}** è **Offline**!"},"nui_warning":{"title":"WARNING","warned_by":"Avvisato da:","instruction":"Tieni premuto [SPACE] per 10 secondi per rimuovere questo messaggio."},"nui_menu":{"misc":{"help_message":"txAdmin Menu attivato, scrivi /tx per aprirlo.\\\\nPuoi bindare un tasto in [Game Settings > Key Bindings > FiveM > Menu: Open Main Page].","menu_not_allowed":"I tuoi identifiers non corrispondono ad un admin registrato nel txAdmin.\\\\nSe sei registrato al txAdmin, vai nella sezione Admin Manager e controlla che siano presenti i tuoi identifiers.","no_perms":"Non hai questo permesso.","unknown_error":"Si è verificato un errore sconosciuto.","not_enabled":"Il menu txAdmin non è attivo! Puoi attivarlo dalle impostazioni del txAdmin.","announcement_title":"Annuncio da %{author}:","dialog_empty_input":"Non puoi dare un input vuoto."},"frozen":{"froze_player":"Hai freezato il player!","unfroze_player":"Hai unfreezato il player!","was_frozen":"Sei stato freezato da uno staffer!"},"common":{"cancel":"Cancella","submit":"Conferma","error":"Si è verificato un\\\'errore","copied":"Copiato negli appunti."},"page_main":{"tooltips":{"tooltip_1":"Usa %{key} per cambiare pagina e le freccette per navigare nel menu","tooltip_2":"Alcune voci del menu hanno opzioni secondarie che possono essere selezionate utilizzando i tasti freccia sinistra e destra"},"player_mode":{"title":"Modalità","noclip":{"title":"NoClip","label":"Vola","success":"NoClip attivo"},"godmode":{"title":"God","label":"Invincibilità","success":"God Mode attiva"},"normal":{"title":"Normale","label":"Nodalità normale","success":"Tornato alla modalità normale."}},"teleport":{"title":"Teletrasporto","generic_success":"Mandato nel wormhole!","waypoint":{"title":"Waypoint","label":"Vai al waypoint impostato","error":"Non hai un waypoint impostato."},"coords":{"title":"Coordinate","label":"Vai alle coordinate specificate","dialog_title":"Teletrasporto","dialog_desc":"Fornisci delle coordinate in un formato x, y, z per attraversare il wormhole.","dialog_error":"Coordinate errate. Devono essere nel formato: 111, 222, 33"},"back":{"title":"Indietro","label":"Torna alla tua ultima posizione","error":"Non hai un\\\'ultima posizione in cui andare!"},"copy":{"title":"Copia coordinate","label":"Copia le coordinate negli appunti."}},"vehicle":{"title":"Veicolo","onesync_error":"Questa opzione richiede che OneSync sia attivo","not_in_veh_error":"Non sei in un veicolo!","spawn":{"title":"Spawna","label":"Spawna un veicolo dal nmome","dialog_title":"Spawna veicolo","dialog_desc":"Inserisci il nome del modello del veicolo che vuoi spawnare.","dialog_success":"Veicolo spawnato!","dialog_error":"Il modello \\\'%{modelName}\\\' non esiste!","dialog_info":"Provando a spawnare %{modelName}."},"fix":{"title":"Ripara","label":"Ripara il veicolo","success":"Veicolo riparato!"},"delete":{"title":"Elimina","label":"Elimina il veicolo","success":"Veicolo eliminato!"}},"heal":{"title":"Cura","myself":{"title":"Te Stesso","label":"Cura te stesso","success_0":"Tutti curati!","success_1":"Dovresti stare bene ora!","success_2":"Curato al massimo!","success_3":"Ouchies risolto!"},"everyone":{"title":"Tutti","label":"Curerà e Rianimerà tutti i player","success":"Curati e rianimati tutti i player."}},"announcement":{"title":"Manda Annuncio","label":"Manda un annuncio a tutti i player online.","dialog_desc":"Enter the message you want to broadcast to all players.","dialog_placeholder":"Il tuo annuncio...","dialog_success":"Inviando l\\\'annuncio."},"clear_area":{"title":"Resetta l\\\'area","label":"Reset a specified world area to its default state","dialog_desc":"Inserisci il raggio in cui desideri reimpostare le entità (0-300). Questo non cancellerà le entità generate sul lato server","dialog_success":"Pulendo l\\\'area in un raggio di %{radius}m","dialog_error":"Inserimento raggio non valido. Riprova."},"player_ids":{"title":"Toggle ID dei Player","label":"Toggle showing player IDs (and other info) above the head of all nearby players","alert_show":"Mostra gli ID dei player vicini.","alert_hide":"Nascondi gli ID dei player vicini."}},"page_players":{"misc":{"online_players":"Giocatori Online","players":"Giocatori","search":"Cerca","zero_players":"Nessun giocatore trovato"},"sort":{"label":"Ordina per","distance":"Distanza","id":"ID","joined_first":"Entrato Prima","joined_last":"Entrato Dopo","closest":"Più Vicino","farthest":"Più Lontano"},"card":{"health":"%{percentHealth}% vita"}},"player_modal":{"misc":{"error":"Si è verificato un errore durante il recupero dei dettagli di questo utente. L\\\'errore è mostrato sotto:","target_not_found":"Impossibile trovare un giocatore online con ID o nome utente di %{target}"},"tabs":{"actions":"Azioni","info":"Info","ids":"IDs","history":"Cronologia","ban":"Ban"},"actions":{"title":"Azioni Player","command_sent":"Comando inviato!","moderation":{"title":"Moderazione","options":{"dm":"DM","warn":"Warn","kick":"Kick","set_admin":"Dai Admin"},"dm_dialog":{"title":"Messaggio Diretto","description":"Per che motivo stai inviando un messaggio diretto?","placeholder":"Motivo...","success":"Il tuo messaggio è stato inviato!"},"warn_dialog":{"title":"Warn","description":"Per che motivo stai warnando questo giocatore?","placeholder":"Motivo...","success":"Il player è stato warnato!"},"kick_dialog":{"title":"Kick","description":"Per che motivo stai kickando questo giocatore?","placeholder":"Motivo...","success":"Il player è stato kickato!"}},"interaction":{"title":"Interazioni","options":{"heal":"Cura","go_to":"Vai da","bring":"Porta da te","spectate":"Specta","toggle_freeze":"Toggle Freeze"},"notifications":{"heal_player":"Curando il Giocatore","tp_player":"Teletrasportandosi dal Giocatore","bring_player":"Bringando il Giocatore","spectate_failed":"Impossibile risolvere il bersaglio! Uscendo dallo Spectate.","spectate_yourself":"Non puoi spectarti da solo.","freeze_yourself":"Non puoi freezarti da solo."}},"troll":{"title":"Troll","options":{"drunk":"Diventa Ubriaco","fire":"Dai Fuoco","wild_attack":"Attacco di Scimmie"}}},"info":{"title":"Info sul Giocatore","session_time":"Tempo della Sesione","play_time":"Tempo di Gioco","joined":"Entrato","notes_placeholder":"Note riguardo al Giocatore"},"history":{"title":"Cronologia","action_types":{"warn":"WARNATO","warn_revoked":"REVOCATO il WARN per","ban":"BANNATO","ban_revoked":"REVOCATO il BAN per","whitelist":"WHITELIST","whitelist_revoked":"REVOCATA la WHITELIS per"}},"ban":{"title":"Banna il Player","reason_placeholder":"Motivo","duration_placeholder":"Durata","hours":"ore","days":"giorni","weeks":"settimane","months":"mesi","permanent":"Permanentemente","custom":"Personalizzato","helper_text":"Seleziona una durata","submit":"Apply ban"}}}}\');\n\n//# sourceURL=webpack://txadmin/./locale/it.json?')},"./locale/lt.json":
/*!************************!*\
  !*** ./locale/lt.json ***!
  \************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"$meta":{"label":"Lithuanian","humanizer_language":"lt"},"restarter":{"start_timeout":"nepavyko paleisti","crash_detected":"aptiktas serverio nulūžimas","hang_detected":"aptiktas serverio pakibimas","partial_hang_warn":"Dėl pakibimo, serveris persijungs automatiškai po 1 min. Atsijunkite nedelsiant.","partial_hang_warn_discord":"Dėl pakibimo, **%{servername}** serveris persijungs po 1 min.","schedule_reason":"automatinis %{time} perkrovimas","schedule_warn":"Serveris persikraus už %{smart_count} min. Prašome atsijungti. |||| Serveris persikraus už %{smart_count} min. Prašome atsijungti.","schedule_warn_discord":"**%{servername}** automatiškai persikraus už %{smart_count} min. |||| **%{servername}** automatiškai persikraus už %{smart_count} min."},"ban_messages":{"kick_temporary":"(%{author}) Buvote užblokuotas iš serverio dėl \\\\"%{reason}\\\\". Blokavimas bus baigtas: %{expiration}.","kick_permanent":"(%{author}) Buvote užblokuotas iš serverio visam laikui dėl \\\\"%{reason}\\\\".","reject_temporary":"Esate užblokuotas.\\\\nBlokavimas baigsis: %{expiration}.\\\\nBan ID: %{id}.\\\\nPriežastis: %{reason}.\\\\nUžblokavo: %{author}.","reject_permanent":"Esate užblokuotas visam laikui.\\\\nBan ID: %{id}.\\\\nPriežastis: %{reason}.\\\\nUžblokavo: %{author}."},"server_actions":{"restarting":"Serverio perkrovimas (%{reason}).","restarting_discord":"**%{servername}** yra perkraunamas (%{reason}).","stopping":"Serverio išjungiamas (%{reason}).","stopping_discord":"**%{servername}** yra išjungiamas (%{reason}).","spawning_discord":"**%{servername}** yra įjungiamas."},"discord":{"status_online":"**%{servername}** dabar **veikia**!","status_offline":"**%{servername}** dabar **neveikia**!"},"nui_warning":{"title":"ĮSPĖJIMAS","warned_by":"Įspėjimą skyrė:","instruction":"Laikykite [SPACE] 10 sekundžių, kad išjungtum šį pranešimą."},"nui_menu":{"misc":{"help_message":"txAdmin Meniu iįjungtas, rašykite /tx norėdami jį atidaryti.\\\\nMygtuką galite priskirti ar pakeisti [Game Settings > Key Bindings > FiveM > Menu: Open Main Page].","menu_not_allowed":"Jūsų identifikavimas txAdmin sistemai nebuvo rastas.\\\\nJei esate užregistruotas txAdmin sistemoje, eikite į Admin Manager ir įsitikinkite, kad jūsų atpažinimas išsaugotas.","no_perms":"Neturite tam teisių.","unknown_error":"Nežinoma klaida.","not_enabled":"txAdmin meniu nėra įjungtas! Tai galite padaryti per txAdmin nustatymų (settings) puslapį.","announcement_title":"Serverio pranešimas nuo: %{author}:","dialog_empty_input":"Turite užpildyti įvesties laukelius."},"frozen":{"froze_player":"Užšaldėte žaidėją!","unfroze_player":"Atšaldėte žaidėją!","was_frozen":"Serverio administratorius jus užšaldė!"},"common":{"cancel":"Atšaukti","submit":"Patvirtinti","error":"Įvyko klaida","copied":"Nukopijuota."},"page_main":{"tooltips":{"tooltip_1":"Naudokite %{key} norėdami pakeisti puslapį, rodyklių mygtukus norėdami naviguoti meniu pasirinkimus.","tooltip_2":"Kai kurie meniu pasirinkimai gali būti pakeisti naudojant kairės ir dešinės rodyklių mygtukus."},"player_mode":{"title":"Žaidėjo rėžimas","noclip":{"title":"NoClip","label":"Skraidymas","success":"Skraidymas įjungtas"},"godmode":{"title":"God","label":"Nemirtingumas","success":"Nemirtingumas įjungtas"},"normal":{"title":"Normal","label":"Numatytasis rėžimas","success":"Grįžote į numatytąjį rėžimą."}},"teleport":{"title":"Teleport","generic_success":"Pakeisti savo poziciją!","waypoint":{"title":"Waypoint","label":"Nusikelkite į pažymėtą žemėlapyje vietą","error":"Pirma pažymėkite vietą žemėlapyje."},"coords":{"title":"Koordinatės","label":"Persikelkite į įvestas koordinates","dialog_title":"Persikelti","dialog_desc":"Įveskite x, y, z koordinates į kurias norite nusikelti.","dialog_error":"Netinkamos koordinatės, tinkamas formatas: 111, 222, 33"},"back":{"title":"Grįžti","label":"Grįžti į paskutinę vietą","error":"Neturite išsaugotos vietos grįžimui!"},"copy":{"title":"Kopijuoti koordinates","label":"Nukopijuoti koordinates įklijavimui."}},"vehicle":{"title":"Tr. priemonė","onesync_error":"Šiam pasirinkimui reikalingas įjungtas OneSync, kuris reikalingas objektų valdymui","not_in_veh_error":"Nesate jokioje tr.priemonėje!","spawn":{"title":"Spawn","label":"Spawn\\\'inti tr. priemonę pagal pavadinimą","dialog_title":"Spawn\\\'inti tr. priemonę","dialog_desc":"Įveskite tr. priemonės modelio pavadinimą.","dialog_success":"Tr. priemonė sukurta!","dialog_error":"Modelio pavadinimas \\\'%{modelName}\\\' neegzistuoja!","dialog_info":"Bandoma at\\\'spawn\\\'inti %{modelName}."},"fix":{"title":"Remontas","label":"Suremontuoti tr. priemonę","success":"Tr. priemonė suremontuota!"},"delete":{"title":"Ištrinti","label":"Ištrinti dabartinę tr. priemonę","success":"Tr. priemonė ištrinta!"}},"heal":{"title":"Gydyti","myself":{"title":"Save","label":"Atstato gyvybes jums","success_0":"Jūs pagydytas!","success_1":"Turėtumėte jaustis kur kas geriau!","success_2":"Stebuklingų galių pagalba vėl jaučiatės geriau!","success_3":"Skausmai panaikinti!"},"everyone":{"title":"Visus","label":"Pagydys ir prikels visus žaidėjus","success":"Visi žaidėjai pagydyti ir prikelti."}},"announcement":{"title":"Siųsti pranešimą","label":"Siųsti pranešimą visiems serverio žaidėjams.","dialog_desc":"Enter the message you want to broadcast to all players.","dialog_placeholder":"Jūsų pranešimas...","dialog_success":"Siunčiamas pranešimas."},"clear_area":{"title":"Atstatyti pasaulio aplinką","label":"Reset a specified world area to its default state","dialog_desc":"Įveskite kokiu spinduliu norėtumėte atstatyti objektus (0-300). Šis pasirinkimas neištrins serverio sukurtų objektų","dialog_success":"Ištrinami objektai %{radius} metrų spinduliu","dialog_error":"Netinkamas skaičius."},"player_ids":{"title":"Žaidėjų ID rodymas","label":"Toggle showing player IDs (and other info) above the head of all nearby players","alert_show":"Žaidėjų NetID rodomi.","alert_hide":"Žaidėjų NetID paslėpti."}},"page_players":{"misc":{"online_players":"Prisijungę žaidėjai","players":"Žaidėjai","search":"Paieška","zero_players":"Žaidėjų nerasta"},"sort":{"label":"Rykiuoti pagal","distance":"Atstumą","id":"ID","joined_first":"Pirmi prisijungę","joined_last":"Paskutiniai prisijungę","closest":"Artimiausi","farthest":"Tolimiausi"},"card":{"health":"%{percentHealth}% gyvybių"}},"player_modal":{"misc":{"error":"Klaida gaunant žaidėjo duomenis. Klaida:","target_not_found":"Nepavyko rasti žaidėjo su šiuo ID arba vardu - %{target}"},"tabs":{"actions":"Veiksmai","info":"Informacija","ids":"ID","history":"Istorija","ban":"Blokuoti"},"actions":{"title":"Žaidėjo veiksmai","command_sent":"Komanda išsiųsta!","moderation":{"title":"Moderavimas","options":{"dm":"DM","warn":"Įspėjimas","kick":"Išmesti","set_admin":"Paskirti administratoriumi"},"dm_dialog":{"title":"Privati žinutė (DM)","description":"Privačios žinutės tekstas.","placeholder":"Žinutė...","success":"Privati žinutė išsiųsta!"},"warn_dialog":{"title":"Įspėti","description":"Dėl kokios priežasties įspėjate žaidėją?","placeholder":"Priežastis...","success":"Žaidėjas įspėtas!"},"kick_dialog":{"title":"Išmesti","description":"Dėl kokios priežasties išmetate žaidėją?","placeholder":"Priežastis...","success":"Žaidėjas išmestas!"}},"interaction":{"title":"Veiksmai","options":{"heal":"Pagydyti","go_to":"Nusikelti iki","bring":"Atkelti iki savęs","spectate":"Stebėti (spectate)","toggle_freeze":"Šaldyti"},"notifications":{"heal_player":"Gydomas žaidėjas","tp_player":"Nusikeliama iki žaidėjo","bring_player":"Žaidėjas atkeliamas","spectate_failed":"Žaidėjas nerastas! Stebėjimas išjungiamas.","spectate_yourself":"Negalite stebėti savęs.","freeze_yourself":"Negalite užšaldyti savęs."}},"troll":{"title":"Troll","options":{"drunk":"Padaryti girtu","fire":"Padegti","wild_attack":"Laukinių gyvūnų užpuolimas"}}},"info":{"title":"Žaidėjo informacija","session_time":"Sesijos laikas","play_time":"Pražaista laiko","joined":"Prisijungęs","notes_placeholder":"Užrašai apie žaidėją"},"history":{"title":"Susijusi informacija","action_types":{"warn":"ĮSPĖTAS","warn_revoked":"ĮSPĖJIMĄ panaikino","ban":"BLOKUOTAS","ban_revoked":"BLOKAVIMĄ panaikino","whitelist":"WHITELIST","whitelist_revoked":"WHITELIST\\\'ą nuėmė"}},"ban":{"title":"Užblokuoti žaidėją","reason_placeholder":"Priežastis","duration_placeholder":"Laikas","hours":"valandos","days":"dienos","weeks":"savaitės","months":"mėnesiai","permanent":"Visam laikui","custom":"Custom","helper_text":"Pasirinkti laiką","submit":"Apply ban"}}}}\');\n\n//# sourceURL=webpack://txadmin/./locale/lt.json?')},"./locale/lv.json":
/*!************************!*\
  !*** ./locale/lv.json ***!
  \************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"$meta":{"label":"Latvian","humanizer_language":"lv"},"restarter":{"start_timeout":"failed to start in time","crash_detected":"konstatēta avārija","hang_detected":"hang detected","partial_hang_warn":"Due to a partial hang, this server will restart in 1 minute. Please disconnect now.","partial_hang_warn_discord":"Due to a partial hang, **%{servername}** will restart in 1 minute.","schedule_reason":"ieplānotais restarts %{time}","schedule_warn":"Šī servera restartēšana ir ieplānota pēc %{smart_count} minūtes. Lūdzu atvienojies tagad. |||| Šī servera restartēšana ir ieplānota pēc %{smart_count} minūtēm.","schedule_warn_discord":"**%{servername}** ir ieplānots restarts pēc %{smart_count} minūtes. |||| **%{servername}** ir ieplānots restarts pēc %{smart_count} minūtēm."},"ban_messages":{"kick_temporary":"(%{author}) You have been banned from this server for \\\\"%{reason}\\\\". Your ban will expire in: %{expiration}.","kick_permanent":"(%{author}) You have been permanently banned from this server for \\\\"%{reason}\\\\".","reject_temporary":"You have been banned from this server.\\\\nYour ban will expire in: %{expiration}.\\\\nBan ID: %{id}.\\\\nBan Reason: %{reason}.\\\\nBanned by: %{author}.","reject_permanent":"You have been permanently banned from this server.\\\\nBan ID: %{id}.\\\\nBan Reason: %{reason}.\\\\nBanned by: %{author}."},"server_actions":{"restarting":"Serveris tiek restartēts (%{reason}).","restarting_discord":"**%{servername}** tiek restartēts (%{reason}).","stopping":"Serveris tiek izslēgts (%{reason}).","stopping_discord":"**%{servername}** tiek izslēgts (%{reason}).","spawning_discord":"**%{servername}** tiek ieslēgts"},"discord":{"status_online":"**%{servername}** ir pašlaik **Ieslēgts**!","status_offline":"**%{servername}** ir pašlaik **Izslēgts**!"},"nui_warning":{"title":"WARNING","warned_by":"Warned by:","instruction":"Hold [SPACE] for 10 seconds to dismiss this message."},"nui_menu":{"misc":{"help_message":"txAdmin Menu enabled, type /tx to open it.\\\\nYou can also configure a keybind at [Game Settings > Key Bindings > FiveM > Menu: Open Main Page].","menu_not_allowed":"Your identifiers do not match any admin registered on txAdmin.\\\\nIf you are registered on txAdmin, go to Admin Manager and make sure your identifiers are saved.","no_perms":"You do not have this permission.","unknown_error":"An unknown error occurred.","not_enabled":"The txAdmin Menu is not enabled! You can enable it in the txAdmin settings page.","announcement_title":"Server Announcement by %{author}:","dialog_empty_input":"You cannot have an empty input."},"frozen":{"froze_player":"You have frozen the player!","unfroze_player":"You have unfrozen the player!","was_frozen":"You have been frozen by a server admin!"},"common":{"cancel":"Cancel","submit":"Submit","error":"An error occurred","copied":"Copied to clipboard."},"page_main":{"tooltips":{"tooltip_1":"Use %{key} to switch pages & the arrow keys to navigate menu items","tooltip_2":"Certain menu items have sub options which can be selected using the left & right arrow keys"},"player_mode":{"title":"Player Mode","noclip":{"title":"NoClip","label":"Fly around","success":"NoClip enabled"},"godmode":{"title":"God","label":"Invincible","success":"God Mode enabled"},"normal":{"title":"Normal","label":"Default mode","success":"Returned to default player mode."}},"teleport":{"title":"Teleport","generic_success":"Sent you into the wormhole!","waypoint":{"title":"Waypoint","label":"Go to waypoint set","error":"You have no waypoint set."},"coords":{"title":"Coords","label":"Go to specified coords","dialog_title":"Teleport","dialog_desc":"Provide coordinates in an x, y, z format to go through the wormhole.","dialog_error":"Invalid coordinates. Must be in the format of: 111, 222, 33"},"back":{"title":"Back","label":"Go back to last location","error":"You don\\\'t have a last location to go back to!"},"copy":{"title":"Copy Coords","label":"Copy coords to clipboard."}},"vehicle":{"title":"Vehicle","onesync_error":"This option requires that OneSync be on for server entity handling","not_in_veh_error":"You are not currently in a vehicle!","spawn":{"title":"Spawn","label":"Spawn vehicle by model name","dialog_title":"Spawn vehicle","dialog_desc":"Enter in the model name of the vehicle you want to spawn.","dialog_success":"Vehicle spawned!","dialog_error":"The vehicle model name \\\'%{modelName}\\\' does not exist!","dialog_info":"Trying to spawn %{modelName}."},"fix":{"title":"Fix","label":"Fix the current vehicle","success":"Vehicle fixed!"},"delete":{"title":"Delete","label":"Delete the current vehicle","success":"Vehicle deleted!"}},"heal":{"title":"Heal","myself":{"title":"Myself","label":"Restores your health","success_0":"All healed up!","success_1":"You should be feeling good now!","success_2":"Restored to full!","success_3":"Ouchies fixed!"},"everyone":{"title":"Everyone","label":"Will heal & revive all players","success":"Healed and revived all players."}},"announcement":{"title":"Send Announcement","label":"Send an announcement to all online players.","dialog_desc":"Send an announcement to all online players.","dialog_placeholder":"Your announcement...","dialog_success":"Sending the announcement."},"clear_area":{"title":"Reset World Area","label":"Reset a specified world area to its default state","dialog_desc":"Please enter the radius where you wish to reset entities in (0-300). This will not clear entities spawned server side.","dialog_success":"Clearing area with radius of %{radius}m","dialog_error":"Invalid radius input. Try again."},"player_ids":{"title":"Toggle Player IDs","label":"Toggle showing player IDs (and other info) above the head of all nearby players","alert_show":"Showing nearby player NetIDs.","alert_hide":"Hiding nearby player NetIDs."}},"page_players":{"misc":{"online_players":"Online Players","players":"Players","search":"Search","zero_players":"No players found"},"sort":{"label":"Sort by","distance":"Distance","id":"ID","joined_first":"Joined First","joined_last":"Joined Last","closest":"Closest","farthest":"Farthest"},"card":{"health":"%{percentHealth}% health"}},"player_modal":{"misc":{"error":"An error occurred fetching this users details. The error is shown below:","target_not_found":"Was unable to find an online player with ID or an username of %{target}"},"tabs":{"actions":"Actions","info":"Info","ids":"IDs","history":"History","ban":"Ban"},"actions":{"title":"Player Actions","command_sent":"Command sent!","moderation":{"title":"Moderation","options":{"dm":"DM","warn":"Warn","kick":"Kick","set_admin":"Give Admin"},"dm_dialog":{"title":"Direct Message","description":"What is the reason for direct messaging this player?","placeholder":"Reason...","success":"Your DM has been sent!"},"warn_dialog":{"title":"Warn","description":"What is the reason for direct warning this player?","placeholder":"Reason...","success":"The player was warned!"},"kick_dialog":{"title":"Kick","description":"What is the reason for kicking this player?","placeholder":"Reason...","success":"The player was kicked!"}},"interaction":{"title":"Interaction","options":{"heal":"Heal","go_to":"Go to","bring":"Bring","spectate":"Spectate","toggle_freeze":"Toggle Freeze"},"notifications":{"heal_player":"Healing player","tp_player":"Teleporting to player","bring_player":"Summoning player","spectate_failed":"Failed to resolve the target! Exiting spectate.","spectate_yourself":"You cannot spectate yourself.","freeze_yourself":"You cannot freeze yourself."}},"troll":{"title":"Troll","options":{"drunk":"Make Drunk","fire":"Set Fire","wild_attack":"Wild attack"}}},"info":{"title":"Player info","session_time":"Session Time","play_time":"Play time","joined":"Joined","notes_placeholder":"Notes about this player"},"history":{"title":"Related history","action_types":{"warn":"WARNED","warn_revoked":"REVOKED the WARN for","ban":"BANNED","ban_revoked":"REVOKED the BAN for","whitelist":"WHITELIST","whitelist_revoked":"REVOKED the WHITELIST for"}},"ban":{"title":"Ban player","reason_placeholder":"Reason","duration_placeholder":"Duration","hours":"hours","days":"days","weeks":"weeks","months":"months","permanent":"Permanent","custom":"Custom","helper_text":"Please select a duration","submit":"Apply ban"}}}}\');\n\n//# sourceURL=webpack://txadmin/./locale/lv.json?')},"./locale/nl.json":
/*!************************!*\
  !*** ./locale/nl.json ***!
  \************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"$meta":{"label":"Dutch","humanizer_language":"nl"},"restarter":{"start_timeout":"Kon niet op tijd starten","crash_detected":"Crash geconstateerd","hang_detected":"De server is vastgelopen","partial_hang_warn":"De server is vastgelopen en zal over 1 minuut herstarten. Verlaat de server nu.","partial_hang_warn_discord":"**%{servername}** is vastgelopen en zal over 1 minuut herstarten.","schedule_reason":"Geplande restart om %{time}","schedule_warn":"De server heeft een geplande restart over %{smart_count} minuut. Verlaat de server. |||| De server heeft een geplande restart over %{smart_count} minuten.","schedule_warn_discord":"**%{servername}** heeft een geplande restart over %{smart_count} minuut. |||| **%{servername}** heeft een geplande restart over %{smart_count} minuten."},"ban_messages":{"kick_temporary":"(%{author}) Je bent verbannen van deze server omwille van \\\\"%{reason}\\\\". Je ban zal vervallen over: %{expiration}.","kick_permanent":"(%{author}) Je bent permanent verbannen van deze server omwille van \\\\"%{reason}\\\\".","reject_temporary":"Je bent verbannen van deze server.\\\\nJe ban zal vervallen over: %{expiration}.\\\\nBan ID: %{id}.\\\\nBan Reden: %{reason}.\\\\nVerbannen door: %{author}.","reject_permanent":"Je bent permanent verbannen van deze server.\\\\nBan ID: %{id}.\\\\nBan Reden: %{reason}.\\\\nVerbannen door: %{author}."},"server_actions":{"restarting":"Server wordt herstart (%{reason}).","restarting_discord":"**%{servername}** is aan het herstarten (%{reason}).","stopping":"Server wordt uitgezet (%{reason}).","stopping_discord":"**%{servername}** is aan het stoppen (%{reason}).","spawning_discord":"**%{servername}** is aan het opstarten."},"discord":{"status_online":"**%{servername}** is op dit moment **Online**!","status_offline":"**%{servername}** is op dit moment **Offline**!"},"nui_warning":{"title":"WAARSCHUWING","warned_by":"Gewaarschuwd door:","instruction":"Houd [SPATIE] 10 seconden ingedrukt om dit bericht te negeren."},"nui_menu":{"misc":{"help_message":"txAdmin Menu ingeschakeld, type /tx om het te openen.\\\\nJe kan ook een keybind registreren in [Game Settings > Key Bindings > FiveM > Menu: Open Main Page].","menu_not_allowed":"Jouw identifiers zijn niet gelijk aan degenen die in txAdmin zijn geregistreerd.\\\\nAls je wel geregistreerd staat bij txAdmin, ga naar Admin Manager en sla je identifiers op.","no_perms":"Je hebt hier geen permissie voor.","unknown_error":"Er is een onbekende error opgetreden.","not_enabled":"Het txAdmin Menu is uitgeschakeld! Je kan hem inschakelen bij de txAdmin instellingen pagina.","announcement_title":"Server Mededeling door %{author}:","dialog_empty_input":"Je kan niet niks invullen."},"frozen":{"froze_player":"Je hebt de speler gefreezed!","unfroze_player":"Je hebt de speler geunfreezed!","was_frozen":"Je bent gefreezed door een server admin!"},"common":{"cancel":"Annuleer","submit":"Opslaan","error":"Een error is opgetreden","copied":"Gekopieerd naar klembord."},"page_main":{"tooltips":{"tooltip_1":"Gebruik %{key} om van pagina te verwisselen & de pijltjes om in het menu te navigeren","tooltip_2":"Menu subopties kunnen worden geselecteerd door de linker en rechter pijltjes toetsen te gebruiken"},"player_mode":{"title":"Speler Modus","noclip":{"title":"NoClip","label":"Vlieg rond","success":"NoClip ingeschakeld"},"godmode":{"title":"God","label":"Onzichtbaar","success":"God Mode ingeschakeld"},"normal":{"title":"Normaal","label":"Normale modus","success":"Teruggekeerd naar normale modus."}},"teleport":{"title":"Teleporteren","generic_success":"Je bent door het wormgat gestuurd!","waypoint":{"title":"Waypoint","label":"Ga naar de gezette waypoint","error":"Je hebt geen waypoint gezet."},"coords":{"title":"Coördinaten","label":"Ga naar de gespecificeerde coördinaten","dialog_title":"Teleporteer","dialog_desc":"Geef coördinaten in een x, y, z format om door het wormgat te gaan.","dialog_error":"Ongeldige coördinaten. Geef ze in het volgende format: 111, 222, 33"},"back":{"title":"Terug","label":"Ga terug naar je laatste locatie","error":"Je hebt geen locatie om naar terug te gaan!"},"copy":{"title":"Kopieer coördinaten","label":"Kopieer coördinaten naar het klembord."}},"vehicle":{"title":"Voertuig","onesync_error":"Om deze optie te gebruiken, moet OneSync aan staan","not_in_veh_error":"Je zit niet in een voertuig!","spawn":{"title":"Spawn","label":"Spawn een voertuig door middel van de spawnnaam","dialog_title":"Spawn voertuig","dialog_desc":"Vul de spawnnaam in om het voertuig te spawnen.","dialog_success":"Vehicle gespawned!","dialog_error":"Het voertuig model \\\'%{modelName}\\\' bestaat niet!","dialog_info":"Proberen %{modelName} te spawnen."},"fix":{"title":"Repareer","label":"Repareer het huidige voertuig","success":"Voertuig gerepareerd!"},"delete":{"title":"Verwijder","label":"Verwijder het huidige voertuig","success":"Voertuig verwijderd!"}},"heal":{"title":"Heal","myself":{"title":"Jezelf","label":"Herstel je health","success_0":"Volledig genezen!","success_1":"Je zou je nu goed moeten voelen!","success_2":"Helemaal genezen!","success_3":"Pijntjes verholpen!"},"everyone":{"title":"Iedereen","label":"Heal & revive alle spelers","success":"Alle spelers zijn gehealed & gerevived."}},"announcement":{"title":"Verstuur Mededeling","label":"Stuur een mededeling aan alle online spelers","dialog_desc":"Enter the message you want to broadcast to all players.","dialog_placeholder":"Jouw mededeling...","dialog_success":"Mededeling aan het verzenden."},"clear_area":{"title":"Herstel de wereld","label":"Reset a specified world area to its default state","dialog_desc":"Kies een radius (0-300), om alle entities van te verwijderen. Dit verwijderd geen server sided gespawnede entities","dialog_success":"Gebied met de radius %{radius}m aan het herstellen","dialog_error":"Ongeldige invoer. Probeer het opnieuw."},"player_ids":{"title":"Schakel Speler IDs in/uit","label":"Toggle showing player IDs (and other info) above the head of all nearby players","alert_show":"Toon de NetIDs van spelers in jouw buurt.","alert_hide":"Verberg NetIDs van spelers in jouw buurt."}},"page_players":{"misc":{"online_players":"Online Spelers","players":"Spelers","search":"Zoeken","zero_players":"Geen spelers gevonden"},"sort":{"label":"Sorteren op","distance":"Afstand","id":"ID","joined_first":"Eerst gejoined","joined_last":"Laatst gejoined","closest":"Dichstbijzijnde","farthest":"Verste weg"},"card":{"health":"%{percentHealth}% health"}},"player_modal":{"misc":{"error":"Er is een error opgetreden bij het ophalen van de details van deze speler. De error kan je hieronder zien:","target_not_found":"Kon geen speler matchend met dit ID of deze naam %{target} vinden"},"tabs":{"actions":"Acties","info":"Info","ids":"IDs","history":"Geschiedenis","ban":"Ban"},"actions":{"title":"Speler Acties","command_sent":"Commando verzonden!","moderation":{"title":"Moderatie","options":{"dm":"DM","warn":"Waarschuw","kick":"Kick","set_admin":"Geef Admin"},"dm_dialog":{"title":"Privé Bericht","description":"Wat wil je als privébericht sturen?","placeholder":"Reden...","success":"Jouw DM is verzonden!"},"warn_dialog":{"title":"Waarschuw","description":"Waarom wil je deze speler waarschuwen?","placeholder":"Reden...","success":"De speler is gewaarschuwd!"},"kick_dialog":{"title":"Kick","description":"Waarom wil je deze speler kicken?","placeholder":"Reden...","success":"De speler is gekicked!"}},"interaction":{"title":"Interactie","options":{"heal":"Heal","go_to":"Ga naar","bring":"Breng","spectate":"Spectate","toggle_freeze":"Schakel Freeze in/uit"},"notifications":{"heal_player":"Speler aan het healen","tp_player":"Naar speler aan het teleporteren","bring_player":"Speler aan het brengen","spectate_failed":"Kon de speler niet vinden! Spectate aan het afsluiten.","spectate_yourself":"Je kan jezelf niet spectaten.","freeze_yourself":"Je kan jezelf niet freezen."}},"troll":{"title":"Troll","options":{"drunk":"Maak Dronken","fire":"Zet in Vuur","wild_attack":"Wilde Dieren aanval"}}},"info":{"title":"Speler info","session_time":"Sessie Tijd","play_time":"Speel Tijd","joined":"Gejoined","notes_placeholder":"Notities over deze speler"},"history":{"title":"Gerelateerde geschiedenis","action_types":{"warn":"GEWAARSCHUWD","warn_revoked":"WAARSCHUWING INGETROKKEN voor","ban":"BANNED","ban_revoked":"BAN INGETROKKEN voor","whitelist":"WHITELIST","whitelist_revoked":"WHITELIST INGETROKKEN voor"}},"ban":{"title":"Ban speler","reason_placeholder":"Reden","duration_placeholder":"Lengte","hours":"uren","days":"dagen","weeks":"weken","months":"maanden","permanent":"Permanent","custom":"Custom","helper_text":"Selecteer een lengte","submit":"Apply ban"}}}}\');\n\n//# sourceURL=webpack://txadmin/./locale/nl.json?')},"./locale/no.json":
/*!************************!*\
  !*** ./locale/no.json ***!
  \************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"$meta":{"label":"Norwegian (Bokml)","humanizer_language":"no"},"restarter":{"start_timeout":"failed to start in time","crash_detected":"oppdaget kræsj","hang_detected":"hang detected","partial_hang_warn":"Due to a partial hang, this server will restart in 1 minute. Please disconnect now.","partial_hang_warn_discord":"Due to a partial hang, **%{servername}** will restart in 1 minute.","schedule_reason":"et omstart er planlagt kl. %{time}","schedule_warn":"En planlagt omstart av serveren vil skje om %{smart_count} minutt. Vennligst koble fra serveren nå. |||| Et planlagt omstart av serveren vil skje om %{smart_count} minutter.","schedule_warn_discord":"**%{servername}** har blitt planlagt om å starte på nytt om %{smart_count} minutt. |||| **%{servername}** skal omstartes om %{smart_count} minutter."},"ban_messages":{"kick_temporary":"(%{author}) You have been banned from this server for \\\\"%{reason}\\\\". Your ban will expire in: %{expiration}.","kick_permanent":"(%{author}) You have been permanently banned from this server for \\\\"%{reason}\\\\".","reject_temporary":"You have been banned from this server.\\\\nYour ban will expire in: %{expiration}.\\\\nBan ID: %{id}.\\\\nBan Reason: %{reason}.\\\\nBanned by: %{author}.","reject_permanent":"You have been permanently banned from this server.\\\\nBan ID: %{id}.\\\\nBan Reason: %{reason}.\\\\nBanned by: %{author}."},"server_actions":{"restarting":"Serveren omstartes (%{reason}).","restarting_discord":"**%{servername}** blir omstartet (%{reason}).","stopping":"Serveren har blitt avslått (%{reason}).","stopping_discord":"**%{servername}** blir avslått (%{reason}).","spawning_discord":"**%{servername}** starter opp."},"discord":{"status_online":"**%{servername}** er midlertidig **Oppe**!","status_offline":"**%{servername}** er midlertidig **Nede**!"},"nui_warning":{"title":"ADVARSEL","warned_by":"Advarsel fra:","instruction":"Vennligst hold [MELLOMROM] for 10 sekunder for å ta bort denne meldingen."},"nui_menu":{"misc":{"help_message":"txAdmin Menu enabled, type /tx to open it.\\\\nYou can also configure a keybind at [Game Settings > Key Bindings > FiveM > Menu: Open Main Page].","menu_not_allowed":"Your identifiers do not match any admin registered on txAdmin.\\\\nIf you are registered on txAdmin, go to Admin Manager and make sure your identifiers are saved.","no_perms":"You do not have this permission.","unknown_error":"An unknown error occurred.","not_enabled":"The txAdmin Menu is not enabled! You can enable it in the txAdmin settings page.","announcement_title":"Server Announcement by %{author}:","dialog_empty_input":"You cannot have an empty input."},"frozen":{"froze_player":"You have frozen the player!","unfroze_player":"You have unfrozen the player!","was_frozen":"You have been frozen by a server admin!"},"common":{"cancel":"Cancel","submit":"Submit","error":"An error occurred","copied":"Copied to clipboard."},"page_main":{"tooltips":{"tooltip_1":"Use %{key} to switch pages & the arrow keys to navigate menu items","tooltip_2":"Certain menu items have sub options which can be selected using the left & right arrow keys"},"player_mode":{"title":"Player Mode","noclip":{"title":"NoClip","label":"Fly around","success":"NoClip enabled"},"godmode":{"title":"God","label":"Invincible","success":"God Mode enabled"},"normal":{"title":"Normal","label":"Default mode","success":"Returned to default player mode."}},"teleport":{"title":"Teleport","generic_success":"Sent you into the wormhole!","waypoint":{"title":"Waypoint","label":"Go to waypoint set","error":"You have no waypoint set."},"coords":{"title":"Coords","label":"Go to specified coords","dialog_title":"Teleport","dialog_desc":"Provide coordinates in an x, y, z format to go through the wormhole.","dialog_error":"Invalid coordinates. Must be in the format of: 111, 222, 33"},"back":{"title":"Back","label":"Go back to last location","error":"You don\\\'t have a last location to go back to!"},"copy":{"title":"Copy Coords","label":"Copy coords to clipboard."}},"vehicle":{"title":"Vehicle","onesync_error":"This option requires that OneSync be on for server entity handling","not_in_veh_error":"You are not currently in a vehicle!","spawn":{"title":"Spawn","label":"Spawn vehicle by model name","dialog_title":"Spawn vehicle","dialog_desc":"Enter in the model name of the vehicle you want to spawn.","dialog_success":"Vehicle spawned!","dialog_error":"The vehicle model name \\\'%{modelName}\\\' does not exist!","dialog_info":"Trying to spawn %{modelName}."},"fix":{"title":"Fix","label":"Fix the current vehicle","success":"Vehicle fixed!"},"delete":{"title":"Delete","label":"Delete the current vehicle","success":"Vehicle deleted!"}},"heal":{"title":"Heal","myself":{"title":"Myself","label":"Restores your health","success_0":"All healed up!","success_1":"You should be feeling good now!","success_2":"Restored to full!","success_3":"Ouchies fixed!"},"everyone":{"title":"Everyone","label":"Will heal & revive all players","success":"Healed and revived all players."}},"announcement":{"title":"Send Announcement","label":"Send an announcement to all online players.","dialog_desc":"Send an announcement to all online players.","dialog_placeholder":"Your announcement...","dialog_success":"Sending the announcement."},"clear_area":{"title":"Reset World Area","label":"Reset a specified world area to its default state","dialog_desc":"Please enter the radius where you wish to reset entities in (0-300). This will not clear entities spawned server side.","dialog_success":"Clearing area with radius of %{radius}m","dialog_error":"Invalid radius input. Try again."},"player_ids":{"title":"Toggle Player IDs","label":"Toggle showing player IDs (and other info) above the head of all nearby players","alert_show":"Showing nearby player NetIDs.","alert_hide":"Hiding nearby player NetIDs."}},"page_players":{"misc":{"online_players":"Online Players","players":"Players","search":"Search","zero_players":"No players found"},"sort":{"label":"Sort by","distance":"Distance","id":"ID","joined_first":"Joined First","joined_last":"Joined Last","closest":"Closest","farthest":"Farthest"},"card":{"health":"%{percentHealth}% health"}},"player_modal":{"misc":{"error":"An error occurred fetching this users details. The error is shown below:","target_not_found":"Was unable to find an online player with ID or an username of %{target}"},"tabs":{"actions":"Actions","info":"Info","ids":"IDs","history":"History","ban":"Ban"},"actions":{"title":"Player Actions","command_sent":"Command sent!","moderation":{"title":"Moderation","options":{"dm":"DM","warn":"Warn","kick":"Kick","set_admin":"Give Admin"},"dm_dialog":{"title":"Direct Message","description":"What is the reason for direct messaging this player?","placeholder":"Reason...","success":"Your DM has been sent!"},"warn_dialog":{"title":"Warn","description":"What is the reason for direct warning this player?","placeholder":"Reason...","success":"The player was warned!"},"kick_dialog":{"title":"Kick","description":"What is the reason for kicking this player?","placeholder":"Reason...","success":"The player was kicked!"}},"interaction":{"title":"Interaction","options":{"heal":"Heal","go_to":"Go to","bring":"Bring","spectate":"Spectate","toggle_freeze":"Toggle Freeze"},"notifications":{"heal_player":"Healing player","tp_player":"Teleporting to player","bring_player":"Summoning player","spectate_failed":"Failed to resolve the target! Exiting spectate.","spectate_yourself":"You cannot spectate yourself.","freeze_yourself":"You cannot freeze yourself."}},"troll":{"title":"Troll","options":{"drunk":"Make Drunk","fire":"Set Fire","wild_attack":"Wild attack"}}},"info":{"title":"Player info","session_time":"Session Time","play_time":"Play time","joined":"Joined","notes_placeholder":"Notes about this player"},"history":{"title":"Related history","action_types":{"warn":"WARNED","warn_revoked":"REVOKED the WARN for","ban":"BANNED","ban_revoked":"REVOKED the BAN for","whitelist":"WHITELIST","whitelist_revoked":"REVOKED the WHITELIST for"}},"ban":{"title":"Ban player","reason_placeholder":"Reason","duration_placeholder":"Duration","hours":"hours","days":"days","weeks":"weeks","months":"months","permanent":"Permanent","custom":"Custom","helper_text":"Please select a duration","submit":"Apply ban"}}}}\');\n\n//# sourceURL=webpack://txadmin/./locale/no.json?')},"./locale/pl.json":
/*!************************!*\
  !*** ./locale/pl.json ***!
  \************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"$meta":{"label":"Polish","humanizer_language":"pl"},"restarter":{"start_timeout":"Nie udało się załadować serwera","crash_detected":"Wykryty Crash","hang_detected":"Wykryto zawieszenie się serwera","partial_hang_warn":"Z powodu częściowego zawieszenia, serwer zostanie ponownie uruchomiony za 1 minutę. Prosimy o rozłączenie się.","partial_hang_warn_discord":"Z powodu częściowego zawieszenia, **%{servername}** zostanie uruchomiony ponownie za 1 minutę.","schedule_reason":"Planowany restart o %{time}","schedule_warn":"Ten serwer ma zaplanowany restart w ciągu %{smart_count} minuty. Proszę opuścić serwer. |||| Ten serwer ma zaplanowany restart w ciągu %{smart_count} minut.","schedule_warn_discord":"**%{servername}** ma zaplanowany restart w ciągu %{smart_count} minuty. |||| **%{servername}** ma zaplanowany restart w ciągu %{smart_count} minut."},"ban_messages":{"kick_temporary":"(%{author}) Zostałeś zbanowany na tym serwerze z powodu \\\\"%{reason}\\\\". Twój ban wygaśnie za: %{expiration}.","kick_permanent":"(%{author}) Zostałeś permanentnie zbanowany na tym serwerze za \\\\"%{reason}\\\\".","reject_temporary":"Zostałeś zbanowany na tym serwerze. Twój ban wygaśnie za: %{expiration}.\\\\nID Bana: %{id}.\\\\nPowód bana: %{reason}.\\\\nZbanowany przez: %{author}.","reject_permanent":"Zostałeś permanentnie zbanowany na tym serwerze.\\\\nID Bana: %{id}.\\\\nPowód bana: %{reason}.\\\\nZbanowany przez: %{author}."},"server_actions":{"restarting":"Trwa restart (%{reason}).","restarting_discord":"**%{servername}** jest w trakcie restartu (%{reason}).","stopping":"Serwer jest wyłączany (%{reason}).","stopping_discord":"**%{servername}** jest wyłączany (%{reason}).","spawning_discord":"**%{servername}** jest uruchamiany."},"discord":{"status_online":"**%{servername}** jest aktualnie **Online**!","status_offline":"**%{servername}** jest aktualnie **Offline**!"},"nui_warning":{"title":"OSTRZEŻENIE","warned_by":"Ostrzeżony przez:","instruction":"Przytrzymaj [SPACJA] przez 10 sekund, aby odrzucić tę wiadomość."},"nui_menu":{"misc":{"help_message":"Menu txAdmin\\\'a jest włączone, wpisz /tx aby je otworzyć.\\\\nMożesz również skonfigurować inny bind w [Ustawienia/Przypisane klawisze/FiveM/Menu: Open Main Page]","menu_not_allowed":"Twoje identyfikatory nie są zgodne z żadnym adminem zarejestrowanym w txAdmin\\\'e, udaj się do menadżera adminów i upewnij się że zapisałeś dodanych administratorów.","no_perms":"Nie posiadasz tego uprawnienia.","unknown_error":"Wystąpił nieznany błąd.","not_enabled":"Menu txAdmin\\\'a nie jest uruchomione! Możesz je włączyć z poziomu ustawień txAdmin\\\'a.","announcement_title":"Ogłoszenie serwerowe nadane przez %{author}:","dialog_empty_input":"Nie możesz pozostawić pustego pola tekstowego."},"frozen":{"froze_player":"Zamroziłeś gracza!","unfroze_player":"Odmroziłeś gracza!","was_frozen":"Zostałeś zamrożony przez admina!"},"common":{"cancel":"Anuluj","submit":"Prześlij","error":"Wystąpił błąd","copied":"Skopiowano do schowka"},"page_main":{"tooltips":{"tooltip_1":"Skorzystaj z %{key} aby przełączać się między stronami oraz strzałek aby przełączać się między opcjami w menu","tooltip_2":"Niektóre pozycje w menu posiadają opcje podrzędne, które można wybrać za pomocą strzałek w lewo i w prawo"},"player_mode":{"title":"Tryb gracza","noclip":{"title":"NoClip","label":"Lataj tu i tam","success":"Włączono NoClip\\\'a"},"godmode":{"title":"God","label":"Nieśmiertelność","success":"Włączono God Mode"},"normal":{"title":"Normal","label":"Tryb domyślny","success":"Przywrócono domyślny tryb gracza."}},"teleport":{"title":"Teleport","generic_success":"Zostałeś wysłany do tunelu czasoprzestrzennego!","waypoint":{"title":"Znacznik","label":"Teleportuj do ustawionego znacznika","error":"Nie masz ustawionego znacznika."},"coords":{"title":"Kordy","label":"Teleportuj się do wybranych koordynatów","dialog_title":"Teleport","dialog_desc":"Podaj koordynaty w formacie x,y,z, aby przejść przez tunel czasoprzestrzenny.","dialog_error":"Niepoprawne koordynaty. Muszą mieć format: 111, 222, 33"},"back":{"title":"Powrót","label":"Wróć do swojej poprzedniej lokalizacji","error":"Nie masz ostatniej lokalizacji, do której mógłbyś wrócić!"},"copy":{"title":"Skopiuj kordy","label":"Skopiowano kordy do schowka."}},"vehicle":{"title":"Pojazd","onesync_error":"Ta opcja wymaga, aby OneSync był włączony do obsługi serwerowych Entity","not_in_veh_error":"Nie jesteś w żadnym pojeździe!","spawn":{"title":"Stwórz pojazd","label":"Stwórz pojazd po nazwie modelu","dialog_title":"Stwórz pojazd","dialog_desc":"Wprowadź nazwę modelu pojazdu, który chcesz stworzyć.","dialog_success":"Stworzono pojazd!","dialog_error":"Model pojazdu o nazwie \\\'%{modelName}\\\' nie istnieje!","dialog_info":"Próbuję zrespić %{modelName}."},"fix":{"title":"Napraw","label":"Napraw obecny pojazd","success":"Naprawiono pojazd!"},"delete":{"title":"Usuń","label":"Usuń obecny pojazd","success":"Usunięto pojazd!"}},"heal":{"title":"Ulecz","myself":{"title":"Mnie","label":"Przywraca zdrowie","success_0":"Wszystko wyleczone!","success_1":"Powinieneś czuć się teraz dobrze !","success_2":"Przywrócono do full\\\'a!","success_3":"Ała, już naprawione!"},"everyone":{"title":"Wszystkich","label":"Uleczy i ożywi wszystkich graczy","success":"Uzdrowiono i uleczono wszystkich graczy."}},"announcement":{"title":"Wyślij ogłoszenie","label":"Wyślij ogłoszenie do wszystkich graczy online .","dialog_desc":"Wyślij ogłoszenie do wszystkich graczy online .","dialog_placeholder":"Twoje ogłoszenie...","dialog_success":"Wysyłanie ogłoszenia."},"clear_area":{"title":"Zrestartuj obszar świata","label":"Zresetuj określony obszar świata do stanu domyślnego","dialog_desc":"Wprowadź promień, w którym chcesz zresetować jednostki w (0-300). Nie usunie to entity spawnowanych po stronie serwera. ","dialog_success":"Oczyszczono obszar w promieniu %{radius}m","dialog_error":"Wprowadzono niepoprawny promień. Spróbuj ponownie."},"player_ids":{"title":"Przełącz ID graczy","label":"Przełącz pokazywanie ID graczy (i innych informacji) nad głowami pobliskich graczy","alert_show":"Pokazywanie NetID pobliskich graczy.","alert_hide":"Chowanie NetID pobliskich graczy."}},"page_players":{"misc":{"online_players":"Gracze online","players":"Gracze","search":"Szukaj","zero_players":"Nie znaleziono żadnych graczy"},"sort":{"label":"Sortuj po","distance":"Dystansie","id":"ID","joined_first":"Dołączyli dawno","joined_last":"Dołączyli ostatnio","closest":"Najbliżej","farthest":"Najdalej"},"card":{"health":"%{percentHealth}% zdrowia"}},"player_modal":{"misc":{"error":"Wystąpił błąd podczas pobierania szczegółów tego użytkownika. Błąd jest pokazany poniżej:","target_not_found":"Nie udało się znaleźć gracza online z ID lub nazwą użytkownika %{target}"},"tabs":{"actions":"Akcje","info":"Info","ids":"IDs","history":"Historia","ban":"Bany"},"actions":{"title":"Akcje gracza","command_sent":"Wysłano polecenie!","moderation":{"title":"Moderacja","options":{"dm":"DM","warn":"Ostrzeżenie","kick":"Wyrzucenie","set_admin":"Nadaj Admina"},"dm_dialog":{"title":"Bezpośrednia wiadomość","description":"Jaki jest powód bezpośredniego wysyłania wiadomości do tego gracza ?","placeholder":"Reason...","success":"Your DM has been sent!"},"warn_dialog":{"title":"Ostrzeżenie","description":"Jaki jest powód bezpośredniego ostrzeżenia tego gracza ?","placeholder":"Powód...","success":"Gracz został ostrzeżony!"},"kick_dialog":{"title":"Wyrzucenie","description":"Jaki jest powód wyrzucenia tego gracza ?","placeholder":"Powód...","success":"Gracz został wyrzucony!"}},"interaction":{"title":"Interakcje","options":{"heal":"Ulecz","go_to":"Teleportuj siebie do gracza","bring":"Teleportuj gracza do siebie","spectate":"Obserwuj","toggle_freeze":"Przełącz zamrożenie"},"notifications":{"heal_player":"Leczenie gracza","tp_player":"Teleportowanie do gracza","bring_player":"Teleportowanie gracza","spectate_failed":"Nie udało się rozwiązać celu! Wyjście z Obserwacji.","spectate_yourself":"Nie możesz obserwować samego siebie.","freeze_yourself":"Nie możesz zamrozić samego siebie."}},"troll":{"title":"Troll","options":{"drunk":"Upij","fire":"Podpal","wild_attack":"Dziki atak"}}},"info":{"title":"Informacje o graczu","session_time":"Długość sesji","play_time":"Czas gry","joined":"Dołączył","notes_placeholder":"Notatki o graczu"},"history":{"title":"Powiązana historia ","action_types":{"warn":"OSTRZEŻONY","warn_revoked":"WYCOFANE OSTRZEŻENIE za","ban":"ZBANOWANY","ban_revoked":"WYCOFANY BAN za","whitelist":"WHITELIST","whitelist_revoked":"WYCOFANIE WHITELIST\\\'Y za"}},"ban":{"title":"Zbanuj gracza","reason_placeholder":"Powód","duration_placeholder":"Długość","hours":"godziny","days":"dni","weeks":"tygodnie","months":"miesiące","permanent":"Permanentny","custom":"Własny","helper_text":"Wybierz czas trwania ","submit":"Nałóż bana"}}}}\');\n\n//# sourceURL=webpack://txadmin/./locale/pl.json?')},"./locale/pt.json":
/*!************************!*\
  !*** ./locale/pt.json ***!
  \************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"$meta":{"label":"Portuguese","humanizer_language":"pt"},"restarter":{"start_timeout":"não iniciou a tempo","crash_detected":"crash detectado","hang_detected":"congelamento detectado","partial_hang_warn":"Devido a um congelamento parcial, este servidor será reiniciado em 1 minuto. Por favor se disconecte agora.","partial_hang_warn_discord":"Devido a um congelamento parcial, **%{servername}** será reiniciado em 1 minuto.","schedule_reason":"agendado para %{time}","schedule_warn":"Este servidor está agendado para reiniciar em %{smart_count} minuto. Por favor se disconecte agora. |||| Este servidor está agendado para reiniciar em %{smart_count} minutos.","schedule_warn_discord":"**%{servername}** está agendado para reiniciar em %{smart_count} minuto. |||| **%{servername}** está agendado para reiniciar em %{smart_count} minutos."},"ban_messages":{"kick_temporary":"(%{author}) Você foi banido deste servidor por \\\\"%{reason}\\\\". Seu ban vai expirar em: %{expiration}.","kick_permanent":"(%{author}) Você foi permanentemente banido deste servidor por \\\\"%{reason}\\\\".","reject_temporary":"Você foi banido deste servidor.\\\\nSeu ban vai expirar em: %{expiration}.\\\\nID: %{id}.\\\\nMotivo: %{reason}.\\\\nAutor: %{author}.","reject_permanent":"Você foi permanentemente banido deste servidor.\\\\nID: %{id}.\\\\nMotivo: %{reason}.\\\\nAutor: %{author}."},"server_actions":{"restarting":"Servidor reiniciando (%{reason}).","restarting_discord":"**%{servername}** está reiniciando (%{reason}).","stopping":"Servidor desligando (%{reason}).","stopping_discord":"**%{servername}** está desligando (%{reason}).","spawning_discord":"**%{servername}** está iniciando."},"discord":{"status_online":"**%{servername}** está **Online**!","status_offline":"**%{servername}** está **Offline**!"},"nui_warning":{"title":"ADVERTÊNCIA","warned_by":"Advertido por:","instruction":"Aperte [ESPAÇO] por 10 segundos para fechar esta advertência."},"nui_menu":{"misc":{"help_message":"txAdmin Menu habilitado, digite /tx para abri-lo.\\\\nVocê também pode configurar uma tecla atalho [Configurações do jogo > Key Bindings > FiveM > Menu: Open Main Page].","menu_not_allowed":"Seus IDs não estão cadastrados como administrador no txAdmin.\\\\nSe você tiver acesso ao txAdmin web, acesse a página Admin Manager e adicione seus IDs pro seu usuário.","no_perms":"Você não tem permissão para esta atividade.","unknown_error":"Ocorreu um erro inesperado.","not_enabled":"O menu do txAdmin não está habilitado! Você pode habilita-lo na página de configurações do txAdmin web.","announcement_title":"Aviso ao servidor por %{author}:","dialog_empty_input":"Você precisa digitar alguma coisa."},"frozen":{"froze_player":"Jogador congelado!","unfroze_player":"Jogador descongelado!","was_frozen":"Você foi congelado por um administrador!"},"common":{"cancel":"Cancelar","submit":"Enviar","error":"Ocorreu um erro inesperado.","copied":"Copiado para a área de transferência."},"page_main":{"tooltips":{"tooltip_1":"Aperte %{key} para mudar para a próxima aba, e as setinhas para navegar no menu.","tooltip_2":"Algumas opções do menu podem ser selecionadas com as setinhas da esquerda/direita."},"player_mode":{"title":"Modo do Jogador","noclip":{"title":"NoClip","label":"Voe pelo mapa","success":"NoClip habilitado."},"godmode":{"title":"Deus","label":"Invencível","success":"Modo Deus habilitado."},"normal":{"title":"Normal","label":"Modo padrão","success":"Jogador retornou ao modo normal."}},"teleport":{"title":"Teleportar","generic_success":"Entrando no buraco negro!","waypoint":{"title":"Marcador","label":"Ir para posição no mapa","error":"Você não tem nenhuma posição marcada no mapa."},"coords":{"title":"Coords","label":"Ir para coordenadas","dialog_title":"Teleport","dialog_desc":"Insira coordenadas no formato x, y, z para ser teleportado.","dialog_error":"Coordenadas inválidas. Elas precisam estar no formato: 111, 222, 33"},"back":{"title":"Voltar","label":"Voltar para última posição","error":"Você não possui nenhuma posição anterior salva."},"copy":{"title":"Copiar Coords","label":"Copiar coordenadas para área de transferência"}},"vehicle":{"title":"Veículo","onesync_error":"Esta opção requer que OneSync esteja habilitado para sincronizar as entidades no servidor.","not_in_veh_error":"Você não está em um veículo","spawn":{"title":"Criar","label":"Criar um veículo pelo nome","dialog_title":"Criar veículo","dialog_desc":"Insira o nome do modelo do veículo que deseja criar.","dialog_success":"Veículo criado!","dialog_error":"Não existe um veículo com modelo \\\'%{modelName}\\\'!","dialog_info":"Criando %{modelName}."},"fix":{"title":"Consertar","label":"Consertar veículo atual","success":"Veículo consertado!"},"delete":{"title":"Deletar","label":"Deletar veículo atual","success":"Veículo deletado!"}},"heal":{"title":"Curar","myself":{"title":"Eu Mesmo","label":"Restaura a sua vida.","success_0":"Personagem curado!","success_1":"Você já deve estar se sentindo melhor!","success_2":"Vida restaurada!","success_3":"Dodói já passou!"},"everyone":{"title":"Todo Mundo","label":"Cura e revive todos os jogadores","success":"Todos os jogadores foram curados."}},"announcement":{"title":"Enviar Aviso Global","label":"Envia uma mensagem para todos os jogadores online","dialog_desc":"Insira a mensagem a ser enviada para todos os jogadores.","dialog_placeholder":"Seu aviso...","dialog_success":"Enviando anúncio."},"clear_area":{"title":"Resetar Área","label":"Limpa as entidades do jogo próximas ao jogador.","dialog_desc":"Insira a distância a qual deseja limpar entidades (0-300). Esta ação não vai remover entidades criadas no servidor.","dialog_success":"Limpando entidades dentro de %{radius}m","dialog_error":"Distância inválida."},"player_ids":{"title":"Mostrar/Esconder IDs","label":"Toggle showing player IDs (and other info) above the head of all nearby players","alert_show":"Mostrando os NetIDs próximos.","alert_hide":"Escondendo os NetIDs próximos."}},"page_players":{"misc":{"online_players":"Jogadores Online","players":"Jogadores","search":"Buscar","zero_players":"Nenhum jogador encontrado"},"sort":{"label":"Ordenar por","distance":"Distância","id":"ID","joined_first":"Conectou primeiro","joined_last":"Conectou por último","closest":"Mais próximo","farthest":"Mais distante"},"card":{"health":"Vida em %{percentHealth}%"}},"player_modal":{"misc":{"error":"Erro ao buscar os dos dados do jogador:","target_not_found":"Não foi possível encontrar um jogador online com ID ou username %{target}"},"tabs":{"actions":"Ações","info":"Informações","ids":"IDs","history":"Histórico","ban":"Banir"},"actions":{"title":"Ações do Jogador","command_sent":"Comando enviado!","moderation":{"title":"Moderação","options":{"dm":"DM","warn":"Advertir","kick":"Kickar","set_admin":"Dar Admin"},"dm_dialog":{"title":"Mensagem Privada para","description":"O que deseja enviar ao jogador?","placeholder":"Alguma mensagem...","success":"Sua mensagem privada foi enviada!"},"warn_dialog":{"title":"Advertir","description":"Qual a razão para advertir este jogador?","placeholder":"Razão...","success":"O jogador foi advertido!"},"kick_dialog":{"title":"Kickar (expulsar)","description":"Qual a razão para expulsar este jogador?","placeholder":"Razão...","success":"O jogador foi expulso!"}},"interaction":{"title":"Interação","options":{"heal":"Curar","go_to":"Ir Até","bring":"Trazer","spectate":"Observar","toggle_freeze":"Congelar"},"notifications":{"heal_player":"Curando jogador","tp_player":"Teleportando ao jogador","bring_player":"Trazendo o jogador","spectate_failed":"Erro ao resolver o alvo! Cancelando modo observar.","spectate_yourself":"Você não pode observar você mesmo.","freeze_yourself":"Você não pode congelar você mesmo."}},"troll":{"title":"Troll","options":{"drunk":"Deixar Bêbado","fire":"Atear Fogo","wild_attack":"Ataque Selvagem"}}},"info":{"title":"Informações do Jogador","session_time":"Tempo de sessão","play_time":"Tempo no servidor","joined":"Primeira conexão","notes_placeholder":"Notas sobre este jogador"},"history":{"title":"Histórico Relacionado","action_types":{"warn":"ADVERTIU","warn_revoked":"REVOGOU a ADVERTÊNCIA do","ban":"BANIU","ban_revoked":"REVOGOU o BAN do","whitelist":"APROVOU WHITELIST do","whitelist_revoked":"REVOGOU o WHITELIST do"}},"ban":{"title":"Banir Jogador","reason_placeholder":"Razão","duration_placeholder":"Duração","hours":"horas","days":"dias","weeks":"semanas","months":"meses","permanent":"Permanente","custom":"Customizado","helper_text":"Por favor selecione a duração","submit":"Aplicar ban"}}}}\');\n\n//# sourceURL=webpack://txadmin/./locale/pt.json?')},"./locale/ro.json":
/*!************************!*\
  !*** ./locale/ro.json ***!
  \************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"$meta":{"label":"Romanian","humanizer_language":"ro"},"restarter":{"start_timeout":"Nu sa reusit sa inceapa la timp","crash_detected":"crash detectat","hang_detected":"hang detectat","partial_hang_warn":"Din cauza unei întreruperi parțiale, acest server va fi repornit în 1 minut. Vă rugăm să vă deconectați acum.","partial_hang_warn_discord":"Din cauza unei întreruperi parțiale, **%{servername}** se va restarta într-un minut.","schedule_reason":"restartare programata la %{time}","schedule_warn":"Acest server este programat sa se restarteze in %{smart_count} minut. Va rugam sa va deconctati. |||| Acest server este programat sa se restarteze in %{smart_count} minute.","schedule_warn_discord":"**%{servername}** este programat sa se restarteze in %{smart_count} minut. |||| **%{servername}** este programat sa se restarteze in %{smart_count} minute."},"ban_messages":{"kick_temporary":"(%{author}) Ai fost interzis de pe acest server pentru \\\\"%{reason}\\\\". Interzicerea ta va expira în: %{expiration}.","kick_permanent":"(%{author}) Ai fost banat permanent de pe acest server pentru \\\\"%{reason}\\\\".","reject_temporary":"Accesul tău este interzis.\\\\nInterzicerea expiră în: %{expiration}.\\\\nBan ID: %{id}.\\\\nMotiv: %{reason}.\\\\nBanat de: %{author}.","reject_permanent":"Accesul tău pe server este interzis permanent.\\\\nBan ID: %{id}.\\\\nMotiv: %{reason}.\\\\nBanat de: %{author}."},"server_actions":{"restarting":"Serverul se restarteaza: (%{reason}).","restarting_discord":"**%{servername}** se restarteaza (%{reason}).","stopping":"Serverul a fost oprit: (%{reason}).","stopping_discord":"**%{servername}** a fost oprit: (%{reason}).","spawning_discord":"**%{servername}** a fost pornit."},"discord":{"status_online":"**%{servername}** este momentan **Pornit**!","status_offline":"**%{servername}** este momentan **Oprit**!"},"nui_warning":{"title":"AVERTIZARE","warned_by":"Avertizat de:","instruction":"Țineți [SPACE] timp de 10 secunde pentru a respinge acest mesaj."},"nui_menu":{"misc":{"help_message":"Meniul txAdmin este activat, Scrie /tx pentru a îl deschide.\\\\nPoți reconfigura keybind-ul utilizând [Game Settings > Key Bindings > FiveM > Menu: Open Main Page].","menu_not_allowed":"Identificatorii dvs. nu se potrivesc cu niciun administrator înregistrat pe txAdmin.\\\\nDacă sunteți înregistrat pe txAdmin, accesați Admin Manager și asigurați-vă că identificatorii dvs. bine configurați.","no_perms":"Nu ai această permisie.","unknown_error":"A apărut o eroare necunoscută.","not_enabled":"Meniul txAdmin nu este activat! Puteți să o activați din pagina de setări txAdmin.","announcement_title":"Anunț de la %{author}:","dialog_empty_input":"Nu poți avea un input gol."},"frozen":{"froze_player":"Ai înghețat jucătorul!","unfroze_player":"Ai dezghețat jucătorul!","was_frozen":"Ai fost înghețat de un administrator!"},"common":{"cancel":"Anulează","submit":"Trimite","error":"S-a produs o eroare","copied":"Copiat în clipboard."},"page_main":{"tooltips":{"tooltip_1":"Folosește %{key} pentru a comuta paginile și săgețile pentru a naviga prin itemele meniului","tooltip_2":"Anumite elemente de meniu au subopțiuni care pot fi selectate cu ajutorul tastelor săgeată stânga și dreapta"},"player_mode":{"title":"Mod Jucător","noclip":{"title":"NoClip","label":"Zboară","success":"NoClip activat"},"godmode":{"title":"God","label":"Invincibilitate","success":"God Mode activat"},"normal":{"title":"Normal","label":"Mod Normal","success":"Ai revenit la modul de jucător."}},"teleport":{"title":"Teleport","generic_success":"Te-ai teleportat cu succes!","waypoint":{"title":"Waypoint","label":"Mergi la waypoint-ul setat","error":"Nu ai setat un waypoint."},"coords":{"title":"Coordonate","label":"Mergi la coordonatele specifice","dialog_title":"Teleport","dialog_desc":"Introdu coordonatele în formatul x, y, z pentru a te teleporta.","dialog_error":"Coordonate invalide. Trebuie să fie în formatul: 111, 222, 333"},"back":{"title":"Înapoi","label":"Mergi înapoi la ultima ta locație","error":"Nu ai o ultimă locație la care să te teleportezi!"},"copy":{"title":"Copiază coordonatele","label":"Copiază coordonatele în clipboard."}},"vehicle":{"title":"Vehicul","onesync_error":"Această opțiune necesită ca OneSync să fie activat pentru gestionarea entităților serverului","not_in_veh_error":"Nu te aflii într-un vehicul!","spawn":{"title":"Spawn","label":"Spawnează un vehicul după numele modelului","dialog_title":"Spawnează vehiculul","dialog_desc":"Introduceți numele modelului de vehicul pe care doriți să îl spawnați.","dialog_success":"Vehicul spawnat!","dialog_error":"Vehiculul cu modelul \\\'%{modelName} nu există!","dialog_info":"Încercarea de a spawna %{modelName}."},"fix":{"title":"Repară","label":"Repară vehicul curent","success":"Vehiculul a fost reparat!"},"delete":{"title":"Șterge","label":"Șterge vehiculul curent","success":"Vechiulul a fost șters!"}},"heal":{"title":"Heal","myself":{"title":"Ție însuti","label":"Îți restabilește viața","success_0":"Totul s-a vindecat!","success_1":"Ar trebui să te simți bine acum!","success_2":"Restabilit în totalitate!","success_3":"Loviturile au fost vindecate!"},"everyone":{"title":"Toată Lumea","label":"Va vindeca și da revive la toți jucătorii","success":"Ai vindecat și dat revive la toți jucătorii."}},"announcement":{"title":"Trimite un anunț","label":"Trimiteți un anunț tuturor jucătorilor online.","dialog_desc":"Trimiteți un anunț tuturor jucătorilor online.","dialog_placeholder":"Anunțul dumneavoastră...","dialog_success":"Transmite anunțul."},"clear_area":{"title":"Resetarea zonei","label":"Resetarea unei zone specifice","dialog_desc":"Vă rugăm să introduceți raza în care doriți să resetați entitățile (0-300). Acest lucru nu va șterge entitățile generate de server-side.","dialog_success":"Se curăță zona în raza de %{radius}m","dialog_error":"Raza nu este validă. Încercați din nou."},"player_ids":{"title":"Comută ID-urile jucătorilor","label":"Comutarea afișării ID-urilor jucătorilor deasupra capului tuturor jucătorilor din apropiere","alert_show":"Afișarea NetID-urilor jucătorilor din apropiere.","alert_hide":"Ascunderea NetID-urilor jucătorilor din apropiere."}},"page_players":{"misc":{"online_players":"Jucători online","players":"Jucători","search":"Caută","zero_players":"Nu ai fost jucători găsiți"},"sort":{"label":"Sortează","distance":"Distantă","id":"ID","joined_first":"De la intrare","joined_last":"De la ieșire","closest":"Apropiere","farthest":"Depărtare"},"card":{"health":"%{percentHealth}% viață"}},"player_modal":{"misc":{"error":"S-a produs o eroare la preluarea detaliilor acestui utilizator. Eroarea este afișată mai jos:","target_not_found":"Nu am reușit să găsesc un jucător online cu ID-ul sau un nume de utilizator de %{target}"},"tabs":{"actions":"Acțiuni","info":"Informații","ids":"ID-uri","history":"Istoric","ban":"Ban"},"actions":{"title":"Acțiuni jucător","command_sent":"Comandă trimisă!","moderation":{"title":"Moderare","options":{"dm":"Mesaj Privat","warn":"Avertizează","kick":"Kick","set_admin":"Oferă Admin"},"dm_dialog":{"title":"Mesaj Privat","description":"Care este motivul pentru a trimite mesaje directe acestui jucător?","placeholder":"Motiv...","success":"Mesajul tău privat a fost trimis!"},"warn_dialog":{"title":"Avertizează","description":"Care este motivul pentru care vrei să avertizezi jucătorul?","placeholder":"Motiv...","success":"Jucătorul a fost avertizat!"},"kick_dialog":{"title":"Kick","description":"Care este motivul pentru care îi dai kick acestui jucător?","placeholder":"Motiv...","success":"Jucătorul a fost dat afară!"}},"interaction":{"title":"Interacțiuni","options":{"heal":"Oferă viață","go_to":"Mergi la","bring":"Adu la","spectate":"Spectate","toggle_freeze":"Îngheață jucătorul"},"notifications":{"heal_player":"Vindecă jucătorul","tp_player":"Teleportarea către jucător","bring_player":"Teleportarea jucătorului","spectate_failed":"Nu a reușit comunicarea cu jucătorul! Ieșire din spectatori.","spectate_yourself":"Nu poți fi spectator tu însuți.","freeze_yourself":"Nu te poți îngheța."}},"troll":{"title":"Troll","options":{"drunk":"Îmbată","fire":"Arde","wild_attack":"Atacu cu animale"}}},"info":{"title":"Informații jucător","session_time":"Timp sesiune","play_time":"Timp jucat","joined":"Alăturat","notes_placeholder":"Notițe despre acest jucător"},"history":{"title":"Istoric","action_types":{"warn":"AVERTIZAT","warn_revoked":"A REVOCAT WARN-ul pentru","ban":"INTERZIS","ban_revoked":"A REVOCAT BAN-ul pentru","whitelist":"WHITELIST","whitelist_revoked":"A REVOCAT WHITELIST-ul pentru"}},"ban":{"title":"Banează jucător","reason_placeholder":"Motiv","duration_placeholder":"Durată","hours":"ore","days":"zile","weeks":"săptămâni","months":"luni","permanent":"Permanent","custom":"Personalizat","helper_text":"Vă rugăm să selectați o durată","submit":"Aplică ban-ul"}}}}\');\n\n//# sourceURL=webpack://txadmin/./locale/ro.json?')},"./locale/ru.json":
/*!************************!*\
  !*** ./locale/ru.json ***!
  \************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"$meta":{"label":"Russian","humanizer_language":"ru"},"restarter":{"start_timeout":"не удалось запустить сервер вовремя","crash_detected":"обнаружен сбой","hang_detected":"обнаружено зависание","partial_hang_warn":"Из-за частичного зависания этот сервер перезагрузится через 1 минуту. Пожалуйста, отключитесь сейчас же.","partial_hang_warn_discord":"Из-за частичного зависания, **%{servername}** перезагрузится через 1 минуту.","schedule_reason":"перезагрузка %{time}","schedule_warn":"Сервер будет перезагружен через %{smart_count} минуту. Пожалуйста, отключитесь от сервера. |||| Сервер будет перезагружен через %{smart_count} минут.","schedule_warn_discord":"**%{servername}** будет перезагружен через %{smart_count} минуту. |||| **%{servername}** будет перезагружен через %{smart_count} минут."},"ban_messages":{"kick_temporary":"(%{author}) Вы были заблокированы на этом сервере за \\\\"%{reason}\\\\". Срок вашей блокировки истекает в: %{expiration}.","kick_permanent":"(%{author}) Вы были навсегда заблокированы на этом сервере за \\\\"%{reason}\\\\".","reject_temporary":"Вы были заблокированы на этом сервере.\\\\nСрок вашей блокировки истечет в: %{expiration}.\\\\nИдентификатор блокировки: %{id}.\\\\nПричина блокировки: %{reason}.\\\\nЗаблокирован: %{author}.","reject_permanent":"Вы были навсегда заблокированы на этом сервере.\\\\nИдентификатор блокировки: %{id}.\\\\nПричина блокировки: %{reason}.\\\\nЗаблокирован: %{author}."},"server_actions":{"restarting":"Сервер перезагружается (%{reason}).","restarting_discord":"**%{servername}** перезагружается (%{reason}).","stopping":"Сервер выключен (%{reason}).","stopping_discord":"**%{servername}** выключен (%{reason}).","spawning_discord":"**%{servername}** запущен."},"discord":{"status_online":"**%{servername}** сейчас **Онлайн**!","status_offline":"**%{servername}** сейчас **Оффлайн**!"},"nui_warning":{"title":"ПРЕДУПРЕЖДЕНИЕ","warned_by":"Предупреждение выдал:","instruction":"Удерживайте [ПРОБЕЛ] 10 секунд, чтобы закрыть это сообщение."},"nui_menu":{"misc":{"help_message":"txAdmin Меню включено, введите /tx чтобы открыть его.\\\\nВы также можете настроить привязку клавиш используя [Настройки игры > Привязки клавиш > FiveM > Меню: Открыть Главную Страницу].","menu_not_allowed":"Ваши идентификаторы не совпадают ни с одним администратором, зарегистрированным в txAdmin.\\\\nЕсли вы зарегистрированы в txAdmin, перейдите в  Admin Manager убедитесь, что ваши идентификаторы сохранены.","no_perms":"У вас нет такого разрешения.","unknown_error":"Произошла неизвестная ошибка.","not_enabled":"txAdmin Меню не включено! Вы можете включить его на странице настроек txAdmin.","announcement_title":"Объявление сервера от %{author}:","dialog_empty_input":"У вас не может быть пустого ввода."},"frozen":{"froze_player":"Вы заморозили игрока!","unfroze_player":"Вы разморозили игрока!","was_frozen":"Вы были заморожены администратором сервера!"},"common":{"cancel":"Отменить","submit":"Применить","error":"Произошла ошибка","copied":"Скопировано в буфер обмена."},"page_main":{"tooltips":{"tooltip_1":"Воспользуйся %{key} для переключения страниц и клавиш со стрелками для навигации по пунктам меню","tooltip_2":"Некоторые пункты меню имеют дополнительные опции, которые можно выбрать с помощью клавиш со стрелками влево и вправо"},"player_mode":{"title":"Режим игрока","noclip":{"title":"Noclip","label":"Летать вокруг","success":"Noclip включен"},"godmode":{"title":"Бог","label":"Непобедимый","success":"Режим Бога включен"},"normal":{"title":"Обычный","label":"Режим по умолчанию","success":"Возвращен в режим обычного игрока."}},"teleport":{"title":"Телепорт","generic_success":"Отправил тебя в червоточину!","waypoint":{"title":"Точка маршрута","label":"Телепортироваться к точка маршрута","error":"У вас нет установленной точки маршрута."},"coords":{"title":"Координаты","label":"Перейти к указанным координатам","dialog_title":"Телепортироваться","dialog_desc":"Предоставьте координаты в X, Y, Z формат для прохождения через червоточину.","dialog_error":"Неверные координаты. Должно быть в формате: 111, 222, 33"},"back":{"title":"Назад","label":"Вернитесь к последнему местоположению","error":"У вас нет последнего места, куда можно вернуться!"},"copy":{"title":"Копировать Координаты","label":"Копирование координат в буфер обмена."}},"vehicle":{"title":"Транспорт","onesync_error":"Этот вариант требует, чтобы OneSync быть включенным для обработки объектов сервера","not_in_veh_error":"В данный момент вы не находитесь в транспортном средстве!","spawn":{"title":"Создание","label":"Создание транспорта по названию модели","dialog_title":"Транспорт для создания","dialog_desc":"Введите название модели транспорта, который вы хотите создать.","dialog_success":"Транспорт создан!","dialog_error":"Название модели транспорта \\\'%{modelName}\\\' не существует!","dialog_info":"Пытаемся создать %{modelName}."},"fix":{"title":"Починка","label":"Починить текущий транспорт","success":"Транспорт починен!"},"delete":{"title":"Удалить","label":"Удалить текущий транспорт","success":"Транспорт удален!"}},"heal":{"title":"Лечить","myself":{"title":"Себя","label":"Восстановить ваше здоровье","success_0":"Все зажило!","success_1":"Сейчас вы должны почувствовать себя хорошо!","success_2":"Восстановлен в полном объеме!","success_3":"Ой, починили!"},"everyone":{"title":"Всех","label":"Исцелит и оживит всех игроков","success":"Исцелил и оживил всех игроков."}},"announcement":{"title":"Отправить Объявление","label":"Отправить объявление всем игрокам.","dialog_desc":"Enter the message you want to broadcast to all players.","dialog_placeholder":"Ваше объявление...","dialog_success":"Отправка объявления."},"clear_area":{"title":"Сбросить Мировую область","label":"Reset a specified world area to its default state","dialog_desc":"Пожалуйста, введите радиус, в котором вы хотите сбросить объекты в (0-300). Это не приведет к очистке объектов, созданных на стороне сервера","dialog_success":"Площадь расчистки с радиусом %{radius}m","dialog_error":"Неверный ввод радиуса. Пробовать снова."},"player_ids":{"title":"Переключать идентификаторы игроков","label":"Toggle showing player IDs (and other info) above the head of all nearby players","alert_show":"Отображаются сетевые идентификаторы ближайших игроков.","alert_hide":"Скрытие идентификаторов ближайших игроков в сети."}},"page_players":{"misc":{"online_players":"Онлайн Игроки","players":"Игроки","search":"Поиск","zero_players":"Игроки не найдены"},"sort":{"label":"Сортировать по","distance":"Расстояние","id":"ID","joined_first":"Присоединился Первым","joined_last":"Присоединился Последним","closest":"Самый Ближний","farthest":"Самый Дальний"},"card":{"health":"%{percentHealth}% здоровье"}},"player_modal":{"misc":{"error":"Произошла ошибка при получении сведений об этом пользователе. Ошибка показана ниже:","target_not_found":"Не удалось найти онлайн игрока с идентификатором или именем пользователя %{target}"},"tabs":{"actions":"Действия","info":"Инфо","ids":"Идентификаторы","history":"История","ban":"Запрет"},"actions":{"title":"Действия игрока","command_sent":"Отправленная команда!","moderation":{"title":"Модерирование","options":{"dm":"Сообщение","warn":"Предупреждать","kick":"Отключить","set_admin":"Назначить Администратором"},"dm_dialog":{"title":"Прямое Сообщение","description":"В чем причина прямого сообщения игроку?","placeholder":"Причина...","success":"Ваше сообщение было отправлено!"},"warn_dialog":{"title":"Предупреждение","description":"В чем причина предупреждения этому игроку?","placeholder":"Причина...","success":"Игрок был предупрежден!"},"kick_dialog":{"title":"Отключить","description":"В чем причина того, чтобы отключить этого игрока?","placeholder":"Причина...","success":"Игрока был отключен!"}},"interaction":{"title":"Взаимодействие","options":{"heal":"Лечить","go_to":"Телепортироваться","bring":"Телепортировать","spectate":"Наблюдать","toggle_freeze":"Переключить Замораживание"},"notifications":{"heal_player":"Исцеляющая молитва","tp_player":"Телепортируемся к игроку","bring_player":"Телепортируем игрока","spectate_failed":"Не удалось найти цель! Выходим из наблюдения.","spectate_yourself":"Вы не можете наблюдать за самим собой.","freeze_yourself":"Вы не можете заморозить себя."}},"troll":{"title":"Пакости","options":{"drunk":"Напоить","fire":"Поджечь","wild_attack":"Дикая атака"}}},"info":{"title":"Информация об игроке","session_time":"Время сеанса","play_time":"Время игры","joined":"Присоединился","notes_placeholder":"Заметки об этом игроке"},"history":{"title":"Связанная история","action_types":{"warn":"предупрежденный","warn_revoked":"ОТМЕНИЛ ПРЕДУПРЕЖДЕНИЕ за","ban":"запрещенный","ban_revoked":"ОТМЕНИЛ ЗАПРЕТ на","whitelist":"БЕЛЫЙ СПИСОК","whitelist_revoked":"ОТОЗВАЛ БЕЛЫЙ СПИСОК для"}},"ban":{"title":"Забанить игрока","reason_placeholder":"Причина","duration_placeholder":"Продолжительность","hours":"часы","days":"дни","weeks":"недели","months":"месяцы","permanent":"Постоянный","custom":"Обычай","helper_text":"Пожалуйста, выберите продолжительность","submit":"Apply ban"}}}}\');\n\n//# sourceURL=webpack://txadmin/./locale/ru.json?')},"./locale/sl.json":
/*!************************!*\
  !*** ./locale/sl.json ***!
  \************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"$meta":{"label":"Slovenian","humanizer_language":"sl"},"restarter":{"start_timeout":"strežnika ni uspelo zagnati v določenem času","crash_detected":"zaznan crash strežnika","hang_detected":"zaznan crash strežnika","partial_hang_warn":"Zaradi delnega crasha strežnika, se bo avtomatsko ponovno zagnal čez 1 minuto. Prosimo, zapustite strežnik.","partial_hang_warn_discord":"Zaradi delnega crasha strežnika, se bo **%{servername}** ponovno zagnal čez 1 minuto.","schedule_reason":"načrtovan restart ob %{time}","schedule_warn":"Ta strežnik se bo ponovno zagnal čez %{smart_count} minuto. Prosimo, zapustite strežnik. |||| Ta strežnik se bo ponovno zagnal čez %{smart_count} minut/i/e.","schedule_warn_discord":"**%{servername}** se bo ponovno zagnal čez %{smart_count} minuto. |||| **%{servername}** se bo ponovno zagnal čez %{smart_count} minut/i/e."},"ban_messages":{"kick_temporary":"(%{author}) Bil si odstranjen iz strežnika zaradi \\\\"%{reason}\\\\". Tvoj BAN se izteče čez: %{expiration}.","kick_permanent":"(%{author}) Bil si odstranjen iz strežnika za vedno  \\\\"%{reason}\\\\".","reject_temporary":"Bil si odstranjen iz strežnika.\\\\nIzteče se: %{expiration}.\\\\nBan ID: %{id}.\\\\nRazlog odstranitve: %{reason}.\\\\nOdstranjen s strani: %{author}.","reject_permanent":"Bil si odstranjen iz strežnika za vedno.\\\\nBan ID: %{id}.\\\\nRazlog odstranitve: %{reason}.\\\\nOdstranjen s strani: %{author}."},"server_actions":{"restarting":"Ponovni zagon strežnika (%{reason}).","restarting_discord":"**%{servername}** se ponovno zaganja (%{reason}).","stopping":"Strežnik je bil zaustavljen (%{reason}).","stopping_discord":"**%{servername}** se zaustavlja (%{reason}).","spawning_discord":"**%{servername}** se zaganja."},"discord":{"status_online":"**%{servername}** je trenutno **Dostopen**!","status_offline":"**%{servername}** je trenutno **Nedostopen**!"},"nui_warning":{"title":"OPOZORILO","warned_by":"Opozorjen s strani:","instruction":"Drži [SPACE] za 10 sekund, da to sporočilo izgine."},"nui_menu":{"misc":{"help_message":"txAdmin Meni omogočen, napiši /tx da ga odpreš.\\\\nTipko za txAdmin Meni lahko tudi spremeniš [Game Settings > Key Bindings > FiveM > Menu: Open Main Page].","menu_not_allowed":"Tvoji podatki se ne ujemajo z nobenim obstoječim txAdmin profilom.\\\\nČe si registriran na txAdminu, pojdi v upravitelja administratorjev in se prepričaj, da so tvoji podatki pravilni shranjeni.","no_perms":"Nimaš tega dovoljenja.","unknown_error":"Prišlo je do neznane težave.","not_enabled":"txAdmin Meni ni omogočen! Lahko ga omogočiš v txAdmin nastavitvah.","announcement_title":"Obvestilo od %{author}:","dialog_empty_input":"Ne moreš imeti praznega vnosa."},"frozen":{"froze_player":"Zamrznil si igralca!","unfroze_player":"Odmrznil si igralca!","was_frozen":"Bil si zamrznjen s strani administratorja!"},"common":{"cancel":"Prekliči","submit":"Potrdi","error":"Pojavila se je napaka","copied":"Kopirano v odložišče."},"page_main":{"tooltips":{"tooltip_1":"Uporabi %{key} da izbiraš med stranmi in puščične tipke za krmarjenje po elementih menija","tooltip_2":"Nekateri elementi menija imajo podmožnosti, ki jih je mogoče izbrati z levo in desno puščično tipko "},"player_mode":{"title":"Tvoje možnosti","noclip":{"title":"NoClip","label":"Uporabi NoClip, ko se želiš premikati skozi stene in druge predmete","success":"NoClip omogočen"},"godmode":{"title":"God","label":"Uporabi God Mode, da postaneš nesmrten","success":"God Mode omogočen"},"normal":{"title":"Normal","label":"Vrne se nazaj v privzeti/običajni način igralca","success":"Vrnil si se na privzeti način."}},"teleport":{"title":"Teleportacija","generic_success":"Uspešna teleportacija!","waypoint":{"title":"Točka","label":"Teleportiraj se do točke po meri","error":"Nimaš določene točke teleportacije."},"coords":{"title":"Koordinati","label":"Teleportiraj se do danih koordinatov","dialog_title":"Teleportacija","dialog_desc":"Zapiši koordinate v x, y, z formatu, da se teleportiraš do tiste lokacije.","dialog_error":"Neveljavni koordinati. Mora biti v formatu kot je: 111, 222, 33"},"back":{"title":"Nazaj","label":"Vrneš se na lokacijo pred zadnjo teleportacijo ","error":"Nimaš zadnje lokacije, kamor bi se lahko vrnil!"},"copy":{"title":"Kopiraj koordinate","label":"Kopiraj trenutne koordinate v odložišče"}},"vehicle":{"title":"Vozila","onesync_error":"Ta možnost zahteva, da je OneSync vklopljen za ravnanje s »entity handling«","not_in_veh_error":"Trenutno nisi v vozilu!","spawn":{"title":"Spawn","label":"Spawnaj vozilo z imenom modela","dialog_title":"Spawnaj vozilo","dialog_desc":"Vstavi ime modela vozila, ki bi ga rad spawnal.","dialog_success":"Vozilo spawnano!","dialog_error":"Ime modela vozila \\\'%{modelName}\\\' ne obstaja!","dialog_info":"Spawnanje vozila %{modelName}."},"fix":{"title":"Popravi","label":"Popravi vozilo","success":"Vozilo popravljeno!"},"delete":{"title":"Izbriši","label":"Izbriše vozilo, v katerem se trenutno nahajaš","success":"Vozilo izbrisano!"}},"heal":{"title":"Ozdravi","myself":{"title":"Sebe","label":"Te bo ozdravilo in dodalo max hrano/pijačo","success_0":"Ozdravljen!","success_1":"Zdaj bi se moral počutiti dobro!","success_2":"Izgledaš kot prerojen!","success_3":"Zdaj si zdrav kot riba!"},"everyone":{"title":"Vse","label":"Ozdravi in oživi vse igralce","success":"Vsi igralci so bili ozdravljeni in oživljeni."}},"announcement":{"title":"Pošlji obvestilo","label":"Pošlji obvestilo vsem igralcem na strežniku.","dialog_desc":"Napiši sporočilo, za katerega želiš, da ga vidijo vsi igralci na strežniku.","dialog_placeholder":"Tvoje obvestilo...","dialog_success":"Pošiljam obvestilo."},"clear_area":{"title":"Resetiraj območje mape","label":"Ponastavi določeno območje mape na privzeto stanje","dialog_desc":"Vnesi polmer v katerem želiš ponastaviti območje (0-300). To NE BO izbrisalo stvari spawnanih s strani strežnika.","dialog_success":"Resetirano območje v polmeru %{radius}m","dialog_error":"Neveljavni polmer. Poskusi ponovno."},"player_ids":{"title":"Prižgi IDje igralcev","label":"Prižgani IDji igralcev (in ostale informacije) nad glavo vseh bližnjih igralcev","alert_show":"IDji bližnjih igralcev vklopljeni.","alert_hide":"IDji bližnjih igralcev izklopljeni."}},"page_players":{"misc":{"online_players":"Trenutni igralci","players":"Igralci","search":"Išči","zero_players":"Najden ni bil noben igralec"},"sort":{"label":"Razvrsti po","distance":"Dolžina","id":"ID","joined_first":"Najmanjši ID prvo","joined_last":"Največji ID prvo","closest":"Najbližji igralci","farthest":"Igralci najdlje stran"},"card":{"health":"%{percentHealth}% zdravje"}},"player_modal":{"misc":{"error":"Pri pridobivanju podatkov o tem uporabniku je prišlo do napake. Napaka je opisana spodaj:","target_not_found":"Ni bilo najdenega igralca z danim IDjem ali steam imenom: %{target}"},"tabs":{"actions":"Dejanja","info":"Informacije","ids":"IDji","history":"Zgodovina","ban":"Ban"},"actions":{"title":"Dejanja igralca","command_sent":"Komanda poslana!","moderation":{"title":"Moderiranje","options":{"dm":"DM","warn":"Opozorilo","kick":"Kick","set_admin":"Daj admina"},"dm_dialog":{"title":"Neposredno sporočilo","description":"Kaj je razlog za neposredno sporočanje temu igralcu?","placeholder":"Razlog...","success":"Tvoj DM je bil poslan!"},"warn_dialog":{"title":"Opozorilo","description":"Kaj je razlog za neposredno opozorilo tega igralca?","placeholder":"Razlog...","success":"Igralec je bil opozorjen!"},"kick_dialog":{"title":"Kick","description":"Kaj je razlog za neposreden kick tega igralca?","placeholder":"Razlog...","success":"Igralec je bil Kick-an!"}},"interaction":{"title":"Interakcija","options":{"heal":"Heal","go_to":"TP nanj","bring":"TP sem","spectate":"Spectate","toggle_freeze":"Zamrzni"},"notifications":{"heal_player":"Ozdravljam igralca","tp_player":"Teleportiram do igralca","bring_player":"TPjam igralca","spectate_failed":"Igralca več ni bilo mogoče najti! Izstopam iz Spectate načina.","spectate_yourself":"Ne moreš spectate-at sam sebe.","freeze_yourself":"Sam sebe ne moreš zamrzniti."}},"troll":{"title":"Troll","options":{"drunk":"Pijan","fire":"Ogenj","wild_attack":"Divji napad"}}},"info":{"title":"Informacije o igralcu","session_time":"Čas seje","play_time":"Čas igranja","joined":"Vstopil","notes_placeholder":"Opombe o tem igralcu"},"history":{"title":"Povezana zgodovina","action_types":{"warn":"OPOZORJEN","warn_revoked":"PREKLICANO opozorilo za","ban":"BANNAN","ban_revoked":"PREKLICAN ban za","whitelist":"WHITELIST","whitelist_revoked":"PREKLICAN whitelist za"}},"ban":{"title":"Odstrani igralca","reason_placeholder":"Razlog","duration_placeholder":"Čas bana","hours":"ur","days":"dni","weeks":"tednov","months":"mesecev","permanent":"Za vedno","custom":"Po meri","helper_text":"Prosim, izberite trajanje","submit":"Potrdi odstranitev"}}}}\');\n\n//# sourceURL=webpack://txadmin/./locale/sl.json?')},"./locale/sv.json":
/*!************************!*\
  !*** ./locale/sv.json ***!
  \************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"$meta":{"label":"Swedish","humanizer_language":"sv"},"restarter":{"start_timeout":"Servern kunde inte starta i tid.","crash_detected":"Krasch upptäckt","hang_detected":"Fördröjning upptäckt","partial_hang_warn":"På grund av fördröjningar startar servern om. Vänligen koppla från nu.","partial_hang_warn_discord":"På grund av fördröjningar startar **%{servername}** om inom en minut.","schedule_reason":"Schemalagd omstart om %{time}","schedule_warn":"Den här servern kommer startas om inom %{smart_count} minuter. Vänligen lämna. |||| Den här servern kommer startas om inom %{smart_count} minuter.","schedule_warn_discord":"**%{servername}** är schemalagd att startas om inom %{smart_count} minuter. |||| **%{servername}** är schemalagd att startas om inom %{smart_count} minuter."},"ban_messages":{"kick_temporary":"(%{author}) Du har blivit bannad från denna server på grund av \\\\"%{reason}\\\\". Din bannlysning går ut : %{expiration}.","kick_permanent":"(%{author}) Du har blivit permanent bannlyst från denna server på grund av \\\\"%{reason}\\\\".","reject_temporary":"Du har blivit bannad från denna server.\\\\nDin banlysning kommer gå ut: %{expiration}.\\\\nBanlysnings ID: %{id}.\\\\nBanlysnings anleding: %{reason}.\\\\nBanlyst av: %{author}.","reject_permanent":"Du har blivit permanent bannlyst från denna server på grund av.\\\\nBanlysnings ID: %{id}.\\\\nBanlysning anledning: %{reason}.\\\\nBanlyst av: %{author}."},"server_actions":{"restarting":"Servern omstart (%{reason}).","restarting_discord":"**%{servername}** startas om (%{reason}).","stopping":"Servern stängs av (%{reason}).","stopping_discord":"**%{servername}** håller på att stängas av (%{reason}).","spawning_discord":"**%{servername}** håller på att startas."},"discord":{"status_online":"**%{servername}** är just nu **Igång**!","status_offline":"**%{servername}** är just nu **Avstängd**!"},"nui_warning":{"title":"VARNING","warned_by":"Varnad av:","instruction":"Håll in [SPACE] i 10 sekunder för att dölja detta meddelande."},"nui_menu":{"misc":{"help_message":"txAdmin Menyn är aktiverad, skriv /tx i chatten för att öppna den.\\\\nDu kan ändra knapp på [Game Settings > Key Bindings > FiveM > Menu: Open Main Page].","menu_not_allowed":"Dina id stämmer inte överns med dom som är registerade i txAdmin regisrtert.\\\\nOm du är registerad på Txadmin,gå till administratör hanteraren och dubbelkolla att id:en är korrekta.","no_perms":"Du har inte behörighet för detta.","unknown_error":"Ett okänt problem har uppstått","not_enabled":"Txadmin menyn är inte aktiverad! Du kan aktivera den på Txadmin panelen.","announcement_title":"Server meddelande skickat av %{author}:","dialog_empty_input":"Du kan inte ha ett tomt fält."},"frozen":{"froze_player":"Du har frusit spelaren","unfroze_player":"Du har avfrusit spelaren","was_frozen":"Du har blivit frusen av en Server administratör"},"common":{"cancel":"Avbryt","submit":"Överlämmna","error":"Ett fel har uppstått","copied":"Kopierat till urklipp."},"page_main":{"tooltips":{"tooltip_1":"Använd %{key} för att ändra sida & piltangeterna för att navigera mellan menyernas alternativ","tooltip_2":"Visa menyer har under kationriger vilket kan användas med hjälp av piltangernterna"},"player_mode":{"title":"Spelar läge","noclip":{"title":"Noclip","label":"Flyga runt","success":"Ingen Noclip"},"godmode":{"title":"Gud","label":"Oförstörbar","success":"Gudläge aktiverat"},"normal":{"title":"Vanlig","label":"Vanlig spelare","success":"Återvände till vanlig spelare."}},"teleport":{"title":"Teleportera","generic_success":"Skickat dig genom en tunnel!","waypoint":{"title":"Position","label":"Gå till positionen satt","error":"Du har ingen position utmärkt."},"coords":{"title":"Kordinater","label":"Gå till spesifika kordinater","dialog_title":"Teleportera","dialog_desc":"Skriv kordinaterna i x, y, z format för att kunna teleportera.","dialog_error":"Ogiltiga kordinater. Det måste vara i formatet: 111, 222, 33"},"back":{"title":"Tillbaka","label":"Gå tillbaka till senaste positionen","error":"Du har ingen senaste position"},"copy":{"title":"Kopiera kordinaterna","label":"Kopiera kordinaterna till urklipp."}},"vehicle":{"title":"Fordon","onesync_error":"Detta alternativ kräver OneSync för fordon hantering","not_in_veh_error":"Du är för tillfället inte i fordonet!","spawn":{"title":"Ta fram","label":"Ta fram fordon med moddel namn","dialog_title":"Ta fram fordon","dialog_desc":"Skriv in moddel namnet på fordonet du vill ta fram.","dialog_success":"Fordon spawnat!","dialog_error":"Fordonet \\\'%{modelName}\\\' finns inte!","dialog_info":"Försöker spawna %{modelName}."},"fix":{"title":"Laga","label":"Laga nuvarande fordon","success":"Fordon lagat!"},"delete":{"title":"Ta bort","label":"Ta bort nuvarande fordon","success":"Fordon bortaget!"}},"heal":{"title":"Läka","myself":{"title":"Dig själv","label":"Återställer din hälsa","success_0":"Alla är helade!","success_1":"Du bör må bra nu!","success_2":"Återställd till max!","success_3":"Smärtan fixad!"},"everyone":{"title":"Alla","label":"Detta kommer hela och återuppliva alla spelare","success":"Helad och återupplivade alla spelare."}},"announcement":{"title":"Skicka ut medelande","label":"Skicka ett meddelande till alla spelare inne på servern","dialog_desc":"Skriv in meddelandet du vill skicka till alla spelare.","dialog_placeholder":"Ditt Medelande... ","dialog_success":"Skickar ut ditt medelande."},"clear_area":{"title":"Återställ världs arean","label":"Återställ ett angivet världsområde till dess standardläge","dialog_desc":"Vänligen skriv in radien du vill rensa objekt i (0-300). Detta kommer inte rensa saker servern har spawnat","dialog_success":"Rensar area med %{radius}m","dialog_error":"Ogiltig radie, försök igen."},"player_ids":{"title":"Sätt på spelares id","label":"Toggle showing player IDs (and other info) above the head of all nearby players","alert_show":"Visa spelares id i närheten.","alert_hide":"Dölj spelares id i närheten."}},"page_players":{"misc":{"online_players":"Spelare inne","players":"Spelare","search":"Sök","zero_players":"Inga spelare funna"},"sort":{"label":"Sortera efter","distance":"Avstånd","id":"ID","joined_first":"Gick med först","joined_last":"Gick med senast","closest":"Närmast","farthest":"Längst"},"card":{"health":"%{percentHealth}% Hälsa"}},"player_modal":{"misc":{"error":"Kunde inte ta emot spelarens information. Felkod syns nedan:","target_not_found":"Kunde inte hitta en spelare med det id:et %{target}"},"tabs":{"actions":"Alternativ","info":"Info","ids":"IDs","history":"Historia","ban":"Bannlys"},"actions":{"title":"Spelare alternativ","command_sent":"Kommando skickat ","moderation":{"title":"Moderation","options":{"dm":"Direktmeddelande","warn":"Varna","kick":"Sparka","set_admin":"Ge administratör "},"dm_dialog":{"title":"Direktmeddelande","description":"Vad vill du skriva i ditt direktmeddelande till spelaren ","placeholder":"Anledning","success":"Ditt direktmeddelande har skickats"},"warn_dialog":{"title":"Varna","description":"Vad är anledningen till att du varnar spelaren?","placeholder":"Anlednig","success":"Spelaren är varnad!"},"kick_dialog":{"title":"Sparka","description":"Varför vill du sparka denna spelare","placeholder":"Anledning","success":"Spelaren är sparkad!"}},"interaction":{"title":"Samspelsfunktioner","options":{"heal":"Läk","go_to":"Gå till","bring":"Ta spelare till mig","spectate":"Åskåda","toggle_freeze":"Växla frysläge"},"notifications":{"heal_player":"Läk spelare","tp_player":"Teleporterna till spelare","bring_player":"Ta spelare till dig","spectate_failed":"Misslyckades att hitta spelaren, avslutar åskådarläget.","spectate_yourself":"Du kan inte åskåda dig själv.","freeze_yourself":"Du kan inte frysa dig själv."}},"troll":{"title":"Trolla","options":{"drunk":"Gör full","fire":"Tänd Eld","wild_attack":"Vild Djursattack"}}},"info":{"title":"Spelar information","session_time":"Session tid","play_time":"Speltid","joined":"Anslöt","notes_placeholder":"Anteckningar om denna spelare"},"history":{"title":"Relaterad historia","action_types":{"warn":"VARNING","warn_revoked":"ÅTERKALLA VARNINGEN för","ban":"BANNAD","ban_revoked":"ÅTERKALLA BANN för","whitelist":"VITLISTA","whitelist_revoked":"ÅTERKALLA VITLISTNING för"}},"ban":{"title":"Banna spelare","reason_placeholder":"Anledning","duration_placeholder":"Varaktighet","hours":"Timmar","days":"Dagar","weeks":"Veckor","months":"Månader","permanent":"Permanent","custom":"Anpassad","helper_text":"Vänligen välj en varaktighet","submit":"Tillämpa bann"}}}}\');\n\n//# sourceURL=webpack://txadmin/./locale/sv.json?')},"./locale/th.json":
/*!************************!*\
  !*** ./locale/th.json ***!
  \************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"$meta":{"label":"Thai","humanizer_language":"th"},"restarter":{"start_timeout":"ไม่สามารถเริ่มได้ทันเวลาที่กำหนดไว้","crash_detected":"ตรวจพบข้อผิดพลาด","hang_detected":"ตรวจพบอาการแฮงค์","partial_hang_warn":"เนื่องจากพบอาการแฮงค์ในบางส่วน เซิร์ฟเวอร์นี้จะรีสตาร์ทใน 1 นาที กรุณายกเลิกการเชื่อมต่อในขณะนี้","partial_hang_warn_discord":"เนื่องจากพบอาการแฮงค์ในบางส่วน, **%{servername}** จะรีสตาร์ทใน 1 นาที","schedule_reason":"รีสตาร์ทตามกำหนดเวลา %{time}","schedule_warn":"เซิร์ฟเวอร์ถูกกำหนดเวลาให้รีสตาร์ทใน %{smart_count} นาที โปรดยกเลิกการเชื่อมต่อทันที |||| เซิร์ฟเวอร์ถูกกำหนดเวลาให้รีสตาร์ทใน %{smart_count} นาที.","schedule_warn_discord":"**%{servername}** มีกำหนดการจะรีสตาร์ทใน %{smart_count} นาที |||| **%{servername}** มีกำหนดการจะรีสตาร์ทใน %{smart_count} นาที"},"ban_messages":{"kick_temporary":"(%{author}) คุณถูกแบนจากเซิร์ฟเวอร์นี้เพราะ \\\\"%{reason}\\\\" การแบนของคุณจะหมดอายุใน: %{expiration}.","kick_permanent":"(%{author}) คุณถูกแบนจากเซิร์ฟเวอร์นี้อย่างถาวรเพราะ \\\\"%{reason}\\\\"","reject_temporary":"คุณถูกแบนจากเซิร์ฟเวอร์นี้\\\\nการแบนของคุณจะหมดอายุใน: %{expiration}.\\\\nแบนไอดี: %{id}\\\\nเหตุผลในการแบน: %{reason}\\\\nแบนโดย: %{author}","reject_permanent":"คุณถูกแบนจากเซิร์ฟเวอร์นี้อย่างถาวร\\\\nแบนไอดี: %{id}.\\\\nเหตุผลในการแบน: %{reason}\\\\nแบนโดย: %{author}"},"server_actions":{"restarting":"เซิร์ฟเวอร์รีสตาร์ท (%{reason})","restarting_discord":"**%{servername}** กำลังรีสตาร์ท (%{reason})","stopping":"เซิร์ฟเวอร์หยุดทำงาน (%{reason})","stopping_discord":"**%{servername}** กำลังหยุดทำงาน (%{reason})","spawning_discord":"**%{servername}** กำลังเริ่มต้นระบบ"},"discord":{"status_online":"**%{servername}** ปัจจุบันคือ **Online**!","status_offline":"**%{servername}** ปัจจุบันคือ **Offline**!"},"nui_warning":{"title":"WARNING","warned_by":"Warned by:","instruction":"กด [SPACE] ค้าวไว้เป็นเวลา 10 วินาทีเพื่อปิดข้อความนี้"},"nui_menu":{"misc":{"help_message":"เปิดใช้งานเมนู txAdmin แล้ว พิมพ์ /tx เพื่อเปิดมันขึ้น\\\\nคุณยังสามารถกำหนดค่าปุ่ม keybind ได้ที่ [Game Settings > Key Bindings > FiveM > Menu: Open Main Page]","menu_not_allowed":"ตัวตนของคุณไม่ตรงกับที่ผู้ดูแลระบบลงทะเบียนใน txAdmin\\\\nหากคุณลงทะเบียนใน txAdmin แล้ว ให้ไปที่ Admin Manager และตรวจสอบให้แน่ใจว่าได้บันทึกตัวระบุของคุณแล้ว","no_perms":"คุณไม่ได้รับสิทธิ์นี้","unknown_error":"เกิดข้อผิดพลาดที่ไม่รู้จัก","not_enabled":"ไม่ได้เปิดใช้งานเมนู txAdmin คุณสามารถเปิดใช้งานได้ในหน้า การตั้งค่าของ txAdmin","announcement_title":"ประกาศจากเซิร์ฟเวอร์โดย %{author}:","dialog_empty_input":"คุณไม่สามารถป้อนข้อมูลว่างได้"},"frozen":{"froze_player":"คุณได้ถูกระงับผู้เล่นแล้ว","unfroze_player":"คุณได้ยกเลิกการถูกระงับผู้เล่นแล้ว","was_frozen":"คุณถูกระงับโดยผู้ดูแลเซิร์ฟเวอร์"},"common":{"cancel":"ยกเลิก","submit":"ยอมรับ","error":"เกิดข้อผิดพลาด","copied":"คัดลอกไปยังคลิปบอร์ดแล้ว"},"page_main":{"tooltips":{"tooltip_1":"ใช้ปุ่ม %{key} เพื่อสลับหน้าและเป็นปุ่มลูกศรเพื่อนำทางรายการเมนู","tooltip_2":"รายการเมนูบางรายการมีตัวเลือกย่อยซึ่งสามารถเลือกได้โดยใช้ปุ่มลูกศรซ้ายและขวา"},"player_mode":{"title":"โหมดผู้เล่น","noclip":{"title":"โหมดอิสระ","label":"บินไปรอบๆได้","success":"เปิดใช้งานโหมดอิสระ"},"godmode":{"title":"โหมดพระเจ้า","label":"อยู่ยงคงกระพัน","success":"เปิดใช้โหมดพระเจ้า"},"normal":{"title":"โหมดธรรมดา","label":"โหมดเริ่มต้น","success":"กลับไปสู่โหมดเริ่มต้นเป็นผู้เล่น"}},"teleport":{"title":"เทเลพอร์ต","generic_success":"ส่งคุณเข้าไปในรูหนอนแล้วแล้ว","waypoint":{"title":"จุดมาร์ค","label":"ไปยังจุดที่ทำเครื่องหมายไว้","error":"คุณยังไม่ได้ทำจุดมาร์คไว้"},"coords":{"title":"พิกัด","label":"ไปยังพิกัดจะระบุ","dialog_title":"เทเลพอร์ต","dialog_desc":"ระบุพิกัดในรูปแบบ x, y, z เพื่อผ่านโดยใช้รูหนอน","dialog_error":"พิกัดไม่ถูกต้อง ต้องอยู่ในรูปแบบ: 111, 222, 33"},"back":{"title":"กลับ","label":"กลับไปยังตำแหน่งล่าสุด","error":"คุณไม่มีสถานที่ล่าสุดที่จะกลับไป"},"copy":{"title":"คัดลอกพิกัด","label":"คัดลอกพิกัดไปยังคลิปบอร์ด"}},"vehicle":{"title":"ยานพาหนะ","onesync_error":"ตัวเลือกนี้กำหนดให้ต้องเปิด OneSync เพื่อสำหรับการจัดการเอนทิตีในเซิร์ฟเวอร์","not_in_veh_error":"คุณไม่ได้อยู่ในยานพาหนะในขณะนี้","spawn":{"title":"Spawn","label":"สร้างยานพาหนะตามชื่อโมเดล","dialog_title":"สร้างยานพาหนะ","dialog_desc":"ป้อนชื่อโมเดลของยานพาหนะที่คุณต้องการสร้างขึ้นมา","dialog_success":"สร้างยานพาหนะขึ้นมาแล้ว","dialog_error":"โมเดลยานพาหนะชื่อ \\\'%{modelName}\\\' ไม่ได้มีอยู่","dialog_info":"พยายามที่จะสร้าง %{modelName}"},"fix":{"title":"ซ่อม","label":"ซ่อมยานพาหนะปัจจุบัน","success":"ซ่อมยานพาหนะแล้ว"},"delete":{"title":"ลบ","label":"ลบยานพาหนะปัจจุบัน","success":"ลบยานพาหนะแล้ว"}},"heal":{"title":"รักษา","myself":{"title":"ตัวเอง","label":"ฟื้นฟูสุขภาพของคุณ","success_0":"หายดีแล้ว","success_1":"คุณน่าจะรู้สึกดีขึ้นแล้วในขณะนี้","success_2":"ฟื้นคืนชีพเต็มพิกัด","success_3":"รักษาอาการเจ็บแล้ว"},"everyone":{"title":"ทุกคน","label":"รักษาและชุบชีวิตผู้เล่นทุกคน","success":"รักษาและชุบชีวิตผู้เล่นทุกคนแล้ว"}},"announcement":{"title":"ส่งประกาศ","label":"ส่งประกาศถึงผู้เล่นออนไลน์ทุกคนแล้ว","dialog_desc":"ส่งประกาศถึงผู้เล่นออนไลน์ทุกคนแล้ว","dialog_placeholder":"ข้อความประกาศของคุณ...","dialog_success":"ส่งข้อความประกาศแล้ว"},"clear_area":{"title":"รีเซ็ตพื้นที่โลก","label":"รีเซ็ตพื้นที่โลกให้กลับไปเป็นสถานะเริ่มต้น","dialog_desc":"โปรดป้อนรัศมีที่คุณต้องการรีเซ็ตเอนทิตีในช่วง (0-300) สิ่งนี้จะไม่ล้างเอนทิตีที่เกิดจากฝั่งเซิร์ฟเวอร์ได้","dialog_success":"ลง้าพื้นที่ในรัศมีระยะ %{radius}เมตร แล้ว","dialog_error":"ป้อนข้อมูลรัศมีไม่ถูกต้อง ลองอีกครั้ง"},"player_ids":{"title":"สลับไอดีผู้เล่น","label":"สลับการแสดงไอดีผู้เล่น (และข้อมูลอื่นๆ) บริเวณส่วนเหนือหัวของผู้เล่นในระยะใกล้เคียงทั้งหมด","alert_show":"กำลังแสดงไอดีของผู้เล่นใกล้เคียง","alert_hide":"กำลังซ่อนไอดีของผู้เล่นใกล้เคียง"}},"page_players":{"misc":{"online_players":"ผู้เล่นที่ออนไลน์","players":"ผู้เล่น","search":"ค้นหา","zero_players":"ไม่พบผู้เล่น"},"sort":{"label":"กรอกผู้เล่นจาก","distance":"ระยะทาง","id":"ไอดี","joined_first":"เข้าร่วมก่อน","joined_last":"เข้าร่วมล่าสุด","closest":"ใกล้ที่สุด","farthest":"ไกลที่สุด"},"card":{"health":"สุขภาพ %{percentHealth}%"}},"player_modal":{"misc":{"error":"เกิดข้อผิดพลาดขณะดึงรายละเอียดผู้ใช้รายนี้ ข้อผิดพลาดแสดงอยู่ด้านล่าง:","target_not_found":"ไม่สามารถหาผู้เล่นที่ออนไลน์จากไอดีหรือชื่อผู้ใช้จาก %{target}"},"tabs":{"actions":"การกระทำ","info":"ข้อมูล","ids":"ไอดี","history":"ประวัติ","ban":"แบน"},"actions":{"title":"การกระทำของผู้เล่น","command_sent":"ส่งคำสั่งแล้ว","moderation":{"title":"จัดการ","options":{"dm":"DM","warn":"เตือน","kick":"เตะ","set_admin":"มอบผู้ดูแลระบบ"},"dm_dialog":{"title":"Direct Message","description":"เหตุผลที่จะส่งข้อความไปหาผู้เล่นรายนี้โดยตรง","placeholder":"เหตุผล...","success":"ส่ง DM ของคุณแล้ว"},"warn_dialog":{"title":"เตือน","description":"เหตุผลที่จะส่งข้อความเตือนไปหาผู้เล่นรายนี้","placeholder":"เหตุผล...","success":"ผู้เล่นถูกเตือนแล้ว"},"kick_dialog":{"title":"เตะ","description":"เหตุผลที่จะเตะผู้เล่นรายนี้","placeholder":"เหตุผล...","success":"ผู้เล่นถูกเตะแล้ว"}},"interaction":{"title":"ปฏิสัมพันธ์","options":{"heal":"รักษา","go_to":"ไปหา","bring":"ดึงมา","spectate":"รับชม","toggle_freeze":"ระงับ"},"notifications":{"heal_player":"รักษาผู้เล่น","tp_player":"เทเลพอร์ตไปหาผู้เล่น","bring_player":"เรียกผู้เล่นมา","spectate_failed":"ล้มเหลวในการไปหาเป้าหมาย ออกจากโหมดรับชม","spectate_yourself":"คุณไม่สามารถรับชมตัวเองได้","freeze_yourself":"คุณไม่สามารถระงับตัวเองได้"}},"troll":{"title":"แผนร้าย","options":{"drunk":"ทำให้เมา","fire":"ใส่ไฟ","wild_attack":"สัตว์ป่าโจมตี"}}},"info":{"title":"ข้อมูลผู้เล่น","session_time":"เวลาเซสชัน","play_time":"เวลาเล่น","joined":"เข้าร่วม","notes_placeholder":"หมายเหตุเกี่ยวกับผู้เล่นรายนี้"},"history":{"title":"ประวัติที่เกี่ยวข้อง","action_types":{"warn":"คำเตือน","warn_revoked":"เพิกถอนคำเตือนจาก","ban":"การแบน","ban_revoked":"เพิกถอนการแบนจาก","whitelist":"ไวท์ลิสต์","whitelist_revoked":"เพิกถอนไวท์ลิสต์จาก"}},"ban":{"title":"แบนผู้เล่น","reason_placeholder":"เหตุผล","duration_placeholder":"ระยะเวลา","hours":"ชั่วโมง","days":"วัน","weeks":"สัปดาห์","months":"เดือน","permanent":"ถาวร","custom":"กำหนดเอง","helper_text":"กรุณาเลือกระยะเวลา","submit":"ยอมระบการแบน"}}}}\');\n\n//# sourceURL=webpack://txadmin/./locale/th.json?')},"./locale/tr.json":
/*!************************!*\
  !*** ./locale/tr.json ***!
  \************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"$meta":{"label":"Turkish","humanizer_language":"tr"},"restarter":{"start_timeout":"zamanında başlatılamadı","crash_detected":"Çökme tespit edildi","hang_detected":"Takılma algılandı","partial_hang_warn":"Takılma nedeniyle bu sunucu 1 dakika içinde yeniden başlayacak. Lütfen şimdi bağlantıyı kesin.","partial_hang_warn_discord":"Takılma nedeniyle **%{servername}** 1 dakika içinde yeniden başlayacak.","schedule_reason":"Zamanlanmış yeniden başlatma %{time}","schedule_warn":"Sunucu %{smart_count} dakika içerisinde zamanlanmış şekilde yeniden başlatılacaktır. Lütfen çıkış yapın. |||| Sunucu %{smart_count} dakika içerisinde zamanlanmış şekilde yeniden başlatılacaktır.","schedule_warn_discord":"**%{servername}** sunucusu %{smart_count} dakika içerisinde yeniden başlatılmaya zamanlandı. |||| **%{servername}** sunucusu %{smart_count} dakika içerisinde yeniden başlatılmaya zamanlandı."},"ban_messages":{"kick_temporary":"(%{author}) \\\\"%{reason}\\\\" sebebi ile bu sunucudan uzaklaştırıldın! Cezanın bitmesine kalan süre: %{expiration}.","kick_permanent":"(%{author}) \\\\"%{reason}\\\\". sebebi ile bu sunucudan süresiz olarak uzaklaştırıldın!","reject_temporary":"Bu sunucudan  %{expiration} süre ile uzaklaştırıldın!.\\\\nBan ID: %{id}.\\\\nBan Sebebi: %{reason}.\\\\nBanlayan: %{author}.","reject_permanent":"Bu sunucudan süresiz olarak uzaklaştırıldın!.\\\\nBan ID: %{id}.\\\\nBan Sebebi: %{reason}.\\\\nBanlayan: %{author}."},"server_actions":{"restarting":"Sunucu yeniden başlatılıyor.(%{reason}).","restarting_discord":"**%{servername}** sunucusu yeniden başlatılıyor. (%{reason}).","stopping":"Sunucu kapatılıyor(%{reason}).","stopping_discord":"**%{servername}** sunucu kapatılıyor (%{reason}).","spawning_discord":"**%{servername}** sunucu başlatıldı."},"discord":{"status_online":"**%{servername}** şuan **AÇIK**!","status_offline":"**%{servername}** şuan **KAPALI**!"},"nui_warning":{"title":"UYARI","warned_by":"Uyarıldın:","instruction":"Bu mesajı geçmek için [SPACE] tuşuna 10 saniye boyunca basılı tut."},"nui_menu":{"misc":{"help_message":"txAdmin Menu enabled, type /tx to open it.\\\\nYou can also configure a keybind at [Game Settings > Key Bindings > FiveM > Menu: Open Main Page].","menu_not_allowed":"Your identifiers do not match any admin registered on txAdmin.\\\\nIf you are registered on txAdmin, go to Admin Manager and make sure your identifiers are saved.","no_perms":"You do not have this permission.","unknown_error":"An unknown error occurred.","not_enabled":"The txAdmin Menu is not enabled! You can enable it in the txAdmin settings page.","announcement_title":"Server Announcement by %{author}:","dialog_empty_input":"You cannot have an empty input."},"frozen":{"froze_player":"You have frozen the player!","unfroze_player":"You have unfrozen the player!","was_frozen":"You have been frozen by a server admin!"},"common":{"cancel":"Cancel","submit":"Submit","error":"An error occurred","copied":"Copied to clipboard."},"page_main":{"tooltips":{"tooltip_1":"Use %{key} to switch pages & the arrow keys to navigate menu items","tooltip_2":"Certain menu items have sub options which can be selected using the left & right arrow keys"},"player_mode":{"title":"Player Mode","noclip":{"title":"NoClip","label":"Fly around","success":"NoClip enabled"},"godmode":{"title":"God","label":"Invincible","success":"God Mode enabled"},"normal":{"title":"Normal","label":"Default mode","success":"Returned to default player mode."}},"teleport":{"title":"Teleport","generic_success":"Sent you into the wormhole!","waypoint":{"title":"Waypoint","label":"Go to waypoint set","error":"You have no waypoint set."},"coords":{"title":"Coords","label":"Go to specified coords","dialog_title":"Teleport","dialog_desc":"Provide coordinates in an x, y, z format to go through the wormhole.","dialog_error":"Invalid coordinates. Must be in the format of: 111, 222, 33"},"back":{"title":"Back","label":"Go back to last location","error":"You don\\\'t have a last location to go back to!"},"copy":{"title":"Copy Coords","label":"Copy coords to clipboard."}},"vehicle":{"title":"Vehicle","onesync_error":"This option requires that OneSync be on for server entity handling","not_in_veh_error":"You are not currently in a vehicle!","spawn":{"title":"Spawn","label":"Spawn vehicle by model name","dialog_title":"Spawn vehicle","dialog_desc":"Enter in the model name of the vehicle you want to spawn.","dialog_success":"Vehicle spawned!","dialog_error":"The vehicle model name \\\'%{modelName}\\\' does not exist!","dialog_info":"Trying to spawn %{modelName}."},"fix":{"title":"Fix","label":"Fix the current vehicle","success":"Vehicle fixed!"},"delete":{"title":"Delete","label":"Delete the current vehicle","success":"Vehicle deleted!"}},"heal":{"title":"Heal","myself":{"title":"Myself","label":"Restores your health","success_0":"All healed up!","success_1":"You should be feeling good now!","success_2":"Restored to full!","success_3":"Ouchies fixed!"},"everyone":{"title":"Everyone","label":"Will heal & revive all players","success":"Healed and revived all players."}},"announcement":{"title":"Send Announcement","label":"Send an announcement to all online players.","dialog_desc":"Send an announcement to all online players.","dialog_placeholder":"Your announcement...","dialog_success":"Sending the announcement."},"clear_area":{"title":"Reset World Area","label":"Reset a specified world area to its default state","dialog_desc":"Please enter the radius where you wish to reset entities in (0-300). This will not clear entities spawned server side.","dialog_success":"Clearing area with radius of %{radius}m","dialog_error":"Invalid radius input. Try again."},"player_ids":{"title":"Toggle Player IDs","label":"Toggle showing player IDs (and other info) above the head of all nearby players","alert_show":"Showing nearby player NetIDs.","alert_hide":"Hiding nearby player NetIDs."}},"page_players":{"misc":{"online_players":"Online Players","players":"Players","search":"Search","zero_players":"No players found"},"sort":{"label":"Sort by","distance":"Distance","id":"ID","joined_first":"Joined First","joined_last":"Joined Last","closest":"Closest","farthest":"Farthest"},"card":{"health":"%{percentHealth}% health"}},"player_modal":{"misc":{"error":"An error occurred fetching this users details. The error is shown below:","target_not_found":"Was unable to find an online player with ID or an username of %{target}"},"tabs":{"actions":"Actions","info":"Info","ids":"IDs","history":"History","ban":"Ban"},"actions":{"title":"Player Actions","command_sent":"Command sent!","moderation":{"title":"Moderation","options":{"dm":"DM","warn":"Warn","kick":"Kick","set_admin":"Give Admin"},"dm_dialog":{"title":"Direct Message","description":"What is the reason for direct messaging this player?","placeholder":"Reason...","success":"Your DM has been sent!"},"warn_dialog":{"title":"Warn","description":"What is the reason for direct warning this player?","placeholder":"Reason...","success":"The player was warned!"},"kick_dialog":{"title":"Kick","description":"What is the reason for kicking this player?","placeholder":"Reason...","success":"The player was kicked!"}},"interaction":{"title":"Interaction","options":{"heal":"Heal","go_to":"Go to","bring":"Bring","spectate":"Spectate","toggle_freeze":"Toggle Freeze"},"notifications":{"heal_player":"Healing player","tp_player":"Teleporting to player","bring_player":"Summoning player","spectate_failed":"Failed to resolve the target! Exiting spectate.","spectate_yourself":"You cannot spectate yourself.","freeze_yourself":"You cannot freeze yourself."}},"troll":{"title":"Troll","options":{"drunk":"Make Drunk","fire":"Set Fire","wild_attack":"Wild attack"}}},"info":{"title":"Player info","session_time":"Session Time","play_time":"Play time","joined":"Joined","notes_placeholder":"Notes about this player"},"history":{"title":"Related history","action_types":{"warn":"WARNED","warn_revoked":"REVOKED the WARN for","ban":"BANNED","ban_revoked":"REVOKED the BAN for","whitelist":"WHITELIST","whitelist_revoked":"REVOKED the WHITELIST for"}},"ban":{"title":"Ban player","reason_placeholder":"Reason","duration_placeholder":"Duration","hours":"hours","days":"days","weeks":"weeks","months":"months","permanent":"Permanent","custom":"Custom","helper_text":"Please select a duration","submit":"Apply ban"}}}}\');\n\n//# sourceURL=webpack://txadmin/./locale/tr.json?')},"./locale/zh.json":
/*!************************!*\
  !*** ./locale/zh.json ***!
  \************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"$meta":{"label":"Chinese","humanizer_language":"zh_CN"},"restarter":{"start_timeout":"未能及时启动","crash_detected":"检测到服务器已奔溃","hang_detected":"检测到服务器挂起","partial_hang_warn":"由于部分挂起，此服务器将在 1 分钟后重新启动。请立即断开连接。","partial_hang_warn_discord":"由于部分挂起, **%{servername}** 将在1分钟后重启","schedule_reason":"预计 %{time}重启","schedule_warn":"此服务器计划 %{smart_count} 分钟后重新启动， 请立即断开连接。 |||| 服务器计划 %{smart_count} 分钟后重新启动。","schedule_warn_discord":"**%{servername}** 预计 %{smart_count} 分钟后重新启动。 |||| **%{servername}** 预计 %{smart_count} 分钟后重新启动。"},"ban_messages":{"kick_temporary":"(%{author}) 你已被服务器禁止访问，理由： \\\\"%{reason}\\\\". 您的禁令将于: %{expiration} 过期.","kick_permanent":"(%{author})您已被永久禁止访问此服务器，理由： \\\\"%{reason}\\\\".","reject_temporary":"你已被服务器禁止访问.\\\\n您的禁令将于: %{expiration}过期.\\\\n禁令ID： %{id}.\\\\n禁止理由: %{reason}.\\\\n操作人: %{author}.","reject_permanent":"您已被永久禁止访问此服务器.\\\\n禁令ID: %{id}.\\\\n禁止理由: %{reason}.\\\\n操作人: %{author}."},"server_actions":{"restarting":"服务器正在重启 (%{reason})。","restarting_discord":"**%{servername}** 正在重新启动 (%{reason})。","stopping":"服务器正在关闭 (%{reason})。","stopping_discord":"**%{servername}** 正在关闭 (%{reason})。","spawning_discord":"**%{servername}** 正在重启。"},"discord":{"status_online":"**%{servername}** 服务器目前 **在线**!","status_offline":"**%{servername}** 服务器目前 **离线**!"},"nui_warning":{"title":"警告","warned_by":"警告者:","instruction":"按住 [空格] 10秒来关闭这个讯息."},"nui_menu":{"misc":{"help_message":"txAdmin 菜单已启用，键入 /tx 以打开它。\\\\n您也可以在 [游戏设置 > 按键绑定 > FiveM > 菜单：打开主页] 配置按键绑定。","menu_not_allowed":"您的标识符与在 txAdmin 上注册的任何管理员都不匹配。\\\\n如果您在 txAdmin 上注册，请转到管理员管理器并确保您的标识符已保存","no_perms":"你没有权限","unknown_error":"An unknown error occurred.","not_enabled":"The txAdmin Menu is not enabled! You can enable it in the txAdmin settings page.","announcement_title":"Server Announcement by %{author}:","dialog_empty_input":"You cannot have an empty input."},"frozen":{"froze_player":"You have frozen the player!","unfroze_player":"You have unfrozen the player!","was_frozen":"You have been frozen by a server admin!"},"common":{"cancel":"Cancel","submit":"Submit","error":"An error occurred","copied":"Copied to clipboard."},"page_main":{"tooltips":{"tooltip_1":"Use %{key} to switch pages & the arrow keys to navigate menu items","tooltip_2":"Certain menu items have sub options which can be selected using the left & right arrow keys"},"player_mode":{"title":"Player Mode","noclip":{"title":"NoClip","label":"Fly around","success":"NoClip enabled"},"godmode":{"title":"God","label":"Invincible","success":"God Mode enabled"},"normal":{"title":"Normal","label":"Default mode","success":"Returned to default player mode."}},"teleport":{"title":"Teleport","generic_success":"Sent you into the wormhole!","waypoint":{"title":"Waypoint","label":"Go to waypoint set","error":"You have no waypoint set."},"coords":{"title":"Coords","label":"Go to specified coords","dialog_title":"Teleport","dialog_desc":"Provide coordinates in an x, y, z format to go through the wormhole.","dialog_error":"Invalid coordinates. Must be in the format of: 111, 222, 33"},"back":{"title":"Back","label":"Go back to last location","error":"You don\\\'t have a last location to go back to!"},"copy":{"title":"Copy Coords","label":"Copy coords to clipboard."}},"vehicle":{"title":"Vehicle","onesync_error":"This option requires that OneSync be on for server entity handling","not_in_veh_error":"You are not currently in a vehicle!","spawn":{"title":"Spawn","label":"Spawn vehicle by model name","dialog_title":"Spawn vehicle","dialog_desc":"Enter in the model name of the vehicle you want to spawn.","dialog_success":"Vehicle spawned!","dialog_error":"The vehicle model name \\\'%{modelName}\\\' does not exist!","dialog_info":"Trying to spawn %{modelName}."},"fix":{"title":"Fix","label":"Fix the current vehicle","success":"Vehicle fixed!"},"delete":{"title":"Delete","label":"Delete the current vehicle","success":"Vehicle deleted!"}},"heal":{"title":"Heal","myself":{"title":"Myself","label":"Restores your health","success_0":"All healed up!","success_1":"You should be feeling good now!","success_2":"Restored to full!","success_3":"Ouchies fixed!"},"everyone":{"title":"Everyone","label":"Will heal & revive all players","success":"Healed and revived all players."}},"announcement":{"title":"Send Announcement","label":"Send an announcement to all online players.","dialog_desc":"Send an announcement to all online players.","dialog_placeholder":"Your announcement...","dialog_success":"Sending the announcement."},"clear_area":{"title":"Reset World Area","label":"Reset a specified world area to its default state","dialog_desc":"Please enter the radius where you wish to reset entities in (0-300). This will not clear entities spawned server side.","dialog_success":"Clearing area with radius of %{radius}m","dialog_error":"Invalid radius input. Try again."},"player_ids":{"title":"Toggle Player IDs","label":"Toggle showing player IDs (and other info) above the head of all nearby players","alert_show":"Showing nearby player NetIDs.","alert_hide":"Hiding nearby player NetIDs."}},"page_players":{"misc":{"online_players":"Online Players","players":"Players","search":"Search","zero_players":"No players found"},"sort":{"label":"Sort by","distance":"Distance","id":"ID","joined_first":"Joined First","joined_last":"Joined Last","closest":"Closest","farthest":"Farthest"},"card":{"health":"%{percentHealth}% health"}},"player_modal":{"misc":{"error":"An error occurred fetching this users details. The error is shown below:","target_not_found":"Was unable to find an online player with ID or an username of %{target}"},"tabs":{"actions":"Actions","info":"Info","ids":"IDs","history":"History","ban":"Ban"},"actions":{"title":"Player Actions","command_sent":"Command sent!","moderation":{"title":"Moderation","options":{"dm":"DM","warn":"Warn","kick":"Kick","set_admin":"Give Admin"},"dm_dialog":{"title":"Direct Message","description":"What is the reason for direct messaging this player?","placeholder":"Reason...","success":"Your DM has been sent!"},"warn_dialog":{"title":"Warn","description":"What is the reason for direct warning this player?","placeholder":"Reason...","success":"The player was warned!"},"kick_dialog":{"title":"Kick","description":"What is the reason for kicking this player?","placeholder":"Reason...","success":"The player was kicked!"}},"interaction":{"title":"Interaction","options":{"heal":"Heal","go_to":"Go to","bring":"Bring","spectate":"Spectate","toggle_freeze":"Toggle Freeze"},"notifications":{"heal_player":"Healing player","tp_player":"Teleporting to player","bring_player":"Summoning player","spectate_failed":"Failed to resolve the target! Exiting spectate.","spectate_yourself":"You cannot spectate yourself.","freeze_yourself":"You cannot freeze yourself."}},"troll":{"title":"Troll","options":{"drunk":"Make Drunk","fire":"Set Fire","wild_attack":"Wild attack"}}},"info":{"title":"Player info","session_time":"Session Time","play_time":"Play time","joined":"Joined","notes_placeholder":"Notes about this player"},"history":{"title":"Related history","action_types":{"warn":"WARNED","warn_revoked":"REVOKED the WARN for","ban":"BANNED","ban_revoked":"REVOKED the BAN for","whitelist":"WHITELIST","whitelist_revoked":"REVOKED the WHITELIST for"}},"ban":{"title":"Ban player","reason_placeholder":"Reason","duration_placeholder":"Duration","hours":"hours","days":"days","weeks":"weeks","months":"months","permanent":"Permanent","custom":"Custom","helper_text":"Please select a duration","submit":"Apply ban"}}}}\');\n\n//# sourceURL=webpack://txadmin/./locale/zh.json?')},"./node_modules/@citizenfx/discord.js/package.json":
/*!*********************************************************!*\
  !*** ./node_modules/@citizenfx/discord.js/package.json ***!
  \*********************************************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"name":"@citizenfx/discord.js","version":"13.6.1","description":"A powerful library for interacting with the Discord API (patched for CitizenFX)","scripts":{"test":"npm run lint && npm run docs:test && npm run lint:typings && npm run test:typescript","test:typescript":"tsc --noEmit && tsd","lint":"eslint src","lint:fix":"eslint src --fix","lint:typings":"tslint typings/index.d.ts","format":"prettier --write src/**/*.js typings/**/*.ts","prepare":"is-ci || husky install","docs":"docgen --source src --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --source src --custom docs/index.yml","prepublishOnly":"npm run test","changelog":"git cliff --prepend CHANGELOG.md -l"},"main":"./src/index.js","types":"./typings/index.d.ts","files":["src","typings"],"directories":{"lib":"src","test":"test"},"contributors":["Crawl <icrawltogo@gmail.com>","Amish Shah <amishshah.2k@gmail.com>","Vlad Frangu <kingdgrizzle@gmail.com>","SpaceEEC <spaceeec@yahoo.com>","Antonio Roman <kyradiscord@gmail.com>"],"license":"Apache-2.0","keywords":["discord","api","bot","client","node","discordapp"],"repository":{"type":"git","url":"https://github.com/citizenfx/discord.js.git"},"homepage":"https://discord.js.org","dependencies":{"@discordjs/builders":"^0.11.0","@discordjs/collection":"^0.4.0","@sapphire/async-queue":"^1.1.9","@types/node-fetch":"^2.5.12","@types/ws":"^8.2.2","discord-api-types":"^0.26.0","form-data":"^4.0.0","node-fetch":"^2.6.1","ws":"^8.4.0"},"devDependencies":{"@commitlint/cli":"^16.0.1","@commitlint/config-angular":"^16.0.0","@discordjs/docgen":"^0.11.0","@favware/npm-deprecate":"^1.0.4","@types/node":"^16.11.12","conventional-changelog-cli":"^2.2.2","dtslint":"^4.2.1","eslint":"^8.5.0","eslint-config-prettier":"^8.3.0","eslint-plugin-import":"^2.25.3","eslint-plugin-prettier":"^4.0.0","husky":"^7.0.4","is-ci":"^3.0.1","jest":"^27.4.5","lint-staged":"^12.1.4","prettier":"^2.5.1","tsd":"^0.19.0","tslint":"^6.1.3","typescript":"^4.5.4"},"engines":{"node":">=16.6.0","npm":">=7.0.0"}}\');\n\n//# sourceURL=webpack://txadmin/./node_modules/@citizenfx/discord.js/package.json?')},"./node_modules/cli-boxes/boxes.json":
/*!*******************************************!*\
  !*** ./node_modules/cli-boxes/boxes.json ***!
  \*******************************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"single":{"topLeft":"┌","topRight":"┐","bottomRight":"┘","bottomLeft":"└","vertical":"│","horizontal":"─"},"double":{"topLeft":"╔","topRight":"╗","bottomRight":"╝","bottomLeft":"╚","vertical":"║","horizontal":"═"},"round":{"topLeft":"╭","topRight":"╮","bottomRight":"╯","bottomLeft":"╰","vertical":"│","horizontal":"─"},"bold":{"topLeft":"┏","topRight":"┓","bottomRight":"┛","bottomLeft":"┗","vertical":"┃","horizontal":"━"},"singleDouble":{"topLeft":"╓","topRight":"╖","bottomRight":"╜","bottomLeft":"╙","vertical":"║","horizontal":"─"},"doubleSingle":{"topLeft":"╒","topRight":"╕","bottomRight":"╛","bottomLeft":"╘","vertical":"│","horizontal":"═"},"classic":{"topLeft":"+","topRight":"+","bottomRight":"+","bottomLeft":"+","vertical":"|","horizontal":"-"}}\');\n\n//# sourceURL=webpack://txadmin/./node_modules/cli-boxes/boxes.json?')},"./node_modules/ejs/package.json":
/*!***************************************!*\
  !*** ./node_modules/ejs/package.json ***!
  \***************************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"name":"ejs","description":"Embedded JavaScript templates","keywords":["template","engine","ejs"],"version":"3.1.8","author":"Matthew Eernisse <mde@fleegix.org> (http://fleegix.org)","license":"Apache-2.0","bin":{"ejs":"./bin/cli.js"},"main":"./lib/ejs.js","jsdelivr":"ejs.min.js","unpkg":"ejs.min.js","repository":{"type":"git","url":"git://github.com/mde/ejs.git"},"bugs":"https://github.com/mde/ejs/issues","homepage":"https://github.com/mde/ejs","dependencies":{"jake":"^10.8.5"},"devDependencies":{"browserify":"^16.5.1","eslint":"^6.8.0","git-directory-deploy":"^1.5.1","jsdoc":"^3.6.7","lru-cache":"^4.0.1","mocha":"^7.1.1","uglify-js":"^3.3.16"},"engines":{"node":">=0.10.0"},"scripts":{"test":"mocha"}}\');\n\n//# sourceURL=webpack://txadmin/./node_modules/ejs/package.json?')},"./node_modules/iconv-lite/encodings/tables/big5-added.json":
/*!******************************************************************!*\
  !*** ./node_modules/iconv-lite/encodings/tables/big5-added.json ***!
  \******************************************************************/module=>{"use strict";eval('module.exports = JSON.parse(\'[["8740","䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"],["8767","綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑宷峼杮薓𩥅瑡璝㡵𡵓𣚞𦀡㻬"],["87a1","𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋"],["8840","㇀",4,"𠄌㇅𠃑𠃍㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎ĀÁǍÀĒÉĚÈŌÓǑÒ࿿Ê̄Ế࿿Ê̌ỀÊāáǎàɑēéěèīíǐìōóǒòūúǔùǖǘǚ"],["88a1","ǜü࿿ê̄ế࿿ê̌ềêɡ⏚⏛"],["8940","𪎩𡅅"],["8943","攊"],["8946","丽滝鵎釟"],["894c","𧜵撑会伨侨兖兴农凤务动医华发变团声处备夲头学实実岚庆总斉柾栄桥济炼电纤纬纺织经统缆缷艺苏药视设询车轧轮"],["89a1","琑糼緍楆竉刧"],["89ab","醌碸酞肼"],["89b0","贋胶𠧧"],["89b5","肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁"],["89c1","溚舾甙"],["89c5","䤑马骏龙禇𨑬𡷊𠗐𢫦两亁亀亇亿仫伷㑌侽㹈倃傈㑽㒓㒥円夅凛凼刅争剹劐匧㗇厩㕑厰㕓参吣㕭㕲㚁咓咣咴咹哐哯唘唣唨㖘唿㖥㖿嗗㗅"],["8a40","𧶄唥"],["8a43","𠱂𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥䁓𨂾睺𢰸㨴䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𡃴撍蹾𠺖𠰋𠽤𢲩𨉖𤓓"],["8a64","𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴㿭㔆𥋇𩟔𧣈𢵄鵮頕"],["8a76","䏙𦂥撴哣𢵌𢯊𡁷㧻𡁯"],["8aa1","𦛚𦜖𧦠擪𥁒𠱃蹨𢆡𨭌𠜱"],["8aac","䠋𠆩㿺塳𢶍"],["8ab2","𤗈𠓼𦂗𠽌𠶖啹䂻䎺"],["8abb","䪴𢩦𡂝膪飵𠶜捹㧾𢝵跀嚡摼㹃"],["8ac9","𪘁𠸉𢫏𢳉"],["8ace","𡃈𣧂㦒㨆𨊛㕸𥹉𢃇噒𠼱𢲲𩜠㒼氽𤸻"],["8adf","𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜羓𡃏𢠃𢤹㗻𥇣𠺌𠾍𠺪㾓𠼰𠵇𡅏𠹌"],["8af6","𠺫𠮩𠵈𡃀𡄽㿹𢚖搲𠾭"],["8b40","𣏴𧘹𢯎𠵾𠵿𢱑𢱕㨘𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊閪哌苄喹"],["8b55","𩻃鰦骶𧝞𢷮煀腭胬尜𦕲脴㞗卟𨂽醶𠻺𠸏𠹷𠻻㗝𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑"],["8ba1","𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟鮍𥭴𣄽嗻㗲嚉丨夂𡯁屮靑𠂆乛亻㔾尣彑忄㣺扌攵歺氵氺灬爫丬犭𤣩罒礻糹罓𦉪㓁"],["8bde","𦍋耂肀𦘒𦥑卝衤见𧢲讠贝钅镸长门𨸏韦页风飞饣𩠐鱼鸟黄歯龜丷𠂇阝户钢"],["8c40","倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏䀉橣𪊺䈣蘏𠩯稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋"],["8ca1","𣏹椙橃𣱣泿"],["8ca7","爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚"],["8cc9","顨杫䉶圽"],["8cce","藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯曧繛湗秊㶈䓃𣉖𢞖䎚䔶"],["8ce6","峕𣬚諹屸㴒𣕑嵸龲煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻"],["8d40","𠮟"],["8d42","𢇁𨥭䄂䚻𩁹㼇龳𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭崾嵈嵖㷼㠏嶤嶹㠠㠸幂庽弥徃㤈㤔㤿㥍惗愽峥㦉憷憹懏㦸戬抐拥挘㧸嚱"],["8da1","㨃揢揻搇摚㩋擀崕嘡龟㪗斆㪽旿晓㫲暒㬢朖㭂枤栀㭘桊梄㭲㭱㭻椉楃牜楤榟榅㮼槖㯝橥橴橱檂㯬檙㯲檫檵櫔櫶殁毁毪汵沪㳋洂洆洦涁㳯涤涱渕渘温溆𨧀溻滢滚齿滨滩漤漴㵆𣽁澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿炉𠌥䏁㗱𠻘"],["8e40","𣻗垾𦻓焾𥟠㙎榢𨯩孴穉𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯莜𥮴𦱿篐萡箒箸𥴠㶭𥱥蒒篺簆簵𥳁籄粃𤢂粦晽𤕸糉糇糦籴糳糵糎"],["8ea1","繧䔝𦹄絝𦻖璍綉綫焵綳緒𤁗𦀩緤㴓緵𡟹緥𨍭縝𦄡𦅚繮纒䌫鑬縧罀罁罇礶𦋐駡羗𦍑羣𡙡𠁨䕜𣝦䔃𨌺翺𦒉者耈耝耨耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥肧𨩈脇脚墰𢛶汿𦒘𤾸擧𡒊舘𡡞橓𤩥𤪕䑺舩𠬍𦩒𣵾俹𡓽蓢荢𦬊𤦧𣔰𡝳𣷸芪椛芳䇛"],["8f40","蕋苐茚𠸖𡞴㛁𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬莅䔋𦶥莬菁菓㑾𦻔橗蕚㒖𦹂𢻯葘𥯤葱㷓䓤檧葊𣲵祘蒨𦮖𦹷𦹃蓞萏莑䒠蒓蓤𥲑䉀𥳀䕃蔴嫲𦺙䔧蕳䔖枿蘖"],["8fa1","𨘥𨘻藁𧂈蘂𡖂𧃍䕫䕪蘨㙈𡢢号𧎚虾蝱𪃸蟮𢰧螱蟚蠏噡虬桖䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵揁装睷𧜏覇覊覦覩覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙竩𧬺𣾏䜓𧬸煼謌謟𥐰𥕥謿譌譍誩𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓賖𧶘𧶽贒贃𡤐賛灜贑𤳉㻐起"],["9040","趩𨀂𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭𨍥𨐒辥錃𪊟𠩐辳䤪𨧞𨔽𣶻廸𣉢迹𪀔𨚼𨔁𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄𨛦邮都酧㫰醩釄粬𨤳𡺉鈎沟鉁鉢𥖹銹𨫆𣲛𨬌𥗛"],["90a1","𠴱錬鍫𨫡𨯫炏嫃𨫢𨫥䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠濶䊹𢙺𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚隶磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊霱虂霶䨏䔽䖅𤫩灵孁霛靜𩇕靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀韒韠𥑬韮琜𩐳響韵𩐝𧥺䫑頴頳顋顦㬎𧅵㵑𠘰𤅜"],["9140","𥜆飊颷飈飇䫿𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴䰎鬔鬭𨘀倴鬴𦦨㣃𣁽魐魀𩴾婅𡡣鮎𤉋鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟鵾鶃𪄴鸎梈"],["91a1","鷄𢅛𪆓𪈠𡤻𪈳鴹𪂹𪊴麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊齅馸𩂋韲葿齢齩竜龎爖䮾𤥵𤦻煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨"],["9240","𡏆𡒶蔃𣚦蔃葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡哋嚞𦚱嚒𠿟𠮨𠸍鏆𨬓鎜仸儫㠙𤐶亼𠑥𠍿佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵伩𠋀𨺳𠉵諚𠈌亘"],["92a1","働儍侢伃𤨎𣺊佂倮偬傁俌俥偘僼兙兛兝兞湶𣖕𣸹𣺿浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜𠜎剙劤𠡳勡鍮䙺熌𤎌𠰠𤦬𡃤槑𠸝瑹㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉喴𠍅响𠯆圝鉝雴鍦埝垍坿㘾壋媙𨩆𡛺𡝯𡜐娬妸銏婾嫏娒𥥆𡧳𡡡𤊕㛵洅瑃娡𥺃"],["9340","媁𨯗𠐓鏠璌𡌃焅䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲𨦨弌弎𡤧𡞫婫𡜻孄蘔𧗽衠恾𢡠𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙憘恵𢲛𢴇𤛔𩅍"],["93a1","摱𤙥𢭪㨩𢬢𣑐𩣪𢹸挷𪑛撶挱揑𤧣𢵧护𢲡搻敫楲㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠䆐𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖枏𤘪梶栞㯄檾㡣𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺歗𣿀𣲚鎠鋲𨯪𨫋"],["9440","銉𨀞𨧜鑧涥漋𤧬浧𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆㬙瑨𨫌𤦫𤦎㫻"],["94a1","㷍𤩎㻿𤧅𤣳釺圲鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁砞碍碈磒珐祙𧝁𥛣䄎禛蒖禥樭𣻺稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹𡞰粎籼粮檲緜縇緓罎𦉡"],["9540","𦅜𧭈綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸𤥢翝笧𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿㧢𤧷𦖭騟𦖠蒀𧄧𦳑䓪脷䐂胆脉腂𦞴飃𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡嫤𡣘蚠蜨𣶏蠭𧐢娂"],["95a1","衮佅袇袿裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄𡡅鵭貟賩𧷜妚矃姰䍮㛔踪躧𤰉輰轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯邻邗啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁𩂰"],["9640","桇䨝𩂓𥟟靝鍨𨦉𨰦𨬯𦎾銺嬑譩䤼珹𤈛鞛靱餸𠼦巁𨯅𤪲頟𩓚鋶𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻饍𧬆㷽馛䭯馪驜𨭥𥣈檏騡嫾騯𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸"],["96a1","𡓨硄𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀䤭𤧞㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞瀞吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗嬨𡞵𨩉"],["9740","愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕䤵𨪂煫"],["97a1","𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎"],["9840","𦴦𦵑𦲂𦿞漗𧄉茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍𤎽樌𤉖𡌄炦焳𤏩㶥泟勇𤩏繥姫崯㷳彜𤩝𡟟綤萦"],["98a1","咅𣫺𣌀𠈔坾𠣕𠘙㿥𡾞𪊶瀃𩅛嵰玏糓𨩙𩐠俈翧狍猐𧫴猸猹𥛶獁獈㺩𧬘遬燵𤣲珡臶㻊県㻑沢国琙琞琟㻢㻰㻴㻺瓓㼎㽓畂畭畲疍㽼痈痜㿀癍㿗癴㿜発𤽜熈嘣覀塩䀝睃䀹条䁅㗛瞘䁪䁯属瞾矋売砘点砜䂨砹硇硑硦葈𥔵礳栃礲䄃"],["9940","䄉禑禙辻稆込䅧窑䆲窼艹䇄竏竛䇏両筢筬筻簒簛䉠䉺类粜䊌粸䊔糭输烀𠳏総緔緐緽羮羴犟䎗耠耥笹耮耱联㷌垴炠肷胩䏭脌猪脎脒畠脔䐁㬹腖腙腚"],["99a1","䐓堺腼膄䐥膓䐭膥埯臁臤艔䒏芦艶苊苘苿䒰荗险榊萅烵葤惣蒈䔄蒾蓡蓸蔐蔸蕒䔻蕯蕰藠䕷虲蚒蚲蛯际螋䘆䘗袮裿褤襇覑𧥧訩訸誔誴豑賔賲贜䞘塟跃䟭仮踺嗘坔蹱嗵躰䠷軎転軤軭軲辷迁迊迌逳駄䢭飠鈓䤞鈨鉘鉫銱銮銿"],["9a40","鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑麿鐗匁鐝鐭鐾䥪鑔鑹锭関䦧间阳䧥枠䨤靀䨵鞲韂噔䫤惨颹䬙飱塄餎餙冴餜餷饂饝饢䭰駅䮝騼鬏窃魩鮁鯝鯱鯴䱭鰠㝯𡯂鵉鰺"],["9aa1","黾噐鶓鶽鷀鷼银辶鹻麬麱麽黆铜黢黱黸竈齄𠂔𠊷𠎠椚铃妬𠓗塀铁㞹𠗕𠘕𠙶𡚺块煳𠫂𠫍𠮿呪吆𠯋咞𠯻𠰻𠱓𠱥𠱼惧𠲍噺𠲵𠳝𠳭𠵯𠶲𠷈楕鰯螥𠸄𠸎𠻗𠾐𠼭𠹳尠𠾼帋𡁜𡁏𡁶朞𡁻𡂈𡂖㙇𡂿𡃓𡄯𡄻卤蒭𡋣𡍵𡌶讁𡕷𡘙𡟃𡟇乸炻𡠭𡥪"],["9b40","𡨭𡩅𡰪𡱰𡲬𡻈拃𡻕𡼕熘桕𢁅槩㛈𢉼𢏗𢏺𢜪𢡱𢥏苽𢥧𢦓𢫕覥𢫨辠𢬎鞸𢬿顇骽𢱌"],["9b62","𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞徱晈暿𧩹𣕧𣗳爁𤦺矗𣘚𣜖纇𠍆墵朎"],["9ba1","椘𣪧𧙗𥿢𣸑𣺹𧗾𢂚䣐䪸𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊凒𠘑妟𡺨㮾𣳿𤐄𤓖垈𤙴㦛𤜯𨗨𩧉㝢𢇃譞𨭎駖𤠒𤣻𤨕爉𤫀𠱸奥𤺥𤾆𠝹軚𥀬劏圿煱𥊙𥐙𣽊𤪧喼𥑆𥑮𦭒釔㑳𥔿𧘲𥕞䜘𥕢𥕦𥟇𤤿𥡝偦㓻𣏌惞𥤃䝼𨥈𥪮𥮉𥰆𡶐垡煑澶𦄂𧰒遖𦆲𤾚譢𦐂𦑊"],["9c40","嵛𦯷輶𦒄𡤜諪𤧶𦒈𣿯𦔒䯀𦖿𦚵𢜛鑥𥟡憕娧晉侻嚹𤔡𦛼乪𤤴陖涏𦲽㘘襷𦞙𦡮𦐑𦡞營𦣇筂𩃀𠨑𦤦鄄𦤹穅鷰𦧺騦𦨭㙟𦑩𠀡禃𦨴𦭛崬𣔙菏𦮝䛐𦲤画补𦶮墶"],["9ca1","㜜𢖍𧁋𧇍㱔𧊀𧊅銁𢅺𧊋錰𧋦𤧐氹钟𧑐𠻸蠧裵𢤦𨑳𡞱溸𤨪𡠠㦤㚹尐秣䔿暶𩲭𩢤襃𧟌𧡘囖䃟𡘊㦡𣜯𨃨𡏅熭荦𧧝𩆨婧䲷𧂯𨦫𧧽𧨊𧬋𧵦𤅺筃祾𨀉澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𨀣𦦵𡏭𣈯𨁈嶅𨰰𨂃圕頣𨥉嶫𤦈斾槕叒𤪥𣾁㰑朶𨂐𨃴𨄮𡾡𨅏"],["9d40","𨆉𨆯𨈚𨌆𨌯𨎊㗊𨑨𨚪䣺揦𨥖砈鉕𨦸䏲𨧧䏟𨧨𨭆𨯔姸𨰉輋𨿅𩃬筑𩄐𩄼㷷𩅞𤫊运犏嚋𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛纟𩻸𩼣䲤镇𪊓熢𪋿䶑递𪗋䶜𠲜达嗁"],["9da1","辺𢒰边𤪓䔉繿潖檱仪㓤𨬬𧢝㜺躀𡟵𨀤𨭬𨮙𧨾𦚯㷫𧙕𣲷𥘵𥥖亚𥺁𦉘嚿𠹭踎孭𣺈𤲞揞拐𡟶𡡻攰嘭𥱊吚𥌑㷆𩶘䱽嘢嘞罉𥻘奵𣵀蝰东𠿪𠵉𣚺脗鵞贘瘻鱅癎瞹鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁𠲖廐𥅈𠹶𢱢"],["9e40","𠺢麫絚嗞𡁵抝靭咔賍燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧冧呍唞唓癦踭𦢊疱肶蠄螆裇膶萜𡃁䓬猄𤜆宐茋𦢓噻𢛴𧴯𤆣𧵳𦻐𧊶酰𡇙鈈𣳼𪚩𠺬𠻹牦𡲢䝎𤿂𧿹𠿫䃺"],["9ea1","鱝攟𢶠䣳𤟠𩵼𠿬𠸊恢𧖣𠿭"],["9ead","𦁈𡆇熣纎鵐业丄㕷嬍沲卧㚬㧜卽㚥𤘘墚𤭮舭呋垪𥪕𠥹"],["9ec5","㩒𢑥獴𩺬䴉鯭𣳾𩼰䱛𤾩𩖞𩿞葜𣶶𧊲𦞳𣜠挮紥𣻷𣸬㨪逈勌㹴㙺䗩𠒎癀嫰𠺶硺𧼮墧䂿噼鮋嵴癔𪐴麅䳡痹㟻愙𣃚𤏲"],["9ef5","噝𡊩垧𤥣𩸆刴𧂮㖭汊鵼"],["9f40","籖鬹埞𡝬屓擓𩓐𦌵𧅤蚭𠴨𦴢𤫢𠵱"],["9f4f","凾𡼏嶎霃𡷑麁遌笟鬂峑箣扨挵髿篏鬪籾鬮籂粆鰕篼鬉鼗鰛𤤾齚啳寃俽麘俲剠㸆勑坧偖妷帒韈鶫轜呩鞴饀鞺匬愰"],["9fa1","椬叚鰊鴂䰻陁榀傦畆𡝭駚剳"],["9fae","酙隁酜"],["9fb2","酑𨺗捿𦴣櫊嘑醎畺抅𠏼獏籰𥰡𣳽"],["9fc1","𤤙盖鮝个𠳔莾衂"],["9fc9","届槀僭坺刟巵从氱𠇲伹咜哚劚趂㗾弌㗳"],["9fdb","歒酼龥鮗頮颴骺麨麄煺笔"],["9fe7","毺蠘罸"],["9feb","嘠𪙊蹷齓"],["9ff0","跔蹏鸜踁抂𨍽踨蹵竓𤩷稾磘泪詧瘇"],["a040","𨩚鼦泎蟖痃𪊲硓咢贌狢獱謭猂瓱賫𤪻蘯徺袠䒷"],["a055","𡠻𦸅"],["a058","詾𢔛"],["a05b","惽癧髗鵄鍮鮏蟵"],["a063","蠏賷猬霡鮰㗖犲䰇籑饊𦅙慙䰄麖慽"],["a073","坟慯抦戹拎㩜懢厪𣏵捤栂㗒"],["a0a1","嵗𨯂迚𨸹"],["a0a6","僙𡵆礆匲阸𠼻䁥"],["a0ae","矾"],["a0b0","糂𥼚糚稭聦聣絍甅瓲覔舚朌聢𧒆聛瓰脃眤覉𦟌畓𦻑螩蟎臈螌詉貭譃眫瓸蓚㘵榲趦"],["a0d4","覩瑨涹蟁𤀑瓧㷛煶悤憜㳑煢恷"],["a0e2","罱𨬭牐惩䭾删㰘𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭峁𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌齐麦𦉫"],["a3c0","␀",31,"␡"],["c6a1","①",9,"⑴",9,"ⅰ",9,"丶丿亅亠冂冖冫勹匸卩厶夊宀巛⼳广廴彐彡攴无疒癶辵隶¨ˆヽヾゝゞ〃仝々〆〇ー［］✽ぁ",23],["c740","す",58,"ァアィイ"],["c7a1","ゥ",81,"А",5,"ЁЖ",4],["c840","Л",26,"ёж",25,"⇧↸↹㇏𠃌乚𠂊刂䒑"],["c8a1","龰冈龱𧘇"],["c8cd","￢￤＇＂㈱№℡゛゜⺀⺄⺆⺇⺈⺊⺌⺍⺕⺜⺝⺥⺧⺪⺬⺮⺶⺼⺾⻆⻊⻌⻍⻏⻖⻗⻞⻣"],["c8f5","ʃɐɛɔɵœøŋʊɪ"],["f9fe","￭"],["fa40","𠕇鋛𠗟𣿅蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀𤪱𢔓倩𠍾徤𠎀𠍇滛𠐟偽儁㑺儎顬㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳𡦃宂蝽𠖳𣲙冲冸"],["faa1","鴴凉减凑㳜凓𤪦决凢卂凭菍椾𣜭彻刋刦刼劵剗劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀𠥔𣿬匳卄𠯢泋𡜦栛珕恊㺪㣌𡛨燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠厫厮玧𥝲㽙玜叁叅汉义埾叙㪫𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍"],["fb40","𨦼𢚘啇䳭启琗喆喩嘅𡣗𤀺䕒𤐵暳𡂴嘷曍𣊊暤暭噍噏磱囱鞇叾圀囯园𨭦㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃𡑔𤍣堦𤯵塜墪㕡壠壜𡈼壻寿坃𪅐𤉸鏓㖡够梦㛃湙"],["fba1","𡘾娤啓𡚒蔅姉𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹𦹅媫婣㛦𤦩婷㜈媖瑥嫓𦾡𢕔㶅𡤑㜲𡚸広勐孶斈孼𧨎䀄䡝𠈄寕慠𡨴𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊幵幺𤒼𠳓厦亷廐厨𡝱帉廴𨒂"],["fc40","廹廻㢠廼栾鐛弍𠇁弢㫞䢮𡌺强𦢈𢏐彘𢑱彣鞽𦹮彲鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩怱暅𡡷㥣㷇㘹垐𢞴祱㹀悞悤悳𤦂𤦏𧩓璤僡媠慤萤慂慈𦻒憁凴𠙖憇宪𣾷"],["fca1","𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼撐澊𢸶頔𤂌𥜝擡擥鑻㩦携㩗敍漖𤨨𤨣斅敭敟𣁾斵𤥀䬷旑䃘𡠩无旣忟𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴𡸽𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡㬫槺𣟂杞杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝"],["fd40","𣑯槡樋𨫟楳棃𣗍椁椀㴲㨁𣘼㮀枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵歴𢟍溵𣫛𠎵𡥘㝀吡𣭚毡𣻼毜氷𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀"],["fda1","𣳉㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖浜湼漄𤥿𤂅𦹲蔳𦽴凇沜渝萮𨬡港𣸯瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧炁烌烕烖烟䄄㷨熴熖𤉷焫煅媈煊煮岜𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽爎"],["fe40","鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕牗㹕𣁄栍漽犂猪猫𤠣𨠫䣭𨠄猨献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷𤦍𤧻珷琕椃𤨦琹𠗃㻗瑜𢢭瑠𨺲瑇珤瑶莹瑬㜰瑴鏱樬璂䥓𤪌"],["fea1","𤅟𤩹𨮏孆𨰃𡢞瓈𡦈甎瓩甞𨻙𡩋寗𨺬鎅畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂瘬癑癏癯癶𦏵皐臯㟸𦤑𦤎皡皥皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘𣊬瞯𨥤𨥨𡛁矴砉𡍶𤨒棊碯磇磓隥礮𥗠磗礴碱𧘌辸袄𨬫𦂃𢘜禆褀椂禀𥡗禝𧬹礼禩渪𧄦㺨秆𩄍秔"]]\');\n\n//# sourceURL=webpack://txadmin/./node_modules/iconv-lite/encodings/tables/big5-added.json?')},"./node_modules/iconv-lite/encodings/tables/cp936.json":
/*!*************************************************************!*\
  !*** ./node_modules/iconv-lite/encodings/tables/cp936.json ***!
  \*************************************************************/module=>{"use strict";eval('module.exports = JSON.parse(\'[["0","\\\\u0000",127,"€"],["8140","丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪",5,"乲乴",9,"乿",6,"亇亊"],["8180","亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂",6,"伋伌伒",4,"伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾",4,"佄佅佇",5,"佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢"],["8240","侤侫侭侰",4,"侶",8,"俀俁係俆俇俈俉俋俌俍俒",4,"俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿",11],["8280","個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯",10,"倻倽倿偀偁偂偄偅偆偉偊偋偍偐",4,"偖偗偘偙偛偝",7,"偦",5,"偭",8,"偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎",20,"傤傦傪傫傭",4,"傳",6,"傼"],["8340","傽",17,"僐",5,"僗僘僙僛",10,"僨僩僪僫僯僰僱僲僴僶",4,"僼",9,"儈"],["8380","儉儊儌",5,"儓",13,"儢",28,"兂兇兊兌兎兏児兒兓兗兘兙兛兝",4,"兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦",4,"冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒",5],["8440","凘凙凚凜凞凟凢凣凥",5,"凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄",5,"剋剎剏剒剓剕剗剘"],["8480","剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳",9,"剾劀劃",4,"劉",6,"劑劒劔",6,"劜劤劥劦劧劮劯劰労",9,"勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務",5,"勠勡勢勣勥",10,"勱",7,"勻勼勽匁匂匃匄匇匉匊匋匌匎"],["8540","匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯",9,"匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏"],["8580","厐",4,"厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯",6,"厷厸厹厺厼厽厾叀參",4,"収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝",4,"呣呥呧呩",7,"呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡"],["8640","咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠",4,"哫哬哯哰哱哴",5,"哻哾唀唂唃唄唅唈唊",4,"唒唓唕",5,"唜唝唞唟唡唥唦"],["8680","唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋",4,"啑啒啓啔啗",4,"啝啞啟啠啢啣啨啩啫啯",5,"啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠",6,"喨",8,"喲喴営喸喺喼喿",4,"嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗",4,"嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸",4,"嗿嘂嘃嘄嘅"],["8740","嘆嘇嘊嘋嘍嘐",7,"嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀",11,"噏",4,"噕噖噚噛噝",4],["8780","噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽",7,"嚇",6,"嚐嚑嚒嚔",14,"嚤",10,"嚰",6,"嚸嚹嚺嚻嚽",12,"囋",8,"囕囖囘囙囜団囥",5,"囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國",6],["8840","園",9,"圝圞圠圡圢圤圥圦圧圫圱圲圴",4,"圼圽圿坁坃坄坅坆坈坉坋坒",4,"坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀"],["8880","垁垇垈垉垊垍",4,"垔",6,"垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹",8,"埄",6,"埌埍埐埑埓埖埗埛埜埞埡埢埣埥",7,"埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥",4,"堫",4,"報堲堳場堶",7],["8940","堾",5,"塅",6,"塎塏塐塒塓塕塖塗塙",4,"塟",5,"塦",4,"塭",16,"塿墂墄墆墇墈墊墋墌"],["8980","墍",4,"墔",4,"墛墜墝墠",7,"墪",17,"墽墾墿壀壂壃壄壆",10,"壒壓壔壖",13,"壥",5,"壭壯壱売壴壵壷壸壺",7,"夃夅夆夈",4,"夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻"],["8a40","夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛",4,"奡奣奤奦",12,"奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦"],["8a80","妧妬妭妰妱妳",5,"妺妼妽妿",6,"姇姈姉姌姍姎姏姕姖姙姛姞",4,"姤姦姧姩姪姫姭",11,"姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪",6,"娳娵娷",4,"娽娾娿婁",4,"婇婈婋",9,"婖婗婘婙婛",5],["8b40","婡婣婤婥婦婨婩婫",8,"婸婹婻婼婽婾媀",17,"媓",6,"媜",13,"媫媬"],["8b80","媭",4,"媴媶媷媹",4,"媿嫀嫃",5,"嫊嫋嫍",4,"嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬",4,"嫲",22,"嬊",11,"嬘",25,"嬳嬵嬶嬸",7,"孁",6],["8c40","孈",7,"孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏"],["8c80","寑寔",8,"寠寢寣實寧審",4,"寯寱",6,"寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧",6,"屰屲",6,"屻屼屽屾岀岃",4,"岉岊岋岎岏岒岓岕岝",4,"岤",4],["8d40","岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅",5,"峌",5,"峓",5,"峚",6,"峢峣峧峩峫峬峮峯峱",9,"峼",4],["8d80","崁崄崅崈",5,"崏",4,"崕崗崘崙崚崜崝崟",4,"崥崨崪崫崬崯",4,"崵",7,"崿",7,"嵈嵉嵍",10,"嵙嵚嵜嵞",10,"嵪嵭嵮嵰嵱嵲嵳嵵",12,"嶃",21,"嶚嶛嶜嶞嶟嶠"],["8e40","嶡",21,"嶸",12,"巆",6,"巎",12,"巜巟巠巣巤巪巬巭"],["8e80","巰巵巶巸",4,"巿帀帄帇帉帊帋帍帎帒帓帗帞",7,"帨",4,"帯帰帲",4,"帹帺帾帿幀幁幃幆",5,"幍",6,"幖",4,"幜幝幟幠幣",14,"幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨",4,"庮",4,"庴庺庻庼庽庿",6],["8f40","廆廇廈廋",5,"廔廕廗廘廙廚廜",11,"廩廫",8,"廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤"],["8f80","弨弫弬弮弰弲",6,"弻弽弾弿彁",14,"彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢",5,"復徫徬徯",5,"徶徸徹徺徻徾",4,"忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇"],["9040","怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰",4,"怶",4,"怽怾恀恄",6,"恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀"],["9080","悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽",7,"惇惈惉惌",4,"惒惓惔惖惗惙惛惞惡",4,"惪惱惲惵惷惸惻",4,"愂愃愄愅愇愊愋愌愐",4,"愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬",18,"慀",6],["9140","慇慉態慍慏慐慒慓慔慖",6,"慞慟慠慡慣慤慥慦慩",6,"慱慲慳慴慶慸",18,"憌憍憏",4,"憕"],["9180","憖",6,"憞",8,"憪憫憭",9,"憸",5,"憿懀懁懃",4,"應懌",4,"懓懕",16,"懧",13,"懶",8,"戀",5,"戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸",4,"扂扄扅扆扊"],["9240","扏扐払扖扗扙扚扜",6,"扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋",5,"抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁"],["9280","拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳",5,"挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖",7,"捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙",6,"採掤掦掫掯掱掲掵掶掹掻掽掿揀"],["9340","揁揂揃揅揇揈揊揋揌揑揓揔揕揗",6,"揟揢揤",4,"揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆",4,"損搎搑搒搕",5,"搝搟搢搣搤"],["9380","搥搧搨搩搫搮",5,"搵",4,"搻搼搾摀摂摃摉摋",6,"摓摕摖摗摙",4,"摟",7,"摨摪摫摬摮",9,"摻",6,"撃撆撈",8,"撓撔撗撘撚撛撜撝撟",4,"撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆",6,"擏擑擓擔擕擖擙據"],["9440","擛擜擝擟擠擡擣擥擧",24,"攁",7,"攊",7,"攓",4,"攙",8],["9480","攢攣攤攦",4,"攬攭攰攱攲攳攷攺攼攽敀",4,"敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數",14,"斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱",7,"斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘",7,"旡旣旤旪旫"],["9540","旲旳旴旵旸旹旻",4,"昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷",4,"昽昿晀時晄",6,"晍晎晐晑晘"],["9580","晙晛晜晝晞晠晢晣晥晧晩",4,"晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘",4,"暞",8,"暩",4,"暯",4,"暵暶暷暸暺暻暼暽暿",25,"曚曞",7,"曧曨曪",5,"曱曵曶書曺曻曽朁朂會"],["9640","朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠",5,"朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗",4,"杝杢杣杤杦杧杫杬杮東杴杶"],["9680","杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹",7,"柂柅",9,"柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵",7,"柾栁栂栃栄栆栍栐栒栔栕栘",4,"栞栟栠栢",6,"栫",6,"栴栵栶栺栻栿桇桋桍桏桒桖",5],["9740","桜桝桞桟桪桬",7,"桵桸",8,"梂梄梇",7,"梐梑梒梔梕梖梘",9,"梣梤梥梩梪梫梬梮梱梲梴梶梷梸"],["9780","梹",6,"棁棃",5,"棊棌棎棏棐棑棓棔棖棗棙棛",4,"棡棢棤",9,"棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆",4,"椌椏椑椓",11,"椡椢椣椥",7,"椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃",16,"楕楖楘楙楛楜楟"],["9840","楡楢楤楥楧楨楩楪楬業楯楰楲",4,"楺楻楽楾楿榁榃榅榊榋榌榎",5,"榖榗榙榚榝",9,"榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽"],["9880","榾榿槀槂",7,"構槍槏槑槒槓槕",5,"槜槝槞槡",11,"槮槯槰槱槳",9,"槾樀",9,"樋",11,"標",5,"樠樢",5,"権樫樬樭樮樰樲樳樴樶",6,"樿",4,"橅橆橈",7,"橑",6,"橚"],["9940","橜",4,"橢橣橤橦",10,"橲",6,"橺橻橽橾橿檁檂檃檅",8,"檏檒",4,"檘",7,"檡",5],["9980","檧檨檪檭",114,"欥欦欨",6],["9a40","欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍",11,"歚",7,"歨歩歫",13,"歺歽歾歿殀殅殈"],["9a80","殌殎殏殐殑殔殕殗殘殙殜",4,"殢",7,"殫",7,"殶殸",6,"毀毃毄毆",4,"毌毎毐毑毘毚毜",4,"毢",7,"毬毭毮毰毱毲毴毶毷毸毺毻毼毾",6,"氈",4,"氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋",4,"汑汒汓汖汘"],["9b40","汙汚汢汣汥汦汧汫",4,"汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘"],["9b80","泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟",5,"洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽",4,"涃涄涆涇涊涋涍涏涐涒涖",4,"涜涢涥涬涭涰涱涳涴涶涷涹",5,"淁淂淃淈淉淊"],["9c40","淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽",7,"渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵"],["9c80","渶渷渹渻",7,"湅",7,"湏湐湑湒湕湗湙湚湜湝湞湠",10,"湬湭湯",14,"満溁溂溄溇溈溊",4,"溑",6,"溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪",5],["9d40","滰滱滲滳滵滶滷滸滺",7,"漃漄漅漇漈漊",4,"漐漑漒漖",9,"漡漢漣漥漦漧漨漬漮漰漲漴漵漷",6,"漿潀潁潂"],["9d80","潃潄潅潈潉潊潌潎",9,"潙潚潛潝潟潠潡潣潤潥潧",5,"潯潰潱潳潵潶潷潹潻潽",6,"澅澆澇澊澋澏",12,"澝澞澟澠澢",4,"澨",10,"澴澵澷澸澺",5,"濁濃",5,"濊",6,"濓",10,"濟濢濣濤濥"],["9e40","濦",7,"濰",32,"瀒",7,"瀜",6,"瀤",6],["9e80","瀫",9,"瀶瀷瀸瀺",17,"灍灎灐",13,"灟",11,"灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞",12,"炰炲炴炵炶為炾炿烄烅烆烇烉烋",12,"烚"],["9f40","烜烝烞烠烡烢烣烥烪烮烰",6,"烸烺烻烼烾",10,"焋",4,"焑焒焔焗焛",10,"焧",7,"焲焳焴"],["9f80","焵焷",13,"煆煇煈煉煋煍煏",12,"煝煟",4,"煥煩",4,"煯煰煱煴煵煶煷煹煻煼煾",5,"熅",4,"熋熌熍熎熐熑熒熓熕熖熗熚",4,"熡",6,"熩熪熫熭",5,"熴熶熷熸熺",8,"燄",9,"燏",4],["a040","燖",9,"燡燢燣燤燦燨",5,"燯",9,"燺",11,"爇",19],["a080","爛爜爞",9,"爩爫爭爮爯爲爳爴爺爼爾牀",6,"牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅",4,"犌犎犐犑犓",11,"犠",11,"犮犱犲犳犵犺",6,"狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛"],["a1a1","　、。·ˉˇ¨〃々—～‖…‘’“”〔〕〈",7,"〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃＄¤￠￡‰§№☆★○●◎◇◆□■△▲※→←↑↓〓"],["a2a1","ⅰ",9],["a2b1","⒈",19,"⑴",19,"①",9],["a2e5","㈠",9],["a2f1","Ⅰ",11],["a3a1","！＂＃￥％",88,"￣"],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a6e0","︵︶︹︺︿﹀︽︾﹁﹂﹃﹄"],["a6ee","︻︼︷︸︱"],["a6f4","︳︴"],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a840","ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═",35,"▁",6],["a880","█",7,"▓▔▕▼▽◢◣◤◥☉⊕〒〝〞"],["a8a1","āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ"],["a8bd","ńň"],["a8c0","ɡ"],["a8c5","ㄅ",36],["a940","〡",8,"㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰￢￤"],["a959","℡㈱"],["a95c","‐"],["a960","ー゛゜ヽヾ〆ゝゞ﹉",9,"﹔﹕﹖﹗﹙",8],["a980","﹢",4,"﹨﹩﹪﹫"],["a996","〇"],["a9a4","─",75],["aa40","狜狝狟狢",5,"狪狫狵狶狹狽狾狿猀猂猄",5,"猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀",8],["aa80","獉獊獋獌獎獏獑獓獔獕獖獘",7,"獡",10,"獮獰獱"],["ab40","獲",11,"獿",4,"玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣",5,"玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃",4],["ab80","珋珌珎珒",6,"珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳",4],["ac40","珸",10,"琄琇琈琋琌琍琎琑",8,"琜",5,"琣琤琧琩琫琭琯琱琲琷",4,"琽琾琿瑀瑂",11],["ac80","瑎",6,"瑖瑘瑝瑠",12,"瑮瑯瑱",4,"瑸瑹瑺"],["ad40","瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑",10,"璝璟",7,"璪",15,"璻",12],["ad80","瓈",9,"瓓",8,"瓝瓟瓡瓥瓧",6,"瓰瓱瓲"],["ae40","瓳瓵瓸",6,"甀甁甂甃甅",7,"甎甐甒甔甕甖甗甛甝甞甠",4,"甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘"],["ae80","畝",7,"畧畨畩畫",6,"畳畵當畷畺",4,"疀疁疂疄疅疇"],["af40","疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦",4,"疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇"],["af80","瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄"],["b040","癅",6,"癎",5,"癕癗",4,"癝癟癠癡癢癤",6,"癬癭癮癰",7,"癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛"],["b080","皜",7,"皥",8,"皯皰皳皵",9,"盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥"],["b140","盄盇盉盋盌盓盕盙盚盜盝盞盠",4,"盦",7,"盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎",10,"眛眜眝眞眡眣眤眥眧眪眫"],["b180","眬眮眰",4,"眹眻眽眾眿睂睄睅睆睈",7,"睒",7,"睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳"],["b240","睝睞睟睠睤睧睩睪睭",11,"睺睻睼瞁瞂瞃瞆",5,"瞏瞐瞓",11,"瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶",4],["b280","瞼瞾矀",12,"矎",8,"矘矙矚矝",4,"矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖"],["b340","矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃",5,"砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚"],["b380","硛硜硞",11,"硯",7,"硸硹硺硻硽",6,"场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚"],["b440","碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨",7,"碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚",9],["b480","磤磥磦磧磩磪磫磭",4,"磳磵磶磸磹磻",5,"礂礃礄礆",6,"础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮"],["b540","礍",5,"礔",9,"礟",4,"礥",14,"礵",4,"礽礿祂祃祄祅祇祊",8,"祔祕祘祙祡祣"],["b580","祤祦祩祪祫祬祮祰",6,"祹祻",4,"禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠"],["b640","禓",6,"禛",11,"禨",10,"禴",4,"禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙",5,"秠秡秢秥秨秪"],["b680","秬秮秱",6,"秹秺秼秾秿稁稄稅稇稈稉稊稌稏",4,"稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二"],["b740","稝稟稡稢稤",14,"稴稵稶稸稺稾穀",5,"穇",9,"穒",4,"穘",16],["b780","穩",6,"穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服"],["b840","窣窤窧窩窪窫窮",4,"窴",10,"竀",10,"竌",9,"竗竘竚竛竜竝竡竢竤竧",5,"竮竰竱竲竳"],["b880","竴",4,"竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹"],["b940","笯笰笲笴笵笶笷笹笻笽笿",5,"筆筈筊筍筎筓筕筗筙筜筞筟筡筣",10,"筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆",6,"箎箏"],["b980","箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹",7,"篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈"],["ba40","篅篈築篊篋篍篎篏篐篒篔",4,"篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲",4,"篸篹篺篻篽篿",7,"簈簉簊簍簎簐",5,"簗簘簙"],["ba80","簚",4,"簠",5,"簨簩簫",12,"簹",5,"籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖"],["bb40","籃",9,"籎",36,"籵",5,"籾",9],["bb80","粈粊",6,"粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴",4,"粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕"],["bc40","粿糀糂糃糄糆糉糋糎",6,"糘糚糛糝糞糡",6,"糩",5,"糰",7,"糹糺糼",13,"紋",5],["bc80","紑",14,"紡紣紤紥紦紨紩紪紬紭紮細",6,"肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件"],["bd40","紷",54,"絯",7],["bd80","絸",32,"健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸"],["be40","継",12,"綧",6,"綯",42],["be80","線",32,"尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻"],["bf40","緻",62],["bf80","縺縼",4,"繂",4,"繈",21,"俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀"],["c040","繞",35,"纃",23,"纜纝纞"],["c080","纮纴纻纼绖绤绬绹缊缐缞缷缹缻",6,"罃罆",9,"罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐"],["c140","罖罙罛罜罝罞罠罣",4,"罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂",7,"羋羍羏",4,"羕",4,"羛羜羠羢羣羥羦羨",6,"羱"],["c180","羳",4,"羺羻羾翀翂翃翄翆翇翈翉翋翍翏",4,"翖翗翙",5,"翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿"],["c240","翤翧翨翪翫翬翭翯翲翴",6,"翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫",5,"耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗"],["c280","聙聛",13,"聫",5,"聲",11,"隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫"],["c340","聾肁肂肅肈肊肍",5,"肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇",4,"胏",6,"胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋"],["c380","脌脕脗脙脛脜脝脟",12,"脭脮脰脳脴脵脷脹",4,"脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸"],["c440","腀",5,"腇腉腍腎腏腒腖腗腘腛",4,"腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃",4,"膉膋膌膍膎膐膒",5,"膙膚膞",4,"膤膥"],["c480","膧膩膫",7,"膴",5,"膼膽膾膿臄臅臇臈臉臋臍",6,"摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁"],["c540","臔",14,"臤臥臦臨臩臫臮",4,"臵",5,"臽臿舃與",4,"舎舏舑舓舕",5,"舝舠舤舥舦舧舩舮舲舺舼舽舿"],["c580","艀艁艂艃艅艆艈艊艌艍艎艐",7,"艙艛艜艝艞艠",7,"艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗"],["c640","艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸"],["c680","苺苼",4,"茊茋茍茐茒茓茖茘茙茝",9,"茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐"],["c740","茾茿荁荂荄荅荈荊",4,"荓荕",4,"荝荢荰",6,"荹荺荾",6,"莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡",6,"莬莭莮"],["c780","莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠"],["c840","菮華菳",4,"菺菻菼菾菿萀萂萅萇萈萉萊萐萒",5,"萙萚萛萞",5,"萩",7,"萲",5,"萹萺萻萾",7,"葇葈葉"],["c880","葊",6,"葒",4,"葘葝葞葟葠葢葤",4,"葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁"],["c940","葽",4,"蒃蒄蒅蒆蒊蒍蒏",7,"蒘蒚蒛蒝蒞蒟蒠蒢",12,"蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗"],["c980","蓘",4,"蓞蓡蓢蓤蓧",4,"蓭蓮蓯蓱",10,"蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳"],["ca40","蔃",8,"蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢",8,"蔭",9,"蔾",4,"蕄蕅蕆蕇蕋",10],["ca80","蕗蕘蕚蕛蕜蕝蕟",4,"蕥蕦蕧蕩",8,"蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱"],["cb40","薂薃薆薈",6,"薐",10,"薝",6,"薥薦薧薩薫薬薭薱",5,"薸薺",6,"藂",6,"藊",4,"藑藒"],["cb80","藔藖",5,"藝",6,"藥藦藧藨藪",14,"恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔"],["cc40","藹藺藼藽藾蘀",4,"蘆",10,"蘒蘓蘔蘕蘗",15,"蘨蘪",13,"蘹蘺蘻蘽蘾蘿虀"],["cc80","虁",11,"虒虓處",4,"虛虜虝號虠虡虣",7,"獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃"],["cd40","虭虯虰虲",6,"蚃",6,"蚎",4,"蚔蚖",5,"蚞",4,"蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻",4,"蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜"],["cd80","蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威"],["ce40","蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀",6,"蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚",5,"蝡蝢蝦",7,"蝯蝱蝲蝳蝵"],["ce80","蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎",4,"螔螕螖螘",6,"螠",4,"巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺"],["cf40","螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁",4,"蟇蟈蟉蟌",4,"蟔",6,"蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯",9],["cf80","蟺蟻蟼蟽蟿蠀蠁蠂蠄",5,"蠋",7,"蠔蠗蠘蠙蠚蠜",4,"蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓"],["d040","蠤",13,"蠳",5,"蠺蠻蠽蠾蠿衁衂衃衆",5,"衎",5,"衕衖衘衚",6,"衦衧衪衭衯衱衳衴衵衶衸衹衺"],["d080","衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗",4,"袝",4,"袣袥",5,"小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄"],["d140","袬袮袯袰袲",4,"袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚",4,"裠裡裦裧裩",6,"裲裵裶裷裺裻製裿褀褁褃",5],["d180","褉褋",4,"褑褔",4,"褜",4,"褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶"],["d240","褸",8,"襂襃襅",24,"襠",5,"襧",19,"襼"],["d280","襽襾覀覂覄覅覇",26,"摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐"],["d340","覢",30,"觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴",6],["d380","觻",4,"訁",5,"計",21,"印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉"],["d440","訞",31,"訿",8,"詉",21],["d480","詟",25,"詺",6,"浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧"],["d540","誁",7,"誋",7,"誔",46],["d580","諃",32,"铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政"],["d640","諤",34,"謈",27],["d680","謤謥謧",30,"帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑"],["d740","譆",31,"譧",4,"譭",25],["d780","讇",24,"讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座"],["d840","谸",8,"豂豃豄豅豈豊豋豍",7,"豖豗豘豙豛",5,"豣",6,"豬",6,"豴豵豶豷豻",6,"貃貄貆貇"],["d880","貈貋貍",6,"貕貖貗貙",20,"亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝"],["d940","貮",62],["d980","賭",32,"佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼"],["da40","贎",14,"贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸",8,"趂趃趆趇趈趉趌",4,"趒趓趕",9,"趠趡"],["da80","趢趤",12,"趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺"],["db40","跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾",6,"踆踇踈踋踍踎踐踑踒踓踕",7,"踠踡踤",4,"踫踭踰踲踳踴踶踷踸踻踼踾"],["db80","踿蹃蹅蹆蹌",4,"蹓",5,"蹚",11,"蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝"],["dc40","蹳蹵蹷",4,"蹽蹾躀躂躃躄躆躈",6,"躑躒躓躕",6,"躝躟",11,"躭躮躰躱躳",6,"躻",7],["dc80","軃",10,"軏",21,"堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥"],["dd40","軥",62],["dd80","輤",32,"荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺"],["de40","轅",32,"轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆"],["de80","迉",4,"迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖"],["df40","這逜連逤逥逧",5,"逰",4,"逷逹逺逽逿遀遃遅遆遈",4,"過達違遖遙遚遜",5,"遤遦遧適遪遫遬遯",4,"遶",6,"遾邁"],["df80","還邅邆邇邉邊邌",4,"邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼"],["e040","郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅",19,"鄚鄛鄜"],["e080","鄝鄟鄠鄡鄤",10,"鄰鄲",6,"鄺",8,"酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼"],["e140","酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀",4,"醆醈醊醎醏醓",6,"醜",5,"醤",5,"醫醬醰醱醲醳醶醷醸醹醻"],["e180","醼",10,"釈釋釐釒",9,"針",8,"帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺"],["e240","釦",62],["e280","鈥",32,"狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧",5,"饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂"],["e340","鉆",45,"鉵",16],["e380","銆",7,"銏",24,"恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾"],["e440","銨",5,"銯",24,"鋉",31],["e480","鋩",32,"洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑"],["e540","錊",51,"錿",10],["e580","鍊",31,"鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣"],["e640","鍬",34,"鎐",27],["e680","鎬",29,"鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩"],["e740","鏎",7,"鏗",54],["e780","鐎",32,"纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡",6,"缪缫缬缭缯",4,"缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬"],["e840","鐯",14,"鐿",43,"鑬鑭鑮鑯"],["e880","鑰",20,"钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹"],["e940","锧锳锽镃镈镋镕镚镠镮镴镵長",7,"門",42],["e980","閫",32,"椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋"],["ea40","闌",27,"闬闿阇阓阘阛阞阠阣",6,"阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗"],["ea80","陘陙陚陜陝陞陠陣陥陦陫陭",4,"陳陸",12,"隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰"],["eb40","隌階隑隒隓隕隖隚際隝",9,"隨",7,"隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖",9,"雡",6,"雫"],["eb80","雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗",4,"霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻"],["ec40","霡",8,"霫霬霮霯霱霳",4,"霺霻霼霽霿",18,"靔靕靗靘靚靜靝靟靣靤靦靧靨靪",7],["ec80","靲靵靷",4,"靽",7,"鞆",4,"鞌鞎鞏鞐鞓鞕鞖鞗鞙",4,"臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐"],["ed40","鞞鞟鞡鞢鞤",6,"鞬鞮鞰鞱鞳鞵",46],["ed80","韤韥韨韮",4,"韴韷",23,"怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨"],["ee40","頏",62],["ee80","顎",32,"睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶",4,"钼钽钿铄铈",6,"铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪"],["ef40","顯",5,"颋颎颒颕颙颣風",37,"飏飐飔飖飗飛飜飝飠",4],["ef80","飥飦飩",30,"铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒",4,"锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤",8,"镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔"],["f040","餈",4,"餎餏餑",28,"餯",26],["f080","饊",9,"饖",12,"饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨",4,"鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦",6,"鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙"],["f140","馌馎馚",10,"馦馧馩",47],["f180","駙",32,"瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃"],["f240","駺",62],["f280","騹",32,"颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒"],["f340","驚",17,"驲骃骉骍骎骔骕骙骦骩",6,"骲骳骴骵骹骻骽骾骿髃髄髆",4,"髍髎髏髐髒體髕髖髗髙髚髛髜"],["f380","髝髞髠髢髣髤髥髧髨髩髪髬髮髰",8,"髺髼",6,"鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋"],["f440","鬇鬉",5,"鬐鬑鬒鬔",10,"鬠鬡鬢鬤",10,"鬰鬱鬳",7,"鬽鬾鬿魀魆魊魋魌魎魐魒魓魕",5],["f480","魛",32,"簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤"],["f540","魼",62],["f580","鮻",32,"酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜"],["f640","鯜",62],["f680","鰛",32,"觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅",5,"龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞",5,"鲥",4,"鲫鲭鲮鲰",7,"鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋"],["f740","鰼",62],["f780","鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾",4,"鳈鳉鳑鳒鳚鳛鳠鳡鳌",4,"鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"],["f840","鳣",62],["f880","鴢",32],["f940","鵃",62],["f980","鶂",32],["fa40","鶣",62],["fa80","鷢",32],["fb40","鸃",27,"鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴",9,"麀"],["fb80","麁麃麄麅麆麉麊麌",5,"麔",8,"麞麠",5,"麧麨麩麪"],["fc40","麫",8,"麵麶麷麹麺麼麿",4,"黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰",8,"黺黽黿",6],["fc80","鼆",4,"鼌鼏鼑鼒鼔鼕鼖鼘鼚",5,"鼡鼣",8,"鼭鼮鼰鼱"],["fd40","鼲",4,"鼸鼺鼼鼿",4,"齅",10,"齒",38],["fd80","齹",5,"龁龂龍",11,"龜龝龞龡",4,"郎凉秊裏隣"],["fe40","兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩"]]\');\n\n//# sourceURL=webpack://txadmin/./node_modules/iconv-lite/encodings/tables/cp936.json?')},"./node_modules/iconv-lite/encodings/tables/cp949.json":
/*!*************************************************************!*\
  !*** ./node_modules/iconv-lite/encodings/tables/cp949.json ***!
  \*************************************************************/module=>{"use strict";eval('module.exports = JSON.parse(\'[["0","\\\\u0000",127],["8141","갂갃갅갆갋",4,"갘갞갟갡갢갣갥",6,"갮갲갳갴"],["8161","갵갶갷갺갻갽갾갿걁",9,"걌걎",5,"걕"],["8181","걖걗걙걚걛걝",18,"걲걳걵걶걹걻",4,"겂겇겈겍겎겏겑겒겓겕",6,"겞겢",5,"겫겭겮겱",6,"겺겾겿곀곂곃곅곆곇곉곊곋곍",7,"곖곘",7,"곢곣곥곦곩곫곭곮곲곴곷",4,"곾곿괁괂괃괅괇",4,"괎괐괒괓"],["8241","괔괕괖괗괙괚괛괝괞괟괡",7,"괪괫괮",5],["8261","괶괷괹괺괻괽",6,"굆굈굊",5,"굑굒굓굕굖굗"],["8281","굙",7,"굢굤",7,"굮굯굱굲굷굸굹굺굾궀궃",4,"궊궋궍궎궏궑",10,"궞",5,"궥",17,"궸",7,"귂귃귅귆귇귉",6,"귒귔",7,"귝귞귟귡귢귣귥",18],["8341","귺귻귽귾긂",5,"긊긌긎",5,"긕",7],["8361","긝",18,"긲긳긵긶긹긻긼"],["8381","긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗",4,"깞깢깣깤깦깧깪깫깭깮깯깱",6,"깺깾",5,"꺆",5,"꺍",46,"꺿껁껂껃껅",6,"껎껒",5,"껚껛껝",8],["8441","껦껧껩껪껬껮",5,"껵껶껷껹껺껻껽",8],["8461","꼆꼉꼊꼋꼌꼎꼏꼑",18],["8481","꼤",7,"꼮꼯꼱꼳꼵",6,"꼾꽀꽄꽅꽆꽇꽊",5,"꽑",10,"꽞",5,"꽦",18,"꽺",5,"꾁꾂꾃꾅꾆꾇꾉",6,"꾒꾓꾔꾖",5,"꾝",26,"꾺꾻꾽꾾"],["8541","꾿꿁",5,"꿊꿌꿏",4,"꿕",6,"꿝",4],["8561","꿢",5,"꿪",5,"꿲꿳꿵꿶꿷꿹",6,"뀂뀃"],["8581","뀅",6,"뀍뀎뀏뀑뀒뀓뀕",6,"뀞",9,"뀩",26,"끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞",29,"끾끿낁낂낃낅",6,"낎낐낒",5,"낛낝낞낣낤"],["8641","낥낦낧낪낰낲낶낷낹낺낻낽",6,"냆냊",5,"냒"],["8661","냓냕냖냗냙",6,"냡냢냣냤냦",10],["8681","냱",22,"넊넍넎넏넑넔넕넖넗넚넞",4,"넦넧넩넪넫넭",6,"넶넺",5,"녂녃녅녆녇녉",6,"녒녓녖녗녙녚녛녝녞녟녡",22,"녺녻녽녾녿놁놃",4,"놊놌놎놏놐놑놕놖놗놙놚놛놝"],["8741","놞",9,"놩",15],["8761","놹",18,"뇍뇎뇏뇑뇒뇓뇕"],["8781","뇖",5,"뇞뇠",7,"뇪뇫뇭뇮뇯뇱",7,"뇺뇼뇾",5,"눆눇눉눊눍",6,"눖눘눚",5,"눡",18,"눵",6,"눽",26,"뉙뉚뉛뉝뉞뉟뉡",6,"뉪",4],["8841","뉯",4,"뉶",5,"뉽",6,"늆늇늈늊",4],["8861","늏늒늓늕늖늗늛",4,"늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷"],["8881","늸",15,"닊닋닍닎닏닑닓",4,"닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉",6,"댒댖",5,"댝",54,"덗덙덚덝덠덡덢덣"],["8941","덦덨덪덬덭덯덲덳덵덶덷덹",6,"뎂뎆",5,"뎍"],["8961","뎎뎏뎑뎒뎓뎕",10,"뎢",5,"뎩뎪뎫뎭"],["8981","뎮",21,"돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩",18,"돽",18,"됑",6,"됙됚됛됝됞됟됡",6,"됪됬",7,"됵",15],["8a41","둅",10,"둒둓둕둖둗둙",6,"둢둤둦"],["8a61","둧",4,"둭",18,"뒁뒂"],["8a81","뒃",4,"뒉",19,"뒞",5,"뒥뒦뒧뒩뒪뒫뒭",7,"뒶뒸뒺",5,"듁듂듃듅듆듇듉",6,"듑듒듓듔듖",5,"듞듟듡듢듥듧",4,"듮듰듲",5,"듹",26,"딖딗딙딚딝"],["8b41","딞",5,"딦딫",4,"딲딳딵딶딷딹",6,"땂땆"],["8b61","땇땈땉땊땎땏땑땒땓땕",6,"땞땢",8],["8b81","땫",52,"떢떣떥떦떧떩떬떭떮떯떲떶",4,"떾떿뗁뗂뗃뗅",6,"뗎뗒",5,"뗙",18,"뗭",18],["8c41","똀",15,"똒똓똕똖똗똙",4],["8c61","똞",6,"똦",5,"똭",6,"똵",5],["8c81","똻",12,"뙉",26,"뙥뙦뙧뙩",50,"뚞뚟뚡뚢뚣뚥",5,"뚭뚮뚯뚰뚲",16],["8d41","뛃",16,"뛕",8],["8d61","뛞",17,"뛱뛲뛳뛵뛶뛷뛹뛺"],["8d81","뛻",4,"뜂뜃뜄뜆",33,"뜪뜫뜭뜮뜱",6,"뜺뜼",7,"띅띆띇띉띊띋띍",6,"띖",9,"띡띢띣띥띦띧띩",6,"띲띴띶",5,"띾띿랁랂랃랅",6,"랎랓랔랕랚랛랝랞"],["8e41","랟랡",6,"랪랮",5,"랶랷랹",8],["8e61","럂",4,"럈럊",19],["8e81","럞",13,"럮럯럱럲럳럵",6,"럾렂",4,"렊렋렍렎렏렑",6,"렚렜렞",5,"렦렧렩렪렫렭",6,"렶렺",5,"롁롂롃롅",11,"롒롔",7,"롞롟롡롢롣롥",6,"롮롰롲",5,"롹롺롻롽",7],["8f41","뢅",7,"뢎",17],["8f61","뢠",7,"뢩",6,"뢱뢲뢳뢵뢶뢷뢹",4],["8f81","뢾뢿룂룄룆",5,"룍룎룏룑룒룓룕",7,"룞룠룢",5,"룪룫룭룮룯룱",6,"룺룼룾",5,"뤅",18,"뤙",6,"뤡",26,"뤾뤿륁륂륃륅",6,"륍륎륐륒",5],["9041","륚륛륝륞륟륡",6,"륪륬륮",5,"륶륷륹륺륻륽"],["9061","륾",5,"릆릈릋릌릏",15],["9081","릟",12,"릮릯릱릲릳릵",6,"릾맀맂",5,"맊맋맍맓",4,"맚맜맟맠맢맦맧맩맪맫맭",6,"맶맻",4,"먂",5,"먉",11,"먖",33,"먺먻먽먾먿멁멃멄멅멆"],["9141","멇멊멌멏멐멑멒멖멗멙멚멛멝",6,"멦멪",5],["9161","멲멳멵멶멷멹",9,"몆몈몉몊몋몍",5],["9181","몓",20,"몪몭몮몯몱몳",4,"몺몼몾",5,"뫅뫆뫇뫉",14,"뫚",33,"뫽뫾뫿묁묂묃묅",7,"묎묐묒",5,"묙묚묛묝묞묟묡",6],["9241","묨묪묬",7,"묷묹묺묿",4,"뭆뭈뭊뭋뭌뭎뭑뭒"],["9261","뭓뭕뭖뭗뭙",7,"뭢뭤",7,"뭭",4],["9281","뭲",21,"뮉뮊뮋뮍뮎뮏뮑",18,"뮥뮦뮧뮩뮪뮫뮭",6,"뮵뮶뮸",7,"믁믂믃믅믆믇믉",6,"믑믒믔",35,"믺믻믽믾밁"],["9341","밃",4,"밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵"],["9361","밶밷밹",6,"뱂뱆뱇뱈뱊뱋뱎뱏뱑",8],["9381","뱚뱛뱜뱞",37,"벆벇벉벊벍벏",4,"벖벘벛",4,"벢벣벥벦벩",6,"벲벶",5,"벾벿볁볂볃볅",7,"볎볒볓볔볖볗볙볚볛볝",22,"볷볹볺볻볽"],["9441","볾",5,"봆봈봊",5,"봑봒봓봕",8],["9461","봞",5,"봥",6,"봭",12],["9481","봺",5,"뵁",6,"뵊뵋뵍뵎뵏뵑",6,"뵚",9,"뵥뵦뵧뵩",22,"붂붃붅붆붋",4,"붒붔붖붗붘붛붝",6,"붥",10,"붱",6,"붹",24],["9541","뷒뷓뷖뷗뷙뷚뷛뷝",11,"뷪",5,"뷱"],["9561","뷲뷳뷵뷶뷷뷹",6,"븁븂븄븆",5,"븎븏븑븒븓"],["9581","븕",6,"븞븠",35,"빆빇빉빊빋빍빏",4,"빖빘빜빝빞빟빢빣빥빦빧빩빫",4,"빲빶",4,"빾빿뺁뺂뺃뺅",6,"뺎뺒",5,"뺚",13,"뺩",14],["9641","뺸",23,"뻒뻓"],["9661","뻕뻖뻙",6,"뻡뻢뻦",5,"뻭",8],["9681","뻶",10,"뼂",5,"뼊",13,"뼚뼞",33,"뽂뽃뽅뽆뽇뽉",6,"뽒뽓뽔뽖",44],["9741","뾃",16,"뾕",8],["9761","뾞",17,"뾱",7],["9781","뾹",11,"뿆",5,"뿎뿏뿑뿒뿓뿕",6,"뿝뿞뿠뿢",89,"쀽쀾쀿"],["9841","쁀",16,"쁒",5,"쁙쁚쁛"],["9861","쁝쁞쁟쁡",6,"쁪",15],["9881","쁺",21,"삒삓삕삖삗삙",6,"삢삤삦",5,"삮삱삲삷",4,"삾샂샃샄샆샇샊샋샍샎샏샑",6,"샚샞",5,"샦샧샩샪샫샭",6,"샶샸샺",5,"섁섂섃섅섆섇섉",6,"섑섒섓섔섖",5,"섡섢섥섨섩섪섫섮"],["9941","섲섳섴섵섷섺섻섽섾섿셁",6,"셊셎",5,"셖셗"],["9961","셙셚셛셝",6,"셦셪",5,"셱셲셳셵셶셷셹셺셻"],["9981","셼",8,"솆",5,"솏솑솒솓솕솗",4,"솞솠솢솣솤솦솧솪솫솭솮솯솱",11,"솾",5,"쇅쇆쇇쇉쇊쇋쇍",6,"쇕쇖쇙",6,"쇡쇢쇣쇥쇦쇧쇩",6,"쇲쇴",7,"쇾쇿숁숂숃숅",6,"숎숐숒",5,"숚숛숝숞숡숢숣"],["9a41","숤숥숦숧숪숬숮숰숳숵",16],["9a61","쉆쉇쉉",6,"쉒쉓쉕쉖쉗쉙",6,"쉡쉢쉣쉤쉦"],["9a81","쉧",4,"쉮쉯쉱쉲쉳쉵",6,"쉾슀슂",5,"슊",5,"슑",6,"슙슚슜슞",5,"슦슧슩슪슫슮",5,"슶슸슺",33,"싞싟싡싢싥",5,"싮싰싲싳싴싵싷싺싽싾싿쌁",6,"쌊쌋쌎쌏"],["9b41","쌐쌑쌒쌖쌗쌙쌚쌛쌝",6,"쌦쌧쌪",8],["9b61","쌳",17,"썆",7],["9b81","썎",25,"썪썫썭썮썯썱썳",4,"썺썻썾",5,"쎅쎆쎇쎉쎊쎋쎍",50,"쏁",22,"쏚"],["9c41","쏛쏝쏞쏡쏣",4,"쏪쏫쏬쏮",5,"쏶쏷쏹",5],["9c61","쏿",8,"쐉",6,"쐑",9],["9c81","쐛",8,"쐥",6,"쐭쐮쐯쐱쐲쐳쐵",6,"쐾",9,"쑉",26,"쑦쑧쑩쑪쑫쑭",6,"쑶쑷쑸쑺",5,"쒁",18,"쒕",6,"쒝",12],["9d41","쒪",13,"쒹쒺쒻쒽",8],["9d61","쓆",25],["9d81","쓠",8,"쓪",5,"쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂",9,"씍씎씏씑씒씓씕",6,"씝",10,"씪씫씭씮씯씱",6,"씺씼씾",5,"앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩",6,"앲앶",5,"앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔"],["9e41","얖얙얚얛얝얞얟얡",7,"얪",9,"얶"],["9e61","얷얺얿",4,"엋엍엏엒엓엕엖엗엙",6,"엢엤엦엧"],["9e81","엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑",6,"옚옝",6,"옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉",6,"왒왖",5,"왞왟왡",10,"왭왮왰왲",5,"왺왻왽왾왿욁",6,"욊욌욎",5,"욖욗욙욚욛욝",6,"욦"],["9f41","욨욪",5,"욲욳욵욶욷욻",4,"웂웄웆",5,"웎"],["9f61","웏웑웒웓웕",6,"웞웟웢",5,"웪웫웭웮웯웱웲"],["9f81","웳",4,"웺웻웼웾",5,"윆윇윉윊윋윍",6,"윖윘윚",5,"윢윣윥윦윧윩",6,"윲윴윶윸윹윺윻윾윿읁읂읃읅",4,"읋읎읐읙읚읛읝읞읟읡",6,"읩읪읬",7,"읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛",4,"잢잧",4,"잮잯잱잲잳잵잶잷"],["a041","잸잹잺잻잾쟂",5,"쟊쟋쟍쟏쟑",6,"쟙쟚쟛쟜"],["a061","쟞",5,"쟥쟦쟧쟩쟪쟫쟭",13],["a081","쟻",4,"젂젃젅젆젇젉젋",4,"젒젔젗",4,"젞젟젡젢젣젥",6,"젮젰젲",5,"젹젺젻젽젾젿졁",6,"졊졋졎",5,"졕",26,"졲졳졵졶졷졹졻",4,"좂좄좈좉좊좎",5,"좕",7,"좞좠좢좣좤"],["a141","좥좦좧좩",18,"좾좿죀죁"],["a161","죂죃죅죆죇죉죊죋죍",6,"죖죘죚",5,"죢죣죥"],["a181","죦",14,"죶",5,"죾죿줁줂줃줇",4,"줎　、。·‥…¨〃­―∥＼∼‘’“”〔〕〈",9,"±×÷≠≤≥∞∴°′″℃Å￠￡￥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨￢"],["a241","줐줒",5,"줙",18],["a261","줭",6,"줵",18],["a281","쥈",7,"쥒쥓쥕쥖쥗쥙",6,"쥢쥤",7,"쥭쥮쥯⇒⇔∀∃´～ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®"],["a341","쥱쥲쥳쥵",6,"쥽",10,"즊즋즍즎즏"],["a361","즑",6,"즚즜즞",16],["a381","즯",16,"짂짃짅짆짉짋",4,"짒짔짗짘짛！",58,"￦］",32,"￣"],["a441","짞짟짡짣짥짦짨짩짪짫짮짲",5,"짺짻짽짾짿쨁쨂쨃쨄"],["a461","쨅쨆쨇쨊쨎",5,"쨕쨖쨗쨙",12],["a481","쨦쨧쨨쨪",28,"ㄱ",93],["a541","쩇",4,"쩎쩏쩑쩒쩓쩕",6,"쩞쩢",5,"쩩쩪"],["a561","쩫",17,"쩾",5,"쪅쪆"],["a581","쪇",16,"쪙",14,"ⅰ",9],["a5b0","Ⅰ",9],["a5c1","Α",16,"Σ",6],["a5e1","α",16,"σ",6],["a641","쪨",19,"쪾쪿쫁쫂쫃쫅"],["a661","쫆",5,"쫎쫐쫒쫔쫕쫖쫗쫚",5,"쫡",6],["a681","쫨쫩쫪쫫쫭",6,"쫵",18,"쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃",7],["a741","쬋",4,"쬑쬒쬓쬕쬖쬗쬙",6,"쬢",7],["a761","쬪",22,"쭂쭃쭄"],["a781","쭅쭆쭇쭊쭋쭍쭎쭏쭑",6,"쭚쭛쭜쭞",5,"쭥",7,"㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙",9,"㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰",9,"㎀",4,"㎺",5,"㎐",4,"Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆"],["a841","쭭",10,"쭺",14],["a861","쮉",18,"쮝",6],["a881","쮤",19,"쮹",11,"ÆÐªĦ"],["a8a6","Ĳ"],["a8a8","ĿŁØŒºÞŦŊ"],["a8b1","㉠",27,"ⓐ",25,"①",14,"½⅓⅔¼¾⅛⅜⅝⅞"],["a941","쯅",14,"쯕",10],["a961","쯠쯡쯢쯣쯥쯦쯨쯪",18],["a981","쯽",14,"찎찏찑찒찓찕",6,"찞찟찠찣찤æđðħıĳĸŀłøœßþŧŋŉ㈀",27,"⒜",25,"⑴",14,"¹²³⁴ⁿ₁₂₃₄"],["aa41","찥찦찪찫찭찯찱",6,"찺찿",4,"챆챇챉챊챋챍챎"],["aa61","챏",4,"챖챚",5,"챡챢챣챥챧챩",6,"챱챲"],["aa81","챳챴챶",29,"ぁ",82],["ab41","첔첕첖첗첚첛첝첞첟첡",6,"첪첮",5,"첶첷첹"],["ab61","첺첻첽",6,"쳆쳈쳊",5,"쳑쳒쳓쳕",5],["ab81","쳛",8,"쳥",6,"쳭쳮쳯쳱",12,"ァ",85],["ac41","쳾쳿촀촂",5,"촊촋촍촎촏촑",6,"촚촜촞촟촠"],["ac61","촡촢촣촥촦촧촩촪촫촭",11,"촺",4],["ac81","촿",28,"쵝쵞쵟А",5,"ЁЖ",25],["acd1","а",5,"ёж",25],["ad41","쵡쵢쵣쵥",6,"쵮쵰쵲",5,"쵹",7],["ad61","춁",6,"춉",10,"춖춗춙춚춛춝춞춟"],["ad81","춠춡춢춣춦춨춪",5,"춱",18,"췅"],["ae41","췆",5,"췍췎췏췑",16],["ae61","췢",5,"췩췪췫췭췮췯췱",6,"췺췼췾",4],["ae81","츃츅츆츇츉츊츋츍",6,"츕츖츗츘츚",5,"츢츣츥츦츧츩츪츫"],["af41","츬츭츮츯츲츴츶",19],["af61","칊",13,"칚칛칝칞칢",5,"칪칬"],["af81","칮",5,"칶칷칹칺칻칽",6,"캆캈캊",5,"캒캓캕캖캗캙"],["b041","캚",5,"캢캦",5,"캮",12],["b061","캻",5,"컂",19],["b081","컖",13,"컦컧컩컪컭",6,"컶컺",5,"가각간갇갈갉갊감",7,"같",4,"갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆"],["b141","켂켃켅켆켇켉",6,"켒켔켖",5,"켝켞켟켡켢켣"],["b161","켥",6,"켮켲",5,"켹",11],["b181","콅",14,"콖콗콙콚콛콝",6,"콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸"],["b241","콭콮콯콲콳콵콶콷콹",6,"쾁쾂쾃쾄쾆",5,"쾍"],["b261","쾎",18,"쾢",5,"쾩"],["b281","쾪",5,"쾱",18,"쿅",6,"깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙"],["b341","쿌",19,"쿢쿣쿥쿦쿧쿩"],["b361","쿪",5,"쿲쿴쿶",5,"쿽쿾쿿퀁퀂퀃퀅",5],["b381","퀋",5,"퀒",5,"퀙",19,"끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫",4,"낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝"],["b441","퀮",5,"퀶퀷퀹퀺퀻퀽",6,"큆큈큊",5],["b461","큑큒큓큕큖큗큙",6,"큡",10,"큮큯"],["b481","큱큲큳큵",6,"큾큿킀킂",18,"뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫",4,"닳담답닷",4,"닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥"],["b541","킕",14,"킦킧킩킪킫킭",5],["b561","킳킶킸킺",5,"탂탃탅탆탇탊",5,"탒탖",4],["b581","탛탞탟탡탢탣탥",6,"탮탲",5,"탹",11,"덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸"],["b641","턅",7,"턎",17],["b661","턠",15,"턲턳턵턶턷턹턻턼턽턾"],["b681","턿텂텆",5,"텎텏텑텒텓텕",6,"텞텠텢",5,"텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗"],["b741","텮",13,"텽",6,"톅톆톇톉톊"],["b761","톋",20,"톢톣톥톦톧"],["b781","톩",6,"톲톴톶톷톸톹톻톽톾톿퇁",14,"래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩"],["b841","퇐",7,"퇙",17],["b861","퇫",8,"퇵퇶퇷퇹",13],["b881","툈툊",5,"툑",24,"륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많",4,"맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼"],["b941","툪툫툮툯툱툲툳툵",6,"툾퉀퉂",5,"퉉퉊퉋퉌"],["b961","퉍",14,"퉝",6,"퉥퉦퉧퉨"],["b981","퉩",22,"튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바",4,"받",4,"밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗"],["ba41","튍튎튏튒튓튔튖",5,"튝튞튟튡튢튣튥",6,"튭"],["ba61","튮튯튰튲",5,"튺튻튽튾틁틃",4,"틊틌",5],["ba81","틒틓틕틖틗틙틚틛틝",6,"틦",9,"틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤"],["bb41","틻",4,"팂팄팆",5,"팏팑팒팓팕팗",4,"팞팢팣"],["bb61","팤팦팧팪팫팭팮팯팱",6,"팺팾",5,"퍆퍇퍈퍉"],["bb81","퍊",31,"빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤"],["bc41","퍪",17,"퍾퍿펁펂펃펅펆펇"],["bc61","펈펉펊펋펎펒",5,"펚펛펝펞펟펡",6,"펪펬펮"],["bc81","펯",4,"펵펶펷펹펺펻펽",6,"폆폇폊",5,"폑",5,"샥샨샬샴샵샷샹섀섄섈섐섕서",4,"섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭"],["bd41","폗폙",7,"폢폤",7,"폮폯폱폲폳폵폶폷"],["bd61","폸폹폺폻폾퐀퐂",5,"퐉",13],["bd81","퐗",5,"퐞",25,"숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰"],["be41","퐸",7,"푁푂푃푅",14],["be61","푔",7,"푝푞푟푡푢푣푥",7,"푮푰푱푲"],["be81","푳",4,"푺푻푽푾풁풃",4,"풊풌풎",5,"풕",8,"쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄",6,"엌엎"],["bf41","풞",10,"풪",14],["bf61","풹",18,"퓍퓎퓏퓑퓒퓓퓕"],["bf81","퓖",5,"퓝퓞퓠",7,"퓩퓪퓫퓭퓮퓯퓱",6,"퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염",5,"옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨"],["c041","퓾",5,"픅픆픇픉픊픋픍",6,"픖픘",5],["c061","픞",25],["c081","픸픹픺픻픾픿핁핂핃핅",6,"핎핐핒",5,"핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응",7,"읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊"],["c141","핤핦핧핪핬핮",5,"핶핷핹핺핻핽",6,"햆햊햋"],["c161","햌햍햎햏햑",19,"햦햧"],["c181","햨",31,"점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓"],["c241","헊헋헍헎헏헑헓",4,"헚헜헞",5,"헦헧헩헪헫헭헮"],["c261","헯",4,"헶헸헺",5,"혂혃혅혆혇혉",6,"혒"],["c281","혖",5,"혝혞혟혡혢혣혥",7,"혮",9,"혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻"],["c341","혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝",4],["c361","홢",4,"홨홪",5,"홲홳홵",11],["c381","횁횂횄횆",5,"횎횏횑횒횓횕",7,"횞횠횢",5,"횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층"],["c441","횫횭횮횯횱",7,"횺횼",7,"훆훇훉훊훋"],["c461","훍훎훏훐훒훓훕훖훘훚",5,"훡훢훣훥훦훧훩",4],["c481","훮훯훱훲훳훴훶",5,"훾훿휁휂휃휅",11,"휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼"],["c541","휕휖휗휚휛휝휞휟휡",6,"휪휬휮",5,"휶휷휹"],["c561","휺휻휽",6,"흅흆흈흊",5,"흒흓흕흚",4],["c581","흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵",6,"흾흿힀힂",5,"힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜"],["c641","힍힎힏힑",6,"힚힜힞",5],["c6a1","퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁"],["c7a1","퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠"],["c8a1","혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝"],["caa1","伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕"],["cba1","匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢"],["cca1","瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械"],["cda1","棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜"],["cea1","科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾"],["cfa1","區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴"],["d0a1","鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣"],["d1a1","朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩",5,"那樂",4,"諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉"],["d2a1","納臘蠟衲囊娘廊",4,"乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧",5,"駑魯",10,"濃籠聾膿農惱牢磊腦賂雷尿壘",7,"嫩訥杻紐勒",5,"能菱陵尼泥匿溺多茶"],["d3a1","丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃"],["d4a1","棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅"],["d5a1","蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣"],["d6a1","煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼"],["d7a1","遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬"],["d8a1","立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅"],["d9a1","蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文"],["daa1","汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑"],["dba1","發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖"],["dca1","碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦"],["dda1","孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥"],["dea1","脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索"],["dfa1","傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署"],["e0a1","胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬"],["e1a1","聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁"],["e2a1","戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧"],["e3a1","嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁"],["e4a1","沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額"],["e5a1","櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬"],["e6a1","旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒"],["e7a1","簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳"],["e8a1","烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療"],["e9a1","窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓"],["eaa1","運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜"],["eba1","濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼"],["eca1","議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄"],["eda1","立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長"],["eea1","障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱"],["efa1","煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖"],["f0a1","靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫"],["f1a1","踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只"],["f2a1","咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯"],["f3a1","鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策"],["f4a1","責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢"],["f5a1","椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃"],["f6a1","贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託"],["f7a1","鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑"],["f8a1","阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃"],["f9a1","品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航"],["faa1","行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型"],["fba1","形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵"],["fca1","禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆"],["fda1","爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰"]]\');\n\n//# sourceURL=webpack://txadmin/./node_modules/iconv-lite/encodings/tables/cp949.json?')},"./node_modules/iconv-lite/encodings/tables/cp950.json":
/*!*************************************************************!*\
  !*** ./node_modules/iconv-lite/encodings/tables/cp950.json ***!
  \*************************************************************/module=>{"use strict";eval('module.exports = JSON.parse(\'[["0","\\\\u0000",127],["a140","　，、。．‧；：？！︰…‥﹐﹑﹒·﹔﹕﹖﹗｜–︱—︳╴︴﹏（）︵︶｛｝︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚"],["a1a1","﹛﹜﹝﹞‘’“”〝〞‵′＃＆＊※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯￣＿ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡＋－×÷±√＜＞＝≦≧≠∞≒≡﹢",4,"～∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣／"],["a240","＼∕﹨＄￥〒￠￡％＠℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁",7,"▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭"],["a2a1","╮╰╯═╞╪╡◢◣◥◤╱╲╳０",9,"Ⅰ",9,"〡",8,"十卄卅Ａ",25,"ａ",21],["a340","ｗｘｙｚΑ",16,"Σ",6,"α",16,"σ",6,"ㄅ",10],["a3a1","ㄐ",25,"˙ˉˊˇˋ"],["a3e1","€"],["a440","一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才"],["a4a1","丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙"],["a540","世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外"],["a5a1","央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全"],["a640","共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年"],["a6a1","式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣"],["a740","作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍"],["a7a1","均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠"],["a840","杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒"],["a8a1","芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵"],["a940","咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居"],["a9a1","屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊"],["aa40","昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠"],["aaa1","炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附"],["ab40","陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品"],["aba1","哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷"],["ac40","拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗"],["aca1","活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄"],["ad40","耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥"],["ada1","迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪"],["ae40","哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙"],["aea1","恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓"],["af40","浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷"],["afa1","砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃"],["b040","虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡"],["b0a1","陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀"],["b140","娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽"],["b1a1","情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺"],["b240","毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶"],["b2a1","瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼"],["b340","莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途"],["b3a1","部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠"],["b440","婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍"],["b4a1","插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋"],["b540","溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘"],["b5a1","窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁"],["b640","詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑"],["b6a1","間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼"],["b740","媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業"],["b7a1","楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督"],["b840","睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫"],["b8a1","腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊"],["b940","辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴"],["b9a1","飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇"],["ba40","愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢"],["baa1","滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬"],["bb40","罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤"],["bba1","說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜"],["bc40","劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂"],["bca1","慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃"],["bd40","瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯"],["bda1","翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞"],["be40","輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉"],["bea1","鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡"],["bf40","濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊"],["bfa1","縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚"],["c040","錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇"],["c0a1","嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬"],["c140","瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪"],["c1a1","薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁"],["c240","駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘"],["c2a1","癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦"],["c340","鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸"],["c3a1","獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類"],["c440","願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼"],["c4a1","纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴"],["c540","護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬"],["c5a1","禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒"],["c640","讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲"],["c940","乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕"],["c9a1","氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋"],["ca40","汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘"],["caa1","吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇"],["cb40","杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓"],["cba1","芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢"],["cc40","坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋"],["cca1","怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲"],["cd40","泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺"],["cda1","矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏"],["ce40","哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛"],["cea1","峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺"],["cf40","柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂"],["cfa1","洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀"],["d040","穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪"],["d0a1","苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱"],["d140","唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧"],["d1a1","恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤"],["d240","毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸"],["d2a1","牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐"],["d340","笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢"],["d3a1","荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐"],["d440","酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅"],["d4a1","唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏"],["d540","崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟"],["d5a1","捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉"],["d640","淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏"],["d6a1","痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟"],["d740","耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷"],["d7a1","蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪"],["d840","釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷"],["d8a1","堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔"],["d940","惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒"],["d9a1","晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞"],["da40","湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖"],["daa1","琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥"],["db40","罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳"],["dba1","菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺"],["dc40","軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈"],["dca1","隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆"],["dd40","媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤"],["dda1","搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼"],["de40","毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓"],["dea1","煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓"],["df40","稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯"],["dfa1","腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤"],["e040","觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿"],["e0a1","遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠"],["e140","凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠"],["e1a1","寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉"],["e240","榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊"],["e2a1","漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓"],["e340","禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞"],["e3a1","耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻"],["e440","裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍"],["e4a1","銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘"],["e540","噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉"],["e5a1","憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒"],["e640","澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"],["e6a1","獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟"],["e740","膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢"],["e7a1","蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧"],["e840","踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓"],["e8a1","銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮"],["e940","噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺"],["e9a1","憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸"],["ea40","澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙"],["eaa1","瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘"],["eb40","蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠"],["eba1","諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌"],["ec40","錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕"],["eca1","魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎"],["ed40","檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶"],["eda1","瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞"],["ee40","蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞"],["eea1","謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜"],["ef40","鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰"],["efa1","鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶"],["f040","璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒"],["f0a1","臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧"],["f140","蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪"],["f1a1","鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰"],["f240","徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛"],["f2a1","礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕"],["f340","譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦"],["f3a1","鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲"],["f440","嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩"],["f4a1","禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿"],["f540","鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛"],["f5a1","鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥"],["f640","蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺"],["f6a1","騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚"],["f740","糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊"],["f7a1","驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾"],["f840","讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏"],["f8a1","齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚"],["f940","纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊"],["f9a1","龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓"]]\');\n\n//# sourceURL=webpack://txadmin/./node_modules/iconv-lite/encodings/tables/cp950.json?')},"./node_modules/iconv-lite/encodings/tables/eucjp.json":
/*!*************************************************************!*\
  !*** ./node_modules/iconv-lite/encodings/tables/eucjp.json ***!
  \*************************************************************/module=>{"use strict";eval('module.exports = JSON.parse(\'[["0","\\\\u0000",127],["8ea1","｡",62],["a1a1","　、。，．・：；？！゛゜´｀¨＾￣＿ヽヾゝゞ〃仝々〆〇ー―‐／＼～∥｜…‥‘’“”（）〔〕［］｛｝〈",9,"＋－±×÷＝≠＜＞≦≧∞∴♂♀°′″℃￥＄￠￡％＃＆＊＠§☆★○●◎◇"],["a2a1","◆□■△▲▽▼※〒→←↑↓〓"],["a2ba","∈∋⊆⊇⊂⊃∪∩"],["a2ca","∧∨￢⇒⇔∀∃"],["a2dc","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["a2f2","Å‰♯♭♪†‡¶"],["a2fe","◯"],["a3b0","０",9],["a3c1","Ａ",25],["a3e1","ａ",25],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a8a1","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["ada1","①",19,"Ⅰ",9],["adc0","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["addf","㍻〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["b0a1","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["b1a1","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応"],["b2a1","押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["b3a1","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱"],["b4a1","粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["b5a1","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京"],["b6a1","供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["b7a1","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲"],["b8a1","検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["b9a1","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込"],["baa1","此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["bba1","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時"],["bca1","次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["bda1","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償"],["bea1","勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["bfa1","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾"],["c0a1","澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["c1a1","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎"],["c2a1","臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["c3a1","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵"],["c4a1","帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["c5a1","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到"],["c6a1","董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["c7a1","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦"],["c8a1","函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["c9a1","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服"],["caa1","福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["cba1","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満"],["cca1","漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["cda1","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃"],["cea1","痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["cfa1","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["d0a1","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["d1a1","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨"],["d2a1","辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["d3a1","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉"],["d4a1","圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["d5a1","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓"],["d6a1","屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["d7a1","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚"],["d8a1","悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["d9a1","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼"],["daa1","據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["dba1","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍"],["dca1","棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["dda1","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾"],["dea1","沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["dfa1","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼"],["e0a1","燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e1a1","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰"],["e2a1","癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e3a1","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐"],["e4a1","筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e5a1","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺"],["e6a1","罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e7a1","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙"],["e8a1","茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e9a1","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙"],["eaa1","蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["eba1","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫"],["eca1","譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["eda1","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸"],["eea1","遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["efa1","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞"],["f0a1","陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["f1a1","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷"],["f2a1","髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["f3a1","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠"],["f4a1","堯槇遙瑤凜熙"],["f9a1","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德"],["faa1","忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["fba1","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚"],["fca1","釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["fcf1","ⅰ",9,"￢￤＇＂"],["8fa2af","˘ˇ¸˙˝¯˛˚～΄΅"],["8fa2c2","¡¦¿"],["8fa2eb","ºª©®™¤№"],["8fa6e1","ΆΈΉΊΪ"],["8fa6e7","Ό"],["8fa6e9","ΎΫ"],["8fa6ec","Ώ"],["8fa6f1","άέήίϊΐόςύϋΰώ"],["8fa7c2","Ђ",10,"ЎЏ"],["8fa7f2","ђ",10,"ўџ"],["8fa9a1","ÆĐ"],["8fa9a4","Ħ"],["8fa9a6","Ĳ"],["8fa9a8","ŁĿ"],["8fa9ab","ŊØŒ"],["8fa9af","ŦÞ"],["8fa9c1","æđðħıĳĸłŀŉŋøœßŧþ"],["8faaa1","ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ"],["8faaba","ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ"],["8faba1","áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ"],["8fabbd","ġĥíìïîǐ"],["8fabc5","īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż"],["8fb0a1","丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄"],["8fb1a1","侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐"],["8fb2a1","傒傓傔傖傛傜傞",4,"傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂"],["8fb3a1","凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋"],["8fb4a1","匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿"],["8fb5a1","咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒"],["8fb6a1","嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍",5,"嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤",4,"囱囫园"],["8fb7a1","囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭",4,"坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡"],["8fb8a1","堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭"],["8fb9a1","奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿"],["8fbaa1","嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖",4,"寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩"],["8fbba1","屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤"],["8fbca1","巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪",4,"幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧"],["8fbda1","彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐",4,"忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷"],["8fbea1","悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐",4,"愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥"],["8fbfa1","懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵"],["8fc0a1","捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿"],["8fc1a1","擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝"],["8fc2a1","昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝"],["8fc3a1","杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮",4,"桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏"],["8fc4a1","棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲"],["8fc5a1","樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽"],["8fc6a1","歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖"],["8fc7a1","泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞"],["8fc8a1","湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊"],["8fc9a1","濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔",4,"炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃",4,"焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠"],["8fcaa1","煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻"],["8fcba1","狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽"],["8fcca1","珿琀琁琄琇琊琑琚琛琤琦琨",9,"琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆"],["8fcda1","甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹",5,"疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹"],["8fcea1","瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢",6,"皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢"],["8fcfa1","睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳"],["8fd0a1","碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞"],["8fd1a1","秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰"],["8fd2a1","笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙",5],["8fd3a1","籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝"],["8fd4a1","綞綦綧綪綳綶綷綹緂",4,"緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭"],["8fd5a1","罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮"],["8fd6a1","胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆"],["8fd7a1","艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸"],["8fd8a1","荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓"],["8fd9a1","蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏",4,"蕖蕙蕜",6,"蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼"],["8fdaa1","藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠",4,"虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣"],["8fdba1","蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃",6,"螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵"],["8fdca1","蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊",4,"裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺"],["8fdda1","襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔",4,"觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳"],["8fdea1","誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂",4,"譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆"],["8fdfa1","貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢"],["8fe0a1","踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁"],["8fe1a1","轃轇轏轑",4,"轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃"],["8fe2a1","郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿"],["8fe3a1","釂釃釅釓釔釗釙釚釞釤釥釩釪釬",5,"釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵",4,"鉻鉼鉽鉿銈銉銊銍銎銒銗"],["8fe4a1","銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿",4,"鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶"],["8fe5a1","鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉",4,"鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹"],["8fe6a1","镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂"],["8fe7a1","霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦"],["8fe8a1","頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱",4,"餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵"],["8fe9a1","馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿",4],["8feaa1","鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪",4,"魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸"],["8feba1","鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦",4,"鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻"],["8feca1","鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵"],["8feda1","黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃",4,"齓齕齖齗齘齚齝齞齨齩齭",4,"齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥"]]\');\n\n//# sourceURL=webpack://txadmin/./node_modules/iconv-lite/encodings/tables/eucjp.json?')},"./node_modules/iconv-lite/encodings/tables/gb18030-ranges.json":
/*!**********************************************************************!*\
  !*** ./node_modules/iconv-lite/encodings/tables/gb18030-ranges.json ***!
  \**********************************************************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"uChars":[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],"gbChars":[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189000]}\');\n\n//# sourceURL=webpack://txadmin/./node_modules/iconv-lite/encodings/tables/gb18030-ranges.json?')},"./node_modules/iconv-lite/encodings/tables/gbk-added.json":
/*!*****************************************************************!*\
  !*** ./node_modules/iconv-lite/encodings/tables/gbk-added.json ***!
  \*****************************************************************/module=>{"use strict";eval('module.exports = JSON.parse(\'[["a140","",62],["a180","",32],["a240","",62],["a280","",32],["a2ab","",5],["a2e3","€"],["a2ef",""],["a2fd",""],["a340","",62],["a380","",31,"　"],["a440","",62],["a480","",32],["a4f4","",10],["a540","",62],["a580","",32],["a5f7","",7],["a640","",62],["a680","",32],["a6b9","",7],["a6d9","",6],["a6ec",""],["a6f3",""],["a6f6","",8],["a740","",62],["a780","",32],["a7c2","",14],["a7f2","",12],["a896","",10],["a8bc","ḿ"],["a8bf","ǹ"],["a8c1",""],["a8ea","",20],["a958",""],["a95b",""],["a95d",""],["a989","〾⿰",11],["a997","",12],["a9f0","",14],["aaa1","",93],["aba1","",93],["aca1","",93],["ada1","",93],["aea1","",93],["afa1","",93],["d7fa","",4],["f8a1","",93],["f9a1","",93],["faa1","",93],["fba1","",93],["fca1","",93],["fda1","",93],["fe50","⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌"],["fe80","䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓",6,"䶮",93],["8135f437",""]]\');\n\n//# sourceURL=webpack://txadmin/./node_modules/iconv-lite/encodings/tables/gbk-added.json?')},"./node_modules/iconv-lite/encodings/tables/shiftjis.json":
/*!****************************************************************!*\
  !*** ./node_modules/iconv-lite/encodings/tables/shiftjis.json ***!
  \****************************************************************/module=>{"use strict";eval('module.exports = JSON.parse(\'[["0","\\\\u0000",128],["a1","｡",62],["8140","　、。，．・：；？！゛゜´｀¨＾￣＿ヽヾゝゞ〃仝々〆〇ー―‐／＼～∥｜…‥‘’“”（）〔〕［］｛｝〈",9,"＋－±×"],["8180","÷＝≠＜＞≦≧∞∴♂♀°′″℃￥＄￠￡％＃＆＊＠§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓"],["81b8","∈∋⊆⊇⊂⊃∪∩"],["81c8","∧∨￢⇒⇔∀∃"],["81da","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["81f0","Å‰♯♭♪†‡¶"],["81fc","◯"],["824f","０",9],["8260","Ａ",25],["8281","ａ",25],["829f","ぁ",82],["8340","ァ",62],["8380","ム",22],["839f","Α",16,"Σ",6],["83bf","α",16,"σ",6],["8440","А",5,"ЁЖ",25],["8470","а",5,"ёж",7],["8480","о",17],["849f","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["8740","①",19,"Ⅰ",9],["875f","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["877e","㍻"],["8780","〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["889f","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["8940","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円"],["8980","園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["8a40","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫"],["8a80","橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["8b40","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救"],["8b80","朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["8c40","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨"],["8c80","劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["8d40","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降"],["8d80","項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["8e40","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止"],["8e80","死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["8f40","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳"],["8f80","準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["9040","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨"],["9080","逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["9140","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻"],["9180","操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["9240","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄"],["9280","逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["9340","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬"],["9380","凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["9440","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅"],["9480","楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["9540","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷"],["9580","斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["9640","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆"],["9680","摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["9740","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲"],["9780","沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["9840","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["989f","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["9940","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭"],["9980","凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["9a40","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸"],["9a80","噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["9b40","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀"],["9b80","它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["9c40","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠"],["9c80","怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["9d40","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫"],["9d80","捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["9e40","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎"],["9e80","梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["9f40","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯"],["9f80","麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["e040","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝"],["e080","烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e140","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿"],["e180","痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e240","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰"],["e280","窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e340","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷"],["e380","縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e440","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤"],["e480","艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e540","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬"],["e580","蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["e640","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧"],["e680","諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["e740","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜"],["e780","轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["e840","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙"],["e880","閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["e940","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃"],["e980","騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["ea40","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯"],["ea80","黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"],["ed40","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏"],["ed80","塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["ee40","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙"],["ee80","蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["eeef","ⅰ",9,"￢￤＇＂"],["f040","",62],["f080","",124],["f140","",62],["f180","",124],["f240","",62],["f280","",124],["f340","",62],["f380","",124],["f440","",62],["f480","",124],["f540","",62],["f580","",124],["f640","",62],["f680","",124],["f740","",62],["f780","",124],["f840","",62],["f880","",124],["f940",""],["fa40","ⅰ",9,"Ⅰ",9,"￢￤＇＂㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊"],["fa80","兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯"],["fb40","涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神"],["fb80","祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙"],["fc40","髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"]]\');\n\n//# sourceURL=webpack://txadmin/./node_modules/iconv-lite/encodings/tables/shiftjis.json?')},"./node_modules/mime-db/db.json":
/*!**************************************!*\
  !*** ./node_modules/mime-db/db.json ***!
  \**************************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"application/1d-interleaved-parityfec":{"source":"iana"},"application/3gpdash-qoe-report+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/3gpp-ims+xml":{"source":"iana","compressible":true},"application/3gpphal+json":{"source":"iana","compressible":true},"application/3gpphalforms+json":{"source":"iana","compressible":true},"application/a2l":{"source":"iana"},"application/ace+cbor":{"source":"iana"},"application/activemessage":{"source":"iana"},"application/activity+json":{"source":"iana","compressible":true},"application/alto-costmap+json":{"source":"iana","compressible":true},"application/alto-costmapfilter+json":{"source":"iana","compressible":true},"application/alto-directory+json":{"source":"iana","compressible":true},"application/alto-endpointcost+json":{"source":"iana","compressible":true},"application/alto-endpointcostparams+json":{"source":"iana","compressible":true},"application/alto-endpointprop+json":{"source":"iana","compressible":true},"application/alto-endpointpropparams+json":{"source":"iana","compressible":true},"application/alto-error+json":{"source":"iana","compressible":true},"application/alto-networkmap+json":{"source":"iana","compressible":true},"application/alto-networkmapfilter+json":{"source":"iana","compressible":true},"application/alto-updatestreamcontrol+json":{"source":"iana","compressible":true},"application/alto-updatestreamparams+json":{"source":"iana","compressible":true},"application/aml":{"source":"iana"},"application/andrew-inset":{"source":"iana","extensions":["ez"]},"application/applefile":{"source":"iana"},"application/applixware":{"source":"apache","extensions":["aw"]},"application/at+jwt":{"source":"iana"},"application/atf":{"source":"iana"},"application/atfx":{"source":"iana"},"application/atom+xml":{"source":"iana","compressible":true,"extensions":["atom"]},"application/atomcat+xml":{"source":"iana","compressible":true,"extensions":["atomcat"]},"application/atomdeleted+xml":{"source":"iana","compressible":true,"extensions":["atomdeleted"]},"application/atomicmail":{"source":"iana"},"application/atomsvc+xml":{"source":"iana","compressible":true,"extensions":["atomsvc"]},"application/atsc-dwd+xml":{"source":"iana","compressible":true,"extensions":["dwd"]},"application/atsc-dynamic-event-message":{"source":"iana"},"application/atsc-held+xml":{"source":"iana","compressible":true,"extensions":["held"]},"application/atsc-rdt+json":{"source":"iana","compressible":true},"application/atsc-rsat+xml":{"source":"iana","compressible":true,"extensions":["rsat"]},"application/atxml":{"source":"iana"},"application/auth-policy+xml":{"source":"iana","compressible":true},"application/bacnet-xdd+zip":{"source":"iana","compressible":false},"application/batch-smtp":{"source":"iana"},"application/bdoc":{"compressible":false,"extensions":["bdoc"]},"application/beep+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/calendar+json":{"source":"iana","compressible":true},"application/calendar+xml":{"source":"iana","compressible":true,"extensions":["xcs"]},"application/call-completion":{"source":"iana"},"application/cals-1840":{"source":"iana"},"application/captive+json":{"source":"iana","compressible":true},"application/cbor":{"source":"iana"},"application/cbor-seq":{"source":"iana"},"application/cccex":{"source":"iana"},"application/ccmp+xml":{"source":"iana","compressible":true},"application/ccxml+xml":{"source":"iana","compressible":true,"extensions":["ccxml"]},"application/cdfx+xml":{"source":"iana","compressible":true,"extensions":["cdfx"]},"application/cdmi-capability":{"source":"iana","extensions":["cdmia"]},"application/cdmi-container":{"source":"iana","extensions":["cdmic"]},"application/cdmi-domain":{"source":"iana","extensions":["cdmid"]},"application/cdmi-object":{"source":"iana","extensions":["cdmio"]},"application/cdmi-queue":{"source":"iana","extensions":["cdmiq"]},"application/cdni":{"source":"iana"},"application/cea":{"source":"iana"},"application/cea-2018+xml":{"source":"iana","compressible":true},"application/cellml+xml":{"source":"iana","compressible":true},"application/cfw":{"source":"iana"},"application/city+json":{"source":"iana","compressible":true},"application/clr":{"source":"iana"},"application/clue+xml":{"source":"iana","compressible":true},"application/clue_info+xml":{"source":"iana","compressible":true},"application/cms":{"source":"iana"},"application/cnrp+xml":{"source":"iana","compressible":true},"application/coap-group+json":{"source":"iana","compressible":true},"application/coap-payload":{"source":"iana"},"application/commonground":{"source":"iana"},"application/conference-info+xml":{"source":"iana","compressible":true},"application/cose":{"source":"iana"},"application/cose-key":{"source":"iana"},"application/cose-key-set":{"source":"iana"},"application/cpl+xml":{"source":"iana","compressible":true,"extensions":["cpl"]},"application/csrattrs":{"source":"iana"},"application/csta+xml":{"source":"iana","compressible":true},"application/cstadata+xml":{"source":"iana","compressible":true},"application/csvm+json":{"source":"iana","compressible":true},"application/cu-seeme":{"source":"apache","extensions":["cu"]},"application/cwt":{"source":"iana"},"application/cybercash":{"source":"iana"},"application/dart":{"compressible":true},"application/dash+xml":{"source":"iana","compressible":true,"extensions":["mpd"]},"application/dash-patch+xml":{"source":"iana","compressible":true,"extensions":["mpp"]},"application/dashdelta":{"source":"iana"},"application/davmount+xml":{"source":"iana","compressible":true,"extensions":["davmount"]},"application/dca-rft":{"source":"iana"},"application/dcd":{"source":"iana"},"application/dec-dx":{"source":"iana"},"application/dialog-info+xml":{"source":"iana","compressible":true},"application/dicom":{"source":"iana"},"application/dicom+json":{"source":"iana","compressible":true},"application/dicom+xml":{"source":"iana","compressible":true},"application/dii":{"source":"iana"},"application/dit":{"source":"iana"},"application/dns":{"source":"iana"},"application/dns+json":{"source":"iana","compressible":true},"application/dns-message":{"source":"iana"},"application/docbook+xml":{"source":"apache","compressible":true,"extensions":["dbk"]},"application/dots+cbor":{"source":"iana"},"application/dskpp+xml":{"source":"iana","compressible":true},"application/dssc+der":{"source":"iana","extensions":["dssc"]},"application/dssc+xml":{"source":"iana","compressible":true,"extensions":["xdssc"]},"application/dvcs":{"source":"iana"},"application/ecmascript":{"source":"iana","compressible":true,"extensions":["es","ecma"]},"application/edi-consent":{"source":"iana"},"application/edi-x12":{"source":"iana","compressible":false},"application/edifact":{"source":"iana","compressible":false},"application/efi":{"source":"iana"},"application/elm+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/elm+xml":{"source":"iana","compressible":true},"application/emergencycalldata.cap+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/emergencycalldata.comment+xml":{"source":"iana","compressible":true},"application/emergencycalldata.control+xml":{"source":"iana","compressible":true},"application/emergencycalldata.deviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.ecall.msd":{"source":"iana"},"application/emergencycalldata.providerinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.serviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.subscriberinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.veds+xml":{"source":"iana","compressible":true},"application/emma+xml":{"source":"iana","compressible":true,"extensions":["emma"]},"application/emotionml+xml":{"source":"iana","compressible":true,"extensions":["emotionml"]},"application/encaprtp":{"source":"iana"},"application/epp+xml":{"source":"iana","compressible":true},"application/epub+zip":{"source":"iana","compressible":false,"extensions":["epub"]},"application/eshop":{"source":"iana"},"application/exi":{"source":"iana","extensions":["exi"]},"application/expect-ct-report+json":{"source":"iana","compressible":true},"application/express":{"source":"iana","extensions":["exp"]},"application/fastinfoset":{"source":"iana"},"application/fastsoap":{"source":"iana"},"application/fdt+xml":{"source":"iana","compressible":true,"extensions":["fdt"]},"application/fhir+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/fhir+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/fido.trusted-apps+json":{"compressible":true},"application/fits":{"source":"iana"},"application/flexfec":{"source":"iana"},"application/font-sfnt":{"source":"iana"},"application/font-tdpfr":{"source":"iana","extensions":["pfr"]},"application/font-woff":{"source":"iana","compressible":false},"application/framework-attributes+xml":{"source":"iana","compressible":true},"application/geo+json":{"source":"iana","compressible":true,"extensions":["geojson"]},"application/geo+json-seq":{"source":"iana"},"application/geopackage+sqlite3":{"source":"iana"},"application/geoxacml+xml":{"source":"iana","compressible":true},"application/gltf-buffer":{"source":"iana"},"application/gml+xml":{"source":"iana","compressible":true,"extensions":["gml"]},"application/gpx+xml":{"source":"apache","compressible":true,"extensions":["gpx"]},"application/gxf":{"source":"apache","extensions":["gxf"]},"application/gzip":{"source":"iana","compressible":false,"extensions":["gz"]},"application/h224":{"source":"iana"},"application/held+xml":{"source":"iana","compressible":true},"application/hjson":{"extensions":["hjson"]},"application/http":{"source":"iana"},"application/hyperstudio":{"source":"iana","extensions":["stk"]},"application/ibe-key-request+xml":{"source":"iana","compressible":true},"application/ibe-pkg-reply+xml":{"source":"iana","compressible":true},"application/ibe-pp-data":{"source":"iana"},"application/iges":{"source":"iana"},"application/im-iscomposing+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/index":{"source":"iana"},"application/index.cmd":{"source":"iana"},"application/index.obj":{"source":"iana"},"application/index.response":{"source":"iana"},"application/index.vnd":{"source":"iana"},"application/inkml+xml":{"source":"iana","compressible":true,"extensions":["ink","inkml"]},"application/iotp":{"source":"iana"},"application/ipfix":{"source":"iana","extensions":["ipfix"]},"application/ipp":{"source":"iana"},"application/isup":{"source":"iana"},"application/its+xml":{"source":"iana","compressible":true,"extensions":["its"]},"application/java-archive":{"source":"apache","compressible":false,"extensions":["jar","war","ear"]},"application/java-serialized-object":{"source":"apache","compressible":false,"extensions":["ser"]},"application/java-vm":{"source":"apache","compressible":false,"extensions":["class"]},"application/javascript":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["js","mjs"]},"application/jf2feed+json":{"source":"iana","compressible":true},"application/jose":{"source":"iana"},"application/jose+json":{"source":"iana","compressible":true},"application/jrd+json":{"source":"iana","compressible":true},"application/jscalendar+json":{"source":"iana","compressible":true},"application/json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["json","map"]},"application/json-patch+json":{"source":"iana","compressible":true},"application/json-seq":{"source":"iana"},"application/json5":{"extensions":["json5"]},"application/jsonml+json":{"source":"apache","compressible":true,"extensions":["jsonml"]},"application/jwk+json":{"source":"iana","compressible":true},"application/jwk-set+json":{"source":"iana","compressible":true},"application/jwt":{"source":"iana"},"application/kpml-request+xml":{"source":"iana","compressible":true},"application/kpml-response+xml":{"source":"iana","compressible":true},"application/ld+json":{"source":"iana","compressible":true,"extensions":["jsonld"]},"application/lgr+xml":{"source":"iana","compressible":true,"extensions":["lgr"]},"application/link-format":{"source":"iana"},"application/load-control+xml":{"source":"iana","compressible":true},"application/lost+xml":{"source":"iana","compressible":true,"extensions":["lostxml"]},"application/lostsync+xml":{"source":"iana","compressible":true},"application/lpf+zip":{"source":"iana","compressible":false},"application/lxf":{"source":"iana"},"application/mac-binhex40":{"source":"iana","extensions":["hqx"]},"application/mac-compactpro":{"source":"apache","extensions":["cpt"]},"application/macwriteii":{"source":"iana"},"application/mads+xml":{"source":"iana","compressible":true,"extensions":["mads"]},"application/manifest+json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["webmanifest"]},"application/marc":{"source":"iana","extensions":["mrc"]},"application/marcxml+xml":{"source":"iana","compressible":true,"extensions":["mrcx"]},"application/mathematica":{"source":"iana","extensions":["ma","nb","mb"]},"application/mathml+xml":{"source":"iana","compressible":true,"extensions":["mathml"]},"application/mathml-content+xml":{"source":"iana","compressible":true},"application/mathml-presentation+xml":{"source":"iana","compressible":true},"application/mbms-associated-procedure-description+xml":{"source":"iana","compressible":true},"application/mbms-deregister+xml":{"source":"iana","compressible":true},"application/mbms-envelope+xml":{"source":"iana","compressible":true},"application/mbms-msk+xml":{"source":"iana","compressible":true},"application/mbms-msk-response+xml":{"source":"iana","compressible":true},"application/mbms-protection-description+xml":{"source":"iana","compressible":true},"application/mbms-reception-report+xml":{"source":"iana","compressible":true},"application/mbms-register+xml":{"source":"iana","compressible":true},"application/mbms-register-response+xml":{"source":"iana","compressible":true},"application/mbms-schedule+xml":{"source":"iana","compressible":true},"application/mbms-user-service-description+xml":{"source":"iana","compressible":true},"application/mbox":{"source":"iana","extensions":["mbox"]},"application/media-policy-dataset+xml":{"source":"iana","compressible":true,"extensions":["mpf"]},"application/media_control+xml":{"source":"iana","compressible":true},"application/mediaservercontrol+xml":{"source":"iana","compressible":true,"extensions":["mscml"]},"application/merge-patch+json":{"source":"iana","compressible":true},"application/metalink+xml":{"source":"apache","compressible":true,"extensions":["metalink"]},"application/metalink4+xml":{"source":"iana","compressible":true,"extensions":["meta4"]},"application/mets+xml":{"source":"iana","compressible":true,"extensions":["mets"]},"application/mf4":{"source":"iana"},"application/mikey":{"source":"iana"},"application/mipc":{"source":"iana"},"application/missing-blocks+cbor-seq":{"source":"iana"},"application/mmt-aei+xml":{"source":"iana","compressible":true,"extensions":["maei"]},"application/mmt-usd+xml":{"source":"iana","compressible":true,"extensions":["musd"]},"application/mods+xml":{"source":"iana","compressible":true,"extensions":["mods"]},"application/moss-keys":{"source":"iana"},"application/moss-signature":{"source":"iana"},"application/mosskey-data":{"source":"iana"},"application/mosskey-request":{"source":"iana"},"application/mp21":{"source":"iana","extensions":["m21","mp21"]},"application/mp4":{"source":"iana","extensions":["mp4s","m4p"]},"application/mpeg4-generic":{"source":"iana"},"application/mpeg4-iod":{"source":"iana"},"application/mpeg4-iod-xmt":{"source":"iana"},"application/mrb-consumer+xml":{"source":"iana","compressible":true},"application/mrb-publish+xml":{"source":"iana","compressible":true},"application/msc-ivr+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msc-mixer+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msword":{"source":"iana","compressible":false,"extensions":["doc","dot"]},"application/mud+json":{"source":"iana","compressible":true},"application/multipart-core":{"source":"iana"},"application/mxf":{"source":"iana","extensions":["mxf"]},"application/n-quads":{"source":"iana","extensions":["nq"]},"application/n-triples":{"source":"iana","extensions":["nt"]},"application/nasdata":{"source":"iana"},"application/news-checkgroups":{"source":"iana","charset":"US-ASCII"},"application/news-groupinfo":{"source":"iana","charset":"US-ASCII"},"application/news-transmission":{"source":"iana"},"application/nlsml+xml":{"source":"iana","compressible":true},"application/node":{"source":"iana","extensions":["cjs"]},"application/nss":{"source":"iana"},"application/oauth-authz-req+jwt":{"source":"iana"},"application/oblivious-dns-message":{"source":"iana"},"application/ocsp-request":{"source":"iana"},"application/ocsp-response":{"source":"iana"},"application/octet-stream":{"source":"iana","compressible":false,"extensions":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{"source":"iana","extensions":["oda"]},"application/odm+xml":{"source":"iana","compressible":true},"application/odx":{"source":"iana"},"application/oebps-package+xml":{"source":"iana","compressible":true,"extensions":["opf"]},"application/ogg":{"source":"iana","compressible":false,"extensions":["ogx"]},"application/omdoc+xml":{"source":"apache","compressible":true,"extensions":["omdoc"]},"application/onenote":{"source":"apache","extensions":["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{"source":"iana","compressible":true},"application/oscore":{"source":"iana"},"application/oxps":{"source":"iana","extensions":["oxps"]},"application/p21":{"source":"iana"},"application/p21+zip":{"source":"iana","compressible":false},"application/p2p-overlay+xml":{"source":"iana","compressible":true,"extensions":["relo"]},"application/parityfec":{"source":"iana"},"application/passport":{"source":"iana"},"application/patch-ops-error+xml":{"source":"iana","compressible":true,"extensions":["xer"]},"application/pdf":{"source":"iana","compressible":false,"extensions":["pdf"]},"application/pdx":{"source":"iana"},"application/pem-certificate-chain":{"source":"iana"},"application/pgp-encrypted":{"source":"iana","compressible":false,"extensions":["pgp"]},"application/pgp-keys":{"source":"iana","extensions":["asc"]},"application/pgp-signature":{"source":"iana","extensions":["asc","sig"]},"application/pics-rules":{"source":"apache","extensions":["prf"]},"application/pidf+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pidf-diff+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pkcs10":{"source":"iana","extensions":["p10"]},"application/pkcs12":{"source":"iana"},"application/pkcs7-mime":{"source":"iana","extensions":["p7m","p7c"]},"application/pkcs7-signature":{"source":"iana","extensions":["p7s"]},"application/pkcs8":{"source":"iana","extensions":["p8"]},"application/pkcs8-encrypted":{"source":"iana"},"application/pkix-attr-cert":{"source":"iana","extensions":["ac"]},"application/pkix-cert":{"source":"iana","extensions":["cer"]},"application/pkix-crl":{"source":"iana","extensions":["crl"]},"application/pkix-pkipath":{"source":"iana","extensions":["pkipath"]},"application/pkixcmp":{"source":"iana","extensions":["pki"]},"application/pls+xml":{"source":"iana","compressible":true,"extensions":["pls"]},"application/poc-settings+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/postscript":{"source":"iana","compressible":true,"extensions":["ai","eps","ps"]},"application/ppsp-tracker+json":{"source":"iana","compressible":true},"application/problem+json":{"source":"iana","compressible":true},"application/problem+xml":{"source":"iana","compressible":true},"application/provenance+xml":{"source":"iana","compressible":true,"extensions":["provx"]},"application/prs.alvestrand.titrax-sheet":{"source":"iana"},"application/prs.cww":{"source":"iana","extensions":["cww"]},"application/prs.cyn":{"source":"iana","charset":"7-BIT"},"application/prs.hpub+zip":{"source":"iana","compressible":false},"application/prs.nprend":{"source":"iana"},"application/prs.plucker":{"source":"iana"},"application/prs.rdf-xml-crypt":{"source":"iana"},"application/prs.xsf+xml":{"source":"iana","compressible":true},"application/pskc+xml":{"source":"iana","compressible":true,"extensions":["pskcxml"]},"application/pvd+json":{"source":"iana","compressible":true},"application/qsig":{"source":"iana"},"application/raml+yaml":{"compressible":true,"extensions":["raml"]},"application/raptorfec":{"source":"iana"},"application/rdap+json":{"source":"iana","compressible":true},"application/rdf+xml":{"source":"iana","compressible":true,"extensions":["rdf","owl"]},"application/reginfo+xml":{"source":"iana","compressible":true,"extensions":["rif"]},"application/relax-ng-compact-syntax":{"source":"iana","extensions":["rnc"]},"application/remote-printing":{"source":"iana"},"application/reputon+json":{"source":"iana","compressible":true},"application/resource-lists+xml":{"source":"iana","compressible":true,"extensions":["rl"]},"application/resource-lists-diff+xml":{"source":"iana","compressible":true,"extensions":["rld"]},"application/rfc+xml":{"source":"iana","compressible":true},"application/riscos":{"source":"iana"},"application/rlmi+xml":{"source":"iana","compressible":true},"application/rls-services+xml":{"source":"iana","compressible":true,"extensions":["rs"]},"application/route-apd+xml":{"source":"iana","compressible":true,"extensions":["rapd"]},"application/route-s-tsid+xml":{"source":"iana","compressible":true,"extensions":["sls"]},"application/route-usd+xml":{"source":"iana","compressible":true,"extensions":["rusd"]},"application/rpki-ghostbusters":{"source":"iana","extensions":["gbr"]},"application/rpki-manifest":{"source":"iana","extensions":["mft"]},"application/rpki-publication":{"source":"iana"},"application/rpki-roa":{"source":"iana","extensions":["roa"]},"application/rpki-updown":{"source":"iana"},"application/rsd+xml":{"source":"apache","compressible":true,"extensions":["rsd"]},"application/rss+xml":{"source":"apache","compressible":true,"extensions":["rss"]},"application/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"application/rtploopback":{"source":"iana"},"application/rtx":{"source":"iana"},"application/samlassertion+xml":{"source":"iana","compressible":true},"application/samlmetadata+xml":{"source":"iana","compressible":true},"application/sarif+json":{"source":"iana","compressible":true},"application/sarif-external-properties+json":{"source":"iana","compressible":true},"application/sbe":{"source":"iana"},"application/sbml+xml":{"source":"iana","compressible":true,"extensions":["sbml"]},"application/scaip+xml":{"source":"iana","compressible":true},"application/scim+json":{"source":"iana","compressible":true},"application/scvp-cv-request":{"source":"iana","extensions":["scq"]},"application/scvp-cv-response":{"source":"iana","extensions":["scs"]},"application/scvp-vp-request":{"source":"iana","extensions":["spq"]},"application/scvp-vp-response":{"source":"iana","extensions":["spp"]},"application/sdp":{"source":"iana","extensions":["sdp"]},"application/secevent+jwt":{"source":"iana"},"application/senml+cbor":{"source":"iana"},"application/senml+json":{"source":"iana","compressible":true},"application/senml+xml":{"source":"iana","compressible":true,"extensions":["senmlx"]},"application/senml-etch+cbor":{"source":"iana"},"application/senml-etch+json":{"source":"iana","compressible":true},"application/senml-exi":{"source":"iana"},"application/sensml+cbor":{"source":"iana"},"application/sensml+json":{"source":"iana","compressible":true},"application/sensml+xml":{"source":"iana","compressible":true,"extensions":["sensmlx"]},"application/sensml-exi":{"source":"iana"},"application/sep+xml":{"source":"iana","compressible":true},"application/sep-exi":{"source":"iana"},"application/session-info":{"source":"iana"},"application/set-payment":{"source":"iana"},"application/set-payment-initiation":{"source":"iana","extensions":["setpay"]},"application/set-registration":{"source":"iana"},"application/set-registration-initiation":{"source":"iana","extensions":["setreg"]},"application/sgml":{"source":"iana"},"application/sgml-open-catalog":{"source":"iana"},"application/shf+xml":{"source":"iana","compressible":true,"extensions":["shf"]},"application/sieve":{"source":"iana","extensions":["siv","sieve"]},"application/simple-filter+xml":{"source":"iana","compressible":true},"application/simple-message-summary":{"source":"iana"},"application/simplesymbolcontainer":{"source":"iana"},"application/sipc":{"source":"iana"},"application/slate":{"source":"iana"},"application/smil":{"source":"iana"},"application/smil+xml":{"source":"iana","compressible":true,"extensions":["smi","smil"]},"application/smpte336m":{"source":"iana"},"application/soap+fastinfoset":{"source":"iana"},"application/soap+xml":{"source":"iana","compressible":true},"application/sparql-query":{"source":"iana","extensions":["rq"]},"application/sparql-results+xml":{"source":"iana","compressible":true,"extensions":["srx"]},"application/spdx+json":{"source":"iana","compressible":true},"application/spirits-event+xml":{"source":"iana","compressible":true},"application/sql":{"source":"iana"},"application/srgs":{"source":"iana","extensions":["gram"]},"application/srgs+xml":{"source":"iana","compressible":true,"extensions":["grxml"]},"application/sru+xml":{"source":"iana","compressible":true,"extensions":["sru"]},"application/ssdl+xml":{"source":"apache","compressible":true,"extensions":["ssdl"]},"application/ssml+xml":{"source":"iana","compressible":true,"extensions":["ssml"]},"application/stix+json":{"source":"iana","compressible":true},"application/swid+xml":{"source":"iana","compressible":true,"extensions":["swidtag"]},"application/tamp-apex-update":{"source":"iana"},"application/tamp-apex-update-confirm":{"source":"iana"},"application/tamp-community-update":{"source":"iana"},"application/tamp-community-update-confirm":{"source":"iana"},"application/tamp-error":{"source":"iana"},"application/tamp-sequence-adjust":{"source":"iana"},"application/tamp-sequence-adjust-confirm":{"source":"iana"},"application/tamp-status-query":{"source":"iana"},"application/tamp-status-response":{"source":"iana"},"application/tamp-update":{"source":"iana"},"application/tamp-update-confirm":{"source":"iana"},"application/tar":{"compressible":true},"application/taxii+json":{"source":"iana","compressible":true},"application/td+json":{"source":"iana","compressible":true},"application/tei+xml":{"source":"iana","compressible":true,"extensions":["tei","teicorpus"]},"application/tetra_isi":{"source":"iana"},"application/thraud+xml":{"source":"iana","compressible":true,"extensions":["tfi"]},"application/timestamp-query":{"source":"iana"},"application/timestamp-reply":{"source":"iana"},"application/timestamped-data":{"source":"iana","extensions":["tsd"]},"application/tlsrpt+gzip":{"source":"iana"},"application/tlsrpt+json":{"source":"iana","compressible":true},"application/tnauthlist":{"source":"iana"},"application/token-introspection+jwt":{"source":"iana"},"application/toml":{"compressible":true,"extensions":["toml"]},"application/trickle-ice-sdpfrag":{"source":"iana"},"application/trig":{"source":"iana","extensions":["trig"]},"application/ttml+xml":{"source":"iana","compressible":true,"extensions":["ttml"]},"application/tve-trigger":{"source":"iana"},"application/tzif":{"source":"iana"},"application/tzif-leap":{"source":"iana"},"application/ubjson":{"compressible":false,"extensions":["ubj"]},"application/ulpfec":{"source":"iana"},"application/urc-grpsheet+xml":{"source":"iana","compressible":true},"application/urc-ressheet+xml":{"source":"iana","compressible":true,"extensions":["rsheet"]},"application/urc-targetdesc+xml":{"source":"iana","compressible":true,"extensions":["td"]},"application/urc-uisocketdesc+xml":{"source":"iana","compressible":true},"application/vcard+json":{"source":"iana","compressible":true},"application/vcard+xml":{"source":"iana","compressible":true},"application/vemmi":{"source":"iana"},"application/vividence.scriptfile":{"source":"apache"},"application/vnd.1000minds.decision-model+xml":{"source":"iana","compressible":true,"extensions":["1km"]},"application/vnd.3gpp-prose+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-prose-pc3ch+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-v2x-local-service-information":{"source":"iana"},"application/vnd.3gpp.5gnas":{"source":"iana"},"application/vnd.3gpp.access-transfer-events+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.bsf+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gmop+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gtpc":{"source":"iana"},"application/vnd.3gpp.interworking-data":{"source":"iana"},"application/vnd.3gpp.lpp":{"source":"iana"},"application/vnd.3gpp.mc-signalling-ear":{"source":"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-payload":{"source":"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-signalling":{"source":"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-floor-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-signed+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-init-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-transmission-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mid-call+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ngap":{"source":"iana"},"application/vnd.3gpp.pfcp":{"source":"iana"},"application/vnd.3gpp.pic-bw-large":{"source":"iana","extensions":["plb"]},"application/vnd.3gpp.pic-bw-small":{"source":"iana","extensions":["psb"]},"application/vnd.3gpp.pic-bw-var":{"source":"iana","extensions":["pvb"]},"application/vnd.3gpp.s1ap":{"source":"iana"},"application/vnd.3gpp.sms":{"source":"iana"},"application/vnd.3gpp.sms+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-ext+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.state-and-event-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ussd+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.bcmcsinfo+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.sms":{"source":"iana"},"application/vnd.3gpp2.tcap":{"source":"iana","extensions":["tcap"]},"application/vnd.3lightssoftware.imagescal":{"source":"iana"},"application/vnd.3m.post-it-notes":{"source":"iana","extensions":["pwn"]},"application/vnd.accpac.simply.aso":{"source":"iana","extensions":["aso"]},"application/vnd.accpac.simply.imp":{"source":"iana","extensions":["imp"]},"application/vnd.acucobol":{"source":"iana","extensions":["acu"]},"application/vnd.acucorp":{"source":"iana","extensions":["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{"source":"apache","compressible":false,"extensions":["air"]},"application/vnd.adobe.flash.movie":{"source":"iana"},"application/vnd.adobe.formscentral.fcdt":{"source":"iana","extensions":["fcdt"]},"application/vnd.adobe.fxp":{"source":"iana","extensions":["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{"source":"iana"},"application/vnd.adobe.xdp+xml":{"source":"iana","compressible":true,"extensions":["xdp"]},"application/vnd.adobe.xfdf":{"source":"iana","extensions":["xfdf"]},"application/vnd.aether.imp":{"source":"iana"},"application/vnd.afpc.afplinedata":{"source":"iana"},"application/vnd.afpc.afplinedata-pagedef":{"source":"iana"},"application/vnd.afpc.cmoca-cmresource":{"source":"iana"},"application/vnd.afpc.foca-charset":{"source":"iana"},"application/vnd.afpc.foca-codedfont":{"source":"iana"},"application/vnd.afpc.foca-codepage":{"source":"iana"},"application/vnd.afpc.modca":{"source":"iana"},"application/vnd.afpc.modca-cmtable":{"source":"iana"},"application/vnd.afpc.modca-formdef":{"source":"iana"},"application/vnd.afpc.modca-mediummap":{"source":"iana"},"application/vnd.afpc.modca-objectcontainer":{"source":"iana"},"application/vnd.afpc.modca-overlay":{"source":"iana"},"application/vnd.afpc.modca-pagesegment":{"source":"iana"},"application/vnd.age":{"source":"iana","extensions":["age"]},"application/vnd.ah-barcode":{"source":"iana"},"application/vnd.ahead.space":{"source":"iana","extensions":["ahead"]},"application/vnd.airzip.filesecure.azf":{"source":"iana","extensions":["azf"]},"application/vnd.airzip.filesecure.azs":{"source":"iana","extensions":["azs"]},"application/vnd.amadeus+json":{"source":"iana","compressible":true},"application/vnd.amazon.ebook":{"source":"apache","extensions":["azw"]},"application/vnd.amazon.mobi8-ebook":{"source":"iana"},"application/vnd.americandynamics.acc":{"source":"iana","extensions":["acc"]},"application/vnd.amiga.ami":{"source":"iana","extensions":["ami"]},"application/vnd.amundsen.maze+xml":{"source":"iana","compressible":true},"application/vnd.android.ota":{"source":"iana"},"application/vnd.android.package-archive":{"source":"apache","compressible":false,"extensions":["apk"]},"application/vnd.anki":{"source":"iana"},"application/vnd.anser-web-certificate-issue-initiation":{"source":"iana","extensions":["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{"source":"apache","extensions":["fti"]},"application/vnd.antix.game-component":{"source":"iana","extensions":["atx"]},"application/vnd.apache.arrow.file":{"source":"iana"},"application/vnd.apache.arrow.stream":{"source":"iana"},"application/vnd.apache.thrift.binary":{"source":"iana"},"application/vnd.apache.thrift.compact":{"source":"iana"},"application/vnd.apache.thrift.json":{"source":"iana"},"application/vnd.api+json":{"source":"iana","compressible":true},"application/vnd.aplextor.warrp+json":{"source":"iana","compressible":true},"application/vnd.apothekende.reservation+json":{"source":"iana","compressible":true},"application/vnd.apple.installer+xml":{"source":"iana","compressible":true,"extensions":["mpkg"]},"application/vnd.apple.keynote":{"source":"iana","extensions":["key"]},"application/vnd.apple.mpegurl":{"source":"iana","extensions":["m3u8"]},"application/vnd.apple.numbers":{"source":"iana","extensions":["numbers"]},"application/vnd.apple.pages":{"source":"iana","extensions":["pages"]},"application/vnd.apple.pkpass":{"compressible":false,"extensions":["pkpass"]},"application/vnd.arastra.swi":{"source":"iana"},"application/vnd.aristanetworks.swi":{"source":"iana","extensions":["swi"]},"application/vnd.artisan+json":{"source":"iana","compressible":true},"application/vnd.artsquare":{"source":"iana"},"application/vnd.astraea-software.iota":{"source":"iana","extensions":["iota"]},"application/vnd.audiograph":{"source":"iana","extensions":["aep"]},"application/vnd.autopackage":{"source":"iana"},"application/vnd.avalon+json":{"source":"iana","compressible":true},"application/vnd.avistar+xml":{"source":"iana","compressible":true},"application/vnd.balsamiq.bmml+xml":{"source":"iana","compressible":true,"extensions":["bmml"]},"application/vnd.balsamiq.bmpr":{"source":"iana"},"application/vnd.banana-accounting":{"source":"iana"},"application/vnd.bbf.usp.error":{"source":"iana"},"application/vnd.bbf.usp.msg":{"source":"iana"},"application/vnd.bbf.usp.msg+json":{"source":"iana","compressible":true},"application/vnd.bekitzur-stech+json":{"source":"iana","compressible":true},"application/vnd.bint.med-content":{"source":"iana"},"application/vnd.biopax.rdf+xml":{"source":"iana","compressible":true},"application/vnd.blink-idb-value-wrapper":{"source":"iana"},"application/vnd.blueice.multipass":{"source":"iana","extensions":["mpm"]},"application/vnd.bluetooth.ep.oob":{"source":"iana"},"application/vnd.bluetooth.le.oob":{"source":"iana"},"application/vnd.bmi":{"source":"iana","extensions":["bmi"]},"application/vnd.bpf":{"source":"iana"},"application/vnd.bpf3":{"source":"iana"},"application/vnd.businessobjects":{"source":"iana","extensions":["rep"]},"application/vnd.byu.uapi+json":{"source":"iana","compressible":true},"application/vnd.cab-jscript":{"source":"iana"},"application/vnd.canon-cpdl":{"source":"iana"},"application/vnd.canon-lips":{"source":"iana"},"application/vnd.capasystems-pg+json":{"source":"iana","compressible":true},"application/vnd.cendio.thinlinc.clientconf":{"source":"iana"},"application/vnd.century-systems.tcp_stream":{"source":"iana"},"application/vnd.chemdraw+xml":{"source":"iana","compressible":true,"extensions":["cdxml"]},"application/vnd.chess-pgn":{"source":"iana"},"application/vnd.chipnuts.karaoke-mmd":{"source":"iana","extensions":["mmd"]},"application/vnd.ciedi":{"source":"iana"},"application/vnd.cinderella":{"source":"iana","extensions":["cdy"]},"application/vnd.cirpack.isdn-ext":{"source":"iana"},"application/vnd.citationstyles.style+xml":{"source":"iana","compressible":true,"extensions":["csl"]},"application/vnd.claymore":{"source":"iana","extensions":["cla"]},"application/vnd.cloanto.rp9":{"source":"iana","extensions":["rp9"]},"application/vnd.clonk.c4group":{"source":"iana","extensions":["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{"source":"iana","extensions":["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{"source":"iana","extensions":["c11amz"]},"application/vnd.coffeescript":{"source":"iana"},"application/vnd.collabio.xodocuments.document":{"source":"iana"},"application/vnd.collabio.xodocuments.document-template":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation-template":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{"source":"iana"},"application/vnd.collection+json":{"source":"iana","compressible":true},"application/vnd.collection.doc+json":{"source":"iana","compressible":true},"application/vnd.collection.next+json":{"source":"iana","compressible":true},"application/vnd.comicbook+zip":{"source":"iana","compressible":false},"application/vnd.comicbook-rar":{"source":"iana"},"application/vnd.commerce-battelle":{"source":"iana"},"application/vnd.commonspace":{"source":"iana","extensions":["csp"]},"application/vnd.contact.cmsg":{"source":"iana","extensions":["cdbcmsg"]},"application/vnd.coreos.ignition+json":{"source":"iana","compressible":true},"application/vnd.cosmocaller":{"source":"iana","extensions":["cmc"]},"application/vnd.crick.clicker":{"source":"iana","extensions":["clkx"]},"application/vnd.crick.clicker.keyboard":{"source":"iana","extensions":["clkk"]},"application/vnd.crick.clicker.palette":{"source":"iana","extensions":["clkp"]},"application/vnd.crick.clicker.template":{"source":"iana","extensions":["clkt"]},"application/vnd.crick.clicker.wordbank":{"source":"iana","extensions":["clkw"]},"application/vnd.criticaltools.wbs+xml":{"source":"iana","compressible":true,"extensions":["wbs"]},"application/vnd.cryptii.pipe+json":{"source":"iana","compressible":true},"application/vnd.crypto-shade-file":{"source":"iana"},"application/vnd.cryptomator.encrypted":{"source":"iana"},"application/vnd.cryptomator.vault":{"source":"iana"},"application/vnd.ctc-posml":{"source":"iana","extensions":["pml"]},"application/vnd.ctct.ws+xml":{"source":"iana","compressible":true},"application/vnd.cups-pdf":{"source":"iana"},"application/vnd.cups-postscript":{"source":"iana"},"application/vnd.cups-ppd":{"source":"iana","extensions":["ppd"]},"application/vnd.cups-raster":{"source":"iana"},"application/vnd.cups-raw":{"source":"iana"},"application/vnd.curl":{"source":"iana"},"application/vnd.curl.car":{"source":"apache","extensions":["car"]},"application/vnd.curl.pcurl":{"source":"apache","extensions":["pcurl"]},"application/vnd.cyan.dean.root+xml":{"source":"iana","compressible":true},"application/vnd.cybank":{"source":"iana"},"application/vnd.cyclonedx+json":{"source":"iana","compressible":true},"application/vnd.cyclonedx+xml":{"source":"iana","compressible":true},"application/vnd.d2l.coursepackage1p0+zip":{"source":"iana","compressible":false},"application/vnd.d3m-dataset":{"source":"iana"},"application/vnd.d3m-problem":{"source":"iana"},"application/vnd.dart":{"source":"iana","compressible":true,"extensions":["dart"]},"application/vnd.data-vision.rdz":{"source":"iana","extensions":["rdz"]},"application/vnd.datapackage+json":{"source":"iana","compressible":true},"application/vnd.dataresource+json":{"source":"iana","compressible":true},"application/vnd.dbf":{"source":"iana","extensions":["dbf"]},"application/vnd.debian.binary-package":{"source":"iana"},"application/vnd.dece.data":{"source":"iana","extensions":["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{"source":"iana","compressible":true,"extensions":["uvt","uvvt"]},"application/vnd.dece.unspecified":{"source":"iana","extensions":["uvx","uvvx"]},"application/vnd.dece.zip":{"source":"iana","extensions":["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{"source":"iana","extensions":["fe_launch"]},"application/vnd.desmume.movie":{"source":"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{"source":"iana"},"application/vnd.dm.delegation+xml":{"source":"iana","compressible":true},"application/vnd.dna":{"source":"iana","extensions":["dna"]},"application/vnd.document+json":{"source":"iana","compressible":true},"application/vnd.dolby.mlp":{"source":"apache","extensions":["mlp"]},"application/vnd.dolby.mobile.1":{"source":"iana"},"application/vnd.dolby.mobile.2":{"source":"iana"},"application/vnd.doremir.scorecloud-binary-document":{"source":"iana"},"application/vnd.dpgraph":{"source":"iana","extensions":["dpg"]},"application/vnd.dreamfactory":{"source":"iana","extensions":["dfac"]},"application/vnd.drive+json":{"source":"iana","compressible":true},"application/vnd.ds-keypoint":{"source":"apache","extensions":["kpxx"]},"application/vnd.dtg.local":{"source":"iana"},"application/vnd.dtg.local.flash":{"source":"iana"},"application/vnd.dtg.local.html":{"source":"iana"},"application/vnd.dvb.ait":{"source":"iana","extensions":["ait"]},"application/vnd.dvb.dvbisl+xml":{"source":"iana","compressible":true},"application/vnd.dvb.dvbj":{"source":"iana"},"application/vnd.dvb.esgcontainer":{"source":"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess2":{"source":"iana"},"application/vnd.dvb.ipdcesgpdd":{"source":"iana"},"application/vnd.dvb.ipdcroaming":{"source":"iana"},"application/vnd.dvb.iptv.alfec-base":{"source":"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{"source":"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-container+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-generic+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-msglist+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-request+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-response+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-init+xml":{"source":"iana","compressible":true},"application/vnd.dvb.pfr":{"source":"iana"},"application/vnd.dvb.service":{"source":"iana","extensions":["svc"]},"application/vnd.dxr":{"source":"iana"},"application/vnd.dynageo":{"source":"iana","extensions":["geo"]},"application/vnd.dzr":{"source":"iana"},"application/vnd.easykaraoke.cdgdownload":{"source":"iana"},"application/vnd.ecdis-update":{"source":"iana"},"application/vnd.ecip.rlp":{"source":"iana"},"application/vnd.eclipse.ditto+json":{"source":"iana","compressible":true},"application/vnd.ecowin.chart":{"source":"iana","extensions":["mag"]},"application/vnd.ecowin.filerequest":{"source":"iana"},"application/vnd.ecowin.fileupdate":{"source":"iana"},"application/vnd.ecowin.series":{"source":"iana"},"application/vnd.ecowin.seriesrequest":{"source":"iana"},"application/vnd.ecowin.seriesupdate":{"source":"iana"},"application/vnd.efi.img":{"source":"iana"},"application/vnd.efi.iso":{"source":"iana"},"application/vnd.emclient.accessrequest+xml":{"source":"iana","compressible":true},"application/vnd.enliven":{"source":"iana","extensions":["nml"]},"application/vnd.enphase.envoy":{"source":"iana"},"application/vnd.eprints.data+xml":{"source":"iana","compressible":true},"application/vnd.epson.esf":{"source":"iana","extensions":["esf"]},"application/vnd.epson.msf":{"source":"iana","extensions":["msf"]},"application/vnd.epson.quickanime":{"source":"iana","extensions":["qam"]},"application/vnd.epson.salt":{"source":"iana","extensions":["slt"]},"application/vnd.epson.ssf":{"source":"iana","extensions":["ssf"]},"application/vnd.ericsson.quickcall":{"source":"iana"},"application/vnd.espass-espass+zip":{"source":"iana","compressible":false},"application/vnd.eszigno3+xml":{"source":"iana","compressible":true,"extensions":["es3","et3"]},"application/vnd.etsi.aoc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.asic-e+zip":{"source":"iana","compressible":false},"application/vnd.etsi.asic-s+zip":{"source":"iana","compressible":false},"application/vnd.etsi.cug+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvcommand+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-bc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-cod+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-npvr+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvservice+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsync+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvueprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mcid+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mheg5":{"source":"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{"source":"iana","compressible":true},"application/vnd.etsi.pstn+xml":{"source":"iana","compressible":true},"application/vnd.etsi.sci+xml":{"source":"iana","compressible":true},"application/vnd.etsi.simservs+xml":{"source":"iana","compressible":true},"application/vnd.etsi.timestamp-token":{"source":"iana"},"application/vnd.etsi.tsl+xml":{"source":"iana","compressible":true},"application/vnd.etsi.tsl.der":{"source":"iana"},"application/vnd.eu.kasparian.car+json":{"source":"iana","compressible":true},"application/vnd.eudora.data":{"source":"iana"},"application/vnd.evolv.ecig.profile":{"source":"iana"},"application/vnd.evolv.ecig.settings":{"source":"iana"},"application/vnd.evolv.ecig.theme":{"source":"iana"},"application/vnd.exstream-empower+zip":{"source":"iana","compressible":false},"application/vnd.exstream-package":{"source":"iana"},"application/vnd.ezpix-album":{"source":"iana","extensions":["ez2"]},"application/vnd.ezpix-package":{"source":"iana","extensions":["ez3"]},"application/vnd.f-secure.mobile":{"source":"iana"},"application/vnd.familysearch.gedcom+zip":{"source":"iana","compressible":false},"application/vnd.fastcopy-disk-image":{"source":"iana"},"application/vnd.fdf":{"source":"iana","extensions":["fdf"]},"application/vnd.fdsn.mseed":{"source":"iana","extensions":["mseed"]},"application/vnd.fdsn.seed":{"source":"iana","extensions":["seed","dataless"]},"application/vnd.ffsns":{"source":"iana"},"application/vnd.ficlab.flb+zip":{"source":"iana","compressible":false},"application/vnd.filmit.zfc":{"source":"iana"},"application/vnd.fints":{"source":"iana"},"application/vnd.firemonkeys.cloudcell":{"source":"iana"},"application/vnd.flographit":{"source":"iana","extensions":["gph"]},"application/vnd.fluxtime.clip":{"source":"iana","extensions":["ftc"]},"application/vnd.font-fontforge-sfd":{"source":"iana"},"application/vnd.framemaker":{"source":"iana","extensions":["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{"source":"iana","extensions":["fnc"]},"application/vnd.frogans.ltf":{"source":"iana","extensions":["ltf"]},"application/vnd.fsc.weblaunch":{"source":"iana","extensions":["fsc"]},"application/vnd.fujifilm.fb.docuworks":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.container":{"source":"iana"},"application/vnd.fujifilm.fb.jfi+xml":{"source":"iana","compressible":true},"application/vnd.fujitsu.oasys":{"source":"iana","extensions":["oas"]},"application/vnd.fujitsu.oasys2":{"source":"iana","extensions":["oa2"]},"application/vnd.fujitsu.oasys3":{"source":"iana","extensions":["oa3"]},"application/vnd.fujitsu.oasysgp":{"source":"iana","extensions":["fg5"]},"application/vnd.fujitsu.oasysprs":{"source":"iana","extensions":["bh2"]},"application/vnd.fujixerox.art-ex":{"source":"iana"},"application/vnd.fujixerox.art4":{"source":"iana"},"application/vnd.fujixerox.ddd":{"source":"iana","extensions":["ddd"]},"application/vnd.fujixerox.docuworks":{"source":"iana","extensions":["xdw"]},"application/vnd.fujixerox.docuworks.binder":{"source":"iana","extensions":["xbd"]},"application/vnd.fujixerox.docuworks.container":{"source":"iana"},"application/vnd.fujixerox.hbpl":{"source":"iana"},"application/vnd.fut-misnet":{"source":"iana"},"application/vnd.futoin+cbor":{"source":"iana"},"application/vnd.futoin+json":{"source":"iana","compressible":true},"application/vnd.fuzzysheet":{"source":"iana","extensions":["fzs"]},"application/vnd.genomatix.tuxedo":{"source":"iana","extensions":["txd"]},"application/vnd.gentics.grd+json":{"source":"iana","compressible":true},"application/vnd.geo+json":{"source":"iana","compressible":true},"application/vnd.geocube+xml":{"source":"iana","compressible":true},"application/vnd.geogebra.file":{"source":"iana","extensions":["ggb"]},"application/vnd.geogebra.slides":{"source":"iana"},"application/vnd.geogebra.tool":{"source":"iana","extensions":["ggt"]},"application/vnd.geometry-explorer":{"source":"iana","extensions":["gex","gre"]},"application/vnd.geonext":{"source":"iana","extensions":["gxt"]},"application/vnd.geoplan":{"source":"iana","extensions":["g2w"]},"application/vnd.geospace":{"source":"iana","extensions":["g3w"]},"application/vnd.gerber":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt-response":{"source":"iana"},"application/vnd.gmx":{"source":"iana","extensions":["gmx"]},"application/vnd.google-apps.document":{"compressible":false,"extensions":["gdoc"]},"application/vnd.google-apps.presentation":{"compressible":false,"extensions":["gslides"]},"application/vnd.google-apps.spreadsheet":{"compressible":false,"extensions":["gsheet"]},"application/vnd.google-earth.kml+xml":{"source":"iana","compressible":true,"extensions":["kml"]},"application/vnd.google-earth.kmz":{"source":"iana","compressible":false,"extensions":["kmz"]},"application/vnd.gov.sk.e-form+xml":{"source":"iana","compressible":true},"application/vnd.gov.sk.e-form+zip":{"source":"iana","compressible":false},"application/vnd.gov.sk.xmldatacontainer+xml":{"source":"iana","compressible":true},"application/vnd.grafeq":{"source":"iana","extensions":["gqf","gqs"]},"application/vnd.gridmp":{"source":"iana"},"application/vnd.groove-account":{"source":"iana","extensions":["gac"]},"application/vnd.groove-help":{"source":"iana","extensions":["ghf"]},"application/vnd.groove-identity-message":{"source":"iana","extensions":["gim"]},"application/vnd.groove-injector":{"source":"iana","extensions":["grv"]},"application/vnd.groove-tool-message":{"source":"iana","extensions":["gtm"]},"application/vnd.groove-tool-template":{"source":"iana","extensions":["tpl"]},"application/vnd.groove-vcard":{"source":"iana","extensions":["vcg"]},"application/vnd.hal+json":{"source":"iana","compressible":true},"application/vnd.hal+xml":{"source":"iana","compressible":true,"extensions":["hal"]},"application/vnd.handheld-entertainment+xml":{"source":"iana","compressible":true,"extensions":["zmm"]},"application/vnd.hbci":{"source":"iana","extensions":["hbci"]},"application/vnd.hc+json":{"source":"iana","compressible":true},"application/vnd.hcl-bireports":{"source":"iana"},"application/vnd.hdt":{"source":"iana"},"application/vnd.heroku+json":{"source":"iana","compressible":true},"application/vnd.hhe.lesson-player":{"source":"iana","extensions":["les"]},"application/vnd.hl7cda+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.hl7v2+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.hp-hpgl":{"source":"iana","extensions":["hpgl"]},"application/vnd.hp-hpid":{"source":"iana","extensions":["hpid"]},"application/vnd.hp-hps":{"source":"iana","extensions":["hps"]},"application/vnd.hp-jlyt":{"source":"iana","extensions":["jlt"]},"application/vnd.hp-pcl":{"source":"iana","extensions":["pcl"]},"application/vnd.hp-pclxl":{"source":"iana","extensions":["pclxl"]},"application/vnd.httphone":{"source":"iana"},"application/vnd.hydrostatix.sof-data":{"source":"iana","extensions":["sfd-hdstx"]},"application/vnd.hyper+json":{"source":"iana","compressible":true},"application/vnd.hyper-item+json":{"source":"iana","compressible":true},"application/vnd.hyperdrive+json":{"source":"iana","compressible":true},"application/vnd.hzn-3d-crossword":{"source":"iana"},"application/vnd.ibm.afplinedata":{"source":"iana"},"application/vnd.ibm.electronic-media":{"source":"iana"},"application/vnd.ibm.minipay":{"source":"iana","extensions":["mpy"]},"application/vnd.ibm.modcap":{"source":"iana","extensions":["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{"source":"iana","extensions":["irm"]},"application/vnd.ibm.secure-container":{"source":"iana","extensions":["sc"]},"application/vnd.iccprofile":{"source":"iana","extensions":["icc","icm"]},"application/vnd.ieee.1905":{"source":"iana"},"application/vnd.igloader":{"source":"iana","extensions":["igl"]},"application/vnd.imagemeter.folder+zip":{"source":"iana","compressible":false},"application/vnd.imagemeter.image+zip":{"source":"iana","compressible":false},"application/vnd.immervision-ivp":{"source":"iana","extensions":["ivp"]},"application/vnd.immervision-ivu":{"source":"iana","extensions":["ivu"]},"application/vnd.ims.imsccv1p1":{"source":"iana"},"application/vnd.ims.imsccv1p2":{"source":"iana"},"application/vnd.ims.imsccv1p3":{"source":"iana"},"application/vnd.ims.lis.v2.result+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy.id+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings.simple+json":{"source":"iana","compressible":true},"application/vnd.informedcontrol.rms+xml":{"source":"iana","compressible":true},"application/vnd.informix-visionary":{"source":"iana"},"application/vnd.infotech.project":{"source":"iana"},"application/vnd.infotech.project+xml":{"source":"iana","compressible":true},"application/vnd.innopath.wamp.notification":{"source":"iana"},"application/vnd.insors.igm":{"source":"iana","extensions":["igm"]},"application/vnd.intercon.formnet":{"source":"iana","extensions":["xpw","xpx"]},"application/vnd.intergeo":{"source":"iana","extensions":["i2g"]},"application/vnd.intertrust.digibox":{"source":"iana"},"application/vnd.intertrust.nncp":{"source":"iana"},"application/vnd.intu.qbo":{"source":"iana","extensions":["qbo"]},"application/vnd.intu.qfx":{"source":"iana","extensions":["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.conceptitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.knowledgeitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsmessage+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.packageitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.planningitem+xml":{"source":"iana","compressible":true},"application/vnd.ipunplugged.rcprofile":{"source":"iana","extensions":["rcprofile"]},"application/vnd.irepository.package+xml":{"source":"iana","compressible":true,"extensions":["irp"]},"application/vnd.is-xpr":{"source":"iana","extensions":["xpr"]},"application/vnd.isac.fcs":{"source":"iana","extensions":["fcs"]},"application/vnd.iso11783-10+zip":{"source":"iana","compressible":false},"application/vnd.jam":{"source":"iana","extensions":["jam"]},"application/vnd.japannet-directory-service":{"source":"iana"},"application/vnd.japannet-jpnstore-wakeup":{"source":"iana"},"application/vnd.japannet-payment-wakeup":{"source":"iana"},"application/vnd.japannet-registration":{"source":"iana"},"application/vnd.japannet-registration-wakeup":{"source":"iana"},"application/vnd.japannet-setstore-wakeup":{"source":"iana"},"application/vnd.japannet-verification":{"source":"iana"},"application/vnd.japannet-verification-wakeup":{"source":"iana"},"application/vnd.jcp.javame.midlet-rms":{"source":"iana","extensions":["rms"]},"application/vnd.jisp":{"source":"iana","extensions":["jisp"]},"application/vnd.joost.joda-archive":{"source":"iana","extensions":["joda"]},"application/vnd.jsk.isdn-ngn":{"source":"iana"},"application/vnd.kahootz":{"source":"iana","extensions":["ktz","ktr"]},"application/vnd.kde.karbon":{"source":"iana","extensions":["karbon"]},"application/vnd.kde.kchart":{"source":"iana","extensions":["chrt"]},"application/vnd.kde.kformula":{"source":"iana","extensions":["kfo"]},"application/vnd.kde.kivio":{"source":"iana","extensions":["flw"]},"application/vnd.kde.kontour":{"source":"iana","extensions":["kon"]},"application/vnd.kde.kpresenter":{"source":"iana","extensions":["kpr","kpt"]},"application/vnd.kde.kspread":{"source":"iana","extensions":["ksp"]},"application/vnd.kde.kword":{"source":"iana","extensions":["kwd","kwt"]},"application/vnd.kenameaapp":{"source":"iana","extensions":["htke"]},"application/vnd.kidspiration":{"source":"iana","extensions":["kia"]},"application/vnd.kinar":{"source":"iana","extensions":["kne","knp"]},"application/vnd.koan":{"source":"iana","extensions":["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{"source":"iana","extensions":["sse"]},"application/vnd.las":{"source":"iana"},"application/vnd.las.las+json":{"source":"iana","compressible":true},"application/vnd.las.las+xml":{"source":"iana","compressible":true,"extensions":["lasxml"]},"application/vnd.laszip":{"source":"iana"},"application/vnd.leap+json":{"source":"iana","compressible":true},"application/vnd.liberty-request+xml":{"source":"iana","compressible":true},"application/vnd.llamagraphics.life-balance.desktop":{"source":"iana","extensions":["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{"source":"iana","compressible":true,"extensions":["lbe"]},"application/vnd.logipipe.circuit+zip":{"source":"iana","compressible":false},"application/vnd.loom":{"source":"iana"},"application/vnd.lotus-1-2-3":{"source":"iana","extensions":["123"]},"application/vnd.lotus-approach":{"source":"iana","extensions":["apr"]},"application/vnd.lotus-freelance":{"source":"iana","extensions":["pre"]},"application/vnd.lotus-notes":{"source":"iana","extensions":["nsf"]},"application/vnd.lotus-organizer":{"source":"iana","extensions":["org"]},"application/vnd.lotus-screencam":{"source":"iana","extensions":["scm"]},"application/vnd.lotus-wordpro":{"source":"iana","extensions":["lwp"]},"application/vnd.macports.portpkg":{"source":"iana","extensions":["portpkg"]},"application/vnd.mapbox-vector-tile":{"source":"iana","extensions":["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.conftoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.license+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.mdcf":{"source":"iana"},"application/vnd.mason+json":{"source":"iana","compressible":true},"application/vnd.maxar.archive.3tz+zip":{"source":"iana","compressible":false},"application/vnd.maxmind.maxmind-db":{"source":"iana"},"application/vnd.mcd":{"source":"iana","extensions":["mcd"]},"application/vnd.medcalcdata":{"source":"iana","extensions":["mc1"]},"application/vnd.mediastation.cdkey":{"source":"iana","extensions":["cdkey"]},"application/vnd.meridian-slingshot":{"source":"iana"},"application/vnd.mfer":{"source":"iana","extensions":["mwf"]},"application/vnd.mfmp":{"source":"iana","extensions":["mfm"]},"application/vnd.micro+json":{"source":"iana","compressible":true},"application/vnd.micrografx.flo":{"source":"iana","extensions":["flo"]},"application/vnd.micrografx.igx":{"source":"iana","extensions":["igx"]},"application/vnd.microsoft.portable-executable":{"source":"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{"source":"iana"},"application/vnd.miele+json":{"source":"iana","compressible":true},"application/vnd.mif":{"source":"iana","extensions":["mif"]},"application/vnd.minisoft-hp3000-save":{"source":"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{"source":"iana"},"application/vnd.mobius.daf":{"source":"iana","extensions":["daf"]},"application/vnd.mobius.dis":{"source":"iana","extensions":["dis"]},"application/vnd.mobius.mbk":{"source":"iana","extensions":["mbk"]},"application/vnd.mobius.mqy":{"source":"iana","extensions":["mqy"]},"application/vnd.mobius.msl":{"source":"iana","extensions":["msl"]},"application/vnd.mobius.plc":{"source":"iana","extensions":["plc"]},"application/vnd.mobius.txf":{"source":"iana","extensions":["txf"]},"application/vnd.mophun.application":{"source":"iana","extensions":["mpn"]},"application/vnd.mophun.certificate":{"source":"iana","extensions":["mpc"]},"application/vnd.motorola.flexsuite":{"source":"iana"},"application/vnd.motorola.flexsuite.adsi":{"source":"iana"},"application/vnd.motorola.flexsuite.fis":{"source":"iana"},"application/vnd.motorola.flexsuite.gotap":{"source":"iana"},"application/vnd.motorola.flexsuite.kmr":{"source":"iana"},"application/vnd.motorola.flexsuite.ttc":{"source":"iana"},"application/vnd.motorola.flexsuite.wem":{"source":"iana"},"application/vnd.motorola.iprm":{"source":"iana"},"application/vnd.mozilla.xul+xml":{"source":"iana","compressible":true,"extensions":["xul"]},"application/vnd.ms-3mfdocument":{"source":"iana"},"application/vnd.ms-artgalry":{"source":"iana","extensions":["cil"]},"application/vnd.ms-asf":{"source":"iana"},"application/vnd.ms-cab-compressed":{"source":"iana","extensions":["cab"]},"application/vnd.ms-color.iccprofile":{"source":"apache"},"application/vnd.ms-excel":{"source":"iana","compressible":false,"extensions":["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{"source":"iana","extensions":["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{"source":"iana","extensions":["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{"source":"iana","extensions":["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{"source":"iana","extensions":["xltm"]},"application/vnd.ms-fontobject":{"source":"iana","compressible":true,"extensions":["eot"]},"application/vnd.ms-htmlhelp":{"source":"iana","extensions":["chm"]},"application/vnd.ms-ims":{"source":"iana","extensions":["ims"]},"application/vnd.ms-lrm":{"source":"iana","extensions":["lrm"]},"application/vnd.ms-office.activex+xml":{"source":"iana","compressible":true},"application/vnd.ms-officetheme":{"source":"iana","extensions":["thmx"]},"application/vnd.ms-opentype":{"source":"apache","compressible":true},"application/vnd.ms-outlook":{"compressible":false,"extensions":["msg"]},"application/vnd.ms-package.obfuscated-opentype":{"source":"apache"},"application/vnd.ms-pki.seccat":{"source":"apache","extensions":["cat"]},"application/vnd.ms-pki.stl":{"source":"apache","extensions":["stl"]},"application/vnd.ms-playready.initiator+xml":{"source":"iana","compressible":true},"application/vnd.ms-powerpoint":{"source":"iana","compressible":false,"extensions":["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{"source":"iana","extensions":["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{"source":"iana","extensions":["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{"source":"iana","extensions":["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{"source":"iana","extensions":["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{"source":"iana","extensions":["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{"source":"iana","compressible":true},"application/vnd.ms-printing.printticket+xml":{"source":"apache","compressible":true},"application/vnd.ms-printschematicket+xml":{"source":"iana","compressible":true},"application/vnd.ms-project":{"source":"iana","extensions":["mpp","mpt"]},"application/vnd.ms-tnef":{"source":"iana"},"application/vnd.ms-windows.devicepairing":{"source":"iana"},"application/vnd.ms-windows.nwprinting.oob":{"source":"iana"},"application/vnd.ms-windows.printerpairing":{"source":"iana"},"application/vnd.ms-windows.wsd.oob":{"source":"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.lic-resp":{"source":"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.meter-resp":{"source":"iana"},"application/vnd.ms-word.document.macroenabled.12":{"source":"iana","extensions":["docm"]},"application/vnd.ms-word.template.macroenabled.12":{"source":"iana","extensions":["dotm"]},"application/vnd.ms-works":{"source":"iana","extensions":["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{"source":"iana","extensions":["wpl"]},"application/vnd.ms-xpsdocument":{"source":"iana","compressible":false,"extensions":["xps"]},"application/vnd.msa-disk-image":{"source":"iana"},"application/vnd.mseq":{"source":"iana","extensions":["mseq"]},"application/vnd.msign":{"source":"iana"},"application/vnd.multiad.creator":{"source":"iana"},"application/vnd.multiad.creator.cif":{"source":"iana"},"application/vnd.music-niff":{"source":"iana"},"application/vnd.musician":{"source":"iana","extensions":["mus"]},"application/vnd.muvee.style":{"source":"iana","extensions":["msty"]},"application/vnd.mynfc":{"source":"iana","extensions":["taglet"]},"application/vnd.nacamar.ybrid+json":{"source":"iana","compressible":true},"application/vnd.ncd.control":{"source":"iana"},"application/vnd.ncd.reference":{"source":"iana"},"application/vnd.nearst.inv+json":{"source":"iana","compressible":true},"application/vnd.nebumind.line":{"source":"iana"},"application/vnd.nervana":{"source":"iana"},"application/vnd.netfpx":{"source":"iana"},"application/vnd.neurolanguage.nlu":{"source":"iana","extensions":["nlu"]},"application/vnd.nimn":{"source":"iana"},"application/vnd.nintendo.nitro.rom":{"source":"iana"},"application/vnd.nintendo.snes.rom":{"source":"iana"},"application/vnd.nitf":{"source":"iana","extensions":["ntf","nitf"]},"application/vnd.noblenet-directory":{"source":"iana","extensions":["nnd"]},"application/vnd.noblenet-sealer":{"source":"iana","extensions":["nns"]},"application/vnd.noblenet-web":{"source":"iana","extensions":["nnw"]},"application/vnd.nokia.catalogs":{"source":"iana"},"application/vnd.nokia.conml+wbxml":{"source":"iana"},"application/vnd.nokia.conml+xml":{"source":"iana","compressible":true},"application/vnd.nokia.iptv.config+xml":{"source":"iana","compressible":true},"application/vnd.nokia.isds-radio-presets":{"source":"iana"},"application/vnd.nokia.landmark+wbxml":{"source":"iana"},"application/vnd.nokia.landmark+xml":{"source":"iana","compressible":true},"application/vnd.nokia.landmarkcollection+xml":{"source":"iana","compressible":true},"application/vnd.nokia.n-gage.ac+xml":{"source":"iana","compressible":true,"extensions":["ac"]},"application/vnd.nokia.n-gage.data":{"source":"iana","extensions":["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{"source":"iana","extensions":["n-gage"]},"application/vnd.nokia.ncd":{"source":"iana"},"application/vnd.nokia.pcd+wbxml":{"source":"iana"},"application/vnd.nokia.pcd+xml":{"source":"iana","compressible":true},"application/vnd.nokia.radio-preset":{"source":"iana","extensions":["rpst"]},"application/vnd.nokia.radio-presets":{"source":"iana","extensions":["rpss"]},"application/vnd.novadigm.edm":{"source":"iana","extensions":["edm"]},"application/vnd.novadigm.edx":{"source":"iana","extensions":["edx"]},"application/vnd.novadigm.ext":{"source":"iana","extensions":["ext"]},"application/vnd.ntt-local.content-share":{"source":"iana"},"application/vnd.ntt-local.file-transfer":{"source":"iana"},"application/vnd.ntt-local.ogw_remote-access":{"source":"iana"},"application/vnd.ntt-local.sip-ta_remote":{"source":"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{"source":"iana"},"application/vnd.oasis.opendocument.chart":{"source":"iana","extensions":["odc"]},"application/vnd.oasis.opendocument.chart-template":{"source":"iana","extensions":["otc"]},"application/vnd.oasis.opendocument.database":{"source":"iana","extensions":["odb"]},"application/vnd.oasis.opendocument.formula":{"source":"iana","extensions":["odf"]},"application/vnd.oasis.opendocument.formula-template":{"source":"iana","extensions":["odft"]},"application/vnd.oasis.opendocument.graphics":{"source":"iana","compressible":false,"extensions":["odg"]},"application/vnd.oasis.opendocument.graphics-template":{"source":"iana","extensions":["otg"]},"application/vnd.oasis.opendocument.image":{"source":"iana","extensions":["odi"]},"application/vnd.oasis.opendocument.image-template":{"source":"iana","extensions":["oti"]},"application/vnd.oasis.opendocument.presentation":{"source":"iana","compressible":false,"extensions":["odp"]},"application/vnd.oasis.opendocument.presentation-template":{"source":"iana","extensions":["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{"source":"iana","compressible":false,"extensions":["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{"source":"iana","extensions":["ots"]},"application/vnd.oasis.opendocument.text":{"source":"iana","compressible":false,"extensions":["odt"]},"application/vnd.oasis.opendocument.text-master":{"source":"iana","extensions":["odm"]},"application/vnd.oasis.opendocument.text-template":{"source":"iana","extensions":["ott"]},"application/vnd.oasis.opendocument.text-web":{"source":"iana","extensions":["oth"]},"application/vnd.obn":{"source":"iana"},"application/vnd.ocf+cbor":{"source":"iana"},"application/vnd.oci.image.manifest.v1+json":{"source":"iana","compressible":true},"application/vnd.oftn.l10n+json":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessdownload+xml":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessstreaming+xml":{"source":"iana","compressible":true},"application/vnd.oipf.cspg-hexbinary":{"source":"iana"},"application/vnd.oipf.dae.svg+xml":{"source":"iana","compressible":true},"application/vnd.oipf.dae.xhtml+xml":{"source":"iana","compressible":true},"application/vnd.oipf.mippvcontrolmessage+xml":{"source":"iana","compressible":true},"application/vnd.oipf.pae.gem":{"source":"iana"},"application/vnd.oipf.spdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.oipf.spdlist+xml":{"source":"iana","compressible":true},"application/vnd.oipf.ueprofile+xml":{"source":"iana","compressible":true},"application/vnd.oipf.userprofile+xml":{"source":"iana","compressible":true},"application/vnd.olpc-sugar":{"source":"iana","extensions":["xo"]},"application/vnd.oma-scws-config":{"source":"iana"},"application/vnd.oma-scws-http-request":{"source":"iana"},"application/vnd.oma-scws-http-response":{"source":"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.drm-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.imd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.ltkm":{"source":"iana"},"application/vnd.oma.bcast.notification+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.provisioningtrigger":{"source":"iana"},"application/vnd.oma.bcast.sgboot":{"source":"iana"},"application/vnd.oma.bcast.sgdd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sgdu":{"source":"iana"},"application/vnd.oma.bcast.simple-symbol-container":{"source":"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sprov+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.stkm":{"source":"iana"},"application/vnd.oma.cab-address-book+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-feature-handler+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-pcc+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-subs-invite+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-user-prefs+xml":{"source":"iana","compressible":true},"application/vnd.oma.dcd":{"source":"iana"},"application/vnd.oma.dcdc":{"source":"iana"},"application/vnd.oma.dd2+xml":{"source":"iana","compressible":true,"extensions":["dd2"]},"application/vnd.oma.drm.risd+xml":{"source":"iana","compressible":true},"application/vnd.oma.group-usage-list+xml":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+cbor":{"source":"iana"},"application/vnd.oma.lwm2m+json":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+tlv":{"source":"iana"},"application/vnd.oma.pal+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.detailed-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.final-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.groups+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.invocation-descriptor+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.optimized-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.push":{"source":"iana"},"application/vnd.oma.scidm.messages+xml":{"source":"iana","compressible":true},"application/vnd.oma.xcap-directory+xml":{"source":"iana","compressible":true},"application/vnd.omads-email+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-file+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-folder+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omaloc-supl-init":{"source":"iana"},"application/vnd.onepager":{"source":"iana"},"application/vnd.onepagertamp":{"source":"iana"},"application/vnd.onepagertamx":{"source":"iana"},"application/vnd.onepagertat":{"source":"iana"},"application/vnd.onepagertatp":{"source":"iana"},"application/vnd.onepagertatx":{"source":"iana"},"application/vnd.openblox.game+xml":{"source":"iana","compressible":true,"extensions":["obgx"]},"application/vnd.openblox.game-binary":{"source":"iana"},"application/vnd.openeye.oeb":{"source":"iana"},"application/vnd.openofficeorg.extension":{"source":"apache","extensions":["oxt"]},"application/vnd.openstreetmap.data+xml":{"source":"iana","compressible":true,"extensions":["osm"]},"application/vnd.opentimestamps.ots":{"source":"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawing+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{"source":"iana","compressible":false,"extensions":["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slide":{"source":"iana","extensions":["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{"source":"iana","extensions":["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.template":{"source":"iana","extensions":["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"source":"iana","compressible":false,"extensions":["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{"source":"iana","extensions":["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.theme+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.vmldrawing":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{"source":"iana","compressible":false,"extensions":["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{"source":"iana","extensions":["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.core-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.relationships+xml":{"source":"iana","compressible":true},"application/vnd.oracle.resource+json":{"source":"iana","compressible":true},"application/vnd.orange.indata":{"source":"iana"},"application/vnd.osa.netdeploy":{"source":"iana"},"application/vnd.osgeo.mapguide.package":{"source":"iana","extensions":["mgp"]},"application/vnd.osgi.bundle":{"source":"iana"},"application/vnd.osgi.dp":{"source":"iana","extensions":["dp"]},"application/vnd.osgi.subsystem":{"source":"iana","extensions":["esa"]},"application/vnd.otps.ct-kip+xml":{"source":"iana","compressible":true},"application/vnd.oxli.countgraph":{"source":"iana"},"application/vnd.pagerduty+json":{"source":"iana","compressible":true},"application/vnd.palm":{"source":"iana","extensions":["pdb","pqa","oprc"]},"application/vnd.panoply":{"source":"iana"},"application/vnd.paos.xml":{"source":"iana"},"application/vnd.patentdive":{"source":"iana"},"application/vnd.patientecommsdoc":{"source":"iana"},"application/vnd.pawaafile":{"source":"iana","extensions":["paw"]},"application/vnd.pcos":{"source":"iana"},"application/vnd.pg.format":{"source":"iana","extensions":["str"]},"application/vnd.pg.osasli":{"source":"iana","extensions":["ei6"]},"application/vnd.piaccess.application-licence":{"source":"iana"},"application/vnd.picsel":{"source":"iana","extensions":["efif"]},"application/vnd.pmi.widget":{"source":"iana","extensions":["wg"]},"application/vnd.poc.group-advertisement+xml":{"source":"iana","compressible":true},"application/vnd.pocketlearn":{"source":"iana","extensions":["plf"]},"application/vnd.powerbuilder6":{"source":"iana","extensions":["pbd"]},"application/vnd.powerbuilder6-s":{"source":"iana"},"application/vnd.powerbuilder7":{"source":"iana"},"application/vnd.powerbuilder7-s":{"source":"iana"},"application/vnd.powerbuilder75":{"source":"iana"},"application/vnd.powerbuilder75-s":{"source":"iana"},"application/vnd.preminet":{"source":"iana"},"application/vnd.previewsystems.box":{"source":"iana","extensions":["box"]},"application/vnd.proteus.magazine":{"source":"iana","extensions":["mgz"]},"application/vnd.psfs":{"source":"iana"},"application/vnd.publishare-delta-tree":{"source":"iana","extensions":["qps"]},"application/vnd.pvi.ptid1":{"source":"iana","extensions":["ptid"]},"application/vnd.pwg-multiplexed":{"source":"iana"},"application/vnd.pwg-xhtml-print+xml":{"source":"iana","compressible":true},"application/vnd.qualcomm.brew-app-res":{"source":"iana"},"application/vnd.quarantainenet":{"source":"iana"},"application/vnd.quark.quarkxpress":{"source":"iana","extensions":["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{"source":"iana"},"application/vnd.radisys.moml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conn+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-stream+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-base+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-detect+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-group+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-speech+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-transform+xml":{"source":"iana","compressible":true},"application/vnd.rainstor.data":{"source":"iana"},"application/vnd.rapid":{"source":"iana"},"application/vnd.rar":{"source":"iana","extensions":["rar"]},"application/vnd.realvnc.bed":{"source":"iana","extensions":["bed"]},"application/vnd.recordare.musicxml":{"source":"iana","extensions":["mxl"]},"application/vnd.recordare.musicxml+xml":{"source":"iana","compressible":true,"extensions":["musicxml"]},"application/vnd.renlearn.rlprint":{"source":"iana"},"application/vnd.resilient.logic":{"source":"iana"},"application/vnd.restful+json":{"source":"iana","compressible":true},"application/vnd.rig.cryptonote":{"source":"iana","extensions":["cryptonote"]},"application/vnd.rim.cod":{"source":"apache","extensions":["cod"]},"application/vnd.rn-realmedia":{"source":"apache","extensions":["rm"]},"application/vnd.rn-realmedia-vbr":{"source":"apache","extensions":["rmvb"]},"application/vnd.route66.link66+xml":{"source":"iana","compressible":true,"extensions":["link66"]},"application/vnd.rs-274x":{"source":"iana"},"application/vnd.ruckus.download":{"source":"iana"},"application/vnd.s3sms":{"source":"iana"},"application/vnd.sailingtracker.track":{"source":"iana","extensions":["st"]},"application/vnd.sar":{"source":"iana"},"application/vnd.sbm.cid":{"source":"iana"},"application/vnd.sbm.mid2":{"source":"iana"},"application/vnd.scribus":{"source":"iana"},"application/vnd.sealed.3df":{"source":"iana"},"application/vnd.sealed.csf":{"source":"iana"},"application/vnd.sealed.doc":{"source":"iana"},"application/vnd.sealed.eml":{"source":"iana"},"application/vnd.sealed.mht":{"source":"iana"},"application/vnd.sealed.net":{"source":"iana"},"application/vnd.sealed.ppt":{"source":"iana"},"application/vnd.sealed.tiff":{"source":"iana"},"application/vnd.sealed.xls":{"source":"iana"},"application/vnd.sealedmedia.softseal.html":{"source":"iana"},"application/vnd.sealedmedia.softseal.pdf":{"source":"iana"},"application/vnd.seemail":{"source":"iana","extensions":["see"]},"application/vnd.seis+json":{"source":"iana","compressible":true},"application/vnd.sema":{"source":"iana","extensions":["sema"]},"application/vnd.semd":{"source":"iana","extensions":["semd"]},"application/vnd.semf":{"source":"iana","extensions":["semf"]},"application/vnd.shade-save-file":{"source":"iana"},"application/vnd.shana.informed.formdata":{"source":"iana","extensions":["ifm"]},"application/vnd.shana.informed.formtemplate":{"source":"iana","extensions":["itp"]},"application/vnd.shana.informed.interchange":{"source":"iana","extensions":["iif"]},"application/vnd.shana.informed.package":{"source":"iana","extensions":["ipk"]},"application/vnd.shootproof+json":{"source":"iana","compressible":true},"application/vnd.shopkick+json":{"source":"iana","compressible":true},"application/vnd.shp":{"source":"iana"},"application/vnd.shx":{"source":"iana"},"application/vnd.sigrok.session":{"source":"iana"},"application/vnd.simtech-mindmapper":{"source":"iana","extensions":["twd","twds"]},"application/vnd.siren+json":{"source":"iana","compressible":true},"application/vnd.smaf":{"source":"iana","extensions":["mmf"]},"application/vnd.smart.notebook":{"source":"iana"},"application/vnd.smart.teacher":{"source":"iana","extensions":["teacher"]},"application/vnd.snesdev-page-table":{"source":"iana"},"application/vnd.software602.filler.form+xml":{"source":"iana","compressible":true,"extensions":["fo"]},"application/vnd.software602.filler.form-xml-zip":{"source":"iana"},"application/vnd.solent.sdkm+xml":{"source":"iana","compressible":true,"extensions":["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{"source":"iana","extensions":["dxp"]},"application/vnd.spotfire.sfs":{"source":"iana","extensions":["sfs"]},"application/vnd.sqlite3":{"source":"iana"},"application/vnd.sss-cod":{"source":"iana"},"application/vnd.sss-dtf":{"source":"iana"},"application/vnd.sss-ntf":{"source":"iana"},"application/vnd.stardivision.calc":{"source":"apache","extensions":["sdc"]},"application/vnd.stardivision.draw":{"source":"apache","extensions":["sda"]},"application/vnd.stardivision.impress":{"source":"apache","extensions":["sdd"]},"application/vnd.stardivision.math":{"source":"apache","extensions":["smf"]},"application/vnd.stardivision.writer":{"source":"apache","extensions":["sdw","vor"]},"application/vnd.stardivision.writer-global":{"source":"apache","extensions":["sgl"]},"application/vnd.stepmania.package":{"source":"iana","extensions":["smzip"]},"application/vnd.stepmania.stepchart":{"source":"iana","extensions":["sm"]},"application/vnd.street-stream":{"source":"iana"},"application/vnd.sun.wadl+xml":{"source":"iana","compressible":true,"extensions":["wadl"]},"application/vnd.sun.xml.calc":{"source":"apache","extensions":["sxc"]},"application/vnd.sun.xml.calc.template":{"source":"apache","extensions":["stc"]},"application/vnd.sun.xml.draw":{"source":"apache","extensions":["sxd"]},"application/vnd.sun.xml.draw.template":{"source":"apache","extensions":["std"]},"application/vnd.sun.xml.impress":{"source":"apache","extensions":["sxi"]},"application/vnd.sun.xml.impress.template":{"source":"apache","extensions":["sti"]},"application/vnd.sun.xml.math":{"source":"apache","extensions":["sxm"]},"application/vnd.sun.xml.writer":{"source":"apache","extensions":["sxw"]},"application/vnd.sun.xml.writer.global":{"source":"apache","extensions":["sxg"]},"application/vnd.sun.xml.writer.template":{"source":"apache","extensions":["stw"]},"application/vnd.sus-calendar":{"source":"iana","extensions":["sus","susp"]},"application/vnd.svd":{"source":"iana","extensions":["svd"]},"application/vnd.swiftview-ics":{"source":"iana"},"application/vnd.sycle+xml":{"source":"iana","compressible":true},"application/vnd.syft+json":{"source":"iana","compressible":true},"application/vnd.symbian.install":{"source":"apache","extensions":["sis","sisx"]},"application/vnd.syncml+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xsm"]},"application/vnd.syncml.dm+wbxml":{"source":"iana","charset":"UTF-8","extensions":["bdm"]},"application/vnd.syncml.dm+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xdm"]},"application/vnd.syncml.dm.notification":{"source":"iana"},"application/vnd.syncml.dmddf+wbxml":{"source":"iana"},"application/vnd.syncml.dmddf+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{"source":"iana"},"application/vnd.syncml.dmtnds+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.syncml.ds.notification":{"source":"iana"},"application/vnd.tableschema+json":{"source":"iana","compressible":true},"application/vnd.tao.intent-module-archive":{"source":"iana","extensions":["tao"]},"application/vnd.tcpdump.pcap":{"source":"iana","extensions":["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{"source":"iana","compressible":true},"application/vnd.tmd.mediaflex.api+xml":{"source":"iana","compressible":true},"application/vnd.tml":{"source":"iana"},"application/vnd.tmobile-livetv":{"source":"iana","extensions":["tmo"]},"application/vnd.tri.onesource":{"source":"iana"},"application/vnd.trid.tpt":{"source":"iana","extensions":["tpt"]},"application/vnd.triscape.mxs":{"source":"iana","extensions":["mxs"]},"application/vnd.trueapp":{"source":"iana","extensions":["tra"]},"application/vnd.truedoc":{"source":"iana"},"application/vnd.ubisoft.webplayer":{"source":"iana"},"application/vnd.ufdl":{"source":"iana","extensions":["ufd","ufdl"]},"application/vnd.uiq.theme":{"source":"iana","extensions":["utz"]},"application/vnd.umajin":{"source":"iana","extensions":["umj"]},"application/vnd.unity":{"source":"iana","extensions":["unityweb"]},"application/vnd.uoml+xml":{"source":"iana","compressible":true,"extensions":["uoml"]},"application/vnd.uplanet.alert":{"source":"iana"},"application/vnd.uplanet.alert-wbxml":{"source":"iana"},"application/vnd.uplanet.bearer-choice":{"source":"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{"source":"iana"},"application/vnd.uplanet.cacheop":{"source":"iana"},"application/vnd.uplanet.cacheop-wbxml":{"source":"iana"},"application/vnd.uplanet.channel":{"source":"iana"},"application/vnd.uplanet.channel-wbxml":{"source":"iana"},"application/vnd.uplanet.list":{"source":"iana"},"application/vnd.uplanet.list-wbxml":{"source":"iana"},"application/vnd.uplanet.listcmd":{"source":"iana"},"application/vnd.uplanet.listcmd-wbxml":{"source":"iana"},"application/vnd.uplanet.signal":{"source":"iana"},"application/vnd.uri-map":{"source":"iana"},"application/vnd.valve.source.material":{"source":"iana"},"application/vnd.vcx":{"source":"iana","extensions":["vcx"]},"application/vnd.vd-study":{"source":"iana"},"application/vnd.vectorworks":{"source":"iana"},"application/vnd.vel+json":{"source":"iana","compressible":true},"application/vnd.verimatrix.vcas":{"source":"iana"},"application/vnd.veritone.aion+json":{"source":"iana","compressible":true},"application/vnd.veryant.thin":{"source":"iana"},"application/vnd.ves.encrypted":{"source":"iana"},"application/vnd.vidsoft.vidconference":{"source":"iana"},"application/vnd.visio":{"source":"iana","extensions":["vsd","vst","vss","vsw"]},"application/vnd.visionary":{"source":"iana","extensions":["vis"]},"application/vnd.vividence.scriptfile":{"source":"iana"},"application/vnd.vsf":{"source":"iana","extensions":["vsf"]},"application/vnd.wap.sic":{"source":"iana"},"application/vnd.wap.slc":{"source":"iana"},"application/vnd.wap.wbxml":{"source":"iana","charset":"UTF-8","extensions":["wbxml"]},"application/vnd.wap.wmlc":{"source":"iana","extensions":["wmlc"]},"application/vnd.wap.wmlscriptc":{"source":"iana","extensions":["wmlsc"]},"application/vnd.webturbo":{"source":"iana","extensions":["wtb"]},"application/vnd.wfa.dpp":{"source":"iana"},"application/vnd.wfa.p2p":{"source":"iana"},"application/vnd.wfa.wsc":{"source":"iana"},"application/vnd.windows.devicepairing":{"source":"iana"},"application/vnd.wmc":{"source":"iana"},"application/vnd.wmf.bootstrap":{"source":"iana"},"application/vnd.wolfram.mathematica":{"source":"iana"},"application/vnd.wolfram.mathematica.package":{"source":"iana"},"application/vnd.wolfram.player":{"source":"iana","extensions":["nbp"]},"application/vnd.wordperfect":{"source":"iana","extensions":["wpd"]},"application/vnd.wqd":{"source":"iana","extensions":["wqd"]},"application/vnd.wrq-hp3000-labelled":{"source":"iana"},"application/vnd.wt.stf":{"source":"iana","extensions":["stf"]},"application/vnd.wv.csp+wbxml":{"source":"iana"},"application/vnd.wv.csp+xml":{"source":"iana","compressible":true},"application/vnd.wv.ssp+xml":{"source":"iana","compressible":true},"application/vnd.xacml+json":{"source":"iana","compressible":true},"application/vnd.xara":{"source":"iana","extensions":["xar"]},"application/vnd.xfdl":{"source":"iana","extensions":["xfdl"]},"application/vnd.xfdl.webform":{"source":"iana"},"application/vnd.xmi+xml":{"source":"iana","compressible":true},"application/vnd.xmpie.cpkg":{"source":"iana"},"application/vnd.xmpie.dpkg":{"source":"iana"},"application/vnd.xmpie.plan":{"source":"iana"},"application/vnd.xmpie.ppkg":{"source":"iana"},"application/vnd.xmpie.xlim":{"source":"iana"},"application/vnd.yamaha.hv-dic":{"source":"iana","extensions":["hvd"]},"application/vnd.yamaha.hv-script":{"source":"iana","extensions":["hvs"]},"application/vnd.yamaha.hv-voice":{"source":"iana","extensions":["hvp"]},"application/vnd.yamaha.openscoreformat":{"source":"iana","extensions":["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{"source":"iana","compressible":true,"extensions":["osfpvg"]},"application/vnd.yamaha.remote-setup":{"source":"iana"},"application/vnd.yamaha.smaf-audio":{"source":"iana","extensions":["saf"]},"application/vnd.yamaha.smaf-phrase":{"source":"iana","extensions":["spf"]},"application/vnd.yamaha.through-ngn":{"source":"iana"},"application/vnd.yamaha.tunnel-udpencap":{"source":"iana"},"application/vnd.yaoweme":{"source":"iana"},"application/vnd.yellowriver-custom-menu":{"source":"iana","extensions":["cmp"]},"application/vnd.youtube.yt":{"source":"iana"},"application/vnd.zul":{"source":"iana","extensions":["zir","zirz"]},"application/vnd.zzazz.deck+xml":{"source":"iana","compressible":true,"extensions":["zaz"]},"application/voicexml+xml":{"source":"iana","compressible":true,"extensions":["vxml"]},"application/voucher-cms+json":{"source":"iana","compressible":true},"application/vq-rtcpxr":{"source":"iana"},"application/wasm":{"source":"iana","compressible":true,"extensions":["wasm"]},"application/watcherinfo+xml":{"source":"iana","compressible":true,"extensions":["wif"]},"application/webpush-options+json":{"source":"iana","compressible":true},"application/whoispp-query":{"source":"iana"},"application/whoispp-response":{"source":"iana"},"application/widget":{"source":"iana","extensions":["wgt"]},"application/winhlp":{"source":"apache","extensions":["hlp"]},"application/wita":{"source":"iana"},"application/wordperfect5.1":{"source":"iana"},"application/wsdl+xml":{"source":"iana","compressible":true,"extensions":["wsdl"]},"application/wspolicy+xml":{"source":"iana","compressible":true,"extensions":["wspolicy"]},"application/x-7z-compressed":{"source":"apache","compressible":false,"extensions":["7z"]},"application/x-abiword":{"source":"apache","extensions":["abw"]},"application/x-ace-compressed":{"source":"apache","extensions":["ace"]},"application/x-amf":{"source":"apache"},"application/x-apple-diskimage":{"source":"apache","extensions":["dmg"]},"application/x-arj":{"compressible":false,"extensions":["arj"]},"application/x-authorware-bin":{"source":"apache","extensions":["aab","x32","u32","vox"]},"application/x-authorware-map":{"source":"apache","extensions":["aam"]},"application/x-authorware-seg":{"source":"apache","extensions":["aas"]},"application/x-bcpio":{"source":"apache","extensions":["bcpio"]},"application/x-bdoc":{"compressible":false,"extensions":["bdoc"]},"application/x-bittorrent":{"source":"apache","extensions":["torrent"]},"application/x-blorb":{"source":"apache","extensions":["blb","blorb"]},"application/x-bzip":{"source":"apache","compressible":false,"extensions":["bz"]},"application/x-bzip2":{"source":"apache","compressible":false,"extensions":["bz2","boz"]},"application/x-cbr":{"source":"apache","extensions":["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{"source":"apache","extensions":["vcd"]},"application/x-cfs-compressed":{"source":"apache","extensions":["cfs"]},"application/x-chat":{"source":"apache","extensions":["chat"]},"application/x-chess-pgn":{"source":"apache","extensions":["pgn"]},"application/x-chrome-extension":{"extensions":["crx"]},"application/x-cocoa":{"source":"nginx","extensions":["cco"]},"application/x-compress":{"source":"apache"},"application/x-conference":{"source":"apache","extensions":["nsc"]},"application/x-cpio":{"source":"apache","extensions":["cpio"]},"application/x-csh":{"source":"apache","extensions":["csh"]},"application/x-deb":{"compressible":false},"application/x-debian-package":{"source":"apache","extensions":["deb","udeb"]},"application/x-dgc-compressed":{"source":"apache","extensions":["dgc"]},"application/x-director":{"source":"apache","extensions":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{"source":"apache","extensions":["wad"]},"application/x-dtbncx+xml":{"source":"apache","compressible":true,"extensions":["ncx"]},"application/x-dtbook+xml":{"source":"apache","compressible":true,"extensions":["dtb"]},"application/x-dtbresource+xml":{"source":"apache","compressible":true,"extensions":["res"]},"application/x-dvi":{"source":"apache","compressible":false,"extensions":["dvi"]},"application/x-envoy":{"source":"apache","extensions":["evy"]},"application/x-eva":{"source":"apache","extensions":["eva"]},"application/x-font-bdf":{"source":"apache","extensions":["bdf"]},"application/x-font-dos":{"source":"apache"},"application/x-font-framemaker":{"source":"apache"},"application/x-font-ghostscript":{"source":"apache","extensions":["gsf"]},"application/x-font-libgrx":{"source":"apache"},"application/x-font-linux-psf":{"source":"apache","extensions":["psf"]},"application/x-font-pcf":{"source":"apache","extensions":["pcf"]},"application/x-font-snf":{"source":"apache","extensions":["snf"]},"application/x-font-speedo":{"source":"apache"},"application/x-font-sunos-news":{"source":"apache"},"application/x-font-type1":{"source":"apache","extensions":["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{"source":"apache"},"application/x-freearc":{"source":"apache","extensions":["arc"]},"application/x-futuresplash":{"source":"apache","extensions":["spl"]},"application/x-gca-compressed":{"source":"apache","extensions":["gca"]},"application/x-glulx":{"source":"apache","extensions":["ulx"]},"application/x-gnumeric":{"source":"apache","extensions":["gnumeric"]},"application/x-gramps-xml":{"source":"apache","extensions":["gramps"]},"application/x-gtar":{"source":"apache","extensions":["gtar"]},"application/x-gzip":{"source":"apache"},"application/x-hdf":{"source":"apache","extensions":["hdf"]},"application/x-httpd-php":{"compressible":true,"extensions":["php"]},"application/x-install-instructions":{"source":"apache","extensions":["install"]},"application/x-iso9660-image":{"source":"apache","extensions":["iso"]},"application/x-iwork-keynote-sffkey":{"extensions":["key"]},"application/x-iwork-numbers-sffnumbers":{"extensions":["numbers"]},"application/x-iwork-pages-sffpages":{"extensions":["pages"]},"application/x-java-archive-diff":{"source":"nginx","extensions":["jardiff"]},"application/x-java-jnlp-file":{"source":"apache","compressible":false,"extensions":["jnlp"]},"application/x-javascript":{"compressible":true},"application/x-keepass2":{"extensions":["kdbx"]},"application/x-latex":{"source":"apache","compressible":false,"extensions":["latex"]},"application/x-lua-bytecode":{"extensions":["luac"]},"application/x-lzh-compressed":{"source":"apache","extensions":["lzh","lha"]},"application/x-makeself":{"source":"nginx","extensions":["run"]},"application/x-mie":{"source":"apache","extensions":["mie"]},"application/x-mobipocket-ebook":{"source":"apache","extensions":["prc","mobi"]},"application/x-mpegurl":{"compressible":false},"application/x-ms-application":{"source":"apache","extensions":["application"]},"application/x-ms-shortcut":{"source":"apache","extensions":["lnk"]},"application/x-ms-wmd":{"source":"apache","extensions":["wmd"]},"application/x-ms-wmz":{"source":"apache","extensions":["wmz"]},"application/x-ms-xbap":{"source":"apache","extensions":["xbap"]},"application/x-msaccess":{"source":"apache","extensions":["mdb"]},"application/x-msbinder":{"source":"apache","extensions":["obd"]},"application/x-mscardfile":{"source":"apache","extensions":["crd"]},"application/x-msclip":{"source":"apache","extensions":["clp"]},"application/x-msdos-program":{"extensions":["exe"]},"application/x-msdownload":{"source":"apache","extensions":["exe","dll","com","bat","msi"]},"application/x-msmediaview":{"source":"apache","extensions":["mvb","m13","m14"]},"application/x-msmetafile":{"source":"apache","extensions":["wmf","wmz","emf","emz"]},"application/x-msmoney":{"source":"apache","extensions":["mny"]},"application/x-mspublisher":{"source":"apache","extensions":["pub"]},"application/x-msschedule":{"source":"apache","extensions":["scd"]},"application/x-msterminal":{"source":"apache","extensions":["trm"]},"application/x-mswrite":{"source":"apache","extensions":["wri"]},"application/x-netcdf":{"source":"apache","extensions":["nc","cdf"]},"application/x-ns-proxy-autoconfig":{"compressible":true,"extensions":["pac"]},"application/x-nzb":{"source":"apache","extensions":["nzb"]},"application/x-perl":{"source":"nginx","extensions":["pl","pm"]},"application/x-pilot":{"source":"nginx","extensions":["prc","pdb"]},"application/x-pkcs12":{"source":"apache","compressible":false,"extensions":["p12","pfx"]},"application/x-pkcs7-certificates":{"source":"apache","extensions":["p7b","spc"]},"application/x-pkcs7-certreqresp":{"source":"apache","extensions":["p7r"]},"application/x-pki-message":{"source":"iana"},"application/x-rar-compressed":{"source":"apache","compressible":false,"extensions":["rar"]},"application/x-redhat-package-manager":{"source":"nginx","extensions":["rpm"]},"application/x-research-info-systems":{"source":"apache","extensions":["ris"]},"application/x-sea":{"source":"nginx","extensions":["sea"]},"application/x-sh":{"source":"apache","compressible":true,"extensions":["sh"]},"application/x-shar":{"source":"apache","extensions":["shar"]},"application/x-shockwave-flash":{"source":"apache","compressible":false,"extensions":["swf"]},"application/x-silverlight-app":{"source":"apache","extensions":["xap"]},"application/x-sql":{"source":"apache","extensions":["sql"]},"application/x-stuffit":{"source":"apache","compressible":false,"extensions":["sit"]},"application/x-stuffitx":{"source":"apache","extensions":["sitx"]},"application/x-subrip":{"source":"apache","extensions":["srt"]},"application/x-sv4cpio":{"source":"apache","extensions":["sv4cpio"]},"application/x-sv4crc":{"source":"apache","extensions":["sv4crc"]},"application/x-t3vm-image":{"source":"apache","extensions":["t3"]},"application/x-tads":{"source":"apache","extensions":["gam"]},"application/x-tar":{"source":"apache","compressible":true,"extensions":["tar"]},"application/x-tcl":{"source":"apache","extensions":["tcl","tk"]},"application/x-tex":{"source":"apache","extensions":["tex"]},"application/x-tex-tfm":{"source":"apache","extensions":["tfm"]},"application/x-texinfo":{"source":"apache","extensions":["texinfo","texi"]},"application/x-tgif":{"source":"apache","extensions":["obj"]},"application/x-ustar":{"source":"apache","extensions":["ustar"]},"application/x-virtualbox-hdd":{"compressible":true,"extensions":["hdd"]},"application/x-virtualbox-ova":{"compressible":true,"extensions":["ova"]},"application/x-virtualbox-ovf":{"compressible":true,"extensions":["ovf"]},"application/x-virtualbox-vbox":{"compressible":true,"extensions":["vbox"]},"application/x-virtualbox-vbox-extpack":{"compressible":false,"extensions":["vbox-extpack"]},"application/x-virtualbox-vdi":{"compressible":true,"extensions":["vdi"]},"application/x-virtualbox-vhd":{"compressible":true,"extensions":["vhd"]},"application/x-virtualbox-vmdk":{"compressible":true,"extensions":["vmdk"]},"application/x-wais-source":{"source":"apache","extensions":["src"]},"application/x-web-app-manifest+json":{"compressible":true,"extensions":["webapp"]},"application/x-www-form-urlencoded":{"source":"iana","compressible":true},"application/x-x509-ca-cert":{"source":"iana","extensions":["der","crt","pem"]},"application/x-x509-ca-ra-cert":{"source":"iana"},"application/x-x509-next-ca-cert":{"source":"iana"},"application/x-xfig":{"source":"apache","extensions":["fig"]},"application/x-xliff+xml":{"source":"apache","compressible":true,"extensions":["xlf"]},"application/x-xpinstall":{"source":"apache","compressible":false,"extensions":["xpi"]},"application/x-xz":{"source":"apache","extensions":["xz"]},"application/x-zmachine":{"source":"apache","extensions":["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{"source":"iana"},"application/xacml+xml":{"source":"iana","compressible":true},"application/xaml+xml":{"source":"apache","compressible":true,"extensions":["xaml"]},"application/xcap-att+xml":{"source":"iana","compressible":true,"extensions":["xav"]},"application/xcap-caps+xml":{"source":"iana","compressible":true,"extensions":["xca"]},"application/xcap-diff+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/xcap-el+xml":{"source":"iana","compressible":true,"extensions":["xel"]},"application/xcap-error+xml":{"source":"iana","compressible":true},"application/xcap-ns+xml":{"source":"iana","compressible":true,"extensions":["xns"]},"application/xcon-conference-info+xml":{"source":"iana","compressible":true},"application/xcon-conference-info-diff+xml":{"source":"iana","compressible":true},"application/xenc+xml":{"source":"iana","compressible":true,"extensions":["xenc"]},"application/xhtml+xml":{"source":"iana","compressible":true,"extensions":["xhtml","xht"]},"application/xhtml-voice+xml":{"source":"apache","compressible":true},"application/xliff+xml":{"source":"iana","compressible":true,"extensions":["xlf"]},"application/xml":{"source":"iana","compressible":true,"extensions":["xml","xsl","xsd","rng"]},"application/xml-dtd":{"source":"iana","compressible":true,"extensions":["dtd"]},"application/xml-external-parsed-entity":{"source":"iana"},"application/xml-patch+xml":{"source":"iana","compressible":true},"application/xmpp+xml":{"source":"iana","compressible":true},"application/xop+xml":{"source":"iana","compressible":true,"extensions":["xop"]},"application/xproc+xml":{"source":"apache","compressible":true,"extensions":["xpl"]},"application/xslt+xml":{"source":"iana","compressible":true,"extensions":["xsl","xslt"]},"application/xspf+xml":{"source":"apache","compressible":true,"extensions":["xspf"]},"application/xv+xml":{"source":"iana","compressible":true,"extensions":["mxml","xhvml","xvml","xvm"]},"application/yang":{"source":"iana","extensions":["yang"]},"application/yang-data+json":{"source":"iana","compressible":true},"application/yang-data+xml":{"source":"iana","compressible":true},"application/yang-patch+json":{"source":"iana","compressible":true},"application/yang-patch+xml":{"source":"iana","compressible":true},"application/yin+xml":{"source":"iana","compressible":true,"extensions":["yin"]},"application/zip":{"source":"iana","compressible":false,"extensions":["zip"]},"application/zlib":{"source":"iana"},"application/zstd":{"source":"iana"},"audio/1d-interleaved-parityfec":{"source":"iana"},"audio/32kadpcm":{"source":"iana"},"audio/3gpp":{"source":"iana","compressible":false,"extensions":["3gpp"]},"audio/3gpp2":{"source":"iana"},"audio/aac":{"source":"iana"},"audio/ac3":{"source":"iana"},"audio/adpcm":{"source":"apache","extensions":["adp"]},"audio/amr":{"source":"iana","extensions":["amr"]},"audio/amr-wb":{"source":"iana"},"audio/amr-wb+":{"source":"iana"},"audio/aptx":{"source":"iana"},"audio/asc":{"source":"iana"},"audio/atrac-advanced-lossless":{"source":"iana"},"audio/atrac-x":{"source":"iana"},"audio/atrac3":{"source":"iana"},"audio/basic":{"source":"iana","compressible":false,"extensions":["au","snd"]},"audio/bv16":{"source":"iana"},"audio/bv32":{"source":"iana"},"audio/clearmode":{"source":"iana"},"audio/cn":{"source":"iana"},"audio/dat12":{"source":"iana"},"audio/dls":{"source":"iana"},"audio/dsr-es201108":{"source":"iana"},"audio/dsr-es202050":{"source":"iana"},"audio/dsr-es202211":{"source":"iana"},"audio/dsr-es202212":{"source":"iana"},"audio/dv":{"source":"iana"},"audio/dvi4":{"source":"iana"},"audio/eac3":{"source":"iana"},"audio/encaprtp":{"source":"iana"},"audio/evrc":{"source":"iana"},"audio/evrc-qcp":{"source":"iana"},"audio/evrc0":{"source":"iana"},"audio/evrc1":{"source":"iana"},"audio/evrcb":{"source":"iana"},"audio/evrcb0":{"source":"iana"},"audio/evrcb1":{"source":"iana"},"audio/evrcnw":{"source":"iana"},"audio/evrcnw0":{"source":"iana"},"audio/evrcnw1":{"source":"iana"},"audio/evrcwb":{"source":"iana"},"audio/evrcwb0":{"source":"iana"},"audio/evrcwb1":{"source":"iana"},"audio/evs":{"source":"iana"},"audio/flexfec":{"source":"iana"},"audio/fwdred":{"source":"iana"},"audio/g711-0":{"source":"iana"},"audio/g719":{"source":"iana"},"audio/g722":{"source":"iana"},"audio/g7221":{"source":"iana"},"audio/g723":{"source":"iana"},"audio/g726-16":{"source":"iana"},"audio/g726-24":{"source":"iana"},"audio/g726-32":{"source":"iana"},"audio/g726-40":{"source":"iana"},"audio/g728":{"source":"iana"},"audio/g729":{"source":"iana"},"audio/g7291":{"source":"iana"},"audio/g729d":{"source":"iana"},"audio/g729e":{"source":"iana"},"audio/gsm":{"source":"iana"},"audio/gsm-efr":{"source":"iana"},"audio/gsm-hr-08":{"source":"iana"},"audio/ilbc":{"source":"iana"},"audio/ip-mr_v2.5":{"source":"iana"},"audio/isac":{"source":"apache"},"audio/l16":{"source":"iana"},"audio/l20":{"source":"iana"},"audio/l24":{"source":"iana","compressible":false},"audio/l8":{"source":"iana"},"audio/lpc":{"source":"iana"},"audio/melp":{"source":"iana"},"audio/melp1200":{"source":"iana"},"audio/melp2400":{"source":"iana"},"audio/melp600":{"source":"iana"},"audio/mhas":{"source":"iana"},"audio/midi":{"source":"apache","extensions":["mid","midi","kar","rmi"]},"audio/mobile-xmf":{"source":"iana","extensions":["mxmf"]},"audio/mp3":{"compressible":false,"extensions":["mp3"]},"audio/mp4":{"source":"iana","compressible":false,"extensions":["m4a","mp4a"]},"audio/mp4a-latm":{"source":"iana"},"audio/mpa":{"source":"iana"},"audio/mpa-robust":{"source":"iana"},"audio/mpeg":{"source":"iana","compressible":false,"extensions":["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{"source":"iana"},"audio/musepack":{"source":"apache"},"audio/ogg":{"source":"iana","compressible":false,"extensions":["oga","ogg","spx","opus"]},"audio/opus":{"source":"iana"},"audio/parityfec":{"source":"iana"},"audio/pcma":{"source":"iana"},"audio/pcma-wb":{"source":"iana"},"audio/pcmu":{"source":"iana"},"audio/pcmu-wb":{"source":"iana"},"audio/prs.sid":{"source":"iana"},"audio/qcelp":{"source":"iana"},"audio/raptorfec":{"source":"iana"},"audio/red":{"source":"iana"},"audio/rtp-enc-aescm128":{"source":"iana"},"audio/rtp-midi":{"source":"iana"},"audio/rtploopback":{"source":"iana"},"audio/rtx":{"source":"iana"},"audio/s3m":{"source":"apache","extensions":["s3m"]},"audio/scip":{"source":"iana"},"audio/silk":{"source":"apache","extensions":["sil"]},"audio/smv":{"source":"iana"},"audio/smv-qcp":{"source":"iana"},"audio/smv0":{"source":"iana"},"audio/sofa":{"source":"iana"},"audio/sp-midi":{"source":"iana"},"audio/speex":{"source":"iana"},"audio/t140c":{"source":"iana"},"audio/t38":{"source":"iana"},"audio/telephone-event":{"source":"iana"},"audio/tetra_acelp":{"source":"iana"},"audio/tetra_acelp_bb":{"source":"iana"},"audio/tone":{"source":"iana"},"audio/tsvcis":{"source":"iana"},"audio/uemclip":{"source":"iana"},"audio/ulpfec":{"source":"iana"},"audio/usac":{"source":"iana"},"audio/vdvi":{"source":"iana"},"audio/vmr-wb":{"source":"iana"},"audio/vnd.3gpp.iufp":{"source":"iana"},"audio/vnd.4sb":{"source":"iana"},"audio/vnd.audiokoz":{"source":"iana"},"audio/vnd.celp":{"source":"iana"},"audio/vnd.cisco.nse":{"source":"iana"},"audio/vnd.cmles.radio-events":{"source":"iana"},"audio/vnd.cns.anp1":{"source":"iana"},"audio/vnd.cns.inf1":{"source":"iana"},"audio/vnd.dece.audio":{"source":"iana","extensions":["uva","uvva"]},"audio/vnd.digital-winds":{"source":"iana","extensions":["eol"]},"audio/vnd.dlna.adts":{"source":"iana"},"audio/vnd.dolby.heaac.1":{"source":"iana"},"audio/vnd.dolby.heaac.2":{"source":"iana"},"audio/vnd.dolby.mlp":{"source":"iana"},"audio/vnd.dolby.mps":{"source":"iana"},"audio/vnd.dolby.pl2":{"source":"iana"},"audio/vnd.dolby.pl2x":{"source":"iana"},"audio/vnd.dolby.pl2z":{"source":"iana"},"audio/vnd.dolby.pulse.1":{"source":"iana"},"audio/vnd.dra":{"source":"iana","extensions":["dra"]},"audio/vnd.dts":{"source":"iana","extensions":["dts"]},"audio/vnd.dts.hd":{"source":"iana","extensions":["dtshd"]},"audio/vnd.dts.uhd":{"source":"iana"},"audio/vnd.dvb.file":{"source":"iana"},"audio/vnd.everad.plj":{"source":"iana"},"audio/vnd.hns.audio":{"source":"iana"},"audio/vnd.lucent.voice":{"source":"iana","extensions":["lvp"]},"audio/vnd.ms-playready.media.pya":{"source":"iana","extensions":["pya"]},"audio/vnd.nokia.mobile-xmf":{"source":"iana"},"audio/vnd.nortel.vbk":{"source":"iana"},"audio/vnd.nuera.ecelp4800":{"source":"iana","extensions":["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{"source":"iana","extensions":["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{"source":"iana","extensions":["ecelp9600"]},"audio/vnd.octel.sbc":{"source":"iana"},"audio/vnd.presonus.multitrack":{"source":"iana"},"audio/vnd.qcelp":{"source":"iana"},"audio/vnd.rhetorex.32kadpcm":{"source":"iana"},"audio/vnd.rip":{"source":"iana","extensions":["rip"]},"audio/vnd.rn-realaudio":{"compressible":false},"audio/vnd.sealedmedia.softseal.mpeg":{"source":"iana"},"audio/vnd.vmx.cvsd":{"source":"iana"},"audio/vnd.wave":{"compressible":false},"audio/vorbis":{"source":"iana","compressible":false},"audio/vorbis-config":{"source":"iana"},"audio/wav":{"compressible":false,"extensions":["wav"]},"audio/wave":{"compressible":false,"extensions":["wav"]},"audio/webm":{"source":"apache","compressible":false,"extensions":["weba"]},"audio/x-aac":{"source":"apache","compressible":false,"extensions":["aac"]},"audio/x-aiff":{"source":"apache","extensions":["aif","aiff","aifc"]},"audio/x-caf":{"source":"apache","compressible":false,"extensions":["caf"]},"audio/x-flac":{"source":"apache","extensions":["flac"]},"audio/x-m4a":{"source":"nginx","extensions":["m4a"]},"audio/x-matroska":{"source":"apache","extensions":["mka"]},"audio/x-mpegurl":{"source":"apache","extensions":["m3u"]},"audio/x-ms-wax":{"source":"apache","extensions":["wax"]},"audio/x-ms-wma":{"source":"apache","extensions":["wma"]},"audio/x-pn-realaudio":{"source":"apache","extensions":["ram","ra"]},"audio/x-pn-realaudio-plugin":{"source":"apache","extensions":["rmp"]},"audio/x-realaudio":{"source":"nginx","extensions":["ra"]},"audio/x-tta":{"source":"apache"},"audio/x-wav":{"source":"apache","extensions":["wav"]},"audio/xm":{"source":"apache","extensions":["xm"]},"chemical/x-cdx":{"source":"apache","extensions":["cdx"]},"chemical/x-cif":{"source":"apache","extensions":["cif"]},"chemical/x-cmdf":{"source":"apache","extensions":["cmdf"]},"chemical/x-cml":{"source":"apache","extensions":["cml"]},"chemical/x-csml":{"source":"apache","extensions":["csml"]},"chemical/x-pdb":{"source":"apache"},"chemical/x-xyz":{"source":"apache","extensions":["xyz"]},"font/collection":{"source":"iana","extensions":["ttc"]},"font/otf":{"source":"iana","compressible":true,"extensions":["otf"]},"font/sfnt":{"source":"iana"},"font/ttf":{"source":"iana","compressible":true,"extensions":["ttf"]},"font/woff":{"source":"iana","extensions":["woff"]},"font/woff2":{"source":"iana","extensions":["woff2"]},"image/aces":{"source":"iana","extensions":["exr"]},"image/apng":{"compressible":false,"extensions":["apng"]},"image/avci":{"source":"iana","extensions":["avci"]},"image/avcs":{"source":"iana","extensions":["avcs"]},"image/avif":{"source":"iana","compressible":false,"extensions":["avif"]},"image/bmp":{"source":"iana","compressible":true,"extensions":["bmp"]},"image/cgm":{"source":"iana","extensions":["cgm"]},"image/dicom-rle":{"source":"iana","extensions":["drle"]},"image/emf":{"source":"iana","extensions":["emf"]},"image/fits":{"source":"iana","extensions":["fits"]},"image/g3fax":{"source":"iana","extensions":["g3"]},"image/gif":{"source":"iana","compressible":false,"extensions":["gif"]},"image/heic":{"source":"iana","extensions":["heic"]},"image/heic-sequence":{"source":"iana","extensions":["heics"]},"image/heif":{"source":"iana","extensions":["heif"]},"image/heif-sequence":{"source":"iana","extensions":["heifs"]},"image/hej2k":{"source":"iana","extensions":["hej2"]},"image/hsj2":{"source":"iana","extensions":["hsj2"]},"image/ief":{"source":"iana","extensions":["ief"]},"image/jls":{"source":"iana","extensions":["jls"]},"image/jp2":{"source":"iana","compressible":false,"extensions":["jp2","jpg2"]},"image/jpeg":{"source":"iana","compressible":false,"extensions":["jpeg","jpg","jpe"]},"image/jph":{"source":"iana","extensions":["jph"]},"image/jphc":{"source":"iana","extensions":["jhc"]},"image/jpm":{"source":"iana","compressible":false,"extensions":["jpm"]},"image/jpx":{"source":"iana","compressible":false,"extensions":["jpx","jpf"]},"image/jxr":{"source":"iana","extensions":["jxr"]},"image/jxra":{"source":"iana","extensions":["jxra"]},"image/jxrs":{"source":"iana","extensions":["jxrs"]},"image/jxs":{"source":"iana","extensions":["jxs"]},"image/jxsc":{"source":"iana","extensions":["jxsc"]},"image/jxsi":{"source":"iana","extensions":["jxsi"]},"image/jxss":{"source":"iana","extensions":["jxss"]},"image/ktx":{"source":"iana","extensions":["ktx"]},"image/ktx2":{"source":"iana","extensions":["ktx2"]},"image/naplps":{"source":"iana"},"image/pjpeg":{"compressible":false},"image/png":{"source":"iana","compressible":false,"extensions":["png"]},"image/prs.btif":{"source":"iana","extensions":["btif"]},"image/prs.pti":{"source":"iana","extensions":["pti"]},"image/pwg-raster":{"source":"iana"},"image/sgi":{"source":"apache","extensions":["sgi"]},"image/svg+xml":{"source":"iana","compressible":true,"extensions":["svg","svgz"]},"image/t38":{"source":"iana","extensions":["t38"]},"image/tiff":{"source":"iana","compressible":false,"extensions":["tif","tiff"]},"image/tiff-fx":{"source":"iana","extensions":["tfx"]},"image/vnd.adobe.photoshop":{"source":"iana","compressible":true,"extensions":["psd"]},"image/vnd.airzip.accelerator.azv":{"source":"iana","extensions":["azv"]},"image/vnd.cns.inf2":{"source":"iana"},"image/vnd.dece.graphic":{"source":"iana","extensions":["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{"source":"iana","extensions":["djvu","djv"]},"image/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"image/vnd.dwg":{"source":"iana","extensions":["dwg"]},"image/vnd.dxf":{"source":"iana","extensions":["dxf"]},"image/vnd.fastbidsheet":{"source":"iana","extensions":["fbs"]},"image/vnd.fpx":{"source":"iana","extensions":["fpx"]},"image/vnd.fst":{"source":"iana","extensions":["fst"]},"image/vnd.fujixerox.edmics-mmr":{"source":"iana","extensions":["mmr"]},"image/vnd.fujixerox.edmics-rlc":{"source":"iana","extensions":["rlc"]},"image/vnd.globalgraphics.pgb":{"source":"iana"},"image/vnd.microsoft.icon":{"source":"iana","compressible":true,"extensions":["ico"]},"image/vnd.mix":{"source":"iana"},"image/vnd.mozilla.apng":{"source":"iana"},"image/vnd.ms-dds":{"compressible":true,"extensions":["dds"]},"image/vnd.ms-modi":{"source":"iana","extensions":["mdi"]},"image/vnd.ms-photo":{"source":"apache","extensions":["wdp"]},"image/vnd.net-fpx":{"source":"iana","extensions":["npx"]},"image/vnd.pco.b16":{"source":"iana","extensions":["b16"]},"image/vnd.radiance":{"source":"iana"},"image/vnd.sealed.png":{"source":"iana"},"image/vnd.sealedmedia.softseal.gif":{"source":"iana"},"image/vnd.sealedmedia.softseal.jpg":{"source":"iana"},"image/vnd.svf":{"source":"iana"},"image/vnd.tencent.tap":{"source":"iana","extensions":["tap"]},"image/vnd.valve.source.texture":{"source":"iana","extensions":["vtf"]},"image/vnd.wap.wbmp":{"source":"iana","extensions":["wbmp"]},"image/vnd.xiff":{"source":"iana","extensions":["xif"]},"image/vnd.zbrush.pcx":{"source":"iana","extensions":["pcx"]},"image/webp":{"source":"apache","extensions":["webp"]},"image/wmf":{"source":"iana","extensions":["wmf"]},"image/x-3ds":{"source":"apache","extensions":["3ds"]},"image/x-cmu-raster":{"source":"apache","extensions":["ras"]},"image/x-cmx":{"source":"apache","extensions":["cmx"]},"image/x-freehand":{"source":"apache","extensions":["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{"source":"apache","compressible":true,"extensions":["ico"]},"image/x-jng":{"source":"nginx","extensions":["jng"]},"image/x-mrsid-image":{"source":"apache","extensions":["sid"]},"image/x-ms-bmp":{"source":"nginx","compressible":true,"extensions":["bmp"]},"image/x-pcx":{"source":"apache","extensions":["pcx"]},"image/x-pict":{"source":"apache","extensions":["pic","pct"]},"image/x-portable-anymap":{"source":"apache","extensions":["pnm"]},"image/x-portable-bitmap":{"source":"apache","extensions":["pbm"]},"image/x-portable-graymap":{"source":"apache","extensions":["pgm"]},"image/x-portable-pixmap":{"source":"apache","extensions":["ppm"]},"image/x-rgb":{"source":"apache","extensions":["rgb"]},"image/x-tga":{"source":"apache","extensions":["tga"]},"image/x-xbitmap":{"source":"apache","extensions":["xbm"]},"image/x-xcf":{"compressible":false},"image/x-xpixmap":{"source":"apache","extensions":["xpm"]},"image/x-xwindowdump":{"source":"apache","extensions":["xwd"]},"message/cpim":{"source":"iana"},"message/delivery-status":{"source":"iana"},"message/disposition-notification":{"source":"iana","extensions":["disposition-notification"]},"message/external-body":{"source":"iana"},"message/feedback-report":{"source":"iana"},"message/global":{"source":"iana","extensions":["u8msg"]},"message/global-delivery-status":{"source":"iana","extensions":["u8dsn"]},"message/global-disposition-notification":{"source":"iana","extensions":["u8mdn"]},"message/global-headers":{"source":"iana","extensions":["u8hdr"]},"message/http":{"source":"iana","compressible":false},"message/imdn+xml":{"source":"iana","compressible":true},"message/news":{"source":"iana"},"message/partial":{"source":"iana","compressible":false},"message/rfc822":{"source":"iana","compressible":true,"extensions":["eml","mime"]},"message/s-http":{"source":"iana"},"message/sip":{"source":"iana"},"message/sipfrag":{"source":"iana"},"message/tracking-status":{"source":"iana"},"message/vnd.si.simp":{"source":"iana"},"message/vnd.wfa.wsc":{"source":"iana","extensions":["wsc"]},"model/3mf":{"source":"iana","extensions":["3mf"]},"model/e57":{"source":"iana"},"model/gltf+json":{"source":"iana","compressible":true,"extensions":["gltf"]},"model/gltf-binary":{"source":"iana","compressible":true,"extensions":["glb"]},"model/iges":{"source":"iana","compressible":false,"extensions":["igs","iges"]},"model/mesh":{"source":"iana","compressible":false,"extensions":["msh","mesh","silo"]},"model/mtl":{"source":"iana","extensions":["mtl"]},"model/obj":{"source":"iana","extensions":["obj"]},"model/step":{"source":"iana"},"model/step+xml":{"source":"iana","compressible":true,"extensions":["stpx"]},"model/step+zip":{"source":"iana","compressible":false,"extensions":["stpz"]},"model/step-xml+zip":{"source":"iana","compressible":false,"extensions":["stpxz"]},"model/stl":{"source":"iana","extensions":["stl"]},"model/vnd.collada+xml":{"source":"iana","compressible":true,"extensions":["dae"]},"model/vnd.dwf":{"source":"iana","extensions":["dwf"]},"model/vnd.flatland.3dml":{"source":"iana"},"model/vnd.gdl":{"source":"iana","extensions":["gdl"]},"model/vnd.gs-gdl":{"source":"apache"},"model/vnd.gs.gdl":{"source":"iana"},"model/vnd.gtw":{"source":"iana","extensions":["gtw"]},"model/vnd.moml+xml":{"source":"iana","compressible":true},"model/vnd.mts":{"source":"iana","extensions":["mts"]},"model/vnd.opengex":{"source":"iana","extensions":["ogex"]},"model/vnd.parasolid.transmit.binary":{"source":"iana","extensions":["x_b"]},"model/vnd.parasolid.transmit.text":{"source":"iana","extensions":["x_t"]},"model/vnd.pytha.pyox":{"source":"iana"},"model/vnd.rosette.annotated-data-model":{"source":"iana"},"model/vnd.sap.vds":{"source":"iana","extensions":["vds"]},"model/vnd.usdz+zip":{"source":"iana","compressible":false,"extensions":["usdz"]},"model/vnd.valve.source.compiled-map":{"source":"iana","extensions":["bsp"]},"model/vnd.vtu":{"source":"iana","extensions":["vtu"]},"model/vrml":{"source":"iana","compressible":false,"extensions":["wrl","vrml"]},"model/x3d+binary":{"source":"apache","compressible":false,"extensions":["x3db","x3dbz"]},"model/x3d+fastinfoset":{"source":"iana","extensions":["x3db"]},"model/x3d+vrml":{"source":"apache","compressible":false,"extensions":["x3dv","x3dvz"]},"model/x3d+xml":{"source":"iana","compressible":true,"extensions":["x3d","x3dz"]},"model/x3d-vrml":{"source":"iana","extensions":["x3dv"]},"multipart/alternative":{"source":"iana","compressible":false},"multipart/appledouble":{"source":"iana"},"multipart/byteranges":{"source":"iana"},"multipart/digest":{"source":"iana"},"multipart/encrypted":{"source":"iana","compressible":false},"multipart/form-data":{"source":"iana","compressible":false},"multipart/header-set":{"source":"iana"},"multipart/mixed":{"source":"iana"},"multipart/multilingual":{"source":"iana"},"multipart/parallel":{"source":"iana"},"multipart/related":{"source":"iana","compressible":false},"multipart/report":{"source":"iana"},"multipart/signed":{"source":"iana","compressible":false},"multipart/vnd.bint.med-plus":{"source":"iana"},"multipart/voice-message":{"source":"iana"},"multipart/x-mixed-replace":{"source":"iana"},"text/1d-interleaved-parityfec":{"source":"iana"},"text/cache-manifest":{"source":"iana","compressible":true,"extensions":["appcache","manifest"]},"text/calendar":{"source":"iana","extensions":["ics","ifb"]},"text/calender":{"compressible":true},"text/cmd":{"compressible":true},"text/coffeescript":{"extensions":["coffee","litcoffee"]},"text/cql":{"source":"iana"},"text/cql-expression":{"source":"iana"},"text/cql-identifier":{"source":"iana"},"text/css":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["css"]},"text/csv":{"source":"iana","compressible":true,"extensions":["csv"]},"text/csv-schema":{"source":"iana"},"text/directory":{"source":"iana"},"text/dns":{"source":"iana"},"text/ecmascript":{"source":"iana"},"text/encaprtp":{"source":"iana"},"text/enriched":{"source":"iana"},"text/fhirpath":{"source":"iana"},"text/flexfec":{"source":"iana"},"text/fwdred":{"source":"iana"},"text/gff3":{"source":"iana"},"text/grammar-ref-list":{"source":"iana"},"text/html":{"source":"iana","compressible":true,"extensions":["html","htm","shtml"]},"text/jade":{"extensions":["jade"]},"text/javascript":{"source":"iana","compressible":true},"text/jcr-cnd":{"source":"iana"},"text/jsx":{"compressible":true,"extensions":["jsx"]},"text/less":{"compressible":true,"extensions":["less"]},"text/markdown":{"source":"iana","compressible":true,"extensions":["markdown","md"]},"text/mathml":{"source":"nginx","extensions":["mml"]},"text/mdx":{"compressible":true,"extensions":["mdx"]},"text/mizar":{"source":"iana"},"text/n3":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["n3"]},"text/parameters":{"source":"iana","charset":"UTF-8"},"text/parityfec":{"source":"iana"},"text/plain":{"source":"iana","compressible":true,"extensions":["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{"source":"iana","charset":"UTF-8"},"text/prs.fallenstein.rst":{"source":"iana"},"text/prs.lines.tag":{"source":"iana","extensions":["dsc"]},"text/prs.prop.logic":{"source":"iana"},"text/raptorfec":{"source":"iana"},"text/red":{"source":"iana"},"text/rfc822-headers":{"source":"iana"},"text/richtext":{"source":"iana","compressible":true,"extensions":["rtx"]},"text/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"text/rtp-enc-aescm128":{"source":"iana"},"text/rtploopback":{"source":"iana"},"text/rtx":{"source":"iana"},"text/sgml":{"source":"iana","extensions":["sgml","sgm"]},"text/shaclc":{"source":"iana"},"text/shex":{"source":"iana","extensions":["shex"]},"text/slim":{"extensions":["slim","slm"]},"text/spdx":{"source":"iana","extensions":["spdx"]},"text/strings":{"source":"iana"},"text/stylus":{"extensions":["stylus","styl"]},"text/t140":{"source":"iana"},"text/tab-separated-values":{"source":"iana","compressible":true,"extensions":["tsv"]},"text/troff":{"source":"iana","extensions":["t","tr","roff","man","me","ms"]},"text/turtle":{"source":"iana","charset":"UTF-8","extensions":["ttl"]},"text/ulpfec":{"source":"iana"},"text/uri-list":{"source":"iana","compressible":true,"extensions":["uri","uris","urls"]},"text/vcard":{"source":"iana","compressible":true,"extensions":["vcard"]},"text/vnd.a":{"source":"iana"},"text/vnd.abc":{"source":"iana"},"text/vnd.ascii-art":{"source":"iana"},"text/vnd.curl":{"source":"iana","extensions":["curl"]},"text/vnd.curl.dcurl":{"source":"apache","extensions":["dcurl"]},"text/vnd.curl.mcurl":{"source":"apache","extensions":["mcurl"]},"text/vnd.curl.scurl":{"source":"apache","extensions":["scurl"]},"text/vnd.debian.copyright":{"source":"iana","charset":"UTF-8"},"text/vnd.dmclientscript":{"source":"iana"},"text/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"text/vnd.esmertec.theme-descriptor":{"source":"iana","charset":"UTF-8"},"text/vnd.familysearch.gedcom":{"source":"iana","extensions":["ged"]},"text/vnd.ficlab.flt":{"source":"iana"},"text/vnd.fly":{"source":"iana","extensions":["fly"]},"text/vnd.fmi.flexstor":{"source":"iana","extensions":["flx"]},"text/vnd.gml":{"source":"iana"},"text/vnd.graphviz":{"source":"iana","extensions":["gv"]},"text/vnd.hans":{"source":"iana"},"text/vnd.hgl":{"source":"iana"},"text/vnd.in3d.3dml":{"source":"iana","extensions":["3dml"]},"text/vnd.in3d.spot":{"source":"iana","extensions":["spot"]},"text/vnd.iptc.newsml":{"source":"iana"},"text/vnd.iptc.nitf":{"source":"iana"},"text/vnd.latex-z":{"source":"iana"},"text/vnd.motorola.reflex":{"source":"iana"},"text/vnd.ms-mediapackage":{"source":"iana"},"text/vnd.net2phone.commcenter.command":{"source":"iana"},"text/vnd.radisys.msml-basic-layout":{"source":"iana"},"text/vnd.senx.warpscript":{"source":"iana"},"text/vnd.si.uricatalogue":{"source":"iana"},"text/vnd.sosi":{"source":"iana"},"text/vnd.sun.j2me.app-descriptor":{"source":"iana","charset":"UTF-8","extensions":["jad"]},"text/vnd.trolltech.linguist":{"source":"iana","charset":"UTF-8"},"text/vnd.wap.si":{"source":"iana"},"text/vnd.wap.sl":{"source":"iana"},"text/vnd.wap.wml":{"source":"iana","extensions":["wml"]},"text/vnd.wap.wmlscript":{"source":"iana","extensions":["wmls"]},"text/vtt":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["vtt"]},"text/x-asm":{"source":"apache","extensions":["s","asm"]},"text/x-c":{"source":"apache","extensions":["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{"source":"nginx","extensions":["htc"]},"text/x-fortran":{"source":"apache","extensions":["f","for","f77","f90"]},"text/x-gwt-rpc":{"compressible":true},"text/x-handlebars-template":{"extensions":["hbs"]},"text/x-java-source":{"source":"apache","extensions":["java"]},"text/x-jquery-tmpl":{"compressible":true},"text/x-lua":{"extensions":["lua"]},"text/x-markdown":{"compressible":true,"extensions":["mkd"]},"text/x-nfo":{"source":"apache","extensions":["nfo"]},"text/x-opml":{"source":"apache","extensions":["opml"]},"text/x-org":{"compressible":true,"extensions":["org"]},"text/x-pascal":{"source":"apache","extensions":["p","pas"]},"text/x-processing":{"compressible":true,"extensions":["pde"]},"text/x-sass":{"extensions":["sass"]},"text/x-scss":{"extensions":["scss"]},"text/x-setext":{"source":"apache","extensions":["etx"]},"text/x-sfv":{"source":"apache","extensions":["sfv"]},"text/x-suse-ymp":{"compressible":true,"extensions":["ymp"]},"text/x-uuencode":{"source":"apache","extensions":["uu"]},"text/x-vcalendar":{"source":"apache","extensions":["vcs"]},"text/x-vcard":{"source":"apache","extensions":["vcf"]},"text/xml":{"source":"iana","compressible":true,"extensions":["xml"]},"text/xml-external-parsed-entity":{"source":"iana"},"text/yaml":{"compressible":true,"extensions":["yaml","yml"]},"video/1d-interleaved-parityfec":{"source":"iana"},"video/3gpp":{"source":"iana","extensions":["3gp","3gpp"]},"video/3gpp-tt":{"source":"iana"},"video/3gpp2":{"source":"iana","extensions":["3g2"]},"video/av1":{"source":"iana"},"video/bmpeg":{"source":"iana"},"video/bt656":{"source":"iana"},"video/celb":{"source":"iana"},"video/dv":{"source":"iana"},"video/encaprtp":{"source":"iana"},"video/ffv1":{"source":"iana"},"video/flexfec":{"source":"iana"},"video/h261":{"source":"iana","extensions":["h261"]},"video/h263":{"source":"iana","extensions":["h263"]},"video/h263-1998":{"source":"iana"},"video/h263-2000":{"source":"iana"},"video/h264":{"source":"iana","extensions":["h264"]},"video/h264-rcdo":{"source":"iana"},"video/h264-svc":{"source":"iana"},"video/h265":{"source":"iana"},"video/iso.segment":{"source":"iana","extensions":["m4s"]},"video/jpeg":{"source":"iana","extensions":["jpgv"]},"video/jpeg2000":{"source":"iana"},"video/jpm":{"source":"apache","extensions":["jpm","jpgm"]},"video/jxsv":{"source":"iana"},"video/mj2":{"source":"iana","extensions":["mj2","mjp2"]},"video/mp1s":{"source":"iana"},"video/mp2p":{"source":"iana"},"video/mp2t":{"source":"iana","extensions":["ts"]},"video/mp4":{"source":"iana","compressible":false,"extensions":["mp4","mp4v","mpg4"]},"video/mp4v-es":{"source":"iana"},"video/mpeg":{"source":"iana","compressible":false,"extensions":["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{"source":"iana"},"video/mpv":{"source":"iana"},"video/nv":{"source":"iana"},"video/ogg":{"source":"iana","compressible":false,"extensions":["ogv"]},"video/parityfec":{"source":"iana"},"video/pointer":{"source":"iana"},"video/quicktime":{"source":"iana","compressible":false,"extensions":["qt","mov"]},"video/raptorfec":{"source":"iana"},"video/raw":{"source":"iana"},"video/rtp-enc-aescm128":{"source":"iana"},"video/rtploopback":{"source":"iana"},"video/rtx":{"source":"iana"},"video/scip":{"source":"iana"},"video/smpte291":{"source":"iana"},"video/smpte292m":{"source":"iana"},"video/ulpfec":{"source":"iana"},"video/vc1":{"source":"iana"},"video/vc2":{"source":"iana"},"video/vnd.cctv":{"source":"iana"},"video/vnd.dece.hd":{"source":"iana","extensions":["uvh","uvvh"]},"video/vnd.dece.mobile":{"source":"iana","extensions":["uvm","uvvm"]},"video/vnd.dece.mp4":{"source":"iana"},"video/vnd.dece.pd":{"source":"iana","extensions":["uvp","uvvp"]},"video/vnd.dece.sd":{"source":"iana","extensions":["uvs","uvvs"]},"video/vnd.dece.video":{"source":"iana","extensions":["uvv","uvvv"]},"video/vnd.directv.mpeg":{"source":"iana"},"video/vnd.directv.mpeg-tts":{"source":"iana"},"video/vnd.dlna.mpeg-tts":{"source":"iana"},"video/vnd.dvb.file":{"source":"iana","extensions":["dvb"]},"video/vnd.fvt":{"source":"iana","extensions":["fvt"]},"video/vnd.hns.video":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.ttsavc":{"source":"iana"},"video/vnd.iptvforum.ttsmpeg2":{"source":"iana"},"video/vnd.motorola.video":{"source":"iana"},"video/vnd.motorola.videop":{"source":"iana"},"video/vnd.mpegurl":{"source":"iana","extensions":["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{"source":"iana","extensions":["pyv"]},"video/vnd.nokia.interleaved-multimedia":{"source":"iana"},"video/vnd.nokia.mp4vr":{"source":"iana"},"video/vnd.nokia.videovoip":{"source":"iana"},"video/vnd.objectvideo":{"source":"iana"},"video/vnd.radgamettools.bink":{"source":"iana"},"video/vnd.radgamettools.smacker":{"source":"iana"},"video/vnd.sealed.mpeg1":{"source":"iana"},"video/vnd.sealed.mpeg4":{"source":"iana"},"video/vnd.sealed.swf":{"source":"iana"},"video/vnd.sealedmedia.softseal.mov":{"source":"iana"},"video/vnd.uvvu.mp4":{"source":"iana","extensions":["uvu","uvvu"]},"video/vnd.vivo":{"source":"iana","extensions":["viv"]},"video/vnd.youtube.yt":{"source":"iana"},"video/vp8":{"source":"iana"},"video/vp9":{"source":"iana"},"video/webm":{"source":"apache","compressible":false,"extensions":["webm"]},"video/x-f4v":{"source":"apache","extensions":["f4v"]},"video/x-fli":{"source":"apache","extensions":["fli"]},"video/x-flv":{"source":"apache","compressible":false,"extensions":["flv"]},"video/x-m4v":{"source":"apache","extensions":["m4v"]},"video/x-matroska":{"source":"apache","compressible":false,"extensions":["mkv","mk3d","mks"]},"video/x-mng":{"source":"apache","extensions":["mng"]},"video/x-ms-asf":{"source":"apache","extensions":["asf","asx"]},"video/x-ms-vob":{"source":"apache","extensions":["vob"]},"video/x-ms-wm":{"source":"apache","extensions":["wm"]},"video/x-ms-wmv":{"source":"apache","compressible":false,"extensions":["wmv"]},"video/x-ms-wmx":{"source":"apache","extensions":["wmx"]},"video/x-ms-wvx":{"source":"apache","extensions":["wvx"]},"video/x-msvideo":{"source":"apache","extensions":["avi"]},"video/x-sgi-movie":{"source":"apache","extensions":["movie"]},"video/x-smv":{"source":"apache","extensions":["smv"]},"x-conference/x-cooltalk":{"source":"apache","extensions":["ice"]},"x-shader/x-fragment":{"compressible":true},"x-shader/x-vertex":{"compressible":true}}\');\n\n//# sourceURL=webpack://txadmin/./node_modules/mime-db/db.json?')},"./node_modules/openid-client/package.json":
/*!*************************************************!*\
  !*** ./node_modules/openid-client/package.json ***!
  \*************************************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"name":"openid-client","version":"5.1.7","description":"OpenID Connect Relying Party (RP, Client) implementation for Node.js runtime, supports passportjs","keywords":["auth","authentication","basic","certified","client","connect","dynamic","electron","hybrid","identity","implicit","oauth","oauth2","oidc","openid","passport","relying party","strategy"],"homepage":"https://github.com/panva/node-openid-client","repository":"panva/node-openid-client","funding":{"url":"https://github.com/sponsors/panva"},"license":"MIT","author":"Filip Skokan <panva.ip@gmail.com>","exports":{"types":"./types/index.d.ts","import":"./lib/index.mjs","require":"./lib/index.js"},"main":"./lib/index.js","types":"./types/index.d.ts","files":["lib","types/index.d.ts"],"scripts":{"coverage":"nyc mocha test/**/*.test.js","prettier":"npx prettier --loglevel silent --write ./lib ./test ./certification ./types","test":"mocha test/**/*.test.js"},"nyc":{"reporter":["lcov","text-summary"]},"dependencies":{"jose":"^4.1.4","lru-cache":"^6.0.0","object-hash":"^2.0.1","oidc-token-hash":"^5.0.1"},"devDependencies":{"@types/node":"^16.11.5","@types/passport":"^1.0.7","base64url":"^3.0.1","chai":"^4.2.0","jose2":"npm:jose@^2.0.5","mocha":"^8.2.0","nock":"^13.0.2","nyc":"^15.1.0","prettier":"^2.4.1","readable-mock-req":"^0.2.2","sinon":"^9.2.0","timekeeper":"^2.2.0"},"engines":{"node":"^12.19.0 || ^14.15.0 || ^16.13.0"},"standard-version":{"scripts":{"postchangelog":"sed -i \\\'\\\' -e \\\'s/### \\\\\\\\[/## [/g\\\' CHANGELOG.md"},"types":[{"type":"feat","section":"Features"},{"type":"fix","section":"Fixes"},{"type":"chore","hidden":true},{"type":"docs","hidden":true},{"type":"style","hidden":true},{"type":"refactor","section":"Refactor","hidden":true},{"type":"perf","section":"Performance","hidden":false},{"type":"test","hidden":true}]}}\');\n\n//# sourceURL=webpack://txadmin/./node_modules/openid-client/package.json?')},"./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/big5-added.json":
/*!****************************************************************************************!*\
  !*** ./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/big5-added.json ***!
  \****************************************************************************************/module=>{"use strict";eval('module.exports = JSON.parse(\'[["8740","䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"],["8767","綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑宷峼杮薓𩥅瑡璝㡵𡵓𣚞𦀡㻬"],["87a1","𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋"],["8840","㇀",4,"𠄌㇅𠃑𠃍㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎ĀÁǍÀĒÉĚÈŌÓǑÒ࿿Ê̄Ế࿿Ê̌ỀÊāáǎàɑēéěèīíǐìōóǒòūúǔùǖǘǚ"],["88a1","ǜü࿿ê̄ế࿿ê̌ềêɡ⏚⏛"],["8940","𪎩𡅅"],["8943","攊"],["8946","丽滝鵎釟"],["894c","𧜵撑会伨侨兖兴农凤务动医华发变团声处备夲头学实実岚庆总斉柾栄桥济炼电纤纬纺织经统缆缷艺苏药视设询车轧轮"],["89a1","琑糼緍楆竉刧"],["89ab","醌碸酞肼"],["89b0","贋胶𠧧"],["89b5","肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁"],["89c1","溚舾甙"],["89c5","䤑马骏龙禇𨑬𡷊𠗐𢫦两亁亀亇亿仫伷㑌侽㹈倃傈㑽㒓㒥円夅凛凼刅争剹劐匧㗇厩㕑厰㕓参吣㕭㕲㚁咓咣咴咹哐哯唘唣唨㖘唿㖥㖿嗗㗅"],["8a40","𧶄唥"],["8a43","𠱂𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥䁓𨂾睺𢰸㨴䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𡃴撍蹾𠺖𠰋𠽤𢲩𨉖𤓓"],["8a64","𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴㿭㔆𥋇𩟔𧣈𢵄鵮頕"],["8a76","䏙𦂥撴哣𢵌𢯊𡁷㧻𡁯"],["8aa1","𦛚𦜖𧦠擪𥁒𠱃蹨𢆡𨭌𠜱"],["8aac","䠋𠆩㿺塳𢶍"],["8ab2","𤗈𠓼𦂗𠽌𠶖啹䂻䎺"],["8abb","䪴𢩦𡂝膪飵𠶜捹㧾𢝵跀嚡摼㹃"],["8ac9","𪘁𠸉𢫏𢳉"],["8ace","𡃈𣧂㦒㨆𨊛㕸𥹉𢃇噒𠼱𢲲𩜠㒼氽𤸻"],["8adf","𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜羓𡃏𢠃𢤹㗻𥇣𠺌𠾍𠺪㾓𠼰𠵇𡅏𠹌"],["8af6","𠺫𠮩𠵈𡃀𡄽㿹𢚖搲𠾭"],["8b40","𣏴𧘹𢯎𠵾𠵿𢱑𢱕㨘𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊閪哌苄喹"],["8b55","𩻃鰦骶𧝞𢷮煀腭胬尜𦕲脴㞗卟𨂽醶𠻺𠸏𠹷𠻻㗝𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑"],["8ba1","𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟鮍𥭴𣄽嗻㗲嚉丨夂𡯁屮靑𠂆乛亻㔾尣彑忄㣺扌攵歺氵氺灬爫丬犭𤣩罒礻糹罓𦉪㓁"],["8bde","𦍋耂肀𦘒𦥑卝衤见𧢲讠贝钅镸长门𨸏韦页风飞饣𩠐鱼鸟黄歯龜丷𠂇阝户钢"],["8c40","倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏䀉橣𪊺䈣蘏𠩯稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋"],["8ca1","𣏹椙橃𣱣泿"],["8ca7","爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚"],["8cc9","顨杫䉶圽"],["8cce","藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯曧繛湗秊㶈䓃𣉖𢞖䎚䔶"],["8ce6","峕𣬚諹屸㴒𣕑嵸龲煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻"],["8d40","𠮟"],["8d42","𢇁𨥭䄂䚻𩁹㼇龳𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭崾嵈嵖㷼㠏嶤嶹㠠㠸幂庽弥徃㤈㤔㤿㥍惗愽峥㦉憷憹懏㦸戬抐拥挘㧸嚱"],["8da1","㨃揢揻搇摚㩋擀崕嘡龟㪗斆㪽旿晓㫲暒㬢朖㭂枤栀㭘桊梄㭲㭱㭻椉楃牜楤榟榅㮼槖㯝橥橴橱檂㯬檙㯲檫檵櫔櫶殁毁毪汵沪㳋洂洆洦涁㳯涤涱渕渘温溆𨧀溻滢滚齿滨滩漤漴㵆𣽁澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿炉𠌥䏁㗱𠻘"],["8e40","𣻗垾𦻓焾𥟠㙎榢𨯩孴穉𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯莜𥮴𦱿篐萡箒箸𥴠㶭𥱥蒒篺簆簵𥳁籄粃𤢂粦晽𤕸糉糇糦籴糳糵糎"],["8ea1","繧䔝𦹄絝𦻖璍綉綫焵綳緒𤁗𦀩緤㴓緵𡟹緥𨍭縝𦄡𦅚繮纒䌫鑬縧罀罁罇礶𦋐駡羗𦍑羣𡙡𠁨䕜𣝦䔃𨌺翺𦒉者耈耝耨耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥肧𨩈脇脚墰𢛶汿𦒘𤾸擧𡒊舘𡡞橓𤩥𤪕䑺舩𠬍𦩒𣵾俹𡓽蓢荢𦬊𤦧𣔰𡝳𣷸芪椛芳䇛"],["8f40","蕋苐茚𠸖𡞴㛁𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬莅䔋𦶥莬菁菓㑾𦻔橗蕚㒖𦹂𢻯葘𥯤葱㷓䓤檧葊𣲵祘蒨𦮖𦹷𦹃蓞萏莑䒠蒓蓤𥲑䉀𥳀䕃蔴嫲𦺙䔧蕳䔖枿蘖"],["8fa1","𨘥𨘻藁𧂈蘂𡖂𧃍䕫䕪蘨㙈𡢢号𧎚虾蝱𪃸蟮𢰧螱蟚蠏噡虬桖䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵揁装睷𧜏覇覊覦覩覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙竩𧬺𣾏䜓𧬸煼謌謟𥐰𥕥謿譌譍誩𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓賖𧶘𧶽贒贃𡤐賛灜贑𤳉㻐起"],["9040","趩𨀂𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭𨍥𨐒辥錃𪊟𠩐辳䤪𨧞𨔽𣶻廸𣉢迹𪀔𨚼𨔁𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄𨛦邮都酧㫰醩釄粬𨤳𡺉鈎沟鉁鉢𥖹銹𨫆𣲛𨬌𥗛"],["90a1","𠴱錬鍫𨫡𨯫炏嫃𨫢𨫥䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠濶䊹𢙺𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚隶磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊霱虂霶䨏䔽䖅𤫩灵孁霛靜𩇕靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀韒韠𥑬韮琜𩐳響韵𩐝𧥺䫑頴頳顋顦㬎𧅵㵑𠘰𤅜"],["9140","𥜆飊颷飈飇䫿𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴䰎鬔鬭𨘀倴鬴𦦨㣃𣁽魐魀𩴾婅𡡣鮎𤉋鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟鵾鶃𪄴鸎梈"],["91a1","鷄𢅛𪆓𪈠𡤻𪈳鴹𪂹𪊴麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊齅馸𩂋韲葿齢齩竜龎爖䮾𤥵𤦻煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨"],["9240","𡏆𡒶蔃𣚦蔃葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡哋嚞𦚱嚒𠿟𠮨𠸍鏆𨬓鎜仸儫㠙𤐶亼𠑥𠍿佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵伩𠋀𨺳𠉵諚𠈌亘"],["92a1","働儍侢伃𤨎𣺊佂倮偬傁俌俥偘僼兙兛兝兞湶𣖕𣸹𣺿浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜𠜎剙劤𠡳勡鍮䙺熌𤎌𠰠𤦬𡃤槑𠸝瑹㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉喴𠍅响𠯆圝鉝雴鍦埝垍坿㘾壋媙𨩆𡛺𡝯𡜐娬妸銏婾嫏娒𥥆𡧳𡡡𤊕㛵洅瑃娡𥺃"],["9340","媁𨯗𠐓鏠璌𡌃焅䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲𨦨弌弎𡤧𡞫婫𡜻孄蘔𧗽衠恾𢡠𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙憘恵𢲛𢴇𤛔𩅍"],["93a1","摱𤙥𢭪㨩𢬢𣑐𩣪𢹸挷𪑛撶挱揑𤧣𢵧护𢲡搻敫楲㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠䆐𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖枏𤘪梶栞㯄檾㡣𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺歗𣿀𣲚鎠鋲𨯪𨫋"],["9440","銉𨀞𨧜鑧涥漋𤧬浧𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆㬙瑨𨫌𤦫𤦎㫻"],["94a1","㷍𤩎㻿𤧅𤣳釺圲鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁砞碍碈磒珐祙𧝁𥛣䄎禛蒖禥樭𣻺稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹𡞰粎籼粮檲緜縇緓罎𦉡"],["9540","𦅜𧭈綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸𤥢翝笧𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿㧢𤧷𦖭騟𦖠蒀𧄧𦳑䓪脷䐂胆脉腂𦞴飃𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡嫤𡣘蚠蜨𣶏蠭𧐢娂"],["95a1","衮佅袇袿裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄𡡅鵭貟賩𧷜妚矃姰䍮㛔踪躧𤰉輰轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯邻邗啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁𩂰"],["9640","桇䨝𩂓𥟟靝鍨𨦉𨰦𨬯𦎾銺嬑譩䤼珹𤈛鞛靱餸𠼦巁𨯅𤪲頟𩓚鋶𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻饍𧬆㷽馛䭯馪驜𨭥𥣈檏騡嫾騯𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸"],["96a1","𡓨硄𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀䤭𤧞㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞瀞吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗嬨𡞵𨩉"],["9740","愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕䤵𨪂煫"],["97a1","𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎"],["9840","𦴦𦵑𦲂𦿞漗𧄉茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍𤎽樌𤉖𡌄炦焳𤏩㶥泟勇𤩏繥姫崯㷳彜𤩝𡟟綤萦"],["98a1","咅𣫺𣌀𠈔坾𠣕𠘙㿥𡾞𪊶瀃𩅛嵰玏糓𨩙𩐠俈翧狍猐𧫴猸猹𥛶獁獈㺩𧬘遬燵𤣲珡臶㻊県㻑沢国琙琞琟㻢㻰㻴㻺瓓㼎㽓畂畭畲疍㽼痈痜㿀癍㿗癴㿜発𤽜熈嘣覀塩䀝睃䀹条䁅㗛瞘䁪䁯属瞾矋売砘点砜䂨砹硇硑硦葈𥔵礳栃礲䄃"],["9940","䄉禑禙辻稆込䅧窑䆲窼艹䇄竏竛䇏両筢筬筻簒簛䉠䉺类粜䊌粸䊔糭输烀𠳏総緔緐緽羮羴犟䎗耠耥笹耮耱联㷌垴炠肷胩䏭脌猪脎脒畠脔䐁㬹腖腙腚"],["99a1","䐓堺腼膄䐥膓䐭膥埯臁臤艔䒏芦艶苊苘苿䒰荗险榊萅烵葤惣蒈䔄蒾蓡蓸蔐蔸蕒䔻蕯蕰藠䕷虲蚒蚲蛯际螋䘆䘗袮裿褤襇覑𧥧訩訸誔誴豑賔賲贜䞘塟跃䟭仮踺嗘坔蹱嗵躰䠷軎転軤軭軲辷迁迊迌逳駄䢭飠鈓䤞鈨鉘鉫銱銮銿"],["9a40","鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑麿鐗匁鐝鐭鐾䥪鑔鑹锭関䦧间阳䧥枠䨤靀䨵鞲韂噔䫤惨颹䬙飱塄餎餙冴餜餷饂饝饢䭰駅䮝騼鬏窃魩鮁鯝鯱鯴䱭鰠㝯𡯂鵉鰺"],["9aa1","黾噐鶓鶽鷀鷼银辶鹻麬麱麽黆铜黢黱黸竈齄𠂔𠊷𠎠椚铃妬𠓗塀铁㞹𠗕𠘕𠙶𡚺块煳𠫂𠫍𠮿呪吆𠯋咞𠯻𠰻𠱓𠱥𠱼惧𠲍噺𠲵𠳝𠳭𠵯𠶲𠷈楕鰯螥𠸄𠸎𠻗𠾐𠼭𠹳尠𠾼帋𡁜𡁏𡁶朞𡁻𡂈𡂖㙇𡂿𡃓𡄯𡄻卤蒭𡋣𡍵𡌶讁𡕷𡘙𡟃𡟇乸炻𡠭𡥪"],["9b40","𡨭𡩅𡰪𡱰𡲬𡻈拃𡻕𡼕熘桕𢁅槩㛈𢉼𢏗𢏺𢜪𢡱𢥏苽𢥧𢦓𢫕覥𢫨辠𢬎鞸𢬿顇骽𢱌"],["9b62","𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞徱晈暿𧩹𣕧𣗳爁𤦺矗𣘚𣜖纇𠍆墵朎"],["9ba1","椘𣪧𧙗𥿢𣸑𣺹𧗾𢂚䣐䪸𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊凒𠘑妟𡺨㮾𣳿𤐄𤓖垈𤙴㦛𤜯𨗨𩧉㝢𢇃譞𨭎駖𤠒𤣻𤨕爉𤫀𠱸奥𤺥𤾆𠝹軚𥀬劏圿煱𥊙𥐙𣽊𤪧喼𥑆𥑮𦭒釔㑳𥔿𧘲𥕞䜘𥕢𥕦𥟇𤤿𥡝偦㓻𣏌惞𥤃䝼𨥈𥪮𥮉𥰆𡶐垡煑澶𦄂𧰒遖𦆲𤾚譢𦐂𦑊"],["9c40","嵛𦯷輶𦒄𡤜諪𤧶𦒈𣿯𦔒䯀𦖿𦚵𢜛鑥𥟡憕娧晉侻嚹𤔡𦛼乪𤤴陖涏𦲽㘘襷𦞙𦡮𦐑𦡞營𦣇筂𩃀𠨑𦤦鄄𦤹穅鷰𦧺騦𦨭㙟𦑩𠀡禃𦨴𦭛崬𣔙菏𦮝䛐𦲤画补𦶮墶"],["9ca1","㜜𢖍𧁋𧇍㱔𧊀𧊅銁𢅺𧊋錰𧋦𤧐氹钟𧑐𠻸蠧裵𢤦𨑳𡞱溸𤨪𡠠㦤㚹尐秣䔿暶𩲭𩢤襃𧟌𧡘囖䃟𡘊㦡𣜯𨃨𡏅熭荦𧧝𩆨婧䲷𧂯𨦫𧧽𧨊𧬋𧵦𤅺筃祾𨀉澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𨀣𦦵𡏭𣈯𨁈嶅𨰰𨂃圕頣𨥉嶫𤦈斾槕叒𤪥𣾁㰑朶𨂐𨃴𨄮𡾡𨅏"],["9d40","𨆉𨆯𨈚𨌆𨌯𨎊㗊𨑨𨚪䣺揦𨥖砈鉕𨦸䏲𨧧䏟𨧨𨭆𨯔姸𨰉輋𨿅𩃬筑𩄐𩄼㷷𩅞𤫊运犏嚋𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛纟𩻸𩼣䲤镇𪊓熢𪋿䶑递𪗋䶜𠲜达嗁"],["9da1","辺𢒰边𤪓䔉繿潖檱仪㓤𨬬𧢝㜺躀𡟵𨀤𨭬𨮙𧨾𦚯㷫𧙕𣲷𥘵𥥖亚𥺁𦉘嚿𠹭踎孭𣺈𤲞揞拐𡟶𡡻攰嘭𥱊吚𥌑㷆𩶘䱽嘢嘞罉𥻘奵𣵀蝰东𠿪𠵉𣚺脗鵞贘瘻鱅癎瞹鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁𠲖廐𥅈𠹶𢱢"],["9e40","𠺢麫絚嗞𡁵抝靭咔賍燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧冧呍唞唓癦踭𦢊疱肶蠄螆裇膶萜𡃁䓬猄𤜆宐茋𦢓噻𢛴𧴯𤆣𧵳𦻐𧊶酰𡇙鈈𣳼𪚩𠺬𠻹牦𡲢䝎𤿂𧿹𠿫䃺"],["9ea1","鱝攟𢶠䣳𤟠𩵼𠿬𠸊恢𧖣𠿭"],["9ead","𦁈𡆇熣纎鵐业丄㕷嬍沲卧㚬㧜卽㚥𤘘墚𤭮舭呋垪𥪕𠥹"],["9ec5","㩒𢑥獴𩺬䴉鯭𣳾𩼰䱛𤾩𩖞𩿞葜𣶶𧊲𦞳𣜠挮紥𣻷𣸬㨪逈勌㹴㙺䗩𠒎癀嫰𠺶硺𧼮墧䂿噼鮋嵴癔𪐴麅䳡痹㟻愙𣃚𤏲"],["9ef5","噝𡊩垧𤥣𩸆刴𧂮㖭汊鵼"],["9f40","籖鬹埞𡝬屓擓𩓐𦌵𧅤蚭𠴨𦴢𤫢𠵱"],["9f4f","凾𡼏嶎霃𡷑麁遌笟鬂峑箣扨挵髿篏鬪籾鬮籂粆鰕篼鬉鼗鰛𤤾齚啳寃俽麘俲剠㸆勑坧偖妷帒韈鶫轜呩鞴饀鞺匬愰"],["9fa1","椬叚鰊鴂䰻陁榀傦畆𡝭駚剳"],["9fae","酙隁酜"],["9fb2","酑𨺗捿𦴣櫊嘑醎畺抅𠏼獏籰𥰡𣳽"],["9fc1","𤤙盖鮝个𠳔莾衂"],["9fc9","届槀僭坺刟巵从氱𠇲伹咜哚劚趂㗾弌㗳"],["9fdb","歒酼龥鮗頮颴骺麨麄煺笔"],["9fe7","毺蠘罸"],["9feb","嘠𪙊蹷齓"],["9ff0","跔蹏鸜踁抂𨍽踨蹵竓𤩷稾磘泪詧瘇"],["a040","𨩚鼦泎蟖痃𪊲硓咢贌狢獱謭猂瓱賫𤪻蘯徺袠䒷"],["a055","𡠻𦸅"],["a058","詾𢔛"],["a05b","惽癧髗鵄鍮鮏蟵"],["a063","蠏賷猬霡鮰㗖犲䰇籑饊𦅙慙䰄麖慽"],["a073","坟慯抦戹拎㩜懢厪𣏵捤栂㗒"],["a0a1","嵗𨯂迚𨸹"],["a0a6","僙𡵆礆匲阸𠼻䁥"],["a0ae","矾"],["a0b0","糂𥼚糚稭聦聣絍甅瓲覔舚朌聢𧒆聛瓰脃眤覉𦟌畓𦻑螩蟎臈螌詉貭譃眫瓸蓚㘵榲趦"],["a0d4","覩瑨涹蟁𤀑瓧㷛煶悤憜㳑煢恷"],["a0e2","罱𨬭牐惩䭾删㰘𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭峁𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌齐麦𦉫"],["a3c0","␀",31,"␡"],["c6a1","①",9,"⑴",9,"ⅰ",9,"丶丿亅亠冂冖冫勹匸卩厶夊宀巛⼳广廴彐彡攴无疒癶辵隶¨ˆヽヾゝゞ〃仝々〆〇ー［］✽ぁ",23],["c740","す",58,"ァアィイ"],["c7a1","ゥ",81,"А",5,"ЁЖ",4],["c840","Л",26,"ёж",25,"⇧↸↹㇏𠃌乚𠂊刂䒑"],["c8a1","龰冈龱𧘇"],["c8cd","￢￤＇＂㈱№℡゛゜⺀⺄⺆⺇⺈⺊⺌⺍⺕⺜⺝⺥⺧⺪⺬⺮⺶⺼⺾⻆⻊⻌⻍⻏⻖⻗⻞⻣"],["c8f5","ʃɐɛɔɵœøŋʊɪ"],["f9fe","￭"],["fa40","𠕇鋛𠗟𣿅蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀𤪱𢔓倩𠍾徤𠎀𠍇滛𠐟偽儁㑺儎顬㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳𡦃宂蝽𠖳𣲙冲冸"],["faa1","鴴凉减凑㳜凓𤪦决凢卂凭菍椾𣜭彻刋刦刼劵剗劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀𠥔𣿬匳卄𠯢泋𡜦栛珕恊㺪㣌𡛨燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠厫厮玧𥝲㽙玜叁叅汉义埾叙㪫𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍"],["fb40","𨦼𢚘啇䳭启琗喆喩嘅𡣗𤀺䕒𤐵暳𡂴嘷曍𣊊暤暭噍噏磱囱鞇叾圀囯园𨭦㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃𡑔𤍣堦𤯵塜墪㕡壠壜𡈼壻寿坃𪅐𤉸鏓㖡够梦㛃湙"],["fba1","𡘾娤啓𡚒蔅姉𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹𦹅媫婣㛦𤦩婷㜈媖瑥嫓𦾡𢕔㶅𡤑㜲𡚸広勐孶斈孼𧨎䀄䡝𠈄寕慠𡨴𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊幵幺𤒼𠳓厦亷廐厨𡝱帉廴𨒂"],["fc40","廹廻㢠廼栾鐛弍𠇁弢㫞䢮𡌺强𦢈𢏐彘𢑱彣鞽𦹮彲鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩怱暅𡡷㥣㷇㘹垐𢞴祱㹀悞悤悳𤦂𤦏𧩓璤僡媠慤萤慂慈𦻒憁凴𠙖憇宪𣾷"],["fca1","𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼撐澊𢸶頔𤂌𥜝擡擥鑻㩦携㩗敍漖𤨨𤨣斅敭敟𣁾斵𤥀䬷旑䃘𡠩无旣忟𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴𡸽𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡㬫槺𣟂杞杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝"],["fd40","𣑯槡樋𨫟楳棃𣗍椁椀㴲㨁𣘼㮀枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵歴𢟍溵𣫛𠎵𡥘㝀吡𣭚毡𣻼毜氷𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀"],["fda1","𣳉㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖浜湼漄𤥿𤂅𦹲蔳𦽴凇沜渝萮𨬡港𣸯瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧炁烌烕烖烟䄄㷨熴熖𤉷焫煅媈煊煮岜𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽爎"],["fe40","鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕牗㹕𣁄栍漽犂猪猫𤠣𨠫䣭𨠄猨献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷𤦍𤧻珷琕椃𤨦琹𠗃㻗瑜𢢭瑠𨺲瑇珤瑶莹瑬㜰瑴鏱樬璂䥓𤪌"],["fea1","𤅟𤩹𨮏孆𨰃𡢞瓈𡦈甎瓩甞𨻙𡩋寗𨺬鎅畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂瘬癑癏癯癶𦏵皐臯㟸𦤑𦤎皡皥皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘𣊬瞯𨥤𨥨𡛁矴砉𡍶𤨒棊碯磇磓隥礮𥗠磗礴碱𧘌辸袄𨬫𦂃𢘜禆褀椂禀𥡗禝𧬹礼禩渪𧄦㺨秆𩄍秔"]]\');\n\n//# sourceURL=webpack://txadmin/./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/big5-added.json?')},"./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp936.json":
/*!***********************************************************************************!*\
  !*** ./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp936.json ***!
  \***********************************************************************************/module=>{"use strict";eval('module.exports = JSON.parse(\'[["0","\\\\u0000",127,"€"],["8140","丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪",5,"乲乴",9,"乿",6,"亇亊"],["8180","亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂",6,"伋伌伒",4,"伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾",4,"佄佅佇",5,"佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢"],["8240","侤侫侭侰",4,"侶",8,"俀俁係俆俇俈俉俋俌俍俒",4,"俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿",11],["8280","個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯",10,"倻倽倿偀偁偂偄偅偆偉偊偋偍偐",4,"偖偗偘偙偛偝",7,"偦",5,"偭",8,"偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎",20,"傤傦傪傫傭",4,"傳",6,"傼"],["8340","傽",17,"僐",5,"僗僘僙僛",10,"僨僩僪僫僯僰僱僲僴僶",4,"僼",9,"儈"],["8380","儉儊儌",5,"儓",13,"儢",28,"兂兇兊兌兎兏児兒兓兗兘兙兛兝",4,"兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦",4,"冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒",5],["8440","凘凙凚凜凞凟凢凣凥",5,"凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄",5,"剋剎剏剒剓剕剗剘"],["8480","剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳",9,"剾劀劃",4,"劉",6,"劑劒劔",6,"劜劤劥劦劧劮劯劰労",9,"勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務",5,"勠勡勢勣勥",10,"勱",7,"勻勼勽匁匂匃匄匇匉匊匋匌匎"],["8540","匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯",9,"匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏"],["8580","厐",4,"厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯",6,"厷厸厹厺厼厽厾叀參",4,"収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝",4,"呣呥呧呩",7,"呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡"],["8640","咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠",4,"哫哬哯哰哱哴",5,"哻哾唀唂唃唄唅唈唊",4,"唒唓唕",5,"唜唝唞唟唡唥唦"],["8680","唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋",4,"啑啒啓啔啗",4,"啝啞啟啠啢啣啨啩啫啯",5,"啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠",6,"喨",8,"喲喴営喸喺喼喿",4,"嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗",4,"嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸",4,"嗿嘂嘃嘄嘅"],["8740","嘆嘇嘊嘋嘍嘐",7,"嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀",11,"噏",4,"噕噖噚噛噝",4],["8780","噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽",7,"嚇",6,"嚐嚑嚒嚔",14,"嚤",10,"嚰",6,"嚸嚹嚺嚻嚽",12,"囋",8,"囕囖囘囙囜団囥",5,"囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國",6],["8840","園",9,"圝圞圠圡圢圤圥圦圧圫圱圲圴",4,"圼圽圿坁坃坄坅坆坈坉坋坒",4,"坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀"],["8880","垁垇垈垉垊垍",4,"垔",6,"垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹",8,"埄",6,"埌埍埐埑埓埖埗埛埜埞埡埢埣埥",7,"埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥",4,"堫",4,"報堲堳場堶",7],["8940","堾",5,"塅",6,"塎塏塐塒塓塕塖塗塙",4,"塟",5,"塦",4,"塭",16,"塿墂墄墆墇墈墊墋墌"],["8980","墍",4,"墔",4,"墛墜墝墠",7,"墪",17,"墽墾墿壀壂壃壄壆",10,"壒壓壔壖",13,"壥",5,"壭壯壱売壴壵壷壸壺",7,"夃夅夆夈",4,"夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻"],["8a40","夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛",4,"奡奣奤奦",12,"奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦"],["8a80","妧妬妭妰妱妳",5,"妺妼妽妿",6,"姇姈姉姌姍姎姏姕姖姙姛姞",4,"姤姦姧姩姪姫姭",11,"姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪",6,"娳娵娷",4,"娽娾娿婁",4,"婇婈婋",9,"婖婗婘婙婛",5],["8b40","婡婣婤婥婦婨婩婫",8,"婸婹婻婼婽婾媀",17,"媓",6,"媜",13,"媫媬"],["8b80","媭",4,"媴媶媷媹",4,"媿嫀嫃",5,"嫊嫋嫍",4,"嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬",4,"嫲",22,"嬊",11,"嬘",25,"嬳嬵嬶嬸",7,"孁",6],["8c40","孈",7,"孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏"],["8c80","寑寔",8,"寠寢寣實寧審",4,"寯寱",6,"寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧",6,"屰屲",6,"屻屼屽屾岀岃",4,"岉岊岋岎岏岒岓岕岝",4,"岤",4],["8d40","岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅",5,"峌",5,"峓",5,"峚",6,"峢峣峧峩峫峬峮峯峱",9,"峼",4],["8d80","崁崄崅崈",5,"崏",4,"崕崗崘崙崚崜崝崟",4,"崥崨崪崫崬崯",4,"崵",7,"崿",7,"嵈嵉嵍",10,"嵙嵚嵜嵞",10,"嵪嵭嵮嵰嵱嵲嵳嵵",12,"嶃",21,"嶚嶛嶜嶞嶟嶠"],["8e40","嶡",21,"嶸",12,"巆",6,"巎",12,"巜巟巠巣巤巪巬巭"],["8e80","巰巵巶巸",4,"巿帀帄帇帉帊帋帍帎帒帓帗帞",7,"帨",4,"帯帰帲",4,"帹帺帾帿幀幁幃幆",5,"幍",6,"幖",4,"幜幝幟幠幣",14,"幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨",4,"庮",4,"庴庺庻庼庽庿",6],["8f40","廆廇廈廋",5,"廔廕廗廘廙廚廜",11,"廩廫",8,"廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤"],["8f80","弨弫弬弮弰弲",6,"弻弽弾弿彁",14,"彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢",5,"復徫徬徯",5,"徶徸徹徺徻徾",4,"忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇"],["9040","怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰",4,"怶",4,"怽怾恀恄",6,"恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀"],["9080","悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽",7,"惇惈惉惌",4,"惒惓惔惖惗惙惛惞惡",4,"惪惱惲惵惷惸惻",4,"愂愃愄愅愇愊愋愌愐",4,"愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬",18,"慀",6],["9140","慇慉態慍慏慐慒慓慔慖",6,"慞慟慠慡慣慤慥慦慩",6,"慱慲慳慴慶慸",18,"憌憍憏",4,"憕"],["9180","憖",6,"憞",8,"憪憫憭",9,"憸",5,"憿懀懁懃",4,"應懌",4,"懓懕",16,"懧",13,"懶",8,"戀",5,"戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸",4,"扂扄扅扆扊"],["9240","扏扐払扖扗扙扚扜",6,"扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋",5,"抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁"],["9280","拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳",5,"挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖",7,"捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙",6,"採掤掦掫掯掱掲掵掶掹掻掽掿揀"],["9340","揁揂揃揅揇揈揊揋揌揑揓揔揕揗",6,"揟揢揤",4,"揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆",4,"損搎搑搒搕",5,"搝搟搢搣搤"],["9380","搥搧搨搩搫搮",5,"搵",4,"搻搼搾摀摂摃摉摋",6,"摓摕摖摗摙",4,"摟",7,"摨摪摫摬摮",9,"摻",6,"撃撆撈",8,"撓撔撗撘撚撛撜撝撟",4,"撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆",6,"擏擑擓擔擕擖擙據"],["9440","擛擜擝擟擠擡擣擥擧",24,"攁",7,"攊",7,"攓",4,"攙",8],["9480","攢攣攤攦",4,"攬攭攰攱攲攳攷攺攼攽敀",4,"敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數",14,"斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱",7,"斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘",7,"旡旣旤旪旫"],["9540","旲旳旴旵旸旹旻",4,"昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷",4,"昽昿晀時晄",6,"晍晎晐晑晘"],["9580","晙晛晜晝晞晠晢晣晥晧晩",4,"晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘",4,"暞",8,"暩",4,"暯",4,"暵暶暷暸暺暻暼暽暿",25,"曚曞",7,"曧曨曪",5,"曱曵曶書曺曻曽朁朂會"],["9640","朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠",5,"朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗",4,"杝杢杣杤杦杧杫杬杮東杴杶"],["9680","杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹",7,"柂柅",9,"柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵",7,"柾栁栂栃栄栆栍栐栒栔栕栘",4,"栞栟栠栢",6,"栫",6,"栴栵栶栺栻栿桇桋桍桏桒桖",5],["9740","桜桝桞桟桪桬",7,"桵桸",8,"梂梄梇",7,"梐梑梒梔梕梖梘",9,"梣梤梥梩梪梫梬梮梱梲梴梶梷梸"],["9780","梹",6,"棁棃",5,"棊棌棎棏棐棑棓棔棖棗棙棛",4,"棡棢棤",9,"棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆",4,"椌椏椑椓",11,"椡椢椣椥",7,"椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃",16,"楕楖楘楙楛楜楟"],["9840","楡楢楤楥楧楨楩楪楬業楯楰楲",4,"楺楻楽楾楿榁榃榅榊榋榌榎",5,"榖榗榙榚榝",9,"榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽"],["9880","榾榿槀槂",7,"構槍槏槑槒槓槕",5,"槜槝槞槡",11,"槮槯槰槱槳",9,"槾樀",9,"樋",11,"標",5,"樠樢",5,"権樫樬樭樮樰樲樳樴樶",6,"樿",4,"橅橆橈",7,"橑",6,"橚"],["9940","橜",4,"橢橣橤橦",10,"橲",6,"橺橻橽橾橿檁檂檃檅",8,"檏檒",4,"檘",7,"檡",5],["9980","檧檨檪檭",114,"欥欦欨",6],["9a40","欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍",11,"歚",7,"歨歩歫",13,"歺歽歾歿殀殅殈"],["9a80","殌殎殏殐殑殔殕殗殘殙殜",4,"殢",7,"殫",7,"殶殸",6,"毀毃毄毆",4,"毌毎毐毑毘毚毜",4,"毢",7,"毬毭毮毰毱毲毴毶毷毸毺毻毼毾",6,"氈",4,"氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋",4,"汑汒汓汖汘"],["9b40","汙汚汢汣汥汦汧汫",4,"汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘"],["9b80","泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟",5,"洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽",4,"涃涄涆涇涊涋涍涏涐涒涖",4,"涜涢涥涬涭涰涱涳涴涶涷涹",5,"淁淂淃淈淉淊"],["9c40","淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽",7,"渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵"],["9c80","渶渷渹渻",7,"湅",7,"湏湐湑湒湕湗湙湚湜湝湞湠",10,"湬湭湯",14,"満溁溂溄溇溈溊",4,"溑",6,"溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪",5],["9d40","滰滱滲滳滵滶滷滸滺",7,"漃漄漅漇漈漊",4,"漐漑漒漖",9,"漡漢漣漥漦漧漨漬漮漰漲漴漵漷",6,"漿潀潁潂"],["9d80","潃潄潅潈潉潊潌潎",9,"潙潚潛潝潟潠潡潣潤潥潧",5,"潯潰潱潳潵潶潷潹潻潽",6,"澅澆澇澊澋澏",12,"澝澞澟澠澢",4,"澨",10,"澴澵澷澸澺",5,"濁濃",5,"濊",6,"濓",10,"濟濢濣濤濥"],["9e40","濦",7,"濰",32,"瀒",7,"瀜",6,"瀤",6],["9e80","瀫",9,"瀶瀷瀸瀺",17,"灍灎灐",13,"灟",11,"灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞",12,"炰炲炴炵炶為炾炿烄烅烆烇烉烋",12,"烚"],["9f40","烜烝烞烠烡烢烣烥烪烮烰",6,"烸烺烻烼烾",10,"焋",4,"焑焒焔焗焛",10,"焧",7,"焲焳焴"],["9f80","焵焷",13,"煆煇煈煉煋煍煏",12,"煝煟",4,"煥煩",4,"煯煰煱煴煵煶煷煹煻煼煾",5,"熅",4,"熋熌熍熎熐熑熒熓熕熖熗熚",4,"熡",6,"熩熪熫熭",5,"熴熶熷熸熺",8,"燄",9,"燏",4],["a040","燖",9,"燡燢燣燤燦燨",5,"燯",9,"燺",11,"爇",19],["a080","爛爜爞",9,"爩爫爭爮爯爲爳爴爺爼爾牀",6,"牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅",4,"犌犎犐犑犓",11,"犠",11,"犮犱犲犳犵犺",6,"狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛"],["a1a1","　、。·ˉˇ¨〃々—～‖…‘’“”〔〕〈",7,"〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃＄¤￠￡‰§№☆★○●◎◇◆□■△▲※→←↑↓〓"],["a2a1","ⅰ",9],["a2b1","⒈",19,"⑴",19,"①",9],["a2e5","㈠",9],["a2f1","Ⅰ",11],["a3a1","！＂＃￥％",88,"￣"],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a6e0","︵︶︹︺︿﹀︽︾﹁﹂﹃﹄"],["a6ee","︻︼︷︸︱"],["a6f4","︳︴"],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a840","ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═",35,"▁",6],["a880","█",7,"▓▔▕▼▽◢◣◤◥☉⊕〒〝〞"],["a8a1","āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ"],["a8bd","ńň"],["a8c0","ɡ"],["a8c5","ㄅ",36],["a940","〡",8,"㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰￢￤"],["a959","℡㈱"],["a95c","‐"],["a960","ー゛゜ヽヾ〆ゝゞ﹉",9,"﹔﹕﹖﹗﹙",8],["a980","﹢",4,"﹨﹩﹪﹫"],["a996","〇"],["a9a4","─",75],["aa40","狜狝狟狢",5,"狪狫狵狶狹狽狾狿猀猂猄",5,"猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀",8],["aa80","獉獊獋獌獎獏獑獓獔獕獖獘",7,"獡",10,"獮獰獱"],["ab40","獲",11,"獿",4,"玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣",5,"玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃",4],["ab80","珋珌珎珒",6,"珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳",4],["ac40","珸",10,"琄琇琈琋琌琍琎琑",8,"琜",5,"琣琤琧琩琫琭琯琱琲琷",4,"琽琾琿瑀瑂",11],["ac80","瑎",6,"瑖瑘瑝瑠",12,"瑮瑯瑱",4,"瑸瑹瑺"],["ad40","瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑",10,"璝璟",7,"璪",15,"璻",12],["ad80","瓈",9,"瓓",8,"瓝瓟瓡瓥瓧",6,"瓰瓱瓲"],["ae40","瓳瓵瓸",6,"甀甁甂甃甅",7,"甎甐甒甔甕甖甗甛甝甞甠",4,"甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘"],["ae80","畝",7,"畧畨畩畫",6,"畳畵當畷畺",4,"疀疁疂疄疅疇"],["af40","疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦",4,"疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇"],["af80","瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄"],["b040","癅",6,"癎",5,"癕癗",4,"癝癟癠癡癢癤",6,"癬癭癮癰",7,"癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛"],["b080","皜",7,"皥",8,"皯皰皳皵",9,"盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥"],["b140","盄盇盉盋盌盓盕盙盚盜盝盞盠",4,"盦",7,"盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎",10,"眛眜眝眞眡眣眤眥眧眪眫"],["b180","眬眮眰",4,"眹眻眽眾眿睂睄睅睆睈",7,"睒",7,"睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳"],["b240","睝睞睟睠睤睧睩睪睭",11,"睺睻睼瞁瞂瞃瞆",5,"瞏瞐瞓",11,"瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶",4],["b280","瞼瞾矀",12,"矎",8,"矘矙矚矝",4,"矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖"],["b340","矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃",5,"砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚"],["b380","硛硜硞",11,"硯",7,"硸硹硺硻硽",6,"场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚"],["b440","碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨",7,"碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚",9],["b480","磤磥磦磧磩磪磫磭",4,"磳磵磶磸磹磻",5,"礂礃礄礆",6,"础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮"],["b540","礍",5,"礔",9,"礟",4,"礥",14,"礵",4,"礽礿祂祃祄祅祇祊",8,"祔祕祘祙祡祣"],["b580","祤祦祩祪祫祬祮祰",6,"祹祻",4,"禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠"],["b640","禓",6,"禛",11,"禨",10,"禴",4,"禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙",5,"秠秡秢秥秨秪"],["b680","秬秮秱",6,"秹秺秼秾秿稁稄稅稇稈稉稊稌稏",4,"稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二"],["b740","稝稟稡稢稤",14,"稴稵稶稸稺稾穀",5,"穇",9,"穒",4,"穘",16],["b780","穩",6,"穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服"],["b840","窣窤窧窩窪窫窮",4,"窴",10,"竀",10,"竌",9,"竗竘竚竛竜竝竡竢竤竧",5,"竮竰竱竲竳"],["b880","竴",4,"竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹"],["b940","笯笰笲笴笵笶笷笹笻笽笿",5,"筆筈筊筍筎筓筕筗筙筜筞筟筡筣",10,"筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆",6,"箎箏"],["b980","箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹",7,"篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈"],["ba40","篅篈築篊篋篍篎篏篐篒篔",4,"篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲",4,"篸篹篺篻篽篿",7,"簈簉簊簍簎簐",5,"簗簘簙"],["ba80","簚",4,"簠",5,"簨簩簫",12,"簹",5,"籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖"],["bb40","籃",9,"籎",36,"籵",5,"籾",9],["bb80","粈粊",6,"粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴",4,"粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕"],["bc40","粿糀糂糃糄糆糉糋糎",6,"糘糚糛糝糞糡",6,"糩",5,"糰",7,"糹糺糼",13,"紋",5],["bc80","紑",14,"紡紣紤紥紦紨紩紪紬紭紮細",6,"肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件"],["bd40","紷",54,"絯",7],["bd80","絸",32,"健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸"],["be40","継",12,"綧",6,"綯",42],["be80","線",32,"尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻"],["bf40","緻",62],["bf80","縺縼",4,"繂",4,"繈",21,"俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀"],["c040","繞",35,"纃",23,"纜纝纞"],["c080","纮纴纻纼绖绤绬绹缊缐缞缷缹缻",6,"罃罆",9,"罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐"],["c140","罖罙罛罜罝罞罠罣",4,"罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂",7,"羋羍羏",4,"羕",4,"羛羜羠羢羣羥羦羨",6,"羱"],["c180","羳",4,"羺羻羾翀翂翃翄翆翇翈翉翋翍翏",4,"翖翗翙",5,"翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿"],["c240","翤翧翨翪翫翬翭翯翲翴",6,"翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫",5,"耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗"],["c280","聙聛",13,"聫",5,"聲",11,"隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫"],["c340","聾肁肂肅肈肊肍",5,"肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇",4,"胏",6,"胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋"],["c380","脌脕脗脙脛脜脝脟",12,"脭脮脰脳脴脵脷脹",4,"脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸"],["c440","腀",5,"腇腉腍腎腏腒腖腗腘腛",4,"腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃",4,"膉膋膌膍膎膐膒",5,"膙膚膞",4,"膤膥"],["c480","膧膩膫",7,"膴",5,"膼膽膾膿臄臅臇臈臉臋臍",6,"摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁"],["c540","臔",14,"臤臥臦臨臩臫臮",4,"臵",5,"臽臿舃與",4,"舎舏舑舓舕",5,"舝舠舤舥舦舧舩舮舲舺舼舽舿"],["c580","艀艁艂艃艅艆艈艊艌艍艎艐",7,"艙艛艜艝艞艠",7,"艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗"],["c640","艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸"],["c680","苺苼",4,"茊茋茍茐茒茓茖茘茙茝",9,"茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐"],["c740","茾茿荁荂荄荅荈荊",4,"荓荕",4,"荝荢荰",6,"荹荺荾",6,"莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡",6,"莬莭莮"],["c780","莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠"],["c840","菮華菳",4,"菺菻菼菾菿萀萂萅萇萈萉萊萐萒",5,"萙萚萛萞",5,"萩",7,"萲",5,"萹萺萻萾",7,"葇葈葉"],["c880","葊",6,"葒",4,"葘葝葞葟葠葢葤",4,"葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁"],["c940","葽",4,"蒃蒄蒅蒆蒊蒍蒏",7,"蒘蒚蒛蒝蒞蒟蒠蒢",12,"蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗"],["c980","蓘",4,"蓞蓡蓢蓤蓧",4,"蓭蓮蓯蓱",10,"蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳"],["ca40","蔃",8,"蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢",8,"蔭",9,"蔾",4,"蕄蕅蕆蕇蕋",10],["ca80","蕗蕘蕚蕛蕜蕝蕟",4,"蕥蕦蕧蕩",8,"蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱"],["cb40","薂薃薆薈",6,"薐",10,"薝",6,"薥薦薧薩薫薬薭薱",5,"薸薺",6,"藂",6,"藊",4,"藑藒"],["cb80","藔藖",5,"藝",6,"藥藦藧藨藪",14,"恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔"],["cc40","藹藺藼藽藾蘀",4,"蘆",10,"蘒蘓蘔蘕蘗",15,"蘨蘪",13,"蘹蘺蘻蘽蘾蘿虀"],["cc80","虁",11,"虒虓處",4,"虛虜虝號虠虡虣",7,"獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃"],["cd40","虭虯虰虲",6,"蚃",6,"蚎",4,"蚔蚖",5,"蚞",4,"蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻",4,"蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜"],["cd80","蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威"],["ce40","蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀",6,"蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚",5,"蝡蝢蝦",7,"蝯蝱蝲蝳蝵"],["ce80","蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎",4,"螔螕螖螘",6,"螠",4,"巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺"],["cf40","螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁",4,"蟇蟈蟉蟌",4,"蟔",6,"蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯",9],["cf80","蟺蟻蟼蟽蟿蠀蠁蠂蠄",5,"蠋",7,"蠔蠗蠘蠙蠚蠜",4,"蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓"],["d040","蠤",13,"蠳",5,"蠺蠻蠽蠾蠿衁衂衃衆",5,"衎",5,"衕衖衘衚",6,"衦衧衪衭衯衱衳衴衵衶衸衹衺"],["d080","衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗",4,"袝",4,"袣袥",5,"小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄"],["d140","袬袮袯袰袲",4,"袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚",4,"裠裡裦裧裩",6,"裲裵裶裷裺裻製裿褀褁褃",5],["d180","褉褋",4,"褑褔",4,"褜",4,"褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶"],["d240","褸",8,"襂襃襅",24,"襠",5,"襧",19,"襼"],["d280","襽襾覀覂覄覅覇",26,"摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐"],["d340","覢",30,"觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴",6],["d380","觻",4,"訁",5,"計",21,"印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉"],["d440","訞",31,"訿",8,"詉",21],["d480","詟",25,"詺",6,"浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧"],["d540","誁",7,"誋",7,"誔",46],["d580","諃",32,"铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政"],["d640","諤",34,"謈",27],["d680","謤謥謧",30,"帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑"],["d740","譆",31,"譧",4,"譭",25],["d780","讇",24,"讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座"],["d840","谸",8,"豂豃豄豅豈豊豋豍",7,"豖豗豘豙豛",5,"豣",6,"豬",6,"豴豵豶豷豻",6,"貃貄貆貇"],["d880","貈貋貍",6,"貕貖貗貙",20,"亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝"],["d940","貮",62],["d980","賭",32,"佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼"],["da40","贎",14,"贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸",8,"趂趃趆趇趈趉趌",4,"趒趓趕",9,"趠趡"],["da80","趢趤",12,"趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺"],["db40","跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾",6,"踆踇踈踋踍踎踐踑踒踓踕",7,"踠踡踤",4,"踫踭踰踲踳踴踶踷踸踻踼踾"],["db80","踿蹃蹅蹆蹌",4,"蹓",5,"蹚",11,"蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝"],["dc40","蹳蹵蹷",4,"蹽蹾躀躂躃躄躆躈",6,"躑躒躓躕",6,"躝躟",11,"躭躮躰躱躳",6,"躻",7],["dc80","軃",10,"軏",21,"堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥"],["dd40","軥",62],["dd80","輤",32,"荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺"],["de40","轅",32,"轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆"],["de80","迉",4,"迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖"],["df40","這逜連逤逥逧",5,"逰",4,"逷逹逺逽逿遀遃遅遆遈",4,"過達違遖遙遚遜",5,"遤遦遧適遪遫遬遯",4,"遶",6,"遾邁"],["df80","還邅邆邇邉邊邌",4,"邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼"],["e040","郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅",19,"鄚鄛鄜"],["e080","鄝鄟鄠鄡鄤",10,"鄰鄲",6,"鄺",8,"酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼"],["e140","酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀",4,"醆醈醊醎醏醓",6,"醜",5,"醤",5,"醫醬醰醱醲醳醶醷醸醹醻"],["e180","醼",10,"釈釋釐釒",9,"針",8,"帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺"],["e240","釦",62],["e280","鈥",32,"狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧",5,"饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂"],["e340","鉆",45,"鉵",16],["e380","銆",7,"銏",24,"恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾"],["e440","銨",5,"銯",24,"鋉",31],["e480","鋩",32,"洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑"],["e540","錊",51,"錿",10],["e580","鍊",31,"鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣"],["e640","鍬",34,"鎐",27],["e680","鎬",29,"鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩"],["e740","鏎",7,"鏗",54],["e780","鐎",32,"纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡",6,"缪缫缬缭缯",4,"缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬"],["e840","鐯",14,"鐿",43,"鑬鑭鑮鑯"],["e880","鑰",20,"钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹"],["e940","锧锳锽镃镈镋镕镚镠镮镴镵長",7,"門",42],["e980","閫",32,"椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋"],["ea40","闌",27,"闬闿阇阓阘阛阞阠阣",6,"阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗"],["ea80","陘陙陚陜陝陞陠陣陥陦陫陭",4,"陳陸",12,"隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰"],["eb40","隌階隑隒隓隕隖隚際隝",9,"隨",7,"隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖",9,"雡",6,"雫"],["eb80","雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗",4,"霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻"],["ec40","霡",8,"霫霬霮霯霱霳",4,"霺霻霼霽霿",18,"靔靕靗靘靚靜靝靟靣靤靦靧靨靪",7],["ec80","靲靵靷",4,"靽",7,"鞆",4,"鞌鞎鞏鞐鞓鞕鞖鞗鞙",4,"臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐"],["ed40","鞞鞟鞡鞢鞤",6,"鞬鞮鞰鞱鞳鞵",46],["ed80","韤韥韨韮",4,"韴韷",23,"怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨"],["ee40","頏",62],["ee80","顎",32,"睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶",4,"钼钽钿铄铈",6,"铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪"],["ef40","顯",5,"颋颎颒颕颙颣風",37,"飏飐飔飖飗飛飜飝飠",4],["ef80","飥飦飩",30,"铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒",4,"锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤",8,"镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔"],["f040","餈",4,"餎餏餑",28,"餯",26],["f080","饊",9,"饖",12,"饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨",4,"鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦",6,"鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙"],["f140","馌馎馚",10,"馦馧馩",47],["f180","駙",32,"瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃"],["f240","駺",62],["f280","騹",32,"颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒"],["f340","驚",17,"驲骃骉骍骎骔骕骙骦骩",6,"骲骳骴骵骹骻骽骾骿髃髄髆",4,"髍髎髏髐髒體髕髖髗髙髚髛髜"],["f380","髝髞髠髢髣髤髥髧髨髩髪髬髮髰",8,"髺髼",6,"鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋"],["f440","鬇鬉",5,"鬐鬑鬒鬔",10,"鬠鬡鬢鬤",10,"鬰鬱鬳",7,"鬽鬾鬿魀魆魊魋魌魎魐魒魓魕",5],["f480","魛",32,"簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤"],["f540","魼",62],["f580","鮻",32,"酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜"],["f640","鯜",62],["f680","鰛",32,"觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅",5,"龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞",5,"鲥",4,"鲫鲭鲮鲰",7,"鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋"],["f740","鰼",62],["f780","鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾",4,"鳈鳉鳑鳒鳚鳛鳠鳡鳌",4,"鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"],["f840","鳣",62],["f880","鴢",32],["f940","鵃",62],["f980","鶂",32],["fa40","鶣",62],["fa80","鷢",32],["fb40","鸃",27,"鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴",9,"麀"],["fb80","麁麃麄麅麆麉麊麌",5,"麔",8,"麞麠",5,"麧麨麩麪"],["fc40","麫",8,"麵麶麷麹麺麼麿",4,"黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰",8,"黺黽黿",6],["fc80","鼆",4,"鼌鼏鼑鼒鼔鼕鼖鼘鼚",5,"鼡鼣",8,"鼭鼮鼰鼱"],["fd40","鼲",4,"鼸鼺鼼鼿",4,"齅",10,"齒",38],["fd80","齹",5,"龁龂龍",11,"龜龝龞龡",4,"郎凉秊裏隣"],["fe40","兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩"]]\');\n\n//# sourceURL=webpack://txadmin/./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp936.json?')},"./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp949.json":
/*!***********************************************************************************!*\
  !*** ./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp949.json ***!
  \***********************************************************************************/module=>{"use strict";eval('module.exports = JSON.parse(\'[["0","\\\\u0000",127],["8141","갂갃갅갆갋",4,"갘갞갟갡갢갣갥",6,"갮갲갳갴"],["8161","갵갶갷갺갻갽갾갿걁",9,"걌걎",5,"걕"],["8181","걖걗걙걚걛걝",18,"걲걳걵걶걹걻",4,"겂겇겈겍겎겏겑겒겓겕",6,"겞겢",5,"겫겭겮겱",6,"겺겾겿곀곂곃곅곆곇곉곊곋곍",7,"곖곘",7,"곢곣곥곦곩곫곭곮곲곴곷",4,"곾곿괁괂괃괅괇",4,"괎괐괒괓"],["8241","괔괕괖괗괙괚괛괝괞괟괡",7,"괪괫괮",5],["8261","괶괷괹괺괻괽",6,"굆굈굊",5,"굑굒굓굕굖굗"],["8281","굙",7,"굢굤",7,"굮굯굱굲굷굸굹굺굾궀궃",4,"궊궋궍궎궏궑",10,"궞",5,"궥",17,"궸",7,"귂귃귅귆귇귉",6,"귒귔",7,"귝귞귟귡귢귣귥",18],["8341","귺귻귽귾긂",5,"긊긌긎",5,"긕",7],["8361","긝",18,"긲긳긵긶긹긻긼"],["8381","긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗",4,"깞깢깣깤깦깧깪깫깭깮깯깱",6,"깺깾",5,"꺆",5,"꺍",46,"꺿껁껂껃껅",6,"껎껒",5,"껚껛껝",8],["8441","껦껧껩껪껬껮",5,"껵껶껷껹껺껻껽",8],["8461","꼆꼉꼊꼋꼌꼎꼏꼑",18],["8481","꼤",7,"꼮꼯꼱꼳꼵",6,"꼾꽀꽄꽅꽆꽇꽊",5,"꽑",10,"꽞",5,"꽦",18,"꽺",5,"꾁꾂꾃꾅꾆꾇꾉",6,"꾒꾓꾔꾖",5,"꾝",26,"꾺꾻꾽꾾"],["8541","꾿꿁",5,"꿊꿌꿏",4,"꿕",6,"꿝",4],["8561","꿢",5,"꿪",5,"꿲꿳꿵꿶꿷꿹",6,"뀂뀃"],["8581","뀅",6,"뀍뀎뀏뀑뀒뀓뀕",6,"뀞",9,"뀩",26,"끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞",29,"끾끿낁낂낃낅",6,"낎낐낒",5,"낛낝낞낣낤"],["8641","낥낦낧낪낰낲낶낷낹낺낻낽",6,"냆냊",5,"냒"],["8661","냓냕냖냗냙",6,"냡냢냣냤냦",10],["8681","냱",22,"넊넍넎넏넑넔넕넖넗넚넞",4,"넦넧넩넪넫넭",6,"넶넺",5,"녂녃녅녆녇녉",6,"녒녓녖녗녙녚녛녝녞녟녡",22,"녺녻녽녾녿놁놃",4,"놊놌놎놏놐놑놕놖놗놙놚놛놝"],["8741","놞",9,"놩",15],["8761","놹",18,"뇍뇎뇏뇑뇒뇓뇕"],["8781","뇖",5,"뇞뇠",7,"뇪뇫뇭뇮뇯뇱",7,"뇺뇼뇾",5,"눆눇눉눊눍",6,"눖눘눚",5,"눡",18,"눵",6,"눽",26,"뉙뉚뉛뉝뉞뉟뉡",6,"뉪",4],["8841","뉯",4,"뉶",5,"뉽",6,"늆늇늈늊",4],["8861","늏늒늓늕늖늗늛",4,"늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷"],["8881","늸",15,"닊닋닍닎닏닑닓",4,"닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉",6,"댒댖",5,"댝",54,"덗덙덚덝덠덡덢덣"],["8941","덦덨덪덬덭덯덲덳덵덶덷덹",6,"뎂뎆",5,"뎍"],["8961","뎎뎏뎑뎒뎓뎕",10,"뎢",5,"뎩뎪뎫뎭"],["8981","뎮",21,"돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩",18,"돽",18,"됑",6,"됙됚됛됝됞됟됡",6,"됪됬",7,"됵",15],["8a41","둅",10,"둒둓둕둖둗둙",6,"둢둤둦"],["8a61","둧",4,"둭",18,"뒁뒂"],["8a81","뒃",4,"뒉",19,"뒞",5,"뒥뒦뒧뒩뒪뒫뒭",7,"뒶뒸뒺",5,"듁듂듃듅듆듇듉",6,"듑듒듓듔듖",5,"듞듟듡듢듥듧",4,"듮듰듲",5,"듹",26,"딖딗딙딚딝"],["8b41","딞",5,"딦딫",4,"딲딳딵딶딷딹",6,"땂땆"],["8b61","땇땈땉땊땎땏땑땒땓땕",6,"땞땢",8],["8b81","땫",52,"떢떣떥떦떧떩떬떭떮떯떲떶",4,"떾떿뗁뗂뗃뗅",6,"뗎뗒",5,"뗙",18,"뗭",18],["8c41","똀",15,"똒똓똕똖똗똙",4],["8c61","똞",6,"똦",5,"똭",6,"똵",5],["8c81","똻",12,"뙉",26,"뙥뙦뙧뙩",50,"뚞뚟뚡뚢뚣뚥",5,"뚭뚮뚯뚰뚲",16],["8d41","뛃",16,"뛕",8],["8d61","뛞",17,"뛱뛲뛳뛵뛶뛷뛹뛺"],["8d81","뛻",4,"뜂뜃뜄뜆",33,"뜪뜫뜭뜮뜱",6,"뜺뜼",7,"띅띆띇띉띊띋띍",6,"띖",9,"띡띢띣띥띦띧띩",6,"띲띴띶",5,"띾띿랁랂랃랅",6,"랎랓랔랕랚랛랝랞"],["8e41","랟랡",6,"랪랮",5,"랶랷랹",8],["8e61","럂",4,"럈럊",19],["8e81","럞",13,"럮럯럱럲럳럵",6,"럾렂",4,"렊렋렍렎렏렑",6,"렚렜렞",5,"렦렧렩렪렫렭",6,"렶렺",5,"롁롂롃롅",11,"롒롔",7,"롞롟롡롢롣롥",6,"롮롰롲",5,"롹롺롻롽",7],["8f41","뢅",7,"뢎",17],["8f61","뢠",7,"뢩",6,"뢱뢲뢳뢵뢶뢷뢹",4],["8f81","뢾뢿룂룄룆",5,"룍룎룏룑룒룓룕",7,"룞룠룢",5,"룪룫룭룮룯룱",6,"룺룼룾",5,"뤅",18,"뤙",6,"뤡",26,"뤾뤿륁륂륃륅",6,"륍륎륐륒",5],["9041","륚륛륝륞륟륡",6,"륪륬륮",5,"륶륷륹륺륻륽"],["9061","륾",5,"릆릈릋릌릏",15],["9081","릟",12,"릮릯릱릲릳릵",6,"릾맀맂",5,"맊맋맍맓",4,"맚맜맟맠맢맦맧맩맪맫맭",6,"맶맻",4,"먂",5,"먉",11,"먖",33,"먺먻먽먾먿멁멃멄멅멆"],["9141","멇멊멌멏멐멑멒멖멗멙멚멛멝",6,"멦멪",5],["9161","멲멳멵멶멷멹",9,"몆몈몉몊몋몍",5],["9181","몓",20,"몪몭몮몯몱몳",4,"몺몼몾",5,"뫅뫆뫇뫉",14,"뫚",33,"뫽뫾뫿묁묂묃묅",7,"묎묐묒",5,"묙묚묛묝묞묟묡",6],["9241","묨묪묬",7,"묷묹묺묿",4,"뭆뭈뭊뭋뭌뭎뭑뭒"],["9261","뭓뭕뭖뭗뭙",7,"뭢뭤",7,"뭭",4],["9281","뭲",21,"뮉뮊뮋뮍뮎뮏뮑",18,"뮥뮦뮧뮩뮪뮫뮭",6,"뮵뮶뮸",7,"믁믂믃믅믆믇믉",6,"믑믒믔",35,"믺믻믽믾밁"],["9341","밃",4,"밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵"],["9361","밶밷밹",6,"뱂뱆뱇뱈뱊뱋뱎뱏뱑",8],["9381","뱚뱛뱜뱞",37,"벆벇벉벊벍벏",4,"벖벘벛",4,"벢벣벥벦벩",6,"벲벶",5,"벾벿볁볂볃볅",7,"볎볒볓볔볖볗볙볚볛볝",22,"볷볹볺볻볽"],["9441","볾",5,"봆봈봊",5,"봑봒봓봕",8],["9461","봞",5,"봥",6,"봭",12],["9481","봺",5,"뵁",6,"뵊뵋뵍뵎뵏뵑",6,"뵚",9,"뵥뵦뵧뵩",22,"붂붃붅붆붋",4,"붒붔붖붗붘붛붝",6,"붥",10,"붱",6,"붹",24],["9541","뷒뷓뷖뷗뷙뷚뷛뷝",11,"뷪",5,"뷱"],["9561","뷲뷳뷵뷶뷷뷹",6,"븁븂븄븆",5,"븎븏븑븒븓"],["9581","븕",6,"븞븠",35,"빆빇빉빊빋빍빏",4,"빖빘빜빝빞빟빢빣빥빦빧빩빫",4,"빲빶",4,"빾빿뺁뺂뺃뺅",6,"뺎뺒",5,"뺚",13,"뺩",14],["9641","뺸",23,"뻒뻓"],["9661","뻕뻖뻙",6,"뻡뻢뻦",5,"뻭",8],["9681","뻶",10,"뼂",5,"뼊",13,"뼚뼞",33,"뽂뽃뽅뽆뽇뽉",6,"뽒뽓뽔뽖",44],["9741","뾃",16,"뾕",8],["9761","뾞",17,"뾱",7],["9781","뾹",11,"뿆",5,"뿎뿏뿑뿒뿓뿕",6,"뿝뿞뿠뿢",89,"쀽쀾쀿"],["9841","쁀",16,"쁒",5,"쁙쁚쁛"],["9861","쁝쁞쁟쁡",6,"쁪",15],["9881","쁺",21,"삒삓삕삖삗삙",6,"삢삤삦",5,"삮삱삲삷",4,"삾샂샃샄샆샇샊샋샍샎샏샑",6,"샚샞",5,"샦샧샩샪샫샭",6,"샶샸샺",5,"섁섂섃섅섆섇섉",6,"섑섒섓섔섖",5,"섡섢섥섨섩섪섫섮"],["9941","섲섳섴섵섷섺섻섽섾섿셁",6,"셊셎",5,"셖셗"],["9961","셙셚셛셝",6,"셦셪",5,"셱셲셳셵셶셷셹셺셻"],["9981","셼",8,"솆",5,"솏솑솒솓솕솗",4,"솞솠솢솣솤솦솧솪솫솭솮솯솱",11,"솾",5,"쇅쇆쇇쇉쇊쇋쇍",6,"쇕쇖쇙",6,"쇡쇢쇣쇥쇦쇧쇩",6,"쇲쇴",7,"쇾쇿숁숂숃숅",6,"숎숐숒",5,"숚숛숝숞숡숢숣"],["9a41","숤숥숦숧숪숬숮숰숳숵",16],["9a61","쉆쉇쉉",6,"쉒쉓쉕쉖쉗쉙",6,"쉡쉢쉣쉤쉦"],["9a81","쉧",4,"쉮쉯쉱쉲쉳쉵",6,"쉾슀슂",5,"슊",5,"슑",6,"슙슚슜슞",5,"슦슧슩슪슫슮",5,"슶슸슺",33,"싞싟싡싢싥",5,"싮싰싲싳싴싵싷싺싽싾싿쌁",6,"쌊쌋쌎쌏"],["9b41","쌐쌑쌒쌖쌗쌙쌚쌛쌝",6,"쌦쌧쌪",8],["9b61","쌳",17,"썆",7],["9b81","썎",25,"썪썫썭썮썯썱썳",4,"썺썻썾",5,"쎅쎆쎇쎉쎊쎋쎍",50,"쏁",22,"쏚"],["9c41","쏛쏝쏞쏡쏣",4,"쏪쏫쏬쏮",5,"쏶쏷쏹",5],["9c61","쏿",8,"쐉",6,"쐑",9],["9c81","쐛",8,"쐥",6,"쐭쐮쐯쐱쐲쐳쐵",6,"쐾",9,"쑉",26,"쑦쑧쑩쑪쑫쑭",6,"쑶쑷쑸쑺",5,"쒁",18,"쒕",6,"쒝",12],["9d41","쒪",13,"쒹쒺쒻쒽",8],["9d61","쓆",25],["9d81","쓠",8,"쓪",5,"쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂",9,"씍씎씏씑씒씓씕",6,"씝",10,"씪씫씭씮씯씱",6,"씺씼씾",5,"앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩",6,"앲앶",5,"앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔"],["9e41","얖얙얚얛얝얞얟얡",7,"얪",9,"얶"],["9e61","얷얺얿",4,"엋엍엏엒엓엕엖엗엙",6,"엢엤엦엧"],["9e81","엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑",6,"옚옝",6,"옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉",6,"왒왖",5,"왞왟왡",10,"왭왮왰왲",5,"왺왻왽왾왿욁",6,"욊욌욎",5,"욖욗욙욚욛욝",6,"욦"],["9f41","욨욪",5,"욲욳욵욶욷욻",4,"웂웄웆",5,"웎"],["9f61","웏웑웒웓웕",6,"웞웟웢",5,"웪웫웭웮웯웱웲"],["9f81","웳",4,"웺웻웼웾",5,"윆윇윉윊윋윍",6,"윖윘윚",5,"윢윣윥윦윧윩",6,"윲윴윶윸윹윺윻윾윿읁읂읃읅",4,"읋읎읐읙읚읛읝읞읟읡",6,"읩읪읬",7,"읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛",4,"잢잧",4,"잮잯잱잲잳잵잶잷"],["a041","잸잹잺잻잾쟂",5,"쟊쟋쟍쟏쟑",6,"쟙쟚쟛쟜"],["a061","쟞",5,"쟥쟦쟧쟩쟪쟫쟭",13],["a081","쟻",4,"젂젃젅젆젇젉젋",4,"젒젔젗",4,"젞젟젡젢젣젥",6,"젮젰젲",5,"젹젺젻젽젾젿졁",6,"졊졋졎",5,"졕",26,"졲졳졵졶졷졹졻",4,"좂좄좈좉좊좎",5,"좕",7,"좞좠좢좣좤"],["a141","좥좦좧좩",18,"좾좿죀죁"],["a161","죂죃죅죆죇죉죊죋죍",6,"죖죘죚",5,"죢죣죥"],["a181","죦",14,"죶",5,"죾죿줁줂줃줇",4,"줎　、。·‥…¨〃­―∥＼∼‘’“”〔〕〈",9,"±×÷≠≤≥∞∴°′″℃Å￠￡￥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨￢"],["a241","줐줒",5,"줙",18],["a261","줭",6,"줵",18],["a281","쥈",7,"쥒쥓쥕쥖쥗쥙",6,"쥢쥤",7,"쥭쥮쥯⇒⇔∀∃´～ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®"],["a341","쥱쥲쥳쥵",6,"쥽",10,"즊즋즍즎즏"],["a361","즑",6,"즚즜즞",16],["a381","즯",16,"짂짃짅짆짉짋",4,"짒짔짗짘짛！",58,"￦］",32,"￣"],["a441","짞짟짡짣짥짦짨짩짪짫짮짲",5,"짺짻짽짾짿쨁쨂쨃쨄"],["a461","쨅쨆쨇쨊쨎",5,"쨕쨖쨗쨙",12],["a481","쨦쨧쨨쨪",28,"ㄱ",93],["a541","쩇",4,"쩎쩏쩑쩒쩓쩕",6,"쩞쩢",5,"쩩쩪"],["a561","쩫",17,"쩾",5,"쪅쪆"],["a581","쪇",16,"쪙",14,"ⅰ",9],["a5b0","Ⅰ",9],["a5c1","Α",16,"Σ",6],["a5e1","α",16,"σ",6],["a641","쪨",19,"쪾쪿쫁쫂쫃쫅"],["a661","쫆",5,"쫎쫐쫒쫔쫕쫖쫗쫚",5,"쫡",6],["a681","쫨쫩쫪쫫쫭",6,"쫵",18,"쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃",7],["a741","쬋",4,"쬑쬒쬓쬕쬖쬗쬙",6,"쬢",7],["a761","쬪",22,"쭂쭃쭄"],["a781","쭅쭆쭇쭊쭋쭍쭎쭏쭑",6,"쭚쭛쭜쭞",5,"쭥",7,"㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙",9,"㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰",9,"㎀",4,"㎺",5,"㎐",4,"Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆"],["a841","쭭",10,"쭺",14],["a861","쮉",18,"쮝",6],["a881","쮤",19,"쮹",11,"ÆÐªĦ"],["a8a6","Ĳ"],["a8a8","ĿŁØŒºÞŦŊ"],["a8b1","㉠",27,"ⓐ",25,"①",14,"½⅓⅔¼¾⅛⅜⅝⅞"],["a941","쯅",14,"쯕",10],["a961","쯠쯡쯢쯣쯥쯦쯨쯪",18],["a981","쯽",14,"찎찏찑찒찓찕",6,"찞찟찠찣찤æđðħıĳĸŀłøœßþŧŋŉ㈀",27,"⒜",25,"⑴",14,"¹²³⁴ⁿ₁₂₃₄"],["aa41","찥찦찪찫찭찯찱",6,"찺찿",4,"챆챇챉챊챋챍챎"],["aa61","챏",4,"챖챚",5,"챡챢챣챥챧챩",6,"챱챲"],["aa81","챳챴챶",29,"ぁ",82],["ab41","첔첕첖첗첚첛첝첞첟첡",6,"첪첮",5,"첶첷첹"],["ab61","첺첻첽",6,"쳆쳈쳊",5,"쳑쳒쳓쳕",5],["ab81","쳛",8,"쳥",6,"쳭쳮쳯쳱",12,"ァ",85],["ac41","쳾쳿촀촂",5,"촊촋촍촎촏촑",6,"촚촜촞촟촠"],["ac61","촡촢촣촥촦촧촩촪촫촭",11,"촺",4],["ac81","촿",28,"쵝쵞쵟А",5,"ЁЖ",25],["acd1","а",5,"ёж",25],["ad41","쵡쵢쵣쵥",6,"쵮쵰쵲",5,"쵹",7],["ad61","춁",6,"춉",10,"춖춗춙춚춛춝춞춟"],["ad81","춠춡춢춣춦춨춪",5,"춱",18,"췅"],["ae41","췆",5,"췍췎췏췑",16],["ae61","췢",5,"췩췪췫췭췮췯췱",6,"췺췼췾",4],["ae81","츃츅츆츇츉츊츋츍",6,"츕츖츗츘츚",5,"츢츣츥츦츧츩츪츫"],["af41","츬츭츮츯츲츴츶",19],["af61","칊",13,"칚칛칝칞칢",5,"칪칬"],["af81","칮",5,"칶칷칹칺칻칽",6,"캆캈캊",5,"캒캓캕캖캗캙"],["b041","캚",5,"캢캦",5,"캮",12],["b061","캻",5,"컂",19],["b081","컖",13,"컦컧컩컪컭",6,"컶컺",5,"가각간갇갈갉갊감",7,"같",4,"갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆"],["b141","켂켃켅켆켇켉",6,"켒켔켖",5,"켝켞켟켡켢켣"],["b161","켥",6,"켮켲",5,"켹",11],["b181","콅",14,"콖콗콙콚콛콝",6,"콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸"],["b241","콭콮콯콲콳콵콶콷콹",6,"쾁쾂쾃쾄쾆",5,"쾍"],["b261","쾎",18,"쾢",5,"쾩"],["b281","쾪",5,"쾱",18,"쿅",6,"깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙"],["b341","쿌",19,"쿢쿣쿥쿦쿧쿩"],["b361","쿪",5,"쿲쿴쿶",5,"쿽쿾쿿퀁퀂퀃퀅",5],["b381","퀋",5,"퀒",5,"퀙",19,"끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫",4,"낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝"],["b441","퀮",5,"퀶퀷퀹퀺퀻퀽",6,"큆큈큊",5],["b461","큑큒큓큕큖큗큙",6,"큡",10,"큮큯"],["b481","큱큲큳큵",6,"큾큿킀킂",18,"뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫",4,"닳담답닷",4,"닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥"],["b541","킕",14,"킦킧킩킪킫킭",5],["b561","킳킶킸킺",5,"탂탃탅탆탇탊",5,"탒탖",4],["b581","탛탞탟탡탢탣탥",6,"탮탲",5,"탹",11,"덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸"],["b641","턅",7,"턎",17],["b661","턠",15,"턲턳턵턶턷턹턻턼턽턾"],["b681","턿텂텆",5,"텎텏텑텒텓텕",6,"텞텠텢",5,"텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗"],["b741","텮",13,"텽",6,"톅톆톇톉톊"],["b761","톋",20,"톢톣톥톦톧"],["b781","톩",6,"톲톴톶톷톸톹톻톽톾톿퇁",14,"래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩"],["b841","퇐",7,"퇙",17],["b861","퇫",8,"퇵퇶퇷퇹",13],["b881","툈툊",5,"툑",24,"륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많",4,"맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼"],["b941","툪툫툮툯툱툲툳툵",6,"툾퉀퉂",5,"퉉퉊퉋퉌"],["b961","퉍",14,"퉝",6,"퉥퉦퉧퉨"],["b981","퉩",22,"튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바",4,"받",4,"밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗"],["ba41","튍튎튏튒튓튔튖",5,"튝튞튟튡튢튣튥",6,"튭"],["ba61","튮튯튰튲",5,"튺튻튽튾틁틃",4,"틊틌",5],["ba81","틒틓틕틖틗틙틚틛틝",6,"틦",9,"틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤"],["bb41","틻",4,"팂팄팆",5,"팏팑팒팓팕팗",4,"팞팢팣"],["bb61","팤팦팧팪팫팭팮팯팱",6,"팺팾",5,"퍆퍇퍈퍉"],["bb81","퍊",31,"빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤"],["bc41","퍪",17,"퍾퍿펁펂펃펅펆펇"],["bc61","펈펉펊펋펎펒",5,"펚펛펝펞펟펡",6,"펪펬펮"],["bc81","펯",4,"펵펶펷펹펺펻펽",6,"폆폇폊",5,"폑",5,"샥샨샬샴샵샷샹섀섄섈섐섕서",4,"섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭"],["bd41","폗폙",7,"폢폤",7,"폮폯폱폲폳폵폶폷"],["bd61","폸폹폺폻폾퐀퐂",5,"퐉",13],["bd81","퐗",5,"퐞",25,"숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰"],["be41","퐸",7,"푁푂푃푅",14],["be61","푔",7,"푝푞푟푡푢푣푥",7,"푮푰푱푲"],["be81","푳",4,"푺푻푽푾풁풃",4,"풊풌풎",5,"풕",8,"쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄",6,"엌엎"],["bf41","풞",10,"풪",14],["bf61","풹",18,"퓍퓎퓏퓑퓒퓓퓕"],["bf81","퓖",5,"퓝퓞퓠",7,"퓩퓪퓫퓭퓮퓯퓱",6,"퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염",5,"옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨"],["c041","퓾",5,"픅픆픇픉픊픋픍",6,"픖픘",5],["c061","픞",25],["c081","픸픹픺픻픾픿핁핂핃핅",6,"핎핐핒",5,"핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응",7,"읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊"],["c141","핤핦핧핪핬핮",5,"핶핷핹핺핻핽",6,"햆햊햋"],["c161","햌햍햎햏햑",19,"햦햧"],["c181","햨",31,"점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓"],["c241","헊헋헍헎헏헑헓",4,"헚헜헞",5,"헦헧헩헪헫헭헮"],["c261","헯",4,"헶헸헺",5,"혂혃혅혆혇혉",6,"혒"],["c281","혖",5,"혝혞혟혡혢혣혥",7,"혮",9,"혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻"],["c341","혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝",4],["c361","홢",4,"홨홪",5,"홲홳홵",11],["c381","횁횂횄횆",5,"횎횏횑횒횓횕",7,"횞횠횢",5,"횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층"],["c441","횫횭횮횯횱",7,"횺횼",7,"훆훇훉훊훋"],["c461","훍훎훏훐훒훓훕훖훘훚",5,"훡훢훣훥훦훧훩",4],["c481","훮훯훱훲훳훴훶",5,"훾훿휁휂휃휅",11,"휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼"],["c541","휕휖휗휚휛휝휞휟휡",6,"휪휬휮",5,"휶휷휹"],["c561","휺휻휽",6,"흅흆흈흊",5,"흒흓흕흚",4],["c581","흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵",6,"흾흿힀힂",5,"힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜"],["c641","힍힎힏힑",6,"힚힜힞",5],["c6a1","퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁"],["c7a1","퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠"],["c8a1","혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝"],["caa1","伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕"],["cba1","匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢"],["cca1","瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械"],["cda1","棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜"],["cea1","科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾"],["cfa1","區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴"],["d0a1","鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣"],["d1a1","朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩",5,"那樂",4,"諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉"],["d2a1","納臘蠟衲囊娘廊",4,"乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧",5,"駑魯",10,"濃籠聾膿農惱牢磊腦賂雷尿壘",7,"嫩訥杻紐勒",5,"能菱陵尼泥匿溺多茶"],["d3a1","丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃"],["d4a1","棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅"],["d5a1","蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣"],["d6a1","煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼"],["d7a1","遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬"],["d8a1","立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅"],["d9a1","蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文"],["daa1","汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑"],["dba1","發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖"],["dca1","碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦"],["dda1","孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥"],["dea1","脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索"],["dfa1","傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署"],["e0a1","胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬"],["e1a1","聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁"],["e2a1","戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧"],["e3a1","嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁"],["e4a1","沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額"],["e5a1","櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬"],["e6a1","旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒"],["e7a1","簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳"],["e8a1","烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療"],["e9a1","窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓"],["eaa1","運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜"],["eba1","濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼"],["eca1","議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄"],["eda1","立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長"],["eea1","障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱"],["efa1","煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖"],["f0a1","靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫"],["f1a1","踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只"],["f2a1","咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯"],["f3a1","鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策"],["f4a1","責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢"],["f5a1","椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃"],["f6a1","贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託"],["f7a1","鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑"],["f8a1","阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃"],["f9a1","品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航"],["faa1","行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型"],["fba1","形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵"],["fca1","禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆"],["fda1","爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰"]]\');\n\n//# sourceURL=webpack://txadmin/./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp949.json?')},"./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp950.json":
/*!***********************************************************************************!*\
  !*** ./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp950.json ***!
  \***********************************************************************************/module=>{"use strict";eval('module.exports = JSON.parse(\'[["0","\\\\u0000",127],["a140","　，、。．‧；：？！︰…‥﹐﹑﹒·﹔﹕﹖﹗｜–︱—︳╴︴﹏（）︵︶｛｝︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚"],["a1a1","﹛﹜﹝﹞‘’“”〝〞‵′＃＆＊※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯￣＿ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡＋－×÷±√＜＞＝≦≧≠∞≒≡﹢",4,"～∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣／"],["a240","＼∕﹨＄￥〒￠￡％＠℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁",7,"▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭"],["a2a1","╮╰╯═╞╪╡◢◣◥◤╱╲╳０",9,"Ⅰ",9,"〡",8,"十卄卅Ａ",25,"ａ",21],["a340","ｗｘｙｚΑ",16,"Σ",6,"α",16,"σ",6,"ㄅ",10],["a3a1","ㄐ",25,"˙ˉˊˇˋ"],["a3e1","€"],["a440","一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才"],["a4a1","丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙"],["a540","世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外"],["a5a1","央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全"],["a640","共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年"],["a6a1","式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣"],["a740","作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍"],["a7a1","均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠"],["a840","杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒"],["a8a1","芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵"],["a940","咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居"],["a9a1","屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊"],["aa40","昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠"],["aaa1","炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附"],["ab40","陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品"],["aba1","哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷"],["ac40","拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗"],["aca1","活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄"],["ad40","耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥"],["ada1","迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪"],["ae40","哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙"],["aea1","恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓"],["af40","浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷"],["afa1","砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃"],["b040","虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡"],["b0a1","陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀"],["b140","娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽"],["b1a1","情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺"],["b240","毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶"],["b2a1","瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼"],["b340","莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途"],["b3a1","部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠"],["b440","婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍"],["b4a1","插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋"],["b540","溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘"],["b5a1","窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁"],["b640","詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑"],["b6a1","間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼"],["b740","媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業"],["b7a1","楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督"],["b840","睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫"],["b8a1","腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊"],["b940","辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴"],["b9a1","飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇"],["ba40","愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢"],["baa1","滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬"],["bb40","罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤"],["bba1","說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜"],["bc40","劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂"],["bca1","慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃"],["bd40","瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯"],["bda1","翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞"],["be40","輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉"],["bea1","鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡"],["bf40","濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊"],["bfa1","縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚"],["c040","錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇"],["c0a1","嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬"],["c140","瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪"],["c1a1","薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁"],["c240","駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘"],["c2a1","癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦"],["c340","鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸"],["c3a1","獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類"],["c440","願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼"],["c4a1","纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴"],["c540","護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬"],["c5a1","禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒"],["c640","讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲"],["c940","乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕"],["c9a1","氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋"],["ca40","汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘"],["caa1","吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇"],["cb40","杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓"],["cba1","芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢"],["cc40","坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋"],["cca1","怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲"],["cd40","泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺"],["cda1","矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏"],["ce40","哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛"],["cea1","峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺"],["cf40","柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂"],["cfa1","洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀"],["d040","穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪"],["d0a1","苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱"],["d140","唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧"],["d1a1","恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤"],["d240","毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸"],["d2a1","牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐"],["d340","笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢"],["d3a1","荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐"],["d440","酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅"],["d4a1","唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏"],["d540","崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟"],["d5a1","捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉"],["d640","淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏"],["d6a1","痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟"],["d740","耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷"],["d7a1","蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪"],["d840","釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷"],["d8a1","堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔"],["d940","惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒"],["d9a1","晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞"],["da40","湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖"],["daa1","琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥"],["db40","罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳"],["dba1","菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺"],["dc40","軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈"],["dca1","隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆"],["dd40","媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤"],["dda1","搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼"],["de40","毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓"],["dea1","煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓"],["df40","稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯"],["dfa1","腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤"],["e040","觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿"],["e0a1","遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠"],["e140","凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠"],["e1a1","寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉"],["e240","榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊"],["e2a1","漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓"],["e340","禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞"],["e3a1","耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻"],["e440","裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍"],["e4a1","銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘"],["e540","噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉"],["e5a1","憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒"],["e640","澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"],["e6a1","獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟"],["e740","膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢"],["e7a1","蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧"],["e840","踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓"],["e8a1","銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮"],["e940","噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺"],["e9a1","憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸"],["ea40","澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙"],["eaa1","瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘"],["eb40","蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠"],["eba1","諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌"],["ec40","錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕"],["eca1","魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎"],["ed40","檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶"],["eda1","瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞"],["ee40","蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞"],["eea1","謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜"],["ef40","鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰"],["efa1","鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶"],["f040","璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒"],["f0a1","臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧"],["f140","蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪"],["f1a1","鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰"],["f240","徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛"],["f2a1","礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕"],["f340","譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦"],["f3a1","鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲"],["f440","嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩"],["f4a1","禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿"],["f540","鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛"],["f5a1","鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥"],["f640","蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺"],["f6a1","騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚"],["f740","糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊"],["f7a1","驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾"],["f840","讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏"],["f8a1","齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚"],["f940","纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊"],["f9a1","龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓"]]\');\n\n//# sourceURL=webpack://txadmin/./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp950.json?')},"./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/eucjp.json":
/*!***********************************************************************************!*\
  !*** ./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/eucjp.json ***!
  \***********************************************************************************/module=>{"use strict";eval('module.exports = JSON.parse(\'[["0","\\\\u0000",127],["8ea1","｡",62],["a1a1","　、。，．・：；？！゛゜´｀¨＾￣＿ヽヾゝゞ〃仝々〆〇ー―‐／＼～∥｜…‥‘’“”（）〔〕［］｛｝〈",9,"＋－±×÷＝≠＜＞≦≧∞∴♂♀°′″℃￥＄￠￡％＃＆＊＠§☆★○●◎◇"],["a2a1","◆□■△▲▽▼※〒→←↑↓〓"],["a2ba","∈∋⊆⊇⊂⊃∪∩"],["a2ca","∧∨￢⇒⇔∀∃"],["a2dc","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["a2f2","Å‰♯♭♪†‡¶"],["a2fe","◯"],["a3b0","０",9],["a3c1","Ａ",25],["a3e1","ａ",25],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a8a1","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["ada1","①",19,"Ⅰ",9],["adc0","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["addf","㍻〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["b0a1","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["b1a1","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応"],["b2a1","押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["b3a1","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱"],["b4a1","粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["b5a1","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京"],["b6a1","供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["b7a1","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲"],["b8a1","検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["b9a1","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込"],["baa1","此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["bba1","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時"],["bca1","次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["bda1","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償"],["bea1","勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["bfa1","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾"],["c0a1","澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["c1a1","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎"],["c2a1","臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["c3a1","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵"],["c4a1","帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["c5a1","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到"],["c6a1","董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["c7a1","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦"],["c8a1","函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["c9a1","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服"],["caa1","福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["cba1","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満"],["cca1","漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["cda1","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃"],["cea1","痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["cfa1","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["d0a1","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["d1a1","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨"],["d2a1","辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["d3a1","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉"],["d4a1","圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["d5a1","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓"],["d6a1","屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["d7a1","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚"],["d8a1","悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["d9a1","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼"],["daa1","據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["dba1","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍"],["dca1","棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["dda1","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾"],["dea1","沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["dfa1","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼"],["e0a1","燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e1a1","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰"],["e2a1","癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e3a1","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐"],["e4a1","筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e5a1","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺"],["e6a1","罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e7a1","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙"],["e8a1","茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e9a1","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙"],["eaa1","蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["eba1","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫"],["eca1","譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["eda1","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸"],["eea1","遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["efa1","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞"],["f0a1","陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["f1a1","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷"],["f2a1","髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["f3a1","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠"],["f4a1","堯槇遙瑤凜熙"],["f9a1","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德"],["faa1","忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["fba1","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚"],["fca1","釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["fcf1","ⅰ",9,"￢￤＇＂"],["8fa2af","˘ˇ¸˙˝¯˛˚～΄΅"],["8fa2c2","¡¦¿"],["8fa2eb","ºª©®™¤№"],["8fa6e1","ΆΈΉΊΪ"],["8fa6e7","Ό"],["8fa6e9","ΎΫ"],["8fa6ec","Ώ"],["8fa6f1","άέήίϊΐόςύϋΰώ"],["8fa7c2","Ђ",10,"ЎЏ"],["8fa7f2","ђ",10,"ўџ"],["8fa9a1","ÆĐ"],["8fa9a4","Ħ"],["8fa9a6","Ĳ"],["8fa9a8","ŁĿ"],["8fa9ab","ŊØŒ"],["8fa9af","ŦÞ"],["8fa9c1","æđðħıĳĸłŀŉŋøœßŧþ"],["8faaa1","ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ"],["8faaba","ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ"],["8faba1","áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ"],["8fabbd","ġĥíìïîǐ"],["8fabc5","īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż"],["8fb0a1","丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄"],["8fb1a1","侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐"],["8fb2a1","傒傓傔傖傛傜傞",4,"傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂"],["8fb3a1","凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋"],["8fb4a1","匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿"],["8fb5a1","咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒"],["8fb6a1","嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍",5,"嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤",4,"囱囫园"],["8fb7a1","囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭",4,"坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡"],["8fb8a1","堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭"],["8fb9a1","奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿"],["8fbaa1","嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖",4,"寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩"],["8fbba1","屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤"],["8fbca1","巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪",4,"幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧"],["8fbda1","彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐",4,"忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷"],["8fbea1","悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐",4,"愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥"],["8fbfa1","懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵"],["8fc0a1","捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿"],["8fc1a1","擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝"],["8fc2a1","昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝"],["8fc3a1","杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮",4,"桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏"],["8fc4a1","棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲"],["8fc5a1","樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽"],["8fc6a1","歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖"],["8fc7a1","泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞"],["8fc8a1","湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊"],["8fc9a1","濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔",4,"炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃",4,"焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠"],["8fcaa1","煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻"],["8fcba1","狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽"],["8fcca1","珿琀琁琄琇琊琑琚琛琤琦琨",9,"琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆"],["8fcda1","甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹",5,"疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹"],["8fcea1","瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢",6,"皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢"],["8fcfa1","睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳"],["8fd0a1","碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞"],["8fd1a1","秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰"],["8fd2a1","笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙",5],["8fd3a1","籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝"],["8fd4a1","綞綦綧綪綳綶綷綹緂",4,"緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭"],["8fd5a1","罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮"],["8fd6a1","胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆"],["8fd7a1","艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸"],["8fd8a1","荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓"],["8fd9a1","蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏",4,"蕖蕙蕜",6,"蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼"],["8fdaa1","藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠",4,"虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣"],["8fdba1","蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃",6,"螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵"],["8fdca1","蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊",4,"裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺"],["8fdda1","襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔",4,"觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳"],["8fdea1","誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂",4,"譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆"],["8fdfa1","貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢"],["8fe0a1","踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁"],["8fe1a1","轃轇轏轑",4,"轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃"],["8fe2a1","郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿"],["8fe3a1","釂釃釅釓釔釗釙釚釞釤釥釩釪釬",5,"釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵",4,"鉻鉼鉽鉿銈銉銊銍銎銒銗"],["8fe4a1","銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿",4,"鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶"],["8fe5a1","鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉",4,"鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹"],["8fe6a1","镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂"],["8fe7a1","霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦"],["8fe8a1","頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱",4,"餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵"],["8fe9a1","馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿",4],["8feaa1","鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪",4,"魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸"],["8feba1","鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦",4,"鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻"],["8feca1","鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵"],["8feda1","黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃",4,"齓齕齖齗齘齚齝齞齨齩齭",4,"齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥"]]\');\n\n//# sourceURL=webpack://txadmin/./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/eucjp.json?')},"./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json":
/*!********************************************************************************************!*\
  !*** ./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json ***!
  \********************************************************************************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"uChars":[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],"gbChars":[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189000]}\');\n\n//# sourceURL=webpack://txadmin/./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json?')},"./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/gbk-added.json":
/*!***************************************************************************************!*\
  !*** ./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/gbk-added.json ***!
  \***************************************************************************************/module=>{"use strict";eval('module.exports = JSON.parse(\'[["a140","",62],["a180","",32],["a240","",62],["a280","",32],["a2ab","",5],["a2e3","€"],["a2ef",""],["a2fd",""],["a340","",62],["a380","",31,"　"],["a440","",62],["a480","",32],["a4f4","",10],["a540","",62],["a580","",32],["a5f7","",7],["a640","",62],["a680","",32],["a6b9","",7],["a6d9","",6],["a6ec",""],["a6f3",""],["a6f6","",8],["a740","",62],["a780","",32],["a7c2","",14],["a7f2","",12],["a896","",10],["a8bc",""],["a8bf","ǹ"],["a8c1",""],["a8ea","",20],["a958",""],["a95b",""],["a95d",""],["a989","〾⿰",11],["a997","",12],["a9f0","",14],["aaa1","",93],["aba1","",93],["aca1","",93],["ada1","",93],["aea1","",93],["afa1","",93],["d7fa","",4],["f8a1","",93],["f9a1","",93],["faa1","",93],["fba1","",93],["fca1","",93],["fda1","",93],["fe50","⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌"],["fe80","䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓",6,"䶮",93]]\');\n\n//# sourceURL=webpack://txadmin/./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/gbk-added.json?')},"./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/shiftjis.json":
/*!**************************************************************************************!*\
  !*** ./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/shiftjis.json ***!
  \**************************************************************************************/module=>{"use strict";eval('module.exports = JSON.parse(\'[["0","\\\\u0000",128],["a1","｡",62],["8140","　、。，．・：；？！゛゜´｀¨＾￣＿ヽヾゝゞ〃仝々〆〇ー―‐／＼～∥｜…‥‘’“”（）〔〕［］｛｝〈",9,"＋－±×"],["8180","÷＝≠＜＞≦≧∞∴♂♀°′″℃￥＄￠￡％＃＆＊＠§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓"],["81b8","∈∋⊆⊇⊂⊃∪∩"],["81c8","∧∨￢⇒⇔∀∃"],["81da","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["81f0","Å‰♯♭♪†‡¶"],["81fc","◯"],["824f","０",9],["8260","Ａ",25],["8281","ａ",25],["829f","ぁ",82],["8340","ァ",62],["8380","ム",22],["839f","Α",16,"Σ",6],["83bf","α",16,"σ",6],["8440","А",5,"ЁЖ",25],["8470","а",5,"ёж",7],["8480","о",17],["849f","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["8740","①",19,"Ⅰ",9],["875f","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["877e","㍻"],["8780","〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["889f","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["8940","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円"],["8980","園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["8a40","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫"],["8a80","橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["8b40","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救"],["8b80","朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["8c40","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨"],["8c80","劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["8d40","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降"],["8d80","項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["8e40","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止"],["8e80","死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["8f40","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳"],["8f80","準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["9040","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨"],["9080","逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["9140","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻"],["9180","操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["9240","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄"],["9280","逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["9340","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬"],["9380","凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["9440","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅"],["9480","楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["9540","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷"],["9580","斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["9640","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆"],["9680","摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["9740","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲"],["9780","沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["9840","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["989f","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["9940","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭"],["9980","凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["9a40","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸"],["9a80","噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["9b40","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀"],["9b80","它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["9c40","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠"],["9c80","怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["9d40","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫"],["9d80","捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["9e40","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎"],["9e80","梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["9f40","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯"],["9f80","麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["e040","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝"],["e080","烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e140","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿"],["e180","痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e240","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰"],["e280","窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e340","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷"],["e380","縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e440","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤"],["e480","艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e540","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬"],["e580","蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["e640","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧"],["e680","諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["e740","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜"],["e780","轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["e840","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙"],["e880","閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["e940","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃"],["e980","騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["ea40","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯"],["ea80","黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"],["ed40","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏"],["ed80","塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["ee40","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙"],["ee80","蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["eeef","ⅰ",9,"￢￤＇＂"],["f040","",62],["f080","",124],["f140","",62],["f180","",124],["f240","",62],["f280","",124],["f340","",62],["f380","",124],["f440","",62],["f480","",124],["f540","",62],["f580","",124],["f640","",62],["f680","",124],["f740","",62],["f780","",124],["f840","",62],["f880","",124],["f940",""],["fa40","ⅰ",9,"Ⅰ",9,"￢￤＇＂㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊"],["fa80","兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯"],["fb40","涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神"],["fb80","祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙"],["fc40","髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"]]\');\n\n//# sourceURL=webpack://txadmin/./node_modules/raw-body/node_modules/iconv-lite/encodings/tables/shiftjis.json?')},"./node_modules/socket.io/package.json":
/*!*********************************************!*\
  !*** ./node_modules/socket.io/package.json ***!
  \*********************************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"name":"socket.io","version":"4.5.1","description":"node.js realtime framework server","keywords":["realtime","framework","websocket","tcp","events","socket","io"],"files":["dist/","client-dist/","wrapper.mjs","!**/*.tsbuildinfo"],"directories":{"doc":"docs/","example":"example/","lib":"lib/","test":"test/"},"type":"commonjs","main":"./dist/index.js","exports":{"import":"./wrapper.mjs","require":"./dist/index.js","types":"./dist/index.d.ts"},"types":"./dist/index.d.ts","license":"MIT","repository":{"type":"git","url":"git://github.com/socketio/socket.io"},"scripts":{"compile":"rimraf ./dist && tsc","test":"npm run format:check && npm run compile && npm run test:types && npm run test:unit","test:types":"tsd","test:unit":"nyc mocha --require ts-node/register --reporter spec --slow 200 --bail --timeout 10000 test/socket.io.ts","format:check":"prettier --check \\\\"lib/**/*.ts\\\\" \\\\"test/**/*.ts\\\\"","format:fix":"prettier --write \\\\"lib/**/*.ts\\\\" \\\\"test/**/*.ts\\\\"","prepack":"npm run compile"},"dependencies":{"accepts":"~1.3.4","base64id":"~2.0.0","debug":"~4.3.2","engine.io":"~6.2.0","socket.io-adapter":"~2.4.0","socket.io-parser":"~4.0.4"},"devDependencies":{"@types/mocha":"^9.0.0","expect.js":"0.3.1","mocha":"^3.5.3","nyc":"^15.1.0","prettier":"^2.3.2","rimraf":"^3.0.2","socket.io-client":"4.5.1","socket.io-client-v2":"npm:socket.io-client@^2.4.0","superagent":"^6.1.0","supertest":"^6.1.6","ts-node":"^10.2.1","tsd":"^0.17.0","typescript":"^4.4.2","uWebSockets.js":"github:uNetworking/uWebSockets.js#v20.0.0"},"contributors":[{"name":"Guillermo Rauch","email":"rauchg@gmail.com"},{"name":"Arnout Kazemier","email":"info@3rd-eden.com"},{"name":"Vladimir Dronnikov","email":"dronnikov@gmail.com"},{"name":"Einar Otto Stangvik","email":"einaros@gmail.com"}],"engines":{"node":">=10.0.0"},"tsd":{"directory":"test"}}\');\n\n//# sourceURL=webpack://txadmin/./node_modules/socket.io/package.json?')},"./node_modules/statuses/codes.json":
/*!******************************************!*\
  !*** ./node_modules/statuses/codes.json ***!
  \******************************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"100":"Continue","101":"Switching Protocols","102":"Processing","103":"Early Hints","200":"OK","201":"Created","202":"Accepted","203":"Non-Authoritative Information","204":"No Content","205":"Reset Content","206":"Partial Content","207":"Multi-Status","208":"Already Reported","226":"IM Used","300":"Multiple Choices","301":"Moved Permanently","302":"Found","303":"See Other","304":"Not Modified","305":"Use Proxy","306":"(Unused)","307":"Temporary Redirect","308":"Permanent Redirect","400":"Bad Request","401":"Unauthorized","402":"Payment Required","403":"Forbidden","404":"Not Found","405":"Method Not Allowed","406":"Not Acceptable","407":"Proxy Authentication Required","408":"Request Timeout","409":"Conflict","410":"Gone","411":"Length Required","412":"Precondition Failed","413":"Payload Too Large","414":"URI Too Long","415":"Unsupported Media Type","416":"Range Not Satisfiable","417":"Expectation Failed","418":"I\\\'m a teapot","421":"Misdirected Request","422":"Unprocessable Entity","423":"Locked","424":"Failed Dependency","425":"Unordered Collection","426":"Upgrade Required","428":"Precondition Required","429":"Too Many Requests","431":"Request Header Fields Too Large","451":"Unavailable For Legal Reasons","500":"Internal Server Error","501":"Not Implemented","502":"Bad Gateway","503":"Service Unavailable","504":"Gateway Timeout","505":"HTTP Version Not Supported","506":"Variant Also Negotiates","507":"Insufficient Storage","508":"Loop Detected","509":"Bandwidth Limit Exceeded","510":"Not Extended","511":"Network Authentication Required"}\');\n\n//# sourceURL=webpack://txadmin/./node_modules/statuses/codes.json?')},"./node_modules/systeminformation/package.json":
/*!*****************************************************!*\
  !*** ./node_modules/systeminformation/package.json ***!
  \*****************************************************/module=>{"use strict";eval('module.exports = JSON.parse(\'{"name":"systeminformation","version":"5.11.22","description":"Advanced, lightweight system and OS information library","license":"MIT","author":"Sebastian Hildebrandt <hildebrandt@plus-innovations.com> (https://plus-innovations.com)","homepage":"https://systeminformation.io","main":"./lib/index.js","bin":{"systeminformation":"lib/cli.js"},"types":"./lib/index.d.ts","scripts":{"test":"node ./test/test.js"},"files":["lib/"],"keywords":["system information","sysinfo","monitor","monitoring","os","linux","osx","windows","freebsd","openbsd","netbsd","cpu","cpuload","physical cores","logical cores","processor","cores","threads","socket type","memory","file system","fsstats","diskio","block devices","netstats","network","network interfaces","network connections","network stats","iface","printer","processes","users","internet","battery","docker","docker stats","docker processes","graphics","graphic card","graphic controller","gpu","display","smart","disk layout","usb","audio","bluetooth","wifi","wifinetworks","virtual box","virtualbox","vm","backend","hardware","BIOS","chassis"],"repository":{"type":"git","url":"https://github.com/sebhildebrandt/systeminformation.git"},"funding":{"type":"Buy me a coffee","url":"https://www.buymeacoffee.com/systeminfo"},"os":["darwin","linux","win32","freebsd","openbsd","netbsd","sunos","android"],"engines":{"node":">=8.0.0"}}\');\n\n//# sourceURL=webpack://txadmin/./node_modules/systeminformation/package.json?')},"./node_modules/tr46/lib/mappingTable.json":
/*!*************************************************!*\
  !*** ./node_modules/tr46/lib/mappingTable.json ***!
  \*************************************************/module=>{"use strict";eval('module.exports = JSON.parse(\'[[[0,44],"disallowed_STD3_valid"],[[45,46],"valid"],[[47,47],"disallowed_STD3_valid"],[[48,57],"valid"],[[58,64],"disallowed_STD3_valid"],[[65,65],"mapped",[97]],[[66,66],"mapped",[98]],[[67,67],"mapped",[99]],[[68,68],"mapped",[100]],[[69,69],"mapped",[101]],[[70,70],"mapped",[102]],[[71,71],"mapped",[103]],[[72,72],"mapped",[104]],[[73,73],"mapped",[105]],[[74,74],"mapped",[106]],[[75,75],"mapped",[107]],[[76,76],"mapped",[108]],[[77,77],"mapped",[109]],[[78,78],"mapped",[110]],[[79,79],"mapped",[111]],[[80,80],"mapped",[112]],[[81,81],"mapped",[113]],[[82,82],"mapped",[114]],[[83,83],"mapped",[115]],[[84,84],"mapped",[116]],[[85,85],"mapped",[117]],[[86,86],"mapped",[118]],[[87,87],"mapped",[119]],[[88,88],"mapped",[120]],[[89,89],"mapped",[121]],[[90,90],"mapped",[122]],[[91,96],"disallowed_STD3_valid"],[[97,122],"valid"],[[123,127],"disallowed_STD3_valid"],[[128,159],"disallowed"],[[160,160],"disallowed_STD3_mapped",[32]],[[161,167],"valid",[],"NV8"],[[168,168],"disallowed_STD3_mapped",[32,776]],[[169,169],"valid",[],"NV8"],[[170,170],"mapped",[97]],[[171,172],"valid",[],"NV8"],[[173,173],"ignored"],[[174,174],"valid",[],"NV8"],[[175,175],"disallowed_STD3_mapped",[32,772]],[[176,177],"valid",[],"NV8"],[[178,178],"mapped",[50]],[[179,179],"mapped",[51]],[[180,180],"disallowed_STD3_mapped",[32,769]],[[181,181],"mapped",[956]],[[182,182],"valid",[],"NV8"],[[183,183],"valid"],[[184,184],"disallowed_STD3_mapped",[32,807]],[[185,185],"mapped",[49]],[[186,186],"mapped",[111]],[[187,187],"valid",[],"NV8"],[[188,188],"mapped",[49,8260,52]],[[189,189],"mapped",[49,8260,50]],[[190,190],"mapped",[51,8260,52]],[[191,191],"valid",[],"NV8"],[[192,192],"mapped",[224]],[[193,193],"mapped",[225]],[[194,194],"mapped",[226]],[[195,195],"mapped",[227]],[[196,196],"mapped",[228]],[[197,197],"mapped",[229]],[[198,198],"mapped",[230]],[[199,199],"mapped",[231]],[[200,200],"mapped",[232]],[[201,201],"mapped",[233]],[[202,202],"mapped",[234]],[[203,203],"mapped",[235]],[[204,204],"mapped",[236]],[[205,205],"mapped",[237]],[[206,206],"mapped",[238]],[[207,207],"mapped",[239]],[[208,208],"mapped",[240]],[[209,209],"mapped",[241]],[[210,210],"mapped",[242]],[[211,211],"mapped",[243]],[[212,212],"mapped",[244]],[[213,213],"mapped",[245]],[[214,214],"mapped",[246]],[[215,215],"valid",[],"NV8"],[[216,216],"mapped",[248]],[[217,217],"mapped",[249]],[[218,218],"mapped",[250]],[[219,219],"mapped",[251]],[[220,220],"mapped",[252]],[[221,221],"mapped",[253]],[[222,222],"mapped",[254]],[[223,223],"deviation",[115,115]],[[224,246],"valid"],[[247,247],"valid",[],"NV8"],[[248,255],"valid"],[[256,256],"mapped",[257]],[[257,257],"valid"],[[258,258],"mapped",[259]],[[259,259],"valid"],[[260,260],"mapped",[261]],[[261,261],"valid"],[[262,262],"mapped",[263]],[[263,263],"valid"],[[264,264],"mapped",[265]],[[265,265],"valid"],[[266,266],"mapped",[267]],[[267,267],"valid"],[[268,268],"mapped",[269]],[[269,269],"valid"],[[270,270],"mapped",[271]],[[271,271],"valid"],[[272,272],"mapped",[273]],[[273,273],"valid"],[[274,274],"mapped",[275]],[[275,275],"valid"],[[276,276],"mapped",[277]],[[277,277],"valid"],[[278,278],"mapped",[279]],[[279,279],"valid"],[[280,280],"mapped",[281]],[[281,281],"valid"],[[282,282],"mapped",[283]],[[283,283],"valid"],[[284,284],"mapped",[285]],[[285,285],"valid"],[[286,286],"mapped",[287]],[[287,287],"valid"],[[288,288],"mapped",[289]],[[289,289],"valid"],[[290,290],"mapped",[291]],[[291,291],"valid"],[[292,292],"mapped",[293]],[[293,293],"valid"],[[294,294],"mapped",[295]],[[295,295],"valid"],[[296,296],"mapped",[297]],[[297,297],"valid"],[[298,298],"mapped",[299]],[[299,299],"valid"],[[300,300],"mapped",[301]],[[301,301],"valid"],[[302,302],"mapped",[303]],[[303,303],"valid"],[[304,304],"mapped",[105,775]],[[305,305],"valid"],[[306,307],"mapped",[105,106]],[[308,308],"mapped",[309]],[[309,309],"valid"],[[310,310],"mapped",[311]],[[311,312],"valid"],[[313,313],"mapped",[314]],[[314,314],"valid"],[[315,315],"mapped",[316]],[[316,316],"valid"],[[317,317],"mapped",[318]],[[318,318],"valid"],[[319,320],"mapped",[108,183]],[[321,321],"mapped",[322]],[[322,322],"valid"],[[323,323],"mapped",[324]],[[324,324],"valid"],[[325,325],"mapped",[326]],[[326,326],"valid"],[[327,327],"mapped",[328]],[[328,328],"valid"],[[329,329],"mapped",[700,110]],[[330,330],"mapped",[331]],[[331,331],"valid"],[[332,332],"mapped",[333]],[[333,333],"valid"],[[334,334],"mapped",[335]],[[335,335],"valid"],[[336,336],"mapped",[337]],[[337,337],"valid"],[[338,338],"mapped",[339]],[[339,339],"valid"],[[340,340],"mapped",[341]],[[341,341],"valid"],[[342,342],"mapped",[343]],[[343,343],"valid"],[[344,344],"mapped",[345]],[[345,345],"valid"],[[346,346],"mapped",[347]],[[347,347],"valid"],[[348,348],"mapped",[349]],[[349,349],"valid"],[[350,350],"mapped",[351]],[[351,351],"valid"],[[352,352],"mapped",[353]],[[353,353],"valid"],[[354,354],"mapped",[355]],[[355,355],"valid"],[[356,356],"mapped",[357]],[[357,357],"valid"],[[358,358],"mapped",[359]],[[359,359],"valid"],[[360,360],"mapped",[361]],[[361,361],"valid"],[[362,362],"mapped",[363]],[[363,363],"valid"],[[364,364],"mapped",[365]],[[365,365],"valid"],[[366,366],"mapped",[367]],[[367,367],"valid"],[[368,368],"mapped",[369]],[[369,369],"valid"],[[370,370],"mapped",[371]],[[371,371],"valid"],[[372,372],"mapped",[373]],[[373,373],"valid"],[[374,374],"mapped",[375]],[[375,375],"valid"],[[376,376],"mapped",[255]],[[377,377],"mapped",[378]],[[378,378],"valid"],[[379,379],"mapped",[380]],[[380,380],"valid"],[[381,381],"mapped",[382]],[[382,382],"valid"],[[383,383],"mapped",[115]],[[384,384],"valid"],[[385,385],"mapped",[595]],[[386,386],"mapped",[387]],[[387,387],"valid"],[[388,388],"mapped",[389]],[[389,389],"valid"],[[390,390],"mapped",[596]],[[391,391],"mapped",[392]],[[392,392],"valid"],[[393,393],"mapped",[598]],[[394,394],"mapped",[599]],[[395,395],"mapped",[396]],[[396,397],"valid"],[[398,398],"mapped",[477]],[[399,399],"mapped",[601]],[[400,400],"mapped",[603]],[[401,401],"mapped",[402]],[[402,402],"valid"],[[403,403],"mapped",[608]],[[404,404],"mapped",[611]],[[405,405],"valid"],[[406,406],"mapped",[617]],[[407,407],"mapped",[616]],[[408,408],"mapped",[409]],[[409,411],"valid"],[[412,412],"mapped",[623]],[[413,413],"mapped",[626]],[[414,414],"valid"],[[415,415],"mapped",[629]],[[416,416],"mapped",[417]],[[417,417],"valid"],[[418,418],"mapped",[419]],[[419,419],"valid"],[[420,420],"mapped",[421]],[[421,421],"valid"],[[422,422],"mapped",[640]],[[423,423],"mapped",[424]],[[424,424],"valid"],[[425,425],"mapped",[643]],[[426,427],"valid"],[[428,428],"mapped",[429]],[[429,429],"valid"],[[430,430],"mapped",[648]],[[431,431],"mapped",[432]],[[432,432],"valid"],[[433,433],"mapped",[650]],[[434,434],"mapped",[651]],[[435,435],"mapped",[436]],[[436,436],"valid"],[[437,437],"mapped",[438]],[[438,438],"valid"],[[439,439],"mapped",[658]],[[440,440],"mapped",[441]],[[441,443],"valid"],[[444,444],"mapped",[445]],[[445,451],"valid"],[[452,454],"mapped",[100,382]],[[455,457],"mapped",[108,106]],[[458,460],"mapped",[110,106]],[[461,461],"mapped",[462]],[[462,462],"valid"],[[463,463],"mapped",[464]],[[464,464],"valid"],[[465,465],"mapped",[466]],[[466,466],"valid"],[[467,467],"mapped",[468]],[[468,468],"valid"],[[469,469],"mapped",[470]],[[470,470],"valid"],[[471,471],"mapped",[472]],[[472,472],"valid"],[[473,473],"mapped",[474]],[[474,474],"valid"],[[475,475],"mapped",[476]],[[476,477],"valid"],[[478,478],"mapped",[479]],[[479,479],"valid"],[[480,480],"mapped",[481]],[[481,481],"valid"],[[482,482],"mapped",[483]],[[483,483],"valid"],[[484,484],"mapped",[485]],[[485,485],"valid"],[[486,486],"mapped",[487]],[[487,487],"valid"],[[488,488],"mapped",[489]],[[489,489],"valid"],[[490,490],"mapped",[491]],[[491,491],"valid"],[[492,492],"mapped",[493]],[[493,493],"valid"],[[494,494],"mapped",[495]],[[495,496],"valid"],[[497,499],"mapped",[100,122]],[[500,500],"mapped",[501]],[[501,501],"valid"],[[502,502],"mapped",[405]],[[503,503],"mapped",[447]],[[504,504],"mapped",[505]],[[505,505],"valid"],[[506,506],"mapped",[507]],[[507,507],"valid"],[[508,508],"mapped",[509]],[[509,509],"valid"],[[510,510],"mapped",[511]],[[511,511],"valid"],[[512,512],"mapped",[513]],[[513,513],"valid"],[[514,514],"mapped",[515]],[[515,515],"valid"],[[516,516],"mapped",[517]],[[517,517],"valid"],[[518,518],"mapped",[519]],[[519,519],"valid"],[[520,520],"mapped",[521]],[[521,521],"valid"],[[522,522],"mapped",[523]],[[523,523],"valid"],[[524,524],"mapped",[525]],[[525,525],"valid"],[[526,526],"mapped",[527]],[[527,527],"valid"],[[528,528],"mapped",[529]],[[529,529],"valid"],[[530,530],"mapped",[531]],[[531,531],"valid"],[[532,532],"mapped",[533]],[[533,533],"valid"],[[534,534],"mapped",[535]],[[535,535],"valid"],[[536,536],"mapped",[537]],[[537,537],"valid"],[[538,538],"mapped",[539]],[[539,539],"valid"],[[540,540],"mapped",[541]],[[541,541],"valid"],[[542,542],"mapped",[543]],[[543,543],"valid"],[[544,544],"mapped",[414]],[[545,545],"valid"],[[546,546],"mapped",[547]],[[547,547],"valid"],[[548,548],"mapped",[549]],[[549,549],"valid"],[[550,550],"mapped",[551]],[[551,551],"valid"],[[552,552],"mapped",[553]],[[553,553],"valid"],[[554,554],"mapped",[555]],[[555,555],"valid"],[[556,556],"mapped",[557]],[[557,557],"valid"],[[558,558],"mapped",[559]],[[559,559],"valid"],[[560,560],"mapped",[561]],[[561,561],"valid"],[[562,562],"mapped",[563]],[[563,563],"valid"],[[564,566],"valid"],[[567,569],"valid"],[[570,570],"mapped",[11365]],[[571,571],"mapped",[572]],[[572,572],"valid"],[[573,573],"mapped",[410]],[[574,574],"mapped",[11366]],[[575,576],"valid"],[[577,577],"mapped",[578]],[[578,578],"valid"],[[579,579],"mapped",[384]],[[580,580],"mapped",[649]],[[581,581],"mapped",[652]],[[582,582],"mapped",[583]],[[583,583],"valid"],[[584,584],"mapped",[585]],[[585,585],"valid"],[[586,586],"mapped",[587]],[[587,587],"valid"],[[588,588],"mapped",[589]],[[589,589],"valid"],[[590,590],"mapped",[591]],[[591,591],"valid"],[[592,680],"valid"],[[681,685],"valid"],[[686,687],"valid"],[[688,688],"mapped",[104]],[[689,689],"mapped",[614]],[[690,690],"mapped",[106]],[[691,691],"mapped",[114]],[[692,692],"mapped",[633]],[[693,693],"mapped",[635]],[[694,694],"mapped",[641]],[[695,695],"mapped",[119]],[[696,696],"mapped",[121]],[[697,705],"valid"],[[706,709],"valid",[],"NV8"],[[710,721],"valid"],[[722,727],"valid",[],"NV8"],[[728,728],"disallowed_STD3_mapped",[32,774]],[[729,729],"disallowed_STD3_mapped",[32,775]],[[730,730],"disallowed_STD3_mapped",[32,778]],[[731,731],"disallowed_STD3_mapped",[32,808]],[[732,732],"disallowed_STD3_mapped",[32,771]],[[733,733],"disallowed_STD3_mapped",[32,779]],[[734,734],"valid",[],"NV8"],[[735,735],"valid",[],"NV8"],[[736,736],"mapped",[611]],[[737,737],"mapped",[108]],[[738,738],"mapped",[115]],[[739,739],"mapped",[120]],[[740,740],"mapped",[661]],[[741,745],"valid",[],"NV8"],[[746,747],"valid",[],"NV8"],[[748,748],"valid"],[[749,749],"valid",[],"NV8"],[[750,750],"valid"],[[751,767],"valid",[],"NV8"],[[768,831],"valid"],[[832,832],"mapped",[768]],[[833,833],"mapped",[769]],[[834,834],"valid"],[[835,835],"mapped",[787]],[[836,836],"mapped",[776,769]],[[837,837],"mapped",[953]],[[838,846],"valid"],[[847,847],"ignored"],[[848,855],"valid"],[[856,860],"valid"],[[861,863],"valid"],[[864,865],"valid"],[[866,866],"valid"],[[867,879],"valid"],[[880,880],"mapped",[881]],[[881,881],"valid"],[[882,882],"mapped",[883]],[[883,883],"valid"],[[884,884],"mapped",[697]],[[885,885],"valid"],[[886,886],"mapped",[887]],[[887,887],"valid"],[[888,889],"disallowed"],[[890,890],"disallowed_STD3_mapped",[32,953]],[[891,893],"valid"],[[894,894],"disallowed_STD3_mapped",[59]],[[895,895],"mapped",[1011]],[[896,899],"disallowed"],[[900,900],"disallowed_STD3_mapped",[32,769]],[[901,901],"disallowed_STD3_mapped",[32,776,769]],[[902,902],"mapped",[940]],[[903,903],"mapped",[183]],[[904,904],"mapped",[941]],[[905,905],"mapped",[942]],[[906,906],"mapped",[943]],[[907,907],"disallowed"],[[908,908],"mapped",[972]],[[909,909],"disallowed"],[[910,910],"mapped",[973]],[[911,911],"mapped",[974]],[[912,912],"valid"],[[913,913],"mapped",[945]],[[914,914],"mapped",[946]],[[915,915],"mapped",[947]],[[916,916],"mapped",[948]],[[917,917],"mapped",[949]],[[918,918],"mapped",[950]],[[919,919],"mapped",[951]],[[920,920],"mapped",[952]],[[921,921],"mapped",[953]],[[922,922],"mapped",[954]],[[923,923],"mapped",[955]],[[924,924],"mapped",[956]],[[925,925],"mapped",[957]],[[926,926],"mapped",[958]],[[927,927],"mapped",[959]],[[928,928],"mapped",[960]],[[929,929],"mapped",[961]],[[930,930],"disallowed"],[[931,931],"mapped",[963]],[[932,932],"mapped",[964]],[[933,933],"mapped",[965]],[[934,934],"mapped",[966]],[[935,935],"mapped",[967]],[[936,936],"mapped",[968]],[[937,937],"mapped",[969]],[[938,938],"mapped",[970]],[[939,939],"mapped",[971]],[[940,961],"valid"],[[962,962],"deviation",[963]],[[963,974],"valid"],[[975,975],"mapped",[983]],[[976,976],"mapped",[946]],[[977,977],"mapped",[952]],[[978,978],"mapped",[965]],[[979,979],"mapped",[973]],[[980,980],"mapped",[971]],[[981,981],"mapped",[966]],[[982,982],"mapped",[960]],[[983,983],"valid"],[[984,984],"mapped",[985]],[[985,985],"valid"],[[986,986],"mapped",[987]],[[987,987],"valid"],[[988,988],"mapped",[989]],[[989,989],"valid"],[[990,990],"mapped",[991]],[[991,991],"valid"],[[992,992],"mapped",[993]],[[993,993],"valid"],[[994,994],"mapped",[995]],[[995,995],"valid"],[[996,996],"mapped",[997]],[[997,997],"valid"],[[998,998],"mapped",[999]],[[999,999],"valid"],[[1000,1000],"mapped",[1001]],[[1001,1001],"valid"],[[1002,1002],"mapped",[1003]],[[1003,1003],"valid"],[[1004,1004],"mapped",[1005]],[[1005,1005],"valid"],[[1006,1006],"mapped",[1007]],[[1007,1007],"valid"],[[1008,1008],"mapped",[954]],[[1009,1009],"mapped",[961]],[[1010,1010],"mapped",[963]],[[1011,1011],"valid"],[[1012,1012],"mapped",[952]],[[1013,1013],"mapped",[949]],[[1014,1014],"valid",[],"NV8"],[[1015,1015],"mapped",[1016]],[[1016,1016],"valid"],[[1017,1017],"mapped",[963]],[[1018,1018],"mapped",[1019]],[[1019,1019],"valid"],[[1020,1020],"valid"],[[1021,1021],"mapped",[891]],[[1022,1022],"mapped",[892]],[[1023,1023],"mapped",[893]],[[1024,1024],"mapped",[1104]],[[1025,1025],"mapped",[1105]],[[1026,1026],"mapped",[1106]],[[1027,1027],"mapped",[1107]],[[1028,1028],"mapped",[1108]],[[1029,1029],"mapped",[1109]],[[1030,1030],"mapped",[1110]],[[1031,1031],"mapped",[1111]],[[1032,1032],"mapped",[1112]],[[1033,1033],"mapped",[1113]],[[1034,1034],"mapped",[1114]],[[1035,1035],"mapped",[1115]],[[1036,1036],"mapped",[1116]],[[1037,1037],"mapped",[1117]],[[1038,1038],"mapped",[1118]],[[1039,1039],"mapped",[1119]],[[1040,1040],"mapped",[1072]],[[1041,1041],"mapped",[1073]],[[1042,1042],"mapped",[1074]],[[1043,1043],"mapped",[1075]],[[1044,1044],"mapped",[1076]],[[1045,1045],"mapped",[1077]],[[1046,1046],"mapped",[1078]],[[1047,1047],"mapped",[1079]],[[1048,1048],"mapped",[1080]],[[1049,1049],"mapped",[1081]],[[1050,1050],"mapped",[1082]],[[1051,1051],"mapped",[1083]],[[1052,1052],"mapped",[1084]],[[1053,1053],"mapped",[1085]],[[1054,1054],"mapped",[1086]],[[1055,1055],"mapped",[1087]],[[1056,1056],"mapped",[1088]],[[1057,1057],"mapped",[1089]],[[1058,1058],"mapped",[1090]],[[1059,1059],"mapped",[1091]],[[1060,1060],"mapped",[1092]],[[1061,1061],"mapped",[1093]],[[1062,1062],"mapped",[1094]],[[1063,1063],"mapped",[1095]],[[1064,1064],"mapped",[1096]],[[1065,1065],"mapped",[1097]],[[1066,1066],"mapped",[1098]],[[1067,1067],"mapped",[1099]],[[1068,1068],"mapped",[1100]],[[1069,1069],"mapped",[1101]],[[1070,1070],"mapped",[1102]],[[1071,1071],"mapped",[1103]],[[1072,1103],"valid"],[[1104,1104],"valid"],[[1105,1116],"valid"],[[1117,1117],"valid"],[[1118,1119],"valid"],[[1120,1120],"mapped",[1121]],[[1121,1121],"valid"],[[1122,1122],"mapped",[1123]],[[1123,1123],"valid"],[[1124,1124],"mapped",[1125]],[[1125,1125],"valid"],[[1126,1126],"mapped",[1127]],[[1127,1127],"valid"],[[1128,1128],"mapped",[1129]],[[1129,1129],"valid"],[[1130,1130],"mapped",[1131]],[[1131,1131],"valid"],[[1132,1132],"mapped",[1133]],[[1133,1133],"valid"],[[1134,1134],"mapped",[1135]],[[1135,1135],"valid"],[[1136,1136],"mapped",[1137]],[[1137,1137],"valid"],[[1138,1138],"mapped",[1139]],[[1139,1139],"valid"],[[1140,1140],"mapped",[1141]],[[1141,1141],"valid"],[[1142,1142],"mapped",[1143]],[[1143,1143],"valid"],[[1144,1144],"mapped",[1145]],[[1145,1145],"valid"],[[1146,1146],"mapped",[1147]],[[1147,1147],"valid"],[[1148,1148],"mapped",[1149]],[[1149,1149],"valid"],[[1150,1150],"mapped",[1151]],[[1151,1151],"valid"],[[1152,1152],"mapped",[1153]],[[1153,1153],"valid"],[[1154,1154],"valid",[],"NV8"],[[1155,1158],"valid"],[[1159,1159],"valid"],[[1160,1161],"valid",[],"NV8"],[[1162,1162],"mapped",[1163]],[[1163,1163],"valid"],[[1164,1164],"mapped",[1165]],[[1165,1165],"valid"],[[1166,1166],"mapped",[1167]],[[1167,1167],"valid"],[[1168,1168],"mapped",[1169]],[[1169,1169],"valid"],[[1170,1170],"mapped",[1171]],[[1171,1171],"valid"],[[1172,1172],"mapped",[1173]],[[1173,1173],"valid"],[[1174,1174],"mapped",[1175]],[[1175,1175],"valid"],[[1176,1176],"mapped",[1177]],[[1177,1177],"valid"],[[1178,1178],"mapped",[1179]],[[1179,1179],"valid"],[[1180,1180],"mapped",[1181]],[[1181,1181],"valid"],[[1182,1182],"mapped",[1183]],[[1183,1183],"valid"],[[1184,1184],"mapped",[1185]],[[1185,1185],"valid"],[[1186,1186],"mapped",[1187]],[[1187,1187],"valid"],[[1188,1188],"mapped",[1189]],[[1189,1189],"valid"],[[1190,1190],"mapped",[1191]],[[1191,1191],"valid"],[[1192,1192],"mapped",[1193]],[[1193,1193],"valid"],[[1194,1194],"mapped",[1195]],[[1195,1195],"valid"],[[1196,1196],"mapped",[1197]],[[1197,1197],"valid"],[[1198,1198],"mapped",[1199]],[[1199,1199],"valid"],[[1200,1200],"mapped",[1201]],[[1201,1201],"valid"],[[1202,1202],"mapped",[1203]],[[1203,1203],"valid"],[[1204,1204],"mapped",[1205]],[[1205,1205],"valid"],[[1206,1206],"mapped",[1207]],[[1207,1207],"valid"],[[1208,1208],"mapped",[1209]],[[1209,1209],"valid"],[[1210,1210],"mapped",[1211]],[[1211,1211],"valid"],[[1212,1212],"mapped",[1213]],[[1213,1213],"valid"],[[1214,1214],"mapped",[1215]],[[1215,1215],"valid"],[[1216,1216],"disallowed"],[[1217,1217],"mapped",[1218]],[[1218,1218],"valid"],[[1219,1219],"mapped",[1220]],[[1220,1220],"valid"],[[1221,1221],"mapped",[1222]],[[1222,1222],"valid"],[[1223,1223],"mapped",[1224]],[[1224,1224],"valid"],[[1225,1225],"mapped",[1226]],[[1226,1226],"valid"],[[1227,1227],"mapped",[1228]],[[1228,1228],"valid"],[[1229,1229],"mapped",[1230]],[[1230,1230],"valid"],[[1231,1231],"valid"],[[1232,1232],"mapped",[1233]],[[1233,1233],"valid"],[[1234,1234],"mapped",[1235]],[[1235,1235],"valid"],[[1236,1236],"mapped",[1237]],[[1237,1237],"valid"],[[1238,1238],"mapped",[1239]],[[1239,1239],"valid"],[[1240,1240],"mapped",[1241]],[[1241,1241],"valid"],[[1242,1242],"mapped",[1243]],[[1243,1243],"valid"],[[1244,1244],"mapped",[1245]],[[1245,1245],"valid"],[[1246,1246],"mapped",[1247]],[[1247,1247],"valid"],[[1248,1248],"mapped",[1249]],[[1249,1249],"valid"],[[1250,1250],"mapped",[1251]],[[1251,1251],"valid"],[[1252,1252],"mapped",[1253]],[[1253,1253],"valid"],[[1254,1254],"mapped",[1255]],[[1255,1255],"valid"],[[1256,1256],"mapped",[1257]],[[1257,1257],"valid"],[[1258,1258],"mapped",[1259]],[[1259,1259],"valid"],[[1260,1260],"mapped",[1261]],[[1261,1261],"valid"],[[1262,1262],"mapped",[1263]],[[1263,1263],"valid"],[[1264,1264],"mapped",[1265]],[[1265,1265],"valid"],[[1266,1266],"mapped",[1267]],[[1267,1267],"valid"],[[1268,1268],"mapped",[1269]],[[1269,1269],"valid"],[[1270,1270],"mapped",[1271]],[[1271,1271],"valid"],[[1272,1272],"mapped",[1273]],[[1273,1273],"valid"],[[1274,1274],"mapped",[1275]],[[1275,1275],"valid"],[[1276,1276],"mapped",[1277]],[[1277,1277],"valid"],[[1278,1278],"mapped",[1279]],[[1279,1279],"valid"],[[1280,1280],"mapped",[1281]],[[1281,1281],"valid"],[[1282,1282],"mapped",[1283]],[[1283,1283],"valid"],[[1284,1284],"mapped",[1285]],[[1285,1285],"valid"],[[1286,1286],"mapped",[1287]],[[1287,1287],"valid"],[[1288,1288],"mapped",[1289]],[[1289,1289],"valid"],[[1290,1290],"mapped",[1291]],[[1291,1291],"valid"],[[1292,1292],"mapped",[1293]],[[1293,1293],"valid"],[[1294,1294],"mapped",[1295]],[[1295,1295],"valid"],[[1296,1296],"mapped",[1297]],[[1297,1297],"valid"],[[1298,1298],"mapped",[1299]],[[1299,1299],"valid"],[[1300,1300],"mapped",[1301]],[[1301,1301],"valid"],[[1302,1302],"mapped",[1303]],[[1303,1303],"valid"],[[1304,1304],"mapped",[1305]],[[1305,1305],"valid"],[[1306,1306],"mapped",[1307]],[[1307,1307],"valid"],[[1308,1308],"mapped",[1309]],[[1309,1309],"valid"],[[1310,1310],"mapped",[1311]],[[1311,1311],"valid"],[[1312,1312],"mapped",[1313]],[[1313,1313],"valid"],[[1314,1314],"mapped",[1315]],[[1315,1315],"valid"],[[1316,1316],"mapped",[1317]],[[1317,1317],"valid"],[[1318,1318],"mapped",[1319]],[[1319,1319],"valid"],[[1320,1320],"mapped",[1321]],[[1321,1321],"valid"],[[1322,1322],"mapped",[1323]],[[1323,1323],"valid"],[[1324,1324],"mapped",[1325]],[[1325,1325],"valid"],[[1326,1326],"mapped",[1327]],[[1327,1327],"valid"],[[1328,1328],"disallowed"],[[1329,1329],"mapped",[1377]],[[1330,1330],"mapped",[1378]],[[1331,1331],"mapped",[1379]],[[1332,1332],"mapped",[1380]],[[1333,1333],"mapped",[1381]],[[1334,1334],"mapped",[1382]],[[1335,1335],"mapped",[1383]],[[1336,1336],"mapped",[1384]],[[1337,1337],"mapped",[1385]],[[1338,1338],"mapped",[1386]],[[1339,1339],"mapped",[1387]],[[1340,1340],"mapped",[1388]],[[1341,1341],"mapped",[1389]],[[1342,1342],"mapped",[1390]],[[1343,1343],"mapped",[1391]],[[1344,1344],"mapped",[1392]],[[1345,1345],"mapped",[1393]],[[1346,1346],"mapped",[1394]],[[1347,1347],"mapped",[1395]],[[1348,1348],"mapped",[1396]],[[1349,1349],"mapped",[1397]],[[1350,1350],"mapped",[1398]],[[1351,1351],"mapped",[1399]],[[1352,1352],"mapped",[1400]],[[1353,1353],"mapped",[1401]],[[1354,1354],"mapped",[1402]],[[1355,1355],"mapped",[1403]],[[1356,1356],"mapped",[1404]],[[1357,1357],"mapped",[1405]],[[1358,1358],"mapped",[1406]],[[1359,1359],"mapped",[1407]],[[1360,1360],"mapped",[1408]],[[1361,1361],"mapped",[1409]],[[1362,1362],"mapped",[1410]],[[1363,1363],"mapped",[1411]],[[1364,1364],"mapped",[1412]],[[1365,1365],"mapped",[1413]],[[1366,1366],"mapped",[1414]],[[1367,1368],"disallowed"],[[1369,1369],"valid"],[[1370,1375],"valid",[],"NV8"],[[1376,1376],"disallowed"],[[1377,1414],"valid"],[[1415,1415],"mapped",[1381,1410]],[[1416,1416],"disallowed"],[[1417,1417],"valid",[],"NV8"],[[1418,1418],"valid",[],"NV8"],[[1419,1420],"disallowed"],[[1421,1422],"valid",[],"NV8"],[[1423,1423],"valid",[],"NV8"],[[1424,1424],"disallowed"],[[1425,1441],"valid"],[[1442,1442],"valid"],[[1443,1455],"valid"],[[1456,1465],"valid"],[[1466,1466],"valid"],[[1467,1469],"valid"],[[1470,1470],"valid",[],"NV8"],[[1471,1471],"valid"],[[1472,1472],"valid",[],"NV8"],[[1473,1474],"valid"],[[1475,1475],"valid",[],"NV8"],[[1476,1476],"valid"],[[1477,1477],"valid"],[[1478,1478],"valid",[],"NV8"],[[1479,1479],"valid"],[[1480,1487],"disallowed"],[[1488,1514],"valid"],[[1515,1519],"disallowed"],[[1520,1524],"valid"],[[1525,1535],"disallowed"],[[1536,1539],"disallowed"],[[1540,1540],"disallowed"],[[1541,1541],"disallowed"],[[1542,1546],"valid",[],"NV8"],[[1547,1547],"valid",[],"NV8"],[[1548,1548],"valid",[],"NV8"],[[1549,1551],"valid",[],"NV8"],[[1552,1557],"valid"],[[1558,1562],"valid"],[[1563,1563],"valid",[],"NV8"],[[1564,1564],"disallowed"],[[1565,1565],"disallowed"],[[1566,1566],"valid",[],"NV8"],[[1567,1567],"valid",[],"NV8"],[[1568,1568],"valid"],[[1569,1594],"valid"],[[1595,1599],"valid"],[[1600,1600],"valid",[],"NV8"],[[1601,1618],"valid"],[[1619,1621],"valid"],[[1622,1624],"valid"],[[1625,1630],"valid"],[[1631,1631],"valid"],[[1632,1641],"valid"],[[1642,1645],"valid",[],"NV8"],[[1646,1647],"valid"],[[1648,1652],"valid"],[[1653,1653],"mapped",[1575,1652]],[[1654,1654],"mapped",[1608,1652]],[[1655,1655],"mapped",[1735,1652]],[[1656,1656],"mapped",[1610,1652]],[[1657,1719],"valid"],[[1720,1721],"valid"],[[1722,1726],"valid"],[[1727,1727],"valid"],[[1728,1742],"valid"],[[1743,1743],"valid"],[[1744,1747],"valid"],[[1748,1748],"valid",[],"NV8"],[[1749,1756],"valid"],[[1757,1757],"disallowed"],[[1758,1758],"valid",[],"NV8"],[[1759,1768],"valid"],[[1769,1769],"valid",[],"NV8"],[[1770,1773],"valid"],[[1774,1775],"valid"],[[1776,1785],"valid"],[[1786,1790],"valid"],[[1791,1791],"valid"],[[1792,1805],"valid",[],"NV8"],[[1806,1806],"disallowed"],[[1807,1807],"disallowed"],[[1808,1836],"valid"],[[1837,1839],"valid"],[[1840,1866],"valid"],[[1867,1868],"disallowed"],[[1869,1871],"valid"],[[1872,1901],"valid"],[[1902,1919],"valid"],[[1920,1968],"valid"],[[1969,1969],"valid"],[[1970,1983],"disallowed"],[[1984,2037],"valid"],[[2038,2042],"valid",[],"NV8"],[[2043,2047],"disallowed"],[[2048,2093],"valid"],[[2094,2095],"disallowed"],[[2096,2110],"valid",[],"NV8"],[[2111,2111],"disallowed"],[[2112,2139],"valid"],[[2140,2141],"disallowed"],[[2142,2142],"valid",[],"NV8"],[[2143,2207],"disallowed"],[[2208,2208],"valid"],[[2209,2209],"valid"],[[2210,2220],"valid"],[[2221,2226],"valid"],[[2227,2228],"valid"],[[2229,2274],"disallowed"],[[2275,2275],"valid"],[[2276,2302],"valid"],[[2303,2303],"valid"],[[2304,2304],"valid"],[[2305,2307],"valid"],[[2308,2308],"valid"],[[2309,2361],"valid"],[[2362,2363],"valid"],[[2364,2381],"valid"],[[2382,2382],"valid"],[[2383,2383],"valid"],[[2384,2388],"valid"],[[2389,2389],"valid"],[[2390,2391],"valid"],[[2392,2392],"mapped",[2325,2364]],[[2393,2393],"mapped",[2326,2364]],[[2394,2394],"mapped",[2327,2364]],[[2395,2395],"mapped",[2332,2364]],[[2396,2396],"mapped",[2337,2364]],[[2397,2397],"mapped",[2338,2364]],[[2398,2398],"mapped",[2347,2364]],[[2399,2399],"mapped",[2351,2364]],[[2400,2403],"valid"],[[2404,2405],"valid",[],"NV8"],[[2406,2415],"valid"],[[2416,2416],"valid",[],"NV8"],[[2417,2418],"valid"],[[2419,2423],"valid"],[[2424,2424],"valid"],[[2425,2426],"valid"],[[2427,2428],"valid"],[[2429,2429],"valid"],[[2430,2431],"valid"],[[2432,2432],"valid"],[[2433,2435],"valid"],[[2436,2436],"disallowed"],[[2437,2444],"valid"],[[2445,2446],"disallowed"],[[2447,2448],"valid"],[[2449,2450],"disallowed"],[[2451,2472],"valid"],[[2473,2473],"disallowed"],[[2474,2480],"valid"],[[2481,2481],"disallowed"],[[2482,2482],"valid"],[[2483,2485],"disallowed"],[[2486,2489],"valid"],[[2490,2491],"disallowed"],[[2492,2492],"valid"],[[2493,2493],"valid"],[[2494,2500],"valid"],[[2501,2502],"disallowed"],[[2503,2504],"valid"],[[2505,2506],"disallowed"],[[2507,2509],"valid"],[[2510,2510],"valid"],[[2511,2518],"disallowed"],[[2519,2519],"valid"],[[2520,2523],"disallowed"],[[2524,2524],"mapped",[2465,2492]],[[2525,2525],"mapped",[2466,2492]],[[2526,2526],"disallowed"],[[2527,2527],"mapped",[2479,2492]],[[2528,2531],"valid"],[[2532,2533],"disallowed"],[[2534,2545],"valid"],[[2546,2554],"valid",[],"NV8"],[[2555,2555],"valid",[],"NV8"],[[2556,2560],"disallowed"],[[2561,2561],"valid"],[[2562,2562],"valid"],[[2563,2563],"valid"],[[2564,2564],"disallowed"],[[2565,2570],"valid"],[[2571,2574],"disallowed"],[[2575,2576],"valid"],[[2577,2578],"disallowed"],[[2579,2600],"valid"],[[2601,2601],"disallowed"],[[2602,2608],"valid"],[[2609,2609],"disallowed"],[[2610,2610],"valid"],[[2611,2611],"mapped",[2610,2620]],[[2612,2612],"disallowed"],[[2613,2613],"valid"],[[2614,2614],"mapped",[2616,2620]],[[2615,2615],"disallowed"],[[2616,2617],"valid"],[[2618,2619],"disallowed"],[[2620,2620],"valid"],[[2621,2621],"disallowed"],[[2622,2626],"valid"],[[2627,2630],"disallowed"],[[2631,2632],"valid"],[[2633,2634],"disallowed"],[[2635,2637],"valid"],[[2638,2640],"disallowed"],[[2641,2641],"valid"],[[2642,2648],"disallowed"],[[2649,2649],"mapped",[2582,2620]],[[2650,2650],"mapped",[2583,2620]],[[2651,2651],"mapped",[2588,2620]],[[2652,2652],"valid"],[[2653,2653],"disallowed"],[[2654,2654],"mapped",[2603,2620]],[[2655,2661],"disallowed"],[[2662,2676],"valid"],[[2677,2677],"valid"],[[2678,2688],"disallowed"],[[2689,2691],"valid"],[[2692,2692],"disallowed"],[[2693,2699],"valid"],[[2700,2700],"valid"],[[2701,2701],"valid"],[[2702,2702],"disallowed"],[[2703,2705],"valid"],[[2706,2706],"disallowed"],[[2707,2728],"valid"],[[2729,2729],"disallowed"],[[2730,2736],"valid"],[[2737,2737],"disallowed"],[[2738,2739],"valid"],[[2740,2740],"disallowed"],[[2741,2745],"valid"],[[2746,2747],"disallowed"],[[2748,2757],"valid"],[[2758,2758],"disallowed"],[[2759,2761],"valid"],[[2762,2762],"disallowed"],[[2763,2765],"valid"],[[2766,2767],"disallowed"],[[2768,2768],"valid"],[[2769,2783],"disallowed"],[[2784,2784],"valid"],[[2785,2787],"valid"],[[2788,2789],"disallowed"],[[2790,2799],"valid"],[[2800,2800],"valid",[],"NV8"],[[2801,2801],"valid",[],"NV8"],[[2802,2808],"disallowed"],[[2809,2809],"valid"],[[2810,2816],"disallowed"],[[2817,2819],"valid"],[[2820,2820],"disallowed"],[[2821,2828],"valid"],[[2829,2830],"disallowed"],[[2831,2832],"valid"],[[2833,2834],"disallowed"],[[2835,2856],"valid"],[[2857,2857],"disallowed"],[[2858,2864],"valid"],[[2865,2865],"disallowed"],[[2866,2867],"valid"],[[2868,2868],"disallowed"],[[2869,2869],"valid"],[[2870,2873],"valid"],[[2874,2875],"disallowed"],[[2876,2883],"valid"],[[2884,2884],"valid"],[[2885,2886],"disallowed"],[[2887,2888],"valid"],[[2889,2890],"disallowed"],[[2891,2893],"valid"],[[2894,2901],"disallowed"],[[2902,2903],"valid"],[[2904,2907],"disallowed"],[[2908,2908],"mapped",[2849,2876]],[[2909,2909],"mapped",[2850,2876]],[[2910,2910],"disallowed"],[[2911,2913],"valid"],[[2914,2915],"valid"],[[2916,2917],"disallowed"],[[2918,2927],"valid"],[[2928,2928],"valid",[],"NV8"],[[2929,2929],"valid"],[[2930,2935],"valid",[],"NV8"],[[2936,2945],"disallowed"],[[2946,2947],"valid"],[[2948,2948],"disallowed"],[[2949,2954],"valid"],[[2955,2957],"disallowed"],[[2958,2960],"valid"],[[2961,2961],"disallowed"],[[2962,2965],"valid"],[[2966,2968],"disallowed"],[[2969,2970],"valid"],[[2971,2971],"disallowed"],[[2972,2972],"valid"],[[2973,2973],"disallowed"],[[2974,2975],"valid"],[[2976,2978],"disallowed"],[[2979,2980],"valid"],[[2981,2983],"disallowed"],[[2984,2986],"valid"],[[2987,2989],"disallowed"],[[2990,2997],"valid"],[[2998,2998],"valid"],[[2999,3001],"valid"],[[3002,3005],"disallowed"],[[3006,3010],"valid"],[[3011,3013],"disallowed"],[[3014,3016],"valid"],[[3017,3017],"disallowed"],[[3018,3021],"valid"],[[3022,3023],"disallowed"],[[3024,3024],"valid"],[[3025,3030],"disallowed"],[[3031,3031],"valid"],[[3032,3045],"disallowed"],[[3046,3046],"valid"],[[3047,3055],"valid"],[[3056,3058],"valid",[],"NV8"],[[3059,3066],"valid",[],"NV8"],[[3067,3071],"disallowed"],[[3072,3072],"valid"],[[3073,3075],"valid"],[[3076,3076],"disallowed"],[[3077,3084],"valid"],[[3085,3085],"disallowed"],[[3086,3088],"valid"],[[3089,3089],"disallowed"],[[3090,3112],"valid"],[[3113,3113],"disallowed"],[[3114,3123],"valid"],[[3124,3124],"valid"],[[3125,3129],"valid"],[[3130,3132],"disallowed"],[[3133,3133],"valid"],[[3134,3140],"valid"],[[3141,3141],"disallowed"],[[3142,3144],"valid"],[[3145,3145],"disallowed"],[[3146,3149],"valid"],[[3150,3156],"disallowed"],[[3157,3158],"valid"],[[3159,3159],"disallowed"],[[3160,3161],"valid"],[[3162,3162],"valid"],[[3163,3167],"disallowed"],[[3168,3169],"valid"],[[3170,3171],"valid"],[[3172,3173],"disallowed"],[[3174,3183],"valid"],[[3184,3191],"disallowed"],[[3192,3199],"valid",[],"NV8"],[[3200,3200],"disallowed"],[[3201,3201],"valid"],[[3202,3203],"valid"],[[3204,3204],"disallowed"],[[3205,3212],"valid"],[[3213,3213],"disallowed"],[[3214,3216],"valid"],[[3217,3217],"disallowed"],[[3218,3240],"valid"],[[3241,3241],"disallowed"],[[3242,3251],"valid"],[[3252,3252],"disallowed"],[[3253,3257],"valid"],[[3258,3259],"disallowed"],[[3260,3261],"valid"],[[3262,3268],"valid"],[[3269,3269],"disallowed"],[[3270,3272],"valid"],[[3273,3273],"disallowed"],[[3274,3277],"valid"],[[3278,3284],"disallowed"],[[3285,3286],"valid"],[[3287,3293],"disallowed"],[[3294,3294],"valid"],[[3295,3295],"disallowed"],[[3296,3297],"valid"],[[3298,3299],"valid"],[[3300,3301],"disallowed"],[[3302,3311],"valid"],[[3312,3312],"disallowed"],[[3313,3314],"valid"],[[3315,3328],"disallowed"],[[3329,3329],"valid"],[[3330,3331],"valid"],[[3332,3332],"disallowed"],[[3333,3340],"valid"],[[3341,3341],"disallowed"],[[3342,3344],"valid"],[[3345,3345],"disallowed"],[[3346,3368],"valid"],[[3369,3369],"valid"],[[3370,3385],"valid"],[[3386,3386],"valid"],[[3387,3388],"disallowed"],[[3389,3389],"valid"],[[3390,3395],"valid"],[[3396,3396],"valid"],[[3397,3397],"disallowed"],[[3398,3400],"valid"],[[3401,3401],"disallowed"],[[3402,3405],"valid"],[[3406,3406],"valid"],[[3407,3414],"disallowed"],[[3415,3415],"valid"],[[3416,3422],"disallowed"],[[3423,3423],"valid"],[[3424,3425],"valid"],[[3426,3427],"valid"],[[3428,3429],"disallowed"],[[3430,3439],"valid"],[[3440,3445],"valid",[],"NV8"],[[3446,3448],"disallowed"],[[3449,3449],"valid",[],"NV8"],[[3450,3455],"valid"],[[3456,3457],"disallowed"],[[3458,3459],"valid"],[[3460,3460],"disallowed"],[[3461,3478],"valid"],[[3479,3481],"disallowed"],[[3482,3505],"valid"],[[3506,3506],"disallowed"],[[3507,3515],"valid"],[[3516,3516],"disallowed"],[[3517,3517],"valid"],[[3518,3519],"disallowed"],[[3520,3526],"valid"],[[3527,3529],"disallowed"],[[3530,3530],"valid"],[[3531,3534],"disallowed"],[[3535,3540],"valid"],[[3541,3541],"disallowed"],[[3542,3542],"valid"],[[3543,3543],"disallowed"],[[3544,3551],"valid"],[[3552,3557],"disallowed"],[[3558,3567],"valid"],[[3568,3569],"disallowed"],[[3570,3571],"valid"],[[3572,3572],"valid",[],"NV8"],[[3573,3584],"disallowed"],[[3585,3634],"valid"],[[3635,3635],"mapped",[3661,3634]],[[3636,3642],"valid"],[[3643,3646],"disallowed"],[[3647,3647],"valid",[],"NV8"],[[3648,3662],"valid"],[[3663,3663],"valid",[],"NV8"],[[3664,3673],"valid"],[[3674,3675],"valid",[],"NV8"],[[3676,3712],"disallowed"],[[3713,3714],"valid"],[[3715,3715],"disallowed"],[[3716,3716],"valid"],[[3717,3718],"disallowed"],[[3719,3720],"valid"],[[3721,3721],"disallowed"],[[3722,3722],"valid"],[[3723,3724],"disallowed"],[[3725,3725],"valid"],[[3726,3731],"disallowed"],[[3732,3735],"valid"],[[3736,3736],"disallowed"],[[3737,3743],"valid"],[[3744,3744],"disallowed"],[[3745,3747],"valid"],[[3748,3748],"disallowed"],[[3749,3749],"valid"],[[3750,3750],"disallowed"],[[3751,3751],"valid"],[[3752,3753],"disallowed"],[[3754,3755],"valid"],[[3756,3756],"disallowed"],[[3757,3762],"valid"],[[3763,3763],"mapped",[3789,3762]],[[3764,3769],"valid"],[[3770,3770],"disallowed"],[[3771,3773],"valid"],[[3774,3775],"disallowed"],[[3776,3780],"valid"],[[3781,3781],"disallowed"],[[3782,3782],"valid"],[[3783,3783],"disallowed"],[[3784,3789],"valid"],[[3790,3791],"disallowed"],[[3792,3801],"valid"],[[3802,3803],"disallowed"],[[3804,3804],"mapped",[3755,3737]],[[3805,3805],"mapped",[3755,3745]],[[3806,3807],"valid"],[[3808,3839],"disallowed"],[[3840,3840],"valid"],[[3841,3850],"valid",[],"NV8"],[[3851,3851],"valid"],[[3852,3852],"mapped",[3851]],[[3853,3863],"valid",[],"NV8"],[[3864,3865],"valid"],[[3866,3871],"valid",[],"NV8"],[[3872,3881],"valid"],[[3882,3892],"valid",[],"NV8"],[[3893,3893],"valid"],[[3894,3894],"valid",[],"NV8"],[[3895,3895],"valid"],[[3896,3896],"valid",[],"NV8"],[[3897,3897],"valid"],[[3898,3901],"valid",[],"NV8"],[[3902,3906],"valid"],[[3907,3907],"mapped",[3906,4023]],[[3908,3911],"valid"],[[3912,3912],"disallowed"],[[3913,3916],"valid"],[[3917,3917],"mapped",[3916,4023]],[[3918,3921],"valid"],[[3922,3922],"mapped",[3921,4023]],[[3923,3926],"valid"],[[3927,3927],"mapped",[3926,4023]],[[3928,3931],"valid"],[[3932,3932],"mapped",[3931,4023]],[[3933,3944],"valid"],[[3945,3945],"mapped",[3904,4021]],[[3946,3946],"valid"],[[3947,3948],"valid"],[[3949,3952],"disallowed"],[[3953,3954],"valid"],[[3955,3955],"mapped",[3953,3954]],[[3956,3956],"valid"],[[3957,3957],"mapped",[3953,3956]],[[3958,3958],"mapped",[4018,3968]],[[3959,3959],"mapped",[4018,3953,3968]],[[3960,3960],"mapped",[4019,3968]],[[3961,3961],"mapped",[4019,3953,3968]],[[3962,3968],"valid"],[[3969,3969],"mapped",[3953,3968]],[[3970,3972],"valid"],[[3973,3973],"valid",[],"NV8"],[[3974,3979],"valid"],[[3980,3983],"valid"],[[3984,3986],"valid"],[[3987,3987],"mapped",[3986,4023]],[[3988,3989],"valid"],[[3990,3990],"valid"],[[3991,3991],"valid"],[[3992,3992],"disallowed"],[[3993,3996],"valid"],[[3997,3997],"mapped",[3996,4023]],[[3998,4001],"valid"],[[4002,4002],"mapped",[4001,4023]],[[4003,4006],"valid"],[[4007,4007],"mapped",[4006,4023]],[[4008,4011],"valid"],[[4012,4012],"mapped",[4011,4023]],[[4013,4013],"valid"],[[4014,4016],"valid"],[[4017,4023],"valid"],[[4024,4024],"valid"],[[4025,4025],"mapped",[3984,4021]],[[4026,4028],"valid"],[[4029,4029],"disallowed"],[[4030,4037],"valid",[],"NV8"],[[4038,4038],"valid"],[[4039,4044],"valid",[],"NV8"],[[4045,4045],"disallowed"],[[4046,4046],"valid",[],"NV8"],[[4047,4047],"valid",[],"NV8"],[[4048,4049],"valid",[],"NV8"],[[4050,4052],"valid",[],"NV8"],[[4053,4056],"valid",[],"NV8"],[[4057,4058],"valid",[],"NV8"],[[4059,4095],"disallowed"],[[4096,4129],"valid"],[[4130,4130],"valid"],[[4131,4135],"valid"],[[4136,4136],"valid"],[[4137,4138],"valid"],[[4139,4139],"valid"],[[4140,4146],"valid"],[[4147,4149],"valid"],[[4150,4153],"valid"],[[4154,4159],"valid"],[[4160,4169],"valid"],[[4170,4175],"valid",[],"NV8"],[[4176,4185],"valid"],[[4186,4249],"valid"],[[4250,4253],"valid"],[[4254,4255],"valid",[],"NV8"],[[4256,4293],"disallowed"],[[4294,4294],"disallowed"],[[4295,4295],"mapped",[11559]],[[4296,4300],"disallowed"],[[4301,4301],"mapped",[11565]],[[4302,4303],"disallowed"],[[4304,4342],"valid"],[[4343,4344],"valid"],[[4345,4346],"valid"],[[4347,4347],"valid",[],"NV8"],[[4348,4348],"mapped",[4316]],[[4349,4351],"valid"],[[4352,4441],"valid",[],"NV8"],[[4442,4446],"valid",[],"NV8"],[[4447,4448],"disallowed"],[[4449,4514],"valid",[],"NV8"],[[4515,4519],"valid",[],"NV8"],[[4520,4601],"valid",[],"NV8"],[[4602,4607],"valid",[],"NV8"],[[4608,4614],"valid"],[[4615,4615],"valid"],[[4616,4678],"valid"],[[4679,4679],"valid"],[[4680,4680],"valid"],[[4681,4681],"disallowed"],[[4682,4685],"valid"],[[4686,4687],"disallowed"],[[4688,4694],"valid"],[[4695,4695],"disallowed"],[[4696,4696],"valid"],[[4697,4697],"disallowed"],[[4698,4701],"valid"],[[4702,4703],"disallowed"],[[4704,4742],"valid"],[[4743,4743],"valid"],[[4744,4744],"valid"],[[4745,4745],"disallowed"],[[4746,4749],"valid"],[[4750,4751],"disallowed"],[[4752,4782],"valid"],[[4783,4783],"valid"],[[4784,4784],"valid"],[[4785,4785],"disallowed"],[[4786,4789],"valid"],[[4790,4791],"disallowed"],[[4792,4798],"valid"],[[4799,4799],"disallowed"],[[4800,4800],"valid"],[[4801,4801],"disallowed"],[[4802,4805],"valid"],[[4806,4807],"disallowed"],[[4808,4814],"valid"],[[4815,4815],"valid"],[[4816,4822],"valid"],[[4823,4823],"disallowed"],[[4824,4846],"valid"],[[4847,4847],"valid"],[[4848,4878],"valid"],[[4879,4879],"valid"],[[4880,4880],"valid"],[[4881,4881],"disallowed"],[[4882,4885],"valid"],[[4886,4887],"disallowed"],[[4888,4894],"valid"],[[4895,4895],"valid"],[[4896,4934],"valid"],[[4935,4935],"valid"],[[4936,4954],"valid"],[[4955,4956],"disallowed"],[[4957,4958],"valid"],[[4959,4959],"valid"],[[4960,4960],"valid",[],"NV8"],[[4961,4988],"valid",[],"NV8"],[[4989,4991],"disallowed"],[[4992,5007],"valid"],[[5008,5017],"valid",[],"NV8"],[[5018,5023],"disallowed"],[[5024,5108],"valid"],[[5109,5109],"valid"],[[5110,5111],"disallowed"],[[5112,5112],"mapped",[5104]],[[5113,5113],"mapped",[5105]],[[5114,5114],"mapped",[5106]],[[5115,5115],"mapped",[5107]],[[5116,5116],"mapped",[5108]],[[5117,5117],"mapped",[5109]],[[5118,5119],"disallowed"],[[5120,5120],"valid",[],"NV8"],[[5121,5740],"valid"],[[5741,5742],"valid",[],"NV8"],[[5743,5750],"valid"],[[5751,5759],"valid"],[[5760,5760],"disallowed"],[[5761,5786],"valid"],[[5787,5788],"valid",[],"NV8"],[[5789,5791],"disallowed"],[[5792,5866],"valid"],[[5867,5872],"valid",[],"NV8"],[[5873,5880],"valid"],[[5881,5887],"disallowed"],[[5888,5900],"valid"],[[5901,5901],"disallowed"],[[5902,5908],"valid"],[[5909,5919],"disallowed"],[[5920,5940],"valid"],[[5941,5942],"valid",[],"NV8"],[[5943,5951],"disallowed"],[[5952,5971],"valid"],[[5972,5983],"disallowed"],[[5984,5996],"valid"],[[5997,5997],"disallowed"],[[5998,6000],"valid"],[[6001,6001],"disallowed"],[[6002,6003],"valid"],[[6004,6015],"disallowed"],[[6016,6067],"valid"],[[6068,6069],"disallowed"],[[6070,6099],"valid"],[[6100,6102],"valid",[],"NV8"],[[6103,6103],"valid"],[[6104,6107],"valid",[],"NV8"],[[6108,6108],"valid"],[[6109,6109],"valid"],[[6110,6111],"disallowed"],[[6112,6121],"valid"],[[6122,6127],"disallowed"],[[6128,6137],"valid",[],"NV8"],[[6138,6143],"disallowed"],[[6144,6149],"valid",[],"NV8"],[[6150,6150],"disallowed"],[[6151,6154],"valid",[],"NV8"],[[6155,6157],"ignored"],[[6158,6158],"disallowed"],[[6159,6159],"disallowed"],[[6160,6169],"valid"],[[6170,6175],"disallowed"],[[6176,6263],"valid"],[[6264,6271],"disallowed"],[[6272,6313],"valid"],[[6314,6314],"valid"],[[6315,6319],"disallowed"],[[6320,6389],"valid"],[[6390,6399],"disallowed"],[[6400,6428],"valid"],[[6429,6430],"valid"],[[6431,6431],"disallowed"],[[6432,6443],"valid"],[[6444,6447],"disallowed"],[[6448,6459],"valid"],[[6460,6463],"disallowed"],[[6464,6464],"valid",[],"NV8"],[[6465,6467],"disallowed"],[[6468,6469],"valid",[],"NV8"],[[6470,6509],"valid"],[[6510,6511],"disallowed"],[[6512,6516],"valid"],[[6517,6527],"disallowed"],[[6528,6569],"valid"],[[6570,6571],"valid"],[[6572,6575],"disallowed"],[[6576,6601],"valid"],[[6602,6607],"disallowed"],[[6608,6617],"valid"],[[6618,6618],"valid",[],"XV8"],[[6619,6621],"disallowed"],[[6622,6623],"valid",[],"NV8"],[[6624,6655],"valid",[],"NV8"],[[6656,6683],"valid"],[[6684,6685],"disallowed"],[[6686,6687],"valid",[],"NV8"],[[6688,6750],"valid"],[[6751,6751],"disallowed"],[[6752,6780],"valid"],[[6781,6782],"disallowed"],[[6783,6793],"valid"],[[6794,6799],"disallowed"],[[6800,6809],"valid"],[[6810,6815],"disallowed"],[[6816,6822],"valid",[],"NV8"],[[6823,6823],"valid"],[[6824,6829],"valid",[],"NV8"],[[6830,6831],"disallowed"],[[6832,6845],"valid"],[[6846,6846],"valid",[],"NV8"],[[6847,6911],"disallowed"],[[6912,6987],"valid"],[[6988,6991],"disallowed"],[[6992,7001],"valid"],[[7002,7018],"valid",[],"NV8"],[[7019,7027],"valid"],[[7028,7036],"valid",[],"NV8"],[[7037,7039],"disallowed"],[[7040,7082],"valid"],[[7083,7085],"valid"],[[7086,7097],"valid"],[[7098,7103],"valid"],[[7104,7155],"valid"],[[7156,7163],"disallowed"],[[7164,7167],"valid",[],"NV8"],[[7168,7223],"valid"],[[7224,7226],"disallowed"],[[7227,7231],"valid",[],"NV8"],[[7232,7241],"valid"],[[7242,7244],"disallowed"],[[7245,7293],"valid"],[[7294,7295],"valid",[],"NV8"],[[7296,7359],"disallowed"],[[7360,7367],"valid",[],"NV8"],[[7368,7375],"disallowed"],[[7376,7378],"valid"],[[7379,7379],"valid",[],"NV8"],[[7380,7410],"valid"],[[7411,7414],"valid"],[[7415,7415],"disallowed"],[[7416,7417],"valid"],[[7418,7423],"disallowed"],[[7424,7467],"valid"],[[7468,7468],"mapped",[97]],[[7469,7469],"mapped",[230]],[[7470,7470],"mapped",[98]],[[7471,7471],"valid"],[[7472,7472],"mapped",[100]],[[7473,7473],"mapped",[101]],[[7474,7474],"mapped",[477]],[[7475,7475],"mapped",[103]],[[7476,7476],"mapped",[104]],[[7477,7477],"mapped",[105]],[[7478,7478],"mapped",[106]],[[7479,7479],"mapped",[107]],[[7480,7480],"mapped",[108]],[[7481,7481],"mapped",[109]],[[7482,7482],"mapped",[110]],[[7483,7483],"valid"],[[7484,7484],"mapped",[111]],[[7485,7485],"mapped",[547]],[[7486,7486],"mapped",[112]],[[7487,7487],"mapped",[114]],[[7488,7488],"mapped",[116]],[[7489,7489],"mapped",[117]],[[7490,7490],"mapped",[119]],[[7491,7491],"mapped",[97]],[[7492,7492],"mapped",[592]],[[7493,7493],"mapped",[593]],[[7494,7494],"mapped",[7426]],[[7495,7495],"mapped",[98]],[[7496,7496],"mapped",[100]],[[7497,7497],"mapped",[101]],[[7498,7498],"mapped",[601]],[[7499,7499],"mapped",[603]],[[7500,7500],"mapped",[604]],[[7501,7501],"mapped",[103]],[[7502,7502],"valid"],[[7503,7503],"mapped",[107]],[[7504,7504],"mapped",[109]],[[7505,7505],"mapped",[331]],[[7506,7506],"mapped",[111]],[[7507,7507],"mapped",[596]],[[7508,7508],"mapped",[7446]],[[7509,7509],"mapped",[7447]],[[7510,7510],"mapped",[112]],[[7511,7511],"mapped",[116]],[[7512,7512],"mapped",[117]],[[7513,7513],"mapped",[7453]],[[7514,7514],"mapped",[623]],[[7515,7515],"mapped",[118]],[[7516,7516],"mapped",[7461]],[[7517,7517],"mapped",[946]],[[7518,7518],"mapped",[947]],[[7519,7519],"mapped",[948]],[[7520,7520],"mapped",[966]],[[7521,7521],"mapped",[967]],[[7522,7522],"mapped",[105]],[[7523,7523],"mapped",[114]],[[7524,7524],"mapped",[117]],[[7525,7525],"mapped",[118]],[[7526,7526],"mapped",[946]],[[7527,7527],"mapped",[947]],[[7528,7528],"mapped",[961]],[[7529,7529],"mapped",[966]],[[7530,7530],"mapped",[967]],[[7531,7531],"valid"],[[7532,7543],"valid"],[[7544,7544],"mapped",[1085]],[[7545,7578],"valid"],[[7579,7579],"mapped",[594]],[[7580,7580],"mapped",[99]],[[7581,7581],"mapped",[597]],[[7582,7582],"mapped",[240]],[[7583,7583],"mapped",[604]],[[7584,7584],"mapped",[102]],[[7585,7585],"mapped",[607]],[[7586,7586],"mapped",[609]],[[7587,7587],"mapped",[613]],[[7588,7588],"mapped",[616]],[[7589,7589],"mapped",[617]],[[7590,7590],"mapped",[618]],[[7591,7591],"mapped",[7547]],[[7592,7592],"mapped",[669]],[[7593,7593],"mapped",[621]],[[7594,7594],"mapped",[7557]],[[7595,7595],"mapped",[671]],[[7596,7596],"mapped",[625]],[[7597,7597],"mapped",[624]],[[7598,7598],"mapped",[626]],[[7599,7599],"mapped",[627]],[[7600,7600],"mapped",[628]],[[7601,7601],"mapped",[629]],[[7602,7602],"mapped",[632]],[[7603,7603],"mapped",[642]],[[7604,7604],"mapped",[643]],[[7605,7605],"mapped",[427]],[[7606,7606],"mapped",[649]],[[7607,7607],"mapped",[650]],[[7608,7608],"mapped",[7452]],[[7609,7609],"mapped",[651]],[[7610,7610],"mapped",[652]],[[7611,7611],"mapped",[122]],[[7612,7612],"mapped",[656]],[[7613,7613],"mapped",[657]],[[7614,7614],"mapped",[658]],[[7615,7615],"mapped",[952]],[[7616,7619],"valid"],[[7620,7626],"valid"],[[7627,7654],"valid"],[[7655,7669],"valid"],[[7670,7675],"disallowed"],[[7676,7676],"valid"],[[7677,7677],"valid"],[[7678,7679],"valid"],[[7680,7680],"mapped",[7681]],[[7681,7681],"valid"],[[7682,7682],"mapped",[7683]],[[7683,7683],"valid"],[[7684,7684],"mapped",[7685]],[[7685,7685],"valid"],[[7686,7686],"mapped",[7687]],[[7687,7687],"valid"],[[7688,7688],"mapped",[7689]],[[7689,7689],"valid"],[[7690,7690],"mapped",[7691]],[[7691,7691],"valid"],[[7692,7692],"mapped",[7693]],[[7693,7693],"valid"],[[7694,7694],"mapped",[7695]],[[7695,7695],"valid"],[[7696,7696],"mapped",[7697]],[[7697,7697],"valid"],[[7698,7698],"mapped",[7699]],[[7699,7699],"valid"],[[7700,7700],"mapped",[7701]],[[7701,7701],"valid"],[[7702,7702],"mapped",[7703]],[[7703,7703],"valid"],[[7704,7704],"mapped",[7705]],[[7705,7705],"valid"],[[7706,7706],"mapped",[7707]],[[7707,7707],"valid"],[[7708,7708],"mapped",[7709]],[[7709,7709],"valid"],[[7710,7710],"mapped",[7711]],[[7711,7711],"valid"],[[7712,7712],"mapped",[7713]],[[7713,7713],"valid"],[[7714,7714],"mapped",[7715]],[[7715,7715],"valid"],[[7716,7716],"mapped",[7717]],[[7717,7717],"valid"],[[7718,7718],"mapped",[7719]],[[7719,7719],"valid"],[[7720,7720],"mapped",[7721]],[[7721,7721],"valid"],[[7722,7722],"mapped",[7723]],[[7723,7723],"valid"],[[7724,7724],"mapped",[7725]],[[7725,7725],"valid"],[[7726,7726],"mapped",[7727]],[[7727,7727],"valid"],[[7728,7728],"mapped",[7729]],[[7729,7729],"valid"],[[7730,7730],"mapped",[7731]],[[7731,7731],"valid"],[[7732,7732],"mapped",[7733]],[[7733,7733],"valid"],[[7734,7734],"mapped",[7735]],[[7735,7735],"valid"],[[7736,7736],"mapped",[7737]],[[7737,7737],"valid"],[[7738,7738],"mapped",[7739]],[[7739,7739],"valid"],[[7740,7740],"mapped",[7741]],[[7741,7741],"valid"],[[7742,7742],"mapped",[7743]],[[7743,7743],"valid"],[[7744,7744],"mapped",[7745]],[[7745,7745],"valid"],[[7746,7746],"mapped",[7747]],[[7747,7747],"valid"],[[7748,7748],"mapped",[7749]],[[7749,7749],"valid"],[[7750,7750],"mapped",[7751]],[[7751,7751],"valid"],[[7752,7752],"mapped",[7753]],[[7753,7753],"valid"],[[7754,7754],"mapped",[7755]],[[7755,7755],"valid"],[[7756,7756],"mapped",[7757]],[[7757,7757],"valid"],[[7758,7758],"mapped",[7759]],[[7759,7759],"valid"],[[7760,7760],"mapped",[7761]],[[7761,7761],"valid"],[[7762,7762],"mapped",[7763]],[[7763,7763],"valid"],[[7764,7764],"mapped",[7765]],[[7765,7765],"valid"],[[7766,7766],"mapped",[7767]],[[7767,7767],"valid"],[[7768,7768],"mapped",[7769]],[[7769,7769],"valid"],[[7770,7770],"mapped",[7771]],[[7771,7771],"valid"],[[7772,7772],"mapped",[7773]],[[7773,7773],"valid"],[[7774,7774],"mapped",[7775]],[[7775,7775],"valid"],[[7776,7776],"mapped",[7777]],[[7777,7777],"valid"],[[7778,7778],"mapped",[7779]],[[7779,7779],"valid"],[[7780,7780],"mapped",[7781]],[[7781,7781],"valid"],[[7782,7782],"mapped",[7783]],[[7783,7783],"valid"],[[7784,7784],"mapped",[7785]],[[7785,7785],"valid"],[[7786,7786],"mapped",[7787]],[[7787,7787],"valid"],[[7788,7788],"mapped",[7789]],[[7789,7789],"valid"],[[7790,7790],"mapped",[7791]],[[7791,7791],"valid"],[[7792,7792],"mapped",[7793]],[[7793,7793],"valid"],[[7794,7794],"mapped",[7795]],[[7795,7795],"valid"],[[7796,7796],"mapped",[7797]],[[7797,7797],"valid"],[[7798,7798],"mapped",[7799]],[[7799,7799],"valid"],[[7800,7800],"mapped",[7801]],[[7801,7801],"valid"],[[7802,7802],"mapped",[7803]],[[7803,7803],"valid"],[[7804,7804],"mapped",[7805]],[[7805,7805],"valid"],[[7806,7806],"mapped",[7807]],[[7807,7807],"valid"],[[7808,7808],"mapped",[7809]],[[7809,7809],"valid"],[[7810,7810],"mapped",[7811]],[[7811,7811],"valid"],[[7812,7812],"mapped",[7813]],[[7813,7813],"valid"],[[7814,7814],"mapped",[7815]],[[7815,7815],"valid"],[[7816,7816],"mapped",[7817]],[[7817,7817],"valid"],[[7818,7818],"mapped",[7819]],[[7819,7819],"valid"],[[7820,7820],"mapped",[7821]],[[7821,7821],"valid"],[[7822,7822],"mapped",[7823]],[[7823,7823],"valid"],[[7824,7824],"mapped",[7825]],[[7825,7825],"valid"],[[7826,7826],"mapped",[7827]],[[7827,7827],"valid"],[[7828,7828],"mapped",[7829]],[[7829,7833],"valid"],[[7834,7834],"mapped",[97,702]],[[7835,7835],"mapped",[7777]],[[7836,7837],"valid"],[[7838,7838],"mapped",[115,115]],[[7839,7839],"valid"],[[7840,7840],"mapped",[7841]],[[7841,7841],"valid"],[[7842,7842],"mapped",[7843]],[[7843,7843],"valid"],[[7844,7844],"mapped",[7845]],[[7845,7845],"valid"],[[7846,7846],"mapped",[7847]],[[7847,7847],"valid"],[[7848,7848],"mapped",[7849]],[[7849,7849],"valid"],[[7850,7850],"mapped",[7851]],[[7851,7851],"valid"],[[7852,7852],"mapped",[7853]],[[7853,7853],"valid"],[[7854,7854],"mapped",[7855]],[[7855,7855],"valid"],[[7856,7856],"mapped",[7857]],[[7857,7857],"valid"],[[7858,7858],"mapped",[7859]],[[7859,7859],"valid"],[[7860,7860],"mapped",[7861]],[[7861,7861],"valid"],[[7862,7862],"mapped",[7863]],[[7863,7863],"valid"],[[7864,7864],"mapped",[7865]],[[7865,7865],"valid"],[[7866,7866],"mapped",[7867]],[[7867,7867],"valid"],[[7868,7868],"mapped",[7869]],[[7869,7869],"valid"],[[7870,7870],"mapped",[7871]],[[7871,7871],"valid"],[[7872,7872],"mapped",[7873]],[[7873,7873],"valid"],[[7874,7874],"mapped",[7875]],[[7875,7875],"valid"],[[7876,7876],"mapped",[7877]],[[7877,7877],"valid"],[[7878,7878],"mapped",[7879]],[[7879,7879],"valid"],[[7880,7880],"mapped",[7881]],[[7881,7881],"valid"],[[7882,7882],"mapped",[7883]],[[7883,7883],"valid"],[[7884,7884],"mapped",[7885]],[[7885,7885],"valid"],[[7886,7886],"mapped",[7887]],[[7887,7887],"valid"],[[7888,7888],"mapped",[7889]],[[7889,7889],"valid"],[[7890,7890],"mapped",[7891]],[[7891,7891],"valid"],[[7892,7892],"mapped",[7893]],[[7893,7893],"valid"],[[7894,7894],"mapped",[7895]],[[7895,7895],"valid"],[[7896,7896],"mapped",[7897]],[[7897,7897],"valid"],[[7898,7898],"mapped",[7899]],[[7899,7899],"valid"],[[7900,7900],"mapped",[7901]],[[7901,7901],"valid"],[[7902,7902],"mapped",[7903]],[[7903,7903],"valid"],[[7904,7904],"mapped",[7905]],[[7905,7905],"valid"],[[7906,7906],"mapped",[7907]],[[7907,7907],"valid"],[[7908,7908],"mapped",[7909]],[[7909,7909],"valid"],[[7910,7910],"mapped",[7911]],[[7911,7911],"valid"],[[7912,7912],"mapped",[7913]],[[7913,7913],"valid"],[[7914,7914],"mapped",[7915]],[[7915,7915],"valid"],[[7916,7916],"mapped",[7917]],[[7917,7917],"valid"],[[7918,7918],"mapped",[7919]],[[7919,7919],"valid"],[[7920,7920],"mapped",[7921]],[[7921,7921],"valid"],[[7922,7922],"mapped",[7923]],[[7923,7923],"valid"],[[7924,7924],"mapped",[7925]],[[7925,7925],"valid"],[[7926,7926],"mapped",[7927]],[[7927,7927],"valid"],[[7928,7928],"mapped",[7929]],[[7929,7929],"valid"],[[7930,7930],"mapped",[7931]],[[7931,7931],"valid"],[[7932,7932],"mapped",[7933]],[[7933,7933],"valid"],[[7934,7934],"mapped",[7935]],[[7935,7935],"valid"],[[7936,7943],"valid"],[[7944,7944],"mapped",[7936]],[[7945,7945],"mapped",[7937]],[[7946,7946],"mapped",[7938]],[[7947,7947],"mapped",[7939]],[[7948,7948],"mapped",[7940]],[[7949,7949],"mapped",[7941]],[[7950,7950],"mapped",[7942]],[[7951,7951],"mapped",[7943]],[[7952,7957],"valid"],[[7958,7959],"disallowed"],[[7960,7960],"mapped",[7952]],[[7961,7961],"mapped",[7953]],[[7962,7962],"mapped",[7954]],[[7963,7963],"mapped",[7955]],[[7964,7964],"mapped",[7956]],[[7965,7965],"mapped",[7957]],[[7966,7967],"disallowed"],[[7968,7975],"valid"],[[7976,7976],"mapped",[7968]],[[7977,7977],"mapped",[7969]],[[7978,7978],"mapped",[7970]],[[7979,7979],"mapped",[7971]],[[7980,7980],"mapped",[7972]],[[7981,7981],"mapped",[7973]],[[7982,7982],"mapped",[7974]],[[7983,7983],"mapped",[7975]],[[7984,7991],"valid"],[[7992,7992],"mapped",[7984]],[[7993,7993],"mapped",[7985]],[[7994,7994],"mapped",[7986]],[[7995,7995],"mapped",[7987]],[[7996,7996],"mapped",[7988]],[[7997,7997],"mapped",[7989]],[[7998,7998],"mapped",[7990]],[[7999,7999],"mapped",[7991]],[[8000,8005],"valid"],[[8006,8007],"disallowed"],[[8008,8008],"mapped",[8000]],[[8009,8009],"mapped",[8001]],[[8010,8010],"mapped",[8002]],[[8011,8011],"mapped",[8003]],[[8012,8012],"mapped",[8004]],[[8013,8013],"mapped",[8005]],[[8014,8015],"disallowed"],[[8016,8023],"valid"],[[8024,8024],"disallowed"],[[8025,8025],"mapped",[8017]],[[8026,8026],"disallowed"],[[8027,8027],"mapped",[8019]],[[8028,8028],"disallowed"],[[8029,8029],"mapped",[8021]],[[8030,8030],"disallowed"],[[8031,8031],"mapped",[8023]],[[8032,8039],"valid"],[[8040,8040],"mapped",[8032]],[[8041,8041],"mapped",[8033]],[[8042,8042],"mapped",[8034]],[[8043,8043],"mapped",[8035]],[[8044,8044],"mapped",[8036]],[[8045,8045],"mapped",[8037]],[[8046,8046],"mapped",[8038]],[[8047,8047],"mapped",[8039]],[[8048,8048],"valid"],[[8049,8049],"mapped",[940]],[[8050,8050],"valid"],[[8051,8051],"mapped",[941]],[[8052,8052],"valid"],[[8053,8053],"mapped",[942]],[[8054,8054],"valid"],[[8055,8055],"mapped",[943]],[[8056,8056],"valid"],[[8057,8057],"mapped",[972]],[[8058,8058],"valid"],[[8059,8059],"mapped",[973]],[[8060,8060],"valid"],[[8061,8061],"mapped",[974]],[[8062,8063],"disallowed"],[[8064,8064],"mapped",[7936,953]],[[8065,8065],"mapped",[7937,953]],[[8066,8066],"mapped",[7938,953]],[[8067,8067],"mapped",[7939,953]],[[8068,8068],"mapped",[7940,953]],[[8069,8069],"mapped",[7941,953]],[[8070,8070],"mapped",[7942,953]],[[8071,8071],"mapped",[7943,953]],[[8072,8072],"mapped",[7936,953]],[[8073,8073],"mapped",[7937,953]],[[8074,8074],"mapped",[7938,953]],[[8075,8075],"mapped",[7939,953]],[[8076,8076],"mapped",[7940,953]],[[8077,8077],"mapped",[7941,953]],[[8078,8078],"mapped",[7942,953]],[[8079,8079],"mapped",[7943,953]],[[8080,8080],"mapped",[7968,953]],[[8081,8081],"mapped",[7969,953]],[[8082,8082],"mapped",[7970,953]],[[8083,8083],"mapped",[7971,953]],[[8084,8084],"mapped",[7972,953]],[[8085,8085],"mapped",[7973,953]],[[8086,8086],"mapped",[7974,953]],[[8087,8087],"mapped",[7975,953]],[[8088,8088],"mapped",[7968,953]],[[8089,8089],"mapped",[7969,953]],[[8090,8090],"mapped",[7970,953]],[[8091,8091],"mapped",[7971,953]],[[8092,8092],"mapped",[7972,953]],[[8093,8093],"mapped",[7973,953]],[[8094,8094],"mapped",[7974,953]],[[8095,8095],"mapped",[7975,953]],[[8096,8096],"mapped",[8032,953]],[[8097,8097],"mapped",[8033,953]],[[8098,8098],"mapped",[8034,953]],[[8099,8099],"mapped",[8035,953]],[[8100,8100],"mapped",[8036,953]],[[8101,8101],"mapped",[8037,953]],[[8102,8102],"mapped",[8038,953]],[[8103,8103],"mapped",[8039,953]],[[8104,8104],"mapped",[8032,953]],[[8105,8105],"mapped",[8033,953]],[[8106,8106],"mapped",[8034,953]],[[8107,8107],"mapped",[8035,953]],[[8108,8108],"mapped",[8036,953]],[[8109,8109],"mapped",[8037,953]],[[8110,8110],"mapped",[8038,953]],[[8111,8111],"mapped",[8039,953]],[[8112,8113],"valid"],[[8114,8114],"mapped",[8048,953]],[[8115,8115],"mapped",[945,953]],[[8116,8116],"mapped",[940,953]],[[8117,8117],"disallowed"],[[8118,8118],"valid"],[[8119,8119],"mapped",[8118,953]],[[8120,8120],"mapped",[8112]],[[8121,8121],"mapped",[8113]],[[8122,8122],"mapped",[8048]],[[8123,8123],"mapped",[940]],[[8124,8124],"mapped",[945,953]],[[8125,8125],"disallowed_STD3_mapped",[32,787]],[[8126,8126],"mapped",[953]],[[8127,8127],"disallowed_STD3_mapped",[32,787]],[[8128,8128],"disallowed_STD3_mapped",[32,834]],[[8129,8129],"disallowed_STD3_mapped",[32,776,834]],[[8130,8130],"mapped",[8052,953]],[[8131,8131],"mapped",[951,953]],[[8132,8132],"mapped",[942,953]],[[8133,8133],"disallowed"],[[8134,8134],"valid"],[[8135,8135],"mapped",[8134,953]],[[8136,8136],"mapped",[8050]],[[8137,8137],"mapped",[941]],[[8138,8138],"mapped",[8052]],[[8139,8139],"mapped",[942]],[[8140,8140],"mapped",[951,953]],[[8141,8141],"disallowed_STD3_mapped",[32,787,768]],[[8142,8142],"disallowed_STD3_mapped",[32,787,769]],[[8143,8143],"disallowed_STD3_mapped",[32,787,834]],[[8144,8146],"valid"],[[8147,8147],"mapped",[912]],[[8148,8149],"disallowed"],[[8150,8151],"valid"],[[8152,8152],"mapped",[8144]],[[8153,8153],"mapped",[8145]],[[8154,8154],"mapped",[8054]],[[8155,8155],"mapped",[943]],[[8156,8156],"disallowed"],[[8157,8157],"disallowed_STD3_mapped",[32,788,768]],[[8158,8158],"disallowed_STD3_mapped",[32,788,769]],[[8159,8159],"disallowed_STD3_mapped",[32,788,834]],[[8160,8162],"valid"],[[8163,8163],"mapped",[944]],[[8164,8167],"valid"],[[8168,8168],"mapped",[8160]],[[8169,8169],"mapped",[8161]],[[8170,8170],"mapped",[8058]],[[8171,8171],"mapped",[973]],[[8172,8172],"mapped",[8165]],[[8173,8173],"disallowed_STD3_mapped",[32,776,768]],[[8174,8174],"disallowed_STD3_mapped",[32,776,769]],[[8175,8175],"disallowed_STD3_mapped",[96]],[[8176,8177],"disallowed"],[[8178,8178],"mapped",[8060,953]],[[8179,8179],"mapped",[969,953]],[[8180,8180],"mapped",[974,953]],[[8181,8181],"disallowed"],[[8182,8182],"valid"],[[8183,8183],"mapped",[8182,953]],[[8184,8184],"mapped",[8056]],[[8185,8185],"mapped",[972]],[[8186,8186],"mapped",[8060]],[[8187,8187],"mapped",[974]],[[8188,8188],"mapped",[969,953]],[[8189,8189],"disallowed_STD3_mapped",[32,769]],[[8190,8190],"disallowed_STD3_mapped",[32,788]],[[8191,8191],"disallowed"],[[8192,8202],"disallowed_STD3_mapped",[32]],[[8203,8203],"ignored"],[[8204,8205],"deviation",[]],[[8206,8207],"disallowed"],[[8208,8208],"valid",[],"NV8"],[[8209,8209],"mapped",[8208]],[[8210,8214],"valid",[],"NV8"],[[8215,8215],"disallowed_STD3_mapped",[32,819]],[[8216,8227],"valid",[],"NV8"],[[8228,8230],"disallowed"],[[8231,8231],"valid",[],"NV8"],[[8232,8238],"disallowed"],[[8239,8239],"disallowed_STD3_mapped",[32]],[[8240,8242],"valid",[],"NV8"],[[8243,8243],"mapped",[8242,8242]],[[8244,8244],"mapped",[8242,8242,8242]],[[8245,8245],"valid",[],"NV8"],[[8246,8246],"mapped",[8245,8245]],[[8247,8247],"mapped",[8245,8245,8245]],[[8248,8251],"valid",[],"NV8"],[[8252,8252],"disallowed_STD3_mapped",[33,33]],[[8253,8253],"valid",[],"NV8"],[[8254,8254],"disallowed_STD3_mapped",[32,773]],[[8255,8262],"valid",[],"NV8"],[[8263,8263],"disallowed_STD3_mapped",[63,63]],[[8264,8264],"disallowed_STD3_mapped",[63,33]],[[8265,8265],"disallowed_STD3_mapped",[33,63]],[[8266,8269],"valid",[],"NV8"],[[8270,8274],"valid",[],"NV8"],[[8275,8276],"valid",[],"NV8"],[[8277,8278],"valid",[],"NV8"],[[8279,8279],"mapped",[8242,8242,8242,8242]],[[8280,8286],"valid",[],"NV8"],[[8287,8287],"disallowed_STD3_mapped",[32]],[[8288,8288],"ignored"],[[8289,8291],"disallowed"],[[8292,8292],"ignored"],[[8293,8293],"disallowed"],[[8294,8297],"disallowed"],[[8298,8303],"disallowed"],[[8304,8304],"mapped",[48]],[[8305,8305],"mapped",[105]],[[8306,8307],"disallowed"],[[8308,8308],"mapped",[52]],[[8309,8309],"mapped",[53]],[[8310,8310],"mapped",[54]],[[8311,8311],"mapped",[55]],[[8312,8312],"mapped",[56]],[[8313,8313],"mapped",[57]],[[8314,8314],"disallowed_STD3_mapped",[43]],[[8315,8315],"mapped",[8722]],[[8316,8316],"disallowed_STD3_mapped",[61]],[[8317,8317],"disallowed_STD3_mapped",[40]],[[8318,8318],"disallowed_STD3_mapped",[41]],[[8319,8319],"mapped",[110]],[[8320,8320],"mapped",[48]],[[8321,8321],"mapped",[49]],[[8322,8322],"mapped",[50]],[[8323,8323],"mapped",[51]],[[8324,8324],"mapped",[52]],[[8325,8325],"mapped",[53]],[[8326,8326],"mapped",[54]],[[8327,8327],"mapped",[55]],[[8328,8328],"mapped",[56]],[[8329,8329],"mapped",[57]],[[8330,8330],"disallowed_STD3_mapped",[43]],[[8331,8331],"mapped",[8722]],[[8332,8332],"disallowed_STD3_mapped",[61]],[[8333,8333],"disallowed_STD3_mapped",[40]],[[8334,8334],"disallowed_STD3_mapped",[41]],[[8335,8335],"disallowed"],[[8336,8336],"mapped",[97]],[[8337,8337],"mapped",[101]],[[8338,8338],"mapped",[111]],[[8339,8339],"mapped",[120]],[[8340,8340],"mapped",[601]],[[8341,8341],"mapped",[104]],[[8342,8342],"mapped",[107]],[[8343,8343],"mapped",[108]],[[8344,8344],"mapped",[109]],[[8345,8345],"mapped",[110]],[[8346,8346],"mapped",[112]],[[8347,8347],"mapped",[115]],[[8348,8348],"mapped",[116]],[[8349,8351],"disallowed"],[[8352,8359],"valid",[],"NV8"],[[8360,8360],"mapped",[114,115]],[[8361,8362],"valid",[],"NV8"],[[8363,8363],"valid",[],"NV8"],[[8364,8364],"valid",[],"NV8"],[[8365,8367],"valid",[],"NV8"],[[8368,8369],"valid",[],"NV8"],[[8370,8373],"valid",[],"NV8"],[[8374,8376],"valid",[],"NV8"],[[8377,8377],"valid",[],"NV8"],[[8378,8378],"valid",[],"NV8"],[[8379,8381],"valid",[],"NV8"],[[8382,8382],"valid",[],"NV8"],[[8383,8399],"disallowed"],[[8400,8417],"valid",[],"NV8"],[[8418,8419],"valid",[],"NV8"],[[8420,8426],"valid",[],"NV8"],[[8427,8427],"valid",[],"NV8"],[[8428,8431],"valid",[],"NV8"],[[8432,8432],"valid",[],"NV8"],[[8433,8447],"disallowed"],[[8448,8448],"disallowed_STD3_mapped",[97,47,99]],[[8449,8449],"disallowed_STD3_mapped",[97,47,115]],[[8450,8450],"mapped",[99]],[[8451,8451],"mapped",[176,99]],[[8452,8452],"valid",[],"NV8"],[[8453,8453],"disallowed_STD3_mapped",[99,47,111]],[[8454,8454],"disallowed_STD3_mapped",[99,47,117]],[[8455,8455],"mapped",[603]],[[8456,8456],"valid",[],"NV8"],[[8457,8457],"mapped",[176,102]],[[8458,8458],"mapped",[103]],[[8459,8462],"mapped",[104]],[[8463,8463],"mapped",[295]],[[8464,8465],"mapped",[105]],[[8466,8467],"mapped",[108]],[[8468,8468],"valid",[],"NV8"],[[8469,8469],"mapped",[110]],[[8470,8470],"mapped",[110,111]],[[8471,8472],"valid",[],"NV8"],[[8473,8473],"mapped",[112]],[[8474,8474],"mapped",[113]],[[8475,8477],"mapped",[114]],[[8478,8479],"valid",[],"NV8"],[[8480,8480],"mapped",[115,109]],[[8481,8481],"mapped",[116,101,108]],[[8482,8482],"mapped",[116,109]],[[8483,8483],"valid",[],"NV8"],[[8484,8484],"mapped",[122]],[[8485,8485],"valid",[],"NV8"],[[8486,8486],"mapped",[969]],[[8487,8487],"valid",[],"NV8"],[[8488,8488],"mapped",[122]],[[8489,8489],"valid",[],"NV8"],[[8490,8490],"mapped",[107]],[[8491,8491],"mapped",[229]],[[8492,8492],"mapped",[98]],[[8493,8493],"mapped",[99]],[[8494,8494],"valid",[],"NV8"],[[8495,8496],"mapped",[101]],[[8497,8497],"mapped",[102]],[[8498,8498],"disallowed"],[[8499,8499],"mapped",[109]],[[8500,8500],"mapped",[111]],[[8501,8501],"mapped",[1488]],[[8502,8502],"mapped",[1489]],[[8503,8503],"mapped",[1490]],[[8504,8504],"mapped",[1491]],[[8505,8505],"mapped",[105]],[[8506,8506],"valid",[],"NV8"],[[8507,8507],"mapped",[102,97,120]],[[8508,8508],"mapped",[960]],[[8509,8510],"mapped",[947]],[[8511,8511],"mapped",[960]],[[8512,8512],"mapped",[8721]],[[8513,8516],"valid",[],"NV8"],[[8517,8518],"mapped",[100]],[[8519,8519],"mapped",[101]],[[8520,8520],"mapped",[105]],[[8521,8521],"mapped",[106]],[[8522,8523],"valid",[],"NV8"],[[8524,8524],"valid",[],"NV8"],[[8525,8525],"valid",[],"NV8"],[[8526,8526],"valid"],[[8527,8527],"valid",[],"NV8"],[[8528,8528],"mapped",[49,8260,55]],[[8529,8529],"mapped",[49,8260,57]],[[8530,8530],"mapped",[49,8260,49,48]],[[8531,8531],"mapped",[49,8260,51]],[[8532,8532],"mapped",[50,8260,51]],[[8533,8533],"mapped",[49,8260,53]],[[8534,8534],"mapped",[50,8260,53]],[[8535,8535],"mapped",[51,8260,53]],[[8536,8536],"mapped",[52,8260,53]],[[8537,8537],"mapped",[49,8260,54]],[[8538,8538],"mapped",[53,8260,54]],[[8539,8539],"mapped",[49,8260,56]],[[8540,8540],"mapped",[51,8260,56]],[[8541,8541],"mapped",[53,8260,56]],[[8542,8542],"mapped",[55,8260,56]],[[8543,8543],"mapped",[49,8260]],[[8544,8544],"mapped",[105]],[[8545,8545],"mapped",[105,105]],[[8546,8546],"mapped",[105,105,105]],[[8547,8547],"mapped",[105,118]],[[8548,8548],"mapped",[118]],[[8549,8549],"mapped",[118,105]],[[8550,8550],"mapped",[118,105,105]],[[8551,8551],"mapped",[118,105,105,105]],[[8552,8552],"mapped",[105,120]],[[8553,8553],"mapped",[120]],[[8554,8554],"mapped",[120,105]],[[8555,8555],"mapped",[120,105,105]],[[8556,8556],"mapped",[108]],[[8557,8557],"mapped",[99]],[[8558,8558],"mapped",[100]],[[8559,8559],"mapped",[109]],[[8560,8560],"mapped",[105]],[[8561,8561],"mapped",[105,105]],[[8562,8562],"mapped",[105,105,105]],[[8563,8563],"mapped",[105,118]],[[8564,8564],"mapped",[118]],[[8565,8565],"mapped",[118,105]],[[8566,8566],"mapped",[118,105,105]],[[8567,8567],"mapped",[118,105,105,105]],[[8568,8568],"mapped",[105,120]],[[8569,8569],"mapped",[120]],[[8570,8570],"mapped",[120,105]],[[8571,8571],"mapped",[120,105,105]],[[8572,8572],"mapped",[108]],[[8573,8573],"mapped",[99]],[[8574,8574],"mapped",[100]],[[8575,8575],"mapped",[109]],[[8576,8578],"valid",[],"NV8"],[[8579,8579],"disallowed"],[[8580,8580],"valid"],[[8581,8584],"valid",[],"NV8"],[[8585,8585],"mapped",[48,8260,51]],[[8586,8587],"valid",[],"NV8"],[[8588,8591],"disallowed"],[[8592,8682],"valid",[],"NV8"],[[8683,8691],"valid",[],"NV8"],[[8692,8703],"valid",[],"NV8"],[[8704,8747],"valid",[],"NV8"],[[8748,8748],"mapped",[8747,8747]],[[8749,8749],"mapped",[8747,8747,8747]],[[8750,8750],"valid",[],"NV8"],[[8751,8751],"mapped",[8750,8750]],[[8752,8752],"mapped",[8750,8750,8750]],[[8753,8799],"valid",[],"NV8"],[[8800,8800],"disallowed_STD3_valid"],[[8801,8813],"valid",[],"NV8"],[[8814,8815],"disallowed_STD3_valid"],[[8816,8945],"valid",[],"NV8"],[[8946,8959],"valid",[],"NV8"],[[8960,8960],"valid",[],"NV8"],[[8961,8961],"valid",[],"NV8"],[[8962,9000],"valid",[],"NV8"],[[9001,9001],"mapped",[12296]],[[9002,9002],"mapped",[12297]],[[9003,9082],"valid",[],"NV8"],[[9083,9083],"valid",[],"NV8"],[[9084,9084],"valid",[],"NV8"],[[9085,9114],"valid",[],"NV8"],[[9115,9166],"valid",[],"NV8"],[[9167,9168],"valid",[],"NV8"],[[9169,9179],"valid",[],"NV8"],[[9180,9191],"valid",[],"NV8"],[[9192,9192],"valid",[],"NV8"],[[9193,9203],"valid",[],"NV8"],[[9204,9210],"valid",[],"NV8"],[[9211,9215],"disallowed"],[[9216,9252],"valid",[],"NV8"],[[9253,9254],"valid",[],"NV8"],[[9255,9279],"disallowed"],[[9280,9290],"valid",[],"NV8"],[[9291,9311],"disallowed"],[[9312,9312],"mapped",[49]],[[9313,9313],"mapped",[50]],[[9314,9314],"mapped",[51]],[[9315,9315],"mapped",[52]],[[9316,9316],"mapped",[53]],[[9317,9317],"mapped",[54]],[[9318,9318],"mapped",[55]],[[9319,9319],"mapped",[56]],[[9320,9320],"mapped",[57]],[[9321,9321],"mapped",[49,48]],[[9322,9322],"mapped",[49,49]],[[9323,9323],"mapped",[49,50]],[[9324,9324],"mapped",[49,51]],[[9325,9325],"mapped",[49,52]],[[9326,9326],"mapped",[49,53]],[[9327,9327],"mapped",[49,54]],[[9328,9328],"mapped",[49,55]],[[9329,9329],"mapped",[49,56]],[[9330,9330],"mapped",[49,57]],[[9331,9331],"mapped",[50,48]],[[9332,9332],"disallowed_STD3_mapped",[40,49,41]],[[9333,9333],"disallowed_STD3_mapped",[40,50,41]],[[9334,9334],"disallowed_STD3_mapped",[40,51,41]],[[9335,9335],"disallowed_STD3_mapped",[40,52,41]],[[9336,9336],"disallowed_STD3_mapped",[40,53,41]],[[9337,9337],"disallowed_STD3_mapped",[40,54,41]],[[9338,9338],"disallowed_STD3_mapped",[40,55,41]],[[9339,9339],"disallowed_STD3_mapped",[40,56,41]],[[9340,9340],"disallowed_STD3_mapped",[40,57,41]],[[9341,9341],"disallowed_STD3_mapped",[40,49,48,41]],[[9342,9342],"disallowed_STD3_mapped",[40,49,49,41]],[[9343,9343],"disallowed_STD3_mapped",[40,49,50,41]],[[9344,9344],"disallowed_STD3_mapped",[40,49,51,41]],[[9345,9345],"disallowed_STD3_mapped",[40,49,52,41]],[[9346,9346],"disallowed_STD3_mapped",[40,49,53,41]],[[9347,9347],"disallowed_STD3_mapped",[40,49,54,41]],[[9348,9348],"disallowed_STD3_mapped",[40,49,55,41]],[[9349,9349],"disallowed_STD3_mapped",[40,49,56,41]],[[9350,9350],"disallowed_STD3_mapped",[40,49,57,41]],[[9351,9351],"disallowed_STD3_mapped",[40,50,48,41]],[[9352,9371],"disallowed"],[[9372,9372],"disallowed_STD3_mapped",[40,97,41]],[[9373,9373],"disallowed_STD3_mapped",[40,98,41]],[[9374,9374],"disallowed_STD3_mapped",[40,99,41]],[[9375,9375],"disallowed_STD3_mapped",[40,100,41]],[[9376,9376],"disallowed_STD3_mapped",[40,101,41]],[[9377,9377],"disallowed_STD3_mapped",[40,102,41]],[[9378,9378],"disallowed_STD3_mapped",[40,103,41]],[[9379,9379],"disallowed_STD3_mapped",[40,104,41]],[[9380,9380],"disallowed_STD3_mapped",[40,105,41]],[[9381,9381],"disallowed_STD3_mapped",[40,106,41]],[[9382,9382],"disallowed_STD3_mapped",[40,107,41]],[[9383,9383],"disallowed_STD3_mapped",[40,108,41]],[[9384,9384],"disallowed_STD3_mapped",[40,109,41]],[[9385,9385],"disallowed_STD3_mapped",[40,110,41]],[[9386,9386],"disallowed_STD3_mapped",[40,111,41]],[[9387,9387],"disallowed_STD3_mapped",[40,112,41]],[[9388,9388],"disallowed_STD3_mapped",[40,113,41]],[[9389,9389],"disallowed_STD3_mapped",[40,114,41]],[[9390,9390],"disallowed_STD3_mapped",[40,115,41]],[[9391,9391],"disallowed_STD3_mapped",[40,116,41]],[[9392,9392],"disallowed_STD3_mapped",[40,117,41]],[[9393,9393],"disallowed_STD3_mapped",[40,118,41]],[[9394,9394],"disallowed_STD3_mapped",[40,119,41]],[[9395,9395],"disallowed_STD3_mapped",[40,120,41]],[[9396,9396],"disallowed_STD3_mapped",[40,121,41]],[[9397,9397],"disallowed_STD3_mapped",[40,122,41]],[[9398,9398],"mapped",[97]],[[9399,9399],"mapped",[98]],[[9400,9400],"mapped",[99]],[[9401,9401],"mapped",[100]],[[9402,9402],"mapped",[101]],[[9403,9403],"mapped",[102]],[[9404,9404],"mapped",[103]],[[9405,9405],"mapped",[104]],[[9406,9406],"mapped",[105]],[[9407,9407],"mapped",[106]],[[9408,9408],"mapped",[107]],[[9409,9409],"mapped",[108]],[[9410,9410],"mapped",[109]],[[9411,9411],"mapped",[110]],[[9412,9412],"mapped",[111]],[[9413,9413],"mapped",[112]],[[9414,9414],"mapped",[113]],[[9415,9415],"mapped",[114]],[[9416,9416],"mapped",[115]],[[9417,9417],"mapped",[116]],[[9418,9418],"mapped",[117]],[[9419,9419],"mapped",[118]],[[9420,9420],"mapped",[119]],[[9421,9421],"mapped",[120]],[[9422,9422],"mapped",[121]],[[9423,9423],"mapped",[122]],[[9424,9424],"mapped",[97]],[[9425,9425],"mapped",[98]],[[9426,9426],"mapped",[99]],[[9427,9427],"mapped",[100]],[[9428,9428],"mapped",[101]],[[9429,9429],"mapped",[102]],[[9430,9430],"mapped",[103]],[[9431,9431],"mapped",[104]],[[9432,9432],"mapped",[105]],[[9433,9433],"mapped",[106]],[[9434,9434],"mapped",[107]],[[9435,9435],"mapped",[108]],[[9436,9436],"mapped",[109]],[[9437,9437],"mapped",[110]],[[9438,9438],"mapped",[111]],[[9439,9439],"mapped",[112]],[[9440,9440],"mapped",[113]],[[9441,9441],"mapped",[114]],[[9442,9442],"mapped",[115]],[[9443,9443],"mapped",[116]],[[9444,9444],"mapped",[117]],[[9445,9445],"mapped",[118]],[[9446,9446],"mapped",[119]],[[9447,9447],"mapped",[120]],[[9448,9448],"mapped",[121]],[[9449,9449],"mapped",[122]],[[9450,9450],"mapped",[48]],[[9451,9470],"valid",[],"NV8"],[[9471,9471],"valid",[],"NV8"],[[9472,9621],"valid",[],"NV8"],[[9622,9631],"valid",[],"NV8"],[[9632,9711],"valid",[],"NV8"],[[9712,9719],"valid",[],"NV8"],[[9720,9727],"valid",[],"NV8"],[[9728,9747],"valid",[],"NV8"],[[9748,9749],"valid",[],"NV8"],[[9750,9751],"valid",[],"NV8"],[[9752,9752],"valid",[],"NV8"],[[9753,9753],"valid",[],"NV8"],[[9754,9839],"valid",[],"NV8"],[[9840,9841],"valid",[],"NV8"],[[9842,9853],"valid",[],"NV8"],[[9854,9855],"valid",[],"NV8"],[[9856,9865],"valid",[],"NV8"],[[9866,9873],"valid",[],"NV8"],[[9874,9884],"valid",[],"NV8"],[[9885,9885],"valid",[],"NV8"],[[9886,9887],"valid",[],"NV8"],[[9888,9889],"valid",[],"NV8"],[[9890,9905],"valid",[],"NV8"],[[9906,9906],"valid",[],"NV8"],[[9907,9916],"valid",[],"NV8"],[[9917,9919],"valid",[],"NV8"],[[9920,9923],"valid",[],"NV8"],[[9924,9933],"valid",[],"NV8"],[[9934,9934],"valid",[],"NV8"],[[9935,9953],"valid",[],"NV8"],[[9954,9954],"valid",[],"NV8"],[[9955,9955],"valid",[],"NV8"],[[9956,9959],"valid",[],"NV8"],[[9960,9983],"valid",[],"NV8"],[[9984,9984],"valid",[],"NV8"],[[9985,9988],"valid",[],"NV8"],[[9989,9989],"valid",[],"NV8"],[[9990,9993],"valid",[],"NV8"],[[9994,9995],"valid",[],"NV8"],[[9996,10023],"valid",[],"NV8"],[[10024,10024],"valid",[],"NV8"],[[10025,10059],"valid",[],"NV8"],[[10060,10060],"valid",[],"NV8"],[[10061,10061],"valid",[],"NV8"],[[10062,10062],"valid",[],"NV8"],[[10063,10066],"valid",[],"NV8"],[[10067,10069],"valid",[],"NV8"],[[10070,10070],"valid",[],"NV8"],[[10071,10071],"valid",[],"NV8"],[[10072,10078],"valid",[],"NV8"],[[10079,10080],"valid",[],"NV8"],[[10081,10087],"valid",[],"NV8"],[[10088,10101],"valid",[],"NV8"],[[10102,10132],"valid",[],"NV8"],[[10133,10135],"valid",[],"NV8"],[[10136,10159],"valid",[],"NV8"],[[10160,10160],"valid",[],"NV8"],[[10161,10174],"valid",[],"NV8"],[[10175,10175],"valid",[],"NV8"],[[10176,10182],"valid",[],"NV8"],[[10183,10186],"valid",[],"NV8"],[[10187,10187],"valid",[],"NV8"],[[10188,10188],"valid",[],"NV8"],[[10189,10189],"valid",[],"NV8"],[[10190,10191],"valid",[],"NV8"],[[10192,10219],"valid",[],"NV8"],[[10220,10223],"valid",[],"NV8"],[[10224,10239],"valid",[],"NV8"],[[10240,10495],"valid",[],"NV8"],[[10496,10763],"valid",[],"NV8"],[[10764,10764],"mapped",[8747,8747,8747,8747]],[[10765,10867],"valid",[],"NV8"],[[10868,10868],"disallowed_STD3_mapped",[58,58,61]],[[10869,10869],"disallowed_STD3_mapped",[61,61]],[[10870,10870],"disallowed_STD3_mapped",[61,61,61]],[[10871,10971],"valid",[],"NV8"],[[10972,10972],"mapped",[10973,824]],[[10973,11007],"valid",[],"NV8"],[[11008,11021],"valid",[],"NV8"],[[11022,11027],"valid",[],"NV8"],[[11028,11034],"valid",[],"NV8"],[[11035,11039],"valid",[],"NV8"],[[11040,11043],"valid",[],"NV8"],[[11044,11084],"valid",[],"NV8"],[[11085,11087],"valid",[],"NV8"],[[11088,11092],"valid",[],"NV8"],[[11093,11097],"valid",[],"NV8"],[[11098,11123],"valid",[],"NV8"],[[11124,11125],"disallowed"],[[11126,11157],"valid",[],"NV8"],[[11158,11159],"disallowed"],[[11160,11193],"valid",[],"NV8"],[[11194,11196],"disallowed"],[[11197,11208],"valid",[],"NV8"],[[11209,11209],"disallowed"],[[11210,11217],"valid",[],"NV8"],[[11218,11243],"disallowed"],[[11244,11247],"valid",[],"NV8"],[[11248,11263],"disallowed"],[[11264,11264],"mapped",[11312]],[[11265,11265],"mapped",[11313]],[[11266,11266],"mapped",[11314]],[[11267,11267],"mapped",[11315]],[[11268,11268],"mapped",[11316]],[[11269,11269],"mapped",[11317]],[[11270,11270],"mapped",[11318]],[[11271,11271],"mapped",[11319]],[[11272,11272],"mapped",[11320]],[[11273,11273],"mapped",[11321]],[[11274,11274],"mapped",[11322]],[[11275,11275],"mapped",[11323]],[[11276,11276],"mapped",[11324]],[[11277,11277],"mapped",[11325]],[[11278,11278],"mapped",[11326]],[[11279,11279],"mapped",[11327]],[[11280,11280],"mapped",[11328]],[[11281,11281],"mapped",[11329]],[[11282,11282],"mapped",[11330]],[[11283,11283],"mapped",[11331]],[[11284,11284],"mapped",[11332]],[[11285,11285],"mapped",[11333]],[[11286,11286],"mapped",[11334]],[[11287,11287],"mapped",[11335]],[[11288,11288],"mapped",[11336]],[[11289,11289],"mapped",[11337]],[[11290,11290],"mapped",[11338]],[[11291,11291],"mapped",[11339]],[[11292,11292],"mapped",[11340]],[[11293,11293],"mapped",[11341]],[[11294,11294],"mapped",[11342]],[[11295,11295],"mapped",[11343]],[[11296,11296],"mapped",[11344]],[[11297,11297],"mapped",[11345]],[[11298,11298],"mapped",[11346]],[[11299,11299],"mapped",[11347]],[[11300,11300],"mapped",[11348]],[[11301,11301],"mapped",[11349]],[[11302,11302],"mapped",[11350]],[[11303,11303],"mapped",[11351]],[[11304,11304],"mapped",[11352]],[[11305,11305],"mapped",[11353]],[[11306,11306],"mapped",[11354]],[[11307,11307],"mapped",[11355]],[[11308,11308],"mapped",[11356]],[[11309,11309],"mapped",[11357]],[[11310,11310],"mapped",[11358]],[[11311,11311],"disallowed"],[[11312,11358],"valid"],[[11359,11359],"disallowed"],[[11360,11360],"mapped",[11361]],[[11361,11361],"valid"],[[11362,11362],"mapped",[619]],[[11363,11363],"mapped",[7549]],[[11364,11364],"mapped",[637]],[[11365,11366],"valid"],[[11367,11367],"mapped",[11368]],[[11368,11368],"valid"],[[11369,11369],"mapped",[11370]],[[11370,11370],"valid"],[[11371,11371],"mapped",[11372]],[[11372,11372],"valid"],[[11373,11373],"mapped",[593]],[[11374,11374],"mapped",[625]],[[11375,11375],"mapped",[592]],[[11376,11376],"mapped",[594]],[[11377,11377],"valid"],[[11378,11378],"mapped",[11379]],[[11379,11379],"valid"],[[11380,11380],"valid"],[[11381,11381],"mapped",[11382]],[[11382,11383],"valid"],[[11384,11387],"valid"],[[11388,11388],"mapped",[106]],[[11389,11389],"mapped",[118]],[[11390,11390],"mapped",[575]],[[11391,11391],"mapped",[576]],[[11392,11392],"mapped",[11393]],[[11393,11393],"valid"],[[11394,11394],"mapped",[11395]],[[11395,11395],"valid"],[[11396,11396],"mapped",[11397]],[[11397,11397],"valid"],[[11398,11398],"mapped",[11399]],[[11399,11399],"valid"],[[11400,11400],"mapped",[11401]],[[11401,11401],"valid"],[[11402,11402],"mapped",[11403]],[[11403,11403],"valid"],[[11404,11404],"mapped",[11405]],[[11405,11405],"valid"],[[11406,11406],"mapped",[11407]],[[11407,11407],"valid"],[[11408,11408],"mapped",[11409]],[[11409,11409],"valid"],[[11410,11410],"mapped",[11411]],[[11411,11411],"valid"],[[11412,11412],"mapped",[11413]],[[11413,11413],"valid"],[[11414,11414],"mapped",[11415]],[[11415,11415],"valid"],[[11416,11416],"mapped",[11417]],[[11417,11417],"valid"],[[11418,11418],"mapped",[11419]],[[11419,11419],"valid"],[[11420,11420],"mapped",[11421]],[[11421,11421],"valid"],[[11422,11422],"mapped",[11423]],[[11423,11423],"valid"],[[11424,11424],"mapped",[11425]],[[11425,11425],"valid"],[[11426,11426],"mapped",[11427]],[[11427,11427],"valid"],[[11428,11428],"mapped",[11429]],[[11429,11429],"valid"],[[11430,11430],"mapped",[11431]],[[11431,11431],"valid"],[[11432,11432],"mapped",[11433]],[[11433,11433],"valid"],[[11434,11434],"mapped",[11435]],[[11435,11435],"valid"],[[11436,11436],"mapped",[11437]],[[11437,11437],"valid"],[[11438,11438],"mapped",[11439]],[[11439,11439],"valid"],[[11440,11440],"mapped",[11441]],[[11441,11441],"valid"],[[11442,11442],"mapped",[11443]],[[11443,11443],"valid"],[[11444,11444],"mapped",[11445]],[[11445,11445],"valid"],[[11446,11446],"mapped",[11447]],[[11447,11447],"valid"],[[11448,11448],"mapped",[11449]],[[11449,11449],"valid"],[[11450,11450],"mapped",[11451]],[[11451,11451],"valid"],[[11452,11452],"mapped",[11453]],[[11453,11453],"valid"],[[11454,11454],"mapped",[11455]],[[11455,11455],"valid"],[[11456,11456],"mapped",[11457]],[[11457,11457],"valid"],[[11458,11458],"mapped",[11459]],[[11459,11459],"valid"],[[11460,11460],"mapped",[11461]],[[11461,11461],"valid"],[[11462,11462],"mapped",[11463]],[[11463,11463],"valid"],[[11464,11464],"mapped",[11465]],[[11465,11465],"valid"],[[11466,11466],"mapped",[11467]],[[11467,11467],"valid"],[[11468,11468],"mapped",[11469]],[[11469,11469],"valid"],[[11470,11470],"mapped",[11471]],[[11471,11471],"valid"],[[11472,11472],"mapped",[11473]],[[11473,11473],"valid"],[[11474,11474],"mapped",[11475]],[[11475,11475],"valid"],[[11476,11476],"mapped",[11477]],[[11477,11477],"valid"],[[11478,11478],"mapped",[11479]],[[11479,11479],"valid"],[[11480,11480],"mapped",[11481]],[[11481,11481],"valid"],[[11482,11482],"mapped",[11483]],[[11483,11483],"valid"],[[11484,11484],"mapped",[11485]],[[11485,11485],"valid"],[[11486,11486],"mapped",[11487]],[[11487,11487],"valid"],[[11488,11488],"mapped",[11489]],[[11489,11489],"valid"],[[11490,11490],"mapped",[11491]],[[11491,11492],"valid"],[[11493,11498],"valid",[],"NV8"],[[11499,11499],"mapped",[11500]],[[11500,11500],"valid"],[[11501,11501],"mapped",[11502]],[[11502,11505],"valid"],[[11506,11506],"mapped",[11507]],[[11507,11507],"valid"],[[11508,11512],"disallowed"],[[11513,11519],"valid",[],"NV8"],[[11520,11557],"valid"],[[11558,11558],"disallowed"],[[11559,11559],"valid"],[[11560,11564],"disallowed"],[[11565,11565],"valid"],[[11566,11567],"disallowed"],[[11568,11621],"valid"],[[11622,11623],"valid"],[[11624,11630],"disallowed"],[[11631,11631],"mapped",[11617]],[[11632,11632],"valid",[],"NV8"],[[11633,11646],"disallowed"],[[11647,11647],"valid"],[[11648,11670],"valid"],[[11671,11679],"disallowed"],[[11680,11686],"valid"],[[11687,11687],"disallowed"],[[11688,11694],"valid"],[[11695,11695],"disallowed"],[[11696,11702],"valid"],[[11703,11703],"disallowed"],[[11704,11710],"valid"],[[11711,11711],"disallowed"],[[11712,11718],"valid"],[[11719,11719],"disallowed"],[[11720,11726],"valid"],[[11727,11727],"disallowed"],[[11728,11734],"valid"],[[11735,11735],"disallowed"],[[11736,11742],"valid"],[[11743,11743],"disallowed"],[[11744,11775],"valid"],[[11776,11799],"valid",[],"NV8"],[[11800,11803],"valid",[],"NV8"],[[11804,11805],"valid",[],"NV8"],[[11806,11822],"valid",[],"NV8"],[[11823,11823],"valid"],[[11824,11824],"valid",[],"NV8"],[[11825,11825],"valid",[],"NV8"],[[11826,11835],"valid",[],"NV8"],[[11836,11842],"valid",[],"NV8"],[[11843,11903],"disallowed"],[[11904,11929],"valid",[],"NV8"],[[11930,11930],"disallowed"],[[11931,11934],"valid",[],"NV8"],[[11935,11935],"mapped",[27597]],[[11936,12018],"valid",[],"NV8"],[[12019,12019],"mapped",[40863]],[[12020,12031],"disallowed"],[[12032,12032],"mapped",[19968]],[[12033,12033],"mapped",[20008]],[[12034,12034],"mapped",[20022]],[[12035,12035],"mapped",[20031]],[[12036,12036],"mapped",[20057]],[[12037,12037],"mapped",[20101]],[[12038,12038],"mapped",[20108]],[[12039,12039],"mapped",[20128]],[[12040,12040],"mapped",[20154]],[[12041,12041],"mapped",[20799]],[[12042,12042],"mapped",[20837]],[[12043,12043],"mapped",[20843]],[[12044,12044],"mapped",[20866]],[[12045,12045],"mapped",[20886]],[[12046,12046],"mapped",[20907]],[[12047,12047],"mapped",[20960]],[[12048,12048],"mapped",[20981]],[[12049,12049],"mapped",[20992]],[[12050,12050],"mapped",[21147]],[[12051,12051],"mapped",[21241]],[[12052,12052],"mapped",[21269]],[[12053,12053],"mapped",[21274]],[[12054,12054],"mapped",[21304]],[[12055,12055],"mapped",[21313]],[[12056,12056],"mapped",[21340]],[[12057,12057],"mapped",[21353]],[[12058,12058],"mapped",[21378]],[[12059,12059],"mapped",[21430]],[[12060,12060],"mapped",[21448]],[[12061,12061],"mapped",[21475]],[[12062,12062],"mapped",[22231]],[[12063,12063],"mapped",[22303]],[[12064,12064],"mapped",[22763]],[[12065,12065],"mapped",[22786]],[[12066,12066],"mapped",[22794]],[[12067,12067],"mapped",[22805]],[[12068,12068],"mapped",[22823]],[[12069,12069],"mapped",[22899]],[[12070,12070],"mapped",[23376]],[[12071,12071],"mapped",[23424]],[[12072,12072],"mapped",[23544]],[[12073,12073],"mapped",[23567]],[[12074,12074],"mapped",[23586]],[[12075,12075],"mapped",[23608]],[[12076,12076],"mapped",[23662]],[[12077,12077],"mapped",[23665]],[[12078,12078],"mapped",[24027]],[[12079,12079],"mapped",[24037]],[[12080,12080],"mapped",[24049]],[[12081,12081],"mapped",[24062]],[[12082,12082],"mapped",[24178]],[[12083,12083],"mapped",[24186]],[[12084,12084],"mapped",[24191]],[[12085,12085],"mapped",[24308]],[[12086,12086],"mapped",[24318]],[[12087,12087],"mapped",[24331]],[[12088,12088],"mapped",[24339]],[[12089,12089],"mapped",[24400]],[[12090,12090],"mapped",[24417]],[[12091,12091],"mapped",[24435]],[[12092,12092],"mapped",[24515]],[[12093,12093],"mapped",[25096]],[[12094,12094],"mapped",[25142]],[[12095,12095],"mapped",[25163]],[[12096,12096],"mapped",[25903]],[[12097,12097],"mapped",[25908]],[[12098,12098],"mapped",[25991]],[[12099,12099],"mapped",[26007]],[[12100,12100],"mapped",[26020]],[[12101,12101],"mapped",[26041]],[[12102,12102],"mapped",[26080]],[[12103,12103],"mapped",[26085]],[[12104,12104],"mapped",[26352]],[[12105,12105],"mapped",[26376]],[[12106,12106],"mapped",[26408]],[[12107,12107],"mapped",[27424]],[[12108,12108],"mapped",[27490]],[[12109,12109],"mapped",[27513]],[[12110,12110],"mapped",[27571]],[[12111,12111],"mapped",[27595]],[[12112,12112],"mapped",[27604]],[[12113,12113],"mapped",[27611]],[[12114,12114],"mapped",[27663]],[[12115,12115],"mapped",[27668]],[[12116,12116],"mapped",[27700]],[[12117,12117],"mapped",[28779]],[[12118,12118],"mapped",[29226]],[[12119,12119],"mapped",[29238]],[[12120,12120],"mapped",[29243]],[[12121,12121],"mapped",[29247]],[[12122,12122],"mapped",[29255]],[[12123,12123],"mapped",[29273]],[[12124,12124],"mapped",[29275]],[[12125,12125],"mapped",[29356]],[[12126,12126],"mapped",[29572]],[[12127,12127],"mapped",[29577]],[[12128,12128],"mapped",[29916]],[[12129,12129],"mapped",[29926]],[[12130,12130],"mapped",[29976]],[[12131,12131],"mapped",[29983]],[[12132,12132],"mapped",[29992]],[[12133,12133],"mapped",[30000]],[[12134,12134],"mapped",[30091]],[[12135,12135],"mapped",[30098]],[[12136,12136],"mapped",[30326]],[[12137,12137],"mapped",[30333]],[[12138,12138],"mapped",[30382]],[[12139,12139],"mapped",[30399]],[[12140,12140],"mapped",[30446]],[[12141,12141],"mapped",[30683]],[[12142,12142],"mapped",[30690]],[[12143,12143],"mapped",[30707]],[[12144,12144],"mapped",[31034]],[[12145,12145],"mapped",[31160]],[[12146,12146],"mapped",[31166]],[[12147,12147],"mapped",[31348]],[[12148,12148],"mapped",[31435]],[[12149,12149],"mapped",[31481]],[[12150,12150],"mapped",[31859]],[[12151,12151],"mapped",[31992]],[[12152,12152],"mapped",[32566]],[[12153,12153],"mapped",[32593]],[[12154,12154],"mapped",[32650]],[[12155,12155],"mapped",[32701]],[[12156,12156],"mapped",[32769]],[[12157,12157],"mapped",[32780]],[[12158,12158],"mapped",[32786]],[[12159,12159],"mapped",[32819]],[[12160,12160],"mapped",[32895]],[[12161,12161],"mapped",[32905]],[[12162,12162],"mapped",[33251]],[[12163,12163],"mapped",[33258]],[[12164,12164],"mapped",[33267]],[[12165,12165],"mapped",[33276]],[[12166,12166],"mapped",[33292]],[[12167,12167],"mapped",[33307]],[[12168,12168],"mapped",[33311]],[[12169,12169],"mapped",[33390]],[[12170,12170],"mapped",[33394]],[[12171,12171],"mapped",[33400]],[[12172,12172],"mapped",[34381]],[[12173,12173],"mapped",[34411]],[[12174,12174],"mapped",[34880]],[[12175,12175],"mapped",[34892]],[[12176,12176],"mapped",[34915]],[[12177,12177],"mapped",[35198]],[[12178,12178],"mapped",[35211]],[[12179,12179],"mapped",[35282]],[[12180,12180],"mapped",[35328]],[[12181,12181],"mapped",[35895]],[[12182,12182],"mapped",[35910]],[[12183,12183],"mapped",[35925]],[[12184,12184],"mapped",[35960]],[[12185,12185],"mapped",[35997]],[[12186,12186],"mapped",[36196]],[[12187,12187],"mapped",[36208]],[[12188,12188],"mapped",[36275]],[[12189,12189],"mapped",[36523]],[[12190,12190],"mapped",[36554]],[[12191,12191],"mapped",[36763]],[[12192,12192],"mapped",[36784]],[[12193,12193],"mapped",[36789]],[[12194,12194],"mapped",[37009]],[[12195,12195],"mapped",[37193]],[[12196,12196],"mapped",[37318]],[[12197,12197],"mapped",[37324]],[[12198,12198],"mapped",[37329]],[[12199,12199],"mapped",[38263]],[[12200,12200],"mapped",[38272]],[[12201,12201],"mapped",[38428]],[[12202,12202],"mapped",[38582]],[[12203,12203],"mapped",[38585]],[[12204,12204],"mapped",[38632]],[[12205,12205],"mapped",[38737]],[[12206,12206],"mapped",[38750]],[[12207,12207],"mapped",[38754]],[[12208,12208],"mapped",[38761]],[[12209,12209],"mapped",[38859]],[[12210,12210],"mapped",[38893]],[[12211,12211],"mapped",[38899]],[[12212,12212],"mapped",[38913]],[[12213,12213],"mapped",[39080]],[[12214,12214],"mapped",[39131]],[[12215,12215],"mapped",[39135]],[[12216,12216],"mapped",[39318]],[[12217,12217],"mapped",[39321]],[[12218,12218],"mapped",[39340]],[[12219,12219],"mapped",[39592]],[[12220,12220],"mapped",[39640]],[[12221,12221],"mapped",[39647]],[[12222,12222],"mapped",[39717]],[[12223,12223],"mapped",[39727]],[[12224,12224],"mapped",[39730]],[[12225,12225],"mapped",[39740]],[[12226,12226],"mapped",[39770]],[[12227,12227],"mapped",[40165]],[[12228,12228],"mapped",[40565]],[[12229,12229],"mapped",[40575]],[[12230,12230],"mapped",[40613]],[[12231,12231],"mapped",[40635]],[[12232,12232],"mapped",[40643]],[[12233,12233],"mapped",[40653]],[[12234,12234],"mapped",[40657]],[[12235,12235],"mapped",[40697]],[[12236,12236],"mapped",[40701]],[[12237,12237],"mapped",[40718]],[[12238,12238],"mapped",[40723]],[[12239,12239],"mapped",[40736]],[[12240,12240],"mapped",[40763]],[[12241,12241],"mapped",[40778]],[[12242,12242],"mapped",[40786]],[[12243,12243],"mapped",[40845]],[[12244,12244],"mapped",[40860]],[[12245,12245],"mapped",[40864]],[[12246,12271],"disallowed"],[[12272,12283],"disallowed"],[[12284,12287],"disallowed"],[[12288,12288],"disallowed_STD3_mapped",[32]],[[12289,12289],"valid",[],"NV8"],[[12290,12290],"mapped",[46]],[[12291,12292],"valid",[],"NV8"],[[12293,12295],"valid"],[[12296,12329],"valid",[],"NV8"],[[12330,12333],"valid"],[[12334,12341],"valid",[],"NV8"],[[12342,12342],"mapped",[12306]],[[12343,12343],"valid",[],"NV8"],[[12344,12344],"mapped",[21313]],[[12345,12345],"mapped",[21316]],[[12346,12346],"mapped",[21317]],[[12347,12347],"valid",[],"NV8"],[[12348,12348],"valid"],[[12349,12349],"valid",[],"NV8"],[[12350,12350],"valid",[],"NV8"],[[12351,12351],"valid",[],"NV8"],[[12352,12352],"disallowed"],[[12353,12436],"valid"],[[12437,12438],"valid"],[[12439,12440],"disallowed"],[[12441,12442],"valid"],[[12443,12443],"disallowed_STD3_mapped",[32,12441]],[[12444,12444],"disallowed_STD3_mapped",[32,12442]],[[12445,12446],"valid"],[[12447,12447],"mapped",[12424,12426]],[[12448,12448],"valid",[],"NV8"],[[12449,12542],"valid"],[[12543,12543],"mapped",[12467,12488]],[[12544,12548],"disallowed"],[[12549,12588],"valid"],[[12589,12589],"valid"],[[12590,12592],"disallowed"],[[12593,12593],"mapped",[4352]],[[12594,12594],"mapped",[4353]],[[12595,12595],"mapped",[4522]],[[12596,12596],"mapped",[4354]],[[12597,12597],"mapped",[4524]],[[12598,12598],"mapped",[4525]],[[12599,12599],"mapped",[4355]],[[12600,12600],"mapped",[4356]],[[12601,12601],"mapped",[4357]],[[12602,12602],"mapped",[4528]],[[12603,12603],"mapped",[4529]],[[12604,12604],"mapped",[4530]],[[12605,12605],"mapped",[4531]],[[12606,12606],"mapped",[4532]],[[12607,12607],"mapped",[4533]],[[12608,12608],"mapped",[4378]],[[12609,12609],"mapped",[4358]],[[12610,12610],"mapped",[4359]],[[12611,12611],"mapped",[4360]],[[12612,12612],"mapped",[4385]],[[12613,12613],"mapped",[4361]],[[12614,12614],"mapped",[4362]],[[12615,12615],"mapped",[4363]],[[12616,12616],"mapped",[4364]],[[12617,12617],"mapped",[4365]],[[12618,12618],"mapped",[4366]],[[12619,12619],"mapped",[4367]],[[12620,12620],"mapped",[4368]],[[12621,12621],"mapped",[4369]],[[12622,12622],"mapped",[4370]],[[12623,12623],"mapped",[4449]],[[12624,12624],"mapped",[4450]],[[12625,12625],"mapped",[4451]],[[12626,12626],"mapped",[4452]],[[12627,12627],"mapped",[4453]],[[12628,12628],"mapped",[4454]],[[12629,12629],"mapped",[4455]],[[12630,12630],"mapped",[4456]],[[12631,12631],"mapped",[4457]],[[12632,12632],"mapped",[4458]],[[12633,12633],"mapped",[4459]],[[12634,12634],"mapped",[4460]],[[12635,12635],"mapped",[4461]],[[12636,12636],"mapped",[4462]],[[12637,12637],"mapped",[4463]],[[12638,12638],"mapped",[4464]],[[12639,12639],"mapped",[4465]],[[12640,12640],"mapped",[4466]],[[12641,12641],"mapped",[4467]],[[12642,12642],"mapped",[4468]],[[12643,12643],"mapped",[4469]],[[12644,12644],"disallowed"],[[12645,12645],"mapped",[4372]],[[12646,12646],"mapped",[4373]],[[12647,12647],"mapped",[4551]],[[12648,12648],"mapped",[4552]],[[12649,12649],"mapped",[4556]],[[12650,12650],"mapped",[4558]],[[12651,12651],"mapped",[4563]],[[12652,12652],"mapped",[4567]],[[12653,12653],"mapped",[4569]],[[12654,12654],"mapped",[4380]],[[12655,12655],"mapped",[4573]],[[12656,12656],"mapped",[4575]],[[12657,12657],"mapped",[4381]],[[12658,12658],"mapped",[4382]],[[12659,12659],"mapped",[4384]],[[12660,12660],"mapped",[4386]],[[12661,12661],"mapped",[4387]],[[12662,12662],"mapped",[4391]],[[12663,12663],"mapped",[4393]],[[12664,12664],"mapped",[4395]],[[12665,12665],"mapped",[4396]],[[12666,12666],"mapped",[4397]],[[12667,12667],"mapped",[4398]],[[12668,12668],"mapped",[4399]],[[12669,12669],"mapped",[4402]],[[12670,12670],"mapped",[4406]],[[12671,12671],"mapped",[4416]],[[12672,12672],"mapped",[4423]],[[12673,12673],"mapped",[4428]],[[12674,12674],"mapped",[4593]],[[12675,12675],"mapped",[4594]],[[12676,12676],"mapped",[4439]],[[12677,12677],"mapped",[4440]],[[12678,12678],"mapped",[4441]],[[12679,12679],"mapped",[4484]],[[12680,12680],"mapped",[4485]],[[12681,12681],"mapped",[4488]],[[12682,12682],"mapped",[4497]],[[12683,12683],"mapped",[4498]],[[12684,12684],"mapped",[4500]],[[12685,12685],"mapped",[4510]],[[12686,12686],"mapped",[4513]],[[12687,12687],"disallowed"],[[12688,12689],"valid",[],"NV8"],[[12690,12690],"mapped",[19968]],[[12691,12691],"mapped",[20108]],[[12692,12692],"mapped",[19977]],[[12693,12693],"mapped",[22235]],[[12694,12694],"mapped",[19978]],[[12695,12695],"mapped",[20013]],[[12696,12696],"mapped",[19979]],[[12697,12697],"mapped",[30002]],[[12698,12698],"mapped",[20057]],[[12699,12699],"mapped",[19993]],[[12700,12700],"mapped",[19969]],[[12701,12701],"mapped",[22825]],[[12702,12702],"mapped",[22320]],[[12703,12703],"mapped",[20154]],[[12704,12727],"valid"],[[12728,12730],"valid"],[[12731,12735],"disallowed"],[[12736,12751],"valid",[],"NV8"],[[12752,12771],"valid",[],"NV8"],[[12772,12783],"disallowed"],[[12784,12799],"valid"],[[12800,12800],"disallowed_STD3_mapped",[40,4352,41]],[[12801,12801],"disallowed_STD3_mapped",[40,4354,41]],[[12802,12802],"disallowed_STD3_mapped",[40,4355,41]],[[12803,12803],"disallowed_STD3_mapped",[40,4357,41]],[[12804,12804],"disallowed_STD3_mapped",[40,4358,41]],[[12805,12805],"disallowed_STD3_mapped",[40,4359,41]],[[12806,12806],"disallowed_STD3_mapped",[40,4361,41]],[[12807,12807],"disallowed_STD3_mapped",[40,4363,41]],[[12808,12808],"disallowed_STD3_mapped",[40,4364,41]],[[12809,12809],"disallowed_STD3_mapped",[40,4366,41]],[[12810,12810],"disallowed_STD3_mapped",[40,4367,41]],[[12811,12811],"disallowed_STD3_mapped",[40,4368,41]],[[12812,12812],"disallowed_STD3_mapped",[40,4369,41]],[[12813,12813],"disallowed_STD3_mapped",[40,4370,41]],[[12814,12814],"disallowed_STD3_mapped",[40,44032,41]],[[12815,12815],"disallowed_STD3_mapped",[40,45208,41]],[[12816,12816],"disallowed_STD3_mapped",[40,45796,41]],[[12817,12817],"disallowed_STD3_mapped",[40,46972,41]],[[12818,12818],"disallowed_STD3_mapped",[40,47560,41]],[[12819,12819],"disallowed_STD3_mapped",[40,48148,41]],[[12820,12820],"disallowed_STD3_mapped",[40,49324,41]],[[12821,12821],"disallowed_STD3_mapped",[40,50500,41]],[[12822,12822],"disallowed_STD3_mapped",[40,51088,41]],[[12823,12823],"disallowed_STD3_mapped",[40,52264,41]],[[12824,12824],"disallowed_STD3_mapped",[40,52852,41]],[[12825,12825],"disallowed_STD3_mapped",[40,53440,41]],[[12826,12826],"disallowed_STD3_mapped",[40,54028,41]],[[12827,12827],"disallowed_STD3_mapped",[40,54616,41]],[[12828,12828],"disallowed_STD3_mapped",[40,51452,41]],[[12829,12829],"disallowed_STD3_mapped",[40,50724,51204,41]],[[12830,12830],"disallowed_STD3_mapped",[40,50724,54980,41]],[[12831,12831],"disallowed"],[[12832,12832],"disallowed_STD3_mapped",[40,19968,41]],[[12833,12833],"disallowed_STD3_mapped",[40,20108,41]],[[12834,12834],"disallowed_STD3_mapped",[40,19977,41]],[[12835,12835],"disallowed_STD3_mapped",[40,22235,41]],[[12836,12836],"disallowed_STD3_mapped",[40,20116,41]],[[12837,12837],"disallowed_STD3_mapped",[40,20845,41]],[[12838,12838],"disallowed_STD3_mapped",[40,19971,41]],[[12839,12839],"disallowed_STD3_mapped",[40,20843,41]],[[12840,12840],"disallowed_STD3_mapped",[40,20061,41]],[[12841,12841],"disallowed_STD3_mapped",[40,21313,41]],[[12842,12842],"disallowed_STD3_mapped",[40,26376,41]],[[12843,12843],"disallowed_STD3_mapped",[40,28779,41]],[[12844,12844],"disallowed_STD3_mapped",[40,27700,41]],[[12845,12845],"disallowed_STD3_mapped",[40,26408,41]],[[12846,12846],"disallowed_STD3_mapped",[40,37329,41]],[[12847,12847],"disallowed_STD3_mapped",[40,22303,41]],[[12848,12848],"disallowed_STD3_mapped",[40,26085,41]],[[12849,12849],"disallowed_STD3_mapped",[40,26666,41]],[[12850,12850],"disallowed_STD3_mapped",[40,26377,41]],[[12851,12851],"disallowed_STD3_mapped",[40,31038,41]],[[12852,12852],"disallowed_STD3_mapped",[40,21517,41]],[[12853,12853],"disallowed_STD3_mapped",[40,29305,41]],[[12854,12854],"disallowed_STD3_mapped",[40,36001,41]],[[12855,12855],"disallowed_STD3_mapped",[40,31069,41]],[[12856,12856],"disallowed_STD3_mapped",[40,21172,41]],[[12857,12857],"disallowed_STD3_mapped",[40,20195,41]],[[12858,12858],"disallowed_STD3_mapped",[40,21628,41]],[[12859,12859],"disallowed_STD3_mapped",[40,23398,41]],[[12860,12860],"disallowed_STD3_mapped",[40,30435,41]],[[12861,12861],"disallowed_STD3_mapped",[40,20225,41]],[[12862,12862],"disallowed_STD3_mapped",[40,36039,41]],[[12863,12863],"disallowed_STD3_mapped",[40,21332,41]],[[12864,12864],"disallowed_STD3_mapped",[40,31085,41]],[[12865,12865],"disallowed_STD3_mapped",[40,20241,41]],[[12866,12866],"disallowed_STD3_mapped",[40,33258,41]],[[12867,12867],"disallowed_STD3_mapped",[40,33267,41]],[[12868,12868],"mapped",[21839]],[[12869,12869],"mapped",[24188]],[[12870,12870],"mapped",[25991]],[[12871,12871],"mapped",[31631]],[[12872,12879],"valid",[],"NV8"],[[12880,12880],"mapped",[112,116,101]],[[12881,12881],"mapped",[50,49]],[[12882,12882],"mapped",[50,50]],[[12883,12883],"mapped",[50,51]],[[12884,12884],"mapped",[50,52]],[[12885,12885],"mapped",[50,53]],[[12886,12886],"mapped",[50,54]],[[12887,12887],"mapped",[50,55]],[[12888,12888],"mapped",[50,56]],[[12889,12889],"mapped",[50,57]],[[12890,12890],"mapped",[51,48]],[[12891,12891],"mapped",[51,49]],[[12892,12892],"mapped",[51,50]],[[12893,12893],"mapped",[51,51]],[[12894,12894],"mapped",[51,52]],[[12895,12895],"mapped",[51,53]],[[12896,12896],"mapped",[4352]],[[12897,12897],"mapped",[4354]],[[12898,12898],"mapped",[4355]],[[12899,12899],"mapped",[4357]],[[12900,12900],"mapped",[4358]],[[12901,12901],"mapped",[4359]],[[12902,12902],"mapped",[4361]],[[12903,12903],"mapped",[4363]],[[12904,12904],"mapped",[4364]],[[12905,12905],"mapped",[4366]],[[12906,12906],"mapped",[4367]],[[12907,12907],"mapped",[4368]],[[12908,12908],"mapped",[4369]],[[12909,12909],"mapped",[4370]],[[12910,12910],"mapped",[44032]],[[12911,12911],"mapped",[45208]],[[12912,12912],"mapped",[45796]],[[12913,12913],"mapped",[46972]],[[12914,12914],"mapped",[47560]],[[12915,12915],"mapped",[48148]],[[12916,12916],"mapped",[49324]],[[12917,12917],"mapped",[50500]],[[12918,12918],"mapped",[51088]],[[12919,12919],"mapped",[52264]],[[12920,12920],"mapped",[52852]],[[12921,12921],"mapped",[53440]],[[12922,12922],"mapped",[54028]],[[12923,12923],"mapped",[54616]],[[12924,12924],"mapped",[52280,44256]],[[12925,12925],"mapped",[51452,51032]],[[12926,12926],"mapped",[50864]],[[12927,12927],"valid",[],"NV8"],[[12928,12928],"mapped",[19968]],[[12929,12929],"mapped",[20108]],[[12930,12930],"mapped",[19977]],[[12931,12931],"mapped",[22235]],[[12932,12932],"mapped",[20116]],[[12933,12933],"mapped",[20845]],[[12934,12934],"mapped",[19971]],[[12935,12935],"mapped",[20843]],[[12936,12936],"mapped",[20061]],[[12937,12937],"mapped",[21313]],[[12938,12938],"mapped",[26376]],[[12939,12939],"mapped",[28779]],[[12940,12940],"mapped",[27700]],[[12941,12941],"mapped",[26408]],[[12942,12942],"mapped",[37329]],[[12943,12943],"mapped",[22303]],[[12944,12944],"mapped",[26085]],[[12945,12945],"mapped",[26666]],[[12946,12946],"mapped",[26377]],[[12947,12947],"mapped",[31038]],[[12948,12948],"mapped",[21517]],[[12949,12949],"mapped",[29305]],[[12950,12950],"mapped",[36001]],[[12951,12951],"mapped",[31069]],[[12952,12952],"mapped",[21172]],[[12953,12953],"mapped",[31192]],[[12954,12954],"mapped",[30007]],[[12955,12955],"mapped",[22899]],[[12956,12956],"mapped",[36969]],[[12957,12957],"mapped",[20778]],[[12958,12958],"mapped",[21360]],[[12959,12959],"mapped",[27880]],[[12960,12960],"mapped",[38917]],[[12961,12961],"mapped",[20241]],[[12962,12962],"mapped",[20889]],[[12963,12963],"mapped",[27491]],[[12964,12964],"mapped",[19978]],[[12965,12965],"mapped",[20013]],[[12966,12966],"mapped",[19979]],[[12967,12967],"mapped",[24038]],[[12968,12968],"mapped",[21491]],[[12969,12969],"mapped",[21307]],[[12970,12970],"mapped",[23447]],[[12971,12971],"mapped",[23398]],[[12972,12972],"mapped",[30435]],[[12973,12973],"mapped",[20225]],[[12974,12974],"mapped",[36039]],[[12975,12975],"mapped",[21332]],[[12976,12976],"mapped",[22812]],[[12977,12977],"mapped",[51,54]],[[12978,12978],"mapped",[51,55]],[[12979,12979],"mapped",[51,56]],[[12980,12980],"mapped",[51,57]],[[12981,12981],"mapped",[52,48]],[[12982,12982],"mapped",[52,49]],[[12983,12983],"mapped",[52,50]],[[12984,12984],"mapped",[52,51]],[[12985,12985],"mapped",[52,52]],[[12986,12986],"mapped",[52,53]],[[12987,12987],"mapped",[52,54]],[[12988,12988],"mapped",[52,55]],[[12989,12989],"mapped",[52,56]],[[12990,12990],"mapped",[52,57]],[[12991,12991],"mapped",[53,48]],[[12992,12992],"mapped",[49,26376]],[[12993,12993],"mapped",[50,26376]],[[12994,12994],"mapped",[51,26376]],[[12995,12995],"mapped",[52,26376]],[[12996,12996],"mapped",[53,26376]],[[12997,12997],"mapped",[54,26376]],[[12998,12998],"mapped",[55,26376]],[[12999,12999],"mapped",[56,26376]],[[13000,13000],"mapped",[57,26376]],[[13001,13001],"mapped",[49,48,26376]],[[13002,13002],"mapped",[49,49,26376]],[[13003,13003],"mapped",[49,50,26376]],[[13004,13004],"mapped",[104,103]],[[13005,13005],"mapped",[101,114,103]],[[13006,13006],"mapped",[101,118]],[[13007,13007],"mapped",[108,116,100]],[[13008,13008],"mapped",[12450]],[[13009,13009],"mapped",[12452]],[[13010,13010],"mapped",[12454]],[[13011,13011],"mapped",[12456]],[[13012,13012],"mapped",[12458]],[[13013,13013],"mapped",[12459]],[[13014,13014],"mapped",[12461]],[[13015,13015],"mapped",[12463]],[[13016,13016],"mapped",[12465]],[[13017,13017],"mapped",[12467]],[[13018,13018],"mapped",[12469]],[[13019,13019],"mapped",[12471]],[[13020,13020],"mapped",[12473]],[[13021,13021],"mapped",[12475]],[[13022,13022],"mapped",[12477]],[[13023,13023],"mapped",[12479]],[[13024,13024],"mapped",[12481]],[[13025,13025],"mapped",[12484]],[[13026,13026],"mapped",[12486]],[[13027,13027],"mapped",[12488]],[[13028,13028],"mapped",[12490]],[[13029,13029],"mapped",[12491]],[[13030,13030],"mapped",[12492]],[[13031,13031],"mapped",[12493]],[[13032,13032],"mapped",[12494]],[[13033,13033],"mapped",[12495]],[[13034,13034],"mapped",[12498]],[[13035,13035],"mapped",[12501]],[[13036,13036],"mapped",[12504]],[[13037,13037],"mapped",[12507]],[[13038,13038],"mapped",[12510]],[[13039,13039],"mapped",[12511]],[[13040,13040],"mapped",[12512]],[[13041,13041],"mapped",[12513]],[[13042,13042],"mapped",[12514]],[[13043,13043],"mapped",[12516]],[[13044,13044],"mapped",[12518]],[[13045,13045],"mapped",[12520]],[[13046,13046],"mapped",[12521]],[[13047,13047],"mapped",[12522]],[[13048,13048],"mapped",[12523]],[[13049,13049],"mapped",[12524]],[[13050,13050],"mapped",[12525]],[[13051,13051],"mapped",[12527]],[[13052,13052],"mapped",[12528]],[[13053,13053],"mapped",[12529]],[[13054,13054],"mapped",[12530]],[[13055,13055],"disallowed"],[[13056,13056],"mapped",[12450,12497,12540,12488]],[[13057,13057],"mapped",[12450,12523,12501,12449]],[[13058,13058],"mapped",[12450,12531,12506,12450]],[[13059,13059],"mapped",[12450,12540,12523]],[[13060,13060],"mapped",[12452,12491,12531,12464]],[[13061,13061],"mapped",[12452,12531,12481]],[[13062,13062],"mapped",[12454,12457,12531]],[[13063,13063],"mapped",[12456,12473,12463,12540,12489]],[[13064,13064],"mapped",[12456,12540,12459,12540]],[[13065,13065],"mapped",[12458,12531,12473]],[[13066,13066],"mapped",[12458,12540,12512]],[[13067,13067],"mapped",[12459,12452,12522]],[[13068,13068],"mapped",[12459,12521,12483,12488]],[[13069,13069],"mapped",[12459,12525,12522,12540]],[[13070,13070],"mapped",[12460,12525,12531]],[[13071,13071],"mapped",[12460,12531,12510]],[[13072,13072],"mapped",[12462,12460]],[[13073,13073],"mapped",[12462,12491,12540]],[[13074,13074],"mapped",[12461,12517,12522,12540]],[[13075,13075],"mapped",[12462,12523,12480,12540]],[[13076,13076],"mapped",[12461,12525]],[[13077,13077],"mapped",[12461,12525,12464,12521,12512]],[[13078,13078],"mapped",[12461,12525,12513,12540,12488,12523]],[[13079,13079],"mapped",[12461,12525,12527,12483,12488]],[[13080,13080],"mapped",[12464,12521,12512]],[[13081,13081],"mapped",[12464,12521,12512,12488,12531]],[[13082,13082],"mapped",[12463,12523,12476,12452,12525]],[[13083,13083],"mapped",[12463,12525,12540,12493]],[[13084,13084],"mapped",[12465,12540,12473]],[[13085,13085],"mapped",[12467,12523,12490]],[[13086,13086],"mapped",[12467,12540,12509]],[[13087,13087],"mapped",[12469,12452,12463,12523]],[[13088,13088],"mapped",[12469,12531,12481,12540,12512]],[[13089,13089],"mapped",[12471,12522,12531,12464]],[[13090,13090],"mapped",[12475,12531,12481]],[[13091,13091],"mapped",[12475,12531,12488]],[[13092,13092],"mapped",[12480,12540,12473]],[[13093,13093],"mapped",[12487,12471]],[[13094,13094],"mapped",[12489,12523]],[[13095,13095],"mapped",[12488,12531]],[[13096,13096],"mapped",[12490,12494]],[[13097,13097],"mapped",[12494,12483,12488]],[[13098,13098],"mapped",[12495,12452,12484]],[[13099,13099],"mapped",[12497,12540,12475,12531,12488]],[[13100,13100],"mapped",[12497,12540,12484]],[[13101,13101],"mapped",[12496,12540,12524,12523]],[[13102,13102],"mapped",[12500,12450,12473,12488,12523]],[[13103,13103],"mapped",[12500,12463,12523]],[[13104,13104],"mapped",[12500,12467]],[[13105,13105],"mapped",[12499,12523]],[[13106,13106],"mapped",[12501,12449,12521,12483,12489]],[[13107,13107],"mapped",[12501,12451,12540,12488]],[[13108,13108],"mapped",[12502,12483,12471,12455,12523]],[[13109,13109],"mapped",[12501,12521,12531]],[[13110,13110],"mapped",[12504,12463,12479,12540,12523]],[[13111,13111],"mapped",[12506,12477]],[[13112,13112],"mapped",[12506,12491,12498]],[[13113,13113],"mapped",[12504,12523,12484]],[[13114,13114],"mapped",[12506,12531,12473]],[[13115,13115],"mapped",[12506,12540,12472]],[[13116,13116],"mapped",[12505,12540,12479]],[[13117,13117],"mapped",[12509,12452,12531,12488]],[[13118,13118],"mapped",[12508,12523,12488]],[[13119,13119],"mapped",[12507,12531]],[[13120,13120],"mapped",[12509,12531,12489]],[[13121,13121],"mapped",[12507,12540,12523]],[[13122,13122],"mapped",[12507,12540,12531]],[[13123,13123],"mapped",[12510,12452,12463,12525]],[[13124,13124],"mapped",[12510,12452,12523]],[[13125,13125],"mapped",[12510,12483,12495]],[[13126,13126],"mapped",[12510,12523,12463]],[[13127,13127],"mapped",[12510,12531,12471,12519,12531]],[[13128,13128],"mapped",[12511,12463,12525,12531]],[[13129,13129],"mapped",[12511,12522]],[[13130,13130],"mapped",[12511,12522,12496,12540,12523]],[[13131,13131],"mapped",[12513,12460]],[[13132,13132],"mapped",[12513,12460,12488,12531]],[[13133,13133],"mapped",[12513,12540,12488,12523]],[[13134,13134],"mapped",[12516,12540,12489]],[[13135,13135],"mapped",[12516,12540,12523]],[[13136,13136],"mapped",[12518,12450,12531]],[[13137,13137],"mapped",[12522,12483,12488,12523]],[[13138,13138],"mapped",[12522,12521]],[[13139,13139],"mapped",[12523,12500,12540]],[[13140,13140],"mapped",[12523,12540,12502,12523]],[[13141,13141],"mapped",[12524,12512]],[[13142,13142],"mapped",[12524,12531,12488,12466,12531]],[[13143,13143],"mapped",[12527,12483,12488]],[[13144,13144],"mapped",[48,28857]],[[13145,13145],"mapped",[49,28857]],[[13146,13146],"mapped",[50,28857]],[[13147,13147],"mapped",[51,28857]],[[13148,13148],"mapped",[52,28857]],[[13149,13149],"mapped",[53,28857]],[[13150,13150],"mapped",[54,28857]],[[13151,13151],"mapped",[55,28857]],[[13152,13152],"mapped",[56,28857]],[[13153,13153],"mapped",[57,28857]],[[13154,13154],"mapped",[49,48,28857]],[[13155,13155],"mapped",[49,49,28857]],[[13156,13156],"mapped",[49,50,28857]],[[13157,13157],"mapped",[49,51,28857]],[[13158,13158],"mapped",[49,52,28857]],[[13159,13159],"mapped",[49,53,28857]],[[13160,13160],"mapped",[49,54,28857]],[[13161,13161],"mapped",[49,55,28857]],[[13162,13162],"mapped",[49,56,28857]],[[13163,13163],"mapped",[49,57,28857]],[[13164,13164],"mapped",[50,48,28857]],[[13165,13165],"mapped",[50,49,28857]],[[13166,13166],"mapped",[50,50,28857]],[[13167,13167],"mapped",[50,51,28857]],[[13168,13168],"mapped",[50,52,28857]],[[13169,13169],"mapped",[104,112,97]],[[13170,13170],"mapped",[100,97]],[[13171,13171],"mapped",[97,117]],[[13172,13172],"mapped",[98,97,114]],[[13173,13173],"mapped",[111,118]],[[13174,13174],"mapped",[112,99]],[[13175,13175],"mapped",[100,109]],[[13176,13176],"mapped",[100,109,50]],[[13177,13177],"mapped",[100,109,51]],[[13178,13178],"mapped",[105,117]],[[13179,13179],"mapped",[24179,25104]],[[13180,13180],"mapped",[26157,21644]],[[13181,13181],"mapped",[22823,27491]],[[13182,13182],"mapped",[26126,27835]],[[13183,13183],"mapped",[26666,24335,20250,31038]],[[13184,13184],"mapped",[112,97]],[[13185,13185],"mapped",[110,97]],[[13186,13186],"mapped",[956,97]],[[13187,13187],"mapped",[109,97]],[[13188,13188],"mapped",[107,97]],[[13189,13189],"mapped",[107,98]],[[13190,13190],"mapped",[109,98]],[[13191,13191],"mapped",[103,98]],[[13192,13192],"mapped",[99,97,108]],[[13193,13193],"mapped",[107,99,97,108]],[[13194,13194],"mapped",[112,102]],[[13195,13195],"mapped",[110,102]],[[13196,13196],"mapped",[956,102]],[[13197,13197],"mapped",[956,103]],[[13198,13198],"mapped",[109,103]],[[13199,13199],"mapped",[107,103]],[[13200,13200],"mapped",[104,122]],[[13201,13201],"mapped",[107,104,122]],[[13202,13202],"mapped",[109,104,122]],[[13203,13203],"mapped",[103,104,122]],[[13204,13204],"mapped",[116,104,122]],[[13205,13205],"mapped",[956,108]],[[13206,13206],"mapped",[109,108]],[[13207,13207],"mapped",[100,108]],[[13208,13208],"mapped",[107,108]],[[13209,13209],"mapped",[102,109]],[[13210,13210],"mapped",[110,109]],[[13211,13211],"mapped",[956,109]],[[13212,13212],"mapped",[109,109]],[[13213,13213],"mapped",[99,109]],[[13214,13214],"mapped",[107,109]],[[13215,13215],"mapped",[109,109,50]],[[13216,13216],"mapped",[99,109,50]],[[13217,13217],"mapped",[109,50]],[[13218,13218],"mapped",[107,109,50]],[[13219,13219],"mapped",[109,109,51]],[[13220,13220],"mapped",[99,109,51]],[[13221,13221],"mapped",[109,51]],[[13222,13222],"mapped",[107,109,51]],[[13223,13223],"mapped",[109,8725,115]],[[13224,13224],"mapped",[109,8725,115,50]],[[13225,13225],"mapped",[112,97]],[[13226,13226],"mapped",[107,112,97]],[[13227,13227],"mapped",[109,112,97]],[[13228,13228],"mapped",[103,112,97]],[[13229,13229],"mapped",[114,97,100]],[[13230,13230],"mapped",[114,97,100,8725,115]],[[13231,13231],"mapped",[114,97,100,8725,115,50]],[[13232,13232],"mapped",[112,115]],[[13233,13233],"mapped",[110,115]],[[13234,13234],"mapped",[956,115]],[[13235,13235],"mapped",[109,115]],[[13236,13236],"mapped",[112,118]],[[13237,13237],"mapped",[110,118]],[[13238,13238],"mapped",[956,118]],[[13239,13239],"mapped",[109,118]],[[13240,13240],"mapped",[107,118]],[[13241,13241],"mapped",[109,118]],[[13242,13242],"mapped",[112,119]],[[13243,13243],"mapped",[110,119]],[[13244,13244],"mapped",[956,119]],[[13245,13245],"mapped",[109,119]],[[13246,13246],"mapped",[107,119]],[[13247,13247],"mapped",[109,119]],[[13248,13248],"mapped",[107,969]],[[13249,13249],"mapped",[109,969]],[[13250,13250],"disallowed"],[[13251,13251],"mapped",[98,113]],[[13252,13252],"mapped",[99,99]],[[13253,13253],"mapped",[99,100]],[[13254,13254],"mapped",[99,8725,107,103]],[[13255,13255],"disallowed"],[[13256,13256],"mapped",[100,98]],[[13257,13257],"mapped",[103,121]],[[13258,13258],"mapped",[104,97]],[[13259,13259],"mapped",[104,112]],[[13260,13260],"mapped",[105,110]],[[13261,13261],"mapped",[107,107]],[[13262,13262],"mapped",[107,109]],[[13263,13263],"mapped",[107,116]],[[13264,13264],"mapped",[108,109]],[[13265,13265],"mapped",[108,110]],[[13266,13266],"mapped",[108,111,103]],[[13267,13267],"mapped",[108,120]],[[13268,13268],"mapped",[109,98]],[[13269,13269],"mapped",[109,105,108]],[[13270,13270],"mapped",[109,111,108]],[[13271,13271],"mapped",[112,104]],[[13272,13272],"disallowed"],[[13273,13273],"mapped",[112,112,109]],[[13274,13274],"mapped",[112,114]],[[13275,13275],"mapped",[115,114]],[[13276,13276],"mapped",[115,118]],[[13277,13277],"mapped",[119,98]],[[13278,13278],"mapped",[118,8725,109]],[[13279,13279],"mapped",[97,8725,109]],[[13280,13280],"mapped",[49,26085]],[[13281,13281],"mapped",[50,26085]],[[13282,13282],"mapped",[51,26085]],[[13283,13283],"mapped",[52,26085]],[[13284,13284],"mapped",[53,26085]],[[13285,13285],"mapped",[54,26085]],[[13286,13286],"mapped",[55,26085]],[[13287,13287],"mapped",[56,26085]],[[13288,13288],"mapped",[57,26085]],[[13289,13289],"mapped",[49,48,26085]],[[13290,13290],"mapped",[49,49,26085]],[[13291,13291],"mapped",[49,50,26085]],[[13292,13292],"mapped",[49,51,26085]],[[13293,13293],"mapped",[49,52,26085]],[[13294,13294],"mapped",[49,53,26085]],[[13295,13295],"mapped",[49,54,26085]],[[13296,13296],"mapped",[49,55,26085]],[[13297,13297],"mapped",[49,56,26085]],[[13298,13298],"mapped",[49,57,26085]],[[13299,13299],"mapped",[50,48,26085]],[[13300,13300],"mapped",[50,49,26085]],[[13301,13301],"mapped",[50,50,26085]],[[13302,13302],"mapped",[50,51,26085]],[[13303,13303],"mapped",[50,52,26085]],[[13304,13304],"mapped",[50,53,26085]],[[13305,13305],"mapped",[50,54,26085]],[[13306,13306],"mapped",[50,55,26085]],[[13307,13307],"mapped",[50,56,26085]],[[13308,13308],"mapped",[50,57,26085]],[[13309,13309],"mapped",[51,48,26085]],[[13310,13310],"mapped",[51,49,26085]],[[13311,13311],"mapped",[103,97,108]],[[13312,19893],"valid"],[[19894,19903],"disallowed"],[[19904,19967],"valid",[],"NV8"],[[19968,40869],"valid"],[[40870,40891],"valid"],[[40892,40899],"valid"],[[40900,40907],"valid"],[[40908,40908],"valid"],[[40909,40917],"valid"],[[40918,40959],"disallowed"],[[40960,42124],"valid"],[[42125,42127],"disallowed"],[[42128,42145],"valid",[],"NV8"],[[42146,42147],"valid",[],"NV8"],[[42148,42163],"valid",[],"NV8"],[[42164,42164],"valid",[],"NV8"],[[42165,42176],"valid",[],"NV8"],[[42177,42177],"valid",[],"NV8"],[[42178,42180],"valid",[],"NV8"],[[42181,42181],"valid",[],"NV8"],[[42182,42182],"valid",[],"NV8"],[[42183,42191],"disallowed"],[[42192,42237],"valid"],[[42238,42239],"valid",[],"NV8"],[[42240,42508],"valid"],[[42509,42511],"valid",[],"NV8"],[[42512,42539],"valid"],[[42540,42559],"disallowed"],[[42560,42560],"mapped",[42561]],[[42561,42561],"valid"],[[42562,42562],"mapped",[42563]],[[42563,42563],"valid"],[[42564,42564],"mapped",[42565]],[[42565,42565],"valid"],[[42566,42566],"mapped",[42567]],[[42567,42567],"valid"],[[42568,42568],"mapped",[42569]],[[42569,42569],"valid"],[[42570,42570],"mapped",[42571]],[[42571,42571],"valid"],[[42572,42572],"mapped",[42573]],[[42573,42573],"valid"],[[42574,42574],"mapped",[42575]],[[42575,42575],"valid"],[[42576,42576],"mapped",[42577]],[[42577,42577],"valid"],[[42578,42578],"mapped",[42579]],[[42579,42579],"valid"],[[42580,42580],"mapped",[42581]],[[42581,42581],"valid"],[[42582,42582],"mapped",[42583]],[[42583,42583],"valid"],[[42584,42584],"mapped",[42585]],[[42585,42585],"valid"],[[42586,42586],"mapped",[42587]],[[42587,42587],"valid"],[[42588,42588],"mapped",[42589]],[[42589,42589],"valid"],[[42590,42590],"mapped",[42591]],[[42591,42591],"valid"],[[42592,42592],"mapped",[42593]],[[42593,42593],"valid"],[[42594,42594],"mapped",[42595]],[[42595,42595],"valid"],[[42596,42596],"mapped",[42597]],[[42597,42597],"valid"],[[42598,42598],"mapped",[42599]],[[42599,42599],"valid"],[[42600,42600],"mapped",[42601]],[[42601,42601],"valid"],[[42602,42602],"mapped",[42603]],[[42603,42603],"valid"],[[42604,42604],"mapped",[42605]],[[42605,42607],"valid"],[[42608,42611],"valid",[],"NV8"],[[42612,42619],"valid"],[[42620,42621],"valid"],[[42622,42622],"valid",[],"NV8"],[[42623,42623],"valid"],[[42624,42624],"mapped",[42625]],[[42625,42625],"valid"],[[42626,42626],"mapped",[42627]],[[42627,42627],"valid"],[[42628,42628],"mapped",[42629]],[[42629,42629],"valid"],[[42630,42630],"mapped",[42631]],[[42631,42631],"valid"],[[42632,42632],"mapped",[42633]],[[42633,42633],"valid"],[[42634,42634],"mapped",[42635]],[[42635,42635],"valid"],[[42636,42636],"mapped",[42637]],[[42637,42637],"valid"],[[42638,42638],"mapped",[42639]],[[42639,42639],"valid"],[[42640,42640],"mapped",[42641]],[[42641,42641],"valid"],[[42642,42642],"mapped",[42643]],[[42643,42643],"valid"],[[42644,42644],"mapped",[42645]],[[42645,42645],"valid"],[[42646,42646],"mapped",[42647]],[[42647,42647],"valid"],[[42648,42648],"mapped",[42649]],[[42649,42649],"valid"],[[42650,42650],"mapped",[42651]],[[42651,42651],"valid"],[[42652,42652],"mapped",[1098]],[[42653,42653],"mapped",[1100]],[[42654,42654],"valid"],[[42655,42655],"valid"],[[42656,42725],"valid"],[[42726,42735],"valid",[],"NV8"],[[42736,42737],"valid"],[[42738,42743],"valid",[],"NV8"],[[42744,42751],"disallowed"],[[42752,42774],"valid",[],"NV8"],[[42775,42778],"valid"],[[42779,42783],"valid"],[[42784,42785],"valid",[],"NV8"],[[42786,42786],"mapped",[42787]],[[42787,42787],"valid"],[[42788,42788],"mapped",[42789]],[[42789,42789],"valid"],[[42790,42790],"mapped",[42791]],[[42791,42791],"valid"],[[42792,42792],"mapped",[42793]],[[42793,42793],"valid"],[[42794,42794],"mapped",[42795]],[[42795,42795],"valid"],[[42796,42796],"mapped",[42797]],[[42797,42797],"valid"],[[42798,42798],"mapped",[42799]],[[42799,42801],"valid"],[[42802,42802],"mapped",[42803]],[[42803,42803],"valid"],[[42804,42804],"mapped",[42805]],[[42805,42805],"valid"],[[42806,42806],"mapped",[42807]],[[42807,42807],"valid"],[[42808,42808],"mapped",[42809]],[[42809,42809],"valid"],[[42810,42810],"mapped",[42811]],[[42811,42811],"valid"],[[42812,42812],"mapped",[42813]],[[42813,42813],"valid"],[[42814,42814],"mapped",[42815]],[[42815,42815],"valid"],[[42816,42816],"mapped",[42817]],[[42817,42817],"valid"],[[42818,42818],"mapped",[42819]],[[42819,42819],"valid"],[[42820,42820],"mapped",[42821]],[[42821,42821],"valid"],[[42822,42822],"mapped",[42823]],[[42823,42823],"valid"],[[42824,42824],"mapped",[42825]],[[42825,42825],"valid"],[[42826,42826],"mapped",[42827]],[[42827,42827],"valid"],[[42828,42828],"mapped",[42829]],[[42829,42829],"valid"],[[42830,42830],"mapped",[42831]],[[42831,42831],"valid"],[[42832,42832],"mapped",[42833]],[[42833,42833],"valid"],[[42834,42834],"mapped",[42835]],[[42835,42835],"valid"],[[42836,42836],"mapped",[42837]],[[42837,42837],"valid"],[[42838,42838],"mapped",[42839]],[[42839,42839],"valid"],[[42840,42840],"mapped",[42841]],[[42841,42841],"valid"],[[42842,42842],"mapped",[42843]],[[42843,42843],"valid"],[[42844,42844],"mapped",[42845]],[[42845,42845],"valid"],[[42846,42846],"mapped",[42847]],[[42847,42847],"valid"],[[42848,42848],"mapped",[42849]],[[42849,42849],"valid"],[[42850,42850],"mapped",[42851]],[[42851,42851],"valid"],[[42852,42852],"mapped",[42853]],[[42853,42853],"valid"],[[42854,42854],"mapped",[42855]],[[42855,42855],"valid"],[[42856,42856],"mapped",[42857]],[[42857,42857],"valid"],[[42858,42858],"mapped",[42859]],[[42859,42859],"valid"],[[42860,42860],"mapped",[42861]],[[42861,42861],"valid"],[[42862,42862],"mapped",[42863]],[[42863,42863],"valid"],[[42864,42864],"mapped",[42863]],[[42865,42872],"valid"],[[42873,42873],"mapped",[42874]],[[42874,42874],"valid"],[[42875,42875],"mapped",[42876]],[[42876,42876],"valid"],[[42877,42877],"mapped",[7545]],[[42878,42878],"mapped",[42879]],[[42879,42879],"valid"],[[42880,42880],"mapped",[42881]],[[42881,42881],"valid"],[[42882,42882],"mapped",[42883]],[[42883,42883],"valid"],[[42884,42884],"mapped",[42885]],[[42885,42885],"valid"],[[42886,42886],"mapped",[42887]],[[42887,42888],"valid"],[[42889,42890],"valid",[],"NV8"],[[42891,42891],"mapped",[42892]],[[42892,42892],"valid"],[[42893,42893],"mapped",[613]],[[42894,42894],"valid"],[[42895,42895],"valid"],[[42896,42896],"mapped",[42897]],[[42897,42897],"valid"],[[42898,42898],"mapped",[42899]],[[42899,42899],"valid"],[[42900,42901],"valid"],[[42902,42902],"mapped",[42903]],[[42903,42903],"valid"],[[42904,42904],"mapped",[42905]],[[42905,42905],"valid"],[[42906,42906],"mapped",[42907]],[[42907,42907],"valid"],[[42908,42908],"mapped",[42909]],[[42909,42909],"valid"],[[42910,42910],"mapped",[42911]],[[42911,42911],"valid"],[[42912,42912],"mapped",[42913]],[[42913,42913],"valid"],[[42914,42914],"mapped",[42915]],[[42915,42915],"valid"],[[42916,42916],"mapped",[42917]],[[42917,42917],"valid"],[[42918,42918],"mapped",[42919]],[[42919,42919],"valid"],[[42920,42920],"mapped",[42921]],[[42921,42921],"valid"],[[42922,42922],"mapped",[614]],[[42923,42923],"mapped",[604]],[[42924,42924],"mapped",[609]],[[42925,42925],"mapped",[620]],[[42926,42927],"disallowed"],[[42928,42928],"mapped",[670]],[[42929,42929],"mapped",[647]],[[42930,42930],"mapped",[669]],[[42931,42931],"mapped",[43859]],[[42932,42932],"mapped",[42933]],[[42933,42933],"valid"],[[42934,42934],"mapped",[42935]],[[42935,42935],"valid"],[[42936,42998],"disallowed"],[[42999,42999],"valid"],[[43000,43000],"mapped",[295]],[[43001,43001],"mapped",[339]],[[43002,43002],"valid"],[[43003,43007],"valid"],[[43008,43047],"valid"],[[43048,43051],"valid",[],"NV8"],[[43052,43055],"disallowed"],[[43056,43065],"valid",[],"NV8"],[[43066,43071],"disallowed"],[[43072,43123],"valid"],[[43124,43127],"valid",[],"NV8"],[[43128,43135],"disallowed"],[[43136,43204],"valid"],[[43205,43213],"disallowed"],[[43214,43215],"valid",[],"NV8"],[[43216,43225],"valid"],[[43226,43231],"disallowed"],[[43232,43255],"valid"],[[43256,43258],"valid",[],"NV8"],[[43259,43259],"valid"],[[43260,43260],"valid",[],"NV8"],[[43261,43261],"valid"],[[43262,43263],"disallowed"],[[43264,43309],"valid"],[[43310,43311],"valid",[],"NV8"],[[43312,43347],"valid"],[[43348,43358],"disallowed"],[[43359,43359],"valid",[],"NV8"],[[43360,43388],"valid",[],"NV8"],[[43389,43391],"disallowed"],[[43392,43456],"valid"],[[43457,43469],"valid",[],"NV8"],[[43470,43470],"disallowed"],[[43471,43481],"valid"],[[43482,43485],"disallowed"],[[43486,43487],"valid",[],"NV8"],[[43488,43518],"valid"],[[43519,43519],"disallowed"],[[43520,43574],"valid"],[[43575,43583],"disallowed"],[[43584,43597],"valid"],[[43598,43599],"disallowed"],[[43600,43609],"valid"],[[43610,43611],"disallowed"],[[43612,43615],"valid",[],"NV8"],[[43616,43638],"valid"],[[43639,43641],"valid",[],"NV8"],[[43642,43643],"valid"],[[43644,43647],"valid"],[[43648,43714],"valid"],[[43715,43738],"disallowed"],[[43739,43741],"valid"],[[43742,43743],"valid",[],"NV8"],[[43744,43759],"valid"],[[43760,43761],"valid",[],"NV8"],[[43762,43766],"valid"],[[43767,43776],"disallowed"],[[43777,43782],"valid"],[[43783,43784],"disallowed"],[[43785,43790],"valid"],[[43791,43792],"disallowed"],[[43793,43798],"valid"],[[43799,43807],"disallowed"],[[43808,43814],"valid"],[[43815,43815],"disallowed"],[[43816,43822],"valid"],[[43823,43823],"disallowed"],[[43824,43866],"valid"],[[43867,43867],"valid",[],"NV8"],[[43868,43868],"mapped",[42791]],[[43869,43869],"mapped",[43831]],[[43870,43870],"mapped",[619]],[[43871,43871],"mapped",[43858]],[[43872,43875],"valid"],[[43876,43877],"valid"],[[43878,43887],"disallowed"],[[43888,43888],"mapped",[5024]],[[43889,43889],"mapped",[5025]],[[43890,43890],"mapped",[5026]],[[43891,43891],"mapped",[5027]],[[43892,43892],"mapped",[5028]],[[43893,43893],"mapped",[5029]],[[43894,43894],"mapped",[5030]],[[43895,43895],"mapped",[5031]],[[43896,43896],"mapped",[5032]],[[43897,43897],"mapped",[5033]],[[43898,43898],"mapped",[5034]],[[43899,43899],"mapped",[5035]],[[43900,43900],"mapped",[5036]],[[43901,43901],"mapped",[5037]],[[43902,43902],"mapped",[5038]],[[43903,43903],"mapped",[5039]],[[43904,43904],"mapped",[5040]],[[43905,43905],"mapped",[5041]],[[43906,43906],"mapped",[5042]],[[43907,43907],"mapped",[5043]],[[43908,43908],"mapped",[5044]],[[43909,43909],"mapped",[5045]],[[43910,43910],"mapped",[5046]],[[43911,43911],"mapped",[5047]],[[43912,43912],"mapped",[5048]],[[43913,43913],"mapped",[5049]],[[43914,43914],"mapped",[5050]],[[43915,43915],"mapped",[5051]],[[43916,43916],"mapped",[5052]],[[43917,43917],"mapped",[5053]],[[43918,43918],"mapped",[5054]],[[43919,43919],"mapped",[5055]],[[43920,43920],"mapped",[5056]],[[43921,43921],"mapped",[5057]],[[43922,43922],"mapped",[5058]],[[43923,43923],"mapped",[5059]],[[43924,43924],"mapped",[5060]],[[43925,43925],"mapped",[5061]],[[43926,43926],"mapped",[5062]],[[43927,43927],"mapped",[5063]],[[43928,43928],"mapped",[5064]],[[43929,43929],"mapped",[5065]],[[43930,43930],"mapped",[5066]],[[43931,43931],"mapped",[5067]],[[43932,43932],"mapped",[5068]],[[43933,43933],"mapped",[5069]],[[43934,43934],"mapped",[5070]],[[43935,43935],"mapped",[5071]],[[43936,43936],"mapped",[5072]],[[43937,43937],"mapped",[5073]],[[43938,43938],"mapped",[5074]],[[43939,43939],"mapped",[5075]],[[43940,43940],"mapped",[5076]],[[43941,43941],"mapped",[5077]],[[43942,43942],"mapped",[5078]],[[43943,43943],"mapped",[5079]],[[43944,43944],"mapped",[5080]],[[43945,43945],"mapped",[5081]],[[43946,43946],"mapped",[5082]],[[43947,43947],"mapped",[5083]],[[43948,43948],"mapped",[5084]],[[43949,43949],"mapped",[5085]],[[43950,43950],"mapped",[5086]],[[43951,43951],"mapped",[5087]],[[43952,43952],"mapped",[5088]],[[43953,43953],"mapped",[5089]],[[43954,43954],"mapped",[5090]],[[43955,43955],"mapped",[5091]],[[43956,43956],"mapped",[5092]],[[43957,43957],"mapped",[5093]],[[43958,43958],"mapped",[5094]],[[43959,43959],"mapped",[5095]],[[43960,43960],"mapped",[5096]],[[43961,43961],"mapped",[5097]],[[43962,43962],"mapped",[5098]],[[43963,43963],"mapped",[5099]],[[43964,43964],"mapped",[5100]],[[43965,43965],"mapped",[5101]],[[43966,43966],"mapped",[5102]],[[43967,43967],"mapped",[5103]],[[43968,44010],"valid"],[[44011,44011],"valid",[],"NV8"],[[44012,44013],"valid"],[[44014,44015],"disallowed"],[[44016,44025],"valid"],[[44026,44031],"disallowed"],[[44032,55203],"valid"],[[55204,55215],"disallowed"],[[55216,55238],"valid",[],"NV8"],[[55239,55242],"disallowed"],[[55243,55291],"valid",[],"NV8"],[[55292,55295],"disallowed"],[[55296,57343],"disallowed"],[[57344,63743],"disallowed"],[[63744,63744],"mapped",[35912]],[[63745,63745],"mapped",[26356]],[[63746,63746],"mapped",[36554]],[[63747,63747],"mapped",[36040]],[[63748,63748],"mapped",[28369]],[[63749,63749],"mapped",[20018]],[[63750,63750],"mapped",[21477]],[[63751,63752],"mapped",[40860]],[[63753,63753],"mapped",[22865]],[[63754,63754],"mapped",[37329]],[[63755,63755],"mapped",[21895]],[[63756,63756],"mapped",[22856]],[[63757,63757],"mapped",[25078]],[[63758,63758],"mapped",[30313]],[[63759,63759],"mapped",[32645]],[[63760,63760],"mapped",[34367]],[[63761,63761],"mapped",[34746]],[[63762,63762],"mapped",[35064]],[[63763,63763],"mapped",[37007]],[[63764,63764],"mapped",[27138]],[[63765,63765],"mapped",[27931]],[[63766,63766],"mapped",[28889]],[[63767,63767],"mapped",[29662]],[[63768,63768],"mapped",[33853]],[[63769,63769],"mapped",[37226]],[[63770,63770],"mapped",[39409]],[[63771,63771],"mapped",[20098]],[[63772,63772],"mapped",[21365]],[[63773,63773],"mapped",[27396]],[[63774,63774],"mapped",[29211]],[[63775,63775],"mapped",[34349]],[[63776,63776],"mapped",[40478]],[[63777,63777],"mapped",[23888]],[[63778,63778],"mapped",[28651]],[[63779,63779],"mapped",[34253]],[[63780,63780],"mapped",[35172]],[[63781,63781],"mapped",[25289]],[[63782,63782],"mapped",[33240]],[[63783,63783],"mapped",[34847]],[[63784,63784],"mapped",[24266]],[[63785,63785],"mapped",[26391]],[[63786,63786],"mapped",[28010]],[[63787,63787],"mapped",[29436]],[[63788,63788],"mapped",[37070]],[[63789,63789],"mapped",[20358]],[[63790,63790],"mapped",[20919]],[[63791,63791],"mapped",[21214]],[[63792,63792],"mapped",[25796]],[[63793,63793],"mapped",[27347]],[[63794,63794],"mapped",[29200]],[[63795,63795],"mapped",[30439]],[[63796,63796],"mapped",[32769]],[[63797,63797],"mapped",[34310]],[[63798,63798],"mapped",[34396]],[[63799,63799],"mapped",[36335]],[[63800,63800],"mapped",[38706]],[[63801,63801],"mapped",[39791]],[[63802,63802],"mapped",[40442]],[[63803,63803],"mapped",[30860]],[[63804,63804],"mapped",[31103]],[[63805,63805],"mapped",[32160]],[[63806,63806],"mapped",[33737]],[[63807,63807],"mapped",[37636]],[[63808,63808],"mapped",[40575]],[[63809,63809],"mapped",[35542]],[[63810,63810],"mapped",[22751]],[[63811,63811],"mapped",[24324]],[[63812,63812],"mapped",[31840]],[[63813,63813],"mapped",[32894]],[[63814,63814],"mapped",[29282]],[[63815,63815],"mapped",[30922]],[[63816,63816],"mapped",[36034]],[[63817,63817],"mapped",[38647]],[[63818,63818],"mapped",[22744]],[[63819,63819],"mapped",[23650]],[[63820,63820],"mapped",[27155]],[[63821,63821],"mapped",[28122]],[[63822,63822],"mapped",[28431]],[[63823,63823],"mapped",[32047]],[[63824,63824],"mapped",[32311]],[[63825,63825],"mapped",[38475]],[[63826,63826],"mapped",[21202]],[[63827,63827],"mapped",[32907]],[[63828,63828],"mapped",[20956]],[[63829,63829],"mapped",[20940]],[[63830,63830],"mapped",[31260]],[[63831,63831],"mapped",[32190]],[[63832,63832],"mapped",[33777]],[[63833,63833],"mapped",[38517]],[[63834,63834],"mapped",[35712]],[[63835,63835],"mapped",[25295]],[[63836,63836],"mapped",[27138]],[[63837,63837],"mapped",[35582]],[[63838,63838],"mapped",[20025]],[[63839,63839],"mapped",[23527]],[[63840,63840],"mapped",[24594]],[[63841,63841],"mapped",[29575]],[[63842,63842],"mapped",[30064]],[[63843,63843],"mapped",[21271]],[[63844,63844],"mapped",[30971]],[[63845,63845],"mapped",[20415]],[[63846,63846],"mapped",[24489]],[[63847,63847],"mapped",[19981]],[[63848,63848],"mapped",[27852]],[[63849,63849],"mapped",[25976]],[[63850,63850],"mapped",[32034]],[[63851,63851],"mapped",[21443]],[[63852,63852],"mapped",[22622]],[[63853,63853],"mapped",[30465]],[[63854,63854],"mapped",[33865]],[[63855,63855],"mapped",[35498]],[[63856,63856],"mapped",[27578]],[[63857,63857],"mapped",[36784]],[[63858,63858],"mapped",[27784]],[[63859,63859],"mapped",[25342]],[[63860,63860],"mapped",[33509]],[[63861,63861],"mapped",[25504]],[[63862,63862],"mapped",[30053]],[[63863,63863],"mapped",[20142]],[[63864,63864],"mapped",[20841]],[[63865,63865],"mapped",[20937]],[[63866,63866],"mapped",[26753]],[[63867,63867],"mapped",[31975]],[[63868,63868],"mapped",[33391]],[[63869,63869],"mapped",[35538]],[[63870,63870],"mapped",[37327]],[[63871,63871],"mapped",[21237]],[[63872,63872],"mapped",[21570]],[[63873,63873],"mapped",[22899]],[[63874,63874],"mapped",[24300]],[[63875,63875],"mapped",[26053]],[[63876,63876],"mapped",[28670]],[[63877,63877],"mapped",[31018]],[[63878,63878],"mapped",[38317]],[[63879,63879],"mapped",[39530]],[[63880,63880],"mapped",[40599]],[[63881,63881],"mapped",[40654]],[[63882,63882],"mapped",[21147]],[[63883,63883],"mapped",[26310]],[[63884,63884],"mapped",[27511]],[[63885,63885],"mapped",[36706]],[[63886,63886],"mapped",[24180]],[[63887,63887],"mapped",[24976]],[[63888,63888],"mapped",[25088]],[[63889,63889],"mapped",[25754]],[[63890,63890],"mapped",[28451]],[[63891,63891],"mapped",[29001]],[[63892,63892],"mapped",[29833]],[[63893,63893],"mapped",[31178]],[[63894,63894],"mapped",[32244]],[[63895,63895],"mapped",[32879]],[[63896,63896],"mapped",[36646]],[[63897,63897],"mapped",[34030]],[[63898,63898],"mapped",[36899]],[[63899,63899],"mapped",[37706]],[[63900,63900],"mapped",[21015]],[[63901,63901],"mapped",[21155]],[[63902,63902],"mapped",[21693]],[[63903,63903],"mapped",[28872]],[[63904,63904],"mapped",[35010]],[[63905,63905],"mapped",[35498]],[[63906,63906],"mapped",[24265]],[[63907,63907],"mapped",[24565]],[[63908,63908],"mapped",[25467]],[[63909,63909],"mapped",[27566]],[[63910,63910],"mapped",[31806]],[[63911,63911],"mapped",[29557]],[[63912,63912],"mapped",[20196]],[[63913,63913],"mapped",[22265]],[[63914,63914],"mapped",[23527]],[[63915,63915],"mapped",[23994]],[[63916,63916],"mapped",[24604]],[[63917,63917],"mapped",[29618]],[[63918,63918],"mapped",[29801]],[[63919,63919],"mapped",[32666]],[[63920,63920],"mapped",[32838]],[[63921,63921],"mapped",[37428]],[[63922,63922],"mapped",[38646]],[[63923,63923],"mapped",[38728]],[[63924,63924],"mapped",[38936]],[[63925,63925],"mapped",[20363]],[[63926,63926],"mapped",[31150]],[[63927,63927],"mapped",[37300]],[[63928,63928],"mapped",[38584]],[[63929,63929],"mapped",[24801]],[[63930,63930],"mapped",[20102]],[[63931,63931],"mapped",[20698]],[[63932,63932],"mapped",[23534]],[[63933,63933],"mapped",[23615]],[[63934,63934],"mapped",[26009]],[[63935,63935],"mapped",[27138]],[[63936,63936],"mapped",[29134]],[[63937,63937],"mapped",[30274]],[[63938,63938],"mapped",[34044]],[[63939,63939],"mapped",[36988]],[[63940,63940],"mapped",[40845]],[[63941,63941],"mapped",[26248]],[[63942,63942],"mapped",[38446]],[[63943,63943],"mapped",[21129]],[[63944,63944],"mapped",[26491]],[[63945,63945],"mapped",[26611]],[[63946,63946],"mapped",[27969]],[[63947,63947],"mapped",[28316]],[[63948,63948],"mapped",[29705]],[[63949,63949],"mapped",[30041]],[[63950,63950],"mapped",[30827]],[[63951,63951],"mapped",[32016]],[[63952,63952],"mapped",[39006]],[[63953,63953],"mapped",[20845]],[[63954,63954],"mapped",[25134]],[[63955,63955],"mapped",[38520]],[[63956,63956],"mapped",[20523]],[[63957,63957],"mapped",[23833]],[[63958,63958],"mapped",[28138]],[[63959,63959],"mapped",[36650]],[[63960,63960],"mapped",[24459]],[[63961,63961],"mapped",[24900]],[[63962,63962],"mapped",[26647]],[[63963,63963],"mapped",[29575]],[[63964,63964],"mapped",[38534]],[[63965,63965],"mapped",[21033]],[[63966,63966],"mapped",[21519]],[[63967,63967],"mapped",[23653]],[[63968,63968],"mapped",[26131]],[[63969,63969],"mapped",[26446]],[[63970,63970],"mapped",[26792]],[[63971,63971],"mapped",[27877]],[[63972,63972],"mapped",[29702]],[[63973,63973],"mapped",[30178]],[[63974,63974],"mapped",[32633]],[[63975,63975],"mapped",[35023]],[[63976,63976],"mapped",[35041]],[[63977,63977],"mapped",[37324]],[[63978,63978],"mapped",[38626]],[[63979,63979],"mapped",[21311]],[[63980,63980],"mapped",[28346]],[[63981,63981],"mapped",[21533]],[[63982,63982],"mapped",[29136]],[[63983,63983],"mapped",[29848]],[[63984,63984],"mapped",[34298]],[[63985,63985],"mapped",[38563]],[[63986,63986],"mapped",[40023]],[[63987,63987],"mapped",[40607]],[[63988,63988],"mapped",[26519]],[[63989,63989],"mapped",[28107]],[[63990,63990],"mapped",[33256]],[[63991,63991],"mapped",[31435]],[[63992,63992],"mapped",[31520]],[[63993,63993],"mapped",[31890]],[[63994,63994],"mapped",[29376]],[[63995,63995],"mapped",[28825]],[[63996,63996],"mapped",[35672]],[[63997,63997],"mapped",[20160]],[[63998,63998],"mapped",[33590]],[[63999,63999],"mapped",[21050]],[[64000,64000],"mapped",[20999]],[[64001,64001],"mapped",[24230]],[[64002,64002],"mapped",[25299]],[[64003,64003],"mapped",[31958]],[[64004,64004],"mapped",[23429]],[[64005,64005],"mapped",[27934]],[[64006,64006],"mapped",[26292]],[[64007,64007],"mapped",[36667]],[[64008,64008],"mapped",[34892]],[[64009,64009],"mapped",[38477]],[[64010,64010],"mapped",[35211]],[[64011,64011],"mapped",[24275]],[[64012,64012],"mapped",[20800]],[[64013,64013],"mapped",[21952]],[[64014,64015],"valid"],[[64016,64016],"mapped",[22618]],[[64017,64017],"valid"],[[64018,64018],"mapped",[26228]],[[64019,64020],"valid"],[[64021,64021],"mapped",[20958]],[[64022,64022],"mapped",[29482]],[[64023,64023],"mapped",[30410]],[[64024,64024],"mapped",[31036]],[[64025,64025],"mapped",[31070]],[[64026,64026],"mapped",[31077]],[[64027,64027],"mapped",[31119]],[[64028,64028],"mapped",[38742]],[[64029,64029],"mapped",[31934]],[[64030,64030],"mapped",[32701]],[[64031,64031],"valid"],[[64032,64032],"mapped",[34322]],[[64033,64033],"valid"],[[64034,64034],"mapped",[35576]],[[64035,64036],"valid"],[[64037,64037],"mapped",[36920]],[[64038,64038],"mapped",[37117]],[[64039,64041],"valid"],[[64042,64042],"mapped",[39151]],[[64043,64043],"mapped",[39164]],[[64044,64044],"mapped",[39208]],[[64045,64045],"mapped",[40372]],[[64046,64046],"mapped",[37086]],[[64047,64047],"mapped",[38583]],[[64048,64048],"mapped",[20398]],[[64049,64049],"mapped",[20711]],[[64050,64050],"mapped",[20813]],[[64051,64051],"mapped",[21193]],[[64052,64052],"mapped",[21220]],[[64053,64053],"mapped",[21329]],[[64054,64054],"mapped",[21917]],[[64055,64055],"mapped",[22022]],[[64056,64056],"mapped",[22120]],[[64057,64057],"mapped",[22592]],[[64058,64058],"mapped",[22696]],[[64059,64059],"mapped",[23652]],[[64060,64060],"mapped",[23662]],[[64061,64061],"mapped",[24724]],[[64062,64062],"mapped",[24936]],[[64063,64063],"mapped",[24974]],[[64064,64064],"mapped",[25074]],[[64065,64065],"mapped",[25935]],[[64066,64066],"mapped",[26082]],[[64067,64067],"mapped",[26257]],[[64068,64068],"mapped",[26757]],[[64069,64069],"mapped",[28023]],[[64070,64070],"mapped",[28186]],[[64071,64071],"mapped",[28450]],[[64072,64072],"mapped",[29038]],[[64073,64073],"mapped",[29227]],[[64074,64074],"mapped",[29730]],[[64075,64075],"mapped",[30865]],[[64076,64076],"mapped",[31038]],[[64077,64077],"mapped",[31049]],[[64078,64078],"mapped",[31048]],[[64079,64079],"mapped",[31056]],[[64080,64080],"mapped",[31062]],[[64081,64081],"mapped",[31069]],[[64082,64082],"mapped",[31117]],[[64083,64083],"mapped",[31118]],[[64084,64084],"mapped",[31296]],[[64085,64085],"mapped",[31361]],[[64086,64086],"mapped",[31680]],[[64087,64087],"mapped",[32244]],[[64088,64088],"mapped",[32265]],[[64089,64089],"mapped",[32321]],[[64090,64090],"mapped",[32626]],[[64091,64091],"mapped",[32773]],[[64092,64092],"mapped",[33261]],[[64093,64094],"mapped",[33401]],[[64095,64095],"mapped",[33879]],[[64096,64096],"mapped",[35088]],[[64097,64097],"mapped",[35222]],[[64098,64098],"mapped",[35585]],[[64099,64099],"mapped",[35641]],[[64100,64100],"mapped",[36051]],[[64101,64101],"mapped",[36104]],[[64102,64102],"mapped",[36790]],[[64103,64103],"mapped",[36920]],[[64104,64104],"mapped",[38627]],[[64105,64105],"mapped",[38911]],[[64106,64106],"mapped",[38971]],[[64107,64107],"mapped",[24693]],[[64108,64108],"mapped",[148206]],[[64109,64109],"mapped",[33304]],[[64110,64111],"disallowed"],[[64112,64112],"mapped",[20006]],[[64113,64113],"mapped",[20917]],[[64114,64114],"mapped",[20840]],[[64115,64115],"mapped",[20352]],[[64116,64116],"mapped",[20805]],[[64117,64117],"mapped",[20864]],[[64118,64118],"mapped",[21191]],[[64119,64119],"mapped",[21242]],[[64120,64120],"mapped",[21917]],[[64121,64121],"mapped",[21845]],[[64122,64122],"mapped",[21913]],[[64123,64123],"mapped",[21986]],[[64124,64124],"mapped",[22618]],[[64125,64125],"mapped",[22707]],[[64126,64126],"mapped",[22852]],[[64127,64127],"mapped",[22868]],[[64128,64128],"mapped",[23138]],[[64129,64129],"mapped",[23336]],[[64130,64130],"mapped",[24274]],[[64131,64131],"mapped",[24281]],[[64132,64132],"mapped",[24425]],[[64133,64133],"mapped",[24493]],[[64134,64134],"mapped",[24792]],[[64135,64135],"mapped",[24910]],[[64136,64136],"mapped",[24840]],[[64137,64137],"mapped",[24974]],[[64138,64138],"mapped",[24928]],[[64139,64139],"mapped",[25074]],[[64140,64140],"mapped",[25140]],[[64141,64141],"mapped",[25540]],[[64142,64142],"mapped",[25628]],[[64143,64143],"mapped",[25682]],[[64144,64144],"mapped",[25942]],[[64145,64145],"mapped",[26228]],[[64146,64146],"mapped",[26391]],[[64147,64147],"mapped",[26395]],[[64148,64148],"mapped",[26454]],[[64149,64149],"mapped",[27513]],[[64150,64150],"mapped",[27578]],[[64151,64151],"mapped",[27969]],[[64152,64152],"mapped",[28379]],[[64153,64153],"mapped",[28363]],[[64154,64154],"mapped",[28450]],[[64155,64155],"mapped",[28702]],[[64156,64156],"mapped",[29038]],[[64157,64157],"mapped",[30631]],[[64158,64158],"mapped",[29237]],[[64159,64159],"mapped",[29359]],[[64160,64160],"mapped",[29482]],[[64161,64161],"mapped",[29809]],[[64162,64162],"mapped",[29958]],[[64163,64163],"mapped",[30011]],[[64164,64164],"mapped",[30237]],[[64165,64165],"mapped",[30239]],[[64166,64166],"mapped",[30410]],[[64167,64167],"mapped",[30427]],[[64168,64168],"mapped",[30452]],[[64169,64169],"mapped",[30538]],[[64170,64170],"mapped",[30528]],[[64171,64171],"mapped",[30924]],[[64172,64172],"mapped",[31409]],[[64173,64173],"mapped",[31680]],[[64174,64174],"mapped",[31867]],[[64175,64175],"mapped",[32091]],[[64176,64176],"mapped",[32244]],[[64177,64177],"mapped",[32574]],[[64178,64178],"mapped",[32773]],[[64179,64179],"mapped",[33618]],[[64180,64180],"mapped",[33775]],[[64181,64181],"mapped",[34681]],[[64182,64182],"mapped",[35137]],[[64183,64183],"mapped",[35206]],[[64184,64184],"mapped",[35222]],[[64185,64185],"mapped",[35519]],[[64186,64186],"mapped",[35576]],[[64187,64187],"mapped",[35531]],[[64188,64188],"mapped",[35585]],[[64189,64189],"mapped",[35582]],[[64190,64190],"mapped",[35565]],[[64191,64191],"mapped",[35641]],[[64192,64192],"mapped",[35722]],[[64193,64193],"mapped",[36104]],[[64194,64194],"mapped",[36664]],[[64195,64195],"mapped",[36978]],[[64196,64196],"mapped",[37273]],[[64197,64197],"mapped",[37494]],[[64198,64198],"mapped",[38524]],[[64199,64199],"mapped",[38627]],[[64200,64200],"mapped",[38742]],[[64201,64201],"mapped",[38875]],[[64202,64202],"mapped",[38911]],[[64203,64203],"mapped",[38923]],[[64204,64204],"mapped",[38971]],[[64205,64205],"mapped",[39698]],[[64206,64206],"mapped",[40860]],[[64207,64207],"mapped",[141386]],[[64208,64208],"mapped",[141380]],[[64209,64209],"mapped",[144341]],[[64210,64210],"mapped",[15261]],[[64211,64211],"mapped",[16408]],[[64212,64212],"mapped",[16441]],[[64213,64213],"mapped",[152137]],[[64214,64214],"mapped",[154832]],[[64215,64215],"mapped",[163539]],[[64216,64216],"mapped",[40771]],[[64217,64217],"mapped",[40846]],[[64218,64255],"disallowed"],[[64256,64256],"mapped",[102,102]],[[64257,64257],"mapped",[102,105]],[[64258,64258],"mapped",[102,108]],[[64259,64259],"mapped",[102,102,105]],[[64260,64260],"mapped",[102,102,108]],[[64261,64262],"mapped",[115,116]],[[64263,64274],"disallowed"],[[64275,64275],"mapped",[1396,1398]],[[64276,64276],"mapped",[1396,1381]],[[64277,64277],"mapped",[1396,1387]],[[64278,64278],"mapped",[1406,1398]],[[64279,64279],"mapped",[1396,1389]],[[64280,64284],"disallowed"],[[64285,64285],"mapped",[1497,1460]],[[64286,64286],"valid"],[[64287,64287],"mapped",[1522,1463]],[[64288,64288],"mapped",[1506]],[[64289,64289],"mapped",[1488]],[[64290,64290],"mapped",[1491]],[[64291,64291],"mapped",[1492]],[[64292,64292],"mapped",[1499]],[[64293,64293],"mapped",[1500]],[[64294,64294],"mapped",[1501]],[[64295,64295],"mapped",[1512]],[[64296,64296],"mapped",[1514]],[[64297,64297],"disallowed_STD3_mapped",[43]],[[64298,64298],"mapped",[1513,1473]],[[64299,64299],"mapped",[1513,1474]],[[64300,64300],"mapped",[1513,1468,1473]],[[64301,64301],"mapped",[1513,1468,1474]],[[64302,64302],"mapped",[1488,1463]],[[64303,64303],"mapped",[1488,1464]],[[64304,64304],"mapped",[1488,1468]],[[64305,64305],"mapped",[1489,1468]],[[64306,64306],"mapped",[1490,1468]],[[64307,64307],"mapped",[1491,1468]],[[64308,64308],"mapped",[1492,1468]],[[64309,64309],"mapped",[1493,1468]],[[64310,64310],"mapped",[1494,1468]],[[64311,64311],"disallowed"],[[64312,64312],"mapped",[1496,1468]],[[64313,64313],"mapped",[1497,1468]],[[64314,64314],"mapped",[1498,1468]],[[64315,64315],"mapped",[1499,1468]],[[64316,64316],"mapped",[1500,1468]],[[64317,64317],"disallowed"],[[64318,64318],"mapped",[1502,1468]],[[64319,64319],"disallowed"],[[64320,64320],"mapped",[1504,1468]],[[64321,64321],"mapped",[1505,1468]],[[64322,64322],"disallowed"],[[64323,64323],"mapped",[1507,1468]],[[64324,64324],"mapped",[1508,1468]],[[64325,64325],"disallowed"],[[64326,64326],"mapped",[1510,1468]],[[64327,64327],"mapped",[1511,1468]],[[64328,64328],"mapped",[1512,1468]],[[64329,64329],"mapped",[1513,1468]],[[64330,64330],"mapped",[1514,1468]],[[64331,64331],"mapped",[1493,1465]],[[64332,64332],"mapped",[1489,1471]],[[64333,64333],"mapped",[1499,1471]],[[64334,64334],"mapped",[1508,1471]],[[64335,64335],"mapped",[1488,1500]],[[64336,64337],"mapped",[1649]],[[64338,64341],"mapped",[1659]],[[64342,64345],"mapped",[1662]],[[64346,64349],"mapped",[1664]],[[64350,64353],"mapped",[1658]],[[64354,64357],"mapped",[1663]],[[64358,64361],"mapped",[1657]],[[64362,64365],"mapped",[1700]],[[64366,64369],"mapped",[1702]],[[64370,64373],"mapped",[1668]],[[64374,64377],"mapped",[1667]],[[64378,64381],"mapped",[1670]],[[64382,64385],"mapped",[1671]],[[64386,64387],"mapped",[1677]],[[64388,64389],"mapped",[1676]],[[64390,64391],"mapped",[1678]],[[64392,64393],"mapped",[1672]],[[64394,64395],"mapped",[1688]],[[64396,64397],"mapped",[1681]],[[64398,64401],"mapped",[1705]],[[64402,64405],"mapped",[1711]],[[64406,64409],"mapped",[1715]],[[64410,64413],"mapped",[1713]],[[64414,64415],"mapped",[1722]],[[64416,64419],"mapped",[1723]],[[64420,64421],"mapped",[1728]],[[64422,64425],"mapped",[1729]],[[64426,64429],"mapped",[1726]],[[64430,64431],"mapped",[1746]],[[64432,64433],"mapped",[1747]],[[64434,64449],"valid",[],"NV8"],[[64450,64466],"disallowed"],[[64467,64470],"mapped",[1709]],[[64471,64472],"mapped",[1735]],[[64473,64474],"mapped",[1734]],[[64475,64476],"mapped",[1736]],[[64477,64477],"mapped",[1735,1652]],[[64478,64479],"mapped",[1739]],[[64480,64481],"mapped",[1733]],[[64482,64483],"mapped",[1737]],[[64484,64487],"mapped",[1744]],[[64488,64489],"mapped",[1609]],[[64490,64491],"mapped",[1574,1575]],[[64492,64493],"mapped",[1574,1749]],[[64494,64495],"mapped",[1574,1608]],[[64496,64497],"mapped",[1574,1735]],[[64498,64499],"mapped",[1574,1734]],[[64500,64501],"mapped",[1574,1736]],[[64502,64504],"mapped",[1574,1744]],[[64505,64507],"mapped",[1574,1609]],[[64508,64511],"mapped",[1740]],[[64512,64512],"mapped",[1574,1580]],[[64513,64513],"mapped",[1574,1581]],[[64514,64514],"mapped",[1574,1605]],[[64515,64515],"mapped",[1574,1609]],[[64516,64516],"mapped",[1574,1610]],[[64517,64517],"mapped",[1576,1580]],[[64518,64518],"mapped",[1576,1581]],[[64519,64519],"mapped",[1576,1582]],[[64520,64520],"mapped",[1576,1605]],[[64521,64521],"mapped",[1576,1609]],[[64522,64522],"mapped",[1576,1610]],[[64523,64523],"mapped",[1578,1580]],[[64524,64524],"mapped",[1578,1581]],[[64525,64525],"mapped",[1578,1582]],[[64526,64526],"mapped",[1578,1605]],[[64527,64527],"mapped",[1578,1609]],[[64528,64528],"mapped",[1578,1610]],[[64529,64529],"mapped",[1579,1580]],[[64530,64530],"mapped",[1579,1605]],[[64531,64531],"mapped",[1579,1609]],[[64532,64532],"mapped",[1579,1610]],[[64533,64533],"mapped",[1580,1581]],[[64534,64534],"mapped",[1580,1605]],[[64535,64535],"mapped",[1581,1580]],[[64536,64536],"mapped",[1581,1605]],[[64537,64537],"mapped",[1582,1580]],[[64538,64538],"mapped",[1582,1581]],[[64539,64539],"mapped",[1582,1605]],[[64540,64540],"mapped",[1587,1580]],[[64541,64541],"mapped",[1587,1581]],[[64542,64542],"mapped",[1587,1582]],[[64543,64543],"mapped",[1587,1605]],[[64544,64544],"mapped",[1589,1581]],[[64545,64545],"mapped",[1589,1605]],[[64546,64546],"mapped",[1590,1580]],[[64547,64547],"mapped",[1590,1581]],[[64548,64548],"mapped",[1590,1582]],[[64549,64549],"mapped",[1590,1605]],[[64550,64550],"mapped",[1591,1581]],[[64551,64551],"mapped",[1591,1605]],[[64552,64552],"mapped",[1592,1605]],[[64553,64553],"mapped",[1593,1580]],[[64554,64554],"mapped",[1593,1605]],[[64555,64555],"mapped",[1594,1580]],[[64556,64556],"mapped",[1594,1605]],[[64557,64557],"mapped",[1601,1580]],[[64558,64558],"mapped",[1601,1581]],[[64559,64559],"mapped",[1601,1582]],[[64560,64560],"mapped",[1601,1605]],[[64561,64561],"mapped",[1601,1609]],[[64562,64562],"mapped",[1601,1610]],[[64563,64563],"mapped",[1602,1581]],[[64564,64564],"mapped",[1602,1605]],[[64565,64565],"mapped",[1602,1609]],[[64566,64566],"mapped",[1602,1610]],[[64567,64567],"mapped",[1603,1575]],[[64568,64568],"mapped",[1603,1580]],[[64569,64569],"mapped",[1603,1581]],[[64570,64570],"mapped",[1603,1582]],[[64571,64571],"mapped",[1603,1604]],[[64572,64572],"mapped",[1603,1605]],[[64573,64573],"mapped",[1603,1609]],[[64574,64574],"mapped",[1603,1610]],[[64575,64575],"mapped",[1604,1580]],[[64576,64576],"mapped",[1604,1581]],[[64577,64577],"mapped",[1604,1582]],[[64578,64578],"mapped",[1604,1605]],[[64579,64579],"mapped",[1604,1609]],[[64580,64580],"mapped",[1604,1610]],[[64581,64581],"mapped",[1605,1580]],[[64582,64582],"mapped",[1605,1581]],[[64583,64583],"mapped",[1605,1582]],[[64584,64584],"mapped",[1605,1605]],[[64585,64585],"mapped",[1605,1609]],[[64586,64586],"mapped",[1605,1610]],[[64587,64587],"mapped",[1606,1580]],[[64588,64588],"mapped",[1606,1581]],[[64589,64589],"mapped",[1606,1582]],[[64590,64590],"mapped",[1606,1605]],[[64591,64591],"mapped",[1606,1609]],[[64592,64592],"mapped",[1606,1610]],[[64593,64593],"mapped",[1607,1580]],[[64594,64594],"mapped",[1607,1605]],[[64595,64595],"mapped",[1607,1609]],[[64596,64596],"mapped",[1607,1610]],[[64597,64597],"mapped",[1610,1580]],[[64598,64598],"mapped",[1610,1581]],[[64599,64599],"mapped",[1610,1582]],[[64600,64600],"mapped",[1610,1605]],[[64601,64601],"mapped",[1610,1609]],[[64602,64602],"mapped",[1610,1610]],[[64603,64603],"mapped",[1584,1648]],[[64604,64604],"mapped",[1585,1648]],[[64605,64605],"mapped",[1609,1648]],[[64606,64606],"disallowed_STD3_mapped",[32,1612,1617]],[[64607,64607],"disallowed_STD3_mapped",[32,1613,1617]],[[64608,64608],"disallowed_STD3_mapped",[32,1614,1617]],[[64609,64609],"disallowed_STD3_mapped",[32,1615,1617]],[[64610,64610],"disallowed_STD3_mapped",[32,1616,1617]],[[64611,64611],"disallowed_STD3_mapped",[32,1617,1648]],[[64612,64612],"mapped",[1574,1585]],[[64613,64613],"mapped",[1574,1586]],[[64614,64614],"mapped",[1574,1605]],[[64615,64615],"mapped",[1574,1606]],[[64616,64616],"mapped",[1574,1609]],[[64617,64617],"mapped",[1574,1610]],[[64618,64618],"mapped",[1576,1585]],[[64619,64619],"mapped",[1576,1586]],[[64620,64620],"mapped",[1576,1605]],[[64621,64621],"mapped",[1576,1606]],[[64622,64622],"mapped",[1576,1609]],[[64623,64623],"mapped",[1576,1610]],[[64624,64624],"mapped",[1578,1585]],[[64625,64625],"mapped",[1578,1586]],[[64626,64626],"mapped",[1578,1605]],[[64627,64627],"mapped",[1578,1606]],[[64628,64628],"mapped",[1578,1609]],[[64629,64629],"mapped",[1578,1610]],[[64630,64630],"mapped",[1579,1585]],[[64631,64631],"mapped",[1579,1586]],[[64632,64632],"mapped",[1579,1605]],[[64633,64633],"mapped",[1579,1606]],[[64634,64634],"mapped",[1579,1609]],[[64635,64635],"mapped",[1579,1610]],[[64636,64636],"mapped",[1601,1609]],[[64637,64637],"mapped",[1601,1610]],[[64638,64638],"mapped",[1602,1609]],[[64639,64639],"mapped",[1602,1610]],[[64640,64640],"mapped",[1603,1575]],[[64641,64641],"mapped",[1603,1604]],[[64642,64642],"mapped",[1603,1605]],[[64643,64643],"mapped",[1603,1609]],[[64644,64644],"mapped",[1603,1610]],[[64645,64645],"mapped",[1604,1605]],[[64646,64646],"mapped",[1604,1609]],[[64647,64647],"mapped",[1604,1610]],[[64648,64648],"mapped",[1605,1575]],[[64649,64649],"mapped",[1605,1605]],[[64650,64650],"mapped",[1606,1585]],[[64651,64651],"mapped",[1606,1586]],[[64652,64652],"mapped",[1606,1605]],[[64653,64653],"mapped",[1606,1606]],[[64654,64654],"mapped",[1606,1609]],[[64655,64655],"mapped",[1606,1610]],[[64656,64656],"mapped",[1609,1648]],[[64657,64657],"mapped",[1610,1585]],[[64658,64658],"mapped",[1610,1586]],[[64659,64659],"mapped",[1610,1605]],[[64660,64660],"mapped",[1610,1606]],[[64661,64661],"mapped",[1610,1609]],[[64662,64662],"mapped",[1610,1610]],[[64663,64663],"mapped",[1574,1580]],[[64664,64664],"mapped",[1574,1581]],[[64665,64665],"mapped",[1574,1582]],[[64666,64666],"mapped",[1574,1605]],[[64667,64667],"mapped",[1574,1607]],[[64668,64668],"mapped",[1576,1580]],[[64669,64669],"mapped",[1576,1581]],[[64670,64670],"mapped",[1576,1582]],[[64671,64671],"mapped",[1576,1605]],[[64672,64672],"mapped",[1576,1607]],[[64673,64673],"mapped",[1578,1580]],[[64674,64674],"mapped",[1578,1581]],[[64675,64675],"mapped",[1578,1582]],[[64676,64676],"mapped",[1578,1605]],[[64677,64677],"mapped",[1578,1607]],[[64678,64678],"mapped",[1579,1605]],[[64679,64679],"mapped",[1580,1581]],[[64680,64680],"mapped",[1580,1605]],[[64681,64681],"mapped",[1581,1580]],[[64682,64682],"mapped",[1581,1605]],[[64683,64683],"mapped",[1582,1580]],[[64684,64684],"mapped",[1582,1605]],[[64685,64685],"mapped",[1587,1580]],[[64686,64686],"mapped",[1587,1581]],[[64687,64687],"mapped",[1587,1582]],[[64688,64688],"mapped",[1587,1605]],[[64689,64689],"mapped",[1589,1581]],[[64690,64690],"mapped",[1589,1582]],[[64691,64691],"mapped",[1589,1605]],[[64692,64692],"mapped",[1590,1580]],[[64693,64693],"mapped",[1590,1581]],[[64694,64694],"mapped",[1590,1582]],[[64695,64695],"mapped",[1590,1605]],[[64696,64696],"mapped",[1591,1581]],[[64697,64697],"mapped",[1592,1605]],[[64698,64698],"mapped",[1593,1580]],[[64699,64699],"mapped",[1593,1605]],[[64700,64700],"mapped",[1594,1580]],[[64701,64701],"mapped",[1594,1605]],[[64702,64702],"mapped",[1601,1580]],[[64703,64703],"mapped",[1601,1581]],[[64704,64704],"mapped",[1601,1582]],[[64705,64705],"mapped",[1601,1605]],[[64706,64706],"mapped",[1602,1581]],[[64707,64707],"mapped",[1602,1605]],[[64708,64708],"mapped",[1603,1580]],[[64709,64709],"mapped",[1603,1581]],[[64710,64710],"mapped",[1603,1582]],[[64711,64711],"mapped",[1603,1604]],[[64712,64712],"mapped",[1603,1605]],[[64713,64713],"mapped",[1604,1580]],[[64714,64714],"mapped",[1604,1581]],[[64715,64715],"mapped",[1604,1582]],[[64716,64716],"mapped",[1604,1605]],[[64717,64717],"mapped",[1604,1607]],[[64718,64718],"mapped",[1605,1580]],[[64719,64719],"mapped",[1605,1581]],[[64720,64720],"mapped",[1605,1582]],[[64721,64721],"mapped",[1605,1605]],[[64722,64722],"mapped",[1606,1580]],[[64723,64723],"mapped",[1606,1581]],[[64724,64724],"mapped",[1606,1582]],[[64725,64725],"mapped",[1606,1605]],[[64726,64726],"mapped",[1606,1607]],[[64727,64727],"mapped",[1607,1580]],[[64728,64728],"mapped",[1607,1605]],[[64729,64729],"mapped",[1607,1648]],[[64730,64730],"mapped",[1610,1580]],[[64731,64731],"mapped",[1610,1581]],[[64732,64732],"mapped",[1610,1582]],[[64733,64733],"mapped",[1610,1605]],[[64734,64734],"mapped",[1610,1607]],[[64735,64735],"mapped",[1574,1605]],[[64736,64736],"mapped",[1574,1607]],[[64737,64737],"mapped",[1576,1605]],[[64738,64738],"mapped",[1576,1607]],[[64739,64739],"mapped",[1578,1605]],[[64740,64740],"mapped",[1578,1607]],[[64741,64741],"mapped",[1579,1605]],[[64742,64742],"mapped",[1579,1607]],[[64743,64743],"mapped",[1587,1605]],[[64744,64744],"mapped",[1587,1607]],[[64745,64745],"mapped",[1588,1605]],[[64746,64746],"mapped",[1588,1607]],[[64747,64747],"mapped",[1603,1604]],[[64748,64748],"mapped",[1603,1605]],[[64749,64749],"mapped",[1604,1605]],[[64750,64750],"mapped",[1606,1605]],[[64751,64751],"mapped",[1606,1607]],[[64752,64752],"mapped",[1610,1605]],[[64753,64753],"mapped",[1610,1607]],[[64754,64754],"mapped",[1600,1614,1617]],[[64755,64755],"mapped",[1600,1615,1617]],[[64756,64756],"mapped",[1600,1616,1617]],[[64757,64757],"mapped",[1591,1609]],[[64758,64758],"mapped",[1591,1610]],[[64759,64759],"mapped",[1593,1609]],[[64760,64760],"mapped",[1593,1610]],[[64761,64761],"mapped",[1594,1609]],[[64762,64762],"mapped",[1594,1610]],[[64763,64763],"mapped",[1587,1609]],[[64764,64764],"mapped",[1587,1610]],[[64765,64765],"mapped",[1588,1609]],[[64766,64766],"mapped",[1588,1610]],[[64767,64767],"mapped",[1581,1609]],[[64768,64768],"mapped",[1581,1610]],[[64769,64769],"mapped",[1580,1609]],[[64770,64770],"mapped",[1580,1610]],[[64771,64771],"mapped",[1582,1609]],[[64772,64772],"mapped",[1582,1610]],[[64773,64773],"mapped",[1589,1609]],[[64774,64774],"mapped",[1589,1610]],[[64775,64775],"mapped",[1590,1609]],[[64776,64776],"mapped",[1590,1610]],[[64777,64777],"mapped",[1588,1580]],[[64778,64778],"mapped",[1588,1581]],[[64779,64779],"mapped",[1588,1582]],[[64780,64780],"mapped",[1588,1605]],[[64781,64781],"mapped",[1588,1585]],[[64782,64782],"mapped",[1587,1585]],[[64783,64783],"mapped",[1589,1585]],[[64784,64784],"mapped",[1590,1585]],[[64785,64785],"mapped",[1591,1609]],[[64786,64786],"mapped",[1591,1610]],[[64787,64787],"mapped",[1593,1609]],[[64788,64788],"mapped",[1593,1610]],[[64789,64789],"mapped",[1594,1609]],[[64790,64790],"mapped",[1594,1610]],[[64791,64791],"mapped",[1587,1609]],[[64792,64792],"mapped",[1587,1610]],[[64793,64793],"mapped",[1588,1609]],[[64794,64794],"mapped",[1588,1610]],[[64795,64795],"mapped",[1581,1609]],[[64796,64796],"mapped",[1581,1610]],[[64797,64797],"mapped",[1580,1609]],[[64798,64798],"mapped",[1580,1610]],[[64799,64799],"mapped",[1582,1609]],[[64800,64800],"mapped",[1582,1610]],[[64801,64801],"mapped",[1589,1609]],[[64802,64802],"mapped",[1589,1610]],[[64803,64803],"mapped",[1590,1609]],[[64804,64804],"mapped",[1590,1610]],[[64805,64805],"mapped",[1588,1580]],[[64806,64806],"mapped",[1588,1581]],[[64807,64807],"mapped",[1588,1582]],[[64808,64808],"mapped",[1588,1605]],[[64809,64809],"mapped",[1588,1585]],[[64810,64810],"mapped",[1587,1585]],[[64811,64811],"mapped",[1589,1585]],[[64812,64812],"mapped",[1590,1585]],[[64813,64813],"mapped",[1588,1580]],[[64814,64814],"mapped",[1588,1581]],[[64815,64815],"mapped",[1588,1582]],[[64816,64816],"mapped",[1588,1605]],[[64817,64817],"mapped",[1587,1607]],[[64818,64818],"mapped",[1588,1607]],[[64819,64819],"mapped",[1591,1605]],[[64820,64820],"mapped",[1587,1580]],[[64821,64821],"mapped",[1587,1581]],[[64822,64822],"mapped",[1587,1582]],[[64823,64823],"mapped",[1588,1580]],[[64824,64824],"mapped",[1588,1581]],[[64825,64825],"mapped",[1588,1582]],[[64826,64826],"mapped",[1591,1605]],[[64827,64827],"mapped",[1592,1605]],[[64828,64829],"mapped",[1575,1611]],[[64830,64831],"valid",[],"NV8"],[[64832,64847],"disallowed"],[[64848,64848],"mapped",[1578,1580,1605]],[[64849,64850],"mapped",[1578,1581,1580]],[[64851,64851],"mapped",[1578,1581,1605]],[[64852,64852],"mapped",[1578,1582,1605]],[[64853,64853],"mapped",[1578,1605,1580]],[[64854,64854],"mapped",[1578,1605,1581]],[[64855,64855],"mapped",[1578,1605,1582]],[[64856,64857],"mapped",[1580,1605,1581]],[[64858,64858],"mapped",[1581,1605,1610]],[[64859,64859],"mapped",[1581,1605,1609]],[[64860,64860],"mapped",[1587,1581,1580]],[[64861,64861],"mapped",[1587,1580,1581]],[[64862,64862],"mapped",[1587,1580,1609]],[[64863,64864],"mapped",[1587,1605,1581]],[[64865,64865],"mapped",[1587,1605,1580]],[[64866,64867],"mapped",[1587,1605,1605]],[[64868,64869],"mapped",[1589,1581,1581]],[[64870,64870],"mapped",[1589,1605,1605]],[[64871,64872],"mapped",[1588,1581,1605]],[[64873,64873],"mapped",[1588,1580,1610]],[[64874,64875],"mapped",[1588,1605,1582]],[[64876,64877],"mapped",[1588,1605,1605]],[[64878,64878],"mapped",[1590,1581,1609]],[[64879,64880],"mapped",[1590,1582,1605]],[[64881,64882],"mapped",[1591,1605,1581]],[[64883,64883],"mapped",[1591,1605,1605]],[[64884,64884],"mapped",[1591,1605,1610]],[[64885,64885],"mapped",[1593,1580,1605]],[[64886,64887],"mapped",[1593,1605,1605]],[[64888,64888],"mapped",[1593,1605,1609]],[[64889,64889],"mapped",[1594,1605,1605]],[[64890,64890],"mapped",[1594,1605,1610]],[[64891,64891],"mapped",[1594,1605,1609]],[[64892,64893],"mapped",[1601,1582,1605]],[[64894,64894],"mapped",[1602,1605,1581]],[[64895,64895],"mapped",[1602,1605,1605]],[[64896,64896],"mapped",[1604,1581,1605]],[[64897,64897],"mapped",[1604,1581,1610]],[[64898,64898],"mapped",[1604,1581,1609]],[[64899,64900],"mapped",[1604,1580,1580]],[[64901,64902],"mapped",[1604,1582,1605]],[[64903,64904],"mapped",[1604,1605,1581]],[[64905,64905],"mapped",[1605,1581,1580]],[[64906,64906],"mapped",[1605,1581,1605]],[[64907,64907],"mapped",[1605,1581,1610]],[[64908,64908],"mapped",[1605,1580,1581]],[[64909,64909],"mapped",[1605,1580,1605]],[[64910,64910],"mapped",[1605,1582,1580]],[[64911,64911],"mapped",[1605,1582,1605]],[[64912,64913],"disallowed"],[[64914,64914],"mapped",[1605,1580,1582]],[[64915,64915],"mapped",[1607,1605,1580]],[[64916,64916],"mapped",[1607,1605,1605]],[[64917,64917],"mapped",[1606,1581,1605]],[[64918,64918],"mapped",[1606,1581,1609]],[[64919,64920],"mapped",[1606,1580,1605]],[[64921,64921],"mapped",[1606,1580,1609]],[[64922,64922],"mapped",[1606,1605,1610]],[[64923,64923],"mapped",[1606,1605,1609]],[[64924,64925],"mapped",[1610,1605,1605]],[[64926,64926],"mapped",[1576,1582,1610]],[[64927,64927],"mapped",[1578,1580,1610]],[[64928,64928],"mapped",[1578,1580,1609]],[[64929,64929],"mapped",[1578,1582,1610]],[[64930,64930],"mapped",[1578,1582,1609]],[[64931,64931],"mapped",[1578,1605,1610]],[[64932,64932],"mapped",[1578,1605,1609]],[[64933,64933],"mapped",[1580,1605,1610]],[[64934,64934],"mapped",[1580,1581,1609]],[[64935,64935],"mapped",[1580,1605,1609]],[[64936,64936],"mapped",[1587,1582,1609]],[[64937,64937],"mapped",[1589,1581,1610]],[[64938,64938],"mapped",[1588,1581,1610]],[[64939,64939],"mapped",[1590,1581,1610]],[[64940,64940],"mapped",[1604,1580,1610]],[[64941,64941],"mapped",[1604,1605,1610]],[[64942,64942],"mapped",[1610,1581,1610]],[[64943,64943],"mapped",[1610,1580,1610]],[[64944,64944],"mapped",[1610,1605,1610]],[[64945,64945],"mapped",[1605,1605,1610]],[[64946,64946],"mapped",[1602,1605,1610]],[[64947,64947],"mapped",[1606,1581,1610]],[[64948,64948],"mapped",[1602,1605,1581]],[[64949,64949],"mapped",[1604,1581,1605]],[[64950,64950],"mapped",[1593,1605,1610]],[[64951,64951],"mapped",[1603,1605,1610]],[[64952,64952],"mapped",[1606,1580,1581]],[[64953,64953],"mapped",[1605,1582,1610]],[[64954,64954],"mapped",[1604,1580,1605]],[[64955,64955],"mapped",[1603,1605,1605]],[[64956,64956],"mapped",[1604,1580,1605]],[[64957,64957],"mapped",[1606,1580,1581]],[[64958,64958],"mapped",[1580,1581,1610]],[[64959,64959],"mapped",[1581,1580,1610]],[[64960,64960],"mapped",[1605,1580,1610]],[[64961,64961],"mapped",[1601,1605,1610]],[[64962,64962],"mapped",[1576,1581,1610]],[[64963,64963],"mapped",[1603,1605,1605]],[[64964,64964],"mapped",[1593,1580,1605]],[[64965,64965],"mapped",[1589,1605,1605]],[[64966,64966],"mapped",[1587,1582,1610]],[[64967,64967],"mapped",[1606,1580,1610]],[[64968,64975],"disallowed"],[[64976,65007],"disallowed"],[[65008,65008],"mapped",[1589,1604,1746]],[[65009,65009],"mapped",[1602,1604,1746]],[[65010,65010],"mapped",[1575,1604,1604,1607]],[[65011,65011],"mapped",[1575,1603,1576,1585]],[[65012,65012],"mapped",[1605,1581,1605,1583]],[[65013,65013],"mapped",[1589,1604,1593,1605]],[[65014,65014],"mapped",[1585,1587,1608,1604]],[[65015,65015],"mapped",[1593,1604,1610,1607]],[[65016,65016],"mapped",[1608,1587,1604,1605]],[[65017,65017],"mapped",[1589,1604,1609]],[[65018,65018],"disallowed_STD3_mapped",[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605]],[[65019,65019],"disallowed_STD3_mapped",[1580,1604,32,1580,1604,1575,1604,1607]],[[65020,65020],"mapped",[1585,1740,1575,1604]],[[65021,65021],"valid",[],"NV8"],[[65022,65023],"disallowed"],[[65024,65039],"ignored"],[[65040,65040],"disallowed_STD3_mapped",[44]],[[65041,65041],"mapped",[12289]],[[65042,65042],"disallowed"],[[65043,65043],"disallowed_STD3_mapped",[58]],[[65044,65044],"disallowed_STD3_mapped",[59]],[[65045,65045],"disallowed_STD3_mapped",[33]],[[65046,65046],"disallowed_STD3_mapped",[63]],[[65047,65047],"mapped",[12310]],[[65048,65048],"mapped",[12311]],[[65049,65049],"disallowed"],[[65050,65055],"disallowed"],[[65056,65059],"valid"],[[65060,65062],"valid"],[[65063,65069],"valid"],[[65070,65071],"valid"],[[65072,65072],"disallowed"],[[65073,65073],"mapped",[8212]],[[65074,65074],"mapped",[8211]],[[65075,65076],"disallowed_STD3_mapped",[95]],[[65077,65077],"disallowed_STD3_mapped",[40]],[[65078,65078],"disallowed_STD3_mapped",[41]],[[65079,65079],"disallowed_STD3_mapped",[123]],[[65080,65080],"disallowed_STD3_mapped",[125]],[[65081,65081],"mapped",[12308]],[[65082,65082],"mapped",[12309]],[[65083,65083],"mapped",[12304]],[[65084,65084],"mapped",[12305]],[[65085,65085],"mapped",[12298]],[[65086,65086],"mapped",[12299]],[[65087,65087],"mapped",[12296]],[[65088,65088],"mapped",[12297]],[[65089,65089],"mapped",[12300]],[[65090,65090],"mapped",[12301]],[[65091,65091],"mapped",[12302]],[[65092,65092],"mapped",[12303]],[[65093,65094],"valid",[],"NV8"],[[65095,65095],"disallowed_STD3_mapped",[91]],[[65096,65096],"disallowed_STD3_mapped",[93]],[[65097,65100],"disallowed_STD3_mapped",[32,773]],[[65101,65103],"disallowed_STD3_mapped",[95]],[[65104,65104],"disallowed_STD3_mapped",[44]],[[65105,65105],"mapped",[12289]],[[65106,65106],"disallowed"],[[65107,65107],"disallowed"],[[65108,65108],"disallowed_STD3_mapped",[59]],[[65109,65109],"disallowed_STD3_mapped",[58]],[[65110,65110],"disallowed_STD3_mapped",[63]],[[65111,65111],"disallowed_STD3_mapped",[33]],[[65112,65112],"mapped",[8212]],[[65113,65113],"disallowed_STD3_mapped",[40]],[[65114,65114],"disallowed_STD3_mapped",[41]],[[65115,65115],"disallowed_STD3_mapped",[123]],[[65116,65116],"disallowed_STD3_mapped",[125]],[[65117,65117],"mapped",[12308]],[[65118,65118],"mapped",[12309]],[[65119,65119],"disallowed_STD3_mapped",[35]],[[65120,65120],"disallowed_STD3_mapped",[38]],[[65121,65121],"disallowed_STD3_mapped",[42]],[[65122,65122],"disallowed_STD3_mapped",[43]],[[65123,65123],"mapped",[45]],[[65124,65124],"disallowed_STD3_mapped",[60]],[[65125,65125],"disallowed_STD3_mapped",[62]],[[65126,65126],"disallowed_STD3_mapped",[61]],[[65127,65127],"disallowed"],[[65128,65128],"disallowed_STD3_mapped",[92]],[[65129,65129],"disallowed_STD3_mapped",[36]],[[65130,65130],"disallowed_STD3_mapped",[37]],[[65131,65131],"disallowed_STD3_mapped",[64]],[[65132,65135],"disallowed"],[[65136,65136],"disallowed_STD3_mapped",[32,1611]],[[65137,65137],"mapped",[1600,1611]],[[65138,65138],"disallowed_STD3_mapped",[32,1612]],[[65139,65139],"valid"],[[65140,65140],"disallowed_STD3_mapped",[32,1613]],[[65141,65141],"disallowed"],[[65142,65142],"disallowed_STD3_mapped",[32,1614]],[[65143,65143],"mapped",[1600,1614]],[[65144,65144],"disallowed_STD3_mapped",[32,1615]],[[65145,65145],"mapped",[1600,1615]],[[65146,65146],"disallowed_STD3_mapped",[32,1616]],[[65147,65147],"mapped",[1600,1616]],[[65148,65148],"disallowed_STD3_mapped",[32,1617]],[[65149,65149],"mapped",[1600,1617]],[[65150,65150],"disallowed_STD3_mapped",[32,1618]],[[65151,65151],"mapped",[1600,1618]],[[65152,65152],"mapped",[1569]],[[65153,65154],"mapped",[1570]],[[65155,65156],"mapped",[1571]],[[65157,65158],"mapped",[1572]],[[65159,65160],"mapped",[1573]],[[65161,65164],"mapped",[1574]],[[65165,65166],"mapped",[1575]],[[65167,65170],"mapped",[1576]],[[65171,65172],"mapped",[1577]],[[65173,65176],"mapped",[1578]],[[65177,65180],"mapped",[1579]],[[65181,65184],"mapped",[1580]],[[65185,65188],"mapped",[1581]],[[65189,65192],"mapped",[1582]],[[65193,65194],"mapped",[1583]],[[65195,65196],"mapped",[1584]],[[65197,65198],"mapped",[1585]],[[65199,65200],"mapped",[1586]],[[65201,65204],"mapped",[1587]],[[65205,65208],"mapped",[1588]],[[65209,65212],"mapped",[1589]],[[65213,65216],"mapped",[1590]],[[65217,65220],"mapped",[1591]],[[65221,65224],"mapped",[1592]],[[65225,65228],"mapped",[1593]],[[65229,65232],"mapped",[1594]],[[65233,65236],"mapped",[1601]],[[65237,65240],"mapped",[1602]],[[65241,65244],"mapped",[1603]],[[65245,65248],"mapped",[1604]],[[65249,65252],"mapped",[1605]],[[65253,65256],"mapped",[1606]],[[65257,65260],"mapped",[1607]],[[65261,65262],"mapped",[1608]],[[65263,65264],"mapped",[1609]],[[65265,65268],"mapped",[1610]],[[65269,65270],"mapped",[1604,1570]],[[65271,65272],"mapped",[1604,1571]],[[65273,65274],"mapped",[1604,1573]],[[65275,65276],"mapped",[1604,1575]],[[65277,65278],"disallowed"],[[65279,65279],"ignored"],[[65280,65280],"disallowed"],[[65281,65281],"disallowed_STD3_mapped",[33]],[[65282,65282],"disallowed_STD3_mapped",[34]],[[65283,65283],"disallowed_STD3_mapped",[35]],[[65284,65284],"disallowed_STD3_mapped",[36]],[[65285,65285],"disallowed_STD3_mapped",[37]],[[65286,65286],"disallowed_STD3_mapped",[38]],[[65287,65287],"disallowed_STD3_mapped",[39]],[[65288,65288],"disallowed_STD3_mapped",[40]],[[65289,65289],"disallowed_STD3_mapped",[41]],[[65290,65290],"disallowed_STD3_mapped",[42]],[[65291,65291],"disallowed_STD3_mapped",[43]],[[65292,65292],"disallowed_STD3_mapped",[44]],[[65293,65293],"mapped",[45]],[[65294,65294],"mapped",[46]],[[65295,65295],"disallowed_STD3_mapped",[47]],[[65296,65296],"mapped",[48]],[[65297,65297],"mapped",[49]],[[65298,65298],"mapped",[50]],[[65299,65299],"mapped",[51]],[[65300,65300],"mapped",[52]],[[65301,65301],"mapped",[53]],[[65302,65302],"mapped",[54]],[[65303,65303],"mapped",[55]],[[65304,65304],"mapped",[56]],[[65305,65305],"mapped",[57]],[[65306,65306],"disallowed_STD3_mapped",[58]],[[65307,65307],"disallowed_STD3_mapped",[59]],[[65308,65308],"disallowed_STD3_mapped",[60]],[[65309,65309],"disallowed_STD3_mapped",[61]],[[65310,65310],"disallowed_STD3_mapped",[62]],[[65311,65311],"disallowed_STD3_mapped",[63]],[[65312,65312],"disallowed_STD3_mapped",[64]],[[65313,65313],"mapped",[97]],[[65314,65314],"mapped",[98]],[[65315,65315],"mapped",[99]],[[65316,65316],"mapped",[100]],[[65317,65317],"mapped",[101]],[[65318,65318],"mapped",[102]],[[65319,65319],"mapped",[103]],[[65320,65320],"mapped",[104]],[[65321,65321],"mapped",[105]],[[65322,65322],"mapped",[106]],[[65323,65323],"mapped",[107]],[[65324,65324],"mapped",[108]],[[65325,65325],"mapped",[109]],[[65326,65326],"mapped",[110]],[[65327,65327],"mapped",[111]],[[65328,65328],"mapped",[112]],[[65329,65329],"mapped",[113]],[[65330,65330],"mapped",[114]],[[65331,65331],"mapped",[115]],[[65332,65332],"mapped",[116]],[[65333,65333],"mapped",[117]],[[65334,65334],"mapped",[118]],[[65335,65335],"mapped",[119]],[[65336,65336],"mapped",[120]],[[65337,65337],"mapped",[121]],[[65338,65338],"mapped",[122]],[[65339,65339],"disallowed_STD3_mapped",[91]],[[65340,65340],"disallowed_STD3_mapped",[92]],[[65341,65341],"disallowed_STD3_mapped",[93]],[[65342,65342],"disallowed_STD3_mapped",[94]],[[65343,65343],"disallowed_STD3_mapped",[95]],[[65344,65344],"disallowed_STD3_mapped",[96]],[[65345,65345],"mapped",[97]],[[65346,65346],"mapped",[98]],[[65347,65347],"mapped",[99]],[[65348,65348],"mapped",[100]],[[65349,65349],"mapped",[101]],[[65350,65350],"mapped",[102]],[[65351,65351],"mapped",[103]],[[65352,65352],"mapped",[104]],[[65353,65353],"mapped",[105]],[[65354,65354],"mapped",[106]],[[65355,65355],"mapped",[107]],[[65356,65356],"mapped",[108]],[[65357,65357],"mapped",[109]],[[65358,65358],"mapped",[110]],[[65359,65359],"mapped",[111]],[[65360,65360],"mapped",[112]],[[65361,65361],"mapped",[113]],[[65362,65362],"mapped",[114]],[[65363,65363],"mapped",[115]],[[65364,65364],"mapped",[116]],[[65365,65365],"mapped",[117]],[[65366,65366],"mapped",[118]],[[65367,65367],"mapped",[119]],[[65368,65368],"mapped",[120]],[[65369,65369],"mapped",[121]],[[65370,65370],"mapped",[122]],[[65371,65371],"disallowed_STD3_mapped",[123]],[[65372,65372],"disallowed_STD3_mapped",[124]],[[65373,65373],"disallowed_STD3_mapped",[125]],[[65374,65374],"disallowed_STD3_mapped",[126]],[[65375,65375],"mapped",[10629]],[[65376,65376],"mapped",[10630]],[[65377,65377],"mapped",[46]],[[65378,65378],"mapped",[12300]],[[65379,65379],"mapped",[12301]],[[65380,65380],"mapped",[12289]],[[65381,65381],"mapped",[12539]],[[65382,65382],"mapped",[12530]],[[65383,65383],"mapped",[12449]],[[65384,65384],"mapped",[12451]],[[65385,65385],"mapped",[12453]],[[65386,65386],"mapped",[12455]],[[65387,65387],"mapped",[12457]],[[65388,65388],"mapped",[12515]],[[65389,65389],"mapped",[12517]],[[65390,65390],"mapped",[12519]],[[65391,65391],"mapped",[12483]],[[65392,65392],"mapped",[12540]],[[65393,65393],"mapped",[12450]],[[65394,65394],"mapped",[12452]],[[65395,65395],"mapped",[12454]],[[65396,65396],"mapped",[12456]],[[65397,65397],"mapped",[12458]],[[65398,65398],"mapped",[12459]],[[65399,65399],"mapped",[12461]],[[65400,65400],"mapped",[12463]],[[65401,65401],"mapped",[12465]],[[65402,65402],"mapped",[12467]],[[65403,65403],"mapped",[12469]],[[65404,65404],"mapped",[12471]],[[65405,65405],"mapped",[12473]],[[65406,65406],"mapped",[12475]],[[65407,65407],"mapped",[12477]],[[65408,65408],"mapped",[12479]],[[65409,65409],"mapped",[12481]],[[65410,65410],"mapped",[12484]],[[65411,65411],"mapped",[12486]],[[65412,65412],"mapped",[12488]],[[65413,65413],"mapped",[12490]],[[65414,65414],"mapped",[12491]],[[65415,65415],"mapped",[12492]],[[65416,65416],"mapped",[12493]],[[65417,65417],"mapped",[12494]],[[65418,65418],"mapped",[12495]],[[65419,65419],"mapped",[12498]],[[65420,65420],"mapped",[12501]],[[65421,65421],"mapped",[12504]],[[65422,65422],"mapped",[12507]],[[65423,65423],"mapped",[12510]],[[65424,65424],"mapped",[12511]],[[65425,65425],"mapped",[12512]],[[65426,65426],"mapped",[12513]],[[65427,65427],"mapped",[12514]],[[65428,65428],"mapped",[12516]],[[65429,65429],"mapped",[12518]],[[65430,65430],"mapped",[12520]],[[65431,65431],"mapped",[12521]],[[65432,65432],"mapped",[12522]],[[65433,65433],"mapped",[12523]],[[65434,65434],"mapped",[12524]],[[65435,65435],"mapped",[12525]],[[65436,65436],"mapped",[12527]],[[65437,65437],"mapped",[12531]],[[65438,65438],"mapped",[12441]],[[65439,65439],"mapped",[12442]],[[65440,65440],"disallowed"],[[65441,65441],"mapped",[4352]],[[65442,65442],"mapped",[4353]],[[65443,65443],"mapped",[4522]],[[65444,65444],"mapped",[4354]],[[65445,65445],"mapped",[4524]],[[65446,65446],"mapped",[4525]],[[65447,65447],"mapped",[4355]],[[65448,65448],"mapped",[4356]],[[65449,65449],"mapped",[4357]],[[65450,65450],"mapped",[4528]],[[65451,65451],"mapped",[4529]],[[65452,65452],"mapped",[4530]],[[65453,65453],"mapped",[4531]],[[65454,65454],"mapped",[4532]],[[65455,65455],"mapped",[4533]],[[65456,65456],"mapped",[4378]],[[65457,65457],"mapped",[4358]],[[65458,65458],"mapped",[4359]],[[65459,65459],"mapped",[4360]],[[65460,65460],"mapped",[4385]],[[65461,65461],"mapped",[4361]],[[65462,65462],"mapped",[4362]],[[65463,65463],"mapped",[4363]],[[65464,65464],"mapped",[4364]],[[65465,65465],"mapped",[4365]],[[65466,65466],"mapped",[4366]],[[65467,65467],"mapped",[4367]],[[65468,65468],"mapped",[4368]],[[65469,65469],"mapped",[4369]],[[65470,65470],"mapped",[4370]],[[65471,65473],"disallowed"],[[65474,65474],"mapped",[4449]],[[65475,65475],"mapped",[4450]],[[65476,65476],"mapped",[4451]],[[65477,65477],"mapped",[4452]],[[65478,65478],"mapped",[4453]],[[65479,65479],"mapped",[4454]],[[65480,65481],"disallowed"],[[65482,65482],"mapped",[4455]],[[65483,65483],"mapped",[4456]],[[65484,65484],"mapped",[4457]],[[65485,65485],"mapped",[4458]],[[65486,65486],"mapped",[4459]],[[65487,65487],"mapped",[4460]],[[65488,65489],"disallowed"],[[65490,65490],"mapped",[4461]],[[65491,65491],"mapped",[4462]],[[65492,65492],"mapped",[4463]],[[65493,65493],"mapped",[4464]],[[65494,65494],"mapped",[4465]],[[65495,65495],"mapped",[4466]],[[65496,65497],"disallowed"],[[65498,65498],"mapped",[4467]],[[65499,65499],"mapped",[4468]],[[65500,65500],"mapped",[4469]],[[65501,65503],"disallowed"],[[65504,65504],"mapped",[162]],[[65505,65505],"mapped",[163]],[[65506,65506],"mapped",[172]],[[65507,65507],"disallowed_STD3_mapped",[32,772]],[[65508,65508],"mapped",[166]],[[65509,65509],"mapped",[165]],[[65510,65510],"mapped",[8361]],[[65511,65511],"disallowed"],[[65512,65512],"mapped",[9474]],[[65513,65513],"mapped",[8592]],[[65514,65514],"mapped",[8593]],[[65515,65515],"mapped",[8594]],[[65516,65516],"mapped",[8595]],[[65517,65517],"mapped",[9632]],[[65518,65518],"mapped",[9675]],[[65519,65528],"disallowed"],[[65529,65531],"disallowed"],[[65532,65532],"disallowed"],[[65533,65533],"disallowed"],[[65534,65535],"disallowed"],[[65536,65547],"valid"],[[65548,65548],"disallowed"],[[65549,65574],"valid"],[[65575,65575],"disallowed"],[[65576,65594],"valid"],[[65595,65595],"disallowed"],[[65596,65597],"valid"],[[65598,65598],"disallowed"],[[65599,65613],"valid"],[[65614,65615],"disallowed"],[[65616,65629],"valid"],[[65630,65663],"disallowed"],[[65664,65786],"valid"],[[65787,65791],"disallowed"],[[65792,65794],"valid",[],"NV8"],[[65795,65798],"disallowed"],[[65799,65843],"valid",[],"NV8"],[[65844,65846],"disallowed"],[[65847,65855],"valid",[],"NV8"],[[65856,65930],"valid",[],"NV8"],[[65931,65932],"valid",[],"NV8"],[[65933,65935],"disallowed"],[[65936,65947],"valid",[],"NV8"],[[65948,65951],"disallowed"],[[65952,65952],"valid",[],"NV8"],[[65953,65999],"disallowed"],[[66000,66044],"valid",[],"NV8"],[[66045,66045],"valid"],[[66046,66175],"disallowed"],[[66176,66204],"valid"],[[66205,66207],"disallowed"],[[66208,66256],"valid"],[[66257,66271],"disallowed"],[[66272,66272],"valid"],[[66273,66299],"valid",[],"NV8"],[[66300,66303],"disallowed"],[[66304,66334],"valid"],[[66335,66335],"valid"],[[66336,66339],"valid",[],"NV8"],[[66340,66351],"disallowed"],[[66352,66368],"valid"],[[66369,66369],"valid",[],"NV8"],[[66370,66377],"valid"],[[66378,66378],"valid",[],"NV8"],[[66379,66383],"disallowed"],[[66384,66426],"valid"],[[66427,66431],"disallowed"],[[66432,66461],"valid"],[[66462,66462],"disallowed"],[[66463,66463],"valid",[],"NV8"],[[66464,66499],"valid"],[[66500,66503],"disallowed"],[[66504,66511],"valid"],[[66512,66517],"valid",[],"NV8"],[[66518,66559],"disallowed"],[[66560,66560],"mapped",[66600]],[[66561,66561],"mapped",[66601]],[[66562,66562],"mapped",[66602]],[[66563,66563],"mapped",[66603]],[[66564,66564],"mapped",[66604]],[[66565,66565],"mapped",[66605]],[[66566,66566],"mapped",[66606]],[[66567,66567],"mapped",[66607]],[[66568,66568],"mapped",[66608]],[[66569,66569],"mapped",[66609]],[[66570,66570],"mapped",[66610]],[[66571,66571],"mapped",[66611]],[[66572,66572],"mapped",[66612]],[[66573,66573],"mapped",[66613]],[[66574,66574],"mapped",[66614]],[[66575,66575],"mapped",[66615]],[[66576,66576],"mapped",[66616]],[[66577,66577],"mapped",[66617]],[[66578,66578],"mapped",[66618]],[[66579,66579],"mapped",[66619]],[[66580,66580],"mapped",[66620]],[[66581,66581],"mapped",[66621]],[[66582,66582],"mapped",[66622]],[[66583,66583],"mapped",[66623]],[[66584,66584],"mapped",[66624]],[[66585,66585],"mapped",[66625]],[[66586,66586],"mapped",[66626]],[[66587,66587],"mapped",[66627]],[[66588,66588],"mapped",[66628]],[[66589,66589],"mapped",[66629]],[[66590,66590],"mapped",[66630]],[[66591,66591],"mapped",[66631]],[[66592,66592],"mapped",[66632]],[[66593,66593],"mapped",[66633]],[[66594,66594],"mapped",[66634]],[[66595,66595],"mapped",[66635]],[[66596,66596],"mapped",[66636]],[[66597,66597],"mapped",[66637]],[[66598,66598],"mapped",[66638]],[[66599,66599],"mapped",[66639]],[[66600,66637],"valid"],[[66638,66717],"valid"],[[66718,66719],"disallowed"],[[66720,66729],"valid"],[[66730,66815],"disallowed"],[[66816,66855],"valid"],[[66856,66863],"disallowed"],[[66864,66915],"valid"],[[66916,66926],"disallowed"],[[66927,66927],"valid",[],"NV8"],[[66928,67071],"disallowed"],[[67072,67382],"valid"],[[67383,67391],"disallowed"],[[67392,67413],"valid"],[[67414,67423],"disallowed"],[[67424,67431],"valid"],[[67432,67583],"disallowed"],[[67584,67589],"valid"],[[67590,67591],"disallowed"],[[67592,67592],"valid"],[[67593,67593],"disallowed"],[[67594,67637],"valid"],[[67638,67638],"disallowed"],[[67639,67640],"valid"],[[67641,67643],"disallowed"],[[67644,67644],"valid"],[[67645,67646],"disallowed"],[[67647,67647],"valid"],[[67648,67669],"valid"],[[67670,67670],"disallowed"],[[67671,67679],"valid",[],"NV8"],[[67680,67702],"valid"],[[67703,67711],"valid",[],"NV8"],[[67712,67742],"valid"],[[67743,67750],"disallowed"],[[67751,67759],"valid",[],"NV8"],[[67760,67807],"disallowed"],[[67808,67826],"valid"],[[67827,67827],"disallowed"],[[67828,67829],"valid"],[[67830,67834],"disallowed"],[[67835,67839],"valid",[],"NV8"],[[67840,67861],"valid"],[[67862,67865],"valid",[],"NV8"],[[67866,67867],"valid",[],"NV8"],[[67868,67870],"disallowed"],[[67871,67871],"valid",[],"NV8"],[[67872,67897],"valid"],[[67898,67902],"disallowed"],[[67903,67903],"valid",[],"NV8"],[[67904,67967],"disallowed"],[[67968,68023],"valid"],[[68024,68027],"disallowed"],[[68028,68029],"valid",[],"NV8"],[[68030,68031],"valid"],[[68032,68047],"valid",[],"NV8"],[[68048,68049],"disallowed"],[[68050,68095],"valid",[],"NV8"],[[68096,68099],"valid"],[[68100,68100],"disallowed"],[[68101,68102],"valid"],[[68103,68107],"disallowed"],[[68108,68115],"valid"],[[68116,68116],"disallowed"],[[68117,68119],"valid"],[[68120,68120],"disallowed"],[[68121,68147],"valid"],[[68148,68151],"disallowed"],[[68152,68154],"valid"],[[68155,68158],"disallowed"],[[68159,68159],"valid"],[[68160,68167],"valid",[],"NV8"],[[68168,68175],"disallowed"],[[68176,68184],"valid",[],"NV8"],[[68185,68191],"disallowed"],[[68192,68220],"valid"],[[68221,68223],"valid",[],"NV8"],[[68224,68252],"valid"],[[68253,68255],"valid",[],"NV8"],[[68256,68287],"disallowed"],[[68288,68295],"valid"],[[68296,68296],"valid",[],"NV8"],[[68297,68326],"valid"],[[68327,68330],"disallowed"],[[68331,68342],"valid",[],"NV8"],[[68343,68351],"disallowed"],[[68352,68405],"valid"],[[68406,68408],"disallowed"],[[68409,68415],"valid",[],"NV8"],[[68416,68437],"valid"],[[68438,68439],"disallowed"],[[68440,68447],"valid",[],"NV8"],[[68448,68466],"valid"],[[68467,68471],"disallowed"],[[68472,68479],"valid",[],"NV8"],[[68480,68497],"valid"],[[68498,68504],"disallowed"],[[68505,68508],"valid",[],"NV8"],[[68509,68520],"disallowed"],[[68521,68527],"valid",[],"NV8"],[[68528,68607],"disallowed"],[[68608,68680],"valid"],[[68681,68735],"disallowed"],[[68736,68736],"mapped",[68800]],[[68737,68737],"mapped",[68801]],[[68738,68738],"mapped",[68802]],[[68739,68739],"mapped",[68803]],[[68740,68740],"mapped",[68804]],[[68741,68741],"mapped",[68805]],[[68742,68742],"mapped",[68806]],[[68743,68743],"mapped",[68807]],[[68744,68744],"mapped",[68808]],[[68745,68745],"mapped",[68809]],[[68746,68746],"mapped",[68810]],[[68747,68747],"mapped",[68811]],[[68748,68748],"mapped",[68812]],[[68749,68749],"mapped",[68813]],[[68750,68750],"mapped",[68814]],[[68751,68751],"mapped",[68815]],[[68752,68752],"mapped",[68816]],[[68753,68753],"mapped",[68817]],[[68754,68754],"mapped",[68818]],[[68755,68755],"mapped",[68819]],[[68756,68756],"mapped",[68820]],[[68757,68757],"mapped",[68821]],[[68758,68758],"mapped",[68822]],[[68759,68759],"mapped",[68823]],[[68760,68760],"mapped",[68824]],[[68761,68761],"mapped",[68825]],[[68762,68762],"mapped",[68826]],[[68763,68763],"mapped",[68827]],[[68764,68764],"mapped",[68828]],[[68765,68765],"mapped",[68829]],[[68766,68766],"mapped",[68830]],[[68767,68767],"mapped",[68831]],[[68768,68768],"mapped",[68832]],[[68769,68769],"mapped",[68833]],[[68770,68770],"mapped",[68834]],[[68771,68771],"mapped",[68835]],[[68772,68772],"mapped",[68836]],[[68773,68773],"mapped",[68837]],[[68774,68774],"mapped",[68838]],[[68775,68775],"mapped",[68839]],[[68776,68776],"mapped",[68840]],[[68777,68777],"mapped",[68841]],[[68778,68778],"mapped",[68842]],[[68779,68779],"mapped",[68843]],[[68780,68780],"mapped",[68844]],[[68781,68781],"mapped",[68845]],[[68782,68782],"mapped",[68846]],[[68783,68783],"mapped",[68847]],[[68784,68784],"mapped",[68848]],[[68785,68785],"mapped",[68849]],[[68786,68786],"mapped",[68850]],[[68787,68799],"disallowed"],[[68800,68850],"valid"],[[68851,68857],"disallowed"],[[68858,68863],"valid",[],"NV8"],[[68864,69215],"disallowed"],[[69216,69246],"valid",[],"NV8"],[[69247,69631],"disallowed"],[[69632,69702],"valid"],[[69703,69709],"valid",[],"NV8"],[[69710,69713],"disallowed"],[[69714,69733],"valid",[],"NV8"],[[69734,69743],"valid"],[[69744,69758],"disallowed"],[[69759,69759],"valid"],[[69760,69818],"valid"],[[69819,69820],"valid",[],"NV8"],[[69821,69821],"disallowed"],[[69822,69825],"valid",[],"NV8"],[[69826,69839],"disallowed"],[[69840,69864],"valid"],[[69865,69871],"disallowed"],[[69872,69881],"valid"],[[69882,69887],"disallowed"],[[69888,69940],"valid"],[[69941,69941],"disallowed"],[[69942,69951],"valid"],[[69952,69955],"valid",[],"NV8"],[[69956,69967],"disallowed"],[[69968,70003],"valid"],[[70004,70005],"valid",[],"NV8"],[[70006,70006],"valid"],[[70007,70015],"disallowed"],[[70016,70084],"valid"],[[70085,70088],"valid",[],"NV8"],[[70089,70089],"valid",[],"NV8"],[[70090,70092],"valid"],[[70093,70093],"valid",[],"NV8"],[[70094,70095],"disallowed"],[[70096,70105],"valid"],[[70106,70106],"valid"],[[70107,70107],"valid",[],"NV8"],[[70108,70108],"valid"],[[70109,70111],"valid",[],"NV8"],[[70112,70112],"disallowed"],[[70113,70132],"valid",[],"NV8"],[[70133,70143],"disallowed"],[[70144,70161],"valid"],[[70162,70162],"disallowed"],[[70163,70199],"valid"],[[70200,70205],"valid",[],"NV8"],[[70206,70271],"disallowed"],[[70272,70278],"valid"],[[70279,70279],"disallowed"],[[70280,70280],"valid"],[[70281,70281],"disallowed"],[[70282,70285],"valid"],[[70286,70286],"disallowed"],[[70287,70301],"valid"],[[70302,70302],"disallowed"],[[70303,70312],"valid"],[[70313,70313],"valid",[],"NV8"],[[70314,70319],"disallowed"],[[70320,70378],"valid"],[[70379,70383],"disallowed"],[[70384,70393],"valid"],[[70394,70399],"disallowed"],[[70400,70400],"valid"],[[70401,70403],"valid"],[[70404,70404],"disallowed"],[[70405,70412],"valid"],[[70413,70414],"disallowed"],[[70415,70416],"valid"],[[70417,70418],"disallowed"],[[70419,70440],"valid"],[[70441,70441],"disallowed"],[[70442,70448],"valid"],[[70449,70449],"disallowed"],[[70450,70451],"valid"],[[70452,70452],"disallowed"],[[70453,70457],"valid"],[[70458,70459],"disallowed"],[[70460,70468],"valid"],[[70469,70470],"disallowed"],[[70471,70472],"valid"],[[70473,70474],"disallowed"],[[70475,70477],"valid"],[[70478,70479],"disallowed"],[[70480,70480],"valid"],[[70481,70486],"disallowed"],[[70487,70487],"valid"],[[70488,70492],"disallowed"],[[70493,70499],"valid"],[[70500,70501],"disallowed"],[[70502,70508],"valid"],[[70509,70511],"disallowed"],[[70512,70516],"valid"],[[70517,70783],"disallowed"],[[70784,70853],"valid"],[[70854,70854],"valid",[],"NV8"],[[70855,70855],"valid"],[[70856,70863],"disallowed"],[[70864,70873],"valid"],[[70874,71039],"disallowed"],[[71040,71093],"valid"],[[71094,71095],"disallowed"],[[71096,71104],"valid"],[[71105,71113],"valid",[],"NV8"],[[71114,71127],"valid",[],"NV8"],[[71128,71133],"valid"],[[71134,71167],"disallowed"],[[71168,71232],"valid"],[[71233,71235],"valid",[],"NV8"],[[71236,71236],"valid"],[[71237,71247],"disallowed"],[[71248,71257],"valid"],[[71258,71295],"disallowed"],[[71296,71351],"valid"],[[71352,71359],"disallowed"],[[71360,71369],"valid"],[[71370,71423],"disallowed"],[[71424,71449],"valid"],[[71450,71452],"disallowed"],[[71453,71467],"valid"],[[71468,71471],"disallowed"],[[71472,71481],"valid"],[[71482,71487],"valid",[],"NV8"],[[71488,71839],"disallowed"],[[71840,71840],"mapped",[71872]],[[71841,71841],"mapped",[71873]],[[71842,71842],"mapped",[71874]],[[71843,71843],"mapped",[71875]],[[71844,71844],"mapped",[71876]],[[71845,71845],"mapped",[71877]],[[71846,71846],"mapped",[71878]],[[71847,71847],"mapped",[71879]],[[71848,71848],"mapped",[71880]],[[71849,71849],"mapped",[71881]],[[71850,71850],"mapped",[71882]],[[71851,71851],"mapped",[71883]],[[71852,71852],"mapped",[71884]],[[71853,71853],"mapped",[71885]],[[71854,71854],"mapped",[71886]],[[71855,71855],"mapped",[71887]],[[71856,71856],"mapped",[71888]],[[71857,71857],"mapped",[71889]],[[71858,71858],"mapped",[71890]],[[71859,71859],"mapped",[71891]],[[71860,71860],"mapped",[71892]],[[71861,71861],"mapped",[71893]],[[71862,71862],"mapped",[71894]],[[71863,71863],"mapped",[71895]],[[71864,71864],"mapped",[71896]],[[71865,71865],"mapped",[71897]],[[71866,71866],"mapped",[71898]],[[71867,71867],"mapped",[71899]],[[71868,71868],"mapped",[71900]],[[71869,71869],"mapped",[71901]],[[71870,71870],"mapped",[71902]],[[71871,71871],"mapped",[71903]],[[71872,71913],"valid"],[[71914,71922],"valid",[],"NV8"],[[71923,71934],"disallowed"],[[71935,71935],"valid"],[[71936,72383],"disallowed"],[[72384,72440],"valid"],[[72441,73727],"disallowed"],[[73728,74606],"valid"],[[74607,74648],"valid"],[[74649,74649],"valid"],[[74650,74751],"disallowed"],[[74752,74850],"valid",[],"NV8"],[[74851,74862],"valid",[],"NV8"],[[74863,74863],"disallowed"],[[74864,74867],"valid",[],"NV8"],[[74868,74868],"valid",[],"NV8"],[[74869,74879],"disallowed"],[[74880,75075],"valid"],[[75076,77823],"disallowed"],[[77824,78894],"valid"],[[78895,82943],"disallowed"],[[82944,83526],"valid"],[[83527,92159],"disallowed"],[[92160,92728],"valid"],[[92729,92735],"disallowed"],[[92736,92766],"valid"],[[92767,92767],"disallowed"],[[92768,92777],"valid"],[[92778,92781],"disallowed"],[[92782,92783],"valid",[],"NV8"],[[92784,92879],"disallowed"],[[92880,92909],"valid"],[[92910,92911],"disallowed"],[[92912,92916],"valid"],[[92917,92917],"valid",[],"NV8"],[[92918,92927],"disallowed"],[[92928,92982],"valid"],[[92983,92991],"valid",[],"NV8"],[[92992,92995],"valid"],[[92996,92997],"valid",[],"NV8"],[[92998,93007],"disallowed"],[[93008,93017],"valid"],[[93018,93018],"disallowed"],[[93019,93025],"valid",[],"NV8"],[[93026,93026],"disallowed"],[[93027,93047],"valid"],[[93048,93052],"disallowed"],[[93053,93071],"valid"],[[93072,93951],"disallowed"],[[93952,94020],"valid"],[[94021,94031],"disallowed"],[[94032,94078],"valid"],[[94079,94094],"disallowed"],[[94095,94111],"valid"],[[94112,110591],"disallowed"],[[110592,110593],"valid"],[[110594,113663],"disallowed"],[[113664,113770],"valid"],[[113771,113775],"disallowed"],[[113776,113788],"valid"],[[113789,113791],"disallowed"],[[113792,113800],"valid"],[[113801,113807],"disallowed"],[[113808,113817],"valid"],[[113818,113819],"disallowed"],[[113820,113820],"valid",[],"NV8"],[[113821,113822],"valid"],[[113823,113823],"valid",[],"NV8"],[[113824,113827],"ignored"],[[113828,118783],"disallowed"],[[118784,119029],"valid",[],"NV8"],[[119030,119039],"disallowed"],[[119040,119078],"valid",[],"NV8"],[[119079,119080],"disallowed"],[[119081,119081],"valid",[],"NV8"],[[119082,119133],"valid",[],"NV8"],[[119134,119134],"mapped",[119127,119141]],[[119135,119135],"mapped",[119128,119141]],[[119136,119136],"mapped",[119128,119141,119150]],[[119137,119137],"mapped",[119128,119141,119151]],[[119138,119138],"mapped",[119128,119141,119152]],[[119139,119139],"mapped",[119128,119141,119153]],[[119140,119140],"mapped",[119128,119141,119154]],[[119141,119154],"valid",[],"NV8"],[[119155,119162],"disallowed"],[[119163,119226],"valid",[],"NV8"],[[119227,119227],"mapped",[119225,119141]],[[119228,119228],"mapped",[119226,119141]],[[119229,119229],"mapped",[119225,119141,119150]],[[119230,119230],"mapped",[119226,119141,119150]],[[119231,119231],"mapped",[119225,119141,119151]],[[119232,119232],"mapped",[119226,119141,119151]],[[119233,119261],"valid",[],"NV8"],[[119262,119272],"valid",[],"NV8"],[[119273,119295],"disallowed"],[[119296,119365],"valid",[],"NV8"],[[119366,119551],"disallowed"],[[119552,119638],"valid",[],"NV8"],[[119639,119647],"disallowed"],[[119648,119665],"valid",[],"NV8"],[[119666,119807],"disallowed"],[[119808,119808],"mapped",[97]],[[119809,119809],"mapped",[98]],[[119810,119810],"mapped",[99]],[[119811,119811],"mapped",[100]],[[119812,119812],"mapped",[101]],[[119813,119813],"mapped",[102]],[[119814,119814],"mapped",[103]],[[119815,119815],"mapped",[104]],[[119816,119816],"mapped",[105]],[[119817,119817],"mapped",[106]],[[119818,119818],"mapped",[107]],[[119819,119819],"mapped",[108]],[[119820,119820],"mapped",[109]],[[119821,119821],"mapped",[110]],[[119822,119822],"mapped",[111]],[[119823,119823],"mapped",[112]],[[119824,119824],"mapped",[113]],[[119825,119825],"mapped",[114]],[[119826,119826],"mapped",[115]],[[119827,119827],"mapped",[116]],[[119828,119828],"mapped",[117]],[[119829,119829],"mapped",[118]],[[119830,119830],"mapped",[119]],[[119831,119831],"mapped",[120]],[[119832,119832],"mapped",[121]],[[119833,119833],"mapped",[122]],[[119834,119834],"mapped",[97]],[[119835,119835],"mapped",[98]],[[119836,119836],"mapped",[99]],[[119837,119837],"mapped",[100]],[[119838,119838],"mapped",[101]],[[119839,119839],"mapped",[102]],[[119840,119840],"mapped",[103]],[[119841,119841],"mapped",[104]],[[119842,119842],"mapped",[105]],[[119843,119843],"mapped",[106]],[[119844,119844],"mapped",[107]],[[119845,119845],"mapped",[108]],[[119846,119846],"mapped",[109]],[[119847,119847],"mapped",[110]],[[119848,119848],"mapped",[111]],[[119849,119849],"mapped",[112]],[[119850,119850],"mapped",[113]],[[119851,119851],"mapped",[114]],[[119852,119852],"mapped",[115]],[[119853,119853],"mapped",[116]],[[119854,119854],"mapped",[117]],[[119855,119855],"mapped",[118]],[[119856,119856],"mapped",[119]],[[119857,119857],"mapped",[120]],[[119858,119858],"mapped",[121]],[[119859,119859],"mapped",[122]],[[119860,119860],"mapped",[97]],[[119861,119861],"mapped",[98]],[[119862,119862],"mapped",[99]],[[119863,119863],"mapped",[100]],[[119864,119864],"mapped",[101]],[[119865,119865],"mapped",[102]],[[119866,119866],"mapped",[103]],[[119867,119867],"mapped",[104]],[[119868,119868],"mapped",[105]],[[119869,119869],"mapped",[106]],[[119870,119870],"mapped",[107]],[[119871,119871],"mapped",[108]],[[119872,119872],"mapped",[109]],[[119873,119873],"mapped",[110]],[[119874,119874],"mapped",[111]],[[119875,119875],"mapped",[112]],[[119876,119876],"mapped",[113]],[[119877,119877],"mapped",[114]],[[119878,119878],"mapped",[115]],[[119879,119879],"mapped",[116]],[[119880,119880],"mapped",[117]],[[119881,119881],"mapped",[118]],[[119882,119882],"mapped",[119]],[[119883,119883],"mapped",[120]],[[119884,119884],"mapped",[121]],[[119885,119885],"mapped",[122]],[[119886,119886],"mapped",[97]],[[119887,119887],"mapped",[98]],[[119888,119888],"mapped",[99]],[[119889,119889],"mapped",[100]],[[119890,119890],"mapped",[101]],[[119891,119891],"mapped",[102]],[[119892,119892],"mapped",[103]],[[119893,119893],"disallowed"],[[119894,119894],"mapped",[105]],[[119895,119895],"mapped",[106]],[[119896,119896],"mapped",[107]],[[119897,119897],"mapped",[108]],[[119898,119898],"mapped",[109]],[[119899,119899],"mapped",[110]],[[119900,119900],"mapped",[111]],[[119901,119901],"mapped",[112]],[[119902,119902],"mapped",[113]],[[119903,119903],"mapped",[114]],[[119904,119904],"mapped",[115]],[[119905,119905],"mapped",[116]],[[119906,119906],"mapped",[117]],[[119907,119907],"mapped",[118]],[[119908,119908],"mapped",[119]],[[119909,119909],"mapped",[120]],[[119910,119910],"mapped",[121]],[[119911,119911],"mapped",[122]],[[119912,119912],"mapped",[97]],[[119913,119913],"mapped",[98]],[[119914,119914],"mapped",[99]],[[119915,119915],"mapped",[100]],[[119916,119916],"mapped",[101]],[[119917,119917],"mapped",[102]],[[119918,119918],"mapped",[103]],[[119919,119919],"mapped",[104]],[[119920,119920],"mapped",[105]],[[119921,119921],"mapped",[106]],[[119922,119922],"mapped",[107]],[[119923,119923],"mapped",[108]],[[119924,119924],"mapped",[109]],[[119925,119925],"mapped",[110]],[[119926,119926],"mapped",[111]],[[119927,119927],"mapped",[112]],[[119928,119928],"mapped",[113]],[[119929,119929],"mapped",[114]],[[119930,119930],"mapped",[115]],[[119931,119931],"mapped",[116]],[[119932,119932],"mapped",[117]],[[119933,119933],"mapped",[118]],[[119934,119934],"mapped",[119]],[[119935,119935],"mapped",[120]],[[119936,119936],"mapped",[121]],[[119937,119937],"mapped",[122]],[[119938,119938],"mapped",[97]],[[119939,119939],"mapped",[98]],[[119940,119940],"mapped",[99]],[[119941,119941],"mapped",[100]],[[119942,119942],"mapped",[101]],[[119943,119943],"mapped",[102]],[[119944,119944],"mapped",[103]],[[119945,119945],"mapped",[104]],[[119946,119946],"mapped",[105]],[[119947,119947],"mapped",[106]],[[119948,119948],"mapped",[107]],[[119949,119949],"mapped",[108]],[[119950,119950],"mapped",[109]],[[119951,119951],"mapped",[110]],[[119952,119952],"mapped",[111]],[[119953,119953],"mapped",[112]],[[119954,119954],"mapped",[113]],[[119955,119955],"mapped",[114]],[[119956,119956],"mapped",[115]],[[119957,119957],"mapped",[116]],[[119958,119958],"mapped",[117]],[[119959,119959],"mapped",[118]],[[119960,119960],"mapped",[119]],[[119961,119961],"mapped",[120]],[[119962,119962],"mapped",[121]],[[119963,119963],"mapped",[122]],[[119964,119964],"mapped",[97]],[[119965,119965],"disallowed"],[[119966,119966],"mapped",[99]],[[119967,119967],"mapped",[100]],[[119968,119969],"disallowed"],[[119970,119970],"mapped",[103]],[[119971,119972],"disallowed"],[[119973,119973],"mapped",[106]],[[119974,119974],"mapped",[107]],[[119975,119976],"disallowed"],[[119977,119977],"mapped",[110]],[[119978,119978],"mapped",[111]],[[119979,119979],"mapped",[112]],[[119980,119980],"mapped",[113]],[[119981,119981],"disallowed"],[[119982,119982],"mapped",[115]],[[119983,119983],"mapped",[116]],[[119984,119984],"mapped",[117]],[[119985,119985],"mapped",[118]],[[119986,119986],"mapped",[119]],[[119987,119987],"mapped",[120]],[[119988,119988],"mapped",[121]],[[119989,119989],"mapped",[122]],[[119990,119990],"mapped",[97]],[[119991,119991],"mapped",[98]],[[119992,119992],"mapped",[99]],[[119993,119993],"mapped",[100]],[[119994,119994],"disallowed"],[[119995,119995],"mapped",[102]],[[119996,119996],"disallowed"],[[119997,119997],"mapped",[104]],[[119998,119998],"mapped",[105]],[[119999,119999],"mapped",[106]],[[120000,120000],"mapped",[107]],[[120001,120001],"mapped",[108]],[[120002,120002],"mapped",[109]],[[120003,120003],"mapped",[110]],[[120004,120004],"disallowed"],[[120005,120005],"mapped",[112]],[[120006,120006],"mapped",[113]],[[120007,120007],"mapped",[114]],[[120008,120008],"mapped",[115]],[[120009,120009],"mapped",[116]],[[120010,120010],"mapped",[117]],[[120011,120011],"mapped",[118]],[[120012,120012],"mapped",[119]],[[120013,120013],"mapped",[120]],[[120014,120014],"mapped",[121]],[[120015,120015],"mapped",[122]],[[120016,120016],"mapped",[97]],[[120017,120017],"mapped",[98]],[[120018,120018],"mapped",[99]],[[120019,120019],"mapped",[100]],[[120020,120020],"mapped",[101]],[[120021,120021],"mapped",[102]],[[120022,120022],"mapped",[103]],[[120023,120023],"mapped",[104]],[[120024,120024],"mapped",[105]],[[120025,120025],"mapped",[106]],[[120026,120026],"mapped",[107]],[[120027,120027],"mapped",[108]],[[120028,120028],"mapped",[109]],[[120029,120029],"mapped",[110]],[[120030,120030],"mapped",[111]],[[120031,120031],"mapped",[112]],[[120032,120032],"mapped",[113]],[[120033,120033],"mapped",[114]],[[120034,120034],"mapped",[115]],[[120035,120035],"mapped",[116]],[[120036,120036],"mapped",[117]],[[120037,120037],"mapped",[118]],[[120038,120038],"mapped",[119]],[[120039,120039],"mapped",[120]],[[120040,120040],"mapped",[121]],[[120041,120041],"mapped",[122]],[[120042,120042],"mapped",[97]],[[120043,120043],"mapped",[98]],[[120044,120044],"mapped",[99]],[[120045,120045],"mapped",[100]],[[120046,120046],"mapped",[101]],[[120047,120047],"mapped",[102]],[[120048,120048],"mapped",[103]],[[120049,120049],"mapped",[104]],[[120050,120050],"mapped",[105]],[[120051,120051],"mapped",[106]],[[120052,120052],"mapped",[107]],[[120053,120053],"mapped",[108]],[[120054,120054],"mapped",[109]],[[120055,120055],"mapped",[110]],[[120056,120056],"mapped",[111]],[[120057,120057],"mapped",[112]],[[120058,120058],"mapped",[113]],[[120059,120059],"mapped",[114]],[[120060,120060],"mapped",[115]],[[120061,120061],"mapped",[116]],[[120062,120062],"mapped",[117]],[[120063,120063],"mapped",[118]],[[120064,120064],"mapped",[119]],[[120065,120065],"mapped",[120]],[[120066,120066],"mapped",[121]],[[120067,120067],"mapped",[122]],[[120068,120068],"mapped",[97]],[[120069,120069],"mapped",[98]],[[120070,120070],"disallowed"],[[120071,120071],"mapped",[100]],[[120072,120072],"mapped",[101]],[[120073,120073],"mapped",[102]],[[120074,120074],"mapped",[103]],[[120075,120076],"disallowed"],[[120077,120077],"mapped",[106]],[[120078,120078],"mapped",[107]],[[120079,120079],"mapped",[108]],[[120080,120080],"mapped",[109]],[[120081,120081],"mapped",[110]],[[120082,120082],"mapped",[111]],[[120083,120083],"mapped",[112]],[[120084,120084],"mapped",[113]],[[120085,120085],"disallowed"],[[120086,120086],"mapped",[115]],[[120087,120087],"mapped",[116]],[[120088,120088],"mapped",[117]],[[120089,120089],"mapped",[118]],[[120090,120090],"mapped",[119]],[[120091,120091],"mapped",[120]],[[120092,120092],"mapped",[121]],[[120093,120093],"disallowed"],[[120094,120094],"mapped",[97]],[[120095,120095],"mapped",[98]],[[120096,120096],"mapped",[99]],[[120097,120097],"mapped",[100]],[[120098,120098],"mapped",[101]],[[120099,120099],"mapped",[102]],[[120100,120100],"mapped",[103]],[[120101,120101],"mapped",[104]],[[120102,120102],"mapped",[105]],[[120103,120103],"mapped",[106]],[[120104,120104],"mapped",[107]],[[120105,120105],"mapped",[108]],[[120106,120106],"mapped",[109]],[[120107,120107],"mapped",[110]],[[120108,120108],"mapped",[111]],[[120109,120109],"mapped",[112]],[[120110,120110],"mapped",[113]],[[120111,120111],"mapped",[114]],[[120112,120112],"mapped",[115]],[[120113,120113],"mapped",[116]],[[120114,120114],"mapped",[117]],[[120115,120115],"mapped",[118]],[[120116,120116],"mapped",[119]],[[120117,120117],"mapped",[120]],[[120118,120118],"mapped",[121]],[[120119,120119],"mapped",[122]],[[120120,120120],"mapped",[97]],[[120121,120121],"mapped",[98]],[[120122,120122],"disallowed"],[[120123,120123],"mapped",[100]],[[120124,120124],"mapped",[101]],[[120125,120125],"mapped",[102]],[[120126,120126],"mapped",[103]],[[120127,120127],"disallowed"],[[120128,120128],"mapped",[105]],[[120129,120129],"mapped",[106]],[[120130,120130],"mapped",[107]],[[120131,120131],"mapped",[108]],[[120132,120132],"mapped",[109]],[[120133,120133],"disallowed"],[[120134,120134],"mapped",[111]],[[120135,120137],"disallowed"],[[120138,120138],"mapped",[115]],[[120139,120139],"mapped",[116]],[[120140,120140],"mapped",[117]],[[120141,120141],"mapped",[118]],[[120142,120142],"mapped",[119]],[[120143,120143],"mapped",[120]],[[120144,120144],"mapped",[121]],[[120145,120145],"disallowed"],[[120146,120146],"mapped",[97]],[[120147,120147],"mapped",[98]],[[120148,120148],"mapped",[99]],[[120149,120149],"mapped",[100]],[[120150,120150],"mapped",[101]],[[120151,120151],"mapped",[102]],[[120152,120152],"mapped",[103]],[[120153,120153],"mapped",[104]],[[120154,120154],"mapped",[105]],[[120155,120155],"mapped",[106]],[[120156,120156],"mapped",[107]],[[120157,120157],"mapped",[108]],[[120158,120158],"mapped",[109]],[[120159,120159],"mapped",[110]],[[120160,120160],"mapped",[111]],[[120161,120161],"mapped",[112]],[[120162,120162],"mapped",[113]],[[120163,120163],"mapped",[114]],[[120164,120164],"mapped",[115]],[[120165,120165],"mapped",[116]],[[120166,120166],"mapped",[117]],[[120167,120167],"mapped",[118]],[[120168,120168],"mapped",[119]],[[120169,120169],"mapped",[120]],[[120170,120170],"mapped",[121]],[[120171,120171],"mapped",[122]],[[120172,120172],"mapped",[97]],[[120173,120173],"mapped",[98]],[[120174,120174],"mapped",[99]],[[120175,120175],"mapped",[100]],[[120176,120176],"mapped",[101]],[[120177,120177],"mapped",[102]],[[120178,120178],"mapped",[103]],[[120179,120179],"mapped",[104]],[[120180,120180],"mapped",[105]],[[120181,120181],"mapped",[106]],[[120182,120182],"mapped",[107]],[[120183,120183],"mapped",[108]],[[120184,120184],"mapped",[109]],[[120185,120185],"mapped",[110]],[[120186,120186],"mapped",[111]],[[120187,120187],"mapped",[112]],[[120188,120188],"mapped",[113]],[[120189,120189],"mapped",[114]],[[120190,120190],"mapped",[115]],[[120191,120191],"mapped",[116]],[[120192,120192],"mapped",[117]],[[120193,120193],"mapped",[118]],[[120194,120194],"mapped",[119]],[[120195,120195],"mapped",[120]],[[120196,120196],"mapped",[121]],[[120197,120197],"mapped",[122]],[[120198,120198],"mapped",[97]],[[120199,120199],"mapped",[98]],[[120200,120200],"mapped",[99]],[[120201,120201],"mapped",[100]],[[120202,120202],"mapped",[101]],[[120203,120203],"mapped",[102]],[[120204,120204],"mapped",[103]],[[120205,120205],"mapped",[104]],[[120206,120206],"mapped",[105]],[[120207,120207],"mapped",[106]],[[120208,120208],"mapped",[107]],[[120209,120209],"mapped",[108]],[[120210,120210],"mapped",[109]],[[120211,120211],"mapped",[110]],[[120212,120212],"mapped",[111]],[[120213,120213],"mapped",[112]],[[120214,120214],"mapped",[113]],[[120215,120215],"mapped",[114]],[[120216,120216],"mapped",[115]],[[120217,120217],"mapped",[116]],[[120218,120218],"mapped",[117]],[[120219,120219],"mapped",[118]],[[120220,120220],"mapped",[119]],[[120221,120221],"mapped",[120]],[[120222,120222],"mapped",[121]],[[120223,120223],"mapped",[122]],[[120224,120224],"mapped",[97]],[[120225,120225],"mapped",[98]],[[120226,120226],"mapped",[99]],[[120227,120227],"mapped",[100]],[[120228,120228],"mapped",[101]],[[120229,120229],"mapped",[102]],[[120230,120230],"mapped",[103]],[[120231,120231],"mapped",[104]],[[120232,120232],"mapped",[105]],[[120233,120233],"mapped",[106]],[[120234,120234],"mapped",[107]],[[120235,120235],"mapped",[108]],[[120236,120236],"mapped",[109]],[[120237,120237],"mapped",[110]],[[120238,120238],"mapped",[111]],[[120239,120239],"mapped",[112]],[[120240,120240],"mapped",[113]],[[120241,120241],"mapped",[114]],[[120242,120242],"mapped",[115]],[[120243,120243],"mapped",[116]],[[120244,120244],"mapped",[117]],[[120245,120245],"mapped",[118]],[[120246,120246],"mapped",[119]],[[120247,120247],"mapped",[120]],[[120248,120248],"mapped",[121]],[[120249,120249],"mapped",[122]],[[120250,120250],"mapped",[97]],[[120251,120251],"mapped",[98]],[[120252,120252],"mapped",[99]],[[120253,120253],"mapped",[100]],[[120254,120254],"mapped",[101]],[[120255,120255],"mapped",[102]],[[120256,120256],"mapped",[103]],[[120257,120257],"mapped",[104]],[[120258,120258],"mapped",[105]],[[120259,120259],"mapped",[106]],[[120260,120260],"mapped",[107]],[[120261,120261],"mapped",[108]],[[120262,120262],"mapped",[109]],[[120263,120263],"mapped",[110]],[[120264,120264],"mapped",[111]],[[120265,120265],"mapped",[112]],[[120266,120266],"mapped",[113]],[[120267,120267],"mapped",[114]],[[120268,120268],"mapped",[115]],[[120269,120269],"mapped",[116]],[[120270,120270],"mapped",[117]],[[120271,120271],"mapped",[118]],[[120272,120272],"mapped",[119]],[[120273,120273],"mapped",[120]],[[120274,120274],"mapped",[121]],[[120275,120275],"mapped",[122]],[[120276,120276],"mapped",[97]],[[120277,120277],"mapped",[98]],[[120278,120278],"mapped",[99]],[[120279,120279],"mapped",[100]],[[120280,120280],"mapped",[101]],[[120281,120281],"mapped",[102]],[[120282,120282],"mapped",[103]],[[120283,120283],"mapped",[104]],[[120284,120284],"mapped",[105]],[[120285,120285],"mapped",[106]],[[120286,120286],"mapped",[107]],[[120287,120287],"mapped",[108]],[[120288,120288],"mapped",[109]],[[120289,120289],"mapped",[110]],[[120290,120290],"mapped",[111]],[[120291,120291],"mapped",[112]],[[120292,120292],"mapped",[113]],[[120293,120293],"mapped",[114]],[[120294,120294],"mapped",[115]],[[120295,120295],"mapped",[116]],[[120296,120296],"mapped",[117]],[[120297,120297],"mapped",[118]],[[120298,120298],"mapped",[119]],[[120299,120299],"mapped",[120]],[[120300,120300],"mapped",[121]],[[120301,120301],"mapped",[122]],[[120302,120302],"mapped",[97]],[[120303,120303],"mapped",[98]],[[120304,120304],"mapped",[99]],[[120305,120305],"mapped",[100]],[[120306,120306],"mapped",[101]],[[120307,120307],"mapped",[102]],[[120308,120308],"mapped",[103]],[[120309,120309],"mapped",[104]],[[120310,120310],"mapped",[105]],[[120311,120311],"mapped",[106]],[[120312,120312],"mapped",[107]],[[120313,120313],"mapped",[108]],[[120314,120314],"mapped",[109]],[[120315,120315],"mapped",[110]],[[120316,120316],"mapped",[111]],[[120317,120317],"mapped",[112]],[[120318,120318],"mapped",[113]],[[120319,120319],"mapped",[114]],[[120320,120320],"mapped",[115]],[[120321,120321],"mapped",[116]],[[120322,120322],"mapped",[117]],[[120323,120323],"mapped",[118]],[[120324,120324],"mapped",[119]],[[120325,120325],"mapped",[120]],[[120326,120326],"mapped",[121]],[[120327,120327],"mapped",[122]],[[120328,120328],"mapped",[97]],[[120329,120329],"mapped",[98]],[[120330,120330],"mapped",[99]],[[120331,120331],"mapped",[100]],[[120332,120332],"mapped",[101]],[[120333,120333],"mapped",[102]],[[120334,120334],"mapped",[103]],[[120335,120335],"mapped",[104]],[[120336,120336],"mapped",[105]],[[120337,120337],"mapped",[106]],[[120338,120338],"mapped",[107]],[[120339,120339],"mapped",[108]],[[120340,120340],"mapped",[109]],[[120341,120341],"mapped",[110]],[[120342,120342],"mapped",[111]],[[120343,120343],"mapped",[112]],[[120344,120344],"mapped",[113]],[[120345,120345],"mapped",[114]],[[120346,120346],"mapped",[115]],[[120347,120347],"mapped",[116]],[[120348,120348],"mapped",[117]],[[120349,120349],"mapped",[118]],[[120350,120350],"mapped",[119]],[[120351,120351],"mapped",[120]],[[120352,120352],"mapped",[121]],[[120353,120353],"mapped",[122]],[[120354,120354],"mapped",[97]],[[120355,120355],"mapped",[98]],[[120356,120356],"mapped",[99]],[[120357,120357],"mapped",[100]],[[120358,120358],"mapped",[101]],[[120359,120359],"mapped",[102]],[[120360,120360],"mapped",[103]],[[120361,120361],"mapped",[104]],[[120362,120362],"mapped",[105]],[[120363,120363],"mapped",[106]],[[120364,120364],"mapped",[107]],[[120365,120365],"mapped",[108]],[[120366,120366],"mapped",[109]],[[120367,120367],"mapped",[110]],[[120368,120368],"mapped",[111]],[[120369,120369],"mapped",[112]],[[120370,120370],"mapped",[113]],[[120371,120371],"mapped",[114]],[[120372,120372],"mapped",[115]],[[120373,120373],"mapped",[116]],[[120374,120374],"mapped",[117]],[[120375,120375],"mapped",[118]],[[120376,120376],"mapped",[119]],[[120377,120377],"mapped",[120]],[[120378,120378],"mapped",[121]],[[120379,120379],"mapped",[122]],[[120380,120380],"mapped",[97]],[[120381,120381],"mapped",[98]],[[120382,120382],"mapped",[99]],[[120383,120383],"mapped",[100]],[[120384,120384],"mapped",[101]],[[120385,120385],"mapped",[102]],[[120386,120386],"mapped",[103]],[[120387,120387],"mapped",[104]],[[120388,120388],"mapped",[105]],[[120389,120389],"mapped",[106]],[[120390,120390],"mapped",[107]],[[120391,120391],"mapped",[108]],[[120392,120392],"mapped",[109]],[[120393,120393],"mapped",[110]],[[120394,120394],"mapped",[111]],[[120395,120395],"mapped",[112]],[[120396,120396],"mapped",[113]],[[120397,120397],"mapped",[114]],[[120398,120398],"mapped",[115]],[[120399,120399],"mapped",[116]],[[120400,120400],"mapped",[117]],[[120401,120401],"mapped",[118]],[[120402,120402],"mapped",[119]],[[120403,120403],"mapped",[120]],[[120404,120404],"mapped",[121]],[[120405,120405],"mapped",[122]],[[120406,120406],"mapped",[97]],[[120407,120407],"mapped",[98]],[[120408,120408],"mapped",[99]],[[120409,120409],"mapped",[100]],[[120410,120410],"mapped",[101]],[[120411,120411],"mapped",[102]],[[120412,120412],"mapped",[103]],[[120413,120413],"mapped",[104]],[[120414,120414],"mapped",[105]],[[120415,120415],"mapped",[106]],[[120416,120416],"mapped",[107]],[[120417,120417],"mapped",[108]],[[120418,120418],"mapped",[109]],[[120419,120419],"mapped",[110]],[[120420,120420],"mapped",[111]],[[120421,120421],"mapped",[112]],[[120422,120422],"mapped",[113]],[[120423,120423],"mapped",[114]],[[120424,120424],"mapped",[115]],[[120425,120425],"mapped",[116]],[[120426,120426],"mapped",[117]],[[120427,120427],"mapped",[118]],[[120428,120428],"mapped",[119]],[[120429,120429],"mapped",[120]],[[120430,120430],"mapped",[121]],[[120431,120431],"mapped",[122]],[[120432,120432],"mapped",[97]],[[120433,120433],"mapped",[98]],[[120434,120434],"mapped",[99]],[[120435,120435],"mapped",[100]],[[120436,120436],"mapped",[101]],[[120437,120437],"mapped",[102]],[[120438,120438],"mapped",[103]],[[120439,120439],"mapped",[104]],[[120440,120440],"mapped",[105]],[[120441,120441],"mapped",[106]],[[120442,120442],"mapped",[107]],[[120443,120443],"mapped",[108]],[[120444,120444],"mapped",[109]],[[120445,120445],"mapped",[110]],[[120446,120446],"mapped",[111]],[[120447,120447],"mapped",[112]],[[120448,120448],"mapped",[113]],[[120449,120449],"mapped",[114]],[[120450,120450],"mapped",[115]],[[120451,120451],"mapped",[116]],[[120452,120452],"mapped",[117]],[[120453,120453],"mapped",[118]],[[120454,120454],"mapped",[119]],[[120455,120455],"mapped",[120]],[[120456,120456],"mapped",[121]],[[120457,120457],"mapped",[122]],[[120458,120458],"mapped",[97]],[[120459,120459],"mapped",[98]],[[120460,120460],"mapped",[99]],[[120461,120461],"mapped",[100]],[[120462,120462],"mapped",[101]],[[120463,120463],"mapped",[102]],[[120464,120464],"mapped",[103]],[[120465,120465],"mapped",[104]],[[120466,120466],"mapped",[105]],[[120467,120467],"mapped",[106]],[[120468,120468],"mapped",[107]],[[120469,120469],"mapped",[108]],[[120470,120470],"mapped",[109]],[[120471,120471],"mapped",[110]],[[120472,120472],"mapped",[111]],[[120473,120473],"mapped",[112]],[[120474,120474],"mapped",[113]],[[120475,120475],"mapped",[114]],[[120476,120476],"mapped",[115]],[[120477,120477],"mapped",[116]],[[120478,120478],"mapped",[117]],[[120479,120479],"mapped",[118]],[[120480,120480],"mapped",[119]],[[120481,120481],"mapped",[120]],[[120482,120482],"mapped",[121]],[[120483,120483],"mapped",[122]],[[120484,120484],"mapped",[305]],[[120485,120485],"mapped",[567]],[[120486,120487],"disallowed"],[[120488,120488],"mapped",[945]],[[120489,120489],"mapped",[946]],[[120490,120490],"mapped",[947]],[[120491,120491],"mapped",[948]],[[120492,120492],"mapped",[949]],[[120493,120493],"mapped",[950]],[[120494,120494],"mapped",[951]],[[120495,120495],"mapped",[952]],[[120496,120496],"mapped",[953]],[[120497,120497],"mapped",[954]],[[120498,120498],"mapped",[955]],[[120499,120499],"mapped",[956]],[[120500,120500],"mapped",[957]],[[120501,120501],"mapped",[958]],[[120502,120502],"mapped",[959]],[[120503,120503],"mapped",[960]],[[120504,120504],"mapped",[961]],[[120505,120505],"mapped",[952]],[[120506,120506],"mapped",[963]],[[120507,120507],"mapped",[964]],[[120508,120508],"mapped",[965]],[[120509,120509],"mapped",[966]],[[120510,120510],"mapped",[967]],[[120511,120511],"mapped",[968]],[[120512,120512],"mapped",[969]],[[120513,120513],"mapped",[8711]],[[120514,120514],"mapped",[945]],[[120515,120515],"mapped",[946]],[[120516,120516],"mapped",[947]],[[120517,120517],"mapped",[948]],[[120518,120518],"mapped",[949]],[[120519,120519],"mapped",[950]],[[120520,120520],"mapped",[951]],[[120521,120521],"mapped",[952]],[[120522,120522],"mapped",[953]],[[120523,120523],"mapped",[954]],[[120524,120524],"mapped",[955]],[[120525,120525],"mapped",[956]],[[120526,120526],"mapped",[957]],[[120527,120527],"mapped",[958]],[[120528,120528],"mapped",[959]],[[120529,120529],"mapped",[960]],[[120530,120530],"mapped",[961]],[[120531,120532],"mapped",[963]],[[120533,120533],"mapped",[964]],[[120534,120534],"mapped",[965]],[[120535,120535],"mapped",[966]],[[120536,120536],"mapped",[967]],[[120537,120537],"mapped",[968]],[[120538,120538],"mapped",[969]],[[120539,120539],"mapped",[8706]],[[120540,120540],"mapped",[949]],[[120541,120541],"mapped",[952]],[[120542,120542],"mapped",[954]],[[120543,120543],"mapped",[966]],[[120544,120544],"mapped",[961]],[[120545,120545],"mapped",[960]],[[120546,120546],"mapped",[945]],[[120547,120547],"mapped",[946]],[[120548,120548],"mapped",[947]],[[120549,120549],"mapped",[948]],[[120550,120550],"mapped",[949]],[[120551,120551],"mapped",[950]],[[120552,120552],"mapped",[951]],[[120553,120553],"mapped",[952]],[[120554,120554],"mapped",[953]],[[120555,120555],"mapped",[954]],[[120556,120556],"mapped",[955]],[[120557,120557],"mapped",[956]],[[120558,120558],"mapped",[957]],[[120559,120559],"mapped",[958]],[[120560,120560],"mapped",[959]],[[120561,120561],"mapped",[960]],[[120562,120562],"mapped",[961]],[[120563,120563],"mapped",[952]],[[120564,120564],"mapped",[963]],[[120565,120565],"mapped",[964]],[[120566,120566],"mapped",[965]],[[120567,120567],"mapped",[966]],[[120568,120568],"mapped",[967]],[[120569,120569],"mapped",[968]],[[120570,120570],"mapped",[969]],[[120571,120571],"mapped",[8711]],[[120572,120572],"mapped",[945]],[[120573,120573],"mapped",[946]],[[120574,120574],"mapped",[947]],[[120575,120575],"mapped",[948]],[[120576,120576],"mapped",[949]],[[120577,120577],"mapped",[950]],[[120578,120578],"mapped",[951]],[[120579,120579],"mapped",[952]],[[120580,120580],"mapped",[953]],[[120581,120581],"mapped",[954]],[[120582,120582],"mapped",[955]],[[120583,120583],"mapped",[956]],[[120584,120584],"mapped",[957]],[[120585,120585],"mapped",[958]],[[120586,120586],"mapped",[959]],[[120587,120587],"mapped",[960]],[[120588,120588],"mapped",[961]],[[120589,120590],"mapped",[963]],[[120591,120591],"mapped",[964]],[[120592,120592],"mapped",[965]],[[120593,120593],"mapped",[966]],[[120594,120594],"mapped",[967]],[[120595,120595],"mapped",[968]],[[120596,120596],"mapped",[969]],[[120597,120597],"mapped",[8706]],[[120598,120598],"mapped",[949]],[[120599,120599],"mapped",[952]],[[120600,120600],"mapped",[954]],[[120601,120601],"mapped",[966]],[[120602,120602],"mapped",[961]],[[120603,120603],"mapped",[960]],[[120604,120604],"mapped",[945]],[[120605,120605],"mapped",[946]],[[120606,120606],"mapped",[947]],[[120607,120607],"mapped",[948]],[[120608,120608],"mapped",[949]],[[120609,120609],"mapped",[950]],[[120610,120610],"mapped",[951]],[[120611,120611],"mapped",[952]],[[120612,120612],"mapped",[953]],[[120613,120613],"mapped",[954]],[[120614,120614],"mapped",[955]],[[120615,120615],"mapped",[956]],[[120616,120616],"mapped",[957]],[[120617,120617],"mapped",[958]],[[120618,120618],"mapped",[959]],[[120619,120619],"mapped",[960]],[[120620,120620],"mapped",[961]],[[120621,120621],"mapped",[952]],[[120622,120622],"mapped",[963]],[[120623,120623],"mapped",[964]],[[120624,120624],"mapped",[965]],[[120625,120625],"mapped",[966]],[[120626,120626],"mapped",[967]],[[120627,120627],"mapped",[968]],[[120628,120628],"mapped",[969]],[[120629,120629],"mapped",[8711]],[[120630,120630],"mapped",[945]],[[120631,120631],"mapped",[946]],[[120632,120632],"mapped",[947]],[[120633,120633],"mapped",[948]],[[120634,120634],"mapped",[949]],[[120635,120635],"mapped",[950]],[[120636,120636],"mapped",[951]],[[120637,120637],"mapped",[952]],[[120638,120638],"mapped",[953]],[[120639,120639],"mapped",[954]],[[120640,120640],"mapped",[955]],[[120641,120641],"mapped",[956]],[[120642,120642],"mapped",[957]],[[120643,120643],"mapped",[958]],[[120644,120644],"mapped",[959]],[[120645,120645],"mapped",[960]],[[120646,120646],"mapped",[961]],[[120647,120648],"mapped",[963]],[[120649,120649],"mapped",[964]],[[120650,120650],"mapped",[965]],[[120651,120651],"mapped",[966]],[[120652,120652],"mapped",[967]],[[120653,120653],"mapped",[968]],[[120654,120654],"mapped",[969]],[[120655,120655],"mapped",[8706]],[[120656,120656],"mapped",[949]],[[120657,120657],"mapped",[952]],[[120658,120658],"mapped",[954]],[[120659,120659],"mapped",[966]],[[120660,120660],"mapped",[961]],[[120661,120661],"mapped",[960]],[[120662,120662],"mapped",[945]],[[120663,120663],"mapped",[946]],[[120664,120664],"mapped",[947]],[[120665,120665],"mapped",[948]],[[120666,120666],"mapped",[949]],[[120667,120667],"mapped",[950]],[[120668,120668],"mapped",[951]],[[120669,120669],"mapped",[952]],[[120670,120670],"mapped",[953]],[[120671,120671],"mapped",[954]],[[120672,120672],"mapped",[955]],[[120673,120673],"mapped",[956]],[[120674,120674],"mapped",[957]],[[120675,120675],"mapped",[958]],[[120676,120676],"mapped",[959]],[[120677,120677],"mapped",[960]],[[120678,120678],"mapped",[961]],[[120679,120679],"mapped",[952]],[[120680,120680],"mapped",[963]],[[120681,120681],"mapped",[964]],[[120682,120682],"mapped",[965]],[[120683,120683],"mapped",[966]],[[120684,120684],"mapped",[967]],[[120685,120685],"mapped",[968]],[[120686,120686],"mapped",[969]],[[120687,120687],"mapped",[8711]],[[120688,120688],"mapped",[945]],[[120689,120689],"mapped",[946]],[[120690,120690],"mapped",[947]],[[120691,120691],"mapped",[948]],[[120692,120692],"mapped",[949]],[[120693,120693],"mapped",[950]],[[120694,120694],"mapped",[951]],[[120695,120695],"mapped",[952]],[[120696,120696],"mapped",[953]],[[120697,120697],"mapped",[954]],[[120698,120698],"mapped",[955]],[[120699,120699],"mapped",[956]],[[120700,120700],"mapped",[957]],[[120701,120701],"mapped",[958]],[[120702,120702],"mapped",[959]],[[120703,120703],"mapped",[960]],[[120704,120704],"mapped",[961]],[[120705,120706],"mapped",[963]],[[120707,120707],"mapped",[964]],[[120708,120708],"mapped",[965]],[[120709,120709],"mapped",[966]],[[120710,120710],"mapped",[967]],[[120711,120711],"mapped",[968]],[[120712,120712],"mapped",[969]],[[120713,120713],"mapped",[8706]],[[120714,120714],"mapped",[949]],[[120715,120715],"mapped",[952]],[[120716,120716],"mapped",[954]],[[120717,120717],"mapped",[966]],[[120718,120718],"mapped",[961]],[[120719,120719],"mapped",[960]],[[120720,120720],"mapped",[945]],[[120721,120721],"mapped",[946]],[[120722,120722],"mapped",[947]],[[120723,120723],"mapped",[948]],[[120724,120724],"mapped",[949]],[[120725,120725],"mapped",[950]],[[120726,120726],"mapped",[951]],[[120727,120727],"mapped",[952]],[[120728,120728],"mapped",[953]],[[120729,120729],"mapped",[954]],[[120730,120730],"mapped",[955]],[[120731,120731],"mapped",[956]],[[120732,120732],"mapped",[957]],[[120733,120733],"mapped",[958]],[[120734,120734],"mapped",[959]],[[120735,120735],"mapped",[960]],[[120736,120736],"mapped",[961]],[[120737,120737],"mapped",[952]],[[120738,120738],"mapped",[963]],[[120739,120739],"mapped",[964]],[[120740,120740],"mapped",[965]],[[120741,120741],"mapped",[966]],[[120742,120742],"mapped",[967]],[[120743,120743],"mapped",[968]],[[120744,120744],"mapped",[969]],[[120745,120745],"mapped",[8711]],[[120746,120746],"mapped",[945]],[[120747,120747],"mapped",[946]],[[120748,120748],"mapped",[947]],[[120749,120749],"mapped",[948]],[[120750,120750],"mapped",[949]],[[120751,120751],"mapped",[950]],[[120752,120752],"mapped",[951]],[[120753,120753],"mapped",[952]],[[120754,120754],"mapped",[953]],[[120755,120755],"mapped",[954]],[[120756,120756],"mapped",[955]],[[120757,120757],"mapped",[956]],[[120758,120758],"mapped",[957]],[[120759,120759],"mapped",[958]],[[120760,120760],"mapped",[959]],[[120761,120761],"mapped",[960]],[[120762,120762],"mapped",[961]],[[120763,120764],"mapped",[963]],[[120765,120765],"mapped",[964]],[[120766,120766],"mapped",[965]],[[120767,120767],"mapped",[966]],[[120768,120768],"mapped",[967]],[[120769,120769],"mapped",[968]],[[120770,120770],"mapped",[969]],[[120771,120771],"mapped",[8706]],[[120772,120772],"mapped",[949]],[[120773,120773],"mapped",[952]],[[120774,120774],"mapped",[954]],[[120775,120775],"mapped",[966]],[[120776,120776],"mapped",[961]],[[120777,120777],"mapped",[960]],[[120778,120779],"mapped",[989]],[[120780,120781],"disallowed"],[[120782,120782],"mapped",[48]],[[120783,120783],"mapped",[49]],[[120784,120784],"mapped",[50]],[[120785,120785],"mapped",[51]],[[120786,120786],"mapped",[52]],[[120787,120787],"mapped",[53]],[[120788,120788],"mapped",[54]],[[120789,120789],"mapped",[55]],[[120790,120790],"mapped",[56]],[[120791,120791],"mapped",[57]],[[120792,120792],"mapped",[48]],[[120793,120793],"mapped",[49]],[[120794,120794],"mapped",[50]],[[120795,120795],"mapped",[51]],[[120796,120796],"mapped",[52]],[[120797,120797],"mapped",[53]],[[120798,120798],"mapped",[54]],[[120799,120799],"mapped",[55]],[[120800,120800],"mapped",[56]],[[120801,120801],"mapped",[57]],[[120802,120802],"mapped",[48]],[[120803,120803],"mapped",[49]],[[120804,120804],"mapped",[50]],[[120805,120805],"mapped",[51]],[[120806,120806],"mapped",[52]],[[120807,120807],"mapped",[53]],[[120808,120808],"mapped",[54]],[[120809,120809],"mapped",[55]],[[120810,120810],"mapped",[56]],[[120811,120811],"mapped",[57]],[[120812,120812],"mapped",[48]],[[120813,120813],"mapped",[49]],[[120814,120814],"mapped",[50]],[[120815,120815],"mapped",[51]],[[120816,120816],"mapped",[52]],[[120817,120817],"mapped",[53]],[[120818,120818],"mapped",[54]],[[120819,120819],"mapped",[55]],[[120820,120820],"mapped",[56]],[[120821,120821],"mapped",[57]],[[120822,120822],"mapped",[48]],[[120823,120823],"mapped",[49]],[[120824,120824],"mapped",[50]],[[120825,120825],"mapped",[51]],[[120826,120826],"mapped",[52]],[[120827,120827],"mapped",[53]],[[120828,120828],"mapped",[54]],[[120829,120829],"mapped",[55]],[[120830,120830],"mapped",[56]],[[120831,120831],"mapped",[57]],[[120832,121343],"valid",[],"NV8"],[[121344,121398],"valid"],[[121399,121402],"valid",[],"NV8"],[[121403,121452],"valid"],[[121453,121460],"valid",[],"NV8"],[[121461,121461],"valid"],[[121462,121475],"valid",[],"NV8"],[[121476,121476],"valid"],[[121477,121483],"valid",[],"NV8"],[[121484,121498],"disallowed"],[[121499,121503],"valid"],[[121504,121504],"disallowed"],[[121505,121519],"valid"],[[121520,124927],"disallowed"],[[124928,125124],"valid"],[[125125,125126],"disallowed"],[[125127,125135],"valid",[],"NV8"],[[125136,125142],"valid"],[[125143,126463],"disallowed"],[[126464,126464],"mapped",[1575]],[[126465,126465],"mapped",[1576]],[[126466,126466],"mapped",[1580]],[[126467,126467],"mapped",[1583]],[[126468,126468],"disallowed"],[[126469,126469],"mapped",[1608]],[[126470,126470],"mapped",[1586]],[[126471,126471],"mapped",[1581]],[[126472,126472],"mapped",[1591]],[[126473,126473],"mapped",[1610]],[[126474,126474],"mapped",[1603]],[[126475,126475],"mapped",[1604]],[[126476,126476],"mapped",[1605]],[[126477,126477],"mapped",[1606]],[[126478,126478],"mapped",[1587]],[[126479,126479],"mapped",[1593]],[[126480,126480],"mapped",[1601]],[[126481,126481],"mapped",[1589]],[[126482,126482],"mapped",[1602]],[[126483,126483],"mapped",[1585]],[[126484,126484],"mapped",[1588]],[[126485,126485],"mapped",[1578]],[[126486,126486],"mapped",[1579]],[[126487,126487],"mapped",[1582]],[[126488,126488],"mapped",[1584]],[[126489,126489],"mapped",[1590]],[[126490,126490],"mapped",[1592]],[[126491,126491],"mapped",[1594]],[[126492,126492],"mapped",[1646]],[[126493,126493],"mapped",[1722]],[[126494,126494],"mapped",[1697]],[[126495,126495],"mapped",[1647]],[[126496,126496],"disallowed"],[[126497,126497],"mapped",[1576]],[[126498,126498],"mapped",[1580]],[[126499,126499],"disallowed"],[[126500,126500],"mapped",[1607]],[[126501,126502],"disallowed"],[[126503,126503],"mapped",[1581]],[[126504,126504],"disallowed"],[[126505,126505],"mapped",[1610]],[[126506,126506],"mapped",[1603]],[[126507,126507],"mapped",[1604]],[[126508,126508],"mapped",[1605]],[[126509,126509],"mapped",[1606]],[[126510,126510],"mapped",[1587]],[[126511,126511],"mapped",[1593]],[[126512,126512],"mapped",[1601]],[[126513,126513],"mapped",[1589]],[[126514,126514],"mapped",[1602]],[[126515,126515],"disallowed"],[[126516,126516],"mapped",[1588]],[[126517,126517],"mapped",[1578]],[[126518,126518],"mapped",[1579]],[[126519,126519],"mapped",[1582]],[[126520,126520],"disallowed"],[[126521,126521],"mapped",[1590]],[[126522,126522],"disallowed"],[[126523,126523],"mapped",[1594]],[[126524,126529],"disallowed"],[[126530,126530],"mapped",[1580]],[[126531,126534],"disallowed"],[[126535,126535],"mapped",[1581]],[[126536,126536],"disallowed"],[[126537,126537],"mapped",[1610]],[[126538,126538],"disallowed"],[[126539,126539],"mapped",[1604]],[[126540,126540],"disallowed"],[[126541,126541],"mapped",[1606]],[[126542,126542],"mapped",[1587]],[[126543,126543],"mapped",[1593]],[[126544,126544],"disallowed"],[[126545,126545],"mapped",[1589]],[[126546,126546],"mapped",[1602]],[[126547,126547],"disallowed"],[[126548,126548],"mapped",[1588]],[[126549,126550],"disallowed"],[[126551,126551],"mapped",[1582]],[[126552,126552],"disallowed"],[[126553,126553],"mapped",[1590]],[[126554,126554],"disallowed"],[[126555,126555],"mapped",[1594]],[[126556,126556],"disallowed"],[[126557,126557],"mapped",[1722]],[[126558,126558],"disallowed"],[[126559,126559],"mapped",[1647]],[[126560,126560],"disallowed"],[[126561,126561],"mapped",[1576]],[[126562,126562],"mapped",[1580]],[[126563,126563],"disallowed"],[[126564,126564],"mapped",[1607]],[[126565,126566],"disallowed"],[[126567,126567],"mapped",[1581]],[[126568,126568],"mapped",[1591]],[[126569,126569],"mapped",[1610]],[[126570,126570],"mapped",[1603]],[[126571,126571],"disallowed"],[[126572,126572],"mapped",[1605]],[[126573,126573],"mapped",[1606]],[[126574,126574],"mapped",[1587]],[[126575,126575],"mapped",[1593]],[[126576,126576],"mapped",[1601]],[[126577,126577],"mapped",[1589]],[[126578,126578],"mapped",[1602]],[[126579,126579],"disallowed"],[[126580,126580],"mapped",[1588]],[[126581,126581],"mapped",[1578]],[[126582,126582],"mapped",[1579]],[[126583,126583],"mapped",[1582]],[[126584,126584],"disallowed"],[[126585,126585],"mapped",[1590]],[[126586,126586],"mapped",[1592]],[[126587,126587],"mapped",[1594]],[[126588,126588],"mapped",[1646]],[[126589,126589],"disallowed"],[[126590,126590],"mapped",[1697]],[[126591,126591],"disallowed"],[[126592,126592],"mapped",[1575]],[[126593,126593],"mapped",[1576]],[[126594,126594],"mapped",[1580]],[[126595,126595],"mapped",[1583]],[[126596,126596],"mapped",[1607]],[[126597,126597],"mapped",[1608]],[[126598,126598],"mapped",[1586]],[[126599,126599],"mapped",[1581]],[[126600,126600],"mapped",[1591]],[[126601,126601],"mapped",[1610]],[[126602,126602],"disallowed"],[[126603,126603],"mapped",[1604]],[[126604,126604],"mapped",[1605]],[[126605,126605],"mapped",[1606]],[[126606,126606],"mapped",[1587]],[[126607,126607],"mapped",[1593]],[[126608,126608],"mapped",[1601]],[[126609,126609],"mapped",[1589]],[[126610,126610],"mapped",[1602]],[[126611,126611],"mapped",[1585]],[[126612,126612],"mapped",[1588]],[[126613,126613],"mapped",[1578]],[[126614,126614],"mapped",[1579]],[[126615,126615],"mapped",[1582]],[[126616,126616],"mapped",[1584]],[[126617,126617],"mapped",[1590]],[[126618,126618],"mapped",[1592]],[[126619,126619],"mapped",[1594]],[[126620,126624],"disallowed"],[[126625,126625],"mapped",[1576]],[[126626,126626],"mapped",[1580]],[[126627,126627],"mapped",[1583]],[[126628,126628],"disallowed"],[[126629,126629],"mapped",[1608]],[[126630,126630],"mapped",[1586]],[[126631,126631],"mapped",[1581]],[[126632,126632],"mapped",[1591]],[[126633,126633],"mapped",[1610]],[[126634,126634],"disallowed"],[[126635,126635],"mapped",[1604]],[[126636,126636],"mapped",[1605]],[[126637,126637],"mapped",[1606]],[[126638,126638],"mapped",[1587]],[[126639,126639],"mapped",[1593]],[[126640,126640],"mapped",[1601]],[[126641,126641],"mapped",[1589]],[[126642,126642],"mapped",[1602]],[[126643,126643],"mapped",[1585]],[[126644,126644],"mapped",[1588]],[[126645,126645],"mapped",[1578]],[[126646,126646],"mapped",[1579]],[[126647,126647],"mapped",[1582]],[[126648,126648],"mapped",[1584]],[[126649,126649],"mapped",[1590]],[[126650,126650],"mapped",[1592]],[[126651,126651],"mapped",[1594]],[[126652,126703],"disallowed"],[[126704,126705],"valid",[],"NV8"],[[126706,126975],"disallowed"],[[126976,127019],"valid",[],"NV8"],[[127020,127023],"disallowed"],[[127024,127123],"valid",[],"NV8"],[[127124,127135],"disallowed"],[[127136,127150],"valid",[],"NV8"],[[127151,127152],"disallowed"],[[127153,127166],"valid",[],"NV8"],[[127167,127167],"valid",[],"NV8"],[[127168,127168],"disallowed"],[[127169,127183],"valid",[],"NV8"],[[127184,127184],"disallowed"],[[127185,127199],"valid",[],"NV8"],[[127200,127221],"valid",[],"NV8"],[[127222,127231],"disallowed"],[[127232,127232],"disallowed"],[[127233,127233],"disallowed_STD3_mapped",[48,44]],[[127234,127234],"disallowed_STD3_mapped",[49,44]],[[127235,127235],"disallowed_STD3_mapped",[50,44]],[[127236,127236],"disallowed_STD3_mapped",[51,44]],[[127237,127237],"disallowed_STD3_mapped",[52,44]],[[127238,127238],"disallowed_STD3_mapped",[53,44]],[[127239,127239],"disallowed_STD3_mapped",[54,44]],[[127240,127240],"disallowed_STD3_mapped",[55,44]],[[127241,127241],"disallowed_STD3_mapped",[56,44]],[[127242,127242],"disallowed_STD3_mapped",[57,44]],[[127243,127244],"valid",[],"NV8"],[[127245,127247],"disallowed"],[[127248,127248],"disallowed_STD3_mapped",[40,97,41]],[[127249,127249],"disallowed_STD3_mapped",[40,98,41]],[[127250,127250],"disallowed_STD3_mapped",[40,99,41]],[[127251,127251],"disallowed_STD3_mapped",[40,100,41]],[[127252,127252],"disallowed_STD3_mapped",[40,101,41]],[[127253,127253],"disallowed_STD3_mapped",[40,102,41]],[[127254,127254],"disallowed_STD3_mapped",[40,103,41]],[[127255,127255],"disallowed_STD3_mapped",[40,104,41]],[[127256,127256],"disallowed_STD3_mapped",[40,105,41]],[[127257,127257],"disallowed_STD3_mapped",[40,106,41]],[[127258,127258],"disallowed_STD3_mapped",[40,107,41]],[[127259,127259],"disallowed_STD3_mapped",[40,108,41]],[[127260,127260],"disallowed_STD3_mapped",[40,109,41]],[[127261,127261],"disallowed_STD3_mapped",[40,110,41]],[[127262,127262],"disallowed_STD3_mapped",[40,111,41]],[[127263,127263],"disallowed_STD3_mapped",[40,112,41]],[[127264,127264],"disallowed_STD3_mapped",[40,113,41]],[[127265,127265],"disallowed_STD3_mapped",[40,114,41]],[[127266,127266],"disallowed_STD3_mapped",[40,115,41]],[[127267,127267],"disallowed_STD3_mapped",[40,116,41]],[[127268,127268],"disallowed_STD3_mapped",[40,117,41]],[[127269,127269],"disallowed_STD3_mapped",[40,118,41]],[[127270,127270],"disallowed_STD3_mapped",[40,119,41]],[[127271,127271],"disallowed_STD3_mapped",[40,120,41]],[[127272,127272],"disallowed_STD3_mapped",[40,121,41]],[[127273,127273],"disallowed_STD3_mapped",[40,122,41]],[[127274,127274],"mapped",[12308,115,12309]],[[127275,127275],"mapped",[99]],[[127276,127276],"mapped",[114]],[[127277,127277],"mapped",[99,100]],[[127278,127278],"mapped",[119,122]],[[127279,127279],"disallowed"],[[127280,127280],"mapped",[97]],[[127281,127281],"mapped",[98]],[[127282,127282],"mapped",[99]],[[127283,127283],"mapped",[100]],[[127284,127284],"mapped",[101]],[[127285,127285],"mapped",[102]],[[127286,127286],"mapped",[103]],[[127287,127287],"mapped",[104]],[[127288,127288],"mapped",[105]],[[127289,127289],"mapped",[106]],[[127290,127290],"mapped",[107]],[[127291,127291],"mapped",[108]],[[127292,127292],"mapped",[109]],[[127293,127293],"mapped",[110]],[[127294,127294],"mapped",[111]],[[127295,127295],"mapped",[112]],[[127296,127296],"mapped",[113]],[[127297,127297],"mapped",[114]],[[127298,127298],"mapped",[115]],[[127299,127299],"mapped",[116]],[[127300,127300],"mapped",[117]],[[127301,127301],"mapped",[118]],[[127302,127302],"mapped",[119]],[[127303,127303],"mapped",[120]],[[127304,127304],"mapped",[121]],[[127305,127305],"mapped",[122]],[[127306,127306],"mapped",[104,118]],[[127307,127307],"mapped",[109,118]],[[127308,127308],"mapped",[115,100]],[[127309,127309],"mapped",[115,115]],[[127310,127310],"mapped",[112,112,118]],[[127311,127311],"mapped",[119,99]],[[127312,127318],"valid",[],"NV8"],[[127319,127319],"valid",[],"NV8"],[[127320,127326],"valid",[],"NV8"],[[127327,127327],"valid",[],"NV8"],[[127328,127337],"valid",[],"NV8"],[[127338,127338],"mapped",[109,99]],[[127339,127339],"mapped",[109,100]],[[127340,127343],"disallowed"],[[127344,127352],"valid",[],"NV8"],[[127353,127353],"valid",[],"NV8"],[[127354,127354],"valid",[],"NV8"],[[127355,127356],"valid",[],"NV8"],[[127357,127358],"valid",[],"NV8"],[[127359,127359],"valid",[],"NV8"],[[127360,127369],"valid",[],"NV8"],[[127370,127373],"valid",[],"NV8"],[[127374,127375],"valid",[],"NV8"],[[127376,127376],"mapped",[100,106]],[[127377,127386],"valid",[],"NV8"],[[127387,127461],"disallowed"],[[127462,127487],"valid",[],"NV8"],[[127488,127488],"mapped",[12411,12363]],[[127489,127489],"mapped",[12467,12467]],[[127490,127490],"mapped",[12469]],[[127491,127503],"disallowed"],[[127504,127504],"mapped",[25163]],[[127505,127505],"mapped",[23383]],[[127506,127506],"mapped",[21452]],[[127507,127507],"mapped",[12487]],[[127508,127508],"mapped",[20108]],[[127509,127509],"mapped",[22810]],[[127510,127510],"mapped",[35299]],[[127511,127511],"mapped",[22825]],[[127512,127512],"mapped",[20132]],[[127513,127513],"mapped",[26144]],[[127514,127514],"mapped",[28961]],[[127515,127515],"mapped",[26009]],[[127516,127516],"mapped",[21069]],[[127517,127517],"mapped",[24460]],[[127518,127518],"mapped",[20877]],[[127519,127519],"mapped",[26032]],[[127520,127520],"mapped",[21021]],[[127521,127521],"mapped",[32066]],[[127522,127522],"mapped",[29983]],[[127523,127523],"mapped",[36009]],[[127524,127524],"mapped",[22768]],[[127525,127525],"mapped",[21561]],[[127526,127526],"mapped",[28436]],[[127527,127527],"mapped",[25237]],[[127528,127528],"mapped",[25429]],[[127529,127529],"mapped",[19968]],[[127530,127530],"mapped",[19977]],[[127531,127531],"mapped",[36938]],[[127532,127532],"mapped",[24038]],[[127533,127533],"mapped",[20013]],[[127534,127534],"mapped",[21491]],[[127535,127535],"mapped",[25351]],[[127536,127536],"mapped",[36208]],[[127537,127537],"mapped",[25171]],[[127538,127538],"mapped",[31105]],[[127539,127539],"mapped",[31354]],[[127540,127540],"mapped",[21512]],[[127541,127541],"mapped",[28288]],[[127542,127542],"mapped",[26377]],[[127543,127543],"mapped",[26376]],[[127544,127544],"mapped",[30003]],[[127545,127545],"mapped",[21106]],[[127546,127546],"mapped",[21942]],[[127547,127551],"disallowed"],[[127552,127552],"mapped",[12308,26412,12309]],[[127553,127553],"mapped",[12308,19977,12309]],[[127554,127554],"mapped",[12308,20108,12309]],[[127555,127555],"mapped",[12308,23433,12309]],[[127556,127556],"mapped",[12308,28857,12309]],[[127557,127557],"mapped",[12308,25171,12309]],[[127558,127558],"mapped",[12308,30423,12309]],[[127559,127559],"mapped",[12308,21213,12309]],[[127560,127560],"mapped",[12308,25943,12309]],[[127561,127567],"disallowed"],[[127568,127568],"mapped",[24471]],[[127569,127569],"mapped",[21487]],[[127570,127743],"disallowed"],[[127744,127776],"valid",[],"NV8"],[[127777,127788],"valid",[],"NV8"],[[127789,127791],"valid",[],"NV8"],[[127792,127797],"valid",[],"NV8"],[[127798,127798],"valid",[],"NV8"],[[127799,127868],"valid",[],"NV8"],[[127869,127869],"valid",[],"NV8"],[[127870,127871],"valid",[],"NV8"],[[127872,127891],"valid",[],"NV8"],[[127892,127903],"valid",[],"NV8"],[[127904,127940],"valid",[],"NV8"],[[127941,127941],"valid",[],"NV8"],[[127942,127946],"valid",[],"NV8"],[[127947,127950],"valid",[],"NV8"],[[127951,127955],"valid",[],"NV8"],[[127956,127967],"valid",[],"NV8"],[[127968,127984],"valid",[],"NV8"],[[127985,127991],"valid",[],"NV8"],[[127992,127999],"valid",[],"NV8"],[[128000,128062],"valid",[],"NV8"],[[128063,128063],"valid",[],"NV8"],[[128064,128064],"valid",[],"NV8"],[[128065,128065],"valid",[],"NV8"],[[128066,128247],"valid",[],"NV8"],[[128248,128248],"valid",[],"NV8"],[[128249,128252],"valid",[],"NV8"],[[128253,128254],"valid",[],"NV8"],[[128255,128255],"valid",[],"NV8"],[[128256,128317],"valid",[],"NV8"],[[128318,128319],"valid",[],"NV8"],[[128320,128323],"valid",[],"NV8"],[[128324,128330],"valid",[],"NV8"],[[128331,128335],"valid",[],"NV8"],[[128336,128359],"valid",[],"NV8"],[[128360,128377],"valid",[],"NV8"],[[128378,128378],"disallowed"],[[128379,128419],"valid",[],"NV8"],[[128420,128420],"disallowed"],[[128421,128506],"valid",[],"NV8"],[[128507,128511],"valid",[],"NV8"],[[128512,128512],"valid",[],"NV8"],[[128513,128528],"valid",[],"NV8"],[[128529,128529],"valid",[],"NV8"],[[128530,128532],"valid",[],"NV8"],[[128533,128533],"valid",[],"NV8"],[[128534,128534],"valid",[],"NV8"],[[128535,128535],"valid",[],"NV8"],[[128536,128536],"valid",[],"NV8"],[[128537,128537],"valid",[],"NV8"],[[128538,128538],"valid",[],"NV8"],[[128539,128539],"valid",[],"NV8"],[[128540,128542],"valid",[],"NV8"],[[128543,128543],"valid",[],"NV8"],[[128544,128549],"valid",[],"NV8"],[[128550,128551],"valid",[],"NV8"],[[128552,128555],"valid",[],"NV8"],[[128556,128556],"valid",[],"NV8"],[[128557,128557],"valid",[],"NV8"],[[128558,128559],"valid",[],"NV8"],[[128560,128563],"valid",[],"NV8"],[[128564,128564],"valid",[],"NV8"],[[128565,128576],"valid",[],"NV8"],[[128577,128578],"valid",[],"NV8"],[[128579,128580],"valid",[],"NV8"],[[128581,128591],"valid",[],"NV8"],[[128592,128639],"valid",[],"NV8"],[[128640,128709],"valid",[],"NV8"],[[128710,128719],"valid",[],"NV8"],[[128720,128720],"valid",[],"NV8"],[[128721,128735],"disallowed"],[[128736,128748],"valid",[],"NV8"],[[128749,128751],"disallowed"],[[128752,128755],"valid",[],"NV8"],[[128756,128767],"disallowed"],[[128768,128883],"valid",[],"NV8"],[[128884,128895],"disallowed"],[[128896,128980],"valid",[],"NV8"],[[128981,129023],"disallowed"],[[129024,129035],"valid",[],"NV8"],[[129036,129039],"disallowed"],[[129040,129095],"valid",[],"NV8"],[[129096,129103],"disallowed"],[[129104,129113],"valid",[],"NV8"],[[129114,129119],"disallowed"],[[129120,129159],"valid",[],"NV8"],[[129160,129167],"disallowed"],[[129168,129197],"valid",[],"NV8"],[[129198,129295],"disallowed"],[[129296,129304],"valid",[],"NV8"],[[129305,129407],"disallowed"],[[129408,129412],"valid",[],"NV8"],[[129413,129471],"disallowed"],[[129472,129472],"valid",[],"NV8"],[[129473,131069],"disallowed"],[[131070,131071],"disallowed"],[[131072,173782],"valid"],[[173783,173823],"disallowed"],[[173824,177972],"valid"],[[177973,177983],"disallowed"],[[177984,178205],"valid"],[[178206,178207],"disallowed"],[[178208,183969],"valid"],[[183970,194559],"disallowed"],[[194560,194560],"mapped",[20029]],[[194561,194561],"mapped",[20024]],[[194562,194562],"mapped",[20033]],[[194563,194563],"mapped",[131362]],[[194564,194564],"mapped",[20320]],[[194565,194565],"mapped",[20398]],[[194566,194566],"mapped",[20411]],[[194567,194567],"mapped",[20482]],[[194568,194568],"mapped",[20602]],[[194569,194569],"mapped",[20633]],[[194570,194570],"mapped",[20711]],[[194571,194571],"mapped",[20687]],[[194572,194572],"mapped",[13470]],[[194573,194573],"mapped",[132666]],[[194574,194574],"mapped",[20813]],[[194575,194575],"mapped",[20820]],[[194576,194576],"mapped",[20836]],[[194577,194577],"mapped",[20855]],[[194578,194578],"mapped",[132380]],[[194579,194579],"mapped",[13497]],[[194580,194580],"mapped",[20839]],[[194581,194581],"mapped",[20877]],[[194582,194582],"mapped",[132427]],[[194583,194583],"mapped",[20887]],[[194584,194584],"mapped",[20900]],[[194585,194585],"mapped",[20172]],[[194586,194586],"mapped",[20908]],[[194587,194587],"mapped",[20917]],[[194588,194588],"mapped",[168415]],[[194589,194589],"mapped",[20981]],[[194590,194590],"mapped",[20995]],[[194591,194591],"mapped",[13535]],[[194592,194592],"mapped",[21051]],[[194593,194593],"mapped",[21062]],[[194594,194594],"mapped",[21106]],[[194595,194595],"mapped",[21111]],[[194596,194596],"mapped",[13589]],[[194597,194597],"mapped",[21191]],[[194598,194598],"mapped",[21193]],[[194599,194599],"mapped",[21220]],[[194600,194600],"mapped",[21242]],[[194601,194601],"mapped",[21253]],[[194602,194602],"mapped",[21254]],[[194603,194603],"mapped",[21271]],[[194604,194604],"mapped",[21321]],[[194605,194605],"mapped",[21329]],[[194606,194606],"mapped",[21338]],[[194607,194607],"mapped",[21363]],[[194608,194608],"mapped",[21373]],[[194609,194611],"mapped",[21375]],[[194612,194612],"mapped",[133676]],[[194613,194613],"mapped",[28784]],[[194614,194614],"mapped",[21450]],[[194615,194615],"mapped",[21471]],[[194616,194616],"mapped",[133987]],[[194617,194617],"mapped",[21483]],[[194618,194618],"mapped",[21489]],[[194619,194619],"mapped",[21510]],[[194620,194620],"mapped",[21662]],[[194621,194621],"mapped",[21560]],[[194622,194622],"mapped",[21576]],[[194623,194623],"mapped",[21608]],[[194624,194624],"mapped",[21666]],[[194625,194625],"mapped",[21750]],[[194626,194626],"mapped",[21776]],[[194627,194627],"mapped",[21843]],[[194628,194628],"mapped",[21859]],[[194629,194630],"mapped",[21892]],[[194631,194631],"mapped",[21913]],[[194632,194632],"mapped",[21931]],[[194633,194633],"mapped",[21939]],[[194634,194634],"mapped",[21954]],[[194635,194635],"mapped",[22294]],[[194636,194636],"mapped",[22022]],[[194637,194637],"mapped",[22295]],[[194638,194638],"mapped",[22097]],[[194639,194639],"mapped",[22132]],[[194640,194640],"mapped",[20999]],[[194641,194641],"mapped",[22766]],[[194642,194642],"mapped",[22478]],[[194643,194643],"mapped",[22516]],[[194644,194644],"mapped",[22541]],[[194645,194645],"mapped",[22411]],[[194646,194646],"mapped",[22578]],[[194647,194647],"mapped",[22577]],[[194648,194648],"mapped",[22700]],[[194649,194649],"mapped",[136420]],[[194650,194650],"mapped",[22770]],[[194651,194651],"mapped",[22775]],[[194652,194652],"mapped",[22790]],[[194653,194653],"mapped",[22810]],[[194654,194654],"mapped",[22818]],[[194655,194655],"mapped",[22882]],[[194656,194656],"mapped",[136872]],[[194657,194657],"mapped",[136938]],[[194658,194658],"mapped",[23020]],[[194659,194659],"mapped",[23067]],[[194660,194660],"mapped",[23079]],[[194661,194661],"mapped",[23000]],[[194662,194662],"mapped",[23142]],[[194663,194663],"mapped",[14062]],[[194664,194664],"disallowed"],[[194665,194665],"mapped",[23304]],[[194666,194667],"mapped",[23358]],[[194668,194668],"mapped",[137672]],[[194669,194669],"mapped",[23491]],[[194670,194670],"mapped",[23512]],[[194671,194671],"mapped",[23527]],[[194672,194672],"mapped",[23539]],[[194673,194673],"mapped",[138008]],[[194674,194674],"mapped",[23551]],[[194675,194675],"mapped",[23558]],[[194676,194676],"disallowed"],[[194677,194677],"mapped",[23586]],[[194678,194678],"mapped",[14209]],[[194679,194679],"mapped",[23648]],[[194680,194680],"mapped",[23662]],[[194681,194681],"mapped",[23744]],[[194682,194682],"mapped",[23693]],[[194683,194683],"mapped",[138724]],[[194684,194684],"mapped",[23875]],[[194685,194685],"mapped",[138726]],[[194686,194686],"mapped",[23918]],[[194687,194687],"mapped",[23915]],[[194688,194688],"mapped",[23932]],[[194689,194689],"mapped",[24033]],[[194690,194690],"mapped",[24034]],[[194691,194691],"mapped",[14383]],[[194692,194692],"mapped",[24061]],[[194693,194693],"mapped",[24104]],[[194694,194694],"mapped",[24125]],[[194695,194695],"mapped",[24169]],[[194696,194696],"mapped",[14434]],[[194697,194697],"mapped",[139651]],[[194698,194698],"mapped",[14460]],[[194699,194699],"mapped",[24240]],[[194700,194700],"mapped",[24243]],[[194701,194701],"mapped",[24246]],[[194702,194702],"mapped",[24266]],[[194703,194703],"mapped",[172946]],[[194704,194704],"mapped",[24318]],[[194705,194706],"mapped",[140081]],[[194707,194707],"mapped",[33281]],[[194708,194709],"mapped",[24354]],[[194710,194710],"mapped",[14535]],[[194711,194711],"mapped",[144056]],[[194712,194712],"mapped",[156122]],[[194713,194713],"mapped",[24418]],[[194714,194714],"mapped",[24427]],[[194715,194715],"mapped",[14563]],[[194716,194716],"mapped",[24474]],[[194717,194717],"mapped",[24525]],[[194718,194718],"mapped",[24535]],[[194719,194719],"mapped",[24569]],[[194720,194720],"mapped",[24705]],[[194721,194721],"mapped",[14650]],[[194722,194722],"mapped",[14620]],[[194723,194723],"mapped",[24724]],[[194724,194724],"mapped",[141012]],[[194725,194725],"mapped",[24775]],[[194726,194726],"mapped",[24904]],[[194727,194727],"mapped",[24908]],[[194728,194728],"mapped",[24910]],[[194729,194729],"mapped",[24908]],[[194730,194730],"mapped",[24954]],[[194731,194731],"mapped",[24974]],[[194732,194732],"mapped",[25010]],[[194733,194733],"mapped",[24996]],[[194734,194734],"mapped",[25007]],[[194735,194735],"mapped",[25054]],[[194736,194736],"mapped",[25074]],[[194737,194737],"mapped",[25078]],[[194738,194738],"mapped",[25104]],[[194739,194739],"mapped",[25115]],[[194740,194740],"mapped",[25181]],[[194741,194741],"mapped",[25265]],[[194742,194742],"mapped",[25300]],[[194743,194743],"mapped",[25424]],[[194744,194744],"mapped",[142092]],[[194745,194745],"mapped",[25405]],[[194746,194746],"mapped",[25340]],[[194747,194747],"mapped",[25448]],[[194748,194748],"mapped",[25475]],[[194749,194749],"mapped",[25572]],[[194750,194750],"mapped",[142321]],[[194751,194751],"mapped",[25634]],[[194752,194752],"mapped",[25541]],[[194753,194753],"mapped",[25513]],[[194754,194754],"mapped",[14894]],[[194755,194755],"mapped",[25705]],[[194756,194756],"mapped",[25726]],[[194757,194757],"mapped",[25757]],[[194758,194758],"mapped",[25719]],[[194759,194759],"mapped",[14956]],[[194760,194760],"mapped",[25935]],[[194761,194761],"mapped",[25964]],[[194762,194762],"mapped",[143370]],[[194763,194763],"mapped",[26083]],[[194764,194764],"mapped",[26360]],[[194765,194765],"mapped",[26185]],[[194766,194766],"mapped",[15129]],[[194767,194767],"mapped",[26257]],[[194768,194768],"mapped",[15112]],[[194769,194769],"mapped",[15076]],[[194770,194770],"mapped",[20882]],[[194771,194771],"mapped",[20885]],[[194772,194772],"mapped",[26368]],[[194773,194773],"mapped",[26268]],[[194774,194774],"mapped",[32941]],[[194775,194775],"mapped",[17369]],[[194776,194776],"mapped",[26391]],[[194777,194777],"mapped",[26395]],[[194778,194778],"mapped",[26401]],[[194779,194779],"mapped",[26462]],[[194780,194780],"mapped",[26451]],[[194781,194781],"mapped",[144323]],[[194782,194782],"mapped",[15177]],[[194783,194783],"mapped",[26618]],[[194784,194784],"mapped",[26501]],[[194785,194785],"mapped",[26706]],[[194786,194786],"mapped",[26757]],[[194787,194787],"mapped",[144493]],[[194788,194788],"mapped",[26766]],[[194789,194789],"mapped",[26655]],[[194790,194790],"mapped",[26900]],[[194791,194791],"mapped",[15261]],[[194792,194792],"mapped",[26946]],[[194793,194793],"mapped",[27043]],[[194794,194794],"mapped",[27114]],[[194795,194795],"mapped",[27304]],[[194796,194796],"mapped",[145059]],[[194797,194797],"mapped",[27355]],[[194798,194798],"mapped",[15384]],[[194799,194799],"mapped",[27425]],[[194800,194800],"mapped",[145575]],[[194801,194801],"mapped",[27476]],[[194802,194802],"mapped",[15438]],[[194803,194803],"mapped",[27506]],[[194804,194804],"mapped",[27551]],[[194805,194805],"mapped",[27578]],[[194806,194806],"mapped",[27579]],[[194807,194807],"mapped",[146061]],[[194808,194808],"mapped",[138507]],[[194809,194809],"mapped",[146170]],[[194810,194810],"mapped",[27726]],[[194811,194811],"mapped",[146620]],[[194812,194812],"mapped",[27839]],[[194813,194813],"mapped",[27853]],[[194814,194814],"mapped",[27751]],[[194815,194815],"mapped",[27926]],[[194816,194816],"mapped",[27966]],[[194817,194817],"mapped",[28023]],[[194818,194818],"mapped",[27969]],[[194819,194819],"mapped",[28009]],[[194820,194820],"mapped",[28024]],[[194821,194821],"mapped",[28037]],[[194822,194822],"mapped",[146718]],[[194823,194823],"mapped",[27956]],[[194824,194824],"mapped",[28207]],[[194825,194825],"mapped",[28270]],[[194826,194826],"mapped",[15667]],[[194827,194827],"mapped",[28363]],[[194828,194828],"mapped",[28359]],[[194829,194829],"mapped",[147153]],[[194830,194830],"mapped",[28153]],[[194831,194831],"mapped",[28526]],[[194832,194832],"mapped",[147294]],[[194833,194833],"mapped",[147342]],[[194834,194834],"mapped",[28614]],[[194835,194835],"mapped",[28729]],[[194836,194836],"mapped",[28702]],[[194837,194837],"mapped",[28699]],[[194838,194838],"mapped",[15766]],[[194839,194839],"mapped",[28746]],[[194840,194840],"mapped",[28797]],[[194841,194841],"mapped",[28791]],[[194842,194842],"mapped",[28845]],[[194843,194843],"mapped",[132389]],[[194844,194844],"mapped",[28997]],[[194845,194845],"mapped",[148067]],[[194846,194846],"mapped",[29084]],[[194847,194847],"disallowed"],[[194848,194848],"mapped",[29224]],[[194849,194849],"mapped",[29237]],[[194850,194850],"mapped",[29264]],[[194851,194851],"mapped",[149000]],[[194852,194852],"mapped",[29312]],[[194853,194853],"mapped",[29333]],[[194854,194854],"mapped",[149301]],[[194855,194855],"mapped",[149524]],[[194856,194856],"mapped",[29562]],[[194857,194857],"mapped",[29579]],[[194858,194858],"mapped",[16044]],[[194859,194859],"mapped",[29605]],[[194860,194861],"mapped",[16056]],[[194862,194862],"mapped",[29767]],[[194863,194863],"mapped",[29788]],[[194864,194864],"mapped",[29809]],[[194865,194865],"mapped",[29829]],[[194866,194866],"mapped",[29898]],[[194867,194867],"mapped",[16155]],[[194868,194868],"mapped",[29988]],[[194869,194869],"mapped",[150582]],[[194870,194870],"mapped",[30014]],[[194871,194871],"mapped",[150674]],[[194872,194872],"mapped",[30064]],[[194873,194873],"mapped",[139679]],[[194874,194874],"mapped",[30224]],[[194875,194875],"mapped",[151457]],[[194876,194876],"mapped",[151480]],[[194877,194877],"mapped",[151620]],[[194878,194878],"mapped",[16380]],[[194879,194879],"mapped",[16392]],[[194880,194880],"mapped",[30452]],[[194881,194881],"mapped",[151795]],[[194882,194882],"mapped",[151794]],[[194883,194883],"mapped",[151833]],[[194884,194884],"mapped",[151859]],[[194885,194885],"mapped",[30494]],[[194886,194887],"mapped",[30495]],[[194888,194888],"mapped",[30538]],[[194889,194889],"mapped",[16441]],[[194890,194890],"mapped",[30603]],[[194891,194891],"mapped",[16454]],[[194892,194892],"mapped",[16534]],[[194893,194893],"mapped",[152605]],[[194894,194894],"mapped",[30798]],[[194895,194895],"mapped",[30860]],[[194896,194896],"mapped",[30924]],[[194897,194897],"mapped",[16611]],[[194898,194898],"mapped",[153126]],[[194899,194899],"mapped",[31062]],[[194900,194900],"mapped",[153242]],[[194901,194901],"mapped",[153285]],[[194902,194902],"mapped",[31119]],[[194903,194903],"mapped",[31211]],[[194904,194904],"mapped",[16687]],[[194905,194905],"mapped",[31296]],[[194906,194906],"mapped",[31306]],[[194907,194907],"mapped",[31311]],[[194908,194908],"mapped",[153980]],[[194909,194910],"mapped",[154279]],[[194911,194911],"disallowed"],[[194912,194912],"mapped",[16898]],[[194913,194913],"mapped",[154539]],[[194914,194914],"mapped",[31686]],[[194915,194915],"mapped",[31689]],[[194916,194916],"mapped",[16935]],[[194917,194917],"mapped",[154752]],[[194918,194918],"mapped",[31954]],[[194919,194919],"mapped",[17056]],[[194920,194920],"mapped",[31976]],[[194921,194921],"mapped",[31971]],[[194922,194922],"mapped",[32000]],[[194923,194923],"mapped",[155526]],[[194924,194924],"mapped",[32099]],[[194925,194925],"mapped",[17153]],[[194926,194926],"mapped",[32199]],[[194927,194927],"mapped",[32258]],[[194928,194928],"mapped",[32325]],[[194929,194929],"mapped",[17204]],[[194930,194930],"mapped",[156200]],[[194931,194931],"mapped",[156231]],[[194932,194932],"mapped",[17241]],[[194933,194933],"mapped",[156377]],[[194934,194934],"mapped",[32634]],[[194935,194935],"mapped",[156478]],[[194936,194936],"mapped",[32661]],[[194937,194937],"mapped",[32762]],[[194938,194938],"mapped",[32773]],[[194939,194939],"mapped",[156890]],[[194940,194940],"mapped",[156963]],[[194941,194941],"mapped",[32864]],[[194942,194942],"mapped",[157096]],[[194943,194943],"mapped",[32880]],[[194944,194944],"mapped",[144223]],[[194945,194945],"mapped",[17365]],[[194946,194946],"mapped",[32946]],[[194947,194947],"mapped",[33027]],[[194948,194948],"mapped",[17419]],[[194949,194949],"mapped",[33086]],[[194950,194950],"mapped",[23221]],[[194951,194951],"mapped",[157607]],[[194952,194952],"mapped",[157621]],[[194953,194953],"mapped",[144275]],[[194954,194954],"mapped",[144284]],[[194955,194955],"mapped",[33281]],[[194956,194956],"mapped",[33284]],[[194957,194957],"mapped",[36766]],[[194958,194958],"mapped",[17515]],[[194959,194959],"mapped",[33425]],[[194960,194960],"mapped",[33419]],[[194961,194961],"mapped",[33437]],[[194962,194962],"mapped",[21171]],[[194963,194963],"mapped",[33457]],[[194964,194964],"mapped",[33459]],[[194965,194965],"mapped",[33469]],[[194966,194966],"mapped",[33510]],[[194967,194967],"mapped",[158524]],[[194968,194968],"mapped",[33509]],[[194969,194969],"mapped",[33565]],[[194970,194970],"mapped",[33635]],[[194971,194971],"mapped",[33709]],[[194972,194972],"mapped",[33571]],[[194973,194973],"mapped",[33725]],[[194974,194974],"mapped",[33767]],[[194975,194975],"mapped",[33879]],[[194976,194976],"mapped",[33619]],[[194977,194977],"mapped",[33738]],[[194978,194978],"mapped",[33740]],[[194979,194979],"mapped",[33756]],[[194980,194980],"mapped",[158774]],[[194981,194981],"mapped",[159083]],[[194982,194982],"mapped",[158933]],[[194983,194983],"mapped",[17707]],[[194984,194984],"mapped",[34033]],[[194985,194985],"mapped",[34035]],[[194986,194986],"mapped",[34070]],[[194987,194987],"mapped",[160714]],[[194988,194988],"mapped",[34148]],[[194989,194989],"mapped",[159532]],[[194990,194990],"mapped",[17757]],[[194991,194991],"mapped",[17761]],[[194992,194992],"mapped",[159665]],[[194993,194993],"mapped",[159954]],[[194994,194994],"mapped",[17771]],[[194995,194995],"mapped",[34384]],[[194996,194996],"mapped",[34396]],[[194997,194997],"mapped",[34407]],[[194998,194998],"mapped",[34409]],[[194999,194999],"mapped",[34473]],[[195000,195000],"mapped",[34440]],[[195001,195001],"mapped",[34574]],[[195002,195002],"mapped",[34530]],[[195003,195003],"mapped",[34681]],[[195004,195004],"mapped",[34600]],[[195005,195005],"mapped",[34667]],[[195006,195006],"mapped",[34694]],[[195007,195007],"disallowed"],[[195008,195008],"mapped",[34785]],[[195009,195009],"mapped",[34817]],[[195010,195010],"mapped",[17913]],[[195011,195011],"mapped",[34912]],[[195012,195012],"mapped",[34915]],[[195013,195013],"mapped",[161383]],[[195014,195014],"mapped",[35031]],[[195015,195015],"mapped",[35038]],[[195016,195016],"mapped",[17973]],[[195017,195017],"mapped",[35066]],[[195018,195018],"mapped",[13499]],[[195019,195019],"mapped",[161966]],[[195020,195020],"mapped",[162150]],[[195021,195021],"mapped",[18110]],[[195022,195022],"mapped",[18119]],[[195023,195023],"mapped",[35488]],[[195024,195024],"mapped",[35565]],[[195025,195025],"mapped",[35722]],[[195026,195026],"mapped",[35925]],[[195027,195027],"mapped",[162984]],[[195028,195028],"mapped",[36011]],[[195029,195029],"mapped",[36033]],[[195030,195030],"mapped",[36123]],[[195031,195031],"mapped",[36215]],[[195032,195032],"mapped",[163631]],[[195033,195033],"mapped",[133124]],[[195034,195034],"mapped",[36299]],[[195035,195035],"mapped",[36284]],[[195036,195036],"mapped",[36336]],[[195037,195037],"mapped",[133342]],[[195038,195038],"mapped",[36564]],[[195039,195039],"mapped",[36664]],[[195040,195040],"mapped",[165330]],[[195041,195041],"mapped",[165357]],[[195042,195042],"mapped",[37012]],[[195043,195043],"mapped",[37105]],[[195044,195044],"mapped",[37137]],[[195045,195045],"mapped",[165678]],[[195046,195046],"mapped",[37147]],[[195047,195047],"mapped",[37432]],[[195048,195048],"mapped",[37591]],[[195049,195049],"mapped",[37592]],[[195050,195050],"mapped",[37500]],[[195051,195051],"mapped",[37881]],[[195052,195052],"mapped",[37909]],[[195053,195053],"mapped",[166906]],[[195054,195054],"mapped",[38283]],[[195055,195055],"mapped",[18837]],[[195056,195056],"mapped",[38327]],[[195057,195057],"mapped",[167287]],[[195058,195058],"mapped",[18918]],[[195059,195059],"mapped",[38595]],[[195060,195060],"mapped",[23986]],[[195061,195061],"mapped",[38691]],[[195062,195062],"mapped",[168261]],[[195063,195063],"mapped",[168474]],[[195064,195064],"mapped",[19054]],[[195065,195065],"mapped",[19062]],[[195066,195066],"mapped",[38880]],[[195067,195067],"mapped",[168970]],[[195068,195068],"mapped",[19122]],[[195069,195069],"mapped",[169110]],[[195070,195071],"mapped",[38923]],[[195072,195072],"mapped",[38953]],[[195073,195073],"mapped",[169398]],[[195074,195074],"mapped",[39138]],[[195075,195075],"mapped",[19251]],[[195076,195076],"mapped",[39209]],[[195077,195077],"mapped",[39335]],[[195078,195078],"mapped",[39362]],[[195079,195079],"mapped",[39422]],[[195080,195080],"mapped",[19406]],[[195081,195081],"mapped",[170800]],[[195082,195082],"mapped",[39698]],[[195083,195083],"mapped",[40000]],[[195084,195084],"mapped",[40189]],[[195085,195085],"mapped",[19662]],[[195086,195086],"mapped",[19693]],[[195087,195087],"mapped",[40295]],[[195088,195088],"mapped",[172238]],[[195089,195089],"mapped",[19704]],[[195090,195090],"mapped",[172293]],[[195091,195091],"mapped",[172558]],[[195092,195092],"mapped",[172689]],[[195093,195093],"mapped",[40635]],[[195094,195094],"mapped",[19798]],[[195095,195095],"mapped",[40697]],[[195096,195096],"mapped",[40702]],[[195097,195097],"mapped",[40709]],[[195098,195098],"mapped",[40719]],[[195099,195099],"mapped",[40726]],[[195100,195100],"mapped",[40763]],[[195101,195101],"mapped",[173568]],[[195102,196605],"disallowed"],[[196606,196607],"disallowed"],[[196608,262141],"disallowed"],[[262142,262143],"disallowed"],[[262144,327677],"disallowed"],[[327678,327679],"disallowed"],[[327680,393213],"disallowed"],[[393214,393215],"disallowed"],[[393216,458749],"disallowed"],[[458750,458751],"disallowed"],[[458752,524285],"disallowed"],[[524286,524287],"disallowed"],[[524288,589821],"disallowed"],[[589822,589823],"disallowed"],[[589824,655357],"disallowed"],[[655358,655359],"disallowed"],[[655360,720893],"disallowed"],[[720894,720895],"disallowed"],[[720896,786429],"disallowed"],[[786430,786431],"disallowed"],[[786432,851965],"disallowed"],[[851966,851967],"disallowed"],[[851968,917501],"disallowed"],[[917502,917503],"disallowed"],[[917504,917504],"disallowed"],[[917505,917505],"disallowed"],[[917506,917535],"disallowed"],[[917536,917631],"disallowed"],[[917632,917759],"disallowed"],[[917760,917999],"ignored"],[[918000,983037],"disallowed"],[[983038,983039],"disallowed"],[[983040,1048573],"disallowed"],[[1048574,1048575],"disallowed"],[[1048576,1114109],"disallowed"],[[1114110,1114111],"disallowed"]]\');\n\n//# sourceURL=webpack://txadmin/./node_modules/tr46/lib/mappingTable.json?')}},__webpack_module_cache__={};function __webpack_require__(e){var n=__webpack_module_cache__[e];if(void 0!==n)return n.exports;var t=__webpack_module_cache__[e]={id:e,loaded:!1,exports:{}};return __webpack_modules__[e].call(t.exports,t,t.exports,__webpack_require__),t.loaded=!0,t.exports}__webpack_require__.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),__webpack_require__.nmd=e=>(e.paths=[],e.children||(e.children=[]),e);var __webpack_exports__=__webpack_require__("./main.js")})();